Affichage des résultats 1 à 6 sur 6

Discussion: [SCRIPT] Le trigger HitBy ne reconnaît pas la variable FIRE

  1. #1
    Date d'inscription
    August 2005
    Messages
    191

    [SCRIPT] Le trigger HitBy ne reconnaît pas la variable FIRE

    Bonjour à tous.

    J'ai un problème avec le trigger HitBy. Je voudrais détecter si mon PNJ reçoit des dégats de type "feu". Sur papier, ça a l'air très simple :

    Code:
    IF
     OR(2)
      HitBy([ANYTHING],FIRE)
      HitBy([ANYTHING],MAGICFIRE)
    THEN
     RESPONSE #100
     CreateVisualEffectObject("SPCMWOUI",Myself)
    END
    (Là je crée juste un effet visuel sur le PNJ pour tester si ça marche).

    Problème : j'ai beau lancer des boules de feu et des potions d'haleine ardente sur mon PNJ, rien ne se passe. Par contre, si je remplace FIRE par le type générique CRUSHING, mon script marche correctement...

    Quelqu'un aurait-il une idée?

    Merci d'avance.
    Dernière modification par Freddy_Gwendo ; 01/04/2016 à 04h48. Motif: Modification du titre de la discussion
    Arpenteur de l'espace B

  2. #2
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 633

    Re : HitBy : ne marche pas avec le type FIRE?

    La doc de HitBy sur IESDP dit :
    0x0020 HitBy(O:Object*,IameType*Damages)
    Returns true only if the active CRE was hit by the specifed object by the specified damage type in the last script round. If the damage type is CRUSHING or 0 then this will return true for ANY damage type.
    !HitBy returns true when the script is first activated (e.g. initial area load) and when hit by any damage type.
    Ça pourrait expliquer pourquoi CRUSHING marche à tous les coups.

    Il arrive que des sorts de zone ne soient pas considérés comme visant ton personnage si on se contente de les lancer à proximité. C'est le cas de certains sorts d'absorption ou de protection, il me semble. Vérifie en lançant bien le sort sur le personnage lui-même ou en utilisant flèche enflammée par exemple, pour lequel il y a forcément une cible.
    Autrement, utilise une arme qui provoque des dégâts de feu pour l'attaquer et vois si la situation est différente avec des dégâts physiques.

    Autre chose, le fait d'utiliser ANYTHING risque de réagir aussi aux tirs amis (genre boule de feu mal ajustée). Peut-être devrais-tu choisir un autre groupe, comme ENEMY si tu veux éviter de répliquer violemment contre tes propres amis maladroits, par exemple (ou en lançant toi-même ta boule de feu sur un personnage qui se rapproche de toi).

  3. #3
    Date d'inscription
    August 2005
    Messages
    191

    Re : HitBy : ne marche pas avec le type FIRE?

    Merci pour la réponse.

    J'ai tenté de faire quelques tests, mais soit je m'y prend mal, soit HitBy ne marche pas trop bien.

    Voici le script de mon PNJ :
    Code:
    IF
     HitBy([0],FIRE)
    THEN
     RESPONSE #100
     DisplayString(Myself,~Fire~)
     Continue()
    END
    
    IF
     HitBy([0],MAGICFIRE)
    THEN
    ...
    Les blocs suivants sont identiques avec MAGICFIRE, MAGIC, MISSILE, PIERCING, STUNNING, et CRUSHING (dans cet ordre).

    J'ai ensuite balancé un peu tout ce que je trouvais sur mon PNJ : projo magique, flèche, coup d'épée (enflammée ou pas), orbe chromatique, flèche enflammée,...

    Résultat : je n'ai jamais vu que "Crushing" s'afficher à la fenêtre de dialogue (et encore, pas à tout les coups )

    Alors, ais-je commis une erreur de scriptage, est-ce que HitBy ne fonctionne pas correctement, ou suis-je tout simplement maudit?

    Merci d'avance de vos réponses.
    Dernière modification par Avatar ; 19/12/2008 à 18h50.
    Arpenteur de l'espace B

  4. #4
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 633

    Re : HitBy : ne marche pas avec le type FIRE?

    Tu emploies HitBy([0],FIRE), donc [0] là où on utilise généralement [ANYONE]. Ce devrait être la même valeur, en principe, mais as-tu essayé avec ANYONE ?

    As-tu essayé sans Continue() ? Je dois dire que je vois pas pourquoi tu t'en sers ici. Il me semble qu'il est d'usage très rare en raison de contraintes et de risques particuliers, notamment le nom respect de l'ordre d'évaluation ou le fait qu'il empêche de recommencer l'évaluation au premier script. A priori, on peut penser que le fait de s'arrêter une fois pour afficher le message lié au type de dégât n'empêchera pas le script d'être rapidement réévalué, même en repartant du début, pour que la suite puisse être traitée avant qu'un nouveau coup n'arrive.

    Sinon, sur le fond, HitBy([ANYONE],FIRE) fonctionne dans le jeu. Pour t'en convaincre, consulte le script SLIFIS01.BCS employé par le Limon à fission (SLIFIS02.CRE). Si ce trigger ne fonctionnait pas avec le feu, le limon continuerait à se dédoubler à sa mort. Pourtant, on arrive bel et bien à les tuer en les touchant au moins une fois avec des flèches de feu ou une flèche enflammée.
    Code:
    IF
    	HitBy([ANYONE],FIRE)
    	Global("NoFusion","LOCALS",0)
    THEN
    	RESPONSE #100
    		SetGlobal("NoFusion","LOCALS",1)
    END
    
    IF
    	Die()
    	Global("NoFusion","LOCALS",0)
    THEN
    	RESPONSE #100
    		DisplayStringHead(Myself,71108) // Au lieu de mourir, la créature se divise en deux.
    		CreateCreatureObjectEffect("SLIFIS02","TRGOOYAA",Myself)
    		CreateCreatureObjectEffect("SLIFIS02","TRGOOYAA",Myself)
    END

  5. #5
    Date d'inscription
    August 2005
    Messages
    191

    Re : HitBy : ne marche pas avec le type FIRE?

    Ce devrait être la même valeur, en principe, mais as-tu essayé avec ANYONE ?
    J'ai essayé, et ça donne les même résultats qu'avec [0].

    Pour les Continue(), je n'étais pas sûr. Mais de nouveau, avec ou sans, le script à le même effet ( = il n'y a que le bloc "crushing" qui se déclenche).

    Sinon, sur le fond, HitBy([ANYONE],FIRE) fonctionne dans le jeu. Pour t'en convaincre, consulte le script SLIFIS01.BCS employé par le Limon à fission (SLIFIS02.CRE). Si ce trigger ne fonctionnait pas avec le feu, le limon continuerait à se dédoubler à sa mort. Pourtant, on arrive bel et bien à les tuer en les touchant au moins une fois avec des flèches de feu ou une flèche enflammée.
    Heu... Je ne trouve pas le script SLIFIS01.BCS (je cherche avec Near Infinity). J'ai un fichier SLIFIS01.CRE (et pas 02), par contre. Le limon à fission n'est pas une créature de TOB?

    [Je précise que je modde sur BG2 sans rien (pas TOB, juste le patch officiel et le fixpack). Mais je suppose que ça ne change rien au fonctionnement de HitBy d'avoir ou pas l'extension. (ou si?)]

    Pour tester j'ai invoqué des Limons à fission (version 01) mais ils ont l'air de mourir normalement, feu ou pas feu... J'ai regardé les trolls avec NI, me disant qu'ils doivent fonctionner sur le même principe (HitBy acide ou feu pour les tuer), mais on dirait que c'est plus compliqué. Il y a une créature TROLDE01 avec des résistances normales (0% partout), puis une créature TROLDE02 avec 1pv, 100% de résistance partout sauf 0% en feu, feu magique et acide. Serait-ce possible que les trolls marchent sur un autre principe du genre : "quand le troll s'écroule : remplacer le TROLDE01 par le TROLDE02 qui ne sera tuable que par feu ou acide"? Apparemment les trolls n'utilisent pas le HitBy...

    Ca m'embête cette histoire. Je tenais un bon concept pour mon PNJ - en gros, il devrait se transformer s'il subit des dégats de feu (quel que soit la source).

    Bon, je continuerai mes expériences demain (ah zut, on est déjà demain...)

    EDIT : sur Pocket Plane Group, j'ai trouvé ce thread : weird Problem with Fission Slime

    Un des participants à la discussion écrit :
    Citation Envoyé par Macready
    Hello -

    OK...I've spent way more time on this than I should have. But I do have a working theory to show for it.

    Are you by any chance using a ToB-less (i.e., SoA only) BG2 installation as a base (and thus, the SoA version of EasyTutu)? I ask because I can replicate the issue on SoA installations, but not ToB installations. In both environments I have identical AI script and damage identifier tables, but in the SoA installation the HitBy trigger fails to fire. HitBy does work under some conditions (e.g., with the generic CRUSHING type), but not with FIRE. I'm at a loss. I'm inclined to categorize it as an engine bug with the SoA build of BG2.

    Unless anyone can suggest something demonstrably better, I plan to remove the ReallyForceSpellDead AI block for fission slimes in the SoA distribution of EasyTutu.
    Ceci correspond plus ou moins à ce que j'observe (si ce n'est que chez moi HitBy ne réagit que avec "Crushing"). Serait-ce possible que je doive modder sur SoA + ToB pour avoir un HitBy fonctionnel?

    RE-EDIT : Yahouuu, ça marche !

    J'ai donc passé mon SoA sans mods (qui me servait de base pour modder) en ToB. Après quelques tripatouillages dans le registre pour parvenir à installer ToB sur mon SoA et pas sur mon BGT (vive les multi-install ), j'ai réinstallé mon PNJ, et maintenant mon script fonctionne correctement : les projo magiques sont de type "Magic", les boules de feu de type "Fire", ...

    Conclusion : la fonction HitBy ne détecte correctement le type de dégat que avec ToB installé.

    Bon, ben mon PNJ sera "ToB - requis".

    Merci beaucoup pour ton aide, Isaya, et désolé de ne pas avoir pensé plus tôt à essayer avec ToB.
    Dernière modification par Avatar ; 20/12/2008 à 11h08.
    Arpenteur de l'espace B

  6. #6
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 633

    Re : HitBy : ne marche pas avec le type FIRE?

    Bonne nouvelle.

    J'avais effectivement fait des recherches avec ToB. Imposer ToB de nos jours n'est pas une grosse contrainte. Ceux qui cherchent des mods pour renouveler l'expérience ont probablement acheté l'extension ou peuvent le faire pour un prix très faible.

Discussions similaires

  1. BG1 version 3 CDs White label : l'install.bat de BWP ne la reconnait pas.
    Par colonel klinck dans le forum Méga-mods : Big Picture, The Darkest Day, Shadow Over Soubar, Tortured Souls, Check The Bodies, Nev
    Réponses: 6
    Dernier message: 01/10/2014, 21h02
  2. à quoi reconnaît-on le squat d'un logement ?
    Par Féérune dans le forum Le Comptoir
    Réponses: 6
    Dernier message: 18/08/2013, 20h13
  3. [EFFET] L'effet #309 (Script: Set/Modify Local Variable) crée deux variables !
    Par Freddy_Gwendo dans le forum Sorts et projectiles
    Réponses: 4
    Dernier message: 17/07/2013, 04h42
  4. [BD] Cross Fire
    Par Folken dans le forum La Grotte aux BDs
    Réponses: 0
    Dernier message: 10/06/2012, 12h36
  5. [BUG] Problème d'installation, reconnaît pas l'exe
    Par mangavore dans le forum La Taverne d'Amkethran (Baldur's Gate 2)
    Réponses: 7
    Dernier message: 21/12/2005, 16h17

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