Oyez, oyez !

Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !

Merci à toutes et à tous pour votre participation !

N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...

[BG TCD] Création d'un fichier .D et .TRA de base à partir d'un texte

Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne

[BG TCD] Création d'un fichier .D et .TRA de base à partir d'un texte

.

Message par Cocrane »

BG TCD: Baldur's gate Texte conversion Dialogue

Mise à jour du 05/03/2017

Voici un outil simple qui a pour but de transformer vôtre dialogue (fichier .TXT) en fichier de base .D et .TRA.

Principe de fonctionnement

- le programme gère les dialogues entre deux ou plusieurs personnes.

- une phrase commence par le nom du personnage qui parle entre crochets.

Exemple:
[Elvira] Bonjour, comment ca va?
- Si le personnage qui parle est un membre du groupe son nom est "PC" pour "Player Character"

- Si une nouvelle personne parle, on change de ligne.

- Si la nouvelle phrase est une réponse à la précédente, on ajoute une tabulation avant d'écrire le texte.
Exemple:
[Elvira] Bonjour, comment ca va?

(1 Tabulation)[Luncida] Bien, j'espère qu'ils vont comprendre!
- les lignes vides sont acceptées. (facilite la lecture)

- En cas de réponses multiples possibles, il faut respecter le même nombre de tabulations pour chaque réponse.
Exemple:
[Elvira] Bonjour, comment ca va?

(1 Tabulation)[Luncida] Bien, j'espère qu'ils vont comprendre!

<Tabulation 1><Tabulation 2>[PC] Pas d'inquiétudes, je capte tout!

<Tabulation 1><Tabulation 2><Tabulation 3>[Elvina] Génial, on va pouvoir continuer.


<Tabulation 1><Tabulation 2>[PC] Arf, je comprends rien à ton histoire de tabulation...

<Tabulation 1><Tabulation 2><Tabulation 3>[Elvina] Pas grave, relis depuis le début! :-)
-Si une discussion est terminée, la suivante commence sans tabulation.
Exemple:
// Discussion 1
[Elvira] Bonjour, comment ca va?

(1 Tabulation)[Luncida] Bien, j'espère qu'ils vont comprendre!

<Tabulation 1><Tabulation 2>[PC] Pas d'inquiétudes, je capte tout!

<Tabulation 1><Tabulation 2><Tabulation 3>[Elvina] Génial, on va pouvoir continuer.


<Tabulation 1><Tabulation 2>[PC] Arf, je comprends rien à ton histoire de tabulation...

<Tabulation 1><Tabulation 2><Tabulation 3>[Elvina] Pas grave, relis depuis le début! :-)


// Discussion 2
[Luncida] Une fois qu'on a capté le principe, on est plus contrait d'écrire, les BEGIN IF THEN END et les CHAIN IF, ca se fait tout seul!

- les mots-clés suivants sont gérés
BEGIN
IF THEN ... END
CHAIN IF THEN ... END IF tHEN ...
APPEND
SAY
REPLY
GOTO
EXTERN
EXIT

- Les conditions et autres mots clés seront donc à ajouter après génération du fichier .D. La structure étant là, il reste à la compléter.

- Les commentaires de type // ou /* */ ne sont pas gérés.

- La gestion du son n'a pas été testée. (nom du fichier son entre crochet à la fin de la ligne).

- La gestion du sexe du Pnj n'est pas gérée.

- Le fichier .D et TRA sont créés à l'endroit où est présent le fichier .TXT d'origine avec le même nom. Attention, Si les fichiers existent déjà, ils seront remplacés.

- Le programme ayant besoin de créer quelques fichiers, ils seront générés dans le répertoire C:\TEMP\.


LIEN

Mise à jour 05/03/2017 Ajout de la gestion d'un cas (CHAIN sans réplique d'un [PC])
Mise à jour 15/10/2017 Correction plantage au 1ier démarrage (Merci Faust!)

http://www.mediafire.com/file/cehm8hy54jbvk5d/BG_TCD.exe]http://www.mediafire.com/file/cehm8hy54 ... BG_TCD.exe[/URL]



