Reiniciar um resource deixa para trás threads, entidades ou handlers
Reiniciar um script deixou para trás os veículos, personagens ou menus antigos, então agora tem dois de tudo.
Faça isto primeiro
Um restart completo do servidor limpa. O script precisa de conserto para limpar o que é dele.
O que significa
/restart meures para e sobe o resource, mas não desfaz o que o resource fez com o mundo. As threads são mortas; as entidades que ele criou, o foco da NUI, os blips, os peds e tudo o que ele registrou em outro lugar, não. Reinicie algumas vezes e você vai ter várias cópias de tudo.
O sintoma costuma ser «funciona até eu reiniciar, e depois faz duas vezes».
O que causa isso
Ordenado pela frequência com que é a resposta.
- 1
As entidades criadas nunca são limpas
Peds, veículos, objetos e blips criados ao subir, recriados na próxima subida, com os originais ainda lá.
- 2
O foco da NUI retido no momento da parada
O jogador fica sem conseguir se mover e sem nenhuma interface na tela.
- 3
Handlers registrados em outro resource
Uma zona de target ou um comando registrado dentro de um resource de terceiros continua registrado.
- 4
Threads que sobrevivem à parada no cliente
Uma thread do cliente continua rodando até o cliente perceber que o resource parou.
- 5
Dados escritos num state bag ou numa variável global
Persistem; a próxima subida acrescenta mais.
Como saber qual é o seu
Reinicie o resource duas vezes e conte. Dois de um ped que deveria ser um é o diagnóstico inteiro.
Onde olhar
Tudo o que é criado ao subir o resource, e se existe um onResourceStop que desfaça isso.
Como consertar
Todo resource que toca o mundo precisa de um desmonte:
local spawned = {}
AddEventHandler('onResourceStop', function(res)
if res ~= GetCurrentResourceName() then return end
for _, entity in ipairs(spawned) do
if DoesEntityExist(entity) then DeleteEntity(entity) end
end
SetNUIFocus(false, false)
end)Ainda travado no seu próprio código?
Esta página é o que esse erro costuma significar. Cole o seu console no Server Fixer e ele vai ordenar tudo o que estiver lá e te dizer o que fazer primeiro; e se você preferir não mexer, o ORBIE consegue consertar o script e te devolver o resource pronto para soltar.
bug_reportAbrir o Server FixerPara esse tipo de erro, o Script Optimizer encontra o que está custando quadros e reescreve.