Baldur's Gate et Dragon Age | La Couronne de Cuivre
Merci de prendre connaissance des conditions d'utilisation des forums, des blogs et du chat

Précédent   Baldur's Gate et Dragon Age | La Couronne de Cuivre > La Forge de GrondMarteau > La Forge des Apprentis > Problèmes Techniques

Problèmes Techniques
Un problème technique lors de la création d'un mod? Exposez votre probleme et les membres vous aideront de leur mieux.

Réponse
 
Outils de la discussion Noter la discussion
Vieux 01/07/2007, 13h48   #1
Shinook
Araignée Éclipsante
 
Avatar de Shinook
 
Date d'inscription: mai 2004
Localisation: dans le vent...
Messages: 1 266
Par défaut

Voilà un problème que je n'avais pas encore rencontré dans le codage de dialogues.

Pour mon personnage Flora, je voulais la faire interragir 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.

Citation:
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
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é 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 ?
__________________
FloraNPC : Au cimetierre...
Shinook est déconnecté   Réponse avec citation
Vieux 01/07/2007, 16h43   #2
Armand Clerval
Minotaure
 
Avatar de Armand Clerval
 
Date d'inscription: novembre 2004
Localisation: Région parigotte
Messages: 1 761
Par défaut

La commande APPEND ne devrait-elle pas se situer en premier, afin de signaler a weidu que tu colle ce morceaux de code au fichier dialogue de Ilyich?
Sinon:

Citation:
IF ~~ THEN EXTERN Flora FloIlyich1
"Flora" c'est le nom du fichier de dialogue dans lequel se trouve FloIlyich1?
__________________
A distance there is | Bio RP | Couleur RP: tan
Féerie|DeviantArt|Le troll Phénix|La Caverne de Dagobah
Statut: en phase de culturage artististique pictural dans les musées de Londres jusqu'au 19 mai.
Armand Clerval est déconnecté   Réponse avec citation
Vieux 01/07/2007, 20h18   #3
Isaya
Gelée de Moutarde
 
Date d'inscription: juillet 2003
Localisation: Plaisir
Messages: 1 626
Envoyer un message via MSN à Isaya
Par défaut

L'intérêt de WeiDU est d'éviter d'avoir à se taper des références EXTERN comme tu le fais là. Il y a un bon exemple de ce genre de dialogue dans la documentation WeiDU : partie Tutorials sur INTERJECT. L'exemple de Minsc avec les dryades semble tout à fait comparable à ce que tu veux faire.
Comme disent les anglais, RTFM.
Isaya est déconnecté   Réponse avec citation
Vieux 28/07/2007, 10h43   #4
Shinook
Araignée Éclipsante
 
Avatar de Shinook
 
Date d'inscription: mai 2004
Localisation: dans le vent...
Messages: 1 266
Par défaut

Bon, juste pour dire que le problème est réglé ( depuis un moment d'ailleurs ). En fait, il fallait simplement mettre ce dialogue dans le fichier xxxxxxP.dlg du PNJ, que je n'avais pas encore créé, car ce dialogue devait s'enclencher lorsque Flora serait dans le groupe. Maintenant ça marche .

Autre problème par contre, que j'avais déjà signalé : pour ces dialogues en question, le trigger "IsReadyForPartyDialog" ne fonctionne pas avec mon PNJ, le dialogue ne s'enclenche pas. Avec un autre trigger comme "InParty" par exemple, ça fonctionne...
__________________
FloraNPC : Au cimetierre...
Shinook est déconnecté   Réponse avec citation
Vieux 29/07/2007, 19h20   #5
Isaya
Gelée de Moutarde
 
Date d'inscription: juillet 2003
Localisation: Plaisir
Messages: 1 626
Envoyer un message via MSN à Isaya
Par défaut

Bonne nouvelle. Juste pour information (pour ceux qui se poseraient la même question), pourrais-tu préciser comment tu as opéré, s'il te plaît ? Merci beaucoup.

Je suppose que tu veux parler de IsValidForPartyDialog ? Car IsReadyForPartyDialog n'existe pas, en tout cas avec les fichiers TRIGGER.IDS d'origine.
Si tu t'es trompé de nom, tu aurais dû au moins avoir un message d'alerte dans le fichier log de WeiDU à la compilation ou à l'installation. As-tu vérifié ?

Dans tous les cas, la meilleure méthode consiste souvent à comparer comment Bioware a codé ça dans le jeu original. On trouve de nombreux usages de IsValidForPartyDialog pour les interventions des PNJ, en particulier lorsque le dialogue vérifie la présence de plusieurs personnages (si plusieurs peuvent intervenir). Mais on trouve aussi InParty, comme dans l'exemple suivant, le dialogue de Ribald pour reconnaître la présence de Mazzy :
Code:
InParty("Mazzy")
See("Mazzy")
!StateCheck("Mazzy",STATE_SLEEPING)
Global("RibaldMazzy","LOCALS",0)
J'ignore pourquoi on trouve les deux formes. On pourrait croire que IsValidForPartyDialog est un trigger incluant tous les tests de cet exemple mais IESDP est très peu bavard sur ce trigger.
Isaya est déconnecté   Réponse avec citation
Vieux 30/07/2007, 14h19   #6
Shinook
Araignée Éclipsante
 
Avatar de Shinook
 
Date d'inscription: mai 2004
Localisation: dans le vent...
Messages: 1 266
Par défaut

Comment j'ai fait ? Bon, reprenons...

Au départ, j'avais tout mis dans le même fichier dialogue, nommé "flora.d", et considéré comme le dialogue associé au personnage "Flora" via CreMaker. Cependant, ce fichier dialogue ne fonctionne que lorsque le personnage est en-dehors du groupe. Autrement dit, on mettra dans ce fichier le dialogue qui permettra de recruter le PNJ.

Donc, comme le dialogue devait avoir lieu après le recrutement du PNJ, ça ne pouvait pas marcher.

A partir du moment où un personnage est recruté, il est doté de plusieurs fichiers dialogues spécifiques ( je prendrai ici l'exemple de mon PNJ, Flora ) : BFLORA.dlg ( pour les banters ), FLORAP ( lorsque le PNJ est renvoyé du groupe ), FLORAJ ( pour les diverses interventions du PNJ en cours de partie ), je dois en oublier un, mais je sais plus lequel.

Suivant ce que je viens de dire, l'intervention de mon PNJ doit être écrite dans un nouveau fichier .d ( qui sera ensuite compilé en .dlg ) que je nomme FLORAJ.d. Et voilà, ça fonctionne... car à partir du moment où le PNJ est recruté, il ne tiens plus compte que de ces fichiers que j'ai cité, le "Flora.d" ne fonctionne donc plus.


Maintenant pour mon autre problème, alors oui c'est bien du "IsValidForPartyDialog" dont je parlais, désolé je me suis trompé en écrivant . Weidu reconnaît bien le trigger puisqu'il n'y a pas de message d'erreur, c'est dans le jeu que ça ne fonctionne pas. Je me dis que ça a peut-être un rapport avec le fichier .cre, enfin, tant que ça marche avec l'autre trigger, "InParty", ça me va...
__________________
FloraNPC : Au cimetierre...
Shinook est déconnecté   Réponse avec citation
Vieux 31/07/2007, 20h49   #7
Isaya
Gelée de Moutarde
 
Date d'inscription: juillet 2003
Localisation: Plaisir
Messages: 1 626
Envoyer un message via MSN à Isaya
Par défaut

Merci pour les explications que tu as fournies qui sont très intéressantes pour les personnes intéressées par la création d'un PNJ. C'est peut-être une introduction utile au tutorial de xena.

Cela dit, j'aurais dû être plus explicite pour ma demande d'explication. Ton premier message montrait une méthode de modification "à la main" des dialogues n'exploitant pas les capacités un peu avancées de WeiDU qui simplifient ce genre d'ajout. Donc ma question portait plutôt sur le fait de savoir quelle commandes tu avais finalement utilisées : INTERJECT, CHAIN, ... avec éventuellement un extrait de code montrant l'équivalent (a priori beaucoup plus simple) de ce que tu avais montré dans ton premier message. Une sorte de "ne faites pas ça mais plus simplement ceci".

J'ai toutefois une toute petite réserve. L'utilisation des 4 fichiers DLG (au fait, le quatrième, c'est celui qui sert avant le premier recrutement) n'est pas obligatoire mais elle a l'avantage de respecter la convention de nommage mise en place par Bioware. Par ailleurs elle simplifie l'écriture des conditions de déclenchement des différentes répliques (par exemple en évitant d'avoir à traiter la présence dans le groupe) et est donc préférable.
Enfin, il n'y a pas de lien direct entre fichier .D et fichier .DLG. L'ajout par WeiDU des éléments dans l'un ou l'autre des fichiers DLG dépend simplement des instructions BEGIN <nom du DLG> ou APPEND <nom du DLG> qui précèdent les blocs d'arborescence de discussion dans ton fichier .D. Tu peux donc avoir un seul et même fichier .D si tu le souhaites ou au contraire en avoir 10 rien que pour générer le fichier Bxxx (par exemple si ton personnage est très bavard avec les autres membres du groupe et que tu veux éviter d'avoir un fichier .D trop gros). Mais c'est bien plus simple pour t'y retrouver si tu as effectivement un fichier .D par DLG.
Isaya est déconnecté   Réponse avec citation
Vieux 05/08/2007, 10h53   #8
Shinook
Araignée Éclipsante
 
Avatar de Shinook
 
Date d'inscription: mai 2004
Localisation: dans le vent...
Messages: 1 266
Par défaut

Je suis d'accord avec ton dernier paragraphe, j'avais dû mal m'exprimer .

J'ai simplement utilisé la commande APPEND, comme prévu au départ, parce que INTERJECT et INTERJECT_COPY_TRANS causent quelques petits problèmes embêtants assez difficiles à décrire, mais ce que je peux dire, c'est que dans mon cas, où je cherche à faire intervenir un PNJ alors que normalement le PJ a plusieurs choix de réplique à ce moment, ça fou le bourdel dans le fichier .dlg.

Cependant, je viens de me rendre compte combien il était important de mettre bien ordre les fichiers .d. Par exemple, bien faire attention à mettre tous les dialogues d'un PNJ externe ( en utilisant APPEND ) au même endroit, histoire qu'il n'y ait pas plusieurs fois le même APPEND, sinon certains dialogues peuvent ne pas fonctionner. Il faut aussi mettre les dialogues du PNJ en premier dans le fichier, puis les APPEND et les INTERJECT_COPY_TRANS.

L'utilisation de la commande APPEND n'est finalement pas si compliquée, à partir du moment où comme je l'ai dit il faut s'organiser et organiser proprement le fichier dialogue.
__________________
FloraNPC : Au cimetierre...
Shinook est déconnecté   Réponse avec citation
Réponse

Liens sociaux

Tags
Aucune


Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 
Outils de la discussion
Noter la discussion
Noter la discussion:

Règles de messages
Vous pouvez créer de nouvelles discussions
Vous pouvez envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are non

Discussions similaires
Discussion Auteur Forum Réponses Dernier message
[VALEN] Pas de dialogue avec le PJ ? nael Compagnons d'Amn : Les modules dit "PNJ" 2 14/04/2007 16h27
Problème dialogue :S Kroc le bô Problèmes Techniques 3 06/02/2006 22h21
[BUG] Dialogue vide avec Firkraag Guillaume La Taverne d'Amkethran (Baldur's Gate 2) 14 20/08/2005 12h41
[TDD] Dialogue bizarre avec Aataqa Bilbon Méga-mods : Big Picture, TDD, SOS, Tortured Souls, Check The bodies, Neverending Journey 3 06/12/2004 11h42


Fuseau horaire GMT +2. Il est actuellement 10h29.



Merci de soutenir La Couronne de Cuivre et le Wiki consacré à Baldur's Gate et aux RPG

Les forums La Sirène Rougissante, La Couronne de Cuivre, ainsi que les sites associés Le Portail du Web et Le Monde de Baldur's Gate sont protégés par le Code de la propriété littéraire et artistique. Baldur's Gate I (1998), Tales of the Sword Coast (1999), Baldur's Gate II (2000) Shadows of Amn, et Throne of Bhaal (2001) sont ©BioWare, licenses et distribution ©ATARI. Dungeons & Dragons material est ©Wizards of the Coast. NeverWinter Nights est un produit ©Bioware, licenses et distribution ©ATARI. DRAGON AGE © 2002-2007 BioWare Corp. Dragon Age, the Dragon Age logo, BioWare Corp., and the BioWare logo are trademarks of BioWare Corp. in the United States, Canada and other countries. All other trademarks are the property of their respective owners. All rights reserved.
Conformément à l'article 34 de la loi 78-17 du 6 janvier 1978 dite loi "Informatiques et Libertés" vous disposez d'un droit d'accès, de modification, de rectification et de suppression de vos données personnelles (déclaration CNIL en cours mai 2007). Pour faire valoir ce droit contactez nous en cliquant ici et en utilisant le formulaire à votre disposition


Édité par : vBulletin® version 3.7.0
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185