Page 1 sur 1

[DLG] Ajouter une interjection à la fin d'un bloc d'un dialogue existant

Posté : lun. 24 oct. 2005, 09:58
par Shinook
J'ai plus ou moins lu le tutorial de Blue sur les banters, et je ne pense pas qu'il y ait une réponse à ma question. Si je veux par exemple ajouter juste une petite intervention à la fin d'un dialogue existant ( par exemple juste avant le combat final contre Irenicus, chaque PNJ a sa petite phrase, et j'aimerais en rajouter une pour quelqu'un d'autre ), comment dois-je faire ?

Posté : lun. 24 oct. 2005, 10:20
par Galathée
Ce n'est certainement pas la jolie réponse que tu attendais :notme: mais si tu es pressé, je peux toujours te dire que chez Keto, ça ressemble à ça:

Code : Tout sélectionner

EXTEND_BOTTOM PLAYER1 33
IF ~InParty("Keto") !Dead("Keto")
Global("PGKetoKnowsHistory","GLOBAL",1)
Global("PGKetoDidTOLThing","GLOBAL",0)~ THEN DO ~SetGlobal("PGKetoDidTOLThing","GLOBAL",1)~ GOTO P133Keto
IF ~InParty("Keto") !Dead("Keto")
!Global("PGKetoKnowsHistory","GLOBAL",1)
Global("PGKetoDidTOLThing","GLOBAL",0)~ THEN DO ~SetGlobal("PGKetoDidTOLThing","GLOBAL",1)~ GOTO P133KetoNoID
END


APPEND PLAYER1
IF ~~ P133Keto
SAY @2327
++ @2328 EXTERN FWKETOJ tolstorylife2
++ @2329 EXTERN FWKETOJ tolnotcoward2
++ @2330 EXTERN FWKETOJ tolhandlethat2
++ @2331 EXTERN FWKETOJ tolknowid
END

IF ~~ P133KetoNoID
SAY @2332
++ @2328 EXTERN FWKETOJ tolstorylife
++ @2329 EXTERN FWKETOJ tolnotcoward
++ @2330 EXTERN FWKETOJ tolhandlethat
++ @2333 EXTERN FWKETOJ toldeathofall
END

END

APPEND FWKETOJ

IF ~~ tolknowid
SAY @2334 
IF ~~ GOTO tolend
END

IF ~~ tolstorylife2
SAY @2335 
IF ~~ GOTO tolend
END

IF ~~ tolnotcoward2
SAY @2336 
IF ~~ GOTO tolend
END

IF ~~ tolhandlethat2
SAY @2337 
IF ~~ GOTO tolend
END



IF ~~ tolstorylife
SAY @2335 
IF ~~ GOTO tolend
END

IF ~~ tolnotcoward
SAY @2338 
IF ~~ GOTO tolend
END

IF ~~ tolhandlethat
SAY @2339 
IF ~~ GOTO tolend
END

IF ~~ toldeathofall
SAY @2340 
IF ~~ GOTO tolend
END
END



CHAIN FWKETOJ tolend
@2341
= @2342
= @2343
== FWKETOJ IF ~Global("PGKetoKnowsHistory","GLOBAL",1)~ THEN @2344
== FWKETOJ IF ~!G("PGKetoYoshimoBetray",0)~ THEN @2345
= @2346
END
COPY_TRANS PLAYER1 33
Maintenant, bon amusement... ^^

EDIT: ah zut, ça c'est le dialogue de l'arbre, c'est pas ça que tu voulais... Enfin, cela dit, souvent, en regardant dans les scripts des autres persos, on trouve ce qu'on cherche ?

Posté : mar. 25 oct. 2005, 17:52
par Shinook
Ben, je sais pas si c'est ça, et je risque pas de trouver, vu que je ne sais pas quelle forme ça doit prendre :notme: .

