Cogwheel: Руководство по макросам. Часть 2
1. Часть 2: опции для макросов
1.1. Что такое опции макроса?
1.2. Команды, допускающие опции
1.3. [target=unit]
1.4. Обзор синтаксиса
1.4.1. Общие опции синтаксиса
1.4.2. Синтаксис для условий
1.4.3. Пустые параметры
1.4.4. Пустые состояния
1.4.5. [target=] с параметрами единицы
1.5. Условные переходы
1.5.1. Полный список условий
1.5.2. help и harm
1.5.3. exists
1.5.4. dead
1.5.5. stance (form)
1.5.6. stealth
1.5.7. modifier (mod)
1.5.7.1. переменные modifier
1.5.8. button (btn)
1.5.9. equipped (worn)
1.5.10. channeling
1.5.11. actionbar (bar)
1.5.12. bonusbar
1.5.13. pet
1.5.14. combat
1.5.15. mounted, swimming, flying, indoors & outdoors
1.5.16. flyable
1.5.17. party и raid
1.5.18. group
1.6. Приложения для опций макросов
1.6.1. Использование фокуса
1.6.2. Разветвления макросов используя /click
2. Часть 3: Дополнительные сведения
2.1. Пользовательские иконки
Часть 2: опции для макросов
Что такое опции макросов?
Опции макросов это способ проконтролировать операции макросов, основываясь на различной информации. Чтобы сразу привести образец, следующий макрос прочитает заклинание Renew на дружескую цель и Shadow Word: Pain на агрессивную.
/cast [help] Renew; [harm] Shadow Word: Pain
Во время выполнения этого макроса, контролируется состояние [help]. Оно определяет, является ли ваша цель той, на которую позволительно накладывать дружеские заклинания. Если состояние [help] истинно, дальше выполняется заклинание Renew, и макрос перескакивает к следующей строке. В ином случае провал приводит к обрабатыванию следующего условия. Теперь макрос проверяет состояние [harm]. [harm] работает по принципу [help] только для атакующих заклинаний. Если условие истинно, используется Shadow Word: Pain. Если нет – больше ничего не выполняется, так как условий больше нет.
Примечание: Можно было убрать проверку на [harm] и макрос работал бы в практически также. Однако, если у вас нет цели или на нее невозможно использовать дружественные или атакующие заклинания, вы получили бы сообщение об ошибке, или, в зависимости от заклинания, курсор выбора цели.
Команды, допускающие опции
Только «безопасные» команды отвечают на опции макросов. Фактически, безопасные команды это та причина, по которой возникли опции. Небезопасные команды, вроде команд для чата, эмоции и так далее, могут выполнятся в скриптах на Lua и командой /run. Говоря больше, Blizzard не хотели путать людей использующих точку с запятой «;» в чате. Если бы команда /say могла использовать опции для макросов, следующий пример вывел бы только «Привет»:
/say Привет; Я нуб
Вот список всех безопасных команд доступных в WoW:
- #show *
- #showtooltip *
- /assist
- /cancelaura
- /cancelform
- /cast
- /castrandom
- /castsequence
- /changeactionbar
- /clearfocus
- /cleartarget
- /click
- /dismount
- /equip +
- /equipslot +
- /focus
- /petagressive
- /petattack
- /petautocastoff
- /petautocaston
- /petautocasttoggle
- /petdefensive
- /petfollow
- /petpassive
- /petstay
- /startattack
- /stopattack
- /stopcasting
- /stopmacro
- /swapactionbar
- /target
- /targetenemy
- /targetexact
- /targetfriend
- /targetlastenemy
- /targetlastfriend
- /targetlasttarget
- /targetparty
- /targetraid
- /use
- /userandom
* #show и #showtooltip технически не безопасные команды, но они оперируют с опциями макросов как /use и /cast.
+ /equip и /equipslot также технически не безопасны, так как их возможности доступны аддонам и макро-скриптам.
Если вы пожелаете использовать опции для макросов с небезопасными командам, есть аддоны которые предоставляют такую возможность. Мой аддон, MacroTalk (http://www.wowinterface.com/downloads/info6853-MacroTalk.html), добавляет несколько команд /opt____ для каждой команды чата и общую команду /opt, которая позволяет добавлять опции для прочих небезопасных команд.
[target=unit]
В дополнения к проверке условий, система макро опций предоставляет способ назначать цели для разных действий. К примеру, следующий макрос всегда использует бинты на игрока, независимо от текущей цели (для полного списка ID целей читайте http://www.wowwiki.com/UnitId).
/use [target=player] Heavy Netherweave Bandage
Кроме установки цели для выполняемого действия, опция [target=] также задает цель для проверки условий. Это может звучать несколько непонятно, так что вот пример макроса, совмещающий концепцию двух примеров, использованных мной ранее:
/cast [help] [target=targettarget, help] [target=player] Flash Heal
Сначала он проверяет на срабатывание условия [help]. Если оно истинно, управление передается команде /cast c параметром Flash Heal. Если нет – переходит к следующему условию, [target=targettarget, help]. Здесь происходит та же проверка на дружественность цели, но в этот раз определяется, является ли цель вашей цели дружественной. Если так, выполняется /cast Flash Heal, но целью для команды /cast устанавливается цель вашей цели. Если же нужная цель так и не найдена, макрос перейдет к следующему условию, [target=player]. Так как действительных условий здесь нет, оно всегда будет истинно, что приведет к накладыванию заклинания Flash Heal на самого игрока.
Обзор синтаксиса
С пониманием как работают опции для макросов, может быть ужасная путаница, так что я воспользуюсь ранней возможностью, чтобы разъяснить их общую концепцию. Я буду использовать реальные примеры использующие действенные опции. Все опции будут раскрыты в деталях несколько позже.
Общие опции синтаксиса
Все консольные команды в принципе работают одинаково. У вас есть команда, и набор параметров для нее. Параметры зависят от команды, и некоторые команды используются без них. Вот несколько примеров:
/cast Smite
\___/ \___/
| |
| — параметр
– команда
/petattack
\________/ V
| |
| параметры (пустые)
|
команда
/castsequence reset=target Immolate, Corruption, Curse of Agony, Siphon Life
\___________/ \____________________________________________________________/
| |
command parameters
Опции для макросов позволяют выбирать набор параметров на основе нескольких критериев. На наивысшем уровне, у вас есть набор групп критериев/параметров, разделенных точками с запятыми. Критерии состоят из нулевого или больше количества наборов условий. Каждый набор условий задается внутри квадратных скобок []. Вот иллюстрация общего синтаксиса:
/команда [условия] [еще условия] параметры; [условия] параметры …
Как видно из простых примеров, описанных выше, команда выполняется слева направо. Как только найден набор условий который является истинным, выполняется команд с соответствующими параметрами. Если условий в записи нет, она всегда будет истинна. По сути, можно представить команду /cast с одним заклинанием в качестве опции макроса, в единственной записи без условий. Если команда не может найти истинных условий, она вообще не выполнится.
Синтаксис для условий
Каждый из наборов условий есть простым списком разделенный запятыми. Условия могут задаваться в любом порядке, но [target=] всегда учитывается первым, перед любыми другими условиями. О разделителе «,» (запятая) можно думать как о слове «и». Условие вроде [help, nodead, target=focus] означает «Мой фокус дружественная цель И она не мертва».
Замечание: Условия чувствительны к регистру. Если использовать [Help] вместо [help], макрос выдаст ошибку. Однако, это не относится к параметрам условий (описанных ниже). По-прежнему, обычно лучше писать прописными буквами. Записывайте заклинания и предметы точно так же, как вы видите названия в их подсказках. И в точности следуйте примерам в этом руководстве.
Условия сами по себе строятся из нескольких блоков. Во-первых, как вы могли видеть в примере с «nodead», можно добавить приставку «no» перед условием для получения обратного значения. Заметьте, что [nohelp] не обозначает тоже что и [harm]. [harm] и [help] вернут истинное значение как минимум при наличии цели. По мимо этого, существуют некоторые цели, которым невозможно помочь или навредить (игроки с выключенным ПвП, небоевые питомцы, эскорт-квесты и так далее).
Некоторые из условий также требуют своего собственного набора параметров. Например, [stance] обозначает «Если включена любая стойка» (полезно для всех классов со стойками, кроме воинов так как они всегда находятся в стойке). Но можно указать одну или несколько конкретных стоек для проверки. Набор параметров начинается с двоеточия «:» и каждый параметр отделяется косой чертой «/», которая значит «или». Вот общая иллюстрация синтаксиса для одного условия, а все что в угловых скобках «<>» опционально.
[<no>condition<:parameter</parameter</parameter<…>>>>]
Вот простой пример использования умения Shield Bash в Defensive или Battle стойках, но если активна Berserker стойка – она переключается на Defensive.
/cast [stance:1/2] Shield Bash; Defensive Stance
Примечание: приставка «no» применяется ко всему условию и его параметрам. [nostance:1/2] будет означать «любая из стоек кроме 1 или 2»
Пустые параметры
Путаница возникает при использовании команд, не требующих параметров. Самая распространенная ошибка в написании макроса – добавлять лишнюю точку с запятой в конце, что приводит к неожиданным глюкам. Рассмотрим такой макрос:
/petattack [target=focus, harm];
Для не посвященных, выглядит будто я посылаю питомца на цель в фокусе если она враждебна, и больше ничего. Но давайте разобьем макрос на составляющие:
/petattack [target=focus, harm] ;
\________/ \__________________/ V V V
| | | | |
command options | | parameters (empty)
| |
| options (empty)
|
parameters (empty)
Видите дополнительный пустой набор опций и параметров? Запомните – пустые наборы опций всегда возвращают «истину», так что второй пустой параметр передается /petattack если первое условие не было истинно.
Пустые условия
Иногда нужна команда использующая умения при нужных условиях на определенную цель, но ведущая себя как обычно, если условия не истинны. В этом случае вы пожелаете использовать пустой набор условий, который всегда возвращает истину. Этот макрос прочитает Flash of Light на цель под курсором вашей мыши. Если цель под мышью враждебна или ее просто нет, макрос поведет себя как обычная команда /cast Flash of Light и выполнит заклинание на вашу цель, учитывая опции по авто-использованию умений на себя в настройках интерфейса.
/cast [target=mouseover, help] [ ] Flash of Light
[target=] с параметрами единицы
Некоторые команды разрешают использовать напрямую ID целей как свои параметры. Например, /target party1 использует целью первого человека в вашей партии. Команда /target [target=party1] более понятна, но ведет себя абсолютно так же. В то же время, разработчики в множестве случаев не дают использовать ID целей для проверки условий напрямую, по этому приходится использовать один или другой способ в зависимости от ситуации. К примеру, такой макрос не будет работать как надо:
/target [target=focus, dead] party1
WoW проигнорирует параметр party1, так как мы уже установили цель с помощью [target=]. Есть правда особые исключения из этого правила. Пару команд имеют «ключевые цели» в качестве основных для этих команд. Если вы используете некую цель в [target=], WoW разрешит задать еще одну, либо выберет цель по умолчанию, если ничего не задано. Этот нюанс требует конкретного примера:
/focus [target=focus, dead] [target=focus, noharm] target
Здесь «ключевая цель» это фокус. Так как используется [target=focus], WoW передаст цель команде /focus. Можно убрать «target» в конце, так как команда /focus берет по умолчанию вашу текущую цель. Ниже приведен список всех команд с их ключевыми целями и целями по умолчанию, если такие есть. Повторим еще раз, для ясности – ключевая цель это такая цель, которую можно использовать в [target=] и она позволит вам передать команде еще одну другую цель. Цель по умолчанию – эта такая цель, которая будет передана команде если цели не задано.
Команда | Ключевая цель | Цель по умолчанию |
/target | target | |
/focus | focus | target |
/startattack | target | target |
/petattack | pettarget | target |
1.5. Условные переходы
Теперь рассмотрим полный список условий, и что они означают. Каждое из условий в свою очередь будет рассмотрено более подробно далее в руководстве.
1.5.1. Полный список условий
Вот полный список условий доступных в системе макросов. Патч 2.0 поставил цель убрать из игры все старые «умные макросы», которые позволяли людям играть спамя одну кнопку. Но некоторые из задач, решаемых за счет макросов получили статус ОК и благословение Blizzard в качестве опций для макросов.
Если вы не находите в списке какое-либо условие, значит, не существует способов проверять его и выполнять нужные действия в бою. Это не обсуждается, но ситуация может изменится в будущем. Сокращенная запись указана в скобках.
- help — Может накладывать дружественные заклинания на цель
- harm — Может накладывать враждебные заклинания на цель
- exists — Цель существует
- dead — Цель мертва
- stance (form) — Находиться в стойке (форме)
- stealth – Скрыт
- modifier (mod) — Удерживается заданная кнопка
- button (btn) — Макрос активирован с заданной кнопкой мыши
- equipped (worn) — Одет нужный тип предмета (это может быть ячейка инвентаря, тип или подтип предмета)
- channeling — Заданное закливание передается (чэннелинг)
- actionbar (bar) — Выбрана заданная страница панели действий
- bonusbar — Заданная дополнительная панель активна
- pet – Указанный питомец доступен
- combat – В бою
- mounted — Верхом
- swimming – В воде
- flying – Верхом на летающем маунте
- flyable – В зоне, где разрешены летающие маунты
- indoors – В помещении
- outdoors – Вне помещения
- party – Цель является членом вашей партии
- raid – Цель является членом вашей партии или рейда
- group – Вы входите в указанную группу
help и harm
Эти две опции мы уже рассмотрели довольно подробно. Мне нечего добавить больше, но ради полноты этот раздел останется здесь.
exists
Определяет существует ли заданная цель. Другими словами, если у вас нету цели, [exists] вернет ложь. Если у вас задан фокус, [target=focus, exists] вернет истину. Заметьте, что в некоторых случаях можно обойтись без [exists]. [help], [harm], [dead], [party], и [raid] все включают [exists] если они истинны.
dead
Если у вас есть цель, и она мертва, эта опция вернет истину.
stance:0/1/2/…/n (form)
Стойка — это термин широко используемый воинами, друидам, рогами (стелз), пристами (шадоуформа) и шаманами (призрачный волк). Стойки применяются только в тех ситуациях, когда определенные умения могут быть использованы в каких-либо формах. Именно по этому, ауры паладином (хоть они и находятся на панели форм) и аспекты охотников НЕ ЯВЛЯЮТСЯ стойками.
В простейшем случае, [stance], как упоминалось ранее, означает что вы находитесь в любой из стоек/форм. Это эквивалент [stance:1/2/3/…/n] где n это номер стойки. [stance:0] здесь то же что и [nostance], и возможно использовать условия вроде [stance:0/3], чтобы проверить находитесь ли вы в стойке 3 или вообще без стоек.
Стойки сами по себе имеют такие же порядковые номера, как их положение на панели стоек/форм. К примеру, формы друида начиная с Медведя, Аква-формы, Кота и формы для путешествий будет иметь номера стоек с 1 по 4. Чтобы вам было легче со всем этим, вот простая таблица с номерами:
Warrior | Druid | Priest | Rogue | Shaman | |
Стойка 1 | Battle | Bear | Shadowform | Stealth | Ghostwolf |
Стойка 2 | Defensive | Aquatic | |||
Стойка 3 | Berserker | Cat | |||
Стойка 4 | Travel | ||||
Стойка 5 | MK/ToL | ||||
Стойка 6 | Flight |
Примечание: если у друида отсутствует нужная форма, все более высокие числа сдвигаются в таблице вверх.
Примеры:
/cast [stance:1] Overpower; Battle Stance
Этот макрос – автоматизация Overpower в два щелчка мышкой. Если вы в неправильной стойке, первый клик переведет вас в нее. Когда вы перейдете в Battle Stance, использования макроса выполнит Overpower.
/cancelform [noform:0/1/3]
/cast [form:1/3] Faerie Fire (Feral)(); Faerie Fire
В формах медведя или кота, этот макрос использует заклинание Faerie Fire (Feral), в форме для заклинаний – просто Faerie Fire. Во всех остальных формах, макрос переведет вас в заклинательную форму и наложит Faerie Fire.
stealth
Как может показаться рогам среди читателей, что поскольку у рог нет других стоек, эта опция работает идентично к [stance], [stealth] также применимо к расовому умению ночных эльфов Shadowmeld, Invisibility у магов и так далее.
modifier:shift/ctrl/alt (mod)
Клавиши-модификаторы хороший способ сберечь место на панелях действий, а также путь к принятию определенных решений. Скажем вы хотите включить в макрос чтобы при обычном использовании он выполнял одно заклинание, а при зажатой кнопке-модификаторе – другое:
/cast [modifier, help] [modifier, target=targettarget, help] Flash Heal; [help] [target=targettarget] Greater Heal
Этот макрос наложит дружественное заклинание на вашу цель, если это друг, а в противном случае – на цель вашей цели. Если же вы будете удерживать любую из кнопок-модификаторов, он выполнит Flash Heal, иначе — Greater Heal.
Конечно, кнопку-модификатор можно задать конкретно, например [modifier:shift/ctrl] означает «shift или control». Если хотите указать, что необходимы 2 модификатора одновременно: [modifier:shift, modifier:ctrl].
Будьте осторожны с установкой кнопок в ваших макросах. Если вы свяжите кнопку А с макросом, имеющим в себе, к примеру, модификатор [modifier:shift], а потом окажется, что существует клавиатурная комбинация shift-A, связанная с чем-либо еще — макрос не выполнится, так как клавиатурные комбинации имеют больший приоритет.
Переменные modifier
В то время как клавиатурными модификаторами могут быть только shift, ctrl или alt, существует также набор системных переменных, которые также можно использовать в качестве модификаторов условий. Скажем, переменная SELFCAST означает «если включен модификатор на автоматическое использование заклинаний на себя». По умолчанию, это alt (удерживание клавиши alt, во время использования заклинаний приведет к попытке наложить их на себя), хотя некоторые из аддонов дают возможность изменить это. Если сделать макрос вида:
/cast [modifier:SELFCAST, target=player] [target=mouseover] [ ] Greater Heal
Он будет работать как нужно, независимо от клавиши, установленной в качестве «использование-на-себя». Некоторые другие из переменных и их условия по умолчанию (с заметно меньшими возможностями применения) такие:
- AUTOLOOTTOGGLE (shift) – авто-сбор предметов
- STICKYCAMERA (ctrl) – статичная камера
- SPLITSTACK (shift) – разделение стопок
- PICKUPACTION (shift) – действие для подбора предметов
- COMPAREITEMS (shift) – сравнение предметов
- OPENALLBAGS (shift) – открытие всех сумок
- QUESTWATCHTOGGLE (shift) – слежение за квестами
button:1/2/…/5/<virtual click> (btn)
Похожим на условие [modifier]образом, опция позволяет вашему макросу отвечать напрямую, в зависимости от того какая кнопка мыши использована для активирования макроса. Номера кнопок с 1 по 5 соответствуют левой, правой или средней кнопкам, и кнопкам 4 и 5 (если такие есть на вашей мышке). Если ваш макрос активируется по нажатию клавиатурной комбинации, условие будет всегда истинно.
#show Swift Green Mechanostrider
/userandom [nobutton:2, flyable, nomounted] Ebon Gryphon; [nomounted] Black Battlestrider, Swift Green Mechanostrider
/dismount [noflying]
Поведение макроса когда вы не верхом: левый щелчок выберет Ebon Gryphon если это возможно (проверка flyable), в противном случае макрос выберет в качестве маунта либо Black Battlestrider, либо Swift Green Mechanostrider. Щелчок правой кнопкой по макросу всегда приведет к выбору одного из механических цыплят.
Поведение максроса, если вы верхом: левый щелчок приведет к спешиванию, если мы только не в полете. Правый щелчок – всегда приводит к спешиванию.
«Виртуальный щелчок» обычно можно игнорировать, но если вы используете аддон для модификации панелей действий, он может быть и полезным. Панели действий, реагирующие на различные состояния, преобразуют щелчки в виртуальные нажатия, чтобы определить какое из действий выполнить. Так как эти виртуальные нажатия зависят от конкретных аддонов, я не стану погружаться в дальнейшие объяснения.
equipped:<тип предмета> (worn)
[equipped] позволяет определять надет ли заданный тип предмета. Типом предмета может быть номер ячейки инвентаря, и собственно, тип или подтип предмета. За подробностями к списку типов обращайтесь на http://www.wowwiki.com/ItemType и http://www.wowwiki.com/API_TYPE_InventorySlotName. Вот пример макроса, который я использую для выбора Shield Bash или Pummel в зависимости, от того что на мне одето:
#show [equipped:Shields] Shield Bash; Pummel
/cast [equipped:Shields,stance:1/2] Shield Bash; [equipped:Shields] Defensive Stance; [stance:3] Pummel;Berserker Stance
Строка #show используется для отображения иконки Shield Bash либо Pummel. Без нее, будет показано заклинание стойки, когда это возможно. Вот псевдо-код, как расшифровка того, что делает вторая строка макроса:
Если щит одет и я либо в Battle или Defensive стойке, тогда
/cast Shield Bash
в противном случае, если щит одет
/cast Defensive Stance
в противном случае, если я в Berserker стойке, тогда
/cast Pummel
иначе
/cast Berserker Stance
Вот другой макрос, который придает Overpower мощности:
/equip [noequipped:Two-Handed Axes] Crystalforged War Axe
/cast [nostance:1] Battle Stance; [equipped:Two-Handed Axes] Overpower
channeling:<имя заклинания>
Обычно, если вы вливаете заклинание (т.е. выполняете чэннелинг) и начинаете накладывать другое, оно прервет процесс вливания. Эта опция позволяет избежать таких случаев, имея кроме того еще пару применений. К примеру, мы хотели бы прервать в таких случаях заданное заклинание, но не прерывать другие. [channeling] без параметров отвечает любому заклинанию, но можно также и использовать произвольный список имен заклинаний для проверки.
Примечание: вливание (чэннелинг) это НЕ ТО ЖЕ САМОЕ что обычно чтение заклинаний. Использование [channeling] применимо только к заклинаниям типа Arcane Missiles, Drain Life, Mind Flay и так далее, когда после начала чтения, заклинание проявляет своей эффект с течением времени.
actionbar:1/…/6 (bar)
Интерфейс по умолчанию предоставляет некоторое число страниц для панели действий. Эти страница применимы только к нежней левой панели действия, видимой в интерфейсе по умолчанию. К счастью, можно наделать макросов, которые соответствуют разным страницам панели действий, и разместить их на других панелях. Один из примером, позволяет охотникам эмулировать стойки с помощью аспектов:
/swapactionbar 1 2
/cast [actionbar:1] Aspect of the Hawk; Aspect of the Monkey
Этот макрос переключается между панелями действий 1 и 2. Когда он переключает панель на номер 1, он использует Aspect of the Hawk, когда на номер 2 – использует Aspect of the Monkey.
bonusbar:1/…/5
Любой из классов, чьи панели действий основаны на определенных условиях (стойки, режим скрытности, владение и так далее) используют дополнительную, «бонусную панель». Так задается и диапазон ячеек действий, которые заменяют страницу 1 основной панели действий. Например, когда прист контролирует ум какой либо цели, их панель действий использует «бонусную» панель №5. Значит, можно сделать следующий макрос переключений:
/cast [nobonusbar:5] Mind Control
/cancelaura Mind Control
Для детального описания по классам и их бонусным панелям, читайте http://www.wowwiki.com/API_GetBonusBarOffset.
pet:<имя или тип питомца>
Все классы с питомцами должны оценить полезность этой опции. Она позволяет выбирать нужное действие в зависимости от активного питомца. Можно указывать имя питомца или его тип (Voidwalker, Boar, Imp, Wolf и т.д.). Само по себе [pet] означает любого из питомцев. Вот пример макроса, позволяющий магам выбирать между заклинанием Freeze у элементаля и своим собственным заклинанием Frost Nova:
/cast [pet] Freeze; Frost Nova
combat
Истинно, если вы в бою.
mounted, swimming, flying, indoors & outdoors
Само собой понятные опции (верхом, плывет, летит, в помещении и вне помещения). Они применимы только к вам, игроку.
flyable
Как было коротко сказано выше, [flyable] определяет, находитесь ли вы с Outland, где разрешены летающие маунты.
party & raid
Возвращает истину, если цель в вашей партии или рейде.
group:party/raid
Эта опция позволяет определять, в каком типе группы вы состоите. [group] эквивалентно [group:party]. [group:raid] включает в себя [group:party]. Это может быть полезно для классов с баффами:
/cast [group, nomodifier] Arcane Brilliance; [help] [target=player] Arcane Intellect
Если вы в группе, в общем случае макрос наложит Arcane Brilliance. Если вы удерживаете кнопку-модификатор или вы вне партии, макрос прочтет Arcane Intellect на дружественную цель или на вас самих.
Комментарии закрыты.