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é...

[DLG] Comment mettre en oeuvre un dialogue à 7 ?

Répondre
Avatar du membre
Nightmare
Squelette
Messages : 127
Enregistré le : mar. 01 janv. 2008, 17:56
Statut : Hors ligne

[DLG] Comment mettre en oeuvre un dialogue à 7 ?

.

Message par Nightmare »

Bonjour, ça faisait longtemps ^^ !
Voilà je me demandais si le jeu était capable de gérer autant de personne à la fois pour un dialogue et surtout comment cela se traduit-il dans le .d ?
Dois-je insérer un APPEND pour chaque personnage ? Ou seulement pour le premier qui intervient dans le dialogue.

Exemple:
Dans le .tra:
J: "" (initie le dialogue à l'arrivée de charname)
S: "" (premier intervenant)
A: "" (deuxième)
P: "" (troisième)
S: "" (premier)

Dans le .d: (de J)

Code : Tout sélectionner

IF ~~ THEN BEGIN Discussion
SAY @0
IF ~~ THEN EXTERN ~#BS~ 00
END
 
IF ~~ THEN BEGIN 01
SAY @2
IF ~~ THEN EXTERN ~#BP~ 02
END
 
APPEND ~#BS~
IF ~~ THEN BEGIN 00
SAY @1
IF ~~ THEN EXTERN ~#BA~ 01
END
 
APPEND ~#BP~
SAY @3 etc...
Faut-il uniquement indiquer le premier intervenant dans le APPEND ou tous? Ou je me trompe complètement lol ^^ ?
Bonne soirée !
[SIGPIC][/SIGPIC]
Avatar du membre
Vel Cheran
Aventurier
Momie majeure
Messages : 3218
Enregistré le : sam. 08 déc. 2007, 18:14
Statut : Hors ligne
.

Message par Vel Cheran »

Si beaucoup de personnages disent à la suite une réplique, utiliser un "CHAIN" te simplifiera grandement la tâche.
Le CHAIN s'utilise pour des PNJ intervenant dans un dialogue. Suivant ton exemple, tu auras donc à la fin du fichier :

Code : Tout sélectionner

CHAIN
IF ~~ THEN ~J~ Exemple
@1
== S IF ~~ THEN @2
== A IF ~~ THEN @3
== P IF ~~ THEN @4
== S IF ~~ THEN @5
END IF ~~ THEN GOTO Suite
C'est assez pratique si tu veux faire parler des PNJ du groupe, car tu peux alors préciser :
== S IF ~InParty("S")~ THEN @3 pour vérifier si le PNJ S est bien dans ton équipe.

Par contre, s'il y a des personnages externes à ton groupe, il te faudra obligatoirement utiliser plusieurs APPEND. C'est pas tellement plus compliqué, il faut juste penser à les placer en fin de fichier (juste après les CHAIN). Là, tu es obligé par contre d'en faire un par personnage.
En RP, je joue Séraphine Pierrejoyeuse, dont la couleur est : #D0C07A ainsi que Frère Jordin : #FF9966
Et, il y a longtemps, j'incarnais Vel'Cheran.
Venez lire nos aventures dans l'univers d'Ambre ! :dance4:
Avatar du membre
Akadis
Adepte de Grondemarteau
Araignée éclipsante
Messages : 1224
Enregistré le : lun. 28 avr. 2003, 10:58
Localisation : Bordeaux
Contact :
Statut : Hors ligne
.

Message par Akadis »

Tu as la fonction CHAIN qui sert à ça, dans ton cas ça donnerait dans le #BJ.d
CHAIN
IF ~~ THEN #BJ 0
@0
== #BS @1
==# BA @2
== #BP @3
== #BS @4
END IF ~~ THEN EXIT
Seule précaution à prendre, il faut que les fichiers
#BS.dlg, #BA.dlg, #BP.dlg, #BS.dlg existent déjà. Si certains (tous) tes personnages A, S, P n'ont de dialogue propre il suffit de compiler des fichiers .d "vides"

Le #BS.d serait
BEGIN ~#BS~
Le #BA.d
BEGIN ~#BA~
etc.

Si tu as d'autre dialogue dans ton #BJ.d, le CHAIN doit être placé après les dialogues de ton personnage J et avant d'éventuel APPEND


--------------------------------------------------
EDIT
Grillé par Vel Cheran sauf que les CHAIN peuvent marcher avec TOUS les personnages (à condition qu'ils aient un fichier dlg associé) mêmes de personnages hors du groupe qui sont des PNJs purs comme Ribald, Bernard ou Frikraag.
Par contre j'avais bien oublié de parler des personnes du groupes et du trigger InParty
Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un M. P
Responsable de la maintenance du mod
Kim
Avatar du membre
Nightmare
Squelette
Messages : 127
Enregistré le : mar. 01 janv. 2008, 17:56
Statut : Hors ligne
.

Message par Nightmare »

D'accord merci pour tout je vais de ce pas me mettre au travail!
[SIGPIC][/SIGPIC]
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 »

En complément de ce qu'on dit mes camarades, j'ajouterai que InParty est nettement insuffisant pour s'assurer que le personnage est en mesure de parler. Il faut le compléter d'autres triggers pour éviter de faire parler un personnage endormi ou paralysé, par exemple.
A titre d'exemple, le BG1 NPC utilise le test suivant pour vérifier que Garrick peut se mêler à une discussion entre Imoen et Xan :
~InParty("garrick") InMyArea("garrick") !StateCheck("garrick",CD_STATE_NOTVALID)~
De mémoire, le CD_STATE_NOTVALID n'existe pas à l'origine. Il y a des chances que sa définition fasse partie des éléments du pack du moddeur heureux du BG2 Fixpack. Le mieux est de copier dans ton mod le bout de code qui l'ajoute dans le jeu s'il n'existe pas déjà.
Exemple de code, toujours issu du BG1 NPC, pour l'ajouter :
/* STATE.IDS patching to ToB - thanks, Cam, if you read it */
/* adds custom IsValidForPartyDialogue state */
APPEND ~STATE.IDS~ ~0x80101FEF CD_STATE_NOTVALID~ UNLESS ~CD_STATE_NOTVALID~
Bonne continuation.

PS : WeiDU dispose de tous les éléments nécessaires pour ajouter des répliques dans plein de dialogues sans avoir recours aux EXTERN et de façon beaucoup plus simples. En plus les EXTERN ne permettent pas de gérer correctement certaines choses pour lesquelles des commandes telles que I_C_T ont été créées. Pensez-y !
Avatar du membre
phoeunix
Goule
Messages : 471
Enregistré le : mer. 13 févr. 2008, 13:00
Localisation : Nice
Statut : Hors ligne
.

Message par phoeunix »

Effectivement il est dans le pack du moddeur heureux mais ça ne mange pas de pain de l'ajouter à l'install, surtout si on veut avoir un mod indépendant de ce pack. (qui apparemment fait polémique chez les anglosaxons)
Répondre

Retourner vers « Dialogues »

Qui est en ligne

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