Page 1 sur 1

[SCRIPT] Script d'auto buff personalisé

Posté : ven. 28 sept. 2018, 18:02
par DrAzTiK
Bonjour,

J'aimerai que mon perso se lance le sort bouclier (sort de mage level1) quand il n'y a pas d'ennemis à l'horizon. je me suis inspiré de ce bloc de SCS avec peau de pierre :



IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_STONE_SKIN) // SPWI408.SPL (Stoneskin)
See(Myself)
See(Myself)
CheckStat(Myself,0,STONESKINS)
!Class(Myself,SORCERER)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_STONE_SKIN) // SPWI408.SPL (Stoneskin)
END


Le seul truc que je comprends pas dans ce bloc, c'est le pourquoi de la ligne SetGlobalTimer("SpellsBad","GLOBAL",3).


Donc moi j'ai bricolé çeçi pour mon sort de mage bouclier :

IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_SHIELD) // SPWI114.SPL (Shield)
See(Myself)
See(Myself)
CheckStat(Myself,0,WIZARD_SPELL_SHIELD)
!Class(Myself,SORCERER)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_SHIELD) // SPWI114.SPL (Shield)
END

Ca marche a peu près sauf que si j'ai 2 sorts de mémorisé, mon mage va lancé les 2 sorts à la suite, il ne detecte pas que j'ai déja le sort d'actif. Donc y a un pb !


merçiiii

Posté : sam. 29 sept. 2018, 07:29
par Isaya
Le problème provient sans doute de ta ligne CheckStat(Myself,0,WIZARD_SPELL_SHIELD). La valeur à test n'est pas le sort mais l'effet produit par le sort. SCS se sert d'un package Detectable Spells qui ajoute beaucoup d'éléments pour que CheckStat puisse détecter les effets de l'ensemble de sorts du jeu. Pour que ton script fonctionne il faut donc que tu trouves le bon nom à indiquer pour le sort Bouclier. Le plus simple serait sans doute que tu repères un script de mage de bas niveau dans SCS qui utilise Bouclier.

Le timer correspond sans doute à une limitation des enchaînements de sort puisque le script utilise manifestement une capacité d'enchaînement avant de lancer le sort. C'est sans doute une mesure prise pour les adversaires donnent moins l'impression de tricher vis-à-vis des règles du jeu.

Posté : sam. 29 sept. 2018, 19:54
par DrAzTiK
Ha oui je vois. Tu as raison, c'est la stat Checkstat le pb. J'ai trouvé ce lien pour les checkstats : http://www.gibberlings3.net/readmes/rea ... pells.html
Enfin j'ai bricolé un truc et ça a l'air de marché.

J'ai rentré ça dans mon script :

IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_SHIELD) // SPWI114.SPL (Shield)
See(Myself)
See(Myself)
CheckStat(Myself,0,SCRIPTINGSTATE5)
!Class(Myself,SORCERER)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_SHIELD) // SPWI114.SPL (Shield)
END





Mais une fois enregistré le script se transforme en ça :

IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_SHIELD) // SPWI114.SPL (Shield)
See(Myself)
See(Myself)
CheckStat(Myself,0,DEFENSIVE_MODIFIER)
!Class(Myself,SORCERER)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_SHIELD) // SPWI114.SPL (Shield)
END



au final ça marche quand même lol