Макрос на сбор почты wow
В этой части я рассмотрю процесс взаимодействия с аукционером и почтовым ящиком. Если предыдущая часть была более общая, то эта часть уже больше связана с миром WoW и многое врядли будет применимо к другим онлайн-играм.
В той статье мы создали бота, который умеет самостоятельно приходить к NPC-аукционеру. Теперь нам необходимо реализовать дальнейшие наши действия. Сначала я немного расскажу как происходит торговля на аукционе. Я лично торгую символами, но аддоны, которые я использую, также позволяют автоматизировать торговлю любыми крафтовыми предметами. Я использую TradeSkill Master, это аддон от авторов auction profit masterа, который раньше назывался quick auctions. Смысл в чем: у меня лежит на аукционе около 400-500 моих предметов. Кроме меня на сервере есть еще 4-5 человек, которые торгуют тем же товаром в таких же объемах. Моя задача — все время держать цену на товар ниже чем у них. Это позволяет делать аддон: он автоматически сканирует аукцион, если находит что кто-то выставил предмет по цене ниже моей он снимает мой лот с торгов. Предмет отправляется на почту. Соответсвенно его потом нужно забрать с почты и выложить по цене ниже чем у конкурентов. Цену назначает также аддон.
Т.е. фактически задача бота заключается в том, что нужно прийти к аукционеру, открыть окно аукциона, запустить выставление на аукцион предметов, затем запустить отмену лотов, когда все отменится — пойти на почту и все забрать, дальше вернуться на аукцион. Бота, который умеет приходить к NPC-аукционеру мы уже написали. Теперь наша задача начать торговлю.
Торговля
Здесь уже идет чистый AutoIt, с небольшим добавлением макросов.
Нам понадобится один макрос, который будет брать в цель аукционера — это
Назначаем этот макрос, например, на кнопку «9». Дальше нам необходимо начать с ним торговлю. Тут тоже все просто: в настройках назначения клавиш, раздел «функции использования целей» надо назначить кнопку «взаимодействовать с целью», я ее назначил на "\" например.
После открытия аукциона необходимо запустить процесс выставления товаров из сумок на аукцион. В моем аддоне это желается простым кликом по кнопке, в других аддонах может потребоваться два клика — не принципиально, все равно функция получается тривиальной:
Собственно сама функция постинга тоже довольно проста. После нажатия на кнопку у нас появляется такое окно:
В нем внизу идет прогрессбар, а наверху появляется кнопка, по клику на ней наш товар выставляется на аукцион.
Соответственно наша задача кликать по кнопке пока есть прогресс-бар, как только прогресс-бар заканчивается — переходим к следующему шагу — отмене товаров, цену на которые перебили
Отмена ничем принципиально не отличается от постинга, такое же точно окно с прогрессбаром и одной кнопкой. Соответственно функции точно такие же, просто кликаем. Вот собственно и весь процесс торговли.
Перемещение к почтовому ящику
После того, как все отмененные товары попали на почту, надо их оттуда забрать. Для этого мы идем к почтовому ящику. В принципе процесс ходьбы к почтовому ящику почти ничем не отличается от процесса ходьбы к аукционеру:
Также пишем семафор, который будет показывать куда идти. Также делаем поворот системы координат чтобы было проще ориентироваться. Когда персонаж стоит лицом к почтовому ящику угол составляет 2.31 радиан.
Единственная разница: когда идешь в сторону почтового ящика в стенах есть выступающие элементы, в которые я иногда врезался, поэтому при создании семафора я этот момент учел и сделал чтобы при приближении к стене от отодвигался от нее вправо. В принципе это было сделано просто добавлением еще одной ветки в if:
Т.е. x < 0.2 это пока не выйду из здания, y > 0.896 — приближаюсь к стене, надо отойти. Как только вышел из здания стены уже нет, отходить не надо.
Теперь, когда персонаж пришел к почтовому ящику надо его каким-то образом открыть.
Способ как с аукционером тут не работает — почтовый ящик нельзя взять в цель.
Поэтому тут требуется небольшая подготовка: перед запуском бота необходимо максимально приблизить камеру и сделать чтобы он смотрел вперед и вниз. Раньше api вова позволял узнать текущее положение камеры, и можно было бы написать семафор для управления камерой, но после того как предприимчивые люди написали аддон дополненной реальности, который существенно упрощал жизнь игроку, эту функцию апи запретили к использованию в аддонах. Поэтому придется камеру настраивать вручную, при запуске бота: для взаимодействия с аукционером все равно как направлена камера.
Итак, мы пришли к почтовому ящику, камера направлена вниз. Видим примерно такую картину:
Наша задача кликнуть по почтовому ящику правой кнопкой мыши.
Тут возникают проблемы:
1. мы не можем гарантировать точно точку, в которую мы придем, только примерно
2. почтовый ящик может быть загорожен другим игроком
Эти проблемы означают следующее: мы не можем захардкодить точку, по которой надо кликать, чтобы открыть почтовый ящик, как мы поступаем в случае с другими кнопками.
Но с учетом нашего алгоритма похода к почтовому ящику мы считаем что скорее всего он будет где-то в левой трети экрана.
Соответсвенно напишем функцию, которая будет кликать сначала в то место, где чаще всего находится почтовый ящик, и если она его не находит — кликать по левой трети экрана пока не найдет.
За 9 часов тестирования эта функция только 2 раза не смогла найти почтовый ящик, и то по моей вине: путь до ящика был плохо прописан, персонаж падал с уступа на котором он стоял и ящика на экране вообще не было. Проблема была решена прописыванием в семафор условия, при котором персонаж должен отойти немного назад чтобы не упасть.
ПОчтовый ящик в открытом состоянии (слева вверху виден кусок обновленного семафора, более компактного):
Собственно открытие почтового ящика мы будем определять по появлению красной кнопки «получить все». Функция для autoit у меня получилась такая:
При этом после клика по красной кнопке она становится серой до того момента, пока все письма не будут получены
Получение писем
Вообще получение писем работает довольно просто: нужно просто стоят и ждать пока умный TradeSkillMaster не извлечет все письма из почты. Как только аддон все извлечет — кнопка меняется на красную и можно идти обратно к аукционисту: это мы уже умеем.
Казалось бы все, бот написан. Но тут то меня и поджидали самые большие проблемы: узнать о том, что все письма получены, оказалось не такой тривиальной задачей, как выглядело сначала. Вообще есть два способа узнать что все письма получены:
1. кнопка снова стала красной. самый простой вариант, к сожалению — самый редкий.
2. сумки заполнились — при этом кнопка не становится красной и бот мог бы вечно стоять и ждать возле почты. Чтобы решить эту проблему бот автоматически открывает последнюю сумку при запуске и следит чтобы последняя ячейка в ней была пустой. Как только цвет последней ячейки сумки меняется — значит сумки заполнены, пора идти на аукцион
3. иногда trade skill master глючит и некоторые пустые письма не удаляются с почты. В этом случае кнопка тоже никогда не становится красной, даже если писем на почте уже нет. В этом случае проблема решается просто: я взял последний слот почты, и смотрю меняется он или нет: при получении писем они постоянно сдвигаются вверх и слот меняется. Когда все письма получены он перестает меняться. Если он не меняется в течении 20 секунд — значит пора идти выставлять товар.
Итого функция получилась такая:
Все, мы успешно получили письма, возвращаемся к аукционеру!
В целом на этом я завершил свою разработку, потому что теперь мой бот умеет делать все, что я от него изначально хотел: приходит к аукционеру, выставляет свои предметы, отменяет предметы с перебитыми ценами, приходит на почту, забирает свои вещи, возвращается на аукцион, выставляет, и далее по кругу.
В качестве заключения хочу сказать что разработка ботов для онлайн-игр это как логическая игра:
Как заставить его забрать все письма? Каким образом обойти ту или иную особенность? Как лучше реализовать ту или иную функцию? Выходные считаю проведенными с толком, хорошая разминка для мозгов :)
Гайд на быстрое получение вещей с почты.
Напишу заранее, либо просто скучно.
Многие знают эти аддоны, но охота и поделиться со всеми.
Данные аддоны ускоряют процесс получения писем. Вам больше не нужно будет нажимать на каждое письмо, а всего лишь понадобится нажать одну кнопку.
1) Для начала вам нужно скачать аддон
ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ
2) Далее вам нужно разархивировать скаченный ZIP и поместить в папку с аддонами WoW\Interface\AddOns (Пример)
3) Далее вам нужно зайти в игру, и включить скаченный на выбор аддон
Используя аддон OpenAll , чтобы открыть все письма и получить предмет - вам нужно нажать на "Take All".
Используя аддон Postal - нужно нажать на "Открыть все".
Думаю, сложного в этом аддоне ничего нет.
Понадобится всем играющим на х100
Иногда получается так что на панели спеллов вам неудобно прожимать скилы или просто не хватает места под них,
в этом случае нам на помощь могут прийти макросы
Макросы позволяют объединять несколько умений, активируя их нажатием одной кнопки, что может экономить время.
Но данная возможность работает, только если не более чем одно из заклинаний имеет время каста или является мгновенным,
но имеет гкд (глобальный кулдаун или общее время восстановления).
Шаг 1: Игровой редактор макросов
Чтобы начать писать макросы Открываем игровое меню через ESC, или через иконку на игровом экране, тыкаем в кнопку макросы.
далее
Нажимаем Создать
все мы деле.
Шаг 2: Первый шаблон макроса.
тут уже вписываем имя макроса и выбираем знак вопроса если макрос боевой, если же это спам в чат типа набора в гильдию
выбираем любую понравившуюся иконку, это мало интересно мы тут будем сейчас серьезными вещами заниматься.
Самый простой макрос
Данный макрос выглядит и работает совершенно так же, как и заклинание «Апокалипсис» из книги заклинаний.
Поскольку данный макрос не имеет никакого дополнительного функционала с умениями из книги заклинаний или тринкетов,
нет смысла использовать его, это только пример, и в дальнейшем мы будем его развивать.
Шаг 3: Многострочные макросы.
Можно создавать макросы, использующие одновременно несколько умений по одному нажатию, помним про гкд угу.
Дописываем /petattack что заставит нашего прислужника атакавать Вашу текущую цель, и в догонку добавим скил пета /cast Цапнуть
-----
Если вы орк, троль или дворф черного железа для максимального усиления нашего
бурста вы добавляете в макрос активную рассовую способность /cast Кровавое неистовство
чтобы прям совсем у вражин искры из глаз посыпались докидываем в макрос прожимной трикет с боевым усилением /use Пузырек с оживленной кровью
Еще один простой, но очень полезный пример макроса:
/assist Ник Танка или Наводчика
/cast Вспышка болезни
или любой другой мнгновенный скилл в зависимости от вашаго класса и спека
Данный макрос позволяет мгновенно выбрать и начать атаковать цель танка или наводчика.
Особенно тема полезна в пвп на арене или на рбг.
Шаг 4: Сложный макрос с модификатором.
Итак мы уже имеем конструкцию многострочного макроса, ваши противники уже дрожат от страха перед вашим мега бурстом, но этого мало.
чтобы добавить ужасу недругам и поочередное нажатие спеллов, заменяем команду /cast на /castsequence после нее вписываем спелы через запятую
должно получиться так:
Чтобы макрос работал корректно нам нужно немного его модифицировать, перед спеллом с которого должна начинаться ротация ставим восклицательный знак
и после /castsequence добавляем через пробел конструкцию reset=75, где число обозначает время в секундах
в итоге должно получиться слудующее
тут reset=75 будет давать команду макросу сбрасывать через 75 секунд в начало, а восклицательный знак будет давать макросу понять
что это самое начало - Апокалипсис
подобный макрос можно создать и для защиты персонажа
например бдк с тигелем в мейн слоте сердца азерот
что мы тут наблюдаем?
поочередное нажатие деф способностей в расстановке кулдаунов по возрастанию, глубина прожатия будет зависеть от ситуации
а сброс макроса будет происходить через 50 секунд, к откату антимагического пациря,
дополнительно будем использован камень здоровья лока, если хп цело то и камень останется цел,
далее новая модификация [@player](далее эту конструкцию буду проговаривать просто собака плеер без квадратных скобок),
команда которая заставит применить заклинание на себя, в нашем случае небольшой подхил от азеритовой сущности.
(распологаем каждый спел в отдельности с удобным местом для прожатия, всякое бывает, например нам будет нужна только незыблемость льда,
и чтобы не запускать остальные кулдауны мы прожмем способность отдельно)
также эту конструкцию можно использовать с заклинаниями для которых надо выбирать место положения применения
например:
что позволит положить лужу бладу или анхолику под себя
(советую вынести лужу без макроса отдельно на панель),
так же данная конструкция прекрасно подойдет дх танку с печатями, или рестор друиду, любому монаху с кругом мира.
вот еще дх дд может использовать эту же конструкцию но уже для бурста одновременно с прожимным тринкетом:
то есть дх с одной кнопки прыгнет на месте в метаморфозу и заюзает трикет,
что позволит сэкономить время без выбора позиции прыжка и отдельного прожатия тринкета.
разберем еще одну модификацию макроса:
Пленение или клетка в случае дх, в случае другого класса может быть любая другая способность для контроля, например асфиксия, паралич, удар грамовержца и тому подобные.
что делает макрос?
[@focus,exists] дает понять макросу что заклинание нужно приметь к цели которая находится в запоминании то есть в фокусе
(делается это если нажать на цель правой кнопкой затем выбрать запомнить цель, в случае пвп при помощи аддона гладиус
можно использовать двойной ПКМ по фрейму противника)
конструция [@target] в случае отсутсвия фокуса будет применять заклинание в вашу текущую цель если это возможно.
Валерия Покора запись закреплена
объясните как настроить кнопку сбор добычи, вообще не понимаю :/
В игре есть функция взаимодействие с целью . Если открыть назначения клавиш , то можно увидеть данную функцию ( но она стала доступна только с выходом 3.3.5 патча ).
Выделяем цель , которую хотим обыскать и нажимаем взаимодействия с целью. Если вы пользователь программы isboxer . то создаем отдельную клавишу на данную функцию + команда /assist + можно создать 2 -й шаг и добавить макрос LootSlot(slot) или просто включить автоматический сбор добычи.
Эта настройка находится в "Настройки -> Клавиши -> Цель".
Если используете Levelbuddy, то вам нужно настроить только ее и далее играть как обычно, собирая лут щелчком левой а затем правой клавиши мыши.
Василий, я думаю тут идет речь сбор добычи всеми сразу , а не цепочкой .
Василий, какой еще Level Buddy ? Если ты пользователь любой программы для мультибоксинга , то как минимум нужно выполнить 3 действия : 1. В игре назначить клавишу взаимодействия с целью 2. Добавить данную клавишу в программу + макрос /assist 3. Осуществлять сбор добычи путем автолута или написать макрос LoootSlot и опять же добавить кнопку или если вы пользователь программы isboxer дописать данный макрос к взаимодействию с целью.
Читайте также: