THE ORB
Arrancando el studio

Reiniciar un recurso deja atrás hilos, entidades o manejadores

Reiniciar un script dejó atrás sus vehículos, personajes o menús viejos, así que ahora hay dos de todo.

groupsDuplicados tras un reiniciocodeNecesita un desarrollador

Haz esto primero

Un reinicio completo del servidor lo limpia. Al script hay que arreglarlo para que limpie lo suyo.

bug_reportMejor pega tu consola entera

Qué significa

/restart mires detiene y arranca el recurso, pero no deshace lo que el recurso le hizo al mundo. Los hilos se matan; las entidades que generó, el foco de la NUI, los blips, los peds y todo lo que haya registrado en otro sitio, no. Reinicialo unas cuantas veces y vas a tener varias copias de todo.

El síntoma suele ser «funciona hasta que lo reinicio, y después lo hace dos veces».

Qué lo provoca

Ordenado por la frecuencia con la que es la respuesta.

  1. 1

    Las entidades generadas no se limpian nunca

    Peds, vehículos, objetos y blips creados al arrancar, recreados en el arranque siguiente, con los originales todavía ahí.

  2. 2

    El foco de la NUI retenido en el momento de la detención

    El jugador se queda sin poder moverse y sin ninguna interfaz en pantalla.

  3. 3

    Manejadores registrados en otro recurso

    Una zona de target o un comando registrado dentro de un recurso de terceros se queda registrado.

  4. 4

    Hilos que sobreviven a la detención en el cliente

    Un hilo del cliente sigue corriendo hasta que el cliente se entera de que el recurso se detuvo.

  5. 5

    Datos escritos en un state bag o en una variable global

    Persisten; el arranque siguiente les suma más.

Cómo saber cuál es el tuyo

Reiniciá el recurso dos veces y contá. Dos de un ped que tendría que ser uno es el diagnóstico entero.

Dónde mirar

Todo lo que se crea al arrancar el recurso, y si hay un onResourceStop que lo deshaga.

Cómo arreglarlo

Todo recurso que toque el mundo necesita un desmontaje:

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)

¿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 Fixer

Para este tipo de error, el Script Optimizer encuentra qué te está costando fotogramas y lo reescribe.

Errores que viajan con este