Hilo bloqueado / un recurso está tardando demasiado
Un script frenó todo lo demás. A diferencia de un tirón general, este nombra al recurso responsable.
Haz esto primero
Anota el recurso que nombra: ahí está el problema.
Qué significa
Un hilo de script no cedió el control cuando el planificador lo esperaba. Todo lo demás de ese lado espera. Como el aviso de tirón, esto es un síntoma y no un fallo, pero un bloqueo suele señalar un trozo de código concreto en vez de la carga general.
Qué lo provoca
Ordenado por la frecuencia con la que es la respuesta.
- 1
Un bucle sin Wait
El clásico.
while true do endno devuelve el control nunca. - 2
Un await bloqueante dentro de un tick
MySQL.query.awaitoCitizen.Awaitdentro de un hilo que se ejecuta en cada fotograma. - 3
Una operación síncrona enorme
Codificar o decodificar un JSON muy grande, o recorrer una tabla de cientos de miles de entradas, de una sola vez.
- 4
Un bucle while cuya condición no se cumple nunca
while not HasModelLoaded(m) do Wait(0) endpara un modelo que no existe gira para siempre. Toda espera así necesita un plazo. - 5
Recursión sin caso base
Raro, pero se presenta exactamente así.
Cómo saber cuál es el tuyo
El mensaje nombra el recurso. Adentro, buscá while y for sin un Wait, y cualquier .await dentro de un CreateThread.
Dónde mirar
Cada bucle del recurso que nombra.
Cómo arreglarlo
Poné un plazo a cada espera, y cedé el control en cada bucle:
local deadline = GetGameTimer() + 5000
while not HasModelLoaded(model) and GetGameTimer() < deadline do
Wait(0)
end
if not HasModelLoaded(model) then return endY partí el trabajo muy grande entre fotogramas:
for i = 1, #huge do
process(huge[i])
if i % 500 == 0 then Wait(0) end
end¿Sigues atascado en tu propio código?
Esta página es lo que suele significar este error. Pega tu consola en Server Fixer y ordenará todo lo que haya en ella y te dirá qué hacer primero; y si prefieres no tocarlo, ORBIE puede reparar el script y devolverte el recurso listo para soltar.
bug_reportAbrir el Server FixerPara este tipo de error, el Script Optimizer encuentra qué te está costando fotogramas y lo reescribe.