Affichage des résultats 1 à 12 sur 12

Discussion: [SCRIPT] Divers problèmes rencontrés en créant un script

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

    [SCRIPT] Divers problèmes rencontrés en créant un script

    Voilà un script créé pour un ennemi, qui est supposé faire trois choses:

    1. Transformer le gars en ennemi dès que son boss a fini son speech
    2. Le faire ignorer tous les summons pour se concentrer sur les joueurs
    3. Le faire boire une potion lorsqu'il tombe à moins de 50% de vie.

    Les points 1. et 2. marchent sans souci, mais j'ai du mal avec le 3e... j'ai beau essayer, ça ne correspond pas. Porque ?


    Code:
    // Passer ennemi
    
    IF
      G("barbefight",1)
      !Allegiance(Myself,ENEMY)
    THEN
      RESPONSE #100
        EquipMostDamagingMelee()
        Enemy()
        Continue()
    END
    
    
    // Boire potion
    
    IF
      !GlobalTimerNotExpired("time","LOCALS")
      HPPercentLT(Myself,50)
      HasItem("Potn52",Myself)
    THEN
      RESPONSE #100
        UseItem("Potn52",Myself)
        SetGlobalTimer("time","LOCALS",8)
        Continue ()
    END
    
    
    // Ignorer les summons
    
    IF
      !Gender(SixthNearestEnemyOf(Myself),SUMMONED)
      See(SixthNearestEnemyOf(Myself))
      False()
    THEN
      RESPONSE #100
    END
    
    IF
      !Gender(FifthNearestEnemyOf(Myself),SUMMONED)
      See(FifthNearestEnemyOf(Myself))
      False()
    THEN
      RESPONSE #100
    END
    
    IF
      !Gender(FourthNearestEnemyOf(Myself),SUMMONED)
      See(FourthNearestEnemyOf(Myself))
      False()
    THEN
      RESPONSE #100
    END
    
    IF
      !Gender(ThirdNearestEnemyOf(Myself),SUMMONED)
      See(ThirdNearestEnemyOf(Myself))
      False()
    THEN
      RESPONSE #100
    END
    
    IF
      !Gender(SecondNearestEnemyOf(Myself),SUMMONED)
      See(SecondNearestEnemyOf(Myself))
      False()
    THEN
      RESPONSE #100
    END
    
    IF
      !Gender(NearestEnemyOf(Myself),SUMMONED)
      See(NearestEnemyOf(Myself))
      False()
    THEN
      RESPONSE #100
    END
    
    // Attaquer la cible la plus proche non-summon
    
    IF
      True()
    THEN
      RESPONSE #100
        EquipMostDamagingMelee()
        AttackReevaluate(LastSeenBy(),30)
    END
    Dernière modification par Freddy_Gwendo ; 03/04/2016 à 02h06. 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
    Tu ne peux pas utiliser de boucles avec bgscript ? :heu:

  3. #3
    Date d'inscription
    September 2003
    Localisation
    Paris
    Messages 
    723
    Euh, utiliser quoi avec quoi ?
    Qu'est-ce qu'une boucle ? Qu'est-ce que BGScript ? En quoi ça m'aiderait ?

    Pour l'instant, j'ai fait tous mes scripts sur le blocnotes
    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

  4. #4
    Silk Invités
    bgscript est le langage utilisé baldur's gate. Une boucle c'est une vérification. Exemple NWN :

    // Ce script détruit tout objet dans la zone dont le nom est "albert"
    void main()
    {
    object oA;
    string sResA;

    oA = GetFirstObjectInArea(OBJECT_SELF);
    sResA=GetResRef(oA);
    if(sResA=="albert")
    {
    DestroyObject(oA);
    oA = GetNextObjectInArea(OBJECT_SELF);
    }
    }

    C'est une boucle. Ca pourrait se traduire par tant que... alors... Ici, tu pourrais appliquer à : "tant que l'ennemi le plus proche est un summon, passer à l'ennemi suivant" jusqu'à ce qu'il tombe sur un non-summon, auquel cas il l'attaque. Dans ton cas, ça ne marche qu'avec les 6 premiers ennemis, mais si c'est 6 summons (non, ce n'est pas limité à 5 )...

  5. #5
    Date d'inscription
    September 2003
    Localisation
    Paris
    Messages 
    723
    Je ne crois pas qu'on ait ce genre de boucle dans BG2, vu les scripts que j'ai lu dans les mods Tashia, Chloe, Imoen ou Kelsey.

    Quoi qu'il en soit, cette partie marche (et non, on ne peut avoir plus de cinq summons sans changer leur genre - et si on change leur genre, alors le script en tient compte ).

    Ce qui ne marche pas, c'est le fait qu'il boit une potion.
    POURQUOI CA NE MARCHE PÔ ?

    En fait, je suppose que ma question, c'est: est-ce qu'il y a une commande qui fait recommencer le script au début ?

    Tel que je vois les choses:
    1. Le script dit au pirate de passer rouge, il le fait
    2. Le script dit au pirate que s'il est blessé, il doit boire une potion; comme ce n'est pas le cas, ça passe à la suite
    3. Le script dit au pirate d'attaquer la cible non-summon la plus proche. Il le fait

    Et ? Est-ce que le script recommence de temps en temps (ce qui permettrait de déclencher la potion) ou est-ce qu'il s'arrête une fois arrivé en bas ? Si oui, comment le faire repartir ?
    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

  6. #6
    Silk Invités
    Je sais, mais je parle par exemple des dominés et des lapins du sort de souhait... Il va les attaquer...

  7. #7
    Date d'inscription
    September 2003
    Localisation
    Paris
    Messages 
    723
    Pour les dominés, je vais mettre une condition supplémentaire. Ca aura en plus l'avantage d'éviter qu'ils s'attaquent les uns les autres si le PJ en domine quelques-uns.

    Code:
    IF
      !Gender(SixthNearestEnemyOf(Myself),SUMMONED)
      !StateCheck(SixthNearestEnemyOf(Myself),STATE_CHARMED)
      See(SixthNearestEnemyOf(Myself))
      False()
    THEN
      RESPONSE #100
    END
    Et pour mon problème, il est réglé : il suffisait de remplacer "Attackreevaluate" par un "attack" tout simple. Visiblement, mon attackreevaluate bloquait le script

    Enfin, si le perso utilise un sort de Wish pour avoir des lapins
    1. Il est stupide
    2. Il mérite bien que les pirates s'en prennent aux lapins
    Dernière modification par Freddy_Gwendo ; 03/04/2016 à 02h05.
    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

  8. #8
    Silk Invités
    C'est bien ce que je pensais... Je me suis déjà fait une armée de 49 soldats avec le bâton de domination rangés en 7*7...

    La domination est une des techniques les plus puissantes existantes faces à des adversaires dominables (pas des adversaires épiques comme Irenicus)...

  9. #9
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages 
    6 833
    Originally posted by Grenouillebleue@dimanche 19 octobre 2003, 16:11
    Je ne crois pas qu'on ait ce genre de boucle dans BG2, vu les scripts que j'ai lu dans les mods Tashia, Chloe, Imoen ou Kelsey.

    En fait, je suppose que ma question, c'est: est-ce qu'il y a une commande qui fait recommencer le script au début ?

    Et ? Est-ce que le script recommence de temps en temps (ce qui permettrait de déclencher la potion) ou est-ce qu'il s'arrête une fois arrivé en bas ? Si oui, comment le faire repartir ?
    Non, il n'y a pas de boucle dans les scripts BG.
    Les scripts tournent en permanence : le taux de rafraîchissement de l'IA définie dans le programme de config détermine le rythme de répétition (typiquement 30 fois par seconde).
    Une itération du script s'arrête dès qu'elle trouve une condition de remplie. La fois suivante, l'évaluation des conditions reprendra normalement depuis le début. Je crois que la commande Continue() permet de continuer depuis le point atteint.
    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 !

  10. #10
    Silk Invités
    Ca, c'est une remarque très intéressante

  11. #11
    Date d'inscription
    September 2003
    Localisation
    Paris
    Messages 
    723
    Yup, voilà l'info dont j'avais besoin pour comprendre comment mettre mon script

    Merci m'siou !
    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

  12. #12
    Date d'inscription
    November 2002
    Localisation
    Grenoble (ou Riln ;) )
    Messages 
    2 340
    Question ayant trouvé sa réponse, sujet clos...

Discussions similaires

  1. [BGT] Une simple question
    Par Xanathos dans le forum Baldur's Gate Reloaded : les mods TUTU et Baldur's Gate Trilogy
    Réponses: 1
    Dernier message: 23/10/2007, 21h11
  2. [TP2] Comment scinder un mod en plusieurs composants ?
    Par Sith dans le forum Programmation WeiDU
    Réponses: 2
    Dernier message: 05/02/2005, 12h06
  3. Un monde persistant simple ?
    Par Atropos dans le forum NeverWinter Nights & NeverWinter Nights 2 : les modules
    Réponses: 16
    Dernier message: 15/05/2004, 14h33
  4. [MOD] Souci technique grave : le jeu ne se lance plus
    Par Grenouillebleue dans le forum Généralités sur la création d'un mod
    Réponses: 6
    Dernier message: 02/11/2003, 01h13

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 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256