Redémarrer une ressource laisse derrière threads, entités ou gestionnaires
Redémarrer un script a laissé ses anciens véhicules, personnages ou menus, donc il y a maintenant tout en double.
Faites d'abord ceci
Un redémarrage complet du serveur nettoie. Le script doit être corrigé pour nettoyer après lui.
Ce que ça veut dire
/restart mares arrête et relance la ressource, mais ne défait pas ce que la ressource a fait au monde. Les threads sont tués ; les entités créées, le focus NUI, les blips, les peds et tout ce qui a été enregistré ailleurs, non. Redémarrez quelques fois et vous aurez plusieurs copies de tout.
Le symptôme est en général « ça marche jusqu'à ce que je redémarre, puis ça le fait deux fois ».
Ce qui la provoque
Classé par fréquence : la cause la plus probable en premier.
- 1
Les entités créées ne sont jamais nettoyées
Peds, véhicules, objets et blips créés au démarrage, recréés au démarrage suivant, les originaux toujours présents.
- 2
Le focus NUI retenu au moment de l'arrêt
Le joueur se retrouve incapable de bouger, sans aucune interface à l'écran.
- 3
Des gestionnaires enregistrés dans une autre ressource
Une zone de target ou une commande enregistrée dans une ressource tierce y reste enregistrée.
- 4
Des threads qui survivent à l'arrêt côté client
Un thread client continue de tourner jusqu'à ce que le client remarque l'arrêt de la ressource.
- 5
Des données écrites dans un state bag ou une variable globale
Elles persistent ; le démarrage suivant en ajoute encore.
Comment savoir laquelle est la vôtre
Redémarrez la ressource deux fois et comptez. Deux exemplaires d'un ped qui devrait être unique, c'est tout le diagnostic.
Où regarder
Tout ce qui est créé au démarrage de la ressource, et s'il existe un onResourceStop qui le défait.
Comment la corriger
Toute ressource qui touche au monde a besoin d'un démontage :
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)Toujours bloqué sur votre propre code ?
Cette page explique ce que cette erreur signifie en général. Collez votre console dans Server Fixer : il classera tout ce qui s'y trouve et vous dira quoi faire en premier ; et si vous préférez ne pas y toucher, ORBIE peut réparer le script et vous rendre la ressource prête à déposer.
bug_reportOuvrir le Server FixerPour ce type d'erreur, le Script Optimizer trouve ce qui vous coûte des images et le réécrit.