← GeekServers.gg [DEBUG:1782456837]
⚠ Archive en lecture seule — Retour sur GeekServers.gg
Bonjour à tous !

Je suis en train d'essayer d'optimiser mes macros, mais je bute sur un point : vérifier qu'un sort se lance/se soit lancé. L'idée, c'est de ne lancer le message "Je rez telle personne" / "J'innerv telle personne" si et seulement si le sort se lance vraiment. En gros, ne pas spamm le /say en courant vers la personne pour lancer le-dit sort alors qu'en même temps on spam la touche pour être sur que le sort passe dès que possible (vous me comprenez ?).

Bref, je suis parti là dessus :

Code: Tout sélectionner
/script  c=CastSpellByName; s=SendChatMessage;  if (c"Innervation") then s("Je t'ai innerv !","WHISPER",nil,UnitName("target")) end;


Le sort se lance sans soucis et je n'ai pas de message d'erreur, mais le whisp, lui, ne se lance pas ('la syntaxe est bonne car elle fonctionne si on la met en dehors d'une condition).
Je pense que cela vient du CastSpellByName, qui ne doit pas renvoyer de "true/false" et donc ne doit pas permettre de valider ou non la condition.

Si quelqu'un a une solution miracle, il recevra un /love bien mérité !
Lidocaïne


Je pense qu'il serait plus simple de passer par un addon.

Tu regardes le journal de combat et si jamais la phrase "Moi lance rez sur X" est affiché, tu lances le /w.
Alizia

Maître de jeu


Ah tiens, l'idée n'est pas bête... Une idée du type d'addon vers lequel se tourner ?

Sinon il y a aussi l'idée de :
1) vérifier que le sort soit castable (donc pas en cd, pas en hors range)
2) si castable, lancer le cast+le whisp
3) si pas castable, se tourner les pouces

Au moins la condition peut être vérifiée...
Lidocaïne


Lidocaïne a écrit:Ah tiens, l'idée n'est pas bête... Une idée du type d'addon vers lequel se tourner ?


Aucun, il faut coder (rien de bien sorcier) :)
Alizia

Maître de jeu


Salut, il y a un p'tit soucis dans ta macro.

Code: Tout sélectionner
/script c=CastSpellByName; s=SendChatMessage; if (c("Innervation")) then s("Je t'ai innerv !","WHISPER",nil,UnitName("target")) end;


j'ai rajouter des parenthèse pour la fonction CastSpellByName que tu stock dans la variable c (je crois qu'il les faut).

Bref le soucis c'est que tu pense que CastSpellByName renvois true ou false (vu que tu la mis dans un if) si le sort est lancé ou pas, j'ai vérifier elle renvois rien du tout.

J'ai vérifié de cette façon :

Code: Tout sélectionner
/run if CastSpellByName("Rage sanguinaire") then DEFAULT_CHAT_FRAME:AddMessage("yes") else DEFAULT_CHAT_FRAME:AddMessage("no") end


Que le sort se lance ou pas, le message "no" s'affiche.

Et aussi de cette façon :

Code: Tout sélectionner
/run DEFAULT_CHAT_FRAME:AddMessage(tostring(CastSpellByName("Rage sanguinaire")))


Là il y a carrément une erreur lua, alors qu'en générale la fonction tostring arrive souvent à affiché beaucoup de chose qui ne sont pas sensé l'être.

Et tu peux allé voir ici : http://www.wowwiki.com/API_CastSpellByName
Il n'y pas d'information sur une variable retourné par la fonction.

En gros, CastSpellByName ne lance pas directement le sort, donc elle peux pas savoir si le sort s'est lancé.

Pour savoir cela il faut passer je crois par ce qui s'appel les EVENT, je suis en train de chercher un peu, voir si je peux te trouver ça. Il y a peu-être une méthode plus simple mais je ne la connait pas.
Marodheure

<Hell Script>


Re, tiens essaye ça : https://mega.co.nz/#!JBhwhI6Q!Zw3lv8hGd ... 0WgvFvNdHk

C'est un addon, je viens de le faire. Il y a pas de réglage, interface et commande, tout ce passe dans le fichier CastOrNot.lua

Je suis pas sur qu'il fonctionne pour l'innervation, j'ai l'ai testé sur un prêtre avec la rénovation c'est bon, donc je pense que ça devrais le faire pour l'innervation.

Je t'explique vite fait.

Code: Tout sélectionner
local SpellList = {"R\195\169novation", "Innervation"}

Les sorts qui sont dans cette liste, quand ils seront lancés et réussi, whisperont ta target, c'est quasiment le seul réglage que tu est sensé faire, attention à la syntaxe, chaque sort est entouré par des double quote et suivit par une virgule, la virgule après le dernier sort est inutile, mais mais ne génère pas d'erreur lua.
Si tu veux rajouter un sort qui a des accents dans son nom du doit utilisé les caractère utf-8 comme j'ai fais avec la rénovation, trouvable ici (les accents sont en bas du tableau) : http://www.utf8-chartable.de/unicode-ut ... l?utf8=dec

Les events dont je t'ai parler plus haut, sont des événements envoyés par le serveur à ton jeu quand il y a quelques choses d'important à savoir, genre un sort réussi ^^, les dégats (c'est comme ça que sw stats fonctionne surement) etc...

Là j'utilise l'event CHAT_MSG_SPELL_FAILED_LOCALPLAYER pour savoir si ton sort ne peux pas être lancé, et je t'ai laissé le choix d'affiché cela dans le fichier CastOrNot.lua ligne 59, la ligne est en commentaire, tu peux l'activer en retirant les "--" au début, mais ça vas te flood un peu (seulement toi personne ne verra ce message), et je te redit plus clairement que cet event ne me sert pas à savoir si le sort à réussi, il sert juste à savoir si le sort ne peux pas être lancé.

Et le second event CHAT_MSG_SPELL_SELF_BUFF sert à savoir (je crois) si tes sorts amical sont réussi.

Si ta des questions, hésite pas.
Marodheure

<Hell Script>


Un énorme merci pour ces infos / recherches. Je dois m'absenter quelques jours mais je me penche dessus dès mon retour.

Oui, j'avais bien compris que CastSpellByName ne renvoyait rien (je l'ai d'ailleurs précisé plus haut) et me doutais que le problème venait de là.

Je vais regarder ce que tu as mijoté, mais je n'y connais rien en addon alors je n'aurais pas trop d'adaptations possibles (sauf pour la liste des sorts, haha). Cela dit, si tu peux m'indiquer à peu près la fonction dans le lot qui whisp la target, pour que je puisse la modifier pour qu'elle fasse un /raid ou /say plutôt qu'un /whisp ;).

Encore merci !


Edit: ok j'ai jeté un oeil vite fait, le whisp se joue dans la function TreatSuccessfulSpell, ce sera easy à modifier.
Encore merci, vraiment.
Lidocaïne


Yo, c'est ligne 78, si tu veux connaitre un peu plus les possibilités de la fonction SendChatMessage regarde ici : http://www.wowwiki.com/API_SendChatMessage

Par contre je suis pas sur et certain que ça fonctionne du premier coup, donc j'ai laissé un message d'erreur au cas où, qu'il faudra retirer si tout vas bien pour l'innervation.

Bref de toute façon je passe souvent sur cette partie du forum, je verrais si t'a un souci dans quelques jours.
Marodheure

<Hell Script>





Conditions générales d'utilisation et mentions légales - Code de conduite des forums - Contact