Miker
|
Дата: Суббота, 18.02.2012, 19:28 | Сообщение # 1 |
| 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 – если вы выходите из режима боя; shift, alt и 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
Если нужен макрос, который ведет себя так же, как и умение 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
Добавлено (13.03.2010, 17:04) --------------------------------------------- Продолжение руководства по написанию макросов от Cogwheel. Во второй части мы погрузимся в самые дебри макро-писания и рассмотрим множество тонкостей и нюансов.
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.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 | | | параметры (пустые)
|
|
| |