Dialogues : changer la 1ère page selon la situation

Aides pour les développeurs de mods (scénarios)
Post Reply
User avatar
Louis91
Aware
Posts: 936
Joined: Wed Feb 20, 2002 1:00 am
Location: Chez moi dans l'Essonne

Dialogues : changer la 1ère page selon la situation

Post by Louis91 »

Un problème se dresse sur mon chemin dans la poursuite de mon mod.
J'aimerais savoir comment on fait pour changer la première page du dialogue avec un PNJ, selon la situation dans laquelle on est.
Je sais comment on rajoute des phrases pour le PJ selon la situation (en fonction des rumeurs, quêtes,etc), mais je voudrais pouvoir faire la même chose concernant le PNJ, ça doit être possible ?

Prenons un exemple, on parle à un bonhomme une première fois, ça commence par "Bonjour, qui êtes-vous ?" . Lors du dialogue, le joueur se présente, une quête lui est donnée, etc. J'aimerais alors que quand on retourne parler au PNJ, son dialogue ne soit plus "Bonjour, qui êtes-vous ?" , car ce serait un peu incohérent. J'aimerais par exemple le remplacer par "Re-bonjour @pcname@ avez vous parlé à Machin ?"; et ainsi de suite, en fonctions des rumeurs, quêtes, réputations, etc qui sont énumérées au fil du mod.

Mais ce ne serait pas juste histoire de changer La phrase du PNJ, mais comme créer une toute nouvelle page de dialogue, une nouvelle phrase du PNJ, accompagnée de nouvelles répliques possibles pour le PJ (histoire qu'on ne puisse pas lui redemander son nom alors qu'on lui a déjà parlé).

J'aimerais donc savoir comment on peut réussir à faire ça. Est-ce qu'il faut agir sur la première page de dialogue en mettant des alternatives selon la situation, ou créer une nouvelle page de dialogue réglée selon les critères ?

Avant j'avais trouvé un système D pour pas me casser la tête, je gardais la phrase originale du PNJ et je me contentais de rajouter de nouvelles répliques selon les situations, mais en y repensant, ça fait pas tellement réaliste dans certains cas.

Donc voilà, merci d'avance à ceux qui se pencheront sur le problème. :)

User avatar
Eoliad, Mage d'Haholith
Posts: 619
Joined: Tue Feb 08, 2005 4:59 pm
Location: Avignon

Post by Eoliad, Mage d'Haholith »

Voilà la solution :

1- Dans la parenthèse avant le renvoi à la ligne tu mets {lf1 0} pour la première rencontre donc : "Bonjour, qui êtes-vous ?" ou qqchose comme ça. Les "lf" sont en fait les locals flags, des sortes de tests pour le dialogue du personnage et ce dialogue seulement. Pour appliquer la condition dans tout le jeu on place "gf" les globals flags"(on peut utiliser jusqu'à 10 locals flags [1 à 10] par dialogue et 7 globals flags par module

2- Tu mets lf1 1 dans la dernière parenthèse de la ligne de dialogue. Ceci va placer les local flag 0 sur la position 1 (la phrase a été dite). La parenthèse où tu as mis le local flag 0 sur la position 0 (1er paragraphe) va tester à chaque fois si le local flag est sur 0 auquel cas l'option de dialogue s'affiche, sinon, l'option n'apparait pas. Le positionement du local flag sur 1 va donc faire disparaitre l'option "Bonjour, qui êtes-vous ?" du dialogue. En d'autres termes lorsque le perso va parler au npc il aura comme option "Bonjour, qui êtes-vous ?" puisque le local flag sera sur la position 0. Le fait de cliquer sur cette option mettra le local flag sur 1, ce qui rendra l'option indisponible par la suite puisque la parenthèse condition ne sera plus remplie.

3-Il faut prévoir une ligne avec "lf1 1" en condition si il n'y a que "Bonjour, qui êtes-vous ?" en option au début, sinon le dialogue buggue (pas d'otion de dialogue)

4- Attention aux erreurs de renvoi de ligne : une différente pour les conditions 0 et 1

5- Voici un exemple de dialogue avec les locals flags (extrait de mon module auquel tu m'as donné envie de continuer, merci)

{1}{Bonjour !}{Bonjour, cela me fait plaisir de vous voir !}{}{}{}{}
{2}{Qui êtes-vous ?}{}{5}{lf1 0}{10}{lf1 1}
{3}{Vous qui ?}{}{-4}{lf1 0}{10}{lf1 1}
{4}{Bonjour Jesrad}{}{5}{lf1 1}{30}{}
{5}{B'jour Jarre}{}{-4}{lf1 1}{30}{}

Le "qui êtes-vous" ne sera dit qu'une fois (local flag 1 passe de 0 (désactivé) à 1 (activé)
Puis lorsqu'on reparle au npc, on ne peut dire que "Bonjour Jesrad", ligne ayant pour condition "lf1 1"

J'espère que c'est à peu près clair, envoye-moi un mp en cas de problème...
"Noli me tangere"

User avatar
Louis91
Aware
Posts: 936
Joined: Wed Feb 20, 2002 1:00 am
Location: Chez moi dans l'Essonne

Post by Louis91 »

Arf je crois que tu as mal compris ma question ou alors je me suis mal exprimé :/

Là je pense que tu me parles surtout des options possibles parmi les répliques du PJ à choisir non ? Genre si on parle à quelqu'un une deuxième fois, on ne lui dira plus "Bonjour qui êtes vous" mais "bonjour Machin". C'est ça que tu m'as expliqué non ?
Sinon j'ai vraiment des problèmes de compréhension :p

Si c'est ça, je sais déjà le faire. Moi je voulais non pas modifier les dialogues du PJ mais bel et bien ceux du PNJ pour que la première phrase qui s'affiche au dessus de leur tête dès qu'on leur parle, change selon la situation dans laquelle on est (rumeurs, quêtes, réputations, etc).
Après on peut effectivement jouer avec les "si rumeurs n°tant est dite, ajouter telle réplique possible pour le PJ, retirer telle réplique pour le PJ", etc. Tout ce qui concerne le PJ je le sais déjà, mais par contre j'en sais beaucoup moins à propos des conditions de dialogues des PNJ, pour faire simple.

triblonto
Chasseur de ténèbres
Chasseur de ténèbres
Posts: 1029
Joined: Tue Jan 08, 2002 1:00 am
Location: Bordeaux
Contact:

Post by triblonto »

Désolé. Pas compris.
http://arcanumlab.free.fr
Aides à la création de modules

User avatar
Eoliad, Mage d'Haholith
Posts: 619
Joined: Tue Feb 08, 2005 4:59 pm
Location: Avignon

Post by Eoliad, Mage d'Haholith »

Ah, en fait essaye les lf pour le npc mais je crois que ça marche pas








20 minutes à taper les lf pour rien :x
"Noli me tangere"

User avatar
Louis91
Aware
Posts: 936
Joined: Wed Feb 20, 2002 1:00 am
Location: Chez moi dans l'Essonne

Post by Louis91 »

Arf, Eoliad.

Pour Triblonto je vais quand même reformuler le problème, on ne sait jamais peut être que tu connais la solution, parce que dans le jeu Arcanum, il sont arrivés à le faire pourtant.

Je vais donc essayer de faire le plus compréhensible possible.

J'aimerais pouvoir obtenir ceci:
1er dialogue avec le NPC
NPC : Bonjour qui êtes vous ?
PC : - Je suis @pcname@
- Ca ne vous regarde pas
- Je dois partir [etc]
[...]
NPC : j'aimerais que vous alliez parler à untel
PC : - d'accord => Quête enclenchée

2e dialogue avec le NPC après enclenchement de la quête
NPC : Bonjour @pcname@ avez-vous parlé à untel ?
PC : - oui
- non [... suite du dialogue]


J'aimerais modifier ce que dit le NPC au Début du dialogue, selon l'état d'une quête ou d'une rumeur.

Car pour le moment j'ai ça et je suis obligé de m'en contenter :
1er dialogue avec le NPC
NPC : Bonjour qui êtes vous ?
PC : - Je suis @pcname@
- Ca ne vous regarde pas
- Je dois partir [etc]
[...]
NPC : j'aimerais que vous alliez parler à untel
PC : - d'accord => Quête enclenchée

2e dialogue avec le NPC après enclenchement de la quête
NPC : Bonjour qui êtes vous ?
PC : - Oui je suis allé parlé à untel
- Non je n'y suis pas allé. [...]


Vous constatez donc que dans le 2e cas, la phrase d'accueil du NPC reste identique à lorsque la quête n'était pas enclenchée, et dans ce cas, on peut quand même dire que c'est franchement pas réaliste vous trouvez pas ? Car ça donne l'impression qu'on ne lui a pas parlé avant; alors qu'il vient de nous donner une quête quand même.

Et c'est ça précisément que je veux modifier ! la première phrase que prononce le NPC quand on clique dessus, selon l'état d'une quête ou d'une rumeur !

Avez-vous compris ? :D

User avatar
Louis91
Aware
Posts: 936
Joined: Wed Feb 20, 2002 1:00 am
Location: Chez moi dans l'Essonne

Post by Louis91 »

Bon ben en fait ne vous cassez plus la tête, Roloune a trouvé la solution.
Merci :o

triblonto
Chasseur de ténèbres
Chasseur de ténèbres
Posts: 1029
Joined: Tue Jan 08, 2002 1:00 am
Location: Bordeaux
Contact:

Post by triblonto »

Au lieu de jouer avec les local flag, utilise la ligne de commande
if quest is in state x then dialog 1 else dialog 30.

Tu peux aussi activer un local flag quand la quête est enclenchée et utiliser alors la ligne de script
if local flag 1 is set then dialog 30 else dialog 1
http://arcanumlab.free.fr
Aides à la création de modules

User avatar
Louis91
Aware
Posts: 936
Joined: Wed Feb 20, 2002 1:00 am
Location: Chez moi dans l'Essonne

Post by Louis91 »

Merci pour la p'tite solution alternative Triblonto, c'est vrai que c'est aussi pratique.
J'utilisais la 2e que tu donnes, pour le moment.

Post Reply