LEGENDES
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


Vers l'Infinity et Baldur's Gate
 
AccueilAccueil  PortailPortail  Dernières imagesDernières images  RechercherRechercher  S'enregistrerS'enregistrer  ConnexionConnexion  
-50%
Le deal à ne pas rater :
-50% Baskets Nike Air Huarache Runner
69.99 € 139.99 €
Voir le deal

 

 EXTERN OU CHAIN ? selon les differents cas!

Aller en bas 
AuteurMessage
Invité
Invité




EXTERN OU CHAIN ? selon les differents cas! Empty
MessageSujet: EXTERN OU CHAIN ? selon les differents cas!   EXTERN OU CHAIN ? selon les differents cas! Icon_minitime1Lun 25 Aoû 2008 - 15:12

J'ai créer deux PNJ:
Un Capitaine Amnien "#BCapt" en Ar1000 Quartier du Gouvernement et son Aide de camp "#BAide" en Ar1002 à l'entrée du bâtiment du conseil des six.

Le Capitaine vous propose de vous engager si vous acceptez il rejoint le groupe et propose de passer prendre son Aide de Camp.

Quand on va parler à l'aide de Camp avec le Capitaine dans le groupe un dialogue à trois (Aide de Camp-CHARNAME-Capitaine) spécifique à cette situation se déclenche (il a pour but l'intégration de l'Aide de camp dans le groupe).

AU début je pensais utiliser des EXTERN pour faire intervenir le Capitaine mais celà ne semble pas fonctionner, du au fait qu'il soit dans le groupe peut être?
La conversation avec l'Aide de camp se déclenche mais venu le tour du Capitaine donc de l'EXTERN: plus rien.

Ensuite je me suis dit que j'allais utiliser des CHAIN pour le faire intervenir comme il fait parti du groupe, mais l'Aide de Camp ne fait pas encore partie du groupe donc je sais pas si c'est correct non plus.

Dans le fichier #BAide.D le # ne passe pas:
== #BCapt IF ~InParty("#BCapt")~ THEN @16
et donc impossible de compiler.

Aussi les textes des APPEND et des CHAIN doivent se trouver dans le fichier .tra du perso qui initie la conversation ou dans les Fichiers .tra respectif des perso qui "parlent"?

BEGIN ~#BAide~

IF ~Global("#BCapitaine","GLOBAL",1)~ THEN BEGIN strda
SAY @6000
IF ~~ THEN EXIT
END

IF ~Global("#BCapitaine","GLOBAL",2)~ THEN BEGIN strdb
SAY @6001
IF ~~ THEN EXIT
END

IF ~Global("#BCapitaine","GLOBAL",4)~ THEN BEGIN intro
SAY @13
IF ~~ THEN REPLY @14 GOTO presente
END

IF ~~ THEN BEGIN peurderien
SAY @19
IF ~~ THEN REPLY @20 GOTO tactic
END

IF ~~ THEN BEGIN tactic
SAY @21
IF ~~ THEN REPLY @22 GOTO academie
END

IF ~~ THEN BEGIN fin
SAY @26
IF ~~ THEN REPLY @27 DO ~SetGlobal("#BCapitaine","GLOBAL",5)~ DO ~JoinParty()~ EXIT
END

CHAIN
IF ~~ THEN ~#BAide~ presente
@15
== #BCapt IF ~InParty("#BCapt")~ THEN @16
== MinscJ IF ~InParty("Minsc")~ THEN @17
END IF ~~ THEN REPLY @18 GOTO peurderien

CHAIN
IF ~~ THEN ~#BAide~ academie
@23
== #BCapt IF ~InParty("#BCapt")~ THEN @24
END IF ~~ THEN REPLY @25 GOTO fin


J'ai Changer le nom du fichier #BCapt en B#Capt et le dialogue fonctionne sauf que je n'ai pas les interventions du Capitaine, celle de Minsc de l'ai par contre ...


Dernière édition par Rigel 1er le Jeu 9 Oct 2008 - 23:12, édité 2 fois
Revenir en haut Aller en bas
Pépé Malin
Pépé Pizza
Pépé Pizza
Pépé Malin


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

EXTERN OU CHAIN ? selon les differents cas! Empty
MessageSujet: Re: EXTERN OU CHAIN ? selon les differents cas!   EXTERN OU CHAIN ? selon les differents cas! Icon_minitime1Lun 25 Aoû 2008 - 20:04

En fait ton problème vient juste du fait que pour les personnages créés par le mod (et qui ne sont a fortiori pas dans le jeu de base), il faut mettre des guillemets "" autour du nom du personnage en question.

