Макрос для хилера

Добрый день! Нашла вот такой макрос на старом форуме:

/cast [@mouseover,exists][@target,exists,noharm][@player] хилка

Ссылка на тему форума с макрасом

Поняла, что именно его так долго искала, и что макрос мне необходим! Но почему-то, он у меня не работает. Перс хилит все время только себя, а не цель, на которую наведен курсор, или таргет. Помогите пожалуйста разобраться, я совсем бубенчик и слаба в макросах :sweat_smile:

Лайков: 1

У меня работает такой макрос:

/cast [@mouseover,exists][@target,exists,noharm][@player] Исцеление

Во-первых, на мой взгляд, 2 и 3 квадратные скобки не нужны. При применении заклинания исцеления если в таргете у тебя есть цель, которую можно подхилить, то итак применяется лечащее заклинние на эту цель, если в таргете нет такой цели - то автоматом на себя. Какой тогда смысл в этих скобках?
Ну а по вопросу, почему этот макрос не пашет - у меня 2 предположения:

  1. Не поставлены пробелы между скобками.
  2. Неправильно написано применяемое заклинание.

P.S. Хотя если заклинание все же выполняется, значит, 2 пункт отпадает. Ошибка либо по п.1, либо (если пробелы между скобками в команде поставлены) еще раз проверить (посимвольно) первую скобку и вторую скобку, раз уж они не срабатывают. Я бы вообще убрал 2ое и 3е условие, они тут не нужны, ладно бы еще во второе условие поставить параметр nodead, тогда бы от условия во 2ой скобке был бы хоть какой-то смысл. Хотя… по моему (тут не уверен) если таргет мертв, то хилка все равно автоматом применяется на себя.

В вашем случае такой макрос работает абсолютно также:

/cast [@mouseover, help] [] хилка

Лайков: 1

Спасибо огромное! Заработало :slight_smile:

Лайков: 1

Логичнее было бы переписать так:

/use [@mouseover,help,nodead][help,nodead][@player]хилка

Слово “хилка” в данном макро необходимо заменить на реальное название лечащей способности, желательно при помощи шифт-клика из книги заклинаний.

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

Условие nodead включает в себя условие exists, дополнительно проверяя жив ли пациент.
Условие help проверяет возможность лечения пациента.

Модификаторы цели:

  • @mousover говорит о том, что будет проверяться/применяться способность к объекту под курсором (игрок, НИП, фрейм участника группы или рейда);
  • @player говорит о том, что будет проверяться/применяться способность к себе;
  • отсутствие модификатора цели говорит о том, что будет проверяться/применяться способность к игроку или НИП, чей “портрет” находится во фрейме цели.

Т.е. если под курсором будет живой игрок или НИП к которому можно применить лечение - оно будет применено к нему.
Если под курсором не будет подходящего, то следующим будет проверяться текущая цель. Если в цели не будет подходящего - способность будет применена к себе.

В пробелах между скобками нет необходимости, равно как и после запятых и прочих знаков препинания. Всё замечательно работает и без них.

2 лайка

Возможно. Я не проверял. Старая привычка, оставшаяся в наследство от затяжного периода программирования, - делить логические конструкции хотя бы пробелом, как минимум.
Но я хотя бы предположил причину, почему предложенный ТС макрос не работает (если дело не в пробелах, то тогда не имею ни малейшего понятия, почему же все-таки макрос работает “не так”), ваш же пост несет сухую теорию без малейшего объяснения, почему же не работает изначально приведенная команда.
К слову, если уж говорить о “логичности”, то я уже предложил самый логичный вариант команды (см. пост выше). Что в вашем “логичном” примере, что в примере автора топика, надобность в условиях во 2ой и 3ей скобках отсутствует. Объяснение, почему так, я уже написал также постом выше.
Более того, зачем объяснять

если ТС правильно записал название скилла. Т.е. эта инфа, если уж рассуждать дальше о “логичности”, явно излишняя.
И напоследок дам совет все-таки не использовать команду “/use” вместо команды “/cast”. Могут всплыть неожиданные ситуации при подмене этих команд, с чем я и столкнулся в свое время (я всегда сам для себя прописываю макросы), когда перс, например, упорно отказывался сесть на маунта, или юзать некоторые заклинания. Да, вроде бы экономия одного-двух-трех символов (что в свете жесткого ограничения длины макроса имеет какой-то смысл), но как показал опыт, если хочешь сделать макрос, работающий на протяжении нескольких дополнений без ошибок, лучше такие допущения стараться избегать.

Спасибо за ответ! Попробую и этот вариант :slight_smile:

Лайков: 1

Спасибо, но прежде, чем давать подобные советы, стоит посмотреть код функций для обработки /use и /cast.

Если прописанное вы в состоянии прочитать, но не в состоянии понять, то мне вас жаль.

2 лайка

Просто повторю:

Внезапно, да? И “если прописанное вы в состоянии прочитать, но не в состоянии понять, то мне вас жаль”. (с)

Кстати, мне и правда, видимо, никогда не понять, к чему относятся две последние цитаты в посте выше… Если вы считаете, что я не в курсе, каким образом обрабатываются команды макроса, то тут даже и говорить тогда не о чем. Доказывать любому мимокрокодилу, что не дурак - это и есть верх идиотизма. На мой взгляд, я итак уже достаточно дал понять, что достаточно компетентен в вопросах написания макросов, чего не могу сказать о вас, чьи посты кроме теории ровным счетом н-и-че-г-о и уж тем более полезного. С предложенным “логичным” макросом уже сели в лужу.

Нет, не работает он так же.
Ваш макрос не учитывает некоторые детали:

  • если под курсором будет труп игрока или НИП, который, если бы он был бы жив, можно было бы вылечить, то будет выдано сообщение об ошибке и остальные условия будут проигнорированы;
  • если под курсором никого не будет, а во фрейме цели будет объект не подлежащий лечению, то будет выдано сообщение об ошибке и остальные условия будут проигнорированы;
  • не факт, что если никого не будет под курсором во фрейме цели, то хилка уйдёт в себя. Вместо этого возможно сообщение об ошибке.

Ну вот и проверь сам, я гарантирую, что очень удивишься, когда по всем трем пунктам у тебя не будет никаких ошибок и любое благотворное заклинание при невозможности скастовать на таргет/цель под курсором уйдет в тебя самого. Я знаю об этом и потому прописываю на важные умения специальную проверку (например, для хприста дух), чтобы при касте в уже умершую цель не повесить на себя автоматом, таким образом бесполезно слив кд.

P.S. Хотя каюсь, я не любитель юзать цели под курсором, потому для такого случая не уверен, как поведет себя каст хилки. Допускаю, что возможно появление ошибки. Тут, честно говоря, лично не проверял. Впрочем, про параметр nodead я также указывал в своем первом посте в этой ветке.

Ошибок может и не будет, но и способность применена не будет, курсор будет подсвечен в ожидании клика по подходящей цели.

Только если в настройках интерфейса в разделе “Бой” установлена галка в пункте “Автовыбор себя”. В противном случае курсор будет подсвечен в ожидании клика по подходящей цели.

По дефолту эта опция активирована. Если человек ее деактивирует, то, имхо, сам должен понимать, зачем он это делает. Иначе так плавно перейдем к обсуждению еще кучи настроек в игре, косвенно меняющих поведение при тех или иных телодвижениях. Очень сомневаюсь, что у ТС она деактивирована.
По крайней мере, в указанных вами п.2 и п.3 по дефолту всегда кастуется на себя.
Сейчас побегал пристом по таймовлку. Блин, никак не удается уронить дд (чтобы умер героем во славу эксперимента, не танка же ронять) во время схватки с боссом, дабы проверить ситуацию с мертвым телом, ошибок там точно не выдается, но про ожидание выбора цели… мда… Тут я, видимо, уже позабыл. Тем более я полагаю (судя по времени ответа), что это вы все же решили проверить, и написали это после проведенного теста, поэтому так и есть, видимо.
Но я точно помню, что задумался о реализации “защиты” автокаста в себя (т.е. защиты от слива кд), когда я кастую в умирающего что-то типа духа (например, за хприста), а он за мгновение до прожатия таки успевает сдохнуть. В итоге дух вешался на меня. Сейчас уже предполагаю, что может быть, имело место просто сброс цели в случае ее смерти, даже если эта цель - дружественная… Я уже и не упомню, а заново проверять займет некоторое время.

P.S. Ну наконец-то удалось уронить дд, да так тонко, что тот так и продолжает верить, что я реально старался вытянуть с того света, но не хватило сил… Да, действительно, при попытке каста в мертвую цель предлагает выбор другой цели. Ошибки не выводит.

В любом случае, ТС привел конкретный макрос (в котором ни слова про nodead, о котором я, еще раз напомню, упоминал в самом первом моем посте) и спросил, что в нем не так. Я привел абсолютно идентичный по работе пример макроса, только гораздо более компактно записанный, который выполняет все то же самое, что должен выполнять изначально приведенный в первом посте топика. Кстати, вопрос так и остался открытым, почему же не пашет макрос ТС (а точнее, пашет только 3ье условие в нем, по описанию поведения макроса от самого ТС), если дело не в пробелах.
Признаю, что ваш макрос более универсален, но замечу при этом, что это уже выходит за пределы главной цели топика. А совершенствовать макрос можно достаточно долго. Как пример, я часто добавляю правый клик в хилящие/диспелящие/сейвящие умения, по которому каст идет обязательно в себя. Имхо довольно полезно иметь такую подстраховку, дабы в тяжелый для себя момент случайно не кинуть в кого другого спасительный закл, особенно когда целей вокруг как сельдей в бочке, помноженными на лаги (привет, Ашран).
И таких возможностей совершенствования еще кучу можно предложить.

Я в основном играю за ДД. При этом любая попытка нанести урон неподходящей цели сопровождается сообщениями типа “Я не могу атаковать эту цель”, “Неподходящая цель”. Отсюда у меня уверенность, что в случае применения исцеляющих заклинаний будет что-то похожее. Однако, в данном случае, просто “подсвечивается курсор в ожидании клика по подходящей цели”, никаких ошибок при этом не выдаётся. Как-то так.

Он работает, я же написал во втором сообщении. Вы воду в ступе перетираете, уж извините.

Лайков: 1

У тебя не тот макрос, которой показал ТС в первом сообщении. Взять хотя бы те самые пробелы между скобками: в макросе ТС их нет, а у тебя - расставлены. Хотя, если верить

то дело не в них. Но я больше отличий не вижу. Поэтому сдается мне, что пробелы между условиями все же нужны.

Всё так же у меня.

Если ты не видишь разницы, то тут я тебе помочь ничем не могу.
Искренний совет обратиться к окулисту ты, вероятно, сочтешь за оскорбление. Я вот вижу, что у тебя скобки стоят дальше друг от друга, значит, разделены пробелом.
Впрочем, этот спор также ни о чем, как и по твоей претензии к обсуждению вышележащих постов.

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

P.P.S. Мде… Пришлось таки самому лезть проверять записи команд. Получается, инфа ТС была недостоверной, его макрос и правда вполне рабочий, по крайней мере настолько, насколько ожидал от него ТС, и это я основательно сел в лужу в попытке объяснить то, чего нет. Ну хоть теперь 100% уверен в том, что пробелы действительно неважны. И то хлеб.
Но хотя бы пользу принес тем, что сократил запись команды, судя по ответу. Мне, в общем-то, этого достаточно.

Лайков: 1

А по совершенствованию макроса: как можно задать условие для исцеления себя с кликом пкм?

Давайте жить дружно :slight_smile:
Это всего лишь игра, а если можно усовершенствовать макросы - это замечательно ^^

[@player,btn:2]

2 лайка