Guide: How to macro it! Гайд: Как писать макросы!  
Автор Сообщение

6
Сообщение Guide: How to macro it! Гайд: Как писать макросы!

Общая структура макроса на применение спеллов и абилок:

Код:
/cast [(no)mod:mod1, @target1, ] spell1; [(no)mod:mod2, @target2, ] spell2; etc...
в случае использования одного и того же спелла вместо spell1 и spell2 (например использование одного и того же спелла в разные цели в различных условиях), можно использовать такую запись
Код:
/cast [(no)mod:mod1, @target1, ] [(no)mod:mod2, @target2, ] spell
есстественно их можно комбинировать
Код:
/cast [(no)mod:mod1, @target1, ] [(no)mod:mod2, @target2, ] spell1; [(no)mod:mod3, @target3, ] spell2; etc...
При выполнении макроса блоки условий последовательно анализируются и как только находится первый подходящий используется спелл/абилка, которая привязана к данному блоку.
hint: если поставить в конце строки спелл с пустым блоком условий "[]" или же просто "...;spell", то он скастуется если никакой из предыдущих блоков не сработал.

Один макрос может содержать несколько отдельных строк "/cast ...", но учтите, что вы не сможете одним макросом скастовать два спелла сидящих на гкд, для второго выведется сообщение об ошибке "заклинание еще не готово".

Если назначение параметра spellX интуитивно понятно - название спелла/абилки, которое нужно применить в условиях X (hint: заклинание можно вставлять по шифт+клику из спеллбука, единственно, что стоит удалить указание уровня применяемого заклинания, тогда по умолчанию будет кастоваться максимально выученный уровень), то с блоками собственно самих условий не все так прозрачно. Давайте рассмотрим их подробнее.


Общая структура блока условий:

Код:
[(no)mod:mod1, @target1, ]
Порядок параметров внутри блока не важен, но указанный выше кажется мне наиболее наглядным. Любой параметр внутри блока можно пропустить, тогда для проверки используются условия по умолчанию: в случае пропуска (no)mod подходит любое нажатие клавиши вызова макроса, с шифтом, альтом, контролом, либо без оных; target по умолчанию берется текущая цель игрока; в случае пропуска conditions, никаких дополнительных условий не проверяется.


(no)mod:mod1
проверка на (не)используемый при вызове макроса модификатор. Ex. mod:ctrl
Список возможных mod - ctrl, alt, shift
Также их можно комбинировать в одном условии через символ "/", например nomod:shift/alt
Если применить просто nomod, то выполнение блока будет происходить, только при вызове макроса без модификаторов вообще

Пример макроса с модификаторами:
Код:
/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
Пример:
Код:
/cast [nomod:shift, @target][mod:shift, @focus] Blind
Один из наиболее часто используемых макросов для рог - использовать блайнд, при нажатом шифте в фокус-таргет

в упрощенной записи выглядит как
Код:
/cast [mod:shift, @focus] [] Blind
В 1ом блоке проверяется нажата ли кнопка шифт и указывается что спелл применяется к фокус-цели, если этот блок не выполняется (то есть шифт не нажат), то проверяется второй блок "[]" (пустой блок со всеми параметрами по умолчанию, т.е. без проверки модификаторов, условий и к текущей цели)


Дополнительные условия


состояния цели
Список возможных состояний - (no)exists, (no)dead, (no)harm, (no)help
Пример:
Код:
/cast [help, dead] Ressurection; [help, nodead] Sign of the Wild; [harm, nodead] Faery Fire
Макрос кастует рессурект в мертвого союзника, баффает живого лапкой, и кидает ФФ в живого противника

Набор условий в макрос языке скуден. Если вы хотите проверять находится ли цель в необходимом ренже, лосе или есть ли на ней какой-либо бафф/дебафф - сразу забудьте. Выполнить такую проверку посредством не /script макроса невозможно.


stance
У многих классов доступны различные так называемые стойки (типичный пример варриоры или друиды), в зависимости от которых возможны разные спеллы и прочее. Для проверки стоек используется выражение "(no)stance:x" в блоке условий.

Пример:
Код:
/cast [stance:1] Увечье (медведь)(); [stance:3] Увечье (кошка)(); [nostance] Лунный огонь
применение соответствующего мангла ферал-друидом в зависмости от формы и мунфаера в гуманоиде

Список возможных stance для классов:
Код:
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
Код:
/cast [stealth] Sap; [nostealth] Gouge
Сап, гоудж одним макросом в зависимости от стелса


(no)equipped
Позволяет проверять в блоке условий тип экипировки. Нужен в основном варриорам для применения абилок доступных с определенным типом оружия
Возможные типы предметов: shields, two-handed, one-handed; так же конкретные разновидности оружий: Two-Handed Swords, Daggers, etc.

Пример:
Код:
/cast [equipped:shields] Shield Bash; [equipped:two-handed] Pummel
ну или штота в этом стиле :)
Типы предметов на WoWWiki: http://www.wowwiki.com/ItemType


pet
Классы с петами могут в маросах проверять их наличие/тип условием "(no)pet=pet type/pet name"

Пример для фрост магов:
спызженно у SiG]F.S(
Код:
/cast [nopet] Призыв элементаля воды
/stopmacro [nopet]
/cast Холод
/petattack
вызов пета/юз петовской новы одной кнопкой


Дополнительные команды в макросах:

Кроме команды /cast в макросах доступны следующие команды
список всех возможных команд на русском и английском можно посмотреть тут http://forums.goha.ru/showthread.php?p=5921751#post5921751, http://www.wowwiki.com/Macro_API

Учтите, что почти ко всем этим командам можно применять блоки условий

Примеры:
Код:
/equipset [noequiped:shields] Shield_set; Twohanded_set
Надеть сет со щитом, если нет щита на персонаже; надеть сет с двуручным оружием в обратном случае

Код:
/targetenemy [noharm][dead][noexists]
Пытается автоматически затаргетить врага только если текущая цель: не враг, уже мертва или не выбрана

Код:
/use 10
Активный юз перчаток (нарукавная ракетница или гипер-скоростные ускорители у инженеров)
8 слот ботинок, 6 слот пояса, 13 слот верхнего тринкета, 14 нижнего

Код:
/cancelaura вихрь клинков, длань защиты
снятие с себя баффа БоПа и отмена применения скилла блейдшторм у варриоров


Примеры всяких макросов с комментариями:


Kirkun писал(а):

Помогите пожайлуста с макросом: нажатие клавиши юз абилки (мастерколл) на себя, нажатие клавиши+шифт юз на твою цель, но если цель враг, то юз на цель этого врага.

Итак. Макрос должен выполнять 3 возможных действия: каст "Приказ хозяина" на самого игрока, каст в цель если она дружественна или в цель цели, если в таргете враг.
Первый вариант - модификатор шифт не используется, нужно применить абилку в себя
Код:
[nomod:shift,@player]

Второй вариант - нажат мод шифт и в таргете дружественная цель
Код:
[mod:shift,@target,help]

Третий вариант - также нажат мод шифт, но в таргете враг, потому нужно применить мастерколл в цель цели, если она дружественная. В силу ограничений макрос-языка, невозможно проверить один юнитфрейм, а применить спелл к другому, но нужно учесть, что третий блок будет проверяться только если не сработал 1ый и 2ой. Т.е. в таргете находится недружественная цель (иначе бы сработал 2ой блок). Тогда 3ий блок будет выглядеть так
Код:
[mod:shift,@targettarget,help]


Составим макрос целиком
Код:
#showtooltip
/cast [nomod:shift,@player] [mod:shift,@target,help] [mod:shift,@targettarget,help] Приказ хозяина


gem писал(а):

помогите пожалуйста если это возможно написать макрос, чтоб приоритетом каст кидался по маусоверу, а когда мышка не наведена по фокусу

Довольно несложный, но часто используемый тип макросов с приоритетом возможных целей
1ая цель - маусовер
Код:
[@mouseover,harm,nodead]
в блок добавлена проверка не только на враждебность юнита под курсором (это может быть как 3D модель персонажа, собственно бегающая на вашем экране, так и любой его неймплейт, например в гладиусе), но дополнительно проверка, на то что он не мертв. Это нужно для того, чтобы блок не срабатывал если вы забыли мышку над трупиком уже убитого врага.

2ая цель - фокус
Код:
[@focus,harm,nodead]


ну и добавим 3ью цель - текущую
Код:
[]
просто пустой блок, все значения взяты по умолчанию :)

