Vers l'Infinity et Baldur's Gate
 
AccueilAccueil  PortailPortail  FAQFAQ  RechercherRechercher  MembresMembres  GroupesGroupes  S'enregistrerS'enregistrer  ConnexionConnexion  

Partagez | 
 

 [PNJ] Une autre gestion des dialogues - Partie 3 : Spécificités de codage des fichiers .d

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Pépé Malin
Pépé Pizza
Pépé Pizza
avatar

Nombre de messages : 333
Age : 29
Date d'inscription : 29/05/2008

MessageSujet: [PNJ] Une autre gestion des dialogues - Partie 3 : Spécificités de codage des fichiers .d   Ven 5 Juin 2009 - 0:13

Partie 3 : Spécificités de codage des dialogues.


Sommaire du tutoriel :


Cette partie aura pour but de montrer les spécificités de codage des différents .d et notamment de montrer comment surmonter ces difficultés malgré l’absence des APPEND un peu partout qui envahissent et sont très brouillons.

Par exemple, étant donné qu’il n’y a que 5 .d avec des rôles bien spécifiques, il est hors de question de coder les dialogues avec des APPEND disséminés un peu partout. Chaque personnage (du mod ou du jeu intervenant dans le mod) aura un seul et unique endroit où seront codées toutes ses interventions.


  • Spécificités du XXbanter.d :


Il n’y en a aucune : ce .d se codera les banters, tous les intervenants verront leurs lignes numérotés selon l’intervalle de lignes prévu pour ce .d, et on pourra utiliser la CHAIN à loisir comme avec les autres méthodes.

  • Spécificités du XXinterj.d :


Là encore, rien de particulier, utilisation des INTERJECT_COPY_TRANS comme d’habitude avec lignes numérotées selon l’intervalle.

  • Coder le XXPNJ.d, le XXNouv.d et le XXappend.d :


Cette partie comporte des spécificités qui rendront les choses différentes mais non moins pratiques et organisées.

Pour commencer, j’aimerais dissiper quelques confusions qui pourraient empêcher de faire certaines choses.
Prenons un exemple de dialogue à plusieurs voix entre Leila et Bob avec la méthode classique, si Leila commence le dialogue alors tout le dialogue sera codé dans son .d comme suit :

Code du SFLeilaJ.d :

BEGIN ~SFLeila~

IF ~True()~ THEN BEGIN BL1A1 // dialogue Bob-Leila n°1, premier bloc
SAY @0 /*@0 = ~Salut Bob !~*/
IF ~~ THEN EXTERN ~SFBob~ BL1A2
END

IF ~~ THEN BEGIN BL1A3
SAY @2 /*@2 = ~Dis-moi, faudrait qu’on se fasse une bouffe un de ces quatre !~*/
IF ~~ THEN EXTERN ~SFBob~ BL1A4
END



APPEND ~SFBob~

IF ~~ THEN BEGIN BL1A2
SAY @1 /*@1 = ~Salut ma poule !~*/
IF ~~ THEN EXTERN ~SFLeilaJ~ BL1A3
END

IF ~~ THEN BEGIN BL1A4
SAY @3 /*@3 = ~Ca marche, je te bigophone quand j’ai une soirée de libre.~*/
IF ~~ THEN REPLY @4 /*@4 = ~Il n’en est pas question, touche pas à ma meuf !*/ EXIT
END
END

L’APPEND ~SFBob~ fait réference au BEGIN ~SFBob~qui se trouvera logiquement dans le SFBob.d où se trouvent les autres dialogues initiés par Bob :

Contenu du SFBob.d :

BEGIN ~SFBob~
IF ~…~ THEN BEGIN etc…
….
Blabliabla…
END

Avec cette méthode, on pourrait avoir l’illusion que Bob aura des blocs de dialogue disséminés un peu partout. En fait c’est une illusion, à la compilation des .d en .dlg, tous les blocs de chaque personnage sont regroupés dans un seul et même .dlg, la fonction APPEND permet de joindre les blocs à ceux contenus dans le BEGIN ~SFBob~.

De fait, un EXTERN ne renvoie pas à un APPEND mais à un bloc de dialogue d’un personnage donné, que ce bloc se trouve après un APPEND ou un BEGIN.

Avec la méthode alternative, voici comment sera organisé le dialogue précédent.
Dans le SFLeila.d on trouvera ceci :




//Contenu du SFLeila.d
//SFLeila
//SFLeilaP
//SFLeilaJ

//SFLeila

BEGIN ~SFLeila~
IF ~…~ THEN BEGIN etc…
….
END

//SFLeilaP

BEGIN ~SFLeilaP~
IF ~…~ THEN BEGIN etc…
….
END

//SFLeilaJ

BEGIN ~SFLeilaJ~

