в случае использования одного и того же спелла вместо spell1 и spell2 (например использование одного и того же спелла в разные цели в различных условиях), можно использовать такую запись
При выполнении макроса блоки условий последовательно анализируются и как только находится первый подходящий используется спелл/абилка, которая привязана к данному блоку. hint: если поставить в конце строки спелл с пустым блоком условий "[]" или же просто "...;spell", то он скастуется если никакой из предыдущих блоков не сработал.
Один макрос может содержать несколько отдельных строк "/cast ...", но учтите, что вы не сможете одним макросом скастовать два спелла сидящих на гкд, для второго выведется сообщение об ошибке "заклинание еще не готово".
Если назначение параметра spellX интуитивно понятно - название спелла/абилки, которое нужно применить в условиях X (hint: заклинание можно вставлять по шифт+клику из спеллбука, единственно, что стоит удалить указание уровня применяемого заклинания, тогда по умолчанию будет кастоваться максимально выученный уровень), то с блоками собственно самих условий не все так прозрачно. Давайте рассмотрим их подробнее.
Общая структура блока условий:
Code
[(no)mod:mod1, @target1, <conditions1>]
Порядок параметров внутри блока не важен, но указанный выше кажется мне наиболее наглядным. Любой параметр внутри блока можно пропустить, тогда для проверки используются условия по умолчанию: в случае пропуска (no)mod подходит любое нажатие клавиши вызова макроса, с шифтом, альтом, контролом, либо без оных; target по умолчанию берется текущая цель игрока; в случае пропуска conditions, никаких дополнительных условий не проверяется.
(no)mod:mod1 проверка на (не)используемый при вызове макроса модификатор. Ex. mod:ctrl Список возможных mod - ctrl, alt, shift Также их можно комбинировать в одном условии через символ "/", например nomod:shift/alt Если применить просто nomod, то выполнение блока будет происходить, только при вызове макроса без модификаторов вообще
Пример макроса с модификаторами:
Code
/cast [mod:ctrl] Holy Light; [mod:alt] Flash of Light; [mod:shift] Holy Shock; Blessing of Kings
при нажатом контроле кастуется длинный хил, при альте быстрый, при шифте шок, а если без - баффается БоК
@target Этот параметр указывает к какой цели нужно применять привязанный к блоку условий спелл, а так же цель которую нужно проверять на соблюдение conditions (см. далее) Список возможных target - player, target, targettaget, focus, mouseover, party1 (от одного до 4(?)), arena1 (1-5). Список всех UnitID http://www.wowwiki.com/UnitId Раньше использовалась запись target=UnitID, like target=focus и хотя сейчас такая запись тоже доступна, для краткости макросов предпочитаю использовать @UnitID Пример:
Один из наиболее часто используемых макросов для рог - использовать блайнд, при нажатом шифте в фокус-таргет
в упрощенной записи выглядит как
Code
/cast [mod:shift, @focus] [] Blind
В 1ом блоке проверяется нажата ли кнопка шифт и указывается что спелл применяется к фокус-цели, если этот блок не выполняется (то есть шифт не нажат), то проверяется второй блок "[]" (пустой блок со всеми параметрами по умолчанию, т.е. без проверки модификаторов, условий и к текущей цели)
Дополнительные условия состояния цели Список возможных состояний - (no)exists, (no)dead, (no)harm, (no)help Пример:
Code
/cast [help, dead] Ressurection; [help, nodead] Sign of the Wild; [harm, nodead] Faery Fire
Макрос кастует рессурект в мертвого союзника, баффает живого лапкой, и кидает ФФ в живого противника
Набор условий в макрос языке скуден. Если вы хотите проверять находится ли цель в необходимом ренже, лосе или есть ли на ней какой-либо бафф/дебафф - сразу забудьте. Выполнить такую проверку посредством не /script макроса невозможно.
stance У многих классов доступны различные так называемые стойки (типичный пример варриоры или друиды), в зависимости от которых возможны разные спеллы и прочее. Для проверки стоек используется выражение "(no)stance:x" в блоке условий. Пример:
Code
/cast [stance:1] Увечье (медведь)(); [stance:3] Увечье (кошка)(); [nostance] Лунный огонь
применение соответствующего мангла ферал-друидом в зависмости от формы и мунфаера в гуманоиде
Список возможных stance для классов:
Code
Warrior [1]Battle [2]Def [3]Bers Druid [1]Bear [2]Aqua [3]Cat [4]Travel [5]Moonkin/Tree [6]Flight *если у друида нет формы совы/дерева в талантах, то флай форма будет 5! Priest [1]Shadowform Rogue [1]Stealth [3]Shadow Dance Shaman [1]Ghost Wolf Warlock [2]Demon Form
stealth Так же для классов разбойник и друид доступна проверка на наличие стелса - (no)stealth
Code
/cast [stealth] Sap; [nostealth] Gouge
Сап, гоудж одним макросом в зависимости от стелса
(no)equipped Позволяет проверять в блоке условий тип экипировки. Нужен в основном варриорам для применения абилок доступных с определенным типом оружия Возможные типы предметов: shields, two-handed, one-handed; так же конкретные разновидности оружий: Two-Handed Swords, Daggers, etc.
ну или штота в этом стиле Типы предметов на WoWWiki: http://www.wowwiki.com/ItemType
pet Классы с петами могут в маросах проверять их наличие/тип условием "(no)pet=pet type/pet name"
Пример для фрост магов:
Code
/cast [nopet] Призыв элементаля воды /stopmacro [nopet] /cast Холод /petattack
вызов пета/юз петовской новы одной кнопкой
Дополнительные команды в макросах:
Кроме команды /cast в макросах доступны следующие команды список всех возможных команд на русском и английском можно посмотреть тут http://forums.goha.ru/showthread.php?p=5921751#post5921751, http://www.wowwiki.com/Macro_API
Учтите, что почти ко всем этим командам можно применять блоки условий Примеры:
снятие с себя баффа БоПа и отмена применения скилла блейдшторм у варриоров
Примеры всяких макросов с комментариями:
Code
Kirkun писал(а): Помогите пожайлуста с макросом: нажатие клавиши юз абилки (мастерколл) на себя, нажатие клавиши+шифт юз на твою цель, но если цель враг, то юз на цель этого врага.
Итак. Макрос должен выполнять 3 возможных действия: каст "Приказ хозяина" на самого игрока, каст в цель если она дружественна или в цель цели, если в таргете враг. Первый вариант - модификатор шифт не используется, нужно применить абилку в себя
[
Code
nomod:shift,@player]
Второй вариант - нажат мод шифт и в таргете дружественная цель
Code
[mod:shift,@target,help]
Третий вариант - также нажат мод шифт, но в таргете враг, потому нужно применить мастерколл в цель цели, если она дружественная. В силу ограничений макрос-языка, невозможно проверить один юнитфрейм, а применить спелл к другому, но нужно учесть, что третий блок будет проверяться только если не сработал 1ый и 2ой. Т.е. в таргете находится недружественная цель (иначе бы сработал 2ой блок). Тогда 3ий блок будет выглядеть так
Code
[mod:shift,@targettarget,help]
Составим макрос целиком
Code
#showtooltip /cast [nomod:shift,@player] [mod:shift,@target,help] [mod:shift,@targettarget,help] Приказ хозяина
Code
gem писал(а): помогите пожалуйста если это возможно написать макрос, чтоб приоритетом каст кидался по маусоверу, а когда мышка не наведена по фокусу
Довольно несложный, но часто используемый тип макросов с приоритетом возможных целей 1ая цель - маусовер
Code
[@mouseover,harm,nodead]
в блок добавлена проверка не только на враждебность юнита под курсором (это может быть как 3D модель персонажа, собственно бегающая на вашем экране, так и любой его неймплейт, например в гладиусе), но дополнительно проверка, на то что он не мертв. Это нужно для того, чтобы блок не срабатывал если вы забыли мышку над трупиком уже убитого врага.
2ая цель - фокус
Code
[@focus,harm,nodead]
ну и добавим 3ью цель - текущую
Code
[][/code]
просто пустой блок, все значения взяты по умолчанию <img src="http://s105.ucoz.net/sm/1/smile.gif" border="0" align="absmiddle" alt="smile">
Если запихнуть это первой строкой макроса, позволяет показывать подсказку указанного спелла при наведении курсора на кнопку с макросом. Если не указывать имя спелла, то будет указываться подсказка спелла который вызовется в текущих условиях
Надеюсь сей wall of text не сделает ваши глаза развидеть, и покажет ПРИНЦИПЫ написания макросов в ВоВ, или подскажет пути где их еще можно посмотреть.
з.ы. вообщем если я чего-то где-то невнятно/недостаточно расписал - спрашивайте, буду уточнять. если вы вообще ничего не поняли, то опишите какой макрос вы хотели бы увидеть, я постараюсь его составить и описать для него где, что и почему
Зачем после nomod писать shift? Проще оставить чтобы не использовался спел при любом модификаторе. Me: Макрос написан так специально, чтобы продемонстрировать возможности nomod на примерах и кстати именно nomod:shift может оказаться полезным. например у меня на альт кроме всего прочего забиндена функция push-to-talk вентрилы. догадываешься, что произойдет, если я, говоря что-либо в вентру, попытаюсь заблайндить цель в случае с просто nomod? правильно - ничего! а должен произойти блайнд
Godzill: При написании макроса на перехват двуруча на 1н и щит (и обратно) не хватает места, названия слишком длинные, то есть для текущего сеанса все нормально, но стоит релогнуться и окончание макроса затирается, ограничение видать на количество символов. Как бороться с этим? Ufolog: Есть аддон называется SuperduperMacro, там можно писать долгие макроси и скрипты Me: наверно более простой способ, уже упоминавшийся в соседнем треде про макросы, состоит в том, чтобы создать в стандартном эквип менеджере два сета shield_set и twohand_set. в них заполнить только ячейки с оружием (остальные поставить инактив, т.е. перечеркнутая красная окружность). тогда, вместо команды /equip можно использовать команду /equipset <set name>. просто своевременно пересохраняйте сеты, когда апгрейдите что-либо из предметов