From 804afc744ac8dc71947abe4551347c0f17843e3d Mon Sep 17 00:00:00 2001 From: MrBolux Date: Fri, 4 Oct 2024 18:08:35 +0200 Subject: [PATCH 1/2] Added function to retrieve IDs of peds stored in Config.Peds when is create. --- client.lua | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/client.lua b/client.lua index e92f36f..055e650 100644 --- a/client.lua +++ b/client.lua @@ -869,6 +869,7 @@ exports('DeletePeds', DeletePeds) local function SpawnPed(data) local spawnedped local key, value = next(data) + local createdPeds = {} if type(value) == 'table' and type(key) ~= 'string' then for _, v in pairs(data) do if v.spawnNow then @@ -970,6 +971,7 @@ local function SpawnPed(data) if nextnumber <= 0 then nextnumber = 1 end Config.Peds[nextnumber] = v + createdPeds[#createdPeds+1] = nextnumber end else if data.spawnNow then @@ -1071,19 +1073,28 @@ local function SpawnPed(data) if nextnumber <= 0 then nextnumber = 1 end Config.Peds[nextnumber] = data + createdPeds[#createdPeds+1] = nextnumber end + return createdPeds end exports('SpawnPed', SpawnPed) local function RemovePed(peds) if type(peds) == 'table' then - for k, v in pairs(peds) do - DeletePed(v) - if Config.Peds[k] then Config.Peds[k].currentpednumber = 0 end + for _, v in ipairs(peds) do + if Config.Peds[v] then + SetEntityAsNoLongerNeeded(Config.Peds[v].currentpednumber) + DeletePed(Config.Peds[v].currentpednumber) + Config.Peds[v] = nil + end end elseif type(peds) == 'number' then - DeletePed(peds) + if Config.Peds[peds] then + SetEntityAsNoLongerNeeded(Config.Peds[peds].currentpednumber) + DeletePed(Config.Peds[peds].currentpednumber) + Config.Peds[peds] = nil + end end end From 259d9a8b4baf225c5fff964939fcb93ee460c5ac Mon Sep 17 00:00:00 2001 From: MrBolux Date: Sun, 6 Oct 2024 16:34:18 +0200 Subject: [PATCH 2/2] update the logic to give the other script access to the ped and avoid indexing problems --- client.lua | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/client.lua b/client.lua index 055e650..eb658a6 100644 --- a/client.lua +++ b/client.lua @@ -971,7 +971,7 @@ local function SpawnPed(data) if nextnumber <= 0 then nextnumber = 1 end Config.Peds[nextnumber] = v - createdPeds[#createdPeds+1] = nextnumber + createdPeds[#createdPeds + 1] = v.currentpednumber end else if data.spawnNow then @@ -1073,7 +1073,7 @@ local function SpawnPed(data) if nextnumber <= 0 then nextnumber = 1 end Config.Peds[nextnumber] = data - createdPeds[#createdPeds+1] = nextnumber + createdPeds[#createdPeds + 1] = data.currentpednumber end return createdPeds end @@ -1081,20 +1081,25 @@ end exports('SpawnPed', SpawnPed) local function RemovePed(peds) + + local function removePedByNumber(pedNumber) + for i = #Config.Peds, 1, -1 do -- Reverse loop to avoid index issues + local ped = Config.Peds[i] + if ped.currentpednumber == pedNumber then + SetEntityAsNoLongerNeeded(ped.currentpednumber) + DeletePed(ped.currentpednumber) + table.remove(Config.Peds, i) + break + end + end + end + if type(peds) == 'table' then - for _, v in ipairs(peds) do - if Config.Peds[v] then - SetEntityAsNoLongerNeeded(Config.Peds[v].currentpednumber) - DeletePed(Config.Peds[v].currentpednumber) - Config.Peds[v] = nil + for _, pedNumber in pairs(peds) do + removePedByNumber(pedNumber) end - end elseif type(peds) == 'number' then - if Config.Peds[peds] then - SetEntityAsNoLongerNeeded(Config.Peds[peds].currentpednumber) - DeletePed(Config.Peds[peds].currentpednumber) - Config.Peds[peds] = nil - end + removePedByNumber(peds) end end