[SCRIPT] Comment savoir si un sort a été lancé ?

Répondre
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne

[SCRIPT] Comment savoir si un sort a été lancé ?

.

Message par Cocrane »

En testant à nouveau une partie de mon mod, un script qui marchait ne fonctionne plus... :'(

J'en perd mon latin.

un PNJ lance un sort et sur le .baf de la carte, je teste si le sort a été lancé et rien ne se passe. J'ai finalement, fait des tests simples et effectivement rien ne se passe.
Je ne vois pas ce qui cloche...


Voilà le cas simple sur le .baf de la carte:
IF
Global("int3","GLOBAL",0)
THEN
RESPONSE #100
SetGlobal("int3","GLOBAL",1)

createcreature("anomen9",[1500.565],10)
createcreature("MINSC",[1500.565],10)
wait(2)
//ActionOverride("ANOMEN",ForceSpellRES("COM017BM","MINSC"))
//ActionOverride("ANOMEN",ForceSpellPointRES("COM017BM",[1350.665]))
ActionOverride("ANOMEN",ForceSpell("MINSC","CLERIC_CURE_LIGHT_WOUNDS"))
END

IF
Global("int4","GLOBAL",0)
SpellCast("anomen9","CLERIC_CURE_LIGHT_WOUNDS")
THEN
RESPONSE #100
SetGlobal("int4","GLOBAL",1)

Createcreature("MINSC",[1350.665],10)
Createcreature("MINSC",[1350.665],10)
END
Le sort est lancé et les créatures MINSC n'apparaissent pas.

A la base j'utilise SpellCastRes pour éviter que le nouveau sort soit à déclarer dans le Spell.ids.

Cocrane
Avatar du membre
Akadis
Adepte de Grondemarteau
Araignée éclipsante
Messages : 1224
Enregistré le : lun. 28 avr. 2003, 10:58
Localisation : Bordeaux
Contact :
Statut : Hors ligne
.

Message par Akadis »

Est-ce qeu le MINSC du premier bloc apparait ? Celui-là :
createcreature("MINSC",[1500.565],10)
Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un M. P
Responsable de la maintenance du mod
Kim
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Effectivement ca manque de précision. :-)

Tout se passe bien jusqu'au script qui teste le lancement du sort.

Minsc et Anomen apparaissent
le sort se lance.


Et après rien par rapport à ce script

IF
Global("int4","GLOBAL",0)
SpellCast("anomen9","CLERIC_CURE_LIGHT_WOUNDS")
THEN
RESPONSE #100
SetGlobal("int4","GLOBAL",1)

Createcreature("MINSC",[1350.665],10)
Createcreature("MINSC",[1350.665],10)
END
Avatar du membre
Akadis
Adepte de Grondemarteau
Araignée éclipsante
Messages : 1224
Enregistré le : lun. 28 avr. 2003, 10:58
Localisation : Bordeaux
Contact :
Statut : Hors ligne
.

Message par Akadis »

Après de nombreux tests je peux te confirmer que c'est le bien SpellCast qui n'est jamais validé. Je n'ai pas réussi à trouver une solution directe à ce problème.
Je te propose une solution de contournement : au lieu d'utiliser un SpellCast, tu peux contrôler la valeur de int3. C'est dans le même bloc qui tu lances le sorts et que int3 reçoit la valeur 1.
Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un M. P
Responsable de la maintenance du mod
Kim
Avatar du membre
Akadis
Adepte de Grondemarteau
Araignée éclipsante
Messages : 1224
Enregistré le : lun. 28 avr. 2003, 10:58
Localisation : Bordeaux
Contact :
Statut : Hors ligne
.

Message par Akadis »

Après de nombreux test je peux te confirmer que c'est bien le SpellCast qui n'est jamais validé. Malgré ces tests je n'ai pas réussi à comprendre pourquoi.
Je te propose d'utiliser un solution de contournement :au lieu d'utiliser un SpellCast tu peux tester la valeur de int3. C'est dans le même bloc que tu lances le sort et que int3 reçoit la valeur 1
Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un M. P
Responsable de la maintenance du mod
Kim
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

À une époque, j'ai lu pas mal de messages sur le sujet sur SHS et G3. Il semble que ce trigger ne soit pas fiable car il ne retourne "VRAI" que si le sort à été lancé le round précédent. En pratique, selon le moment où le sort est lancé, sa durée d'incantation, la durée de son projectile, voire les autres actions vérifiées par les scripts entre-temps, il peut ne jamais se déclencher.

Si mes souvenirs sont exacts, pour certains sorts, ajouter Continue() à la fin du bloc lançant le sort pouvait, dans certains cas, débloquer la situation. Mais sans garantie.
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Merci pour vos retours.

Effectivement avec ma première version le test marchait nickel.

Depuis j'ai modifié d'autres scripts autour de cette étape et là le test du sort lancé (non modifié) ne marche plus. Un brun frustrant.

Ok, je vais voir avec un continue() et avec aussi un clearallactions voir si ca aide.

Je vous tiens au courant.

Cocrane
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Je ne suis pas parvenu à faire fonctionner le trigger "SpellCast" ou ses variantes.

Du coup j'ai ajouté l'OPCODE "Set AI Script [82]" et je passe une variable à la valeur 1.
Si le sort n'est pas lancé ou interrompu, la variable reste à 0. sinon elle passe à 1.

Ca fonctionne. :-)

Cocrane
Répondre

Retourner vers « Scripts »

Qui est en ligne

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