WeiDU permet effectivement de transformer dans les deux sens : .D -> .DLG (compiler) ou .DLG -> .D (décompiler). WeiDU peut s'utiliser en ligne de commande pour ce genre de choses. Pour se servir de WeiDU de cette manière, je te suggère de copier l'exécutable weidu.exe dans le répertoire du jeu. Tout comme pour Near Infinity, WeiDU saura alors que tu veux travailler sur le jeu qui s'y trouve.
L'utilisation est simple : WeiDU détermine grâce à l'extension du fichier que tu lui indiques quelle est l'opération que tu veux faire et génère dans le répertoire courant un fichier portant le même nom que celui indiqué mais avec l'extension résultante. Exemple :
weidu Jaheira.DLG : provoque la décompilation et la création de Jaheira.D dans le répertoire courant
weidu Jaheira.D : provoque la compilation et la création de Jaheira.DLG dans le répertoire courant
weidu Jaheira.BCS : provoque la décompilation et la création de Jaheira.BAF dans le répertoire courant
weidu Jaheira.BAF : provoque la compilation et la création de Jaheira.BCS dans le répertoire courant
Je te mets en garde contre l'idée de recompiler un fichier .D obtenue par une décompilation. Vu la façon dont WeiDU crée le fichier .D (avec des références en dur sur des numéros de texte dans le fichier dialog.tlk actuel, sous la forme #900), la recompilation ne donnera de bons résultats en terme de texte des répliques que dans des cas très rares. La décompilation est utile pour étudier des dialogues mais il ne faut pas exploiter les fichiers .D résultants sans les modifier lourdement à cause de cette question de références en dur.
Pour palier ce problème de références en dur, le plus simple est d'utiliser la commande suivante :
weidu --trans Jaheira.DLG : provoque la décompilation et la création de Jaheira.D et Jaheira.TRA dans le répertoire courant
Mais en pratique, l'intérêt de décompiler un dialogue existant sous une forme utilisable pour l'intégrer dans ton mod me semble bien faible. A part la perte du fichier .D d'origine pour un fichier .DLG de ton mod, je ne vois pas vraiment d'usage.
Il y a longtemps, j'avais écrit un
tutoriel plutôt destiné à la traduction de mods dans lequel j'avais montré ce qu'on pouvait obtenir en décompilant un dialogue pour obtenir un fichier .D. Le but était, pour la traduction, d'obtenir le flux des répliques en lisant la structure du dialogue. Tu peux y jeter un coup d'oeil par curiosité, même si tu n'y trouveras pas beaucoup d'informations exploitables pour la création de mods.
Le fichier TP2 constitue à la fois la carte d'identité et la procédure d'installation du mod.
Les premières lignes indiquent l'auteur et le nom du mod. La syntaxe BEGIN ~Blabla~ du début du fichier TP2 définit le nom du mod. Ici il s'agit bel et bien d'un nom libre. Tu peux le nommer ~Les aventures de Medji au pays du modding BG~ si ça te chante. C'est tout simplement le nom qui va apparaître au joueur au moment où il va installer le mod et que WeiDU demande de confirmer qu'on veut installer ou désinstaller le mod.
Comme le fichier TP2 constitue la procédure d'installation, il doit indiquer quels sont les fichiers qu'il faut copier (CRE, ITM, BMP, ...) dans le répertoire Override, quels fichiers il faut compiler (D, BAF) pour obtenir les DLG et BCS qui sont ce que le jeu sait traiter et enfin quels autres fichiers communs du jeu (par exemple certains fichiers 2DA) il faut modifier pour que le mod s'intègre dans le jeu.
Les instructions de type COMPILE sur un fichier .D ont le même effet que le fait de lancer "weidu fichier.D" dans la ligne de commande. C'est la forme qu'il faut utiliser au sein du fichier TP2.
Pour les fichiers BAF, il faut utiliser COMPILE pour les fichiers BCS à créer intégralement (par exemple, le script de comportement du personnage). Pour le script qui ajoute le personnage dans une zone particulière, il faut par contre ajouter un morceau de script et non écraser le script existant de la zone, ce qui se fait avec les instructions EXTEND_BOTTOM ou EXTEND_TOP.
J'évoquais ci-dessus des fichiers communs du jeu qu'il faut modifier pour que ton PNJ s'intègre dans le jeu. Les fichiers pdialog.2da et interdia.2da en font partie.
Le premier définit pour chaque PNJ le nom des fichiers DLG qui s'appliquent dans des conditions clairement identifiées de la vie du personnage : les répliques pour virer ou reprendre le PNJ dans le groupe (xxxP.DLG), ses répliques quand il est dans le groupe (xxxJ.DLG), le dialogue initial avant le recrutement (xxxD.DLG).
~TheNPC TheNPCP TheNPCJ TheNPCD TheNPC25P TheNPC25J TheNPC25D TheNPC25~
La première colonne concerne le "script name" (ou "death variable") qui identifie de façon unique le personnage (défini dans le fichier CRE). La dernière colonne définit le script (BCS) qu'il faut affecter au personnage lorsqu'il est rappelé depuis l'antichambre dans Throne of Bhaal. Il permet de faire des actions particulières à ce moment-là. Pour les personnages d'origine Bioware, c'est là que le jeu leur change certains doublages sonores pour la sélection ou des actions. Les "25" sont des suffixes couramment utilisés dans le jeu pour identifier des éléments propres à Throne of Bhaal. Comme ce n'était pas à proprement parler BG III mais tout de même une suite, ils l'ont appelé BG 2.5, ce qui a donné ce préfixe ou suffixe dans beaucoup de fichiers du jeu. Ici il s'agit de bien séparer les dialogues pour les deux parties du jeu de façon à ce qu'on dise au PNJ d'attendre dans l'antichambre et non à la Couronne de Cuivre quand on veut se séparer de lui, par exemple.
:!: La syntaxe de l'exemple présente une erreur à éviter : dans l'Infinity Engine, tous les noms de fichiers (sans l'extension) doivent se limiter à 8 caractères maximum ! Bref un nom tel que "TheNPC25D" est trop long !
Xena avait mis un commentaire sur la dernière partie faisant référence à un commentaire de ma part qu'elle n'avait pas compris. Il s'agissait de ce problème de nom trop long (TheNPCB25). Et aussi du fait que pour les deux fichiers 2DA, il existe deux formes selon que le joueur a ou non Throne of Bhaal. Si le mod nécessite ToB, comme dans l'exemple, c'est bon. Sinon, il vaut mieux s'inspirer que la façon de faire du mod Tashia, que j'ai indiquée dans le sujet, afin d'écrire sous la forme appropriée pour Shadows of Amn seul.