impossible de reprendre une coroutine morte
Quelque chose a tenté de poursuivre un travail déjà terminé ou déjà planté. Il y a presque toujours une VRAIE erreur au-dessus de celle-ci.
Faites d'abord ceci
Remontez et corrigez l'erreur du dessus ; celle-ci disparaît en général avec elle.
Ce que ça veut dire
Quelque chose a tenté de reprendre une coroutine déjà terminée ou déjà en erreur. Dans FiveM, c'est presque toujours le runtime qui signale un effet en cascade : la coroutine est morte à cause d'une erreur à l'intérieur, et ceci est le SECOND message.
Ce qui la provoque
Classé par fréquence : la cause la plus probable en premier.
- 1
Une erreur antérieure a tué la coroutine
Remontez dans la console. Il y a une vraie erreur au-dessus, et c'est celle-là qu'il faut corriger.
- 2
Un callback stocké et appelé deux fois
Un callback oxmysql ou ox_lib invoqué une seconde fois : la première reprise l'a achevé, la seconde le trouve mort.
- 3
Attendre dans un gestionnaire déjà revenu
MySQL.query.awaitdans un callback dont le parent est terminé. - 4
Rendre la main hors d'un thread
Wait()au niveau du fichier, ou dans une fonction ordinaire appelée hors contexte de thread. FiveM signale « attempt to yield from outside a coroutine ».
Comment savoir laquelle est la vôtre
Regardez ce qu'il y a AU-DESSUS de cette ligne dans la console. S'il y a une autre erreur, corrigez celle-là d'abord et celle-ci disparaît en général avec. Si c'est le seul message, vous rendez la main quelque part où il n'y a pas de coroutine.
Où regarder
La trace sous ce message, et l'erreur au-dessus.
Comment la corriger
Tout ce qui attend doit être dans un thread :
-- faux : un Wait au niveau du fichier
Wait(1000)
-- correct
CreateThread(function()
Wait(1000)
end)Et les callbacks se déclenchent une fois : protégez-vous d'un second appel :
local done = false
someLib.request(function(result)
if done then return end
done = true
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 lit le script et répare le code derrière tout ça.