Макрос целиком будет выглядеть так
Код:
#showtooltip
/cast [@mouseover,harm,nodead] [@focus,harm,nodead] [] Harmfull spell



Дополнительные tips:

Код:
#showtooltip 
Если запихнуть это первой строкой макроса, позволяет показывать подсказку указанного спелла при наведении курсора на кнопку с макросом. Если не указывать имя спелла, то будет указываться подсказка спелла который вызовется в текущих условиях


Полезные ссылки:

http://www.wowwiki.com/Making_a_macro

Надеюсь сей wall of text не сделает ваши глаза развидеть, и покажет ПРИНЦИПЫ написания макросов в ВоВ, или подскажет пути где их еще можно посмотреть.

з.ы. вообщем если я чего-то где-то невнятно/недостаточно расписал - спрашивайте, буду уточнять. если вы вообще ничего не поняли, то опишите какой макрос вы хотели бы увидеть, я постараюсь его составить и описать для него где, что и почему

Kirkun: есть только вопрос:
Код:
/cast [nomod:shift, @target][mod:shift, @focus] Blind
Зачем после nomod писать shift? Проще оставить чтобы не использовался спел при любом модификаторе.
Me: Макрос написан так специально, чтобы продемонстрировать возможности nomod на примерах и кстати именно nomod:shift может оказаться полезным. например у меня на альт кроме всего прочего забиндена функция push-to-talk вентрилы. догадываешься, что произойдет, если я, говоря что-либо в вентру, попытаюсь заблайндить цель в случае с просто nomod? правильно - ничего! а должен произойти блайнд

Godzill: При написании макроса на перехват двуруча на 1н и щит (и обратно) не хватает места, названия слишком длинные, то есть для текущего сеанса все нормально, но стоит релогнуться и окончание макроса затирается, ограничение видать на количество символов.
Как бороться с этим?
Ufolog: Есть аддон называется SuperduperMacro, там можно писать долгие макроси и скрипты
Me: наверно более простой способ, уже упоминавшийся в соседнем треде про макросы, состоит в том, чтобы создать в стандартном эквип менеджере два сета shield_set и twohand_set. в них заполнить только ячейки с оружием (остальные поставить инактив, т.е. перечеркнутая красная окружность). тогда, вместо команды /equip можно использовать команду /equipset . просто своевременно пересохраняйте сеты, когда апгрейдите что-либо из предметов


15 янв 2010, 01:03
Профиль

0
Сообщение Re: mini-gide:How to macro it!
Годный гайд. Главное - нужный начинающему.

Только в названии - gUide.

И да , забыт /castsequence .


15 янв 2010, 01:18
Профиль

0
Сообщение Re: mini-gide:How to macro it!
Хорошый гайд, написано в новом стиле кажысь в 3.3 добавили "@". А гайд по скриптам можешь нвписать? Ме всегда интересовала проверка на кулдауне ли руна у ДК, за ДК оченьбы спростило игру=)

Как помне /castsequence не очень харошая команда в макросах, раньше юзал макрос для ДК для нанесения болезней 1 кнопкой, написан был через /castsequence, если 1 из записаных абилок резисститса, парируется или мисает, то для повторного нанесения надо юзать всю последовательность опять, можно конешно поставить reset какойто на шыфт, на таргет это само собой понятно, но всеравно неудобно.


15 янв 2010, 01:28
Профиль

