Retour à la leçonMission
Mission : la quête qui saute une réplique
Analyser précisément le cycle resume/yield d'une séquence de dialogue de quête et choisir la bonne stratégie de gestion d'erreur.
Contexte
Une séquence de dialogue de quête utilise une coroutine :
lua
local function questSequence()
print("PNJ: Bonjour aventurier !")
local reponse = coroutine.yield("attente_reponse_1")
print("PNJ: Tu as dit " .. reponse)
coroutine.yield("attente_reponse_2")
print("PNJ: Merci, voici ta récompense !")
return "quete_terminee"
end
local co = coroutine.create(questSequence)
print(coroutine.resume(co)) -- ok, "attente_reponse_1"
print(coroutine.resume(co, "bonjour")) -- ok, "attente_reponse_2"
print(coroutine.status(co))Un testeur signale qu'un joueur qui répond très vite provoque parfois une erreur "cannot resume dead coroutine" en jeu.