Ici ça donnera par exemple :

CHAIN
IF ~~ THEN ~#BAide~ presente
@15
== "#BCapt" IF ~InParty("#BCapt")~ THEN @16
== MinscJ IF ~InParty("Minsc")~ THEN @17
END IF ~~ THEN REPLY @18 GOTO peurderien

Ceci devrait régler ton problème.
Tu peux donc repasser le nom de la créature et des fichiers dialogues de cette créature en #BCapt.
Je vais rajouter une note à ce sujet dans le tutorial correspondant.

Concernant l'usage des APPEND et CHAIN, les deux peuvent convenir pour tous les dialogues à 3 personnages ou plus.
Classiquement, on utilisera l'APPEND quand seulement un personnage vient se greffer au dialogue (donc 3 personnages en tout) car ça devient compliqué d'utiliser l'APPEND quand il ya au moins 4 personnages même si ça reste possible.
Le CHAIN sera beaucoup plus pratique pour 4 personnages et plus car il passera d'une ligne à l'autre et sautera les lignes des personnages qui ne sont pas dans le groupe. Mais on peut aussi l'utiliser quand il n'y a que 3 personnages si l'échange est particulièrement long et barbant à faire en APPEND.

Petit exemple avec notre chère amie Bella Jansen :

Voici les lignes de texte suivantes dans le #TBella.tra :

@1 = ~<CHARNAME>, t'as déjà eu une petite amie ?~ // Bella
@1000 = ~Heu c'est un peu indiscret comme question...~ // Charname
@2 = ~Ca ne répond pas à la question...~ // Bella
@3 = ~Mais tu vas lui foutre la paix oui ?~ // Jaheira
@4 = ~Ho, Bouh me souffle que <CHARNAME> appréciait beaucoup Dynaheir à l'époque...~ // Minsc
@4000 = ~Non mais c'est bon, je n'ai pas envie d'en parler !~ //Charname
@5 = ~Ok, je me dois de tirer les conclusions qui s'imposent alors...~

Dans le #TBella.d ce dialogue sera codé comme suit :

BEGIN ~#TBella~ // en supposant que ce soit le début du .d bien sûr.

IF ~~ THEN BEGIN PetiteAmie
SAY @1
IF ~~ THEN REPLY @1000 GOTO Remarques
END

CHAIN
IF ~~ THEN ~#TBella~ Remarques
@2
== JaheiraJ IF ~InParty("Jaheira")~ THEN @3
== MinscJ IF ~InParty("Minsc")~ THEN @4
END IF ~~ THEN REPLY @4000 GOTO Conclusion

IF ~~ THEN BEGIN Conclusion
SAY @5 THEN EXIT
END

Si on analyse la CHAIN on constate que pour les lignes de Jaheira et de Minsc, on pose comme condition qu'ils soient dans le groupe.
En fait la CHAIN fait deux actions : pour chaque ligne il vérifie si la condition est vérifiée ou pas : si elle est vérifiée, elle balance la ligne et passe à la suite, si la condition est pas vérifiée, elle saute la ligne et passe à la ligne suivante de façon automatique.
C'est un gain de temps assez énorme par rapport à si on devait coder la même chose avec des APPEND.

Essayons justement Wink

Voici ce que donnerait le #TBella.d avec des APPEND pour ce même dialogue :

BEGIN ~#TBella~

IF ~~ THEN BEGIN PetiteAmie
SAY @1
IF ~~ THEN REPLY @1000 GOTO Remarques
END

IF ~~ THEN BEGIN Remarques
SAY @2
IF ~InParty("Jaheira")~ THEN EXTERN ~JaheiraJ~ RemarqueJaheira1
IF ~InParty("Minsc")
!InParty("Jaheira")~ THEN EXTERN ~MinscJ~ RemarqueMinsc1
IF ~!InParty("Minsc")
!InParty("Jaheira")~ THEN REPLY @4000 GOTO Conclusion
END

IF ~~ THEN BEGIN Conclusion
SAY @5 THEN EXIT
END

APPEND ~JaheiraJ~

IF ~~ THEN BEGIN RemarqueJaheira1
SAY @3
IF ~InParty("Minsc")~ THEN EXTERN ~MinscJ~ RemarqueMinsc1
IF ~!InParty("Minsc")~ THEN EXTERN ~#TBella~ Conclusion
END

END

APPEND ~MinscJ~

IF ~~ THEN BEGIN RemarqueMinsc1
SAY @4
IF ~~ THEN EXTERN ~#TBella~ Conclusion
END

END