0
Сообщение Re: mini-guide:How to macro it!
Ресет можно поставить на таймер, например reset = 10

+как минимум для лока макросы с /castsequence желательны, прим :

/castsequence reset = 60 Господство Скверны,Призыв цобачке,Связка души


15 янв 2010, 02:25
Профиль

0
Сообщение Re: mini-guide:How to macro it!
При написании макроса на перехват двуруча на 1н и щит (и обратно) не хватает места, названия слишком длинные, то есть для текущего сеанса все нормально, но стоит релогнуться и окончание макроса затирается, ограничение видать на количество символов.
Как бороться с этим?


15 янв 2010, 11:23
Профиль

0
Сообщение Re: mini-guide:How to macro it!
Godzill писал(а):

При написании макроса на перехват двуруча на 1н и щит (и обратно) не хватает места, названия слишком длинные, то есть для текущего сеанса все нормально, но стоит релогнуться и окончание макроса затирается, ограничение видать на количество символов.
Как бороться с этим?


Есть аддон называется SuperduperMacro, там можно писать долгие макроси и скрипты


15 янв 2010, 12:56
Профиль

0
Сообщение Re: mini-guide:How to macro it!

Это хорошо написанное руководство. Если вы можете написать один для этого http://www.rsclegacy.com/guide.php?m=game_guide, это было бы здорово, спасибо.



15 янв 2010, 13:15
Профиль

0
Сообщение Re: mini-guide:How to macro it!
хороший гайд. автору зачет :drink


15 янв 2010, 13:29
Профиль

0
Сообщение Re: mini-guide:How to macro it!
Kirkun писал(а):

есть только вопрос:
Код:
/cast [nomod:shift, @target][mod:shift, @focus] Blind

Зачем после nomod писать shift? Проще оставить чтобы не использовался спел при любом модификаторе.

Макрос написан так специально, чтобы продемонстрировать возможности nomod на примерах и кстати именно nomod:shift может оказаться полезным. например у меня на альт кроме всего прочего забиндена функция push-to-talk вентрилы. догадываешься, что произойдет, если я, говоря что-либо в вентру, попытаюсь заблайндить цель в случае с просто nomod? правильно - ничего! а должен произойти блайнд ;)

Добавлено спустя 6 минут 14 секунд:
Re: mini-gide:How to macro it!
Zeratustro писал(а):

Только в названии - gUide.

И да , забыт /castsequence .

я знаю, что guide правильно... а исправили зря ;D

По поводу /castsequence, я лично ей так и не научился пользоваться, ибо не возникало надобности. может быть чуть попозже допишу или скопипастю если кто-нибудь человеческим языком опишет со всеми тонкостями (а их там немало)

Во! надо было еще про /castrandom написать, а то как же начинающим ДК без него играть :pardon


15 янв 2010, 20:10
Профиль

0
Сообщение Re: mini-guide:How to macro it!
во, большое спасибо :) тему в избранное


15 янв 2010, 21:48
Профиль

0
Сообщение Re: mini-guide:How to macro it!
Ufolog писал(а):

Godzill писал(а):
При написании макроса на перехват двуруча на 1н и щит (и обратно) не хватает места, названия слишком длинные, то есть для текущего сеанса все нормально, но стоит релогнуться и окончание макроса затирается, ограничение видать на количество символов.
Как бороться с этим?


Есть аддон называется SuperduperMacro, там можно писать долгие макроси и скрипты

наверно более простой способ, уже упоминавшийся в соседнем треде, про макросы состоит в том, чтобы создать в стандартном эквип менеджере два сета shield_set и twohand_set. в них заполнить только ячейки с оружием (остальные поставить инактив, т.е. перечеркнутая красная окружность). тогда, вместо команды /equip можно использовать команду /equipset . просто своевременно пересохраняйте сеты, когда апгрейдите что-либо из предметов

изменил в 1ом посте, извините, немного некорректно было написано + добавил в Q&A


15 янв 2010, 21:53
Профиль

0
Сообщение Re: mini-guide:How to macro it!
Гайд хороший (но не совсем полный)
ничего нового не увидел


