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.
Mach das zuerst
Ein kompletter Serverneustart räumt auf. Das Script muss repariert werden, damit es selbst aufräumt.
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
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
NUI-Fokus im Moment des Stopps gehalten
Der Spieler kann sich nicht mehr bewegen und hat nichts auf dem Bildschirm.
- 3
Handler, die in einer anderen Resource registriert sind
Eine Target-Zone oder ein Befehl, in einer fremden Resource registriert, bleibt registriert.
- 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
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 öffnenFür diese Art Fehler Script Optimizer findet, was dich Frames kostet, und schreibt es um.