Cocrane
Avatar du membre
mirandir
Adepte de Grondemarteau
Ver charognard
Messages : 674
Enregistré le : mer. 09 févr. 2011, 10:30
Contact :
Statut : Hors ligne
.

Message par mirandir »

Salut,

Merci pour le partage. Par contre, j'avoue avoir du mal à comprendre l'intérêt / la valeur ajouté de l'outil. Peut-être pourrais-tu donner des exemples de fichiers texte avant d'utiliser ton outil et après, pour que ce soit plus clair ?
« Pssst. Tu as remarqué comme elle me dévore du regard ? Hein ? Tu as vu ça ? La façon dont elle a regardé la courbe de mon os occipital ? »
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Voici un cas concret. (les tabulations ne sont pas prises en compte par le site.) Les fichiers sont en pièces jointes.

Fichier exemple.txt

Code : Tout sélectionner

Qui va là?

	C'est une bonne question t'en pense quoi?

		J'en penses que si tu continues d'approcher, tu vas te retrouver un joli carreaux en pleinte tête!

			T'as vraiment aucun humour... C'est moi <CHARNAME>!

				Aucun humour? La prochaine fois, je tire et je poserai la question après.

	Quel con! Il peut pas se taire, j'étais venu te tuer inconito!

		Dommage pour toi! Arrêtes de bouger, je ne voudrai pas te rater!

			Tu raterais une vache dans un couloir gros lard. Tires si tu l'oses!

			Regardes autour de toi ducon et sauves toi avant que j'arrive!

	C'est <CHARNAME>, je suis venu te remplacer.

		C'est pas trop tôt. J'ai cru qu'on allait me laisser mourir de froid!

			C'est pas l'envie qui me manquait mais il aurait ensuite fallu que je cache ton cadavre. Et le sol et un bien trop dur!

				C'est clair que tu n'as pas les bras pour creuser et le capitaine t'aurait arraché la tête. Bonne garde! (sourire)

			Va te rechauffer à l'intérieur, une bonne soupe t'attend!

				C'est pas de refus. Et toi gardes bien les yeux ouvert!

Résultat

Fichier Exemple.D

Code : Tout sélectionner

BEGIN ~exemple~


IF ~~ THEN BEGIN 0
  SAY @1 /* ~Qui va là?~ */

  IF ~~ THEN 
    REPLY @2 /* ~C'est une bonne question t'en pense quoi?~ */
    GOTO 1

  IF ~~ THEN 
    REPLY @3 /* ~Quel con! Il peut pas se taire, j'étais venu te tuer inconito!~ */
    GOTO 3

  IF ~~ THEN 
    REPLY @4 /* ~C'est <CHARNAME>, je suis venu te remplacer.~ */
    GOTO 4
END

IF ~~ THEN BEGIN 1
  SAY @5 /* ~J'en penses que si tu continues d'approcher, tu vas te retrouver un joli carreaux en pleinte tête!~ */

  IF ~~ THEN 
    REPLY @6 /* ~T'as vraiment aucun humour... C'est moi <CHARNAME>!~ */
    GOTO 2
END

IF ~~ THEN BEGIN 2
  SAY @7 /* ~Aucun humour? La prochaine fois, je tire et je poserai la question après.~ */

  IF ~~ THEN 
    EXIT
END

IF ~~ THEN BEGIN 3
  SAY @8 /* ~Dommage pour toi! Arrêtes de bouger, je ne voudrai pas te rater!~ */

  IF ~~ THEN 
    REPLY @9 /* ~Tu raterais une vache dans un couloir gros lard. Tires si tu l'oses!~ */
    EXIT

  IF ~~ THEN 
    REPLY @10 /* ~Regardes autour de toi ducon et sauves toi avant que j'arrive!~ */
    EXIT
END

