[DLG] Bloqué, dialogue suivant ne se lance pas

Répondre
Avatar du membre
Faust
Adepte de Grondemarteau
Loup noir
Messages : 297
Enregistré le : mer. 15 avr. 2009, 13:04
Localisation : Wherever I may roam
Statut : Hors ligne

[DLG] Bloqué, dialogue suivant ne se lance pas

Message par Faust »

Bonjour,


Après avoir réussi à intégrer mon dialogue de recrutement à mon PNJ, je n'arrive pas à lancer le second dialogue qui devrait se déclencher après un événement.

Le PNJ doit parler à CHARNAME après avoir récupéré un objet lâché par un monstre. Le trigger s'active mais aucune fenêtre de dialogue apparaît, le PNJ se tourne vers CHARNAME, rien d'autre ne se passe.

Voici les fichiers impliqués:

Elrn.D
► Afficher le texte// Recrutement
BEGIN ~El[r]in~
IF ~ NumTimesTalkedTo(0)
THEN DO SetGlobal("HireEl[r]in","GLOBAL",0)
~ THEN BEGIN 1
SAY @1 = @3/* ~Que voulez-vous?~ */
IF ~~ THEN REPLY @2 /* ~Qu'est ce que ça peut vous faire?! Cette auberge ne vous appartient pas. Que cela vous plaise ou non, je m'installe près de ce feu. Vous feriez mieux de déguerpir avant que l'envie ne me prenne de vous sortir moi-même.~ */ GOTO 2
IF ~~ THEN REPLY @4 /* ~Je souhaite simplement me réchauffer auprès du feu, j'ai beaucoup voyagé et un peu de répis me fera le plus grand bien.~ */ GOTO 10
END

IF ~~ THEN BEGIN 2
SAY @6 /* ~Pendant qu'il vous toise du regard, vous portez la main à votre ceinturon près à dégainer votre arme, mais l'Elfe semble ne pas chercher querelle, il vous ignore et s'en va.~ */
IF ~~ THEN DO ~EscapeArea()~ EXIT
END

IF ~~ THEN BEGIN 10
SAY @21
IF ~~ THEN DO ~
SetGlobal("HireEl[r]in","GLOBAL",1)
SetCutSceneLite(TRUE)
Face(6)
ActionOverride(Player1,MoveToPointNoInterrupt([212.246]))
Wait(1)
ActionOverride("El[r]in",StartDialogNoSet(Player1))
Wait(4)
SetCutSceneLite(FALSE)~
EXIT
END
IF ~Global("HireEl[r]in","GLOBAL",1)~ THEN BEGIN 11
SAY @22= @23
IF ~~ THEN GOTO 12
END
IF ~~ THEN BEGIN 12
SAY @24=@25 /* ~Dans votre état actuel, je ne pense pas que qui que ce soit accepte de vous confier une quelconque tâche, à moins que vous ne soyez connu dans tout Féérune. Quel est votre nom?~ */
IF ~~ THEN REPLY @26 /* ~Je me nomme [CHARNAME], que me proposez-vous de faire dans ce cas là?~ */ GOTO 13
IF ~~ THEN REPLY @7 GOTO 2
END
IF ~~ THEN BEGIN 13
SAY @27 /* ~J'avais moi-même prévu d'enquêter sur les affaires liées à la Mine de Nashkel, nous pourrions faire équipe.~ */
IF ~~ THEN REPLY @28 /* ~Votre proposition me semble intéressante. Pourquoi vous ferais-je confiance?~ */ GOTO 14
END
IF ~~ THEN BEGIN 14
SAY @29 /* ~Je sais que vous êtes recherché par tout les assassins des environs mais je n'ai aucun intérêt à vous voir mort. Je me propose de vous aider à combattre vos assaillants afin d'assurer votre survie, ainsi que d'enquêter ensemble. Qui plus est, deux personnes armées se trouvent à l'extérieur de l'auberge, soit elles sont ici pour vous, soit elles sont ici pour moi. Dans ces deux cas nous pourrions éclaircir ce point là ensemble.~ */
IF ~~ THEN REPLY @30 /* ~Vu de cette manière, je ne peux qu'accepter, quel est votre nom?~ */ GOTO 16
END
IF ~~ THEN BEGIN 16
SAY @31 /* ~Il aurait été peu judicieux pour un criminel de se mettre à découvert dans une auberge, ou pour vous d'annoncer les choses de cette manière. Vous semblez par ailleurs être bien plus recherché que je ne le suis (il vous montre un parchemin avec votre nom et portrait dessus).~ */
IF ~~ THEN REPLY @32/* ~(Vous agrippez votre arme fermement.)~ */ GOTO 17
END
IF ~~ THEN BEGIN 17
SAY @34 /* ~Il est inutile d'agir de la sorte, si j'avais été intéressé par cette offre, je n'aurais pas attendu de vous adresser la parole pour vous attaquer. Nous sommes tous recherchés par quelqu'un pour de bonnes ou de mauvaises raisons.~ */
IF ~~ THEN REPLY @35 /* ~(Toujours la main posée sur votre arme, vous relachez cependant la prise sur celle-ci.) Que cela signifie t-il?~ */ GOTO 18
END
IF ~~ THEN BEGIN 18
SAY @36 /* ~Je cherche à enquêter sur le affaires de la Mine de Nashkel, mais tout seul, je risque de ne pas en revenir. Accepteriez-vous de me prendre dans votre groupe?~ */
IF ~~ THEN REPLY @37 /* ~Comment puis-je être certain de pouvoir vous faire confiance?~ */ GOTO 19
END
IF ~~ THEN BEGIN 19
SAY @38 /* ~Deux personnes armées, s'il n'y en a pas plus, sont ici soit pour vous, soit pour moi. Dans ces deux cas nous aurons besoin l'un de l'autre pour en venir à bout.~ */
IF ~~ THEN REPLY @39 /* ~Je n'ai pas vraiment d'autre choix. Comment vous appelez-vous?~ */ GOTO 20
END
IF ~~ THEN BEGIN 20
SAY @40 /* ~Elrin Indoel.~ */
IF ~~ THEN DO ~
SetGlobal("HireEl[r]in","GLOBAL",2)
JoinParty()
~
EXIT
END



El[r]in.BCS
► Afficher le texteIF
Global("HireEl[r]in","GLOBAL",2)
PartyHasItem("ELCRL") // Le Sacrifice
THEN
RESPONSE #100
SetGlobal("HireEl[r]in","GLOBAL",3)
ActionOverride("El[r]in",StartDialog("El[r]inJ",Player1))
END



El[r]inJ.D

► Afficher le texte// Un nouvel ennemi
BEGIN ~El[r]inJ~
IF ~ Global("HireEl[r]in","GLOBAL",3) ~
THEN BEGIN 21
SAY @36
IF ~~ THEN REPLY @37
EXIT
END


Voici la partie du fichier TP2 concernée pour la liaison du fichiers .D avec le personnage:
► Afficher le texte // 2DA POUR DIALOGUES (SoA + To)
// ELRIN
APPEND ~pdialog.2da~
~El[r]in El[r]inP El[r]inJ El[r]inD El[r]25P El[r]25J El[r]25D El[r]D25~
UNLESS~El[r]in~
// ISKORN
APPEND ~pdialog.2da~
~Is[k]or Is[k]orP Is[k]orJ Is[k]orD Is[]25P Is[]25J Is[]25D Is[]D25~
UNLESS~Is[k]orn~

// ELRIN
APPEND ~interdia.2da~
~El[r]in STEl[r] El[r]25~
UNLESS ~El[r]in~
UNLESS ~25FILE~
// ISKORN
APPEND ~interdia.2da~
~Is[k]or STIs[k] Is[k]25~
UNLESS ~Is[k]or~
UNLESS ~25FILE~

// Compilation des fichiers dialogues(BG)
// LYCANTHROPE
COMPILE ~El[r]in_Dragosh/Dialogues/El[w]lf.d~
USING ~El[r]in_Dragosh/Dialogues/El[w]lf.tra~
// Compilation des fichiers dialogues(SoA)
// ELRIN
COMPILE ~El[r]in_Dragosh/Dialogues/El[r]in.d~
USING ~El[r]in_Dragosh/Dialogues/El[r]in.tra~
COMPILE ~El[r]in_Dragosh/Dialogues/El[r]inP.d~
USING ~El[r]in_Dragosh/Dialogues/El[r]in.tra~
COMPILE ~El[r]in_Dragosh/Dialogues/El[r]inJ.d~
USING ~El[r]in_Dragosh/Dialogues/El[r]in.tra~
COMPILE ~El[r]in_Dragosh/Dialogues/El[r]inD.d~
USING ~El[r]in_Dragosh/Dialogues/El[r]in.tra~

// ISKORN
COMPILE ~El[r]in_Dragosh/Dialogues/Is[k]or.d~
USING ~El[r]in_Dragosh/Dialogues/French/Is[k]or.tra~
COMPILE ~El[r]in_Dragosh/Dialogues/Is[k]orP.d~
USING ~El[r]in_Dragosh/Dialogues/Is[k]or.tra~
COMPILE ~El[r]in_Dragosh/Dialogues/Is[k]orJ.d~
USING ~El[r]in_Dragosh/Dialogues/Is[k]or.tra~
COMPILE ~El[r]in_Dragosh/Dialogues/Is[k]orD.d~
USING ~El[r]in_Dragosh/Dialogues/Is[k]or.tra~

COMPILE ~El[r]in_Dragosh/Dialogues/El[N]my.d~
USING ~El[r]in_Dragosh/Dialogues/El[N]my.tra~
// Compilation des fichiers dialogues(SoA) + ToB
//ELRIN

COMPILE ~El[r]in_Dragosh/Dialogues/ToB/El[r]25P.d~
USING ~El[r]in_Dragosh/Dialogues/ToB/El[r]25.tra~
COMPILE ~El[r]in_Dragosh/Dialogues/ToB/El[r]25J.d~
USING ~El[r]in_Dragosh/Dialogues/ToB/El[r]25.tra~
COMPILE ~El[r]in_Dragosh/Dialogues/ToB/El[r]25D.d~
USING ~El[r]in_Dragosh/Dialogues/ToB/El[r]25.tra~
COMPILE ~El[r]in_Dragosh/Dialogues/ToB/El[r]D25.d~
USING ~El[r]in_Dragosh/Dialogues/ToB/El[r]25.tra~
// ISKORN
COMPILE ~El[r]in_Dragosh/Dialogues/ToB/Is[]25P.d~
USING ~El[r]in_Dragosh/Dialogues/ToB/Is[]25.tra~
COMPILE ~El[r]in_Dragosh/Dialogues/ToB/Is[]25J.d~
USING ~El[r]in_Dragosh/Dialogues/ToB/Is[]25.tra~

COMPILE ~El[r]in_Dragosh/Dialogues/ToB/Is[]25D.d~
USING ~El[r]in_Dragosh/Dialogues/ToB/Is[]25.tra~
COMPILE ~El[r]in_Dragosh/Dialogues/ToB/Is[]D25.d~
USING ~El[r]in_Dragosh/Dialogues/ToB/Is[]25.tra~





Merci pour vos lumières.
Image
Avatar du membre
Freddy_Gwendo
Orbe ancien
Messages : 5879
Enregistré le : sam. 23 avr. 2011, 01:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne

Message par Freddy_Gwendo »

Je n'ai jamais travaillé sur les NPC, mais je sais que leurs fichiers de dialogue répondent à une règle bien précise. Si la death variable de ton NPC est NAME,

NAMEP = dialogues avant de le recruter (et/ou lorsque tu le vires du groupe).
NAMEJ = dialogues lorsqu'il fait partie du groupe.
BNAME = banters

Lorsque NAME rejoint le groupe, son dialogue NAMEP est désactivé et remplacé par NAMEJ. C'est sans doute ce qui se passe quand le script de ton NPC lui ordonne de parler, mais il n'a rien à dire s'il ne trouve pas NAMEJ.dlg.

De mémoire, il me semble que le tuto sur les NPC explique ce processus. ;)


Edit :

Par ailleurs, ton script établit la variable Global("HireEl[r]in","GLOBAL",3), alors que le dialogue utilise celle-ci : Global("El[H]ire","GLOBAL",3)
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Avatar du membre
Faust
Adepte de Grondemarteau
Loup noir
Messages : 297
Enregistré le : mer. 15 avr. 2009, 13:04
Localisation : Wherever I may roam
Statut : Hors ligne

Message par Faust »

Freddy_Gwendo a écrit :Je n'ai jamais travaillé sur les NPC, mais je sais que leurs fichiers de dialogue répondent à une règle bien précise. Si la death variable de ton NPC est NAME,

NAMEP = dialogues avant de le recruter (et/ou lorsque tu le vires du groupe).
NAMEJ = dialogues lorsqu'il fait partie du groupe.
BNAME = banters

Lorsque NAME rejoint le groupe, son dialogue NAMEP est désactivé et remplacé par NAMEJ. C'est sans doute ce qui se passe quand le script de ton NPC lui ordonne de parler, mais il n'a rien à dire s'il ne trouve pas NAMEJ.dlg.

De mémoire, il me semble que le tuto sur les NPC explique ce processus. ;)


Edit :

Par ailleurs, ton script établit la variable Global("HireEl[r]in","GLOBAL",3),alors que le dialogue utilise celle-ci : Global("El[H]ire","GLOBAL",3)

En fait j'avais regardé le TUTO (lacouronne/guides-tutoriels/15077-tutor ... ement.html), Isaya avait parlé de :
- le fichier xxxP.DLG contient habituellement les répliques de sortie du groupe mais aussi ceux pour le réintégrer ;

- le fichier xxxJ.DLG (J pour joined probablement) contient généralement les répliques du personnage quand il est dans le groupe (dialogue avec le personnage principal, intervention avec un personnage extérieur au groupe, notamment) ;
- le fichier xxxB.DLG (B pour banter, bavardage) contient les échanges avec les autres personnages du groupe (hors personnage principal, sauf s'il est appelé à intervenir, comme dans les querelles de romance) "
;Ah oui, boulette sur le GLOBAL, c'est peut-être ça du coup.

EDIT:

La modification du global ne change rien, je vais vérifier que le fichier El[r] inJ existe bien. Pourtant j'y ai bien enregistré un script et comme le script du PNJ le cible bien ça devrait fonctionner.

Sinon j'essayerai avec les autres fichiers .D comme tu m'as conseillé.

EDIT2: Bon le problème était que je me gardais BG2 ouvert après désinstallation et réinstallation de mon module, je me contentais de charger la sauvegarde se trouvant avant le début du module. J'imagine que le fichier .DLG ne pouvait pas se mettre à jour à cause de ça. Et je te confirme Freddy que c'est bien le fichier El[r]inJ qui est pris en compte maintenant!

A part ça la seule chose que j'ai changé dans le script du personnage est:

StartDialogueNoSet([PC])

Merci!
Image
Répondre

Retourner vers « Dialogues »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 7 invités