Affichage des résultats 1 à 5 sur 5

Discussion: [BANTERS] Comment donner la priorité à un lancement de dialogue ?

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

    [BANTERS] Comment donner la priorité à un lancement de dialogue ?

    Pour briser un peu la monotonie, la première phrase de certains banters n'appartient pas à Kim, mais à quelqu'un d'autre. Par exemple, Cernd qui dit : "Oh, tu as de beaux seins" (Je simplifie).

    Or, j'ai pas mal de soucis pour coder ça. J'y étais allé avec ce code-là:


    Code:
    IF
      Global("KIMBANTER","GLOBAL",1) // Si c'est le moment de discuter
      InParty("Kim") // que Kim est là
      InParty("Cernd") // et Cernd aussi
      See("Cernd")
      !Dead("Cernd")
      Global("CERNDKIM","GLOBAL",0) // Et qu'ils n'ont encore jamais discuté
    THEN
      RESPONSE #100
        SetGlobal("CERNDKIM","GLOBAL",1) 
        ActionOverride("CERND",StartDialog("BCERND","Kim")) // Alors on lance le dialogue 1
    END
    A côté, j'ai un APPEND à BCERND qui fait:

    Code:
    APPEND BCERND
    
    IF ~G("CerndKim",1)~ THEN BEGIN CerndKim1
      SAY ~ Oh, tu as de beaux seins.~
      IF ~~ THEN DO ~SG(KIMBANTER",0)~ EXTERN BKIM KimCernd1
    END
    Quand les deux personnages sont seuls dans le groupe, ça marche sans aucun problème. L'ennui, c'est quand il y a plus de monde: dans ce cas, et forcément, mon script enclenche un banter de Cernd qui n'est pas celui que je veux (puisqu'ils sont placés avant). Y aurait-il un moyen de faire que mon append se place au début, ou quelque chose comme ça ?
    Dernière modification par Freddy_Gwendo ; 01/04/2016 à 22h31. 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
    Date d'inscription
    September 2003
    Localisation
    Paris
    Messages
    723
    Ok, j'ai ma réponse, il faut que j'utilise les WEIGHT.
    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

  3. #3
    Date d'inscription
    October 2003
    Localisation
    Valenciennes
    Messages
    191
    Je suis en train de créer mon pnj, jusqu’à présent tout va bien mais alors arrivé au banter :sad: , elle ne démarre pas.

    J'ai regarder comment grenouille a fait pour kim (Et aussi dans les mods tashia et solaufein) mais rien a faire je pige pas.

    Je sais qu'il faut définir une variable pour que le dialogue se lance (j'ai essayé), mais ça marche pas. (J'ai fait des CTRL+I avec la console pour tester si quelqu’un connait un autre moyen qu'il le dise)

    Aussi a quoi serve les WEIGHT ?
    Dernière modification par Freddy_Gwendo ; 01/04/2016 à 22h43. Motif: Discussion fusionnée avec la précédente
    Venez visiter mon site http://membres.lycos.fr/nysi/

  4. #4
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 400
    Je n'ai pas trouvé Ctrl-I dans les références de la console. Quelle fonction cherches-tu ?

    Sinon, pour les dialogues, il faut bien comprendre comment ça marche. Un dialogue de PNJ, c'est un ensemble d'interactions. Une interaction est provoquée par des conditions. Les conditions s'appuient généralement sur des variables qui doivent avoir des valeurs précises pour qu'un ensemble de conditions soient vérifiées et que le dialogue débute (mais ça peut aussi être des trucs du genre être à l'extérieur ou en plein jour, ...).
    Quand un dialogue est initié, le jeu prend le fichier définissant le dialogue et le parcourt du début à la fin en cherchant le premier jeu de conditions vérifiées. Du coup, les premières interactions dans la liste ont la priorité si leurs conditions sont vérifiées. C'est là que la notion de WEIGHT peut intervenir. Quand tu ajoutes des interactions dans un dialogue, elles sont toujours à la fin. En donnant un "WEIGHT" approprié, tu peux modifier l'ordre d'évaluation des conditions et faire en sorte que les conditions d'interactions à la fin du fichier soient évaluées avant certaines placées avant elles.

    Dans le cas des banters, les conditions sont généralement vérifiées dans le script du personnage (par exemple Jaheira.bcs) susceptible d'initier le dialogue. Alors le script met à jour une variable spécifique utilisée dans un jeu de conditions du dialogue. Puis il provoque le début du dialogue. Comme la modification de la variable entraîne la vérification des conditions propres à une interaction, celle-ci va alors débuter.
    La modification de la variable dans le script lui permet aussi de s'assurer de ne pas réinitialiser de nouveau cette interaction.

    Exemple de morceau de script (de Jaheira) :

    Code:
    IF
      InParty("Aerie")
      See("Aerie")
      !Dead("Aerie") // Aerie
      !StateCheck("Aerie",STATE_SLEEPING)
      HPLT("Aerie",10)
      !HP("Aerie",1)
      CombatCounter(0)
      GlobalLT("JaheiraAerie","LOCALS",2)
      Global("AerieBelow10","LOCALS",0)
      InParty(Myself)
    THEN
      RESPONSE #100
        Interact("Aerie")
    END
    Si Aerie est gravement blessée et que le dialogue n'a jamais eu lieu (tests sur les variables JaheiraAerie et AerieBelow10), on lance une interaction avec Interact() en précisant "Aerie" pour indiquer avec qui. Le fait d'utiliser Interact fait que le jeu va chercher le dialogue d'interaction de Jaheira (BJAHEIR.DLG, voir INTERDIA.2DA) ou l'on trouve notamment une partie de ces conditions comme déclencheur d'une interaction.

    Code:
      InParty("Aerie")
      See("Aerie")
      HPLT("Aerie",10)
      Global("JaheiraAerie","LOCALS",1)
      Global("AerieBelow10","LOCALS",0)
    Le dialogue modifie alors les variables (dans la partie action du dialogue) pour éviter que le dialogue ne se produise à nouveau.

    Code:
        SetGlobal("JaheiraAerie","LOCALS",2)
        SetGlobal("AerieBelow10","LOCALS",1)
    Il y a d'autres façons de faire. Tu peux regarder les scripts des personnages de Bioware comme exemple (en complément des mods que tu as cités).
    Dernière modification par Freddy_Gwendo ; 01/04/2016 à 22h48.
    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 !

  5. #5
    Date d'inscription
    October 2003
    Localisation
    Valenciennes
    Messages
    191
    Mon probleme doit venir d'un manque de sript, ce soir je suis fatigué donc j'essayerai tout ça a tete reposée.
    Merci de ta reponse Isaya.

    Pour les CTRL-I c'est une commande (cheat) qui une fois activé permet de forcer les banter a se lancer.
    Venez visiter mon site http://membres.lycos.fr/nysi/

Discussions similaires

  1. Comment donner un cadeau à un compagnon
    Par Samy dans le forum Les Secrets de Dragon Age: Origins
    Réponses: 4
    Dernier message: 08/07/2014, 15h33
  2. Réponses: 4
    Dernier message: 02/07/2014, 00h18
  3. Réponses: 1
    Dernier message: 17/06/2008, 00h16
  4. Comment donner un dialogue à une créature
    Par Giga__Deathcool dans le forum NeverWinter Nights & NeverWinter Nights 2 : les modules
    Réponses: 16
    Dernier message: 19/01/2005, 01h02
  5. Réponses: 8
    Dernier message: 02/10/2003, 23h41

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