IF ~~ THEN BEGIN 4
  SAY @11 /* ~C'est pas trop tôt. J'ai cru qu'on allait me laisser mourir de froid!~ */

  IF ~~ THEN 
    REPLY @12 /* ~C'est pas l'envie qui me manquait mais il aurait ensuite fallu que je cache ton cadavre. Et le sol et un bien trop dur!~ */
    GOTO 5

  IF ~~ THEN 
    REPLY @13 /* ~Va te rechauffer à l'intérieur, une bonne soupe t'attend!~ */
    GOTO 6
END

IF ~~ THEN BEGIN 5
  SAY @14 /* ~C'est clair que tu n'as pas les bras pour creuser et le capitaine t'aurait arraché la tête. Bonne garde! (sourire)~ */

  IF ~~ THEN 
    EXIT
END

IF ~~ THEN BEGIN 6
  SAY @15 /* ~C'est pas de refus. Et toi gardes bien les yeux ouvert!~ */
IF ~~ THEN 
    EXIT
END

Fichier exemple.TRA
@1=~Qui va là?~
@2=~C'est une bonne question t'en pense quoi?~
@3=~Quel con! Il peut pas se taire, j'étais venu te tuer inconito!~
@4=~C'est <CHARNAME>, je suis venu te remplacer.~
@5=~J'en penses que si tu continues d'approcher, tu vas te retrouver un joli carreaux en pleinte tête!~
@6=~T'as vraiment aucun humour... C'est moi <CHARNAME>!~
@7=~Aucun humour? La prochaine fois, je tire et je poserai la question après.~
@8=~Dommage pour toi! Arrêtes de bouger, je ne voudrai pas te rater!~
@9=~Tu raterai une vache dans un couloir gros lard. Tires si tu l'oses!~
@10=~Regardes autour de toi ducon et sauves toi avant que j'arrive!~
@11=~C'est pas trop tôt. J'ai cru qu'on allait me laisser mourir de froid!~
@12=~C'est pas l'envie qui me manquait mais il aurait ensuite fallu que je cache ton cadavre. Et le sol et un bien trop dur!~
@13=~Va te rechauffer à l'intérieur, une bonne soupe t'attend!~
@14=~C'est clair que tu n'as pas les bras pour creuser et le capitaine t'aurait arraché la tête. Bonne garde! (sourire)~
@15=~C'est pas de refus. Et toi gardes bien les yeux ouvert!~

Édit de Freddy : seule la balise

Code : Tout sélectionner

[/color] prend en compte les tabulations ! ;)
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Voici les pièces jointes.

Cocrane
Fichiers joints
exemple.txt
(1.05 Kio) Téléchargé 284 fois
exemple.TRA
(1.07 Kio) Téléchargé 280 fois
exemple.D
(1.78 Kio) Téléchargé 377 fois
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Intéressant pour écrire rapidement des dialogues simples.

Dommage que ça ne gère pas les dialogues à plusieurs intervenants... Pourtant les plus nombreux et les plus ch.... à coder. ;)

Édit : j'ai mis en page ton message d'exemple pour faire ressortir les tabulations. ^^
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Pour les dialogues à plusieurs, je ne suis pas contre le développer quelque chose.

Il faut trouver une logique simple afin de pouvoir rester dans l'esprit, j'écris mon dialogue dans un fichier texte tout bête et je le convertis ensuite.

Cocrane
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Pour une question de lisibilité, pourrais-tu remplacer ces lignes

Code : Tout sélectionner

  IF ~~ THEN 
    REPLY @2 /* ~C'est une bonne question t'en pense quoi?~ */
    GOTO 1

  IF ~~ THEN 
    EXIT
par celles-ci :

Code : Tout sélectionner

  IF ~~ THEN REPLY @2 /* ~C'est une bonne question t'en pense quoi?~ */ GOTO 1

  IF ~~ THEN EXIT
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Je préfère la notation d'origine pour la lisibilité (normal je l'ai écris comme ça ;) ). Cela permet notamment de voir la succession d'action qui s'enchaine si il y a un 'DO' ligne par ligne. Mais je peux créer une case à cocher pour choisir comment va se présenter le code. Ca permettra de choisir. :whistle3:

Cocrane
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Proposition d'évolution pour traiter un dialogue multi-PNJ

Chaque ligne de dialogue ou changement de PNJ commence par "[nom du PNJ]".


Exemple:

Code : Tout sélectionner

[MASSENA] C'est un serviteur de Cyric, je le reconnais! J'ai comme une envie de tuer!

     [EKILIS] Tiens donc un serviteur de Bhaal. Pourquoi servir un dieu qui n'existe plus? Tu es seul sur une route sans avenir mon ami. 
  
                    Rejoints tes frères et Cyric t'accordera des pouvoirs bien au de là de ce que tu imagines.

                             [MASSENA] Servir Cyric? Bhaal sera bientôt de retour et Cyric tremblera devant lui!

                                 [EKILIS] Quel gâchis vous ne trouvez pas?

                                        [PC] Entre tuez-vous et on verra qui a raison!

Je ne sais si ca va être simple a adapter dans le code existant mais ça me semble la solution la plus simple au niveau écriture du texte à transformer en .D et .TRA

Cocrane
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Ca donnerait à peu près ceci :

Code : Tout sélectionner

CHAIN MASSENA 0
@1 // C'est un serviteur de Cyric, je le reconnais! J'ai comme une envie de tuer!
== EKILIS @2 // Tiens donc un serviteur de Bhaal. Pourquoi servir un dieu qui n'existe plus? Tu es seul sur une route sans avenir mon ami. 
== EKILIS @3 // Rejoints tes frères et Cyric t'accordera des pouvoirs bien au de là de ce que tu imagines.
== MASSENA @4 // Servir Cyric? Bhaal sera bientôt de retour et Cyric tremblera devant lui!
== EKILIS @5 // Quel gâchis vous ne trouvez pas?
END
IF ~~ THEN REPLY @5 EXIT // Entre tuez-vous et on verra qui a raison!
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Avatar du membre
mirandir
Adepte de Grondemarteau
Ver charognard
Messages : 674
Enregistré le : mer. 09 févr. 2011, 10:30
Contact :
Statut : Hors ligne
.

Message par mirandir »

Ça serait effectivement assez sympa de pouvoir gérer les dialogues à plusieurs.

Petites questions sur l'outil en lui-même :
  • quel(s) encodage(s) (UTF8, ISO-8859-15, ...) et fin(s) de ligne (Unix, Windows) prend-t'il en charge concernant le fichier texte d'entrée ? Et concernant les fichiers de sortie ?
  • en quel langage est-il écrit ?
  • y a-t-il possibilité de le porter sous d'autres OS (Linux, Mac) ?
« Pssst. Tu as remarqué comme elle me dévore du regard ? Hein ? Tu as vu ça ? La façon dont elle a regardé la courbe de mon os occipital ? »
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

mirandir a écrit :quel(s) encodage(s) (UTF8, ISO-8859-15, ...) et fin(s) de ligne (Unix, Windows) prend-t'il en charge concernant le fichier texte d'entrée ? Et concernant les fichiers de sortie ?
J'ai fait un test avec un fichier texte basique créé avec un notepad. D'après ce que je vois dans la doc, on parle uniquement de UTF08 si on désire effectuer des conversions particulières.
mirandir a écrit :en quel langage est-il écrit ?
Logiciel Windev
mirandir a écrit :y a-t-il possibilité de le porter sous d'autres OS (Linux, Mac) ?
En version 11, on a Windows 32 ou 64 bits et Linux. Je vais regarder ce que propose la version 21 qui est disponible.


Au sujet du CHAIN, pouvez-vous me confirmer que les textes de tous les PNJ doivent se retrouver dans le même fichier TRA?

Cocrane
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Cocrane a écrit : Au sujet du CHAIN, pouvez-vous me confirmer que les textes de tous les PNJ doivent se retrouver dans le même fichier TRA?
Ce n'est pas obligatoire.
Si tous les textes de DLG.D (dialogue1.D, dialogue2.D, dialogue3.D...) sont dans le fichier DLG.tra, alors tu compiles comme ça

Code : Tout sélectionner

COMPILE ~monmod/dialogues/DLG.d~
Et tous les fichiers de dialogue contenus dans DLG.d seront créés à partir du fichier DLG.TRA.

Sinon, si les textes de DLG.D sont répartis dans des fichiers spécifiques à chaque dialogue à créer, tu compiles comme ceci

Code : Tout sélectionner

COMPILE ~monmod/dialogues/DLG.d~ USING ~monmod/tra/dialogue1.tra~
USING ~monmod/tra/dialogue2.tra~
USING ~monmod/tra/dialogue3.tra~
...
Mais le plus simple, c'est effectivement d'affecter un fichier tra unique par fichier.d à compiler, quelque soit le nombre de fichiers de dialogue que créé fichier.d.
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Ta réponse me donne des éléments mais je vais préciser ma demande pour être sur.

On a un fichier texte où on a un mélange de:
- De répliques entre deux PNJ
- De répliques entre plusieurs PNJ

On lance l'outil BG TCD dans le but de préparer les fichiers au format attendus par WEIDU.

On écrit le TP2 qui va bien et on compile.


Dans ce cadre, je créé:
- un fichier .D et .TRA

OU

- un fichier .D et .TRA par PNJ différent identifié avec le .TRA qui commence à 1 pou chaque fichier.
Dans ce cas, C'est le premier PNJ qui lance une discussion multiple qui porte le CHAIN?

Cocrane
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Pour te faciliter la vie, privilégie la solution 1 car la deux ne fonctionnera pas dans nombre de cas.

Tu tombes bien, je suis en train de finaliser mes dialogues de la quête spécifique du kit de chevaucheuse de licorne. Je mets en pièces jointes le début du fichier d générique qui gère plusieurs fichiers.

Ne fais pas attention aux variables utilisées : elles me permettent de gérer les ajouts de mods à des dialogues existants. C'est un cas de dialogues particulier. En revanche, regarde comment sont traités les CHAIN. Ça te donnera une idée. ^^

Préviens moi quand tu l'as téléchargé que je le retire de la discussion (spoiler). ;)
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Téléchargé!

Cocrane
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Je n'ai pas testé, mais manifestement ton utilitaire ne gère pas les textes du type
@1 = ~Bonjour monsieur.~ [SON01] ~Bonjour madame.~ [SON02]
Tu le confirmes ?
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Je n'ai pas travaillé sur le féminin / masculin des textes.

Il prend le texte tel qu'il est écrit. Tu avais quoi comme ligne à l'origine?

Cocrane
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

J'ai pas testé justement : j'attendais ta confirmation. ;)

Mais vu la présentation de ton exemple, je me suis dit que ça ne fonctionnerait pas. Au mieux, il me créerait une ligne de dialogue incluant les deux formes, masculine et féminine.
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Si on part sur une gestion du féminin / masculin, il faut prévoir un séparateur de texte tout en respectant le principe de tout avoir sur la même ligne.

Exemple: "|"


Par contre, si on ajoute la gestion du son avec des [] comme dans le futur codage, il faut que je m'assure qu'il n'y a pas de confusion entre le nom du PNJ et le son.


Cocrane
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Je viens de retravailler le programme pour qu'il puisse gérer des dialogues Mono et/ou multi PNJ.

Je viens de faire un test mais j'ai une anomalie signalée par WEIDU. (fichier en pièce jointe)

La situation est la suivante:
- 2 PNJ:
Elvina
Luncida

- on a des passages qui donnent un codage
> BLOCK type
IF THEN BEGIN
SAY
Etc...

> BLOCK type
CHAIN IF
@
==
END etc...

Mon problème est à priori le suivant, Weidu reclame un 2nd DLG pour Luncida. Je pensais que l'on pouvait faire un seul fichier .D et .TRA pour plusieurs PNJ. Visiblement j'ai raté un point.
J'ai regardé d'autre fichiers, je ne vois pas où ça coince.

A la base, je n'avais pas mis un APPEND pour Luncida mais un 2nd BEGIN dans le fichier. Du coup, j'ai eu une nouvelle anomalie.



Qu'en pensez vous?

Cocrane
Fichiers joints
weidu.jpg
statues.tra
(4.05 Kio) Téléchargé 228 fois
statues.D
(6.21 Kio) Téléchargé 344 fois
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

Tu peux faire un seul fichier D mais, si tu fais intervenir deux personnages, il faudra forcément deux dialogues différentes, donc deux fichiers DLG.

Les BEGIN ~blabla~, APPEND ~blabla~, EXTERN ~blabla~ et enfin le blabla après == dans un CHAIN font référence pour blabla à un dialogue, c'est à dire au terme de l'installation à un fichier DLG qui portera ce nom blabla.DLG, c'est à dire à un vrai fichier pour le jeu et non un fichier D. Le seul moyen d'en créer un, c'est BEGIN et ça doit se faire avant les autres, qui vont chercher si le dialogue existe (soit dans le jeu, soit dans le même fichier D, soit peut-être encore, parce que tu passes plusieurs fichiers D en même temps à l'instruction COMPILE dans un fichier tp2) et vont échouer si ce n'est pas le cas.

Un parcours rapide de ton fichier D confirme qu'il manque un BEGIN ~Luncida~. Il faut impérativement qu'il apparaisse vers le début, avant que tu y fasses référence dans un APPEND, un EXTERN ou un CHAIN. Le plus simple est que tu le mettes au tout début.
Tu peux tout à fait mettre deux BEGIN de dialogues à la suite. Le x#tiaxquest.d du BG1 NPC en enchaîne trois au début.

Une fois le dialogue créé par le BEGIN, tu pourras y faire référence et le remplir, que ce soit avec APPEND (pour coder les EXTERN auxquels tu fais référence) ou pour les CHAIN.

Remarque : j'ai constaté que tu n'avais pas mis de tildes autour de Luncida après les == des CHAIN. Je ne suis pas certain que ça fonctionne bien, j'ai toujours vu des tildes autour des noms de dialogue dans les mods.
:!: Peu disponible
Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Salut Isaya,

bonne nouvelle le fichier compile avec les deux corrections signalées:
- ajout d'un BEGIN en début de fichier pour Lucinda.
- ajout des Tildes à chaque référence de Luncida.


Je vais pouvoir proposer cette nouvelle version bientôt.

Merci.

Cocrane
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Mise à jour à disposition.

Détail dans le 1ier message.

Cocrane
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Mise à jour 05/03/2017 Ajout de la gestion d'un cas (CHAIN sans réplique d'un [PC])


http://www.mediafire.com/file/pbiiyb2s714h3nw/BG_TCD.exe]http://www.mediafire.com/file/pbiiyb2s7 ... BG_TCD.exe[/URL]

Cocrane
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

J'ai le cas suivant.

Dialogue multi-PNJ:
COMPILE ~PDBA1CH8\DLG\COURGLIT.d~ ~override~ USING ~PDBA1CH8\DLG\COURGLIT.tra~ // Dialogue URglit + Taguar

"
BEGIN ~URGLITE~

BEGIN ~TAGUAR~

CHAIN IF ~~ THEN ~TAGUAR~ 8
@1/* ~Je vais enfin être débarassé de toi... Arghhhh.~ */
== ~URGLITE~ IF ~~ THEN @2/* ~Taguar Nooonnnn!~ */
== ~URGLITE~ IF ~~ THEN @3/* ~=(Elle vous regarde plein de haine) Tout ça, c'est votre FAUTE. Je vous MAUDIT tous!~ */
END IF ~~ THEN EXIT


APPEND ~URGLITE~

CHAIN IF ~~ THEN ~URGLITE~ 9
@14/* ~Taguar! C'est bien toi?~ */
== ~TAGUAR~ IF ~~ THEN @15/* ~Urglite? Ils ont préféré empoisonner le champion de Bhaal que de l'affronter! Tous des lâches et tout est de ta faute!~ */
== ~URGLITE~ IF ~~ THEN @16/* ~Comment oses-tu? Tu préférais la guerre à notre palais. Tu m'as abandonné à tous ces comploteurs!~ */
== ~TAGUAR~ IF ~~ THEN @17/* ~Abandonné? Tu en avais jamais assez. Il fallait toujours plus de richesses et de pouvoir! J'ai fait de toi une grande reine!~ */
== ~URGLITE~ IF ~~ THEN @18/* ~'TA GRANDE REINE', ils l'ont jeté dans un caveau prétextant que j'étais folle et maudite.~ */
== ~URGLITE~ IF ~~ THEN @19/* ~=Je suis morte de froid. TU M'AS TUE!~ */
== ~TAGUAR~ IF ~~ THEN @20/* ~Sale petite ingrate. Même morte, Tu es là à me tourmenter. J'en est ASSEZ de toi! Je vais te détruire!~ */
END IF ~~ THEN EXIT

CHAIN IF ~~ THEN ~URGLITE~ 10
@22/* ~=(urglite tend la main vers Taguar) Je voulais juste être avec toi...~ */
== ~TAGUAR~ IF ~~ THEN @23/* ~Tu as été mon plus grand fléau. Disparait maintenant!~ */
END IF ~~ THEN EXIT

END
"

A la compilation, le 1ier CHAIN IF de Urglite est annoncé "erreur de syntaxe". J'inverse URGLITE ET TAGUAR. C'est TAGUAR qui est en erreur de syntaxe.

On ne peut pas avoir des CHAIN pour des personnes différents dans un même fichier multi PNJ?
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Quand tu utilises des CHAIN sur plusieurs fichiers, tu ne dois pas utiliser de APPEND. Les deux BEGIN du début suffisent.
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

Comme CHAIN oblige à préciser le dialogue concerné, tu peux considérer que le APPEND est intégré dans la commande.

Par ailleurs, lorsque tu fais parler deux fois de suite le même personnage :
Cocrane a écrit : CHAIN IF ~~ THEN ~TAGUAR~ 8
@1/* ~Je vais enfin être débarassé de toi... Arghhhh.~ */
== ~URGLITE~ IF ~~ THEN @2/* ~Taguar Nooonnnn!~ */
== ~URGLITE~ IF ~~ THEN @3/* ~=(Elle vous regarde plein de haine) Tout ça, c'est votre FAUTE. Je vous MAUDIT tous!~ */
END IF ~~ THEN EXIT
tu n'es pas obligé de répéter le nom du dialogue ; avec le symbole = (unique), tu indiques qu'il s'agit d'une autre réplique du même personnage qu'avant. De même, s'il n'y a pas de condition, tu peux te passer du IF.

Code : Tout sélectionner

CHAIN IF ~~ THEN ~TAGUAR~ 8
  @1/* ~Je vais enfin être débarassé de toi...  Arghhhh.~ */
  == ~URGLITE~ @2/* ~Taguar Nooonnnn !~ */
  = @3/* ~=(Elle vous regarde plein de haine) Tout ça, c'est votre FAUTE. Je vous MAUDIS tous !~ */
END IF ~~ THEN EXIT
Cocrane a écrit :On ne peut pas avoir des CHAIN pour des personnes différents dans un même fichier multi PNJ?
Au contraire, si tu veux que le CHAIN fonctionne avec deux PNJ ajoutés par ton mod, il te faut soit compiler le fichier .d qui effectue le BEGIN de l'autre dialogue AVANT (dans le tp2) celui qui fait le BEGIN du second dialogue et les CHAIN, soit tout mettre dans le même fichier .d.
:!: Peu disponible
Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Merci pour vos retours.

Mon fichier est corrigé et ça marche.


Je ferai évoluer l'outil pour tenir compte de vos remarques.

Cocrane
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

En pièces jointes, un exemple de dialogue à 3.

Cocrane
Fichiers joints
statues.D
(6.31 Kio) Téléchargé 219 fois
statues.txt
(4.56 Kio) Téléchargé 143 fois
statues.tra
(3.99 Kio) Téléchargé 224 fois
Répondre

Retourner vers « Outils de développement »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité