Перейти к содержимому



Гайд: Как писать макросы!


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 dekart

dekart

    Уровень 50

  • Активисты
  • 155 сообщений
  • 4 352

Отправлено 31 Январь 2013 - 06:17

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

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

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

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


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

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


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

Пример макроса с модификаторами:
Изображение Изображение Изображение Изображение
Код:
/cast [mod:ctrl] Holy Light; [mod:alt] Flash of Light; [mod:shift] Holy Shock; Blessing of Kings Изображение Изображение Изображение Изображение
при нажатом контроле кастуется длинный хил, при альте быстрый, при шифте шок, а если без - баффается БоК


@target
Этот параметр указывает к какой цели нужно применять привязанный к блоку условий спелл, а так же цель которую нужно проверять на соблюдение conditions (см. далее)
Список возможных target - player, target, targettaget, focus, mouseover, party1 (от одного до 4(?)), arena1 (1-5). Список всех UnitID http://www.wowwiki.com/UnitId
Раньше использовалась запись target=UnitID, like target=focus и хотя сейчас такая запись тоже доступна, для краткости макросов предпочитаю использовать @UnitID
Пример:
Изображение Изображение Изображение Изображение
Код:
/cast [nomod:shift, @target][mod:shift, @focus] Blind Изображение Изображение Изображение Изображение
Один из наиболее часто используемых макросов для рог - использовать блайнд, при нажатом шифте в фокус-таргет

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


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


состояния цели
Список возможных состояний - (no)exists, (no)dead, (no)harm, (no)help
Пример:

Изображение Изображение Изображение Изображение
Код:
/cast [help, dead] Ressurection; [help, nodead] Sign of the Wild; [harm, nodead] Faery Fire Изображение Изображение Изображение Изображение
Макрос кастует рессурект в мертвого союзника, баффает живого лапкой, и кидает ФФ в живого противника

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


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

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

Список возможных stance для классов:
Изображение Изображение Изображение Изображение
Код:
Warrior [1]Battle [2]Def [3]Bers
Druid [1]Bear [2]Aqua [3]Cat [4]Travel [5]Moonkin/Tree [6]Flight *если у друида нет формы совы/дерева в талантах, то флай форма будет 5!
Priest [1]Shadowform
Rogue [1]Stealth [3]Shadow Dance
Shaman [1]Ghost Wolf
Warlock [2]Demon Form Изображение Изображение Изображение Изображение


stealth
Так же для классов разбойник и друид доступна проверка на наличие стелса - (no)stealth

Изображение Изображение Изображение Изображение
Код:
/cast [stealth] Sap; [nostealth] Gouge Изображение Изображение Изображение Изображение
Сап, гоудж одним макросом в зависимости от стелса


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

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


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

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


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

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

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

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

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

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

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


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





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

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

Изображение Изображение Изображение Изображение
Код:
[nomod:shift,@player] Изображение Изображение Изображение Изображение
Второй вариант - нажат мод шифт и в таргете дружественная цель

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

Изображение Изображение Изображение Изображение
Код:
[mod:shift,@targettarget,help] Изображение Изображение Изображение Изображение

Составим макрос целиком

Изображение Изображение Изображение Изображение
Код:
#showtooltip
/cast [nomod:shift,@player] [mod:shift,@target,help] [mod:shift,@targettarget,help] Приказ хозяина Изображение Изображение Изображение Изображение




пример2





Изображение Изображение Изображение Изображение
gem писал(а):
помогите пожалуйста если это возможно написать макрос, чтоб приоритетом каст кидался по маусоверу, а когда мышка не наведена по фокусу Изображение Изображение Изображение Изображение
Довольно несложный, но часто используемый тип макросов с приоритетом возможных целей
1ая цель - маусовер

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

2ая цель - фокус

Изображение Изображение Изображение Изображение
Код:
[@focus,harm,nodead] Изображение Изображение Изображение Изображение

ну и добавим 3ью цель - текущую

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

Макрос целиком будет выглядеть так

Изображение Изображение Изображение Изображение
Код:
#showtooltip
/cast [@mouseover,harm,nodead] [@focus,harm,nodead] [] Harmfull spell Изображение Изображение Изображение Изображение



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

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


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

http://www.wowwiki.com/Making_a_macro

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

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

Заказ рекламы на NestGames: Жмяк
NestShop или как тратить Нестпоинты: Жмяк
Пилишь видосы? Ждём твоей работы у нас:Жмяк
Бесплатный пиар в разделе услуги:Жмяк

#2 descude

descude

    Уровень 50

  • Активисты
  • 146 сообщений
  • 2 830

Отправлено 19 Июнь 2013 - 20:02

Спасибо -_-

#3 EvilNerd

EvilNerd

    Уровень 220

  • Заблокированные
  • 2 374 сообщений
  • 486

Ачивки

     

Отправлено 20 Июнь 2013 - 10:31

Хм...Спасибо за статью. Думаю скоро вернуться в ВоВ и макросы вспомню заодно.
Бывший член ордена Иллюминатов и один из его основателей.
Представитель Церкви Летающего Макаронного Монстра

#4 Shimikami

Shimikami

    Уровень 25

  • Пользователи
  • 30 сообщений
  • 688

Отправлено 19 Июнь 2016 - 14:53

Для новичков сойдёт.




Количество пользователей, читающих эту тему: 3

0 пользователей, 3 гостей, 0 анонимных