Posté : mar. 25 oct. 2005, 21:17
par Isaya
Comme bien souvent :notme2: , la réponse est dans la documentation !
Jette un coup d'oeil à la doc Weidu (pourquoi chercher ailleurs ? :p ), dans la partie "Tutorials", plus particulièrement celle concernant COPY_TRANS. Le numéro d'état de dialogue 25 correspond au dialogue particulier indiqué dans le tutorial (les enfers, si j'ai bien lu). Il existe d'autres numéros d'états particuliers pour le dialogue de l'arbre de vie et peut-être d'autres encore. Pour plus de précisions, tu peux consulter un autre mod de PNJ car ces états sont normalement référencés dans les fichiers D avec le numéro lui-même au lieu d'un nom.
Tu peux aussi trouver ce numéro en cherchant dans le dialogue d'un PNJ original pour savoir quel est le numéro pour l'intervention en question.

Posté : ven. 17 févr. 2006, 16:11
par Shinook
Bon, pour ça, c'est régler et compris, merci à vous deux ;) ( un peu en retard d'ailleurs ). Par contre, j'aurais une autre question. Les fonctions COPY_TRANS, INTERJECT_COPY_TRANS1 et 2, EXTEND_BOTTOM marchent seulement, me semble-t-il, pour un PNJ "dans" le groupe. Or, je voudrais ajouter Flora à côté des 3 dryades dans le Donjon d'Irenicus ( ça c'est fait ), et rajouter des interjections/interventions aux différents dialogues des dryades, qui se passent constamment la parole ( les fichiers IDRYAD1, IDRYAD2 et IDRYAD3 sont les .dlg de chacune des dryades ), AVANT qu'elle n'entre dans le groupe. Je suppose que modifier directement les fichiers ne seraient pas un bon moyen. Comment faire, donc ?

Posté : sam. 18 févr. 2006, 11:10
par Shinook
Ca y est, j'ai trouvé :) . Déjà, j'ai utilisé la fonction INTERJECT ( je n'ai pas retesté les autres. cf le tutorial de WeiDU.org ). Ensuite, j'ai intégré tous les blocs qui devaient intervenir dans le discussion des Dryades dans le fichier .dlg indiqué dans le .cre de Flora ( ici, Flora.dlg ). Ca donne quelque chose comme :

Code : Tout sélectionner

INTERJECT IDRYAD2 0 florainterject1
== FLORA IF ~~ THEN [color=red]// FLORA correspond au fichier qui va permettre d'identifier qui parle[/color]
~Blah blah blah.~
END DRYAD3 0 [color=red]// Le fait d'indiquer DRYAD3 permet de faire le lien avec la suite du dialogue, sous forme d'un dialogue à plusieurs.[/color]


Cependant, il demeure un autre problème. Il n'y a pas de problème tant que l'interjection intervient entre deux autre interventions des Dryades, mais lorsque l'interjection de Flora doit aboutir ensuite sur un changement de variable, ou proposer des interventions du PJ, comment faire ? Cette forme du bloc INTERJECT ne m'est pas familière, et je ne sais pas si je peux rajouter des choses comme DO ou REPLY...

Posté : sam. 18 févr. 2006, 12:34
par Isaya
INTERJECT sert à ajouter des liens entre les dialogues de différents personnages. Si tu veux retomber sur un dialogue classique (plus particulièrement une intervention du personnage principal), il se peut que tu sois obligé de revenir à la solution indiquée dans le tutorial sur Interject dans la doc Weidu, celle qui montre comment il fallait procéder avant l'apparition d'Interject. Comme elle est basée sur une construction classique de message, tu peux y insérer un échange classique. Depuis l'exemple, il te suffit alors de remplacer la partie "IF ~~ THEN EXTERN SAHPR2 10" par les REPLY que tu veux proposer.

Par ailleurs, si on se réfère à la description formelle d'INTERJECT, il semble que tu puisses utiliser le END pour indiquer un lien vers un état particulier d'un dialogue. Tu peux donc indiquer ici celui dans lequel tu veux permettre au personnage principal d'intervenir.

Posté : dim. 19 févr. 2006, 09:02
par Shinook
Ok, parfait, ça marche en utilisant la forme plus classique de EXTEND_BOTTOM... merci ;) . Et moi, j'avance bien avec Flora, sauf que j'arrête pas de tout recommencer sans arrêt :notme2: ...