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 > Les Outils

Les Outils
Besoin d'outils pour concevoir vos mods ? Ne cherchez plus, vous êtes à la bonne adresse. Trouvez ici une description des différents outils disponibles.

Réponse
 
Outils de la discussion Noter la discussion
Vieux 29/04/2008, 20h12   #1
Jack The Ripper, Aventurier
Araignée Géante
 
Avatar de Jack The Ripper
 
Date d'inscription: décembre 2007
Localisation: A l'hôpital psychiatrique
Messages: 552
Envoyer un message via MSN à Jack The Ripper
Par défaut [TUTORIAL] Le Mod Pnj pour les Nuls : Leçon 7, Partie 2

La Partie 1 de cette imposante Leçon 7 vous révélait comment coder une conversation à deux voix, c’est-à-dire avec deux protagonistes, pas un de plus.
Alors, cher apprenti moddeur, si tu n’as pas encore hissé le drapeau blanc, je t’invite ici à découvrir les joies de la programmation de dialogues à 3 voix et plus.

LECON 7 , PARTIE 2 : CONVERSATIONS A VOIX MULTIPLES
Cette leçon fait suite à la Leçon 7 : partie 1 ([TUTORIAL] Le Mod Pnj pour les Nuls : Leçon 7)

LOGICIEL NECESSAIRE : Blocnote, ou ConText (ou les deux)

NOTE : Le mod Bella Jansen n’est pas souhaité pour cette seconde partie car il ne contient rien de ce qui est abordé ici, je m'en inspirerai seulement.


WeiDU ne gère pas de la même façon un dialogue à voix multiples qu’il ne le ferait pour un dialogue à deux voix. Tout étant déjà dit sur le fichier .d et la conversation de base (PNJ/Charname), étudions sans tarder les cas qui se présentent à nous lorsque d’autres personnages font leur entrée, ou lorsque les PNJ du groupe s’en mêlent.
Auparavant, je parlerai brièvement du problème de conflit de fichiers croisés, qui survient lors d'un dialogue à quatre voix et plus. C'est un problème relativement complexe à expliquer, aussi suivez bien les instructions ci-dessous et tout devrait bien se passer.

1/ LES DIFFERENTS TYPES DE CONVERSATION A VOIX MULTIPLES

Les conversations à voix multiples étant sujettes à des conflits de fichiers croisés si elles sont mal négociées, il convient de distinguer d'abord deux types de conversation à voix multiples:

a) Le troisième protagoniste débute la conversation

Prenons l'exemple de Gigi-Les-bons-tuyaux qui, dans son putrescent égout, s'adresse à vous dès qu'il vous voit.

Contenu dans le #TGigi.tra:

@0 = ~Salut à vous, nobles aventuriers!~ // Gigi
@100= ~Nobles aventuriers? Ma foi...J'aime bien les cireurs de pompe.~ // Charname
@2 = ~Quelque chose me dit que ce messire est là pour nous donner une quête, <CHARNAME>.~ // Bella

-> En cas de conversation à trois, et si vous comptez réutiliser le troisième protagoniste (ici Gigi) par la suite, il faut tâcher de lui faire débuter la conversation, afin que son fichier .tra et son fichier .d possèdent un contenu (WeiDU sera content et nous évitons les conflits de fichiers croisés).
-> Si vous ne souhaitez plus le réutiliser, eh bien ma foi, c'est pareil. Faites-le juste quitter la zone à la fin de la conversation par un trigger.

b) Le troisième protagoniste ne débute pas la conversation

C'est ce second cas de figure qui risque de vous poser de gros problèmes de fichiers croisés. Là encore, je reste vague à ce sujet, sachez seulement que suivre ces instructions à la lettre vous évitera de vous arracher les cheveux parce que votre conversation à trois refuse de s'installer.

Contenu dans le #TBella.tra:

@0 = ~<CHARNAME>, j’ai peur ! Et ça pue ici, pouah !~ // Bella
@100 = ~Quoi encore ? Ne me dis pas que tu veux que je te porte ! Ah, mais voici celui que nous cherchions…~ // Charname
@2 = ~Salut à vous, nobles aventuriers ! Ne me dites rien ! Vous êtes ici pour résoudre l’énigme, n’est-ce pas ?~ // Gigi Les-bons-tuyaux


-> Ici, c'est Bella qui débute la conversation, et la réplique de Gigi est contenu dans ce fichier. Ce qui signifie qu'il va y avoir conflit de fichiers croisés si jamais le troisième protagoniste (ici Gigi) débute un autre dialogue, à un autre moment du jeu. Cette solution ne pose aucun problème si le troisième protagoniste est voué à disparaître après cette conversation, ou à ne jamais s'exprimer ailleurs que dans le fichier #TBella.tra. Si votre personnage est récurrent et prend fréquemment la parole en premier, alors reportez-vous à la solution a).

2/ LE DIALOGUE A TROIS VOIX : LA MAITRISE DU 'EXTERN'

A présent, voici donc comment coder un dialogue à 3 voix. Selon vos projets, vous aurez sélectionné la solution a) ou b) présentées ci-dessus. Quant à moi, je choisis la solution a), celle qui présente le moins de risques de bug.

RAPPEL DE LA REGLE D'OR : Toute créature que vous aurez dotée de parole doit avoir un fichier .tra et un fichier .d associés.

Nous créons donc un fichier #TGigi.d et un fichier #TGigi.tra.

Contenu dans le #TGigi.tra:
@0 = ~Salut à vous, Nobles Aventuriers!~ // Gigi
@100 = ~Nobles Aventuriers? Ma foi...J'aime bien les cireurs de pompe.~ // Charname
@2 = ~Quelque chose me dit que ce messire est là pour nous donner une quête, <CHARNAME>.~ // Bella
@200 = ~Vraiment? S'il pouvait nous indiquer un bon resto...~ // Charname
@3 = ~Un bon resto? Mais bien sûr...Melchior, couché!~ // Gigi

Contenu dans le #TGigi.d:

IF ~~ THEN BEGIN NoblesAventuriers
SAY @0
IF ~~ THEN REPLY @100 EXTERN ~#TBella~ MessireQuete
END

IF ~~ THEN BEGIN Couche
SAY @3
IF ~~ THEN EXIT
END

APPEND ~#TBella~

IF ~~ THEN BEGIN MessireQuete
SAY @2
IF ~~ THEN REPLY @200 EXTERN ~#TGigi~ Couche
END
END

-> Ce qui doit retenir notre attention ici est le EXTERN, que j'ai surligné en vert, et tout ce qui en découle, à savoir l'APPEND. Grâce à ce code, WeiDU va associer la réplique @2 contenue dans le bloc labellisé MessireQuete, au personnage Bella.
-> Rappel de l'absence d'accent sur les labels : interdiction formelle d'en mettre, car WeiDU ne peut les lire.
-> Notez le double END à la fin de l'APPEND, le dernier END étant celui qui clotûre l'APPEND.

C'est le moment de citer une règle d'or (eh oui, encore!):
Tout APPEND, quel qu'il soit, et quelle que soit la taille de votre .d, doit TOUJOURS être placé à la fin du fichier .d sinon cela ne marchera pas.

Voilà, vous êtes maintenant capable de coder une conversation à trois voix, avec un personnage rajouté par votre mod.

2/ LE DIALOGUE A QUATRE VOIX ET PLUS : LA 'CHAIN' OU L'EXTERN'

Dans le cas d'un dialogue à quatre voix et plus, il est possible d'employer soit la méthode du EXTERN, soit la CHAIN. En effet, après tests dans mon mod, il est apparu qu'il y a tout autant de conflits de fichiers croisés en codant avec CHAIN qu'avec EXTERN (ça, c'est surtout pour information à Deecy et Isaya).

Pour éviter de vous retrouver le bec dans l'eau avec une conversation à quatre complètement buggée, suivez attentivement la procédure ci-dessous et tout devrait bien se passer.

On admet que ceci est contenu dans le fichier #TGigi.tra:

@0= ~Salut à vous, nobles aventuriers !// Gigi Les-bons-tuyaux
@100= ~Nobles aventuriers? Ma foi, j'aime bien les cireurs de pompes.~ // Charname
@2 = ~Quelque chose me dit que ce messire est là pour nous donner une quête, <CHARNAME>...~ // Bella

@200 = ~Vraiment? S'il pouvait nous indiquer un bon resto...~ // Charname
@3 = ~Un bon resto? Mais bien sûr, je... Melchior, couché!~ // Gigi
@4 = ~Grooonn...~ // Melchior le troll
@5 = ~Désolé, c'est mon troll domestiqué...~ // Gigi

-> Notez le quatrième protagoniste, Melchior le troll, qui vient compliquer la programmation...En effet, il lui faut à lui aussi un fichier .tra et un fichier .d associés (la règle d'or citée en premier de cette leçon) mais que mettre dedans puisque Melchior n'a la parole que dans le #TGigi.tra?

Il va nous falloir contourner le problème, car WeiDU refusera de faire parler Melchior (et d'installer cette conversation, par extension) si Melchior ne possède pas son .tra et son .d.

Créons donc des leurres pour berner WeiDU: un fichier .tra et un fichier .d factices, qui resteront vides.
Notez cependant que tout .d doit contenir la ligne: BEGIN ~xxx~
ce qui donne BEGIN ~#TMelch~ dans le .d. Fin de la manipulation.

Maintenant, tout se passe dans le fichier #TGigi.d, naturellement, puisque c'est ce personnage qui débute la conversation. Nous continuons ici avec l'usage du EXTERN, car je trouve personnellement la CHAIN très peu pratique sauf s'il s'agit de faire parler les membres de la party (Jaheira, Anomen ect) mais ceci fera l'objet du dernier point de cette leçon.

On admet que ceci est contenu dans le fichier #TGigi.d:

IF ~~ THEN BEGIN NoblesAventuriers
SAY @0
IF ~~ THEN REPLY @100 EXTERN ~#TBella~ MessireQuete
END

IF ~~ THEN BEGIN Couche
SAY @3
IF ~~ THEN EXTERN ~#TMelch~ Gron
END

IF ~~ THEN BEGIN TrollDomestique
SAY @5
IF ~~ THEN EXIT
END

APPEND ~#TBella~

IF ~~ THEN BEGIN MessireQuete
SAY @2
IF ~~ THEN REPLY 200 EXTERN ~#TGigi~ Couche
END
END

APPEND ~#TMelch~

IF ~~ THEN BEGIN Gron
SAY @4
IF ~~ THEN EXTERN ~#TGigi~ TrollDomestique
END
END

-> Vous retrouvez en vert le quatrième protagoniste, Melchior le troll.
-> Son APPEND est rangé à la fin, comme celui de Bella.
/!\ ATTENTION : en cas de conversation à quatre et plus, le quatrième protagoniste et suivants ne pourront jamais s'exprimer ailleurs que dans le fichier .tra qui a contenu leurs premières répliques, ici #TGigi.tra (risque de conflit de fichiers croisés)./!\

-------------------------------------------
Normalement, si vous avez bien suivi les instructions, vous êtes désormais capable d'écrire une conversation à trois voix, puis à quatre et plus. Comme promis maintenant, nous allons aborder le cas où ce sont des personnages de la partie qui s'expriment.

3/ LES INTERVENTIONS DE MEMBRES : LA CHAIN

Comparé à l'EXTERN, c'est ici un jeu d'enfant. Mais tout comme l'EXTERN, la CHAIN doit se trouver à la fin du document, toutefois avant un APPEND.

Exemple d'une conversation impliquant Charname, Bella, Edwin et Minsc:

Contenu dans le #TBella.tra:

@0 = ~Oh, qu'il est mignon! C'est un hamster, non?~ // Bella
@100 = ~Attention, tu vas lui faire peur à gesticuler ainsi!~ // Charname
@2 = ~Eh, laisse-moi le toucher!~ // Bella
@3 = ~Minsc sait que Bella ne fera pas de mal à Bouh, hein que tu ne lui fera pas de mal?~ // Minsc
@4 = ~(Pfff, misérable pisseuse...)~ // Edwin
@400 = ~Bon, d'accord, vas-y puisque Minsc est d'accord.~ // Charname
@5 = ~Youpee! Tralala! *caresse Bouh*~ // Bella

Et voici ce que cela donne dans le #TBella.d:

IF ~InParty("Minsc")~ THEN BEGIN MignonHamster
SAY @0
IF ~~ THEN REPLY @100 GOTO Toucher
END

IF ~~ THEN BEGIN Caresse
SAY @5
IF ~~ THEN EXIT
END

CHAIN
IF ~~ THEN ~#TBella~ Toucher
@2
== MinscJ IF ~InParty("Minsc")~ THEN @3
== EdwinJ IF ~InParty("Edwin")~ THEN @4
END IF ~~ THEN REPLY @400 GOTO Caresse

-> Le vert indique tout ce qui concerne la CHAIN.
-> Il faut interpréter la CHAIN de la façon suivante:
- Si Minsc est dans la party, alors réplique @3
- Si Edwin est dans la party, alors réplique @4
-> MinscJ et EdwinJ sont les fichiers .d associés à ces personnages.

LISTE (INCOMPLETE) DES FICHIERS .D DES PNJ ORIGINAUX DE BG2:

JaheiraJ
MinscJ
AerieJ
KorganJ
ViconiJ
YoshJ
EdwinJ
AnomenJ
NaliaJ

-------------------------------

Vous savez à présent comment permettre à vos PNJ de party de prendre la parole...C'est-y pas beau?

4/ CONCLUSION

Il existe d'autres possibilités, telles que les Banters (dialogues inter-compagnons) et les Interjections (intervention du PNJ dans un dialogue original du jeu, par exemple avec un marchand ou dans une quête) mais je n'ai pas encore étudié cet aspect. Je promets de faire un tutorial à ce sujet dès que possible.
Cette leçon était pour le moins ardue, mais nous en avons presque fini avec la programmation : nous reste à voir les SCRIPTS et le SETUP.TP2, puis la leçon sur les BUGS connus, qui je l'espère, n'aura pas à servir.

Inutile de préciser que comme d'habitude, si vous ramez sur cette partie-là, il ne faut pas hésiter à poser des questions.

Leçon 8 : Les Scripts (en cours de création)

__________________
STATUT : Toujours sur la brèche pour votre plaisir, m'ssieurs dames
Lefou hurle sa démence en RP sur La Couronne de Zinc
Le Trailer des Chroniques de Severian, un mod PNJ pour La Couronne de Cuivre

Dernière modification par Jack The Ripper ; 29/04/2008 à 20h23.
Jack The Ripper 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
[TUTORIAL] Le Mod Pnj pour les Nuls : Leçon 5 Jack The Ripper Les Outils 1 03/05/2008 16h24
[TUTORIAL] Le Mod Pnj pour les Nuls : Leçon 1 Jack The Ripper Les Outils 9 03/05/2008 15h14
[TUTORIAL] Le Mod Pnj pour les Nuls : Leçon 2 Jack The Ripper Les Outils 1 29/04/2008 13h57
[TUTORIAL] Le Mod Pnj pour les Nuls : Leçon 4 Jack The Ripper Les Outils 4 28/04/2008 15h06
[TUTORIAL] Le Mod Pnj pour les Nuls : Leçon 3 Jack The Ripper Les Outils 0 27/04/2008 20h09


Fuseau horaire GMT +2. Il est actuellement 05h51.



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