Макросы в ВоВ используются для оптимизации и упрощения интерфейса игрока. Начиная от самых простых макросов таких как высказывание в чат «полечите меня срочно», когда ваше здоровье опускается ниже 20%, и заканчивая более сложными макросами такими как смена стоек у воина или каст лечащего заклинания во 2ую или 3ю строчку Эмерженси монитора, стандартного для большинства игроков аддона – CT_raid. Итак начнем с общих макросов, и затем перейдем к конкретным примерам.
Для просмотра макросов на данном персонаже, а так же для создания новых и редактирования уже имеющихся используется команда:/macro
Она позволяет открыть окно менеджмента макросов. Всего у вас может быть 18 макросов общих для Аккаунта и 18 для конкретного персонажа, итого в сумме 36 макросов, что достаточно много.
Заклинания
Замечание: Начиная с патча 1.хх колдовство заклинаний больше не требует окончания в записи “(rank X)”. Достаточно записать: /cast Holy Light для колдовства спела максимального ранга. Макросы такого типа не позволяют кастить спелы более низкого ранга на выбранную цель, для использования низких рангов нужно дописывать окончание (rank X), где Х – нужный ранг спела. Пример: /cast Holy Light (rank 1);
Колдовство заклинаний на самого себя без потери фокуса на цели:/script CastSpellByName('Holy Light', 1)
Колдовство заклинаний на самого себя если нельзя колдовать заклинание на выбранную цель:
Данный макрос кастует заклинание “spell” на самого себя только в том случае если цель враждебна
/script if ( not UnitIsFriend("player", "target") ) then CastSpellByName("Spell", 1); end
Колдовство заклинаний на цель конкретного класса:
Используется в основном для баффов рейда, по конкретным классам, возможны модификации применительно к ПвП
/script class = UnitClass("target"); if ( ( class == "Rogue" ) or ( class == "Warrior" ) ) thenCastSpellByName("Blessing of Might"); else CastSpellByName("Blessing of Wisdom"); end
Колдовство заклинаний на цели разных уровней(баффы):
Используется очень редко, но я все же приведу пример пристовского макроса для баффа на стамину, с проверкой уровня цели:
/script Pre="Power Word: Fortitude(Rank " Sp={1,2,14,26,38,50} if (UnitLevel("target") ~= nil and UnitIsFriend("player","target")) thenfor i=6,1,-1 do if (UnitLevel("target") >= Sp[i]) then CastSpellByName(Pre..i..”)”) return end end end
Колдовство заклинаний на ближайшую цели с проверкой кол-ва % здоровья цели:
Приведу пример на основе каста хилиерских заклинаний на ближайшие цели с проверкой на кол-во здоровья цели, макрос лечит ближайшую дружественную цель со здоровьем ниже 70%, проверяются только ближайшие 40 целей.
/script for i=1,40 do TargetNearestFriend(); if UnitHealth("target")/UnitHealthMax("target") < 0.7 then if UnitIsPlayer("target") then CastSpellByName("Lesser Healing Wave") end end end; TargetLastEnemy();
Анонсирование кастуемых заклинаний в пати-чат:
/cast Healing Touch/party Healing %t in 3.5 seconds
Колдовство заклинаний на конкретных игроков партии:
Всегда лечит первого игрока партии Флешкой, при этом не сбивает фокуса на выделенной цели.
/script TargetUnit("party1")/cast Flash Heal/script TargetLastTarget()
Колдовство нескольких заклинаний (баффов) с проверкой на наличие оных на цели:
Кастует различные баффы на цель, только в том случае если на цели еще нет такого заклинания(баффа), пример версии для друида:
/script i=1;m=0;while(UnitBuff("target",i)~=nil) do if(strfind(UnitBuff("target",i),"Regeneration")~=nil) then m=1; end;i=i+1;end; c=CastSpellByName; if(m==1) then c("Mark of the Wild(Rank 10)");else c("Thorns(Rank 10)");end;
Макрос для поиска номера заклинания в книге умений:
Иногда использования скриптов CastSpellByName приводит к тому что длинна макроса превышает допустимые 255 символов, например макрос: /script CastSpellByName(’Holy Light’, 1) занимает достаточно много символов, когда как проще использовать макрос: /script CastSpellByNumber(); Но как же узнать какой номер у того или иного заклинания из вашей книги? На помощь приходит очень полезный и распространенный макрос проверки номера заклинания, он выдает на экран имя спела с соответствующим номером:
/script SpellNumber=26; SpellName,SpellRank=GetSpellName(SpellNumber,"spell");M=format("Spell %d: %s %s",SpellNumber,SpellName,SpellRank); DEFAULT_CHAT_FRAME:AddMessage(M);
далее