Affichage des résultats 1 à 9 sur 9

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

  1. #1
    Date d'inscription
    September 2003
    Localisation
    Paris
    Messages
    723

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

    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:
    BEGIN J#Kim
    
    
    (Normalement, là, ça devrait être le dialogue qu'elle sorte si on clique sur elle lorsque la mission n'est pas terminée)
    
    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
    
    Et là, les options de dialogue si jamais la mission est terminée
    
    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:
    Dernière modification par Freddy_Gwendo ; 01/04/2016 à 22h26. Motif: Modification du titre de la discussion et mise en page
    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

  2. #2
    Silk Invités
    RENAL n'existe pas déjà ? :heu:

  3. #3
    Lamnis Valnon Invités
    Juste une question: ou est ton SetGlobal ?

  4. #4
    Date d'inscription
    September 2003
    Localisation
    Paris
    Messages
    723
    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:
    IF
    	See([PC])
    	NumTimesTalkedTo(0)
    THEN
    	RESPONSE #100
                    Dialogue(Nearest([PC]))
    END
    Dernière modification par Freddy_Gwendo ; 01/04/2016 à 22h22.
    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

  5. #5
    Silk Invités
    a plus doublon

    Sinon, si ça ne vient pas du nom de la variable, je ne sais pas.

  6. #6
    Date d'inscription
    September 2003
    Localisation
    Paris
    Messages
    723
    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:
    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 ?
    Dernière modification par Freddy_Gwendo ; 01/04/2016 à 22h22.
    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

  7. #7
    Silk Invités
    Je ne suis pas assez habitué à WeiDu, mais je pense que tu as un problème de protocole... :heu:

  8. #8
    Date d'inscription
    September 2003
    Localisation
    Paris
    Messages
    723
    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

  9. #9
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 398
    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 !

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/07/2014, 00h18
  2. [DLG] Comment utiliser des variables dans un dialogue ?
    Par Cocrane dans le forum Dialogues
    Réponses: 4
    Dernier message: 12/08/2013, 20h41
  3. Réponses: 3
    Dernier message: 14/03/2013, 17h21
  4. [IMOEN] Lancement du mode cinématique sans raison
    Par Gojy dans le forum Compagnons d'Amn : Les modules dit "PNJ"
    Réponses: 2
    Dernier message: 16/06/2008, 09h16
  5. [BANTERS] Comment donner la priorité à un lancement de dialogue ?
    Par Grenouillebleue dans le forum Dialogues
    Réponses: 4
    Dernier message: 06/01/2004, 20h38

Les tags pour cette discussion

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  

1 2 3 4 5 6 7 8 9 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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239