Thread travada / um resource está demorando demais
Um script travou todo o resto. Diferente de um engasgo geral, esse nomeia o resource responsável.
Faça isto primeiro
Anote o resource que ele nomeia: é ali que está o problema.
O que significa
Uma thread de script não cedeu o controle quando o escalonador esperava. Todo o resto daquele lado espera. Como o aviso de engasgo, isso é um sintoma e não uma falha, mas um travamento costuma apontar para um pedaço de código específico em vez da carga geral.
O que causa isso
Ordenado pela frequência com que é a resposta.
- 1
Um laço sem Wait
O clássico.
while true do endnunca devolve o controle. - 2
Um await bloqueante dentro de um tick
MySQL.query.awaitouCitizen.Awaitdentro de uma thread que roda a cada quadro. - 3
Uma operação síncrona enorme
Codificar ou decodificar um JSON muito grande, ou percorrer uma tabela de centenas de milhares de entradas, de uma vez só.
- 4
Um laço while cuja condição nunca se cumpre
while not HasModelLoaded(m) do Wait(0) endpara um modelo que não existe gira para sempre. Toda espera dessas precisa de um prazo. - 5
Recursão sem caso base
Raro, mas se apresenta exatamente assim.
Como saber qual é o seu
A mensagem nomeia o resource. Dentro dele, procure while e for sem um Wait, e qualquer .await dentro de um CreateThread.
Onde olhar
Cada laço do resource que ele nomeia.
Como consertar
Ponha um prazo em cada espera, e ceda o controle em cada laço:
local deadline = GetGameTimer() + 5000
while not HasModelLoaded(model) and GetGameTimer() < deadline do
Wait(0)
end
if not HasModelLoaded(model) then return endE divida o trabalho muito grande entre quadros:
for i = 1, #huge do
process(huge[i])
if i % 500 == 0 then Wait(0) end
endAinda 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.