THE ORB
Iniciando o studio

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.

groupsDuplicados depois de um restartcodePrecisa de um desenvolvedor

Faça isto primeiro

Um restart completo do servidor limpa. O script precisa de conserto para limpar o que é dele.

bug_reportMelhor colar o console inteiro

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. 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. 2

    O foco da NUI retido no momento da parada

    O jogador fica sem conseguir se mover e sem nenhuma interface na tela.

  3. 3

    Handlers registrados em outro resource

    Uma zona de target ou um comando registrado dentro de um resource de terceiros continua registrado.

  4. 4

    Threads que sobrevivem à parada no cliente

    Uma thread do cliente continua rodando até o cliente perceber que o resource parou.

  5. 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 Fixer

Para esse tipo de erro, o Script Optimizer encontra o que está custando quadros e reescreve.

Erros que andam junto com este