29 октября 2010 г.

Макросы, стена текста.

Очень подробная статья про макросы, честно стыреная отсюда и скопированная полностью, потому что любые форумы или сайты имеют свойство закрываться, если только это не такие крупные проекты как скажем вовхед.
1.1. Что такое макрос?
Макрос это, попросту говоря, список консольных команд. Я уверен, что вы знакомы с некоторыми из них:

  • /say (/s)
  • /whisper (/w, /talk, /t)
  • /emote (/e, /em, /me)
  • /dance
  • И для вас ПвП-игроков, я не могу забыть о /spit
С макросами, мы можем не только использовать команды, как кнопки действий, но мы также можем использовать эти команды одновременно. Каждая из уникальных команд начинается с новой строчки и пишется точно так же, как и в окне чата. К примеру, если вы хотели иметь макрос, выкрикивающий «Танцуют все!» и затем начинающий ваш танец, вы бы записали это так:

Цитата:
/y Танцуют все!
/dance
Полный список консольных команд можно найти по адресу http://www.wowwiki.com/List_of_Slash_Commands однако на данный момент, некоторые из команд. WoWWiki, чудесный источник дополнительной информации о макросах, особенно по скриптам с использованием команды /run (о которой мы еще поговорим далее).
Примечение: Заранее хочу заметить, что макросы всегда выполняются полностью. Это значит, что если вы нажали кнопку, макрос исполняет каждую команду от начала и до конца, перед тем как вернуть контроль игре. Это особенность имеет два важных момента. Во-первых, если вы напишите макрос, требующий долгого исполнения (к примеру, /run for i=1, 100000000 do end), игра повиснет на все время, пока исполняется макрос.
Во-вторых, и что еще важнее, нет ни какого способа дождаться конца макроса, не вешая игру. Этот факт станет более очевидным, когда мы начнем разбираться с командой /cast и ей подобными. Некоторые аддоны могут предоставлять способ отсроченного исполнения команд, но они могут использоваться лишь в случае «щадящих» функция вроде общения, эмоций и посылке команд другим аддонам (хотя, одевание оружия во время боя тоже разрешено).

1.2. Как создать макрос?
Для начала откройте окно макросов. Вы можете сделать это, открыв основное меню и выбрав пункт Macros, или же набрав команду /macro (/m) в окне чата. В верхней части окна, вы видите 2 закладки: General Macros (Общие макросы) и Ваше_имя Specific Macros (Специальные макросы для этого персонажа). Общие макросы хранятся отдельно для каждого аккаунта и доступны всем вашим персонажам. Специальные макросы, исходя из их названия, доступны только тому персонажу, в чьем профиле они созданы. Сразу же под закладками находиться таблица с 18 ячейками, где отображаются макросы. Ниже, панель, отображающая текущий выбранный макрос с кнопкой Change Name/Icon (Сменить Имя/Иконку). Еще ниже – поле для редактирования, где вы собственно и вводите макрос. И в самом конце, можно увидеть кнопки, которые, уверен не требуют разъяснения.
Чтобы создать макрос, нажмите кнопку New внизу окна. Это приведет к появлению другого меньшего окошка, где можно выбрать иконку для нового макроса и ввести его имя. Если выбрать иконку со знаком вопроса (?), WoW сам автоматически подберет иконку, соответственно используемым умениям или предметам в этом макросе. Когда вы выбрали иконку и имя для нового макроса, нажимайте кнопку Okay.
Несколько замечаний: Вы можете управлять, какая иконка отобразиться вместо знака вопроса посредством команды #show. Хотя и допустимо называть макросы одинаково, лучше избегать таких ситуаций, так как функции аддонов или же некоторые макро-команды обращаются к макросам по имени, что может привести к некорректной работе одноименных макросов. Вы также можете добавлять пользовательские иконки в список (читайте Часть 3).
Вы наверное заметили, что иконка макроса которую вы выбрали, добавилась в таблицу из 18 ячеек, о которой упоминалось раньше (еще на иконке отображается ее имя - столько символов, сколько помещается). Созданный новый макрос будет автоматически выбран, так что самое время егонзаписать. Щелкните на поле редактирования и начинайте вводить.
Примечание: Макрос не может быть длиннее 255 символов. Ходят слухи, это ограничение существует потому, что когда-нибудь макросы будут храниться на сервере. Пока этого не случилось, читайте Часть 3, чтобы узнать, как хранить макросы на нескольких компьютерах. Также существуют аддоны, расширяющие возможности хранения макросов используя безопасные шаблоны.
Когда закончили вводить ваш макрос, просто перетащите иконку из таблицы и поместите на вашу панель действий. Макрос автоматически сохраняется в момент использования или когда закрывается окно макросов. Щелкните кнопкой, и вуа-ля, готов ваш макрос!

1.3. Как использовать заклинания?
Во время естественного игрового процесса, вы вряд ли вводите множество консольных команд, настолько полезных, чтобы написать из них макрос. Конечно, иногда макросы для эмоций могут сделать ролевой отыгрыш более интересным, но все же… Должно же быть нечто больше, на что годятся макросы…
Так и есть. Познакомьтесь с командой /cast – наиболее часто используемой командой в макросах. Команда /cast позволяет выполнять заклинания по их именам из вашей книги заклинаний (или из книги заклинаний вашего питомца).
Цитата:
Простейший пример:
/cast Shadow Word: Pain
Этот макроc прочитает на текущую цель заклинание Shadow Word: Pain наивысшего ранга. Макрос поведет себя также, как если бы вы перетащили на это же место заклинание SW:P из вашей книги заклинаний. Панель действий распознает код заклинания и покажет время кулдауна и диапазон действия на его иконке. Более того, если вы выбрали в качестве иконки знак вопроса, о чем упоминалось ранее, панель действий даже покажет иконку SW:P.
«Хм, хм…» - подумаете вы. Почему просто не положить нужное заклинание на панель действия? Вот здесь-то, совмещение нескольких команд придется очень кстати, и это то, что делает макросы полезными. Представьте, что вы маг и хотели бы сообщать вашей партии, когда превращаете кого-то в овцу. Ничего проще – просто вставьте ваше заклинание и сообщение по /p в макрос. Вообще-то, существует и лучший способ сделать макрос для этой цели, как например, мой аддон CCWarn (http://www.wowinterface.com/download...26-CCWarn.html), столь бессовестным способом рекламируемый в этот момент. Но для понимания механизмов использования макросов – это простой и доступный пример.

Цитата:
/cast Polymorph
/p Превращаю в овцу %t! Кто нарушит, тот и танкует!
Замечание: так как макрос исполняется весь сразу, команда /p будет выполнена во время начала чтения заклинания, не заботясь о том выбрана ли корректная цель или же заклинание Polymorph на кулдауна.
Это значит, что эти команды можно разместить в любом порядке и результат будет одинаковый. Если же вы хотите сказать что-либо после окончания чтения заклинания, вам потребуется помощь аддона, такого как AfterCast,http://www.wowinterface.com/download...AfterCast.html. AfterCast создает задание на выполнении команд после того как вы прочтете заклинание (с известными условиями, о которых говорилось в 1.1 Что такое макрос). Пример:

Цитата:
/aftercast /p Click the portal to get %t’s lazy butt over here
/cast Ritual of Summoning
1.3.1. Использования заклинаний без переключения
Как упоминалось выше, команда /cast ведет себя также, как если бы вы перетащили нужное заклинание на панель действий. Это значит, что переключаемые умения будут включаться и выключать каждый раз при исполнении макроса. Если вы хотите, чтобы макрос всегда включал заклинание, без переключений, нужно добавить знак восклицания (!) перед именем заклинания. Вот пример макроса, который будет пытаться активировать Auto Shot независимо от того стреляете вы уже или нет.

Цитата:
/cast !Auto Shot
Используя эту возможность и команду /castsequence (мы еще расскажем о ней подробнее), можно написать макрос для охотников:

Цитата:
/castsequence reset=target Steady Shot, !Auto Shot
1.3.2. Замечания об именах заклинаний и их уровнях
Команда /cast весьма требовательна к имени заклинания. Чтобы удачно выполнить заклинание, необходимо правильно написать его имя, правильно использовать разделители, пробелы и так далее. Лучший способ гарантированно ввести имя заклинания это открыть книгу заклинаний и вовремя написания макроса поместить курсор в место где нужно вставить заклинание, и зажав shift кликнуть на заклинание в книге. Заклинание и его ранг будут правильно вставлены, как в следующем примере:

Цитата:
/cast Shadow Word: Pain(Rank 5)
Можно не рискуя удалить (Rank 5) из макроса и тогда он автоматически выберет наивысший ранг заклинания – конечно, если вы так пожелаете; но существует достаточно ситуаций, когда выигрышно использовать определенный ранг заклинания (например, как особое координирование заклинания Banish у варлока). Но будьте осторожны. Некоторые заклинания со скобками в их именах требуют особой внимательности. Вот пример - если вставлять через shift-клик заклинание друида Faerie Fire, то получим следующее:

Цитата:
/cast Faerie Fire (Feral)(Rank 2)
Если удалить конечное (Rank 2), внутренние механизмы запутаются с частью (Feral), подумав что это ранг заклинания и оно не сработает. Чтобы все работало, как нужно, необходимо изменить макрос так:

Цитата:
/cast Faerie Fire (Feral)()
Пустые скобки обрабатываются как ранг, так как находятся в конце записи. И потому как они пусты, интерпретатор команд выберет наивысший ранг заклинания для прочтения. Вы также можете использовать и другие заклинания со скобками, но помните о ограничении в 255 символов. К сожалении, размер макроса все еще проблема.



1.4. Как использовать предметы или тринкеты
Просто: также как и заклинания. Команда для использования предмета (как некоторые могли догадаться) это - /use. Как и в случае с /cast, в простейшей форме она использует как параметр имя предмета, который вы хоотите использовать.
Цитата:
/use Green Mechanostrider
Есть еще другие формы использования команды /use:
Цитата:
/use <ячейка инвентаря>
Такой способ, позволяет использовать предмет в нужной ячейке. Для полного списка номеров ячеек смотрите http://www.wowwiki.com/InventorySlotId. Вот пример:
Цитата:
/use 13
Эта команда использует тринкет из верхней ячейки.
Цитата:
/use <сумка> <ячейка>
Как видно, эта форма позволяет использовать предмет в нужной ячейке какой-либо сумке. Скажем, вы храните еду для вашего питомца в первой ячейке первой сумки. Теперь вы можете написать простой макрос для кормление:
Цитата:
/cast Feed Pet
/use 0 1
Сумки пронумерованы от 0 до 4, начиная справа (несменный рюкзак всегда имеет номер 0), ячейки нумеруются начиная с 1 справа налево, сверху вниз (так же, как вы читаете эти строки).
1 2 3 4
5 6 7 8

или
1 2
3 4 5 6
7 8 9 10

Чтобы избежать путаницы, скажу вам, что команды /cast и /use это одно и тоже. /cast может использовать предметы, а /use может читать заклинания. Как можно было заметить, это не очень-то и полезно для простых макросов. Однако, когда вы начнете работать с опциями макросов и их последовательностями, вы будете довольны, возможностью смешивать заклинания и предметы одной командой.

1.5. Множественные действия за один щелчок мышью
В общих случаях, вы не можете использовать в макросах больше одного заклинания по единому нажатию мышки. Большинство заклинаний и некоторые предметы приводят к срабатыванию так называемого глобального кулдауна (ГК), которые не дает делать много действий за один раз. Даже если заклинание не будет выполнено, оно приведет к срабатыванию глобального кулдауна и не даст выполниться последующим командам /cast в макросе. Это не было проблемой до патча 2.0, по тому можно встретить до сих пор макросы вида:
Цитата:
/cast Overpower
/cast Execute
/cast Mortal Strike
/cast Sunder Armor
Такие макросы больше не работают. Как только Owerpower не сработает, игра заблокирует выполнение всех последующих заклинаний, даже не смотря на то, что глобальный кулдаун не сработал.
Но есть и немного хороших новостей. Определенные заклинания могут выполнятся одновременно одни единственным макросом. Все мгновенные заклинания, не запускающие ГК, могут сопровождаться другим заклинанием («Next Melee» умения вроде Heroic Strike тоже попадают в эту категорию). Подсказка при наведении на заклинание, скажет является ли оно мгновенным, но чтобы узнать, срабатывает ли ГК, нужно сперва использовать его и посмотреть на результат. Вот пример:
Цитата:
/use Talisman of Ephemeral Power
/cast Arcane Power
/cast Presence of Mind
/cast Pyroblast
1.6. Назначение целей и выбор объектов
Прицеливание еще одна часто используемая возможность макросов. Достигается она применением специальных консольных команд, меняющих вашу цель, или же при использовании опции макросов [targer=], для тех команд, которые это допускают. Когда вы используете макро-опции, вы в действительности читаете заклинание по цели напрямую, без смены текущей цели. Опции макросов мы рассмотрим очень детально в Части 3. Сейчас же вернемся к разбору команд для прицеливания.
1.6.1./targer, /targetexact
Наиболее простая команда прицеливания это /target. Использовать ее также просто:
Цитата:
/target Cogwheel
/target выбирает цель по ближайшему совпадению, что означает - если я буду стоять около вас, и вы исполните /target Cog, а рядом ни кого с таким именем не окажется, макрос выберет целью меня. Это может быть как плюсом так и минусом в конкретных ситуациях. К несчастью, эта команда также выбирает неподходящие цели (вроде трупов). Это делает макросы с прицеливанием менее полезными, чем может показаться на первый взгляд.
Цитата:
/target Blackwing Mage
/cast Curse of Agony
Если рядом не окажется этих Blackwing Mage, макрос может выбрать целью кого-то из вашего рейда, с буквами B и L в имени. Хотя они и в безопасности от вашего проклятья, это все равно сбивает с толку. Чтобы выручить из таких ситуаций, патч 2.3 ввел команду /targetexact.
Цитата:
/targetexact Blackwing Mage
/cast Curse of Agony
Этот макрос будет работать как и ожидается, хотя целью может оказаться что-либо несущественное за 100 ярдов от вас.
В дополнение к имени цели, вы можете добавлять также ID цели. ID цели это способ определить конкретного персонажа, монстра, NPC и так далее. К примеру, вы можете обращаться к вашей текущей цели по ID «target» (понятно, что это не самое полезное для команды обсуждаемой в этот момент). Ваш персонаж доступен по ID «player», а если у вас есть питомец – его ID «pet». Возможно дописывать слово «target» в конце любого ID, чтобы получить цель, на которую прицелен этот ID. По этому поводу есть шутка о Кевине Бэйкон, сделавшего макрос:
Цитата:
/target targettargettargettargettargettarget
Ссылка http://www.wowwiki.com/UnitId содержит список всех разрешенных ID целей.

1.6.2. Другие команды для прицеливания
Вот краткий обзор других команд для прицеливания:
Цитата:
/assist
Сама по себе, команда /assist устанавливает целью цель вашей цели (путано, но надеюсь понятно). Если вы нацелены на меня, а я нацелен на Iriel, /assist переключит вашу цель на Iriel. Можно также указать имя цели или ID для команды /assist, чтобы сменить цель на то, куда нацелен указанный в параметрах объект:
Цитата:
/assist Cogwheel
Существует опция интерфейса, автоматически переключающая вас в режим атаки, после смены цели по /assist.
Цитата:
/cleartarget
Сбрасывает цель.
Цитата:
/targetlasttarget
Это команда возьмет целью вашу предыдущую цель. Если до этого у вас не было цель, ничего не произойдет.
Цитата:
/targetlastenemy, /targetlastfriend
Эти команды действуют похожим на команду /targetlasttarget образом, но выбирают целью последнего врага или последнюю дружественную цель.
Цитата:
/targetenemy, /targetfriend
Эти команды меняют цель на следующие по их типу. /targetenemy идентично нажатию кнопки TAB, а /targetfriend то же, что нажатие ctrl-TAB (при настройках клавиатуры по умолчанию). Можно также добавить параметр «1», который переключает цели в обратном порядке (как нажатие shift-TAB в случае команды /targetenemy 1)
Замечание: эти команды можно использовать в макросе только один раз.
Цитата:
/targetparty, /targetraid
Переключение целей по ближайшим членам рейда или партии. Как и /targetenemy, можно добавлять в параметры 1, чтобы обратить порядок переключений целей.

1.7. Как управлять своим питомцем (pet)
Как было рассказано в разделе об использовании заклинаний, можно использовать умения вашего питомца по их именам с помощью команды /cast. Однажды, Blizzard были вынуждены изменить имя умения элементаля у магов с Frost Nova на Freeze, так как невозможно было использовать ее в макросах. Каждый, у кого есть питомец, знает, что это далеко не исчерпывающий список возможностей управлять своим питомцем. К счастью, череда патчей с выходом Burning Crusade внесла целый ворох команд для управления питомцами:
Цитата:
/petattack
Посылает вашего питомца в бой на вашу текущую цель. Можно в параметрах указать имя цели или ее ID, и питомец станет атаковать эту цель.
Цитата:
/petfollow
Отдает приказ питомцу следовать за вами, отменяя атаку если есть необходимость.
Цитата:
/petpassive, /petdefensive, /petaggressive
Переключает режим реагирования у вашего питомца, по типу кнопок на его панели действий.
Цитата:
/petautocaston, /petautocastoff, /petautocasttoggle
Эти команды управляют автоматическим использованием умений у вашего питомца. Первая команда всегда включает авто-использование, вторая всегда выключает, третья – переключает. Пример:
Цитата:
/petautocasttoggle Torment
1.8. Управление ответной реакцией кнопок и знаком вопроса (?) с помощью #show
По умолчанию, WoW использует первое заклинание или предмет, которые используется в макросе, для отображения кулдауна, радиуса действия или доступности этой кнопки, а также для выбора иконки, если вы использовали знак вопроса при создании макроса. Возьмем наш макрос с многими заклинаниями, приведенный ранее:
Цитата:
/use Talisman of Ephemeral Power
/cast Arcane Power
/cast Presence of Mind
/cast Pyroblast
В случае этого макроса, WoW выбирает Arcane Power для отображения данных о макросе. На самом деле, это вряд ли то, что вам нужно. Ключевой точкой этого заклинания – выполнение Pyroblast. Первые строки существуют как прелюдия, чтобы сделать Pyroblast более эффективным. Чтобы кнопка с макросом выглядела и вела себя как будто первое заклинание Pyroblast, нужно добавить в начале макроса следующую строку:
Цитата:
#show Pyroblast
Если вы использовали знак вопроса в качестве иконки макросу, кнопка примет вид Pyroblast без каких-либо ваших усилий. Параметры для #show (в нашем случае Pyroblast), работают так же как команды /cast и /use. Можно использовать имя заклинания, имя предмета, ID предмета (item:12345), ячейку инвентаря, или сумку и номер ячейки в ней.
Похожей на #show является опция #showtooltip. Обычно, когда вы наводите мышку поверх макроса в панели действий, подсказка отображает имя этого макроса. Пользы от этого мало (особенно, если использовать аддон TheoryCraft дающий детальную информацию в подсказках о заклинаниях). #showtooltip позволяет назначит заклинание, который будет отображаться в виде подсказки при наведении на макрос, как и с опцией #show. Если вы используете#showtooltip, нет нужды использовать #show.
Если вы довольны тем заклинанием, которое выбрал WoW для отображения к вашему макросу, можно использовать #showtooltip без параметров, чтобы сэкономить немного места. WoW будет отображать заклинание/предмет, что он подобрал для макроса, но еще и станет показывать подсказку для него.
Прошу заметить: в отличии от консольных команд, #show и #showtooltip должны ОБЯЗАТЕЛЬНО быть написаны в нижнем буквенном регистре.

1.9. Другие консольные команды
Теперь, когда вы получили основной базис знаний, я хотел бы кратко рассмотреть другие консольные команды, доступные для ваших нужд. Некоторые из них, могут показаться несколько бессмысленными на первый взгляд, но когда вы скомбинируете их с макро-опциями описанных в Части 2, можно будет делать много интересных финтов.

1.9.1. Одевание предметов
Существует две команды для одевания предметов: /equip и /equipslot/equip просто использует имя предмета и одевает его в слот по умолчанию, как если бы вы щелкнули по предмету правой кнопкой в вашей сумке (т.е. одноручное оружие будет одето в основную руку). /equipslot использует в параметре ID ячейки (для подробностей читай (http://www.wowwiki.com/InventorySlotId) и имя предмета и одевает его в указанную ячейку. Примеры:
Надевает оружие в ячейку по умолчанию:
Цитата:
/equip Honed Voidaxe
Одевает тринкет в нижний тринкет-слот:
Цитата:
/equipslot 14 Carrot on a Stick
Заметка: Аддоны могут использовать функционал по одеванию предметов напрямую, даже во время боя. Тот же механизм доступен для команд одевания с использованием аддонов вроде AfterCast или Chronos. Если аддон сперва проверяет безопасность команды, у вас могут возникнуть проблемы; команды одевания включены в список безопасных, хотя такими и не являются.

1.9.2. Последовательности заклинаний и предметов
Множество раз вы будете использовать серии заклинаний или каких-то предметов в определенном порядке практически на каждом монстре, с которыми будете вести бой. Чтобы упростить работу, в нашем распоряжении есть команда /castsequence/castsequence принимает список заклинаний и/или предметов, разделенные запятыми. Здесь используются те же правила что и при /cast и /use. Это значит, что вы можете чередовать комбинации названий заклинаний, имен предметов, ID предметов, ячеек сумок и инвентаря. Каждый раз, выполняя макрос, он активирует текущий предмет или заклинание. Если использование было удачным, последовательность переходит к следующей позиции. Вам нужно повторно активировать макрос чтобы использовать все заклинания в последовательности. Когда макрос достигнет последней позиции в списке, он начнет выполнять последовательность сначала. Пример:
Цитата:
/castsequence Immolate, Corruption, Curse of Agony, Siphon Life
Этот макрос может использовать варлоками в качестве открывающей атаки. Заметьте, если Immolate не сработает по какой-либо причине (нет маны, вне диапазона действия, вы заглушены и так далее), последовательность останется в этой точке. Из-за этого, вы не можете использовать /castsequence для спама подобного макроса:
Цитата:
/castsequence Overpower, Execute, Mortal Strike
Перед списком заклинаний, можно также указывать условие для сброса, начинающее последовательность до того как оно достигнет конца. Общий синтаксис для условий сброса следующий:
Цитата:
reset=n/target/combat/shift/alt/ctrl
Где n – число секунд. Вы можете указывать любое количество этих условий, разделенных косыми чертами «/». Секунды используются как таймаут для команды. Каждый раз во время выполнения последовательность сбрасывает таймер. Если макрос не был использован вами в течении заданного времени, последовательность начнется заново. Это очень важное отличие, так как таймер сброса невозможно использовать, чтобы подсчитать время кулдаунов.target сбрасывает последовательность при смене целей; combat – если вы выходите из режима боя; shiftalt и crtl – сбрасывают, если вы активируете макрос с зажатием одной из этих кнопок. Пример:
Цитата:
/castsequence reset=10/shift Spell 1, Other Spell, Some Item
Если использовать знак вопроса как иконку макроса, WoW автоматически будет изменять ее соответственно текущему элементы последовательности. Если перед /castsequence вставить команды /cast или /use, они будут конфликтовать и на данный момент нет способа обратить внимание WoW именно на последовательность.

1.9.3. Случайные заклинания и предметы
Одним из наиболее частых запросов на этом форуме – макрос использующий случайный маунт. Это очень просто, благодаря добавленных команд /castrandom и /userandom. Как и в случае /castsequence/castrandom и /userandomиспользует в параметрах список заклинаний и/или предметов, разделенных запятыми и выбирает случайный элемент из списка при выполнении команды. Пример:
Цитата:
/castrandom Swift Green Mechanostrider, Black Battlestrider, Summon Dreadsteed
1.9.4. Атака
Есть две команды специально существующих для атаки по цели: /startattack и /stopattack, начинающий или прекращающих атаку. Команда /startattack также использует параметр в виде имени или ID для атаки заданной цели. Пример:
Цитата:
/startattack Cogwheel
ПРИМЕЧАНИЕ: команду /startattack можно использовать с каким-то из скилов рога, воина
Если нужен макрос, который ведет себя так же, как и умение Attack (т.е. переключающий атаку, а не только начинающий или прекращающий ее), можно делать это так:
Цитата:
/cast Attack
1.9.5. Манипулирование панелью действий
Имеются две команды, позволяющие переключать страницы панели действий: /changeactionbar и /swapactionbar/changeactionbar использует параметром одно число и всегда переключает панель на эту страницу. Одним из возможных применений – эмуляция позиций-стансов (stances) у хантеров, за счет пары макросов вида:
Цитата:
/cast Aspect of the Hawk
/changeactionbar 1
или
Цитата:
/cast Aspect of the Monkey
/changeactionbar 2
/swapactionbar использует параметрами два номера страниц и переключает между ними во времякаждого исполнения. Если у вас активна другая страница панели действий, команда сменит ее на первую из двух.
Цитата:
/swapactionbar 1 2
1.9.6. Удаление баффов
Команда /cancelaura позволяет удалять ненужные баффы. Например, так может снимать бафф в макросе с помощью такой команды:
Цитата:
/cancelaura Blessing of Salvation
1.9.7. Выход из форм
За исключением воинов, любой класс со стансами (stances) (друиды, присты с Shadowform, и прочие) могут использовать команду /cancelform чтобы выходить из текущей формы. Значит, можно делать нечто в духе:
Цитата:
/cancelform
/use Super Healing Potion
1.9.8. Прерывание заклинаний
/stopcasting, как можно догадаться, используется для прерывания заклинания во время его использования. Это полезно для создания макроса отмены, прерывающего любые действия выполняемые вами в данный момент, в угоду чего-то более важного. Мой варлок, к примеру, пользуется таким макросом:
Цитата:
/stopcasting
/cast Shadowburn
1.9.10. Преждевременное прерывание макросов
/stopmacro одна из тех команд, бесполезных сами по себе, кроме тех случаем когда используется вместе с опциями макросами. Ее основное использование – создание «провальной» логики, предупреждающей исполнение макроса при срабатывании определенных условий. Для примера смотрите раздел «Использование фокуса» в конце Части 2.

1.9.11. Спешивание
Цитата:
/dismount
Ну что тут еще сказать…

1.9.12. Сохранение целей для последующих нужд
Команда /focus разрешает сохранять цель, чтобы вернуться к ней позже. К примеру, скажем ваш лидер рейда отдает указание превратить цель в овцу. Первым делом, выберете монстра, и введите /focus. Теперь воспользуйтесь макросом, чтобы прочесть заклинание на фокусную цель.
Цитата:
/target focus
/cast Polymorph
/targetlasttarget
Замечу, что это не самый эффективный способ использовать возможности фокуса. Читайте «Использование фокуса» в Части 2 для более глубокого разбора этой механики.

1.9.13. Симуляция нажатия кнопок
Команда /click берет имя кнопки и действует так же, как если вы нажали эту кнопку мышкой. По умолчанию, она ведет себя как левый щелчок, но можно указывать команде другие кнопки. Есть пару способов определить имя интересующего вас элемента:
  • Вы можете воспользоваться аддоном. Некоторые аддоны, включая MoveAnything, показывают имя элемента под курсором мыши.
  • Можно просмотреть программный код UI для нужного элемента. Это подходит людям, разбирающимся в программировании аддонов.
  • Можно назначить на клавишу следующий макрос и активировать его во время наведения курсора мышки на нужный элемент:
    /run local f = GetMouseFocus(); if f then DEFAULT_CHAT_FRAME:AddMessage(f:GetName()) end
/click можно применять во многих случаях. Вы можете связывать множественные макросы посредством симуляции щелчков мыши по другим макросам. К примеру, у вас есть весьма длинный макрос, длиннее ограничения в 255 символов. Поместите сколько влезет в первый макрос, дописав в конце следующую строку
Цитата:
/click MultiBarRightButton1
Остальную часть кода поместите в новый макрос, который затем вставьте в MultiBarRightButton1 (это первая кнопка правой вертикальной панели действий).
Можно также делать такие вещи, которые обычно не доступны в макросах или требуют сложных скриптов на Lua. Вот пример макроса, который автоматически выкупает и подтверждает выкуп на лоте аукциона (убедитесь, что выбрали нужный лот; все случайно неверные покупки будут на вашей совести):
Цитата:
/click BrowseBuyoutButton
/click StaticPopup1Button1
Вершина использования – это сложные разветвления с помощью /click, которые будут рассмотрены в Части 2.

1.10. Продвинутые скрипты
1.10.1. Чего не могут скрипты
Скрипты очень мощный инструмент, позволяющий принимать сложные решения на основе каких-то критериев. Из-за этой мощи, Blizzard ограничил тип дозволенных вещей, чтобы запретить макросам и аддонам выполнять действия, которые должен выполнять сам игрок. Я начинаю этот раздел с ограничений, чтобы у вас не было неоправданных надежд. Хотя скрипты полезны во многом, вы не можете использовать их чтобы читать заклинания, применять предметы, менять страницы панелей действий или влиять на вашу цель. Вы ограничены набором «безопасных» команд, уже описанных нами выше.

1.10.2. Что такое скрипт?
WoW UI контролируется кодом написанным на скриптовом языке Lua. Можно воспользоваться преимуществом скриптовой системы в макросах посредством команды /run или /script (но /run позволяет сэкономить пару символов). Весь скрипт должен находиться в одной строке, хотя дозволено иметь множество команд /run в одном макросе.
Полный курс Lua и программирование, безусловно, вне пределов этого руководства.
Blizzard предоставляет множество функций (именуемых API), которые могут использовать Lua скрипты, чтобы контролировать UI. Вы можете просмотреть API и другие возможности системы UI по ссылкеhttp://www.wowwiki.com/Interface_Customization (если вы начнете писать скрипты и аддоны, то обнаружите WoWWiki незаменимым ресурсом в этом деле). Я не могу открыть вам все детали окружения UI, потому просто приведу в пример одного из моих любимых скриптов.
Следующий макрос (его я положил в основу моего аддона CCWarn), прошепчет всем в вашем рейде просьбу сменить цель, если она совпадает с вашей. Это поможет им избежать сбивания с монстра состояния овцы, которое накладывает этот макрос.
Цитата:
/cast Polymorph
/run for i=1,GetNumRaidMembers()-1 do local u,t=”raid”..i,”target”if UnitIsUnit(u..t,t)then SendChatMessage(”Change targets! Trying to sheep…”,”WHISPER”,nil,UnitName(u))end end
Есть две причины, по которым все выглядит крайне запутанным. Первая – ограничение в 255 символов; вам часто придется «срезать углы» чтобы засунуть ваш макрос в этот предел. Вторая – необходимо чтобы весь скрипт находился на в одной строке. При более идеальных условиях, этот скрипт мог бы выглядеть так:
Цитата:
for i = 1, GetNumRaidMembers() - 1 do
local unit = “raid”..i
if UnitIsUnit(unit..”target”, “target”) then
SendChatMessage(”Change targets! Trying to sheep…”, “WHISPER”, nil, UnitName(unit))
end
end
1.1 Что такое опции макросов?
Опции макросов это способ контролировать действия макросов, основываясь на разной информации. Чтобы сразу привести пример, следующий макрос прочитает заклинание Renew на дружественную цель и Shadow Word: Pain на враждебную.
Цитата:
/cast [help] Renew; [harm] Shadow Word: Pain
Во время выполнения этого макроса, проверяется состояние [help]. Оно определяет, является ли ваша цель той, на которую допустимо накладывать дружественные заклинания. Если состояние [help] истинно, дальше выполняется заклинание Renew, и макрос переходит к следующей строке. В противном случае (у вас или нету цели, или вы не можете использовать дружеское заклинание на текущую цель), неудача приводи к обработке следующего условия. Теперь макрос проверяет состояние [harm][harm] работает по принципу [help] только для атакующих заклинаний. Если условие истинно, используется Shadow Word: Pain. Если нет – (опять же нет цели, или цели невозможно навредить) больше ничего не выполняется, так как условий больше нет.
Примечание: Можно было убрать проверку на [harm] и макрос работал бы в практически также. Однако, если у вас нет цели или на нее невозможно использовать дружественные или атакующие заклинания, вы получили бы сообщение об ошибке, или, в зависимости от заклинания, курсор выбора цели.


1.2 Команды, допускающие опции
Только «безопасные» команды отвечают на опции макросов. Фактически, безопасные команды это та причина, по которой возникли опции. Небезопасные команды, вроде команд для чата, эмоции и так далее, могут выполнятся в скриптах на 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/download...MacroTalk.html), добавляет несколько команд /opt____ для каждой команды чата и общую команду /opt, которая позволяет добавлять опции для прочих небезопасных команд.


1.3 [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 на самого игрока.

2.4 Обзор синтаксиса
С пониманием как работают опции для макросов, может быть ужасная путаница, так что я воспользуюсь ранней возможностью, чтобы разъяснить их общую концепцию. Я буду использовать реальные примеры использующие действенные опции. Все опции будут раскрыты в деталях несколько позже.
2.4.1 Общие опции синтаксиса
Все консольные команды в принципе работают одинаково. У вас есть команда, и набор параметров для нее. Параметры зависят от команды, и некоторые команды используются без них. Вот несколько примеров:
Цитата:
/cast Smite
\___/ \___/
| |
| — параметр
– команда
Цитата:
/petattack
\________/ V
| |
| параметры (пустые)
|
команда
Цитата:
/castsequence reset=target Immolate, Corruption, Curse of Agony, Siphon Life
\___________/ \_________________________________________________ ___________/
| |
command parameters
Опции для макросов позволяют выбирать набор параметров на основе нескольких критериев. На наивысшем уровне, у вас есть набор групп критериев/параметров, разделенных точками с запятыми. Критерии состоят из нулевого или больше количества наборов условий. Каждый набор условий задается внутри квадратных скобок []. Вот иллюстрация общего синтаксиса:
Цитата:
/команда [условия] [еще условия] параметры; [условия] параметры …
Как видно из простых примеров, описанных выше, команда выполняется слева направо. Как только найден набор условий который является истинным, выполняется команд с соответствующими параметрами. Если условий в записи нет, она всегда будет истинна. По сути, можно представить команду /cast с одним заклинанием в качестве опции макроса, в единственной записи без условий. Если команда не может найти истинных условий, она вообще не выполнится.

2.4.2 Синтаксис для условий
Каждый из наборов условий это простой список разделенный запятыми. Условия могут задаваться в любом порядке, но [target=] всегда учитывается первым, перед любыми другими условиями. О разделителе «,» (запятая) можно думать как о слове «и». Условие вроде [help, nodead, target=focus] означает «Мой фокус дружественная цель И она не мертва».
Замечание: Условия чувствительны к регистру. Если использовать [Help] вместо [help], макрос выдаст ошибку. Однако, это не относится к параметрам условий (описанных ниже). По-прежнему, обычно лучше писать прописными буквами. Записывайте заклинания и предметы точно так же, как вы видите названия в их подсказках. И в точности следуйте примерам в этом руководстве.
Условия сами по себе строятся из нескольких блоков. Во-первых, как вы могли видеть в примере с «nodead», можно добавить приставку «no» перед условием для получения обратного значения. Заметьте, что [nohelp] не обозначает тоже что и [harm][harm] и [help] вернут истинное значение как минимум при наличии цели. По мимо этого, существуют некоторые цели, которым невозможно помочь или навредить (игроки с выключенным ПвП, небоевые питомцы, эскорт-квесты и так далее).
Некоторые из условий также требуют своего собственного набора параметров. Например, [stance] обозначает «Если включена любая стойка» (полезно для всех классов со стойками, кроме воинов так как они всегда находятся в стойке). Но можно указать одну или несколько конкретных стоек для проверки. Набор параметров начинается с двоеточия «:» и каждый параметр отделяется косой чертой «/», которая значит «или». Вот общая иллюстрация синтаксиса для одного условия, а все что в угловых скобках «<>» опционально.
Цитата:
[<no>condition<:parameterparameterparameter<...>>>>]
Вот простой пример использования умения Shield Bash в Defensive или Battle стойках, но если активна Berserker стойка – она переключается на Defensive.
Цитата:
/cast [stance:1/2] Shield Bash; Defensive Stance
Примечание: приставка «no» применяется ко всему условию и его параметрам. [nostance:1/2] будет означать «любая из стоек кроме 1 или 2»

2.4.3 Пустые параметры
Путаница возникает при использовании команд, не требующих параметров. Самая распространенная ошибка в написании макроса – добавлять лишнюю точку с запятой в конце, что приводит к неожиданным глюкам. Рассмотрим такой макрос:
Цитата:
/petattack [target=focus, harm];
Для не посвященных, выглядит будто я посылаю питомца на цель в фокусе если она враждебна, и больше ничего. Но давайте разобьем макрос на составляющие:
/petattack [target=focus, harm] ;
\________/ \__________________/ V V V
| | | | |
command options | | parameters (empty)
| |
| options (empty)
|
parameters (empty)
Видите дополнительный пустой набор опций и параметров? Запомните – пустые наборы опций всегда возвращают «истину», так что второй пустой параметр передается /petattack если первое условие не было истинно.

2.4.4 Пустые условия
Иногда нужна команда использующая умения при нужных условиях на определенную цель, но ведущая себя как обычно, если условия не истинны. В этом случае вы пожелаете использовать пустой набор условий, который всегда возвращает истину. Этот макрос прочитает Flash of Light на цель под курсором вашей мыши. Если цель под мышью враждебна или ее просто нет, макрос поведет себя как обычная команда /cast Flash of Light и выполнит заклинание на вашу цель, учитывая опции по авто-использованию умений на себя в настройках интерфейса.
Цитата:
/cast [target=mouseover, help] [ ] Flash of Light


2.4.5 [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

2.5. Условные переходы
Теперь рассмотрим полный список условий, и что они означают. Каждое из условий в свою очередь будет рассмотрено более подробно далее в руководстве.


2.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 – Вы входите в указанную группу
2.5.2. help и harm
Эти две опции мы уже рассмотрели довольно подробно. Мне нечего добавить больше, но ради полноты этот раздел останется здесь.


2.5.3. exists
Определяет существует ли заданная цель. Другими словами, если у вас нету цели, [exists] вернет ложь. Если у вас задан фокус, [target=focus, exists] вернет истину. Заметьте, что в некоторых случаях можно обойтись без [exists].[help][harm][dead][party], и [raid] все включают [exists] если они истинны.


2.5.4. dead
Если у вас есть цель, и она мертва, эта опция вернет истину.


2.5.5. stance:0/1/2/…/n (form)
Стойка - это термин широко используемый воинами, друидам, рогами (стелз), пристами (шадоуформа) и шаманами (призрачный волк). Стойки применяются только в тех ситуациях, когда определенные умения могут быть использованы в каких-либо формах. Именно по этому, ауры паладином (хоть они и находятся на панели форм) и аспекты охотников НЕ ЯВЛЯЮТСЯ стойками.
В простейшем случае, [stance], как упоминалось ранее, означает что вы находитесь в любой из стоек/форм. Это эквивалент [stance:1/2/3/.../n] где n это номер стойки. [stance:0] здесь то же что и [nostance], и возможно использовать условия вроде [stance:0/3], чтобы проверить находитесь ли вы в стойке 3 или вообще без стоек.
Стойки сами по себе имеют такие же порядковые номера, как их положение на панели стоек/форм. К примеру, формы друида начиная с Медведя, Аква-формы, Кота и формы для путешествий будет иметь номера стоек с 1 по 4. Чтобы вам было легче со всем этим, вот все стойки:

Цитата:
Сообщение от Warrior
Стойка 1 Battle
Стойка 2 Defensive
Стойка 3 Berserker
Цитата:
Сообщение от Druid
Стойка 1 Bear
Стойка 2 Aquatic
Стойка 3 Cat
Стойка 4 Travel
Стойка 5 MK/ToL
Стойка 6 Flight
Цитата:
Сообщение от Priest
Стойка 1 Shadowform
Цитата:
Сообщение от Rogue
Стойка 1 Stealth
Цитата:
Сообщение от Shaman
Стойка 1 Ghostwolf
Примечание: если у друида отсутствует нужная форма, все более высокие числа сдвигаются в таблице вверх.
Примеры:
Цитата:
/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.

2.5.6. stealth
Как может показаться рогам среди читателей, что поскольку у рог нет других стоек, эта опция работает идентично к [stance], [stealth] также применимо к расовому умению ночных эльфов Shadowmeld, Invisibility у магов и так далее.
2.5.7. 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, связанная с чем-либо еще - макрос не выполнится, так как клавиатурные комбинации имеют больший приоритет.


2.5.7.1. Переменные 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) – слежение за квестами
2.5.8. button:1/2/…/5/virtual click (btn)
Похожим на условие [modifier]образом, опция [button] позволяет вашему макросу отвечать напрямую, в зависимости от того какая кнопка мыши использована для активирования макроса. Номера кнопок с 1 по 5 соответствуют левой, правой или средней кнопкам, и кнопкам 4 и 5 (если такие есть на вашей мышке). Если ваш макрос активируется по нажатию клавиатурной комбинации, условие [button:1] будет всегда истинно.
Цитата:
#show Swift Green Mechanostrider
/userandom [nobutton:2, flyable, nomounted] Ebon Gryphon; [nomounted] Black Battlestrider, Swift Green Mechanostrider
/dismount [noflying] [button:2]
Поведение макроса когда вы не верхом: левый щелчок выберет Ebon Gryphon если это возможно (проверка flyable), в противном случае макрос выберет в качестве маунта либо Black Battlestrider, либо Swift Green Mechanostrider. Щелчок правой кнопкой по макросу всегда приведет к выбору одного из механических цыплят.
Поведение максроса, если вы верхом: левый щелчок приведет к спешиванию, если мы только не в полете. Правый щелчок – всегда приводит к спешиванию.
«Виртуальный щелчок» обычно можно игнорировать, но если вы используете аддон для модификации панелей действий, он может быть и полезным. Панели действий, реагирующие на различные состояния, преобразуют щелчки в виртуальные нажатия, чтобы определить какое из действий выполнить. Так как эти виртуальные нажатия зависят от конкретных аддонов, я не стану погружаться в дальнейшие объяснения.


2.5.9. 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
.5.10. channeling: имя заклинания;
Обычно, если вы вливаете заклинание (т.е. выполняете чэннелинг) и начинаете накладывать другое, оно прервет процесс вливания. Эта опция позволяет избежать таких случаев. К примеру, мы хотели бы прервать в таких случаях заданное заклинание, но не прерывать другие. [channeling] без параметров отвечает любому заклинанию, но можно также и использовать произвольный список имен заклинаний для проверки.
Примечание: вливание (чэннелинг) это НЕ ТО ЖЕ САМОЕ что обычно чтение заклинаний. Использование [channeling] применимо только к заклинаниям типа Arcane Missiles, Drain Life, Mind Flay и так далее, когда после начала чтения, заклинание проявляет своей эффект с течением времени.

2.5.11. 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.

2.5.12. bonusbar:1/…/5
Любой из классов, чьи панели действий основаны на определенных условиях (стойки, режим скрытности, владение и так далее) используют дополнительную, «бонусную панель». Так задается и диапазон ячеек действий, которые заменяют страницу 1 основной панели действий. Например, когда прист контролирует ум какой либо цели, их панель действий использует «бонусную» панель №5. Значит, можно сделать следующий макрос переключений:
Цитата:
/cast [nobonusbar:5] Mind Control
/cancelaura Mind Control
Для детального описания по классам и их бонусным панелям, читайте http://www.wowwiki.com/API_GetBonusBarOffset.

2.5.13. pet:имя или тип питомца
Все классы с питомцами должны оценить полезность этой опции. Она позволяет выбирать нужное действие в зависимости от активного питомца. Можно указывать имя питомца или его тип (Voidwalker, Boar, Imp, Wolf и т.д.). Само по себе [pet] означает любого из питомцев. Вот пример макроса, позволяющий магам выбирать между заклинанием Freeze у элементаля и своим собственным заклинанием Frost Nova:
Цитата:
/cast [pet] Freeze; Frost Nova

2.5.14. 
combat
Истинно, если вы в бою.
2.5.15. mounted, swimming, flying, indoors; outdoors
Само собой понятные опции (верхом, плывет, летит, в помещении и вне помещения). Они применимы только к вам, игроку.
2.5.16. flyable
Как было коротко сказано выше, [flyable] определяет, находитесь ли вы с Outland, где разрешены летающие маунты.
2.5.17. party ; raid
Возвращает истину, если цель в вашей партии или рейде.
2.5.18. group:party/raid
Эта опция позволяет определять, в каком типе группы вы состоите. [group] эквивалентно [group:party][group:raid] включает в себя [group:party]. Это может быть полезно для классов с баффами:
Цитата:
/cast [group, nomodifier] Arcane Brilliance; [help] [target=player] Arcane Intellect
Если вы в группе, в общем случае макрос наложит Arcane Brilliance. Если вы удерживаете кнопку-модификатор или вы вне партии, макрос прочтет Arcane Intellect на дружественную цель или на вас самих.

2.6. Приложения для опций макросов
Многие из команд, с которыми мы знакомились в Части 1, не очень-то полезны сами по себе, пока мы не используете с ними опции. Мы уже видели пару простых примером их использования, но все еще есть необходимость рассказать об этм более подробно. Следующие разделы свяжут все потерянные концы и, я надеюсь, вдохновят вас на собственные изыскания.

2.6.1. Использование фокуса
Фокус - это ID цели как и target, player или raidpet1target (подробности читайте на http://www.wowwiki.com/UnitId). Он разрешает вам обращаться к тому монстру, игроку, или НПЦ, который вы укажете. Простейшим применением фокуса является использование его с клавиатурными комбинациями. В меню клавиатурных комбинаций есть две фокусо-зависимых функции: Focus Target и Target Focus. Focus Target устанавливает ваш фокус на вашу текущую цель (он также сбрасывает фокус, если у вас нету цели). Когда цель-фокус установлена, можно использовать ID цели для всех прочих команд. Target Focus, как можно догадаться - использует как цель, ваш текущий фокус. Однако такая привязка не использует все преимущества фокуса. Чтобы выжать максимум из фокуса, нужно использовать макросы с опциями.
Один из частых случаев использование – назначение цели для крауд-контроля. Маг может выбрать монстра для превращения в овцу, в качестве своего фокуса. Далее он сможет вернуться к цели для вливания повреждений и активировать следующий макрос, когда нужно переналожить превращение в овцу.
Цитата:
/cast [target=focus] Polymorph
Или лекарь может установить в качестве фокуса основного танка рейда. С аддоном вроде FocusFrame (http://wow.curse.com/downloads/details/5681/), он будет иметь отдельную панельку для облегченного лечения танка.
К дополнению к клавиатурным комбинациям, существуют консольные команды /focus и /clearfocus. Без параметров, /focus работает также как и клавиатурная комбинация, назначая текущую цель вашим фокусом. Можно также задать любой из корректных ID целей или имя в качестве параметра для /focus:
Цитата:
/focus party3target
А вот пример более продвинутого «фокусирования»:
Цитата:
/focus [target=focus, noharm] [target=focus, dead] [modifier]
/stopmacro [target=focus, noexists]
/cast [target=focus] Polymorph
Первая строка устанавливает фокусом вашу текущую цель (или сбрасывает фокус, если цели нет), в зависимости от одной из ситуаций:
  • У вас нет враждебного фокуса (если на деле он дружественен или не существует)
  • Ваш фокус мертв
  • Вы зажали кнопку-модификатор (в случае если вы хотите сменить фокус, имея уже установленный)
Вторая строка макроса, не выполняется если у вас нету фокуса. И, наконец, макрос накладывает заклинание Polymorph на ваш фокус. Это дает вам одно-кнопочное решение для крауд-контроля фокуса. Заметьте, мы могли бы использовать условие [exists] в команде /cast, вместо того чтобы разделять его командой /stopmacro. Но, /stopmacro дают дополнительную гибкость, останавливая прочие команды, которые мы могли бы добавить, вроде вывода предупреждений посредством /p.
Можно и менять вашу цель и фокус, давая эффект двух целей, между которыми вы переключаетесь:
Цитата:
/cleartarget [target=target, dead]
/clearfocus [target=focus, dead]
/target focus
/cleartarget [target=focus, noexists]
/targetlasttarget
/focus target
/targetlasttarget
Первые две строки очищают цель и/или фокус, если они мертвы (если же вы действительно хотите отслеживать смерть множественных целей, чтобы, к примеру, воскрешать или забирать предметы с них, то нужно удалить эти строки). Четвертая строка нужна так как /target focus не сбрасывает цель, если у вас нет установленного фокуса (без неё, пятая строка выберет вашу предыдущую цель).

2.6.2. Разветвления макросов используя /click
Скажем, нам нужна кнопка, которая выбирает между тремя заклинаниями, основанных на модификаторах shift, ctrl или без модификатора, а также при двух разных целях, в зависимости был выполнен левый или правый щелчок мышью. Все это можно сделать в макросе такого вида:
Цитата:
/cast [modifier:shift, button:1, target=party1] [modifier:shift, button:2, target=player] Greater Heal; [modifier:ctrl, button:1, target=party1] [modifier:ctrl, button:2, target=player] Flash Heal; [nomodifier, button:1, target=party1] [nomodifier, button:2, target=player] Renew
Такой вот громоздкий скрипт вышел (по факту, он больше ограничения в 255 символов). Его можно разделить на несколько строк для ясности и убрать избыточность, чтобы сэкономить место. Но даже тогда, он будет довольно зверским:
Цитата:
/cast [modifier:shift, button:1, target=party1] [modifier:shift, target=player] Greater Heal
/cast [modifier:ctrl, button:1, target=party1] [modifier:ctrl, target=player] Flash Heal
/cast [button:1, target=party1] [target=player] Renew
Но если использовать главный макрос для выбора цели, в зависимости от нажатой кнопки мыши и двух макросов, выбирающих заклинания по кнопкам-модификаторам, мы можем упростить понимание макроса. Ради нужд этих примеров, макросы 2 и 3 находятся на MultiBarLeftButton2 и MultiBarLeftButton3, соответственно.
Макрос 1:
Цитата:
/click [button:1] MultiBarLeftButton2; MultiBarLeftButton3
Макрос 2:
Цитата:
/cast [modifier:shift, target=party1] Greater Heal; [modifier:ctrl, target=party1] Flash Heal; [target=party1] Renew
Макрос 3:
Цитата:
/cast [modifier:shift, target=player] Greater Heal; [modifier:ctrl, target=player] Flash Heal; [target=player] Renew
Оффтопик: в моей теме с пожеланиями (http://forums.worldofwarcraft.com/th...icId=101150523) проскакивал запрос на команду, позволяющую задать target= для всех опций макросов. Макросы 2 и 3 вышли бы куда проще, если бы такое было возможно. Фактически, в зависимости от конкретной реализации, можно обойтись без облегчающей понимание /click. Может, что-то в духе:
Цитата:
#target [button:1] party1; player
/cast [modifier:shift] Greater Heal; [modifier:ctrl] Flash Heal; Renew
Вы можете также сделать что-либо похожее используя /target вместо гипотетического #target и завершить макрос командой /targetlasttarget, но это лишает всякого смысла использование [target=], о котором упоминается выше.

3.1. Пользовательские иконки
Если вы хотите использовать пользовательские иконки для ваших макросов, для этого необходимо поместить их в папку World of Warcraft\Interface\Icons (предварительно создав ее, если такой нет). Файлы должны следовать таким же требованиям, как и текстуры для интерфейса. А именно, быть либо в BLP формате или 24 битными/24 битными + альфа-канал TGA файлами. Размер их должен быть кратен 2-м вплоть до 512 (т.е. 32х32, 512х12. Замечание: любые не квадратные изображения будут выглядеть искаженными на панели действий.


3.2. Содержание макросов на разных компьютерах
До тех пор, пока Blizzard раздумывает над хранением макросов на серверах, необходимо копировать содержимое папки World of Warcraft\WTF\Account\Имя_аккаунта между компьютерами. Это также предохранит все ваши настройки для установленных аддонов, но каждый из аддонов должен быть установлен на каждый из компьютеров.
Если же вы хотите переносить одни лишь макросы, нужно копировать World of Warcraft\WTF\Account\Имя_аккаунта\macros-cache.txt для общих макросов, и World of Warcraft\WTF\Account\Имя_аккаунта\Ваше_Имя\Имя_ваш его_персонажа\macros-cache.txt для макросов конкретного персонажа.


4 комментария:

  1. Неплохая статья, тока часть про ранги нужно удалять, ибо убрали их уже.

    ОтветитьУдалить
  2. Я пока только сохранила, вычитку не делала. Поэтому всё под катом. Но спасибо, что обратили внимание. =)

    Сама давно в разных местах натыкалась на статьи или отдельные макросы, но не видела чтобы описывалось сразу всё, поэтому как нашла - сразу утащила к себе, для дальнейшего изучения =)

    ОтветитьУдалить
  3. спасибо за статью. Полезно её множить во всех доступных местах )))

    вот тут надо подправить, а то к этой главе и так мысли путаются, а тут такая конструкция:
    "2.4.2 Синтаксис для условий
    Каждый из наборов условий есть простым списком разделенный запятыми. "

    ОтветитьУдалить