[DLG] Problèmes divers rencontrés lors de la création d'un dialogue de PNJ
Posté : dim. 01 juil. 2007, 12:48
Voilà un problème que je n'avais pas encore rencontré dans le codage de dialogues.
Pour mon personnage Flora, je voulais la faire interagir avec le Duergar Ilyich qui détient les fameux glands. Ilyich enclenche un dialogue à partir du moment où il détecte le PJ pour la première fois (le PJ n'a pas à venir lui parler donc).
J'ai donc réussi à créer une alternative à ce dialogue, puisqu'à partir de la première réplique d'Ilyich, j'utilise les fonctions EXTEND_BOTTOM et APPEND pour parler sur un dialogue entre lui et Flora, sans que le PJ puisse intervenir ( il avait normalement plusieurs réponses possibles suite à la première réplique d'Ilyich ). Mais bon, pour que ce soit plus clair, voici les parties de code.
Voilà le début du dialogue. Comme vous pouvez le voir, après la première réplique d'Ilyich (non présente ici), il renchaîne sur une autre réplique. Jusque là, ça marche. Cependant, la suite du dialogue que je n'ai pas indiquée ne s'enclenche pas. Normalement, Flora devrait lui répondre, grâce à la fonction APPEND toujours, mais rien ne se passe, le dialogue se termine comme ça.
J'ai essayé différentes façons de procéder (avec CHAIN, ou avec un bloc de dialogue normal pour les répliques de Flora), mais rien non plus.
J'ai aussi remarqué autre chose de bizarre. Dans le tutorial de WeiDU, il faut utiliser normalement la condition "IsValidForPartyDialog("Flora")" plutôt que celle que j'utilise, "InParty("Flora")". Cependant, cette fonction ne semble pas vérifiée dans le jeu, et le dialogue ne s'enclenche donc pas, en remettant à la place les réponses du PJ. Je ne vois pas pourquoi cette fonction ne marche pas, puisque Flora est là lors du dialogue, elle n'est pas morte, rien... et ce dialogue se trouve dans le même fichier .d que les autres dialogues que j'ai déjà codés et qui fonctionnent.
Pour les blocs APPEND de Flora, j'ai essayé les minuscules (Flora) et les majuscules (FLORA) mais ce n'est pas ça... j'ai essayé de mettre une variable pour voir si elle est vérifiée mais ça ne marche pas non plus, le dialogue s'arrête donc à la fin de ma réplique d'Iliych.
Qu'est-ce qui ne marche pas ?
Pour mon personnage Flora, je voulais la faire interagir avec le Duergar Ilyich qui détient les fameux glands. Ilyich enclenche un dialogue à partir du moment où il détecte le PJ pour la première fois (le PJ n'a pas à venir lui parler donc).
J'ai donc réussi à créer une alternative à ce dialogue, puisqu'à partir de la première réplique d'Ilyich, j'utilise les fonctions EXTEND_BOTTOM et APPEND pour parler sur un dialogue entre lui et Flora, sans que le PJ puisse intervenir ( il avait normalement plusieurs réponses possibles suite à la première réplique d'Ilyich ). Mais bon, pour que ce soit plus clair, voici les parties de code.
Code : Tout sélectionner
EXTEND_BOTTOM ILYICH 0
IF ~InParty("Flora")
Global("FloIlyich","GLOBAL",0)~ THEN DO ~SetGlobal("FloIlyich","GLOBAL",1)~ EXTERN ILYICH IlyichFlo1
END
APPEND ILYICH
IF ~~ THEN BEGIN IlyichFlo1
SAY ~Tiens tiens, mais ne serait-ce pas une des chères compagnes de notre maître ?~
IF ~~ THEN EXTERN Flora FloIlyich1
END
J'ai essayé différentes façons de procéder (avec CHAIN, ou avec un bloc de dialogue normal pour les répliques de Flora), mais rien non plus.
J'ai aussi remarqué autre chose de bizarre. Dans le tutorial de WeiDU, il faut utiliser normalement la condition "IsValidForPartyDialog("Flora")" plutôt que celle que j'utilise, "InParty("Flora")". Cependant, cette fonction ne semble pas vérifiée dans le jeu, et le dialogue ne s'enclenche donc pas, en remettant à la place les réponses du PJ. Je ne vois pas pourquoi cette fonction ne marche pas, puisque Flora est là lors du dialogue, elle n'est pas morte, rien... et ce dialogue se trouve dans le même fichier .d que les autres dialogues que j'ai déjà codés et qui fonctionnent.
Pour les blocs APPEND de Flora, j'ai essayé les minuscules (Flora) et les majuscules (FLORA) mais ce n'est pas ça... j'ai essayé de mettre une variable pour voir si elle est vérifiée mais ça ne marche pas non plus, le dialogue s'arrête donc à la fin de ma réplique d'Iliych.
Qu'est-ce qui ne marche pas ?