mirror of
https://github.com/esx-framework/esx_core.git
synced 2026-09-04 08:13:21 +00:00
Performance improvements, removed keys table
This commit is contained in:
+30
-38
@@ -1,11 +1,11 @@
|
||||
local Instances = {}
|
||||
local instances = {}
|
||||
|
||||
function GetInstancedPlayers()
|
||||
local players = {}
|
||||
|
||||
for k,v in pairs(Instances) do
|
||||
for i=1, #v.players, 1 do
|
||||
table.insert(players, v.players[i])
|
||||
for k,v in pairs(instances) do
|
||||
for k2,v2 in ipairs(v.players) do
|
||||
players[v2] = true
|
||||
end
|
||||
end
|
||||
|
||||
@@ -13,26 +13,26 @@ function GetInstancedPlayers()
|
||||
end
|
||||
|
||||
function CreateInstance(type, player, data)
|
||||
Instances[player] = {
|
||||
instances[player] = {
|
||||
type = type,
|
||||
host = player,
|
||||
players = {},
|
||||
data = data
|
||||
}
|
||||
|
||||
TriggerEvent('instance:onCreate', Instances[player])
|
||||
TriggerClientEvent('instance:onCreate', player, Instances[player])
|
||||
TriggerEvent('instance:onCreate', instances[player])
|
||||
TriggerClientEvent('instance:onCreate', player, instances[player])
|
||||
TriggerClientEvent('instance:onInstancedPlayersData', -1, GetInstancedPlayers())
|
||||
end
|
||||
|
||||
function CloseInstance(instance)
|
||||
if Instances[instance] ~= nil then
|
||||
if instances[instance] then
|
||||
|
||||
for i=1, #Instances[instance].players, 1 do
|
||||
TriggerClientEvent('instance:onClose', Instances[instance].players[i])
|
||||
for i=1, #instances[instance].players do
|
||||
TriggerClientEvent('instance:onClose', instances[instance].players[i])
|
||||
end
|
||||
|
||||
Instances[instance] = nil
|
||||
instances[instance] = nil
|
||||
|
||||
TriggerClientEvent('instance:onInstancedPlayersData', -1, GetInstancedPlayers())
|
||||
TriggerEvent('instance:onClose', instance)
|
||||
@@ -42,22 +42,22 @@ end
|
||||
function AddPlayerToInstance(instance, player)
|
||||
local found = false
|
||||
|
||||
for i=1, #Instances[instance].players, 1 do
|
||||
if Instances[instance].players[i] == player then
|
||||
for i=1, #instances[instance].players do
|
||||
if instances[instance].players[i] == player then
|
||||
found = true
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if not found then
|
||||
table.insert(Instances[instance].players, player)
|
||||
table.insert(instances[instance].players, player)
|
||||
end
|
||||
|
||||
TriggerClientEvent('instance:onEnter', player, Instances[instance])
|
||||
TriggerClientEvent('instance:onEnter', player, instances[instance])
|
||||
|
||||
for i=1, #Instances[instance].players, 1 do
|
||||
if Instances[instance].players[i] ~= player then
|
||||
TriggerClientEvent('instance:onPlayerEntered', Instances[instance].players[i], Instances[instance], player)
|
||||
for i=1, #instances[instance].players do
|
||||
if instances[instance].players[i] ~= player then
|
||||
TriggerClientEvent('instance:onPlayerEntered', instances[instance].players[i], instances[instance], player)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -65,42 +65,34 @@ function AddPlayerToInstance(instance, player)
|
||||
end
|
||||
|
||||
function RemovePlayerFromInstance(instance, player)
|
||||
if instances[instance] then
|
||||
TriggerClientEvent('instance:onLeave', player, instances[instance])
|
||||
|
||||
if Instances[instance] ~= nil then
|
||||
|
||||
TriggerClientEvent('instance:onLeave', player, Instances[instance])
|
||||
|
||||
if Instances[instance].host == player then
|
||||
|
||||
for i=1, #Instances[instance].players, 1 do
|
||||
if Instances[instance].players[i] ~= player then
|
||||
TriggerClientEvent('instance:onPlayerLeft', Instances[instance].players[i], Instances[instance], player)
|
||||
if instances[instance].host == player then
|
||||
for i=1, #instances[instance].players do
|
||||
if instances[instance].players[i] ~= player then
|
||||
TriggerClientEvent('instance:onPlayerLeft', instances[instance].players[i], instances[instance], player)
|
||||
end
|
||||
end
|
||||
|
||||
CloseInstance(instance)
|
||||
|
||||
else
|
||||
|
||||
for i=1, #Instances[instance].players, 1 do
|
||||
if Instances[instance].players[i] == player then
|
||||
Instances[instance].players[i] = nil
|
||||
for i=1, #instances[instance].players do
|
||||
if instances[instance].players[i] == player then
|
||||
instances[instance].players[i] = nil
|
||||
end
|
||||
end
|
||||
|
||||
for i=1, #Instances[instance].players, 1 do
|
||||
if Instances[instance].players[i] ~= player then
|
||||
TriggerClientEvent('instance:onPlayerLeft', Instances[instance].players[i], Instances[instance], player)
|
||||
for i=1, #instances[instance].players do
|
||||
if instances[instance].players[i] ~= player then
|
||||
TriggerClientEvent('instance:onPlayerLeft', instances[instance].players[i], instances[instance], player)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
TriggerClientEvent('instance:onInstancedPlayersData', -1, GetInstancedPlayers())
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function InvitePlayerToInstance(instance, type, player, data)
|
||||
|
||||
Reference in New Issue
Block a user