From cfe36cb3b2b1c24781723362888ffd6bcca5451c Mon Sep 17 00:00:00 2001 From: Bxio Date: Mon, 3 Aug 2026 12:01:58 +0000 Subject: [PATCH] Despawn safes via server onResourceStop instead of client-side stop onClientResourceStop doesn't fire reliably for a resource's own client scripts when it stops itself, so props never got cleaned up. The server now broadcasts safe:despawn (the same path already used for pickup) for every known safe on onResourceStop, right before the resource actually goes down. Bump to 1.1.6. --- client.lua | 19 ------------------- fxmanifest.lua | 2 +- server.lua | 13 +++++++++++++ version.json | 2 +- 4 files changed, 15 insertions(+), 21 deletions(-) diff --git a/client.lua b/client.lua index ddb0368..4e787b2 100644 --- a/client.lua +++ b/client.lua @@ -286,22 +286,3 @@ AddEventHandler('onClientResourceStart', function(resourceName) if resourceName ~= GetCurrentResourceName() then return end TriggerServerEvent('safe:requestSync') end) - --- Roda ANTES do ambiente do script ser destruído, diferente de onClientResourceStart --- (nesse ponto spawnedSafes já estaria vazio, pois o script já teria reiniciado) -AddEventHandler('onClientResourceStop', function(resourceName) - if resourceName ~= GetCurrentResourceName() then return end - - dbg('onClientResourceStop disparado, limpando', tostring(next(spawnedSafes) and 'safes existentes' or 'nenhum safe')) - - for id, ent in pairs(spawnedSafes) do - dbg('safe', id, 'entity', ent, 'DoesEntityExist antes:', DoesEntityExist(ent)) - if ent and DoesEntityExist(ent) then - pcall(function() ox_target:removeLocalEntity(ent) end) - FreezeEntityPosition(ent, false) - DeleteObject(ent) - dbg('safe', id, 'DoesEntityExist depois do DeleteObject:', DoesEntityExist(ent)) - end - spawnedSafes[id] = nil - end -end) diff --git a/fxmanifest.lua b/fxmanifest.lua index a68ba58..b06aa28 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -4,7 +4,7 @@ lua54 'yes' author 'SeuNome' description 'Sistema de safes com ox_inventory e ox_target' -version '1.1.5' +version '1.1.6' -- Dependências dependencies { diff --git a/server.lua b/server.lua index c00546a..444b84f 100644 --- a/server.lua +++ b/server.lua @@ -78,6 +78,19 @@ AddEventHandler('onResourceStart', function(resourceName) end) end) +------------------------------------------------------- +-- DESPAWNAR PARA TODOS ANTES DO RESOURCE PARAR +-- onClientResourceStop não é confiável para o próprio resource +-- se limpar sozinho no cliente, então avisamos daqui. +------------------------------------------------------- +AddEventHandler('onResourceStop', function(resourceName) + if resourceName ~= GetCurrentResourceName() then return end + + for id in pairs(safes) do + TriggerClientEvent('safe:despawn', -1, id) + end +end) + ------------------------------------------------------- diff --git a/version.json b/version.json index d4fe37d..6b84876 100644 --- a/version.json +++ b/version.json @@ -1,3 +1,3 @@ { - "version": "1.1.5" + "version": "1.1.6" }