15 янв 2010, 22:39
Профиль

Сообщение Re: mini-guide:How to macro it!
про stance.

Не увидел там проверку на стойку. [nostance:2] к примеру у воинов проверяет правдивость включеной защитной стойки. то есть, к примеру мы хотим на одну кнопку забиндить интерцепт и что бы избежать спама про "Не подходящая стойка" и т.д. пишем
/cast [nostance:3] стойка берсерка
/cast Перехват

так же стоило уделить внимание команде /equip побольше. очень важно для классов которые носят одноручки или щиты. и что бы небыло казусов со сменой оружия лучше писать:
/equipslot 16 - (Мейн_Хенд)
/equipslot 17 - (Офф_Хенд)

самое главное что хотелось бы увидеть в гайде так это разбор скрипта на подтверждение диалога. знаю что масово используется варлоками что бы быстро и без проблем на арене бафать свое оружие камнем. тоже вроди бы есть и у рогов.
+ раньше при помощи этих скриптов можно было получить 2 разных табарды илидари или красную\синюю табарду за какой то фест с Ахуном.


15 янв 2010, 23:38
Профиль

Сообщение Re: mini-guide:How to macro it!
Вот за такой гайд я бы не раздумывая отдал ТК. :angel:
Спасибо огромное.


15 янв 2010, 23:43
Профиль ICQ

0
Сообщение Re: mini-guide:How to macro it!
1nflame писал(а):

про stance.
Не увидел там проверку на стойку. [nostance:2] к примеру у воинов проверяет правдивость включеной защитной стойки. то есть, к примеру мы хотим на одну кнопку забиндить интерцепт и что бы избежать спама про "Не подходящая стойка" и т.д. пишем
/cast [nostance:3] стойка берсерка
/cast Перехват

Ну про стансы я написал базовую информацию и продемонстрировал на примере друида, думаю по аналогии несложно сообразить как обращаться с варровскими стойками. Хотя согласен, нужен пример спаммабле макроса, который в случае неподходящих условий старается их подогнать под нужный каст. Единственно, что клятвенно обещаю скопипастить с воввики информацию о том какая цифра за какую stance отвечает у разных классов. Там очень кавайная табличка нарисована, ток придумаю как бы лучше ее нарисовать тут.

1nflame писал(а):

так же стоило уделить внимание команде /equip побольше. очень важно для классов которые носят одноручки или щиты. и что бы небыло казусов со сменой оружия лучше писать:
/equipslot 16 - (Мейн_Хенд)
/equipslot 17 - (Офф_Хенд)

Все же считаю, что сейчас вместо /эквипслот в подавляющем большинстве случаев лучше использовать /equipset вместе с сохраненными частичными сетами в эквип-менеджере, особенно если сменять надо более 1ой вещи (1ханд+щит например). Об этом я написал в доп. командах и в Q&A один вопрос этому посвящен.

1nflame писал(а):

самое главное что хотелось бы увидеть в гайде так это разбор скрипта на подтверждение диалога. знаю что масово используется варлоками что бы быстро и без проблем на арене бафать свое оружие камнем. тоже вроди бы есть и у рогов.

да, тоже что-то припоминаю, видел вроде где-то подобное, постараюсь найти

Добавлено спустя 19 минут 25 секунд:
Список возможных stance для классов:
Код:
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


*добавил в пост


15 янв 2010, 23:58
Профиль

0
Сообщение Re: mini-guide:How to macro it!
хороший гайд, спасибо, пригодиться всем классам


16 янв 2010, 01:20
Профиль

0
Сообщение Re: mini-guide:How to macro it!
На счёт /castsequence
Этот макрос далеко не всегда бесполезен. Так, можно сделать "двукнопочный" макрос для ротации почти всех основных танкующих абилок протпала, известный как "696" (на самом деле, это два макроса). В первый запихиваются абилки с 6-сек кд, во второй -- с 8-9 сек кд.
Получаем два макроса вида:
1) /castsequence Молот Праведника, Щит Праведности
2) /castsequence Щит небес, Правосудие Мудрости, Освящение

Спамится по очереди двумя кнопками: 1-2-1-2-1-2...


16 янв 2010, 02:06
Профиль

0
Сообщение Re: mini-guide:How to macro it!
лучший гайд :good если автор будет обновлять заслуживает не просто тк, а тк каждый мажор патч :man


16 янв 2010, 05:05
Профиль

0
Сообщение Re: mini-guide:How to macro it!
нид хелп, юзаю макрос типа:
Код:
/cast [stance:1] Feral Charge - Bear
/cast [stance:3] Feral Charge - Cat

надо впихнуть в него же чардж в маусовер, пытался вставить
Код:
/cast [stance:1] [ target=mouseover, harm][harm] Feral Charge - Bear 

но что-то не выходит

upd: разобрался
Код:
/cast [target=mouseover, harm][harm] [stance:1]  Feral Charge - Bear
/cast [stance:3] Feral Charge - Cat


одно но, чаржу по маусоверу держа в таргете старую цель, а бить начинает новую цель, хотя в таргете не она..


21 янв 2010, 16:50
Профиль

0
Сообщение Re: mini-guide:How to macro it!
Enhq писал(а):

одно но, чаржу по маусоверу держа в таргете старую цель, а бить начинает новую цель, хотя в таргете не она..

это баг, тоже самое твориться если чарджишься по фокусу - автоатака начинает бить в чарджунутую цель, причем если потом не менять таргеты, то так и останется, обилки будут кидаться в выбранную на самом деле цель, а автоатакой бить оффтаргет ;D

по поводу макроса, надо прокомментировать, а то он сейчас в том бредовом состоянии, которое позволяет ему делать то, что ты хочешь... но, мягко говоря, он неправильно написан :pardon

Добавлено спустя 26 минут 18 секунд:
Enhq писал(а):

upd: разобрался
Код:
/cast [target=mouseover, harm][harm] [stance:1]  Feral Charge - Bear
/cast [stance:3] Feral Charge - Cat


рассмотрим на конкретном примере, что происходит:
в макросе содержится две команды "/cast" , которые обрабатываются отдельно
/cast [target=mouseover, harm][harm] [stance:1] Feral Charge - Bear
смотри, первый блок [target=mouseover, harm] проверяет, если у тебя под маусовером находится harm цель... и все :) потому сразу же будет попытка скастить медведский чардж в маусовер и пофигу в какой ты форме, в медведе, в коте или вовсе в гуманоиде. есстественно в некорректном случае просто в лог выкинется строка об ошибке, типа "вы должны быть в форме медведя, чтобы применить это заклинание".

второй блок [harm], просто проверяет, если твой таргет враг... и опять же идет попытка bear чарджа, без проверки формы.

ну и апофеоз маразма (не обижайся просто в рифму :D) - третий блок, проверяющий на форму медведа и попытка чарджунться в текущий таргет, без проверки его дружелюбности.

В итоге, если все же произошло чудо и ты поюзал макрос в медведе, то в принципе все сработает как надо, чаржнется в маусовер если там враг (1ый блок) или в текущий таргет, если там враг (2ой блок). Тогда 2ая строка с кастом кошко-чарджа не обработается из-за гкд (вернее выдаст в лог ошибку, что заклинание еще не готово)

если же ты в кошаке, то первая строка макроса ругнется по всякому, но зато не будет гкд и сработает 2ая.

если уж писать в соответсвии с мини-gide, то должно получиться что-то вроде такого:
Код:
/cast [@mouseover,harm,stance:1][stance:1] Feral charge - bear; [stance:3] Feral charge - cat


23 янв 2010, 20:11
Профиль
Начать новую тему Ответить на тему


Перейти:  

На сайте использованы материалы, принадлежащие Blizzard Entertainment. Копирование материалов возможно только c разрешения портала. В противном случае это будет называться уже другим словом.
Рейтинг@Mail.ru