forked from Simnation/Main
53 lines
1.2 KiB
Lua
53 lines
1.2 KiB
Lua
local function cleanupEntities()
|
|
local function safeDelete(entity)
|
|
if DoesEntityExist(entity) then
|
|
if IsEntityAttachedToAnyPed(entity) then
|
|
DetachEntity(entity, true, true)
|
|
end
|
|
NetworkUnregisterNetworkedEntity(entity)
|
|
DeleteObject(entity)
|
|
SetEntityAsNoLongerNeeded(entity)
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
if Sling.object then
|
|
safeDelete(Sling.object)
|
|
Sling.object = nil
|
|
end
|
|
|
|
for weaponName, attachment in pairs(Sling.cachedAttachments) do
|
|
if attachment then
|
|
safeDelete(attachment.obj)
|
|
safeDelete(attachment.placeholder)
|
|
Sling.cachedAttachments[weaponName] = nil
|
|
end
|
|
end
|
|
|
|
Sling.currentAttachedAmount = 0
|
|
collectgarbage("collect")
|
|
end
|
|
|
|
-- Add these event handlers
|
|
AddEventHandler('onResourceStart', function(resourceName)
|
|
if resourceName == GetCurrentResourceName() then
|
|
cleanupEntities()
|
|
end
|
|
end)
|
|
|
|
RegisterNetEvent('QBCore:Client:OnPlayerLoaded')
|
|
AddEventHandler('QBCore:Client:OnPlayerLoaded', function()
|
|
cleanupEntities()
|
|
end)
|
|
|
|
AddEventHandler('onResourceStop', function(resourceName)
|
|
if resourceName == GetCurrentResourceName() then
|
|
cleanupEntities()
|
|
end
|
|
end)
|
|
|
|
AddEventHandler('playerDropped', function()
|
|
cleanupEntities()
|
|
end)
|
|
|