Edit :24/06/2006 : Ajout de macros pour guerrier.
24/06/2006 : Ajout des sources.
Sommaire 1 - Introduction
2 - Création et contraintes d'une macro
3 - Quelques commandes
4 - Les macros
5 - Les sources
1 - Introduction Une macro est une suite d'actions scriptés, tout cela dans le but de vous simplifier la vie et le jeu.
La simplification à outrance n'est pas forcément une bonne chose, aussi la liste des macros présentées ici ne vous permettront pas d'être vainqueur à chaque combat, de tuer ragnaros en cliquant cinquante fois sur un bouton
ou encore de partir faire vos courses pendant que votre personnage pêche.
De toute façon certaines restrictions empêchent l'écriture de telle macros.
J'espère que cela vous aidera à être plus efficace, vous facilitera le jeu sans saccager le gameplay ou votre plaisir de jouer.
2 - Création et contraintes d'une macroPour créer une macro, taper dans la fenêtre de chat :
/macro
Une fenêtre va s'ouvrir. Cliquer sur nouvelle, donner lui un nom et choisissez un icone. Il ne vous reste plus qu'à écrire les commandes.
Ecrire une macro peut vous servir à lancer des sorts, afin d'éviter des heures de recherche sur le nom exact du sort que vous devez lancer, vous pouvez ouvrir votre livre de sorts en même temps que l'éditeur de macro
il vous reste à trouver le sort que vous désirez lancer et faire SHIFT+click dessus, la commande complète du lancement de ce sort s'écrira automatiquement
Les macros utilise un langage scriptural le LUA, la moitié n'a rien compris à cette phrase mais ce n'est pas grave. Cela signifie que vous pouvez conditionner certaines actions.
exemple :
SI ma cible s'appelle Merrick ALORS je lance soins rang 1
Il y a bien d'autre avantages qui vous seront expliqués au dernier chapitre avec la liste de toutes les macros.
Vu comme ça, vous pouvez avoir l'impression que vous pouvez tout faire avec une marco. Malheureusement certaines contraintes existent.
- Vous ne pouvez pas lancer plusieurs sorts à partir d'une même macro
- La taille d'une macro est limité à 256 caractères. Il est malgré tout possible de repousser cette limite à l'aide de 2 addons SuperMacro et MegaMacro
- Il est impossible de faire une pause dans une macro ( attendre 5 secondes par exemple )
- Il est impossible de déclencher le lancement d'un sort via un évènement tel que votre barre de vie passe sous les 50%. Vous devrez quoi qu'il arrive cliquer sur une macro.
- Il est impossible de fouiller un cadavre et de ramasser tous les objets avec une macro.
- Il n'existe aucune fonction permettant de faire bouger votre personnage
- Et pour finir, il n'est pas possible d'obtenir la distance d'une cible ( ce qui aurait été très pratique pour de nombreuses classes ).
Voilà qui réduit nos possibilités mais pas tant que ça.
3 - Quelques commandesVoici une petite leçon qui vous permettra d'apréhender l'écriture d'une macro.
Je tiens à prévenir les personnes n'ayant aucune expérience d'écriture de scripts/programmes ou de développement, ce n'est pas forcément facile, mais ce n'est pas insurmontable.
Soyez patient !
Commençons par quelques commandes basiques :
* /lancer sort_Y- Lance un sort spécifique existant dans le livre de sort.
* /cast sort_Y- C'est la meme commande que /lancer mais ça prend moins de place ( permet de gagner de la place sur les grosses macros)
* CastSpellByName(X)- Encore pour lancer une sort, mais cette fois vous n'êtes pas obligé de spécifier le rang du sort. Le sort de rang le + haut sera utilisé
exemple : /script CastSpellByName("Eclair de givre")
* TargetLastEnemy();- Placer cette commande à la fin d'une macro vous permet de cibler votre dernière ennemi (très pratique lorsque vous vous faite un bandage par exemple ) Il est possible d'utiliser TargetNearestEnemy() àla place, pour sélectionner l'ennemi le plus prêt
* UseInventoryItem(X)- Utiliser un objet dont vous êtes équipé, tel un bijou, le X représente la position ( numéroté de 1 à 13 )
* UseContainerItem(#,X) --Item- Utiliser un objet qui se trouve dans un de vos sacs à un emplacement particulier
* /script DoThis();- Cela vous permet d'utiliser des focntions telles que SpellStopCastiong(); ou TargetNearestEenmy();
* /script i=7; -> La lettre i a pour valeur 7 (Dans plusieurs macros, des "variables" sont utilisées, celle-ci sont symbolisées par des lettres par soucis de gain de place.)
* /script for i=0,15,1 do ... end -> i = 0 toutes les commandes entre le "do" et le dernier "end" seront répétées jusqu'à ce que i soit égal à 15. A chaque boucle i est incrémenté de 1.
* /script if ((UnitMana("player"))<210) then ... end; -> Si mon personnage a plus de 210 de mana alors ...
4 -Les macrosMaintenant les choses sérieuses :
- Bandage (Auto application) :/script TargetUnit("player");UseContainerItem(B,S);TargetLastEnemy();
Note : remplacer B et S par l'emplacement des bandages dans vos sas . Pour rappel les sacs sont numérotés de 0 à 4 chanque emplacement 0 de chaque sac se trouve en haut à gauche.
Exemple : vos bandages sont dans votre sac principale en haut à droite
UseContainerItem(0,4)
- Auto-buff : ( oui un bien vilain mot ) ou lancer un sort sur votre personnage
/script TargetUnit("player");
/lancer Détection de l'invisibilité supérieure
/script TargetLastEnemy();
Note : ici l'exemple est pris avec Détection de l'invisibilité, vous pouvez le remplacer au choix par un sort de soin, un bonus d'endurance ...
- Connaitre le nom d'un buff : cela peut servir pour écrire une macro, de plus ces noms sont en anglais.
/script local t; local q;for i=0,15,1 do t=GetPlayerBuffTexture(i);ChatFrame1:AddMessage("buff :"..t, 1.0, 1.0, 0.5); end;
Note : Cela provoque une erreur, mais au moins vous avez le nom de votre buff
- Scan livre de sort : Alors comme ( ici la malédicition amplifiée ) ça, l'intérêt de la macro n'est pas très évident. Récupérer l'id d'un sort dans votre livre se sorts va servir lorsque vous souhaiterez connaitre le cooldown de ce sort ... toujours pas clair ... allez voir les macros de démonistes.
- Dire une phrase choisie au hasard parmie une liste de 5 : (rien ne vous empêche de lancer un sort après ... ) :
/script strpal={"texte1","texte2","texte3","texte4","texte5"}; SendChatMessage(strpal[math.random(5)])
/script for id = 1, 180, 1 do local spellName, subSpellName = GetSpellName(id, SpellBookFrame.bookType);if spellName and string.find(spellName, "Malédiction amplifiée", 1, true) then ChatFrame1:AddMessage("ID is "..id, 1.0, 1.0, 0.5); end; end;
Les macros suivantes sont spécifiques à certaines classes. Le but est de vous donner une idée de ce qui est réalisable, à vous de piocher dedans et de tener votre chance.
Mage : - Contresort :Vous etes en train d'envoyer un éclair givre, vous voulez empecher le pretre en face de vous de se soigner. Il faut donc stopper la concentration de vorte sort éclair de givre
/script SpellStopCasting();
/script CastSpellByName("Contresort") ;
- Création d'eau :Si vous avez + de 780 de mana, alors vous lancer invocation d'eau rang 7 sinon vous utiliser l'objet se trouvant dans votre 1er sac au 2e emplacement ( il vaut mieux y mettre votre eau ^^)
/stand
/script if (UnitMana("player")>780) then CastSpellByName("Invocation d'eau(Rang 7))") else UseContainerItem(0, 1); end;
- Brulure ou Missiles des arcanes si vous êtes en mode Présence spirituelle:Un poil plus compliquée à comprendre, le but est de lancer brulure sauf si vous avez le bonus mana gratuite pour le prochain sort. Là vous lancer missile des arcanes
/script local q; local t;for i=0,15,1 do t=GetPlayerBuffTexture(i); if (t and string.find(t, "Manaburn")) then q=1; break; end; end; if(q ~= nil) then CastSpellByName("Missiles des arcanes (Rang 7)") else CastSpellByName("Brûlure(Rang 7)"); end;
- Eclair de givre :Si vous avez moins de 210 en mana, vous lancez Nova rang 1 sinon vous lancez le rang maximum
/script if ((UnitMana("player"))<210) then CastSpellByName("Eclair de givre(Rang 1)");end
/script if ((UnitMana("player"))>=210) then CastSpellByName("Eclair de givre");end
- Bonus d'intelligence :Si vous avez sélectionner un ami, le bonus est lancé sur lui, sinon, il est lancé sur vous
/script CastSpellByName("Intelligence des arcanes(Rang 5)");if((SpellIsTargeting())and(not UnitIsFriend("player","target")))then SpellTargetUnit("player");end;TargetLastEnemy();
Chasseur :- Basculer de l'aspect de l'aigle à l'aspect du singe : /script local q; local t;for i=0,15,1 do t=GetPlayerBuffTexture(i);if (t and string.find(t, "Mon")) then q=1; break; end; end; if(q ~= nil) then CastSpellByName("Aspect du faucon"); else CastSpellByName("Aspect du singe");end
- Tir de sniper, applicable aux elfes de la nuit :/script if (not PlayerFrame.inCombat) then CastSpellByName("Shadowmeld(Racial)");CastSpellByName("Tir des arcanes");end
- Tir de pull ( très moche comme expression ... mais enfrançais ? ) :/script CastSpellByName("Tir des arcanes"); SpellStopCasting();
Note: Très utile, pour attirer un ennemi. Vous lancer un tir des arcane et vous stoppez le tir ensuite, ainsi vous ne risquez pas de casser le piège posé auparavant
- Oeil de diablosaure-> Tir Rapide -> Visée :Vous devez être équipé de l'oeil de diablosaure en position 13 ou 14
i est à remplacer par l'ir du tir de rapidité ( voir la macro de scan du livre de sort )
/script UseInventoryItem(X); if (GetActionCooldown(i)<300) then CastSpellByName("Tir rapide");end CastSpellByName("Visée");
- Assister avec votre animal :/script if UnitExists("target") then if UnitIsFriend("player","target") then AssistUnit("target");PetAttack();else if UnitExists("pettarget") and UnitIsUnit("target", "pettarget") then PetFollow();else PetAttack();end;end;else PetFollow();end;
1. Utiliser la macro en ayant comme cible un ami -> Envoi votre compagnon l'assister
2. Utiliser la macro en ayant comme cible un ennemi -> Envoi votre compagnon l'attaquer
3. Utiliser la macro une seconde fois -> Rappelle votre compagnon.
4. Evidemment cela ne prend pas en compte l'agressivité de votre compagnon (passif / agressif / défensif )
Démoniste :- Agonie amplifiée : si malédiciton amplifiée est disponible, vous lancez agonie amplifiée sinon vous lancez agonie ( ici, à la place de 34, ilfaut prendre l'id de votre malédiciton amplifiée ... rappelez vous le scna de votre livre de sorts plus haut ).
/script local e, f, g = GetSpellCooldown(34, SpellBookFrame.bookType); if (f <= 0) then CastSpellByName("Malédiction amplifiée"); SpellStopCasting();end; CastSpellByName("Malédiction d'agonie");
- Sacrifice et rappel d'un marcheur /script --CastSpellByName("Domination corrompue");
/cast Sacrifice
/cast Domination corrompue
/script SpellStopCasting()
/cast Invocation d'un marcheur du Vide(Invocation)
- Agonie ou langage :/script if ((UnitPowerType("target")==0) and (UnitMana("target")>0)) then CastSpellByName("Malédiction des langages") else CastSpellByName("Malédiction d'agonie") end;
- Débuff du chasseur corrompu (très pratisue en pvp) :/script TargetUnit("player");
/lancer Festin magique(Rang 3)
/script TargetLastEnemy();
Guerrier- Basculer d'une arme à 2 mains à une arme à une main et un bouclier :Cette macro vérifie s'il y a une arme sur la seconde main. S'il y en a une, la macro ne fait rien.
Si il n'y a rien, l'ame placée à la 1ere place du 5e sac (4,1) sera équipée en arme principale (16), l'arme placée au second emplacement du même sac ( 4,2) sera placée en seconde main. Evidemment les emplacements de sac peuvent être modifiés
/script
oi=(GetInventoryItemLink("player",17));
if (not oi) then
PickupContainerItem(4,1);
PickupInventoryItem(16);
PickupContainerItem(4,2);
PickupInventoryItem(17);
end;
- Passer d'un équipement arme+bouclier à une arme à 2 mains :La macro vérifie ce qui se trouve en 2e main, s'il n'y a rien, il ne se passe rien. S'il y a quelque chose, cet objet est placée dans le sac en postion 2 du 5e sac ( 4,2). L'arme se trouvant dans le 5e sac au 1er emplacement est ensuite mise en 1er main
/script
oi=(GetInventoryItemLink("player",17));
if (oi) then
PickupInventoryItem(17);
PickupContainerItem(4,2);
PickupContainerItem(4,1);
PickupInventoryItem(16);
end;
- Passer du couple arme/bouclier à une 2 mains avec un coup de bouclier en 1er : /cast ShieldBash(Rank 2)
/script
oi=(GetInventoryItemLink("player",17));
if (oi) then
PickupInventoryItem(17);
PickupContainerItem(4,2);
PickupContainerItem(4,1);
PickupInventoryItem(16);
end;
5 - Les sourcesEcrire ce petit quelque chose n'aurait pas été possible sans le forum officiel us et les posts suivants (que j'ai honteusement et allègrement copiés ) :
Général :
http://forums.worldofwarcraft.com/thread.aspx?fn=wow-interface-customization&t=211489&p=1&tmp=1#post211489http://forums.worldofwarcraft.com/thread.aspx?fn=wow-interface-customization&t=208350&p=1&tmp=1#post208350 Paladin :
http://forums.worldofwarcraft.com/thread.aspx?fn=wow-paladin&t=888726&p=1&tmp=1#post888726 Démoniste :
http://forums.worldofwarcraft.com/thread.aspx?fn=wow-warlock&t=905421&p=1&tmp=1#post905421 Mage :
http://forums.worldofwarcraft.com/thread.aspx?fn=wow-mage&t=829994&p=1&tmp=1#post829994 chasseur :
http://forums.worldofwarcraft.com/thread.aspx?fn=wow-hunter&t=754948&p=1&tmp=1#post754948 Druide :
http://forums.worldofwarcraft.com/thread.aspx?fn=wow-druid&t=75723&p=1&tmp=1#post75723... voilà, je sais ce que vous allez dire : " elles sont où les autres classes" ... ben ... je n'avais pas vraiment de personnages disponibles pour tester.
Enfin bon, en espérant que cela vous donne des idées, je reste à votre disposition pour tout eclaircissements et demandes d'informations.
Maël