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] Le dialogue se lance sans distinction des variables de condition de lancement

Répondre
Avatar du membre
Grenouillebleue
Loup effrayant
Messages : 723
Enregistré le : sam. 27 sept. 2003, 22:58
Localisation : Paris
Contact :
Statut : Hors ligne

[DLG] Le dialogue se lance sans distinction des variables de condition de lancement

.

Message par Grenouillebleue »

Voilà le dernier problème que j'essaie de résoudre (et ça fait un bon moment en plus), donc je me tourne une dernière fois (qui est-ce que j'essaie de convaincre ? Vous me reverrez certainement avoir des emmerdes :rigoler: ) vers vous pour comprendre.

On rencontre ma PNJ chez Renal Bloodscalp. Tant qu'on n'a pas encore travaillé pour lui et tué Maevar, elle a un dialogue particulier. Une fois qu'on a tué Maevar, son dialogue change, et elle devient recrutable.

Je me suis donc dit: "bon sang mais c'est bien sûr, mon garçon (j'aime bien m'appeler mon garçon), tu vas créer une variable appelée RENAL, qui deviendra égale à 1 lorsque la mission sera terminée.

Donc si RENAL = 0 ==> Dialogue initial
si RENAL = 1 ==> Deuxième dialogue où on peut la recruter.

Là où ça se complique, c'est que visiblement ça ne marche pas. Lorsque je mets ces conditions, aucun dialogue n'est disponible et j'obtiens le message "Kim - n'a rien à vous dire".

Alors que lorsque j'enlève la condition (et que je la remplace par NumTimesTalkedTo(0)), tout marche comme sur des roulettes.

A quoi cela pourrait-il être dû, braves gens ?

Voici à quoi ressemble le début de mon fichier .d:

Code : Tout sélectionner

BEGIN J#Kim


[B](Normalement, là, ça devrait être le dialogue qu'elle sorte si on clique sur elle lorsque la mission n'est pas terminée)[/B]

IF ~Global(“Renal”,“GLOBAL”,0)~ THEN BEGIN kimstart
SAY ~I'm the best sword of this place, and no mistake. Angry Renal, and you won't live to regret it~
IF ~GENDER(“PC”,”Male”)~ THEN REPLY ~Don't make me laugh. You expect me to believe you know how to use a sword ? Go back to needleworking, lass~ GOTO kimstart1
IF ~~ THEN REPLY ~Shouldn't be too hard to be the best sword around here. Do you take pride in being the best out of the worst ?~ GOTO kimstart2
IF ~~ THEN REPLY ~Yeah ? Well, I think I could spank you one-handed~  GOTO kimstart3
IF ~~ THEN REPLY ~Uhhhh... right, whatever, girl~ GOTO kimstart4
IF ~~ THEN REPLY ~I guess I'll behave, THEN~  GOTO kimstart5
IF ~~ THEN REPLY ~Best sword ? Now that's exciting. How about a friendly duel ?~  GOTO kimstart6
IF ~GENDER(“PC”,”Male”)~ THEN REPLY ~A pretty face AND a skilled wrist ? I think I'm in love~  GOTO kimstart7
IF ~~ THEN REPLY ~And who would you be, miss ?~ GOTO kimstart8
IF ~~ THEN REPLY ~I won't let a serving girl threaten me like this. Draw your sword now, and die !~ GOTO kimstartEND
END

[B]Et là, les options de dialogue si jamais la mission est terminée[/B]

IF ~Global(“Renal”,“GLOBAL”,1)~ THEN BEGIN kimtake
SAY ~I hate to say it, but it seems you didn't blunder. Good job. Maevar won't be missed around there. I hate this kind of man with a passion~
IF ~GENDER (“PC”,”Male”)~ THEN REPLY ~It seems to me you have a problem with most men~ GOTO kimtake1
IF ~~ THEN REPLY ~That was nothing at all. He was just a coward~ GOTO kimtake2
IF ~~ THEN REPLY ~Justice always prevails in the END~ GOTO kimtake3
IF ~~ THEN REPLY ~I was thinking... I'm lacking a swordsman - or swordswoman in my party. Would you be interested ?~ GOTO kimtake4
IF ~~ THEN REPLY ~I was thinking... I'm lacking a thief in my party. Would you be interested ?~ GOTO kimtake5
IF ~GENDER(PC,Male)~ THEN REPLY ~I was thinking... I'm lacking good-looking girls in my party. Would you be interested ?~ GOTO kimtake6
IF ~~ THEN REPLY ~Now that Renal has no more use for me, how about we cross blades ?~ GOTO kimtake7
IF ~~ THEN REPLY ~I had a job to do. I did it. I got paid. That's the way of life~ GOTO kimtake2
IF ~~ THEN REPLY ~I wiped Maevar's guild out, and now is Renal's turn ! Shadow thieves shall die !~ GOTO kimtakeEND
END

Alors, euh... je ne vois vraiment pas :heu:
MOD KIM TERMINE
- Des centaines de dialogues et d'interactions
- De nombreuses quêtes
- De nouveaux objets magiques
- Une véritable romance

Roman d'Heroic Fantasy en feuilleton (un chapitre par jour)
Intro 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
Silk
Statut : Hors ligne
.

Message par Silk »

RENAL n'existe pas déjà ? :heu:
Lamnis Valnon
Statut : Hors ligne
.

Message par Lamnis Valnon »

Juste une question: ou est ton SetGlobal ?
Avatar du membre
Grenouillebleue
Loup effrayant
Messages : 723
Enregistré le : sam. 27 sept. 2003, 22:58
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Grenouillebleue »