IF ~True()~ THEN BEGIN BL1A1 // dialogue Bob-Leila n°1, premier bloc
SAY @5000 /*@5000 = ~Salut Bob !~*/
IF ~~ THEN EXTERN ~SFBob~ BL1A2
END

IF ~~ THEN BEGIN BL1A3
SAY @5001 /*@5001 = ~Dis-moi, faudrait qu’on se fasse une bouffe un de ces quatre !~*/
IF ~~ THEN EXTERN ~SFBob~ BL1A4
END




Comme on peut le voir, dans le SFLeila.d, il n’y aura que les blocs concernant Leila dans ce fichier.
Et dans le SFNouv.d (.d réservé aux nouveaux personnages) il y aura le contenu suivant :




//Contenu du SFNouv.d
//Bob

//Bob

BEGIN ~SFBob~

IF ~~ THEN BEGIN BL1A2
SAY @1000 /*@1000 = ~Salut ma poule !~*/
IF ~~ THEN EXTERN ~SFLeilaJ~ BL1A3
END

IF ~~ THEN BEGIN BL1A4
SAY @1001 /*@1001 = ~Ca marche, je te bigophone quand j’ai une soirée de libre.~*/
IF ~~ THEN REPLY @1002 /*@1002 = ~Il n’en est pas question, touche pas à ma meuf !*/ EXIT
END



La numérotation des lignes se fera uniquement selon l’endroit où se trouve la ligne : à chaque .d correspond un intervalle de ligne donné qui se trouvera dans l’unique .tra, comme précisé dans les chapitres précédents, le numéro des lignes sera linéaire.

  • Spécificités du XXPNJ.d :


Le XXPNJ.d contiendra tout ce qui concerne le PNJ recrutable du mod (excepté les banters et les interjections) à savoir :
- le BEGIN ~XXpnj~
- le BEGIN ~XXpnjP~ (dialogue de kick out ou hors groupe)
- le BEGIN ~XXpnjJ~ (dialogues en groupe)
- et le BEGIN ~XXpnjN~ (dialogues à déclenchement spécial)

  • Spécificités du XXNouv.d :


Il contiendra tous les dialogues (hors banters et interjections) des PNJ nouveaux inventés par votre mod. Chaque PNJ aura un seul et unique BEGIN~XXnomduPNJ~ où tous ses blocs de dialogues seront réunis. Le nom entre ~~ après le BEGIN correspond à ce que vous mettez dans la case Dialog File de l’onglet Other Attributes dans le .cre de la créature.

  • Spécificités du XXappend.d :


Contient tous les dialogues ajoutés par votre mod des PNJ existants déjà dans le jeu. (les autres PNJ recrutables notamment mais pas qu’eux) Chaque PNJ concerné se verra attribué un seul et unique APPEND à son fichier dialogue et tous les blocs seront compilés à cet endroit.

  • Autres remarques :


Les fonctions de dialogue spéciales telles que CHAIN, EXTEND_TOP, EXTEND_BOTTOM sont évidemment utilisables et trouveront leur place soit complètement avant soit complètement après tous les blocs de dialogue placés après un APPEND ou un BEGIN.

  • Compilation des dialogues dans le setup.tp2 :


Là encore, tout est extrêmement simplifié car il n’y a qu’un seul .tra. De fait on peut compiler tous les .d en même temps en indiquant simplement le répertoire contenant tous les .d, on a plus besoin de compiler les .d un par un et surtout de s’embêter la vie avec un bon ordre de compilation de sorte que les APPEND soient codés correctement (ce qui oblige parfois à des ajustements techniques bien pénalisants). Idem pour les scripts, ils seront compilés de façon intégrée. Voici les deux lignes à mettre dans le setup.tp2 :
COMPILE ~PNJ/Dialogues~ USING ~PNJ/Translations/French/XXdial.tra~
COMPILE ~PNJ/scripts~ USING ~PNJ/Translations/French/XXdial.tra~
Il faut bien entendu que tous les dialogues se trouvent dans le répertoire PNJ/Dialogues de votre mod et tous les scripts dans le répertoire PNJ/scripts. (à adapter selon le nom de vos dossiers)

_________________


Adoptez-moi !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
 
[PNJ] Une autre gestion des dialogues - Partie 3 : Spécificités de codage des fichiers .d
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Faire migrer une partie des données d'une 3DS a une autre 3D
» Comment accéder à l'autre partie de sa plage ?
» Ouvrir une partie dans un autre onglet avec un clic gauche
» simple bilan partie a 1000 points contre un nain
» Jouer avec une sauvegarde d'un autre PC

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
LEGENDES :: LE MONDE DU MODDING :: Maîtrise :: Outils et Tutoriaux-
Sauter vers: