Ne pas relancer un buff si on l'a deja?

Répondre
Partager Rechercher
Coucou a tous!

Voila je m'essaie aux macros pour mon petit chasseur et je cherchais a faire un script pour débuter un combat au cac dont le but serait :

Si on est pas en Aspect du singe alors il cast aspect du singe
lancer le pet
attaquer

j'ais tester ca mais ca marche pas

/TargetUnit("Player")
/script if not (PlayerHasSpells("Aspect du singe")) then cast Aspect du singe; end
/TargetLastEnemy
/PetAttack();
/Attack();

problème : il cast jamais l'aspect du singe.

d'où la question : Comment marche les if/if not et la fonction PlayerHasSpells et surtout est ce la fonction a utiliser pour savoir si untel a tel buff?
Ce n'est pas aussi simple. Je ne suis pas sûr que PlayerHasSpells te dise si tu as un buff ou pas actif.

Pour vérifier que tu as Aspect du singe actif, il faut parcourir la liste des buffs que tu as sur toi avec UnitBuff("player", index) qui retourne le nom de la texture qui représente le buff à l'index index et trouver ou non la texture de Aspect du singe. Si tu ne le trouves pas, tu lances l'Aspect.

En script, ça ferait :
Code:
/script i=1;found=nil;while (UnitBuff("player", i)) do if (string.find(UnitBuff("player", i), "AspectOfTheMonkey")) then found=1;break;end;i=i+1;end;if (not found) then CastSpellByName("Aspect du singe");
/PetAttack();
/AttackTarget();
Pour info, inutile de se cibler pour lancer un Aspect.
Oky merci bcp! Moi qui pensais que ce serais simple comme script
je teste ca ce soir
Sinon je me ciblais pour utiliser la fonction PlayerHasSpells, pensant qu'il fallait être cibler pour que cette fonction marche.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés