mirror of
https://github.com/citizenfx/cfx-server-data.git
synced 2025-12-12 06:14:09 +01:00
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:
@@ -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)
|
||||||
@@ -188,4 +188,4 @@ SetTimeout(0, function()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
-- run this function every frame
|
-- run this function every frame
|
||||||
SetTimeout(0, updatePlayerNames)
|
SetTimeout(0, updatePlayerNames)
|
||||||
|
|||||||
@@ -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()
|
|
||||||
|
|||||||
Reference in New Issue
Block a user