Page 1 sur 1

[WeiDU] Dialogue et commande EXTERN

Posté : sam. 18 oct. 2014, 14:12
par Cocrane
1-J'utilise la commande EXTERN pour appeler un block d'un autre fichier et dans le jeu, je n'ai pas la texte prévu.

J'ai commencé à écrire la discussion à 3 avec les ducs Belt et Liia:

Je sélectionne le 1ier choix de réplique du Charname:
"Eviter cette guerre imminente et rétablir la paix avec Amn est un tour de force dont vous êtes les vrais héros."


Belt enchaine normalement mais pas avec la phrase
(BELTP Begin 1)
"Effectivement, nous nous sommes préparés au pire tout en usant de toute notre diplomatie pour mettre un terme à ces tensions. Je vous avoue que nous sommes épuisés"

mais avec
(BELTP Begin 2)
"(surprise) cette Grotte humide et nauséabonde? Non, ce lieu n’est pas digne d’intérêt. L’entrée est sous bonne garde et nos architectes s'assurent que les fondations de la cité sont solides."

J'utilise la syntaxe Nom du fichier +" "+nom du BEGIN ciblé. Les .TRA sont correctement numérotés.
Exemple: EXTERN BELTP 1

j'ai essayé aussi EXTERN ~BELTP~ 1 mais ca ne change rien dans le jeu. J'ai l'impression que Weidu ne tient pas compte du n° transmis ou que je n'ai pas compris la logique du n° signalé.

Duc LIIA (LIIAP.DLG)
BEGIN ~LIIAP~

IF ~NumTimesTalkedTo(0)~ THEN BEGIN CONTACT
SAY @1=@2

IF ~~ THEN
GOTO 1
END

IF ~~ THEN BEGIN 1
SAY @3 /* ~calmer les tensions avec Amn ont monopolisé toute notre attention.~ */

IF ~Global("choix1","AR7208",0)~ THEN
REPLY @4 /* ~Eviter cette guerre imminente et rétablir la paix avec Amn est un tour de force dont vous êtes les vrais héros.~ */
DO ~SetGlobal("choix1","AR7208",1)~
EXTERN BELTP 1

IF ~Global("choix2","Ar7208",0)~ THEN
REPLY @5 /* ~Inutile de vous fatiguer! Vous me demandez de quitter l’auberge n’est ce pas! Je vous rappelle que j’ai risqué ma vie pour vous et cette cité!~ */
DO ~SetGlobal("choix2","ar7208",1)~
GOTO MEPRISE

IF ~Global("choix3","AR7208",0)~ THEN
REPLY @9 /* ~En poursuivant Sarevok, je ne m’attendais pas à découvrir une antique cité sous Baldur. Je pourrais l’explorer si vous le désirez.~ */
DO ~SetGlobal("choix3","AR7208",1)~
EXTERN BELTP 2
END

IF ~~ THEN BEGIN 2
SAY @6 /* ~Charname, votre modestie n’a d’égal que votre bravoure. Vous avez tout de même poursuivi ce dangereux Sarevok dans ces horribles catacombes!~ */

IF ~~ THEN
REPLY @7 /* ~J’avais un compte à régler. Maintenant il a payé sa dette de sang.~ */
EXIT
END


Duc BELT (BELTP.CRE + BELTP.DLG)

BEGIN ~BELTP~
IF ~~ THEN BEGIN 1
SAY @4 /* ~Effectivement, nous nous sommes préparés au pire tout en usant de toute notre diplomatie pour mettre un terme à ces tensions. Je vous avoue que nous sommes épuisés.~ */
IF ~~ THEN EXIT
END

IF ~~ THEN BEGIN 2
SAY @3 /* ~(surprise) cette Grotte humide et nauséabonde? Non, ce lieu n’est pas digne d’intérêt. L’entrée est sous bonne garde et nos architectes s'assurent que les fondations de la cité sont solides.~ */
IF ~~ THEN EXIT
END

IF ~NumTimesTalkedTo(0)~ THEN BEGIN CONTACT
SAY @1 /* ~Ahhh voilà notre HEROS!~ */
IF ~~ THEN EXIT
END


2- Nom du BEGIN dans le EXTERN
J'ai essayé de mettre du texte dans me nom des BEGIN. si c'est un bloc lié à un EXTERN, WEIDU est erreur pour un problème de LABEL. On est visiblement obligé de mettre un chiffre.

Je sais que l'on peut utiliser le CHAIN IF pour les discussions à plusieurs mais mon éditeur ne gère pas ce point pour le moment.

Posté : dim. 26 oct. 2014, 15:27
par Cocrane
Je suis bloqué sur ce point.

Qui a une idée sur l'origine du problème?

Posté : dim. 26 oct. 2014, 23:19
par Cocrane
Je viens de trouver.

J'utilisais le '=' pour lancer 2 phrases et des externs sur des n° de block. Les deux phrases ont généré un 2nd non prévu et décalé tout les n° via la conversion WEIDU. Le EXTERN ne pointait plus sur le bon n° de block.

Posté : lun. 27 oct. 2014, 00:04
par Isaya
Effectivement, WeiDU fait débuter la numérotation des états des dialogues à 0, contrairement à Near Infinity, par exemple.

L'utilisation de EXTERN avec des numéros risque de poser de gros problèmes pour la compatibilité avec d'autres mods car les numéros des états pourraient ne pas être ceux que tu penses en présence d'autres mods qui modifieraient les mêmes dialogues.
Quoi qu'il en soit, WeiDU peut parfaitement gérer des noms sur les lignes EXTERN au lieu des numéros, à condition que tu écrives toutes les répliques des dialogues connectés de cette façon dans un seul et même fichier d. Ce serait une solution plus lisible et plus sûre.

Par ailleurs, mais cela n'a rien à voir avec ta question, je suis surpris que tu crées des dialogues pour Belt et Liia en les nommant avec le suffixe P, généralement dévolu aux dialogues des personnages virés du groupe, et surtout que tu leur crées de tout nouveaux dialogues au lieu d'ajouter des répliques à leur dialogue existant. Comment comptes-tu leur attribuer ces ficheirs DLG dans le jeu en remplacement des existants ?

Posté : lun. 27 oct. 2014, 13:09
par Cocrane
Isaya,
merci pour ton retour.

1- Gestion du Extern
Je vais donc tester un .d avec les dialogues de BELT et LIIA dans un même fichier et des noms de block en Alpha. Ca me facilitera la vie pour la lisibilité. ^^

2- Dialogue avec 'P'
Mon mod est une suite de BG1, j'ai préféré copier les créatures BELT et LIIA et leur affecter des nouveaux dialogues afin de repartir à zéro.. Le 'P' étant le 'P' de 'Protecteur de Baldur".

J'ai noté que dans la version BGT, BELT était remplacé aussi et donnait lieu à un mod de transition BG1 - BG2 d'après ce que j'ai vu. Transition non compatible avec mon histoire.

Posté : lun. 27 oct. 2014, 22:01
par Isaya
Concernant le point 2, la règle dans la communauté est de réserver un préfixe généralement en deux caractères pour s'assurer qu'aucun autre auteur ne va utiliser les mêmes noms de fichier. Ajouter des caractères à la fin comme tu le fais ou utiliser des noms pas utilisés dans BG est très risqué.
Voici le sujet de discussion pour en demander un. Tu peux consulter la base de données des préfixes déjà réservés à partir d'un lien dans le premier message de la discussion. Ce message indique aussi les caractères utilisables pour un préfixe.