fix playernames serverside memory leak (#106)

* Update playernames_sv.lua

* Update playernames_cl.lua

* Update playernames_sv.lua

* clean up
This commit is contained in:
Blue
2020-06-04 14:10:25 +02:00
committed by GitHub
parent 2bde7889b4
commit 2998a23ced
2 changed files with 19 additions and 9 deletions

View File

@@ -46,9 +46,9 @@ function updatePlayerNames()
local localCoords = GetEntityCoords(PlayerPedId()) local localCoords = GetEntityCoords(PlayerPedId())
-- for each valid player index -- for each valid player index
for i = 0, 255 do for _, i in ipairs(GetActivePlayers()) do
-- if the player exists -- if the player exists
if NetworkIsPlayerActive(i) and i ~= PlayerId() then if i ~= PlayerId() then
-- get their ped -- get their ped
local ped = GetPlayerPed(i) local ped = GetPlayerPed(i)
local pedCoords = GetEntityCoords(ped) local pedCoords = GetEntityCoords(ped)

View File

@@ -1,6 +1,8 @@
local curTemplate local curTemplate
local curTags = {} local curTags = {}
local activePlayers = {}
local function detectUpdates() local function detectUpdates()
SetTimeout(500, detectUpdates) SetTimeout(500, detectUpdates)
@@ -14,23 +16,31 @@ local function detectUpdates()
template = GetConvar('playerNames_svTemplate', '[{{id}}] {{name}}') template = GetConvar('playerNames_svTemplate', '[{{id}}] {{name}}')
for _, v in ipairs(GetPlayers()) do for v, _ in pairs(activePlayers) do
local newTag = formatPlayerNameTag(v, template) local newTag = formatPlayerNameTag(v, template)
if newTag ~= curTags[v] then if newTag ~= curTags[v] then
setName(v, newTag) setName(v, newTag)
curTags[v] = newTag curTags[v] = newTag
end end
end end
for i, tag in pairs(curTags) do
if not activePlayers[i] then
curTags[i] = nil -- in case curTags doesnt get cleared when the player left, clear it now.
end
end
end end
AddEventHandler('playerDropped', function()
curTags[source] = nil
activePlayers[source] = nil
end)
RegisterNetEvent('playernames:init') RegisterNetEvent('playernames:init')
AddEventHandler('playernames:init', function() AddEventHandler('playernames:init', function()
reconfigure(source) reconfigure(source)
activePlayers[source] = true
end) end)
SetTimeout(500, detectUpdates)
detectUpdates() detectUpdates()