THE ORB
Studio wird gestartet

Ein Resource-Neustart lässt Threads, Entities oder Handler zurück

Ein Script-Neustart hat seine alten Fahrzeuge, Charaktere oder Menüs zurückgelassen — jetzt gibt es alles doppelt.

groupsDuplikate nach einem NeustartcodeBraucht einen Entwickler

Mach das zuerst

Ein kompletter Serverneustart räumt auf. Das Script muss repariert werden, damit es selbst aufräumt.

bug_reportFüg lieber deine ganze Konsole ein

Was es bedeutet

/restart meineres stoppt und startet die Resource, macht aber nicht rückgängig, was sie mit der Welt angestellt hat. Threads werden beendet; erzeugte Entities, NUI-Fokus, Blips, Peds und alles anderswo Registrierte nicht. Starte ein paar Mal neu und du hast mehrere Kopien von allem.

Das Symptom lautet meist: „Es geht, bis ich neu starte, dann macht es alles doppelt."

Was es auslöst

Sortiert danach, wie oft es die Antwort ist.

  1. 1

    Erzeugte Entities werden nie aufgeräumt

    Peds, Fahrzeuge, Objekte und Blips beim Start erzeugt, beim nächsten Start erneut erzeugt — die alten noch da.

  2. 2

    NUI-Fokus im Moment des Stopps gehalten

    Der Spieler kann sich nicht mehr bewegen und hat nichts auf dem Bildschirm.

  3. 3

    Handler, die in einer anderen Resource registriert sind

    Eine Target-Zone oder ein Befehl, in einer fremden Resource registriert, bleibt registriert.

  4. 4

    Threads, die den Stopp auf dem Client überleben

    Ein Client-Thread läuft weiter, bis der Client merkt, dass die Resource gestoppt hat.

  5. 5

    Daten, die in einen State Bag oder eine globale Variable geschrieben wurden

    Sie bleiben; der nächste Start legt noch etwas drauf.

Wie du erkennst, welcher deiner ist

Starte die Resource zweimal neu und zähl. Zwei von einem Ped, der einer sein sollte, ist die ganze Diagnose.

Wo du nachsehen musst

Alles, was beim Start der Resource entsteht, und ob es ein onResourceStop gibt, das es rückgängig macht.

Wie du es behebst

Jede Resource, die die Welt anfasst, braucht einen Abbau:

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)

Hängst du immer noch an deinem eigenen Code?

Diese Seite sagt, was dieser Fehler üblicherweise bedeutet. Füg deine Konsole in Server Fixer ein: es sortiert alles darin und sagt dir, was zuerst dran ist; und wenn du lieber nicht ranwillst, kann ORBIE das Script reparieren und dir die Resource fertig zum Einsetzen zurückgeben.

bug_reportServer Fixer öffnen

Für diese Art Fehler Script Optimizer findet, was dich Frames kostet, und schreibt es um.

Fehler, die mit diesem zusammen auftreten