THE ORB
Démarrage du studio

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.

groupsDes doublons après un redémarragecodeIl faut un développeur

Faites d'abord ceci

Un redémarrage complet du serveur nettoie. Le script doit être corrigé pour nettoyer après lui.

bug_reportCollez plutôt toute votre console

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. 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. 2

    Le focus NUI retenu au moment de l'arrêt

    Le joueur se retrouve incapable de bouger, sans aucune interface à l'écran.

  3. 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. 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. 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 Fixer

Pour ce type d'erreur, le Script Optimizer trouve ce qui vous coûte des images et le réécrit.

Les erreurs qui voyagent avec celle-ci