Pour Silk
Peut-être que la variable existe déjà, mais j'ai essayé de changer en choisissant une variable nommée KIMRENAL (qui n'existe pas) et ca n'a rien changé...


Pour Lamnis
Pour l'instant, le setglobal n'est pas encore codé, mais je le mettrai dans le script de Renal, au moment où il donne la récompense aux joueurs
SETGLOBAL("KIMRENAL","GLOBAL",1)


PS: Est-ce que ça peut être dû à mon script, qui contient:

Code : Tout sélectionner

IF
	See([PC])
	NumTimesTalkedTo(0)
THEN
	RESPONSE #100
                Dialogue(Nearest([PC]))
END
MOD KIM TERMINE
- Des centaines de dialogues et d'interactions
- De nombreuses quêtes
- De nouveaux objets magiques
- Une véritable romance

Roman d'Heroic Fantasy en feuilleton (un chapitre par jour)
Intro 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
Silk
Statut : Hors ligne
.

Message par Silk »

a plus doublon :)

Sinon, si ça ne vient pas du nom de la variable, je ne sais pas.
Avatar du membre
Grenouillebleue
Loup effrayant
Messages : 723
Enregistré le : sam. 27 sept. 2003, 22:58
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Grenouillebleue »

De plus en plus bizarre...

Même si je mets la variable à la valeur nécessaire, il n'exécute pas le script. C'est quand même incroyable !

Je viens de tester sur un petit script.
Avec la console, je mets KimRenal à 1.
Je VERIFIE et ça me confirme bien que KimRenal est à 1.

Bon, le petit script fait (avec les begin etc, etc, appropriés):

Code : Tout sélectionner

IF ~Global(“KimRenal”,“GLOBAL”,1)~ THEN BEGIN kimtake
  SAY ~I hate to say it, but it seems you didn't blunder. Good job. Maevar won't be missed around there. I hate this kind of man with a passion~
  IF ~~ THEN REPLY ~That was nothing at all. He was just a coward~ EXIT
END

C'est pourtant pas compliqué, non ? POURCOAAAAAA CA NE MARCHE PAAAAS ?
MOD KIM TERMINE
- Des centaines de dialogues et d'interactions
- De nombreuses quêtes
- De nouveaux objets magiques
- Une véritable romance

Roman d'Heroic Fantasy en feuilleton (un chapitre par jour)
Intro 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
Silk
Statut : Hors ligne
.

Message par Silk »

Je ne suis pas assez habitué à WeiDu, mais je pense que tu as un problème de protocole... :heu:
Avatar du membre
Grenouillebleue
Loup effrayant
Messages : 723
Enregistré le : sam. 27 sept. 2003, 22:58
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Grenouillebleue »

de coa ? :8:
MOD KIM TERMINE
- Des centaines de dialogues et d'interactions
- De nombreuses quêtes
- De nouveaux objets magiques
- Une véritable romance

Roman d'Heroic Fantasy en feuilleton (un chapitre par jour)
Intro 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
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 »

Je ne sais pas ce que dit le didacticiel, mais il me semble que l'ordre des "états" du dialogue peut avoir une importance (un "état" est un point d'entrée de dialogue). Je crois qu'on met généralement au début ceux qui ont le plus de conditions et qu'on met à la fin ce qui en ont le moins. Souvent le dernier utilise une condition du genre True() qui est donc toujours vrai afin qu'il y ait toujours au moins une condition de vérifiée et que le personnage ait donc quelque chose à dire. C'est peut-être ce qui te manque.
D'autre part, je crois qu'on s'arrange pour l'état où on teste NumTimesTalkedTo() = 0 soit en premier dans l'ordre d'évaluation pour être certain que c'est bien celui-là qui apparaîtra lors de la première conversation, et non pas, comme tu l'as fait dans ton exemple, un test sur la variable Renal (ou KimRenal).
Je ne sais pas comment on code cet ordre dans le fichier .d, j'ai lu ce genre de chose dans la description du format du fichier dlg sur le site IESDP ou bien dans un tutorial de TeamBG sur les dialogues.

Pour ton problème de variable, peux-tu indiquer comment tu fixes la variable à 1 ? Je veux dire qu'il est facile de se tromper de lettre (majuscule ou minuscule, je crois que c'est important de les respecter) et qu'il faut bien toujours utiliser le même deuxième paramètre ("GLOBAL", "LOCAL" ou "ARxxxx") entre l'endroit où tu fixes la variable et l'endroit où tu la testes.
Quand tu dis que ça ne marche, est-ce que ça veut dire qu'il affiche que ton perso n'a rien à dire ? Est-ce que ce que tu as montré est dans le cas du test sur KimRenal le seul contenu du fichier .d, ou y-a-t-il d'autres dialogues ?
Essaie de réduire ton dialogue au minimum (un seul échange). Tant que ça ne marche pas, inutile d'en ajouter d'autres. Tu pourras toujours le faire après dès que tu auras résolu ce premier problème de faire parler le personnage.
Quand tu rencontres des problèmes, essaie toujours de réduire la complexité quitte à ne garder qu'un squelette afin de mieux pouvoir isoler la cause. C'est une règle générale très utile en programmation. Dans ton cas, prends le dialogue, les scripts, ..., les plus simples possibles (un seul échange). Ensuite, quand le truc simple fonctionne, on peut augmenter la complexité, mais toujours progressivement afin de mieux déterminer à partir de quel moment un problème apparaît.
Bon courage.
:!: Peu disponible
Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !
Répondre

Retourner vers « Dialogues »

Qui est en ligne

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