Página 1 de 1

Aprenda a fazer macros !!!!

Enviado: Sex Dez 08, 2006 10:15 pm
por Valiant
Seguem aqui links de pessoas que ensinam a fazer macros. Muito interessante mesmo. É uma coisa que todos devem procurar aprender. Ajuda muito e eventualmente até elimina a necessidade de certos addons.

http://www.worldofraids.com/forum/viewt ... 6057#16057

http://forums.worldofwarcraft.com/threa ... 6128&sid=1

Enviado: Sáb Dez 09, 2006 12:40 pm
por DançadoSiri
poxa irmao ta de parabens... muita coisa q eu tava querendo saber acabei de completar agora ^^

Enviado: Seg Dez 11, 2006 2:55 pm
por volles
Dae galera resolvi dar uma maozinha ai e fui atras de comandos, esse texto abaixo é de autoria do PITA, do forum da TFN.

Algumas coisas podem estar errada mas já deve ser um começo para entender e começar a fazer suas macros

Se alguem tiver dúvida, achar alguma coisa que não está aqui ou simplesmente ver que falei alguma merda, posta que eu quero ver se mantenho isso aqui atualizado.
Valeus

PS¹.: Estou tentando não utilizar nada de Addon para funcionar em qq lugar
PS².: Tudo que estiver na linha da "/" é codigo de macro, o resto é comentário meu. A única exceção é quando a ficar muito grande e pular de linha, mas vc vai perceber quando isso acontecer


Vamos começar, para criar sua macro você pode clicar no botão Macros logo acima do botão Logout, ou então na janela de mensagem digitar "/macro", com isso irá aparecer a janela de edição de macro. Clicando no botão New vai aparecer para você digitar o nome e escolher uma imagem para sua macro, agora é só digitar sua macro(ou copiar-colar se vc for preguiçoso ) e quando terminar clicar no botão Complete.
Ainda está aqui?? Anda logo e olha aí embaixo!! Lerdinho vc não.


Para mandar uma mensagem
/s mensagem
Manda uma mensagem normal pra galera que está a sua volta, sabe aquele balãozinho na cabeça, é isso mesmo
/p E ae galera Cerveja hj na taverna!!!!!
Manda mensagem "E ae galera Cerveja hj na taverna!!!!!" para todos da party


Para exibir o nome de quem esta selecionado(target) usamos %t
/p Esse %t é bonzão mesmo, cuidado com o cara!!!
Vamos supor que você selecionou o Malestou(nome do meu personagem diga-se de passagem), essa macro vai mandar para todos da party "Esse Malestou é bonzão, cuidado com o cara!!!"


Agora para soltar magias
/cast Nome da Magia(Rank #)
Por exemplo
/cast Renew(Rank 2)
Utiliza a magia Renew de Rank 2 em quem estiver selecionado.
PS¹.: Uhhh, minha magia não foi, que aconteceu?? Seu energumeno, tira o espaço entre o nome da magia e o "(".
PS².: Uhhh, não sai duas magias, porque??? Lembre-se jovem Padawan, um tempo mínimo entre as magias você precisa, por isso bloqueada pela primeira a segunda magia ainda está.


Para selecionar um personagem fazemos assim
/target Nome_do_personagem
Seleciona o personagem que tenha o nome informado. Tá bom, sei que isso sozinho é meio inutil, mas calma jovem Padawan, util isso ainda será. Mas por enquanto lembre-se de uma coisa, não precisa ser o seu personagem, pode ser o nome do seu pet, nome de alguem de sua party, etc...


Agora já começa a ficar interessante, lembra que meu personagem se chama Malestou, um Priest bonzão de level 15, olha essa macro então:
/target Malestou
/cast Lesser Heal(Rank 3)
Essa macro lança a magia de cura Lesser Heal(Rank 3) no meu personagem independente de quem esteja selecionado, ela seleciona meu personagem(1ª linha) e logo em seguida lanca a magia de cura em quem está selecionado(2ª linha). Não disse que util ainda seria jovem Padawan.


Voce tb pode selecionar os Totens dos Shamans, para isso você usa
/target Nome do Totem
Por exemplo
/target Earthbind Totem
Seleciona o "Earthbind Totem"
Agora olha que idéia legal, se você criar uma macro que seleciona o Totem e lance uma magia de ataque logo em seguida, Smite(Rank 2) por exemplo, você irá criar uma macro destruidora de Earthbind Totem, e o melhor, faz isso tudo com um único botão.
Aqui vai uma lista de totens que eu achei
AIR: Nature Resistance Totem, Windwall Totem, Windfury Totem, Grace of Air Totem, Grounding Totem
EARTH: Stoneclaw Totem, Earthbind Totem, Tremor Totem, Strength of Earth Totem, Stoneskin Totem
WATER: Fire Resistance Totem, Poison Cleansing Totem, Disease Cleansing Totem, Healing Stream Totem, Mana Spring Totem
FIRE: Frost Resistance Totem, Flametongue Totem, Magma Totem, Fire Nova Totem, Searing Totem


Opa, agora vai vir a parte legal da coisa, os comandos script.
Como eu não ví nenhuma nomeclatura oficial de como esses comandos são chamados, então estou chamando eles de comandos script porque a linha dele precisa começar com um /script. Agora que eu falei um monte de vezes script não vai esquecer de colocar o /script.


Para voltar a selecionar o ultimo inimigo que você tinha selecionado o comando script TargetLastEnemy(), ele funciona exatamente como o bind da letra "G"(isso se vc não mudou).
Pode ir testar a letra "G" que eu espero, mas faz assim, clica em um inimigo que esteja láááá longe. porque lá longe??? Eu quero testar o bagulho e não começar uma luta seu energumeno. Pronto, clicou? Agora clica no seu personagem. Clicou tb? Agora aperta a tecla "G". Ahhhhhhhh entendeu amigão, bem é isso ai
Agora olha essa macro
/target Malestou
/cast Lesser Heal(Rank 3)
/script TargetLastEnemy()
Viu que bonito, meu priest se seleciona, lanca uma magia de cura em si mesmo e volta a selecionar o inimigo que eu estava lutando.
Fantástico!!!!!!


O proximo comando script que eu irei falar é o TargetUnit("player"), ele seleciona o seu próprio personagem.
Uhhh, mestre, porque usar isso se o /target faz a mesma coisa??. Calma jovem Padawan, saber a utilidade deste comando logo você saberá. Mas enquanto isso olhar a macro abaixo você deve
/script TargetUnit("player")
/cast Lesser Heal(Rank 3)
/script TargetLastEnemy()
É isso aí, a mesmo macro de cima, mas utilizando o comando script


Agora falarei do comando script CastSpellByName(), ele solta uma magia. Olha como ele é
CastSpellByName("Nome da magia(Rank #)")
É bem parecido com o /cast, olha um exemplo dele aí em baixo
/script TargetUnit("player")
/script CastSpellByName("Lesser Heal(Rank 3)")
/script TargetLastEnemy()
É isso aí, a mesmo macro de cima, mas utilizando o comando script para soltar magia


E pra mandar mensagem via comando script vc faz assim
SendChatMessage("mensagem","grupo")
A mensagem é, huuuu, a mensagem que vc quer mandar. O grupo vc tem que colocar pra quem vc quer mandar a mensagem, pode ser "say"(exibe o balãozinho na cabeça), "party"(mensagem para party) ou então "raid"(manda mensagem para a raid). Olha um exemplo como fica
/script SendChatMessage("E ae galera, cheguei!!!!!","party")
Essa macro manda "E ae galera, cheguei!!!!!" para todos da sua party.
Huuuu, e se eu não tiver em party ou raid mestre??Neste caso jovem Padawan, mensagem sua não será enviada e um alerta aparecerá dizendo que em party/raid você não está.


Os comandos script a seguir são todos muito parecidos, então vou explicar eles numa tacada só, por isso preste bantante atenção mas como você chegou até aqui, acho que não vai ter dificuldade em entender isso.
UnitName("target") -> Retorna o nome de quem está selecionado
UnitSex("target") -> Retorna o sexo de quem está selecionado(0-Masculino, 1-Feminino e 2-Indeterminado)
UnitLevel("target") -> Retorna o level de quem está selecionado
UnitRace("target") -> Retorna a raca de quem está selecionado. Dá erro se for um NPC que está selecionado.
UnitClass("target") -> Retorna a classe de quem está selecionado
UnitFactionGroup("target") -> Retorna a facçao. Dá erro se não percenter nem à Aliança nem à Horda.
UnitClassification("target") -> Retorna classificacao de quem está selecionado(elite, boss, normal, etc...)
UnitMana("target") -> Retorna a quantidade de mana de quem está selecionado
UnitHealth("target") -> Retorna a quantidade de vida de quem está selecionado
Agora é só colocar em uma mensagem e pronto. Quer ver, olha só:
/script SendChatMessage("Estou selecionando o "..UnitName("target"), "party")
PS¹.: Quando vc quer juntar coisas diferentes em um comando script, por exemplo juntar um texto com um comando script, ou então juntar 2 comandos scripts, a gente usa o "..". Esse .. é como se fosse o sinal de + da matemática, serve para juntar as coisas. Nesse nosso caso, quero juntar um texto ("Estou selecionando o") com um comando script(UnitName("target"))


Xíííííí, essa explicação aí de cima ficou muito longa, vou colocar um exemplo de macro usando comando script pra explicar melhor:
/script SendChatMessage("CUIDADO: " .. UnitName("target") .. "(" .. UnitClassification("target") .. ") " .. UnitRace("target") .. "-" .. UnitClass("target") .. " Nível:" .. UnitLevel("target") ,"party")
Essa macro manda um monte de informações para sua party sobre quem vc está selecionando, ela pega CUIDADO: e junta com o Nome e junta com ( e junta com a Classificação e junta com ) e junta com a Raça e junta com um - e junta com a Classe e junta com Nível: e junta com o Nível
No final deve sair algo assim: CUIDADO: Malestou(Elite) Undead-Priest Nível:17
Olha que legal, com um único botão você manda um monte de informações para todos da sua part, e o melhor de tudo, sem perder tempo digitando


Depois disso tudo vai um comando script bem facinho. Para selecionar o inimigo que está mais perto basta você usar TargetNearestEnemy(). Vamos pegar aquela macro onde meu priest se curava e logo em seguida voltava a selecionar o inimigo, mas agora eu quero selecionar o inimigo mais próximo e não o que já estava selecionado, olha que fácil:
/target Malestou
/cast Lesser Heal(Rank 3)
/script TargetNearestEnemy()
Como os comandos são muito parecidos, foi só trocar o TargetLastEnemy() pelo TargetNearestEnemy().
Não disse que era fácil


Já falamos muito dos inimigos, e esse coisa toda, depois voltamos a falar deles. Vamos mudar um pouco o assunto e falar dos comandos script que envolve bolsas, mochilas e os itens que estão dentro delas.
Para começar, precisamos saber que o WoW numera as bolsas da direita pra esquerda assim:
[4] [3] [2] [1] [0]
Com isso já dá pra saber que a sua mochila principal(a da tecla de atalho "B") fica na posição 0 e as suas outras bolsas ficam nas posições 1, 2, 3 e 4. Dá uma olhada lá na disposição das bolsas que você vai entender do que eu estou falando


Agora que você já sabe disso jovem Padawan, vamos aos primeiros comandos script, são eles o OpenBag(#Bolsa) e o CloseBag(#Bolsa), esses comandos servem para abrir e fechar a bolsa que está na posição informada. Olha um exemplo pla ficar melhor:
/script OpenBag(0)
Esta macro abre a sua bolsa principal


Quer mais exemplos de macros, tudo bem jovem Padawan preguiçoso, estas 2 macros abre e fecha todas as suas mochilas/bolsa/etc respectivamente.
Macro1:
/script OpenBag(0)
/script OpenBag(1)
/script OpenBag(2)
/script OpenBag(3)
/script OpenBag(4)
Macro2:
/script CloseBag(0)
/script CloseBag(1)
/script CloseBag(2)
/script CloseBag(3)
/script CloseBag(4)
Uhhh mestre, não funcionou, porque??? Jovem Padawan, uma pergunta apenas, em macros separadas estes comandos estão????


Agora que você já sabe como o WoW numera suas bolsas, precisamos saber como ele numera os itens dentro da sua bolsa. Bem, pra não enrolar muito já vou falando que ele numera seus itens da esquerda para a direita e de cima para baixo:
Uma bolsa de 16 posições ele identifica os itens assim:
[01] [02] [03] [04]
[05] [06] [07] [08]
[09] [10] [11] [12]
[13] [14] [15] [16]
Já uma bolsa de 10 posições ele identifica os itens assim:
[01] [02]
[03] [04] [05] [06]
[07] [08] [09] [10]
E uma bolsa de 6 posições fica assim:
[01] [02]
[03] [04] [05] [06]
O resto vc deduz a partir do que eu já disse, tá na hora de começar a pensar um pouco seu preguiçoso


Agora que você já sabe disso tudo vamos continuar, o comando script para usar um item é o UseContainerItem (#Bolsa, #Item), este comando é como se clicassemos com o botão direito do mouse sobre item. Olha um exemplo dele aí em baixo:
/script UseContainerItem(0,1)
Esta macro é muito utilizada, o pessoal costuma deixar a bandagem na posição 1 da bolsa principal, aí é só executar a macro para usar a bandagem.
Outra macro bastante utilizada é essa
/script TargetUnit("player")
/script UseContainerItem(0,1)
/script TargetLastEnemy()
Essa macro é bem parecida com a macro acima, só que ela tem umas coisinhas a mais, como por exemplo ela sempre usa a macro no seu personagem, não precisando perder tempo selecionando ele, e logo em seguida volta a selecionar o inimigo que estava focado antes.


O próximo comando script é o PickupContainerItem(#Bolsa, #Item). Este comando faz um monte de coisas dependendo de como está seu cursor(a setinha que você usa pra clicar se vc preferir) e o lugar na bolsa que você informou
- Cursor com item e posição na bolsa informada sem item -> o comando guarda o item do cursos na bolsa;
- Cursor sem item e posição na bolsa informada com item -> o comando traz para o cursos o item da bolsa;
- Cursor com item e posição na bolsa informada com item -> o comando troca a posição dos itens na bolsa(posição do item do cursos com a posição do item informada no comando).
Olha como o comando funciona:
/script PickupContainerItem(0,1)
Olha um outro exemplo de macro usando esse comando
/script PickupContainerItem(0,1)
/script PickupContainerItem(0,2)
Esta macro troca o que está na posição 1 com o que está na posição 2 da sua mochila principal. Ela faz isso da seguinte forma, na primeira linha ela traz para o cursor o que está na posição 1 da sua bolsa, já na segunda linha ela troca o que está no cursor(posição 1) com o que está na posição 2.
Uhhhh mestre, não é meio inutil esse comando, só ficar trocando as coisas? Calma jovem Padawan, o próximo capitulo da nossa saga aguardar você deve para saber toda a utilidade deste comando


O comando script para equipar ou desequipar algum item no seu corpo é o
PickupInventoryItem(#Corpo). Este comando também vai agir dependendo de como está seu cursor e a parte do corpo que você informou
- Cursor com item e parte do corpo informada sem item -> equipa o item do cursor na parte o corpo informada;
- Cursor sem item e parte do corpo informada com item -> desequipa o item do corpo e coloca ele no cursor;
- Cursor com item e parte do corpo informada com item -> o comando troca o item do corpo com o item do cursor.
Eu testei descobri algumas posições do corpo, se alguem souber as outras me avisa que eu atualizo essa lista:
1-Head
4-Shirt
5-Chest
6-Waist
7-Legs
8-Feet
9-Wrists
10-Hands
11-Finger
12-Finger 2
15-Back
16-Main Hand
17-Off Hand
18-Ranged
23/22/21/20-Bolsas em suas respectivas posições
Agora vamos a um exemplo de macro usando isso tudo
/script PickupInventoryItem(16)
/script PickupContainerItem(0,2)
/script PickupContainerItem(0,1)
/script PickupInventoryItem(16)
Rogues usam bastante esse tipo de macro, ela serve para trocar a arma da sua mão principal. Ele na primeira linha desequipa o que está na mão principal, na segunda linha coloca o item na posição 2 da sua bolsa principal, na terceira linha pega o item que está na posição 1 de sua bolsa principal e na ultima linha equipa na não principal o item que foi pego na bolsa







/SCRIPT - Coisas que tem que estar depois do /script
==================================
i=1; -> Atribui um valor
l={1,14,28,42,56}; -> Cria um array
l[1] -> Acessa a posicao 1 do array(array comeca em 1)


AssistUnit("target") -> Seleciona quem esta atacando o target
AssistUnit("pet") -> Seleciona quem esta atacando seu pet
SpellStopCasting() -> Interrompe a magia que esta sendo solta
CastPetAction(4) -> executa a acao 4 do seu pet
PetAttack() -> manda o pet atacar

UnitIsFriend("player","target") -> Retorna Verdadeiro se for amigo
GetPartyMember(1) -> Retorna Verdadeiro se você for parte de uma party
UnitInParty("target") -> Retorna Verdadeiro se for da sua party
GetNumRaidMembers() -> Retorna o numero de pessoas na raid
UnitCreatureFamily("pet") -> Retorna o tipo do seu pet
GetSubZoneText() -> Retorna o nome da área que vc está
CursorHasItem() -> Retorna Verdadeiro se tiver um objeto no cursor
PlayerFrame.inCombat -> Retorna Verdadeiro se estiver em combate
GetContainerItemLink(4, 1) -> Retorna Verdadeiro se tiver algo nesse slot da bolsa


for inicia_variavel,valor_final_da_variavel,valor_do_incremento_ou_decremento do bloco_de_comando; break;
if (Condicao) then comando_se_condicao_verdadeira; end;
if (Condicao) then comando_se_condicao_verdadeira; else comando_se_condicao_falsa; end;
--Se tiver mais de 1 comando separa-los por ;
--for e if são mais complicado de visualizar porque todos os comandos devem estar na mesma linha até terminar o for e o if, com o break; e o end; respectivamente. Não pode ter quebra de linha, <enter> ou qualquer coisa assim

== -> Testa igualdade
~= -> Testa diferenca
>, >=, <, <= -> já da pra saber
not (condicao) -> Negacao da condicao
nil -> Valor nulo



VARIAVEIS GLOBAIS
==================================
/script setglobal("nome_da_variavel","valor"); -> Seta um um valor em uma variavel global que pode ser acessada em qualquer macro
/script getglobal("nome_da_variavel"); -> Pega o valor da variavel global

Macro1
/script setglobal("RJ","Healing Touch(Rank 3)");
/s hehe -> deixa alguma coisa no final pra saber que executou com sucesso
Macro2
/script CastSpellByName(getglobal("RJ"))
--Depois de executar a Macro1, em qualquer outra macro só preciso usar a variavel global getglobal("RJ") que está substituindo Healing Touch(Rank 3)


EXEMPLOS
==================================
/script TargetUnit("player");
/script CastSpellByName("Lesser Heal(Rank 1)");
--> Mesmo exemplo, mas utilizando comandos /script

/script TargetUnit("player"); CastSpellByName("Lesser Heal(Rank 1)");
--> Não testei ainda, mas deve funcionar. É o mesmo exemplo acima, só que os comandos estao em um unico /script



/script if UnitIsFriend("player","target") then CastSpellByName("Lesser Heal(Rank 1)"); else CastSpellByName("Holy Smite(Rank 1)"); end;
--> Este aqui verifica se quem está selecionado é amigo. Se for verdadeiro(é amigo) ele lança a magia Lesser Heal(Rank 1) nele. Se for falso(não é amigo) ele lança a magia Holy Smite(Rank 1)




Outros Exemplos
/script if UnitSex("target")==1 then g="F"; else g="M"; end; -> Dependendo do sexo da unidade, joga F ou M dentro da variavel G(não precisa declarar)
/script for i=1,10,+1 do SendChatMessage("Contador="..i,"party"); break; -> manda um contador para todos da party
/script if (UnitCreatureFamily("pet") == "Felhunter") then TargetUnit("player"); CastPetAction(4);TargetLastEnemy();end -> Se o tipo do seu pet for Felhunter, seleciona e executa a acao 4 do pet e depois volta a selecionar o inimigo
/script if (UnitIsFriend("player", "target")) then AssistUnit("target") PetAttack() end -> Se um target for amigo e estiver sendo atacado, manda o pet atacar quem o esta atacando
/script if (UnitRace("target")~=nil) then SendChatMessage("Raca:"..UnitRace("target"),"party"); else SendChatMessage("Não tem target selecionado","party"); end; -> Se tiver um target selecionado, informa para a party a raca dele
/script if (not PlayerFrame.inCombat) then if (not GetContainerItemLink(4, 1)) then OpenBag(4); else CastSpellByName("Feed Pet"); PickupContainerItem(4, 1); end; end; -> Se não tiver em combate e tiver comida na posicao referenciada da bolsa, alimenta o pet

Enviado: Seg Dez 11, 2006 5:03 pm
por Lobo_Fenris
Pessoal preciso de uma ajuda de quem esta sacando bem desses macros, preciso de um macro que caste a magia Ressurect e jogue uma mensagem no /raid e /p que estou usando esta spell e em quem estou usando. Alguem pode me ajudar?

Enviado: Ter Dez 12, 2006 1:29 pm
por volles
Peguei exatamente esse post para fazer isso, ainda não testei o comando mas acho q funciona.

/s rezando o %t
/cast Lesser Heal(Rank 3)


Porem ao invés da magia lesser heal, substitua pela magia de rezz...
hoje a noite vou testar e ver se realmente funciona e se precisa de algum ajuste......seria ideal todas as classes q tenham a magia de rez ter isso.

Enviado: Ter Dez 12, 2006 5:37 pm
por Valiant
Melhor trocar esse /s por /y