![]() |
| Merci de prendre connaissance des conditions d'utilisation des forums, des blogs et du chat |
| | |||||||
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. |
![]() |
| | Outils de la discussion | Noter la discussion |
| | #1 |
| Araignée Géante ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | 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. |
| | |
![]() |
| Liens sociaux |
| Tags |
| Aucune |
| Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s)) | |
| Outils de la discussion | |
| Noter la discussion | |
| |
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 |