THE ORB
Démarrage du studio

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.

groupsRien en soipersonVous pouvez le corriger

Faites d'abord ceci

Remontez et corrigez l'erreur du dessus ; celle-ci disparaît en général avec elle.

bug_reportCollez plutôt toute votre console

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

    Attendre dans un gestionnaire déjà revenu

    MySQL.query.await dans un callback dont le parent est terminé.

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

Pour ce type d'erreur, le Script Optimizer lit le script et répare le code derrière tout ça.

Les erreurs qui voyagent avec celle-ci