Performance improvements, removed keys table

This commit is contained in:
ElPumpo
2019-07-25 12:24:02 +02:00
parent 5ee7566d92
commit 8bb102c843
3 changed files with 99 additions and 166 deletions
+30 -38
View File
@@ -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)