Voilà, c'est un peu long mais c'est pour illustrer mon propos : le CHAIN permet d'automatiser un système de vérification qui est très chiant à mettre en place avec un APPEND quand il y a plus de 4 personnages qui discutent.

Sinon ça me permet de répondre à ta question : les lignes de texte doivent se trouver dans le .tra associé au .d dans lequel sont codés les CHAIN ou les APPEND.
Revenir en haut Aller en bas
Invité
Invité




EXTERN OU CHAIN ? selon les differents cas! Empty
MessageSujet: Re: EXTERN OU CHAIN ? selon les differents cas!   EXTERN OU CHAIN ? selon les differents cas! Icon_minitime1Lun 25 Aoû 2008 - 21:44

Ok c'est logique car Minsc interviens: son texte est dans le #BAide.tra et sa CHAIN dans le #BAide.d, OK!
Moi j'avais mis le texte du Captaine dans les deux .tra (dans le doute) mais bon c'est peut être pas à faire ...
Donc je vais bien mettre tout le texte de tout ce code dans le #BAide.d dans le #Baide.tra !!!

Je viens d'essayer en mettant tout comme il le faut et l'intervention du Capitaine fait crashé le dialogue de la même manière que ça ne passais pas avec l'Append. Donc il y a surement une condition à propos du Capitaine qui n'est pas vérifiée ...

2h plus tard: Alors là j'ai fait une tentative en Mettant Capt en nom de fichier et le dialogue au lieu de se bloquer à la première intervention supposée du Capitaine continue sans prendre en compte les CHAIN du Capitaine malheureusement...

Une fois de plus merci à toi phoeunix ! cheers


Dernière édition par Rigel 1er le Lun 25 Aoû 2008 - 23:33, édité 1 fois
Revenir en haut Aller en bas
Pépé Malin
Pépé Pizza
Pépé Pizza
Pépé Malin


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

EXTERN OU CHAIN ? selon les differents cas! Empty
MessageSujet: Re: EXTERN OU CHAIN ? selon les differents cas!   EXTERN OU CHAIN ? selon les differents cas! Icon_minitime1Lun 25 Aoû 2008 - 23:05

Tu as mis les guillemets ?
Et tu as bien conservé le nom #BCapt et non pas B#Capt ?
Revenir en haut Aller en bas
Pépé Malin
Pépé Pizza
Pépé Pizza
Pépé Malin


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

EXTERN OU CHAIN ? selon les differents cas! Empty
MessageSujet: Re: EXTERN OU CHAIN ? selon les differents cas!   EXTERN OU CHAIN ? selon les differents cas! Icon_minitime1Lun 25 Aoû 2008 - 23:12

Rigel 1er a écrit:


2h plus tard: Alors là j'ai fait une tentative en Mettant Capt en nom de fichier et le dialogue au lieu de se bloquer à la première intervention supposée du Capitaine continu sans prendre en compte les CHAIN du Capitaine...

Ok, donc en fait le problème doit effectivement venir du changement de nom.
Le problème c'est que si tu changes le nom de la créature ou de son .d ou de son .tra, c'est qu'il faut absolument faire la modification dans le setup.tp2 et SURTOUT dans le fichier .cre de la créature, il faut avec CreaMaker, changer le nom du fichier dialogue qui lui est associé dans l'onglet "Other Attributes" dans la case "Dialog File" (without DLG extension).
Sinon le fichier .d n'est plus associé à la créature en question.

Mais en fait, dans le cas présent, une telle modification de nom n'est pas utile car le problème venait du manque des guillemets.
Et surtout, dans un souci d'homogénéité avec les autres fichiers de ton mod, il est bon de maintenir le préfixe #B pour tous les fichiers de ton mod.
Revenir en haut Aller en bas
Invité
Invité




EXTERN OU CHAIN ? selon les differents cas! Empty
MessageSujet: Re: EXTERN OU CHAIN ? selon les differents cas!   EXTERN OU CHAIN ? selon les differents cas! Icon_minitime1Mar 26 Aoû 2008 - 10:51

OUi j'ai d'abord mis les guillemets et mis tout nikel et là ça plante lorsque viens le tour du Capitaine: rien.
J'ai aussi bien changé le nom de fichier partout dans le .tp2 et dans le fichier créature.
En fait avec les guillemets ça plante la conversation direct quand c'est le tour du Capitaine d'intervenir alors qu'avec un nom de fichier sans les guillemets et sans # je peux aller jusqu'au bout de la conversation mais sans les interventions du Capitaine qui ne sont pas prisent en compte; pourtant le code est exactement le même si ce n'est le nom du fichier #BCapt que j'ai changer.
En plus je n'ai pas de condition à vérifier le dialogue démarre bien, donc je vois pas pourquoi ça marche pas...peut être la Capitaine n'est pas considéré comme faisant partie du groupe ?
Revenir en haut Aller en bas
Pépé Malin
Pépé Pizza
Pépé Pizza
Pépé Malin


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

EXTERN OU CHAIN ? selon les differents cas! Empty
MessageSujet: Re: EXTERN OU CHAIN ? selon les differents cas!   EXTERN OU CHAIN ? selon les differents cas! Icon_minitime1Mer 27 Aoû 2008 - 9:16

Hmmm je pense avoir trouvé le problème.

Etant donné que le capitaine est dans le groupe, toutes ses interventions dans les dialogues en tant que membre du groupe doivent se faire en tant que #BCaptJ !

Ce qui donnera par exemple :

== "#BCaptJ" IF ~InParty("#BCapt")~ THEN @16

De même, pour les dialogues qui seront initiés par lui en tant que membre du groupe, il faudra les coder dans le fichier #BCaptJ.d.

Pour que tout colle et que l'installeur fasse le lien entre tous les fichiers .d concernant le capitaine, il faut ajouter tout en bas de ton setup.tp2 les lignes suivantes :

APPEND ~pdialog.2da~
~#BCapt #BCaptP #BCaptJ #BCaptD~
UNLESS ~#BCapt~
UNLESS ~25POST~

APPEND ~pdialog.2da~
~#BCapt #BCaptP #BCaptJ #BCaptD #BCapt25P #BCapt25J #BCapt25D #BCapt25~
UNLESS ~#BCapt~
IF ~25POST~

Voilà, avec ça, ça devrait marcher normalement.


Dernière édition par phoeunix le Mer 27 Aoû 2008 - 12:10, édité 1 fois
Revenir en haut Aller en bas
Invité
Invité




EXTERN OU CHAIN ? selon les differents cas! Empty
MessageSujet: Re: EXTERN OU CHAIN ? selon les differents cas!   EXTERN OU CHAIN ? selon les differents cas! Icon_minitime1Mer 27 Aoû 2008 - 10:11

Oui ça doit être ça j'avais remarquer aussi le J je l'avais ajouter mais sans les guillemets et sans rajouter le nouveau fichier dans le .tp2 je vais essayer et je vous tiens au courant.

J'obtiens une erreur:

ERROR locating ressource for 'CHAIN3'
Ressource [#BCAPTJ.DLG] not found in KEY file: [./chitin.key]
ERROR preprocessing APPEND_EARLY [Capt/Dialogues/#BAide.d]: Failure<"ressource[#BCAPTJ.DLG] not found for 'CHAIN3'">
Stopping installation because of error.

Ensuite j'ai ajouté, en copiant le Tutorial de Rimbaud:

APPEND ~interdia.2da~
~#BCapt #SBBCapt #SBBCapt25~
UNLESS ~#BCapt~

Mais j'ai toujours le même message d'erreur au final lors de l'installation...

Ensuite j'ai créer des fichiers vides #BCaptJ.d .tra et .baf et les ai bien inscris dans le .tp2

Est-ce qu'il faut aussi créer des fichiers vides #BCaptJ.d .tra et .baf ?

Malgré mes différents essais j'ai toujours le même message d'erreur bounce


Dernière édition par Rigel 1er le Jeu 9 Oct 2008 - 23:13, édité 1 fois
Revenir en haut Aller en bas
Invité
Invité




EXTERN OU CHAIN ? selon les differents cas! Empty
MessageSujet: Re: EXTERN OU CHAIN ? selon les differents cas!   EXTERN OU CHAIN ? selon les differents cas! Icon_minitime1Mer 8 Oct 2008 - 21:27

SALUT j'ai tout simplement oublié d'écrire le code: BEGIN ~#BCaptJ~ dans le fichier qui ne contient rien #BCaptJ.d si ce n'est celà!!! C'etais le piège!!!
Revenir en haut Aller en bas
Contenu sponsorisé





EXTERN OU CHAIN ? selon les differents cas! Empty
MessageSujet: Re: EXTERN OU CHAIN ? selon les differents cas!   EXTERN OU CHAIN ? selon les differents cas! Icon_minitime1

Revenir en haut Aller en bas
 
EXTERN OU CHAIN ? selon les differents cas!
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Une CHAIN dans un dialogue [RESOLU]
» Comment et dans quel ordre placer les APPEND quand on fait plusieurs EXTERN ?
» CHAIN LABEL COMPILATION - premiers appels au secours

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
LEGENDES :: LE MONDE DU MODDING :: Maîtrise :: Apprentissage-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser