Боты для WoW

Представляем вам подборку боевых ботов для Word of Warcraft, на данный момент представляющих собой программу для соответствующих классов персонажей и их специализаций, список будет постоянно пополняться. Суть программы заключается в следующем: отслеживание готовности ваших заклинаний и ударов и использование их в автоматическом режиме путем нажатия соответствующей кнопки.

Боты для WoW | Views: 4256 | Добавлено: ASTrom | Дата: 19.03.2015 | Комментарии (1)

Не с кем пойти на арену? Никто не относится к тебе на поле боя? При прокачке вам не хватает качественного лекаря, чтобы никогда не умирать? Тогда бот под названием ZibbsFollowBot создан исключительно для вас. Зайдите главным героем и поставьте бота на священника.

Теперь священник будет лечить вас, баффить, оживлять и так далее.

Боты для WoW | Views: 8625 | Добавлено: Desmoond | Дата: 06.03.2010 | Комментарии (1)

Один из лучших ботов для рыбалки. К сожалению, она давно не обновлялась (и нет официального сайта), но если вы играете на бесплатном сервере с версией 2.4.3, Функциональность бота CyberFishBot возможна. Думаю, по названию можно понять, что CyberFishBot — это программа для автоматической ловли рыбы (прокачка профессии рыбака).

Как создать бота для любой игры?

Боты для WoW | Просмотр: 10199 | Добавлено: Desmoond | Дата: 02.03.2010 | Комментарии (1)

Конечно, в игре должны быть враги. Это может быть лидер рейда, который внезапно включил распределение рейдового лута по «мастер-луту», плохой прохожий, который грубит за то, что у него странный прикид, и так далее. Из всего этого есть выход! Будьте вежливы с врагом, станьте его другом и предложите ему скачать бота GhostMouse 2.0, который запоминает движения мыши.

Боты для WoW | Views: 11629 | Добавлено: Desmoond | Дата: 30.01.2010 | Комментарии (3)

Боты для WoW

Конечно, скачав бота Pirox, многие не могли разобраться в странном интерфейсе, настройках и конфигурациях программы. Я откопал бота, которого не нужно настраивать. Его зовут MrFishIt_4.2.2.

Боты для WoW | Views: 34649 | Добавлено: Desmoond | Дата: 30.01.2010 | Комментарии (2)

Боты для WoW

MMO Glider — один из лучших ботов в World of Warcraft. С помощью этой программы ваш персонаж будет делать все, что вы захотите, но без вашего участия. Бот позволяет убивать мобов, произносить заклинания, собирать лут, передвигаться и даже разговаривать! Благодаря тому, что при использовании бота все выглядит вполне естественно, программа получила массу положительных отзывов от игроков.

Боты для WoW |Просмотров: 22506 |Добавил: Desmoond | Дата: 12.12.2009 | Комментарии (6)

WoW iNTeX BoT — бот для World of Warcraft, который очень полезен для ранжирования. Итак, у нас много времени (например, ночью), но мы не хотим качаться. Есть решение! А это решение, как вы уже догадались — WoW iNTeX BoT! Вы задаете количество ярдов, в пределах которых ваш персонаж должен убивать мобов и. все!

Как создать игру в айкапе через бота

Источник: all-infowow.ru

Как создать бота варкрафт

. Какой-то нехороший человек поклялся на канале клана! Его забанили, он вышел. Я создал другой аккаунт и меня опять забанили, пришлось заново забанить :duel: .
. В наш клан постоянно приходят 10 человек с иконками peon :alc: .
. На нашем канале постоянно ругаются.
. нам становится немного «скучно». :end:
. Друга нет в Battle Net, и у него нет ICQ, как передать ему сообщение придется подождать.
Из всех этих и не только этих проблем нам может доставить хорошо настроенный бот. Он может не только кикать/бафать кого захочет, но и доставлять удовольствие пользователям. Например, можно заставить бота писать интересные цитаты, заранее записанные в файл, делать викторины, смеяться со всеми, приветствовать всех, если на канале много людей и т.д.

В общем, взялся я за эту «полезную» тему по двум причинам:
1) В нашем клане есть один не очень хороший человек, который не знает команд бота, который банит всех направо и налево.
2)На самом деле такой статьи еще не было, и она может быть кому-то полезна.

Здесь я хотел бы рассказать вам о StealthBot версии 2.6.3 и о его особенностях.
Но должен сразу сказать, что я не все знаю об этом боте и расскажу все, что знаю и помню на данный момент.

Первый вопрос-ответ: Где скачать? -Скачать бота можно на сайте http://www.stealthbot.net/forum/getsb.php.
Второй вопрос и ответ: -Могу ли я и бот сидеть на одном ключе? -Нельзя.

Далее переходим в настройки бота: Перейдите в Настройки>Настройки бота (Ctrl + P).
Те, кто знает английский язык, легко настраивают бота, нажав кнопку Пошаговая настройка, которая находится в нижней части меню. Для остальных

Пойдем по порядку. Первая группа — Connection Settings, в ней
Конфигурация.
Здесь нам нужно указать основные настройки подключения:
Username- пишем имя существующего аккаунта Battle.neta.
Пароль-пишите пароль от своего аккаунта Битва.net.
CDKey- запись CD-ключа из игры (за сохранность CD-ключа не беспокойтесь, эта программа его никуда и никому не отправляет).*
Поле Expansion CDKey-Non-essential если вы используете только оригинальную игру, а не дополнение. Но если вы используете аддон (Brood War, Lord of Destruction, The Frozen Throne), то вам придется написать здесь дополнительный ключ. Необязательно использовать The Frozen Throne для Warcraft.*
Бот для домашнего канала. При успешном подключении к баттлу — смотрим следующее.netom, а также при включении одной функции (ср. далее) бот находится здесь.
Сервер, указываем нужный нам сервер (europe.битва.чистая азия.битва.net uswest.битва.net useast.battle.net). При необходимости напишите свой собственный.

* примечание: если вы играете на пиратских серверах, то можете писать любой набор букв из 26 символов.

Вот мы разобрались, идем дальше, об этом ниже:
Расширенные
Здесь мы указываем дополнительные параметры для подключения бота. Если вы собираетесь играть на официальных серверах, то на момент написания этой статьи Warcraft версии 1.20s, а бот в это время «устарел», и метод соединения с battl.Бот изменился. Поэтому в пункте Метод подключения указываем ADVANCED — Локальное хэширование. После этого зайдите в директорию bot и создайте папку WAR3 . В него кидаем следующие файлы: Игра.dll; Storm.dll; War3.exe. Желательно, чтобы эти файлы были целыми.

После этих настроек вы можете нажать подключиться.*
*Если после этих настроек вы все еще не можете подключиться к серверу, зайдите в файл config,ini, который находится в папке бота. Сразу после [Main] нажмите ENTER и пишите:
WAR3VerByte=14
W3XPVerByte=14

Далее по очереди Общие настройки:
Show join/leave notifications — показывать или не показывать в окне бота входящих/исходящих пользователей.
Использовать фильтрацию чата — на самом деле, функция не делает ничего особенного — уменьшает использование памяти.
Показывать заставку при запуске — показывать или нет красивую картинку StealthBot при запуске.
Мигать окном при событиях — нужно ли мигать окном бота при событиях (см. далее).
Отключить автодополнение имени — насколько я помню, эта функция отключает запись имени отправителя письма (.почта ; !inbox).
Использовать кодировку/декодировку UTF-8 при обработке и отправке сообщений — позволяет боту декодировать «русские буквы.
Не сворачиваться в трей — при выключении бот будет сворачиваться в трей — панель рядом с часами, при нажатии на «минус.
Настройки метки времени — стиль отображения даты и времени.
Отключить раскрашивание имен в списке каналов — подсвечивает активность пользователей, находящихся на канале, разными цветами.
Запись текста на канале — 1)Бот ведет запись всех событий и разговоров и сохраняет их, когда вы выходите из программы. 2)Бот записывает все события и разговоры и удаляет их при выходе из программы. 3) Бот вообще не ведет никаких записей.
Maximum logfile size [0] — максимальный размер записей, оставленных ботом, в мегабайтах. Максимальный доступный размер файла 294кб, когда бот был онлайн с 23х до 22х.

Читайте также:  Дота warcraft что за игра

Следующими на очереди идут Шрифты и Цвета, но я не думаю, что имеет смысл останавливаться на этом. Здесь вы можете задать косметические настройки бота, такие как изменение шрифта и его размера, цвета сообщений.

Настройки модерации — опции для оператора канала.
Enable Phrasebanning — бот банит всех, кто не находится в списке безопасности и находится в списке фраз.
Включить IPBanning — банить пользователей по их IP адресу, так что если кто-то был забанен ботом и снова зашел под другим ником, бот забанит его снова.
Enable ClientBans- включает включенные опции далее.
Enable Quiet-Time-включает очень веселый режим, который банит всех, кто нарушает тишину и кого нет в списке безопасности.
Включить Kick-On-Yell — запретить тем, кто пишет более пяти БОЛЬШИХ букв.
Enable PlugBans — тут я не знаю к сожалению. (Запретить пользователей, с UDP заглушкой)
Включить защиту канала — защита канала, банит всех, кто не в списке безопасности.
Ниже вы можете ввести сообщение, которое будет выводиться при любом бане.
Запретить бездействующих пользователей — запретить тех, кто молчит более X секунд. Они могут быть указаны ниже.
Кик вместо бана — вместо прежнего бана бот только кикает.
Ban Warcraft III Peons — запрещает игроков с иконкой раба.
Клиентские запреты: опция Включить клиентские запреты должна быть включена. Ниже просто выберите игры, в которые вы хотите играть.
Есть также LevelBans
Diablo II | Warcraft III
Запрещает всех, кто ниже такого-то уровня. Установите 0, чтобы отключить эту функцию.
Levelban message — сообщение, которое будет показано, если ваш уровень низкий, например, «У вас низкий уровень».»

СКРИНШОТ #4
Настройки приветственных сообщений.
Здесь мы можем сделать приветственное сообщение. Для этого включите опцию Приветствовать пользователей, присоединившихся к каналу. Далее идет возможность прошептать приветственное сообщение — отправить его как личное сообщение, чтобы его видел только тот, кто вошел.
Также — ниже приведены некоторые простые функции, которые вы можете написать в приветственном сообщении.
%c-channel; %0-name-user; %1-name-bot; %p-ping-user; %v-версия бота; %a-номер доступа пользователя; %f-tag-user access; %t-time(hh:mm); %d-date(dd).mm.yyyy).
Например:
«Привет, %0. Вас приветствует %c. Меня зовут %1. У вас есть флаги %a и %f. Ваш пинг при входе в систему составляет %pms при %t %d. «.
То есть, если игрок ABC с доступом 10 и флагом VOJD зайдет на канал LUCKERS, то бот GDA скажет:
«Привет, ABC. Добро пожаловать на LUCKERS. Меня зовут GDA. У вас есть флаги 10 и VOJD.Ваш пинг при входе в систему составляет 32 мс в 00:01 01.01.2001»

Настройки сообщений в режиме ожидания
Здесь вы можете написать, что бот будет говорить каждые X секунд, которые вы можете указать в пункте Задержка между сообщениями (минуты). Фактически здесь все то же самое, что и в предыдущем меню, но выбор команд немного «усечен»:
%c-канал, на котором находится бот; %me-ник бота; %v-версия бота; %botup-время подключения бота; %cpuup-длина компьютера. %mp3- то, что у вас играет в Winamp; %quote- случайная цитата. Вы можете записать их в список цитат. %rnd- случайный пользователь на канале.
Нет скриншота.

Разные общие настройки
В этом меню полно «ненужных» опций варкрафта.(На мой взгляд, это меню предназначено для удобства создателя).
Используем ProfileApm- каждые 30 секунд выводит сообщение, которое проигрывается в Winamp.
Ответы команд шепотом — включает опцию Вперед шепотом — отправка сообщений пользователю, о чем далее.
Проверить почту пользователя — проверяет, есть ли почта у пользователя, который заходит на канал.
Ignore Tic-Tac-Toe games- игнорировать мини-игры Tic-Tac-Toe (отсутствуют в Warcraft).
Отключить монитор пользователей — не знаю что за функция, по умолчанию стоит галочка.
Не использовать внутренний список друзей 0x65 — запрет на использование альтернативного списка друзей.
Включить обнаружение URL-адресов — позволяет «находить» URL-адреса. То есть, вы можете «кликнуть» на них прямо в окне беседы.
Show offline friends- показывать оффлайн друзей (я не понял что это делает, возможно не для Warcraft).
Allow MP3 commands- разрешить использование команд mp3. Лучше удалить эту функцию.
Подключиться при запуске — первая полезная опция для подключения к баттлу.бот в начале программы.
Минимизировать при запуске — вторая полезная опция — сворачивание в системный трей при запуске программы.
Пересылать шепотом — если включена опция «Ответы на команды шепотом», то сообщения будут отправляться пользователю, которого вы укажете ниже.
Присоединиться к резервному каналу при кике — третья полезная опция: когда бота кикают или банят, он переходит на канал, указанный ниже.

С настройками бота мы закончили и вроде бы все знаем. Теперь, скажу я вам, нам нужно узнать стандартные команды бота и как их различать.
У бота есть сотня (примерно, не считал) встроенных команд, например .pingme и другие. По умолчанию все они имеют определенное число, называемое access, что означает доступ. Команда pingme имеет доступ 40, что означает, что использовать ее могут только пользователи с доступом больше или равным 40. Но если вы хотите, чтобы эта функция была доступна не только тем, у кого есть 40access, но и всем остальным, заходим в файл доступа.ini, который лежит в папке с ботом, или идем дальше Settings>Edit Fles>Access/Flags.
Ищем «Numeric]» и после этого на новой строке пишем нужную нам команду, например «pingme=», а затем пишем нужное нам количество доступа, например 0. подключитесь и попросите первого встречного написать .pingme. Voila! Бот пингует его!
Список всех основных команд можно найти в справке или в файле readme.chm.

Теперь займемся небольшим программированием бота. Давайте сделаем, например, человека, который написал .Появится сообщение: «Вы, пользователь, просто новичок в BNet.». Для этого зайдем в редактор пользовательских команд, который находится в подменю Bot. Нажмите ADD. У нас есть новая команда — new, переименуем ее в whoami (без точки).

И в правой части нам нужно ввести действия, хотя это трудно назвать действиями, это больше похоже на то, что ответить.
Здесь у нас есть только пара переменных %0- это будет ник пользователя, который сказал .whoami, а остальные %1, %2, %3, %N — все эти переменные представляют собой слова, разделенные пробелами. То есть, если пользователь сказал .whoami azbuka chto takoe?, тогда переменные %1,%2,%3-будут azbuka;chto;takoe? соответственно.
Давайте продолжим с того места, на котором мы остановились, на том, что отвечать пользователю. Просто напишите «You, %0 , Just a little noob of BNet.»и все. Теперь мы просим кого-нибудь написать .Приготовьте воду, чтобы избавиться от икоты, вызванной смехом над тем, что вы видите!

Читайте также:  Как стРимить варкрафт 3 в дискорде

Вот мы и познакомились с основными возможностями бота, хотя, поверьте, возможности его практически безграничны! В ближайшее время будет вторая статья, ради которой я собственно и начал писать эту статью-скриптинг бота. Программировать бота будем с помощью стандартных Microsoft VBscrit’ов (Visual Basic Scripts), на которых, собственно, и построен этот самый бот.

Источник:

Если игроку дается шанс выпадения предмета только раз в день (иногда в неделю), то вам понадобится год времени, чтобы совершить побег за ним. Все ради того момента, когда вы получите этот вожделенный предмет. Чем больше времени и усилий вы потратите на «добычу» предмета, тем приятнее вам будет в итоге его получить. По моему опыту, радость очень мимолетна.

Зависимость шанса выпадения от количества попыток

Небольшое отступление. Какова вероятность того, что в шести бросках игральной кости выпадет «6»? Очевидно, что . То есть, наше событие противоположно тому, чтобы не выпало «6» во всех шести попытках.

Используя второй великий предел, нетрудно показать, что .

А шанс получить лошадь с 1% вероятностью «выпадения» за 100 попыток составляет около 63%.

Некоторые игроки, сделав триста попыток, думают, что им вот-вот повезет — ведь вероятность облома за такое большое количество попыток мала. Они будут разочарованы, потому что в следующих 100 попытках им снова повезет на 63%. А старые наработки ничего не дают.

Существует подземелье. Нам нужно запустить его с некоторыми поворотами, попутно выполнив пару простых заданий Убейте финального босса и заберите лут. Чтобы не бежать к выходу пешком, телепортируйтесь в ближайшую деревню и летите ко входу. Повторить 5 раз.

Карта подземелий и маршрут:

Задача максимум. Запустил и бросил на полчаса. Процесс полностью автоматический.

Задача минимум. Запустите его и сидите, читайте или играйте на гитаре, глядя в монитор. При необходимости иногда помочь персонажу выйти из непредвиденной ситуации.

Важно иметь возможность при желании описать маршрут другого подземелья, не залезая в код.

Движение и позиционирование

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

  1. Вам нужно воспроизвести начальное положение персонажа и направление его взгляда. Если перед автоматическим запуском немного повернуть в противоположную сторону, то вы будете бежать криво и рано или поздно врежетесь в стену
  2. Если вы написали точные координаты и угол, а затем поместили туда же персонажа, то вы не сможете. Он реагирует на кнопки, как бульдозер, и поворачивает точно так же. И даже ошибка в 1 градус в 100 метрах переведется в метры (ширина дверного проема)
  3. Время нажатия и отпускания кнопок также далеко от идеала. Это как передвигаться по квартире с закрытыми глазами. Кажется, что шесть шагов вперед и строго направо, но вместо туалета мы оказываемся в ванной комнате. Попробуйте также открыть дверь с закрытыми глазами, не касаясь ручки

По этим причинам нам необходимо позиционировать себя в мире с помощью координат. При этом необходимо регулярно, каждые 100 миллисекунд, проверять свое положение и вносить коррективы.

переместить 40.644 20.417 1.537
перемещение 40.526 20.411 1.537
ход 40.246 20.408 1.592
перемещение 39.974 20.414 1.592
перемещение 39.691 20.411 1.537
ход 39.417 20.388 1.510

Вот выдержка из списка команд робота для перемещения. Указанные координаты x, y и угол поворота в пространстве в радианах.

Клавиши и команды

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

питч -0.89
правая кнопка мыши 942 498
пауза 10000
перемещение 39.417 20.388 1.510
ключ `
пауза 1000
ключ
перемещение 39.142 20.364 1.510
ключ
клавиша 3
клавиша 3
мышь вправо 963 622
перемещение 38.864 20.340 1.510
ход 38.653 20.321 1.510

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

Его пришлось добавить, как только персонаж захотел летать.

Итак, у нас есть части программно-аппаратный комплекс bot:

  1. Мы напишем Аддон для интерфейса WoW, который будет определять положение персонажа, азимут, наклон. Аддоны не запрещены правилами игры, указанная информация доступна через игровой API внутри аддона. Все это будет нарисовано на экране. Сам аддон написан на Lua, потому что именно так решили разработчики игры.
  2. В аддоне вы можете определить что-то, можете рисовать, но не можете заставить персонажа двигаться. Еще в аддоне нельзя писать в файл, спрашивать у игры, где стены, где враги, и многое другое нельзя. Поэтому мы должны написать приложение для внешнего управления. Я не старался быть оригинальным, поэтому использовал AutoIt. Это действительно быстро и удобно, хотя и немного странно для меня, привыкшего программировать на строго типизированных языках.
  • Приложение должно иметь возможность написать мои действия. Назовем эту функцию Recorder
  • Приложение должно быть способно воспроизведение запись. Давайте вызовем Игрока

Аддон для WoW на языке Lua

Аддон для WoW — скрипт на языке Lua. Язык полный, гибкий, эффективный. Вы ничего не можете сделать с системой. Вы можете делать с игрой все, что угодно, но только в рамках API, который предоставляет вам игра. Так как Blizzard не хочет, а точнее запрещает игрокам и предпринимателям писать ботов, поэтому API не предлагает практически ничего полезного, кроме вышеупомянутых координат.

Конечно, для наших нужд полезно. Хорошее руководство по написанию аддонов с описанием Lua можно найти здесь. И я опишу свою версию.

Манифест и графический интерфейс

Детали и источник. В папке World of WarcraftInterfaceAddOns Создать папку HelloWorld. В нем вы помещаете HelloWorld.toc с содержимым

Читайте также:  Сталкер моды для варкрафт 3

## Интерфейс: 50001
## Заголовок: Hello, World!
## Заметки: Мой первый AddOn
HelloWorld.lua

Если бы я хотел нарисовать несколько маленьких форм и кнопок (для чего обычно и предназначены аддоны), в последней строке я бы добавил HelloWorld.xml с описанием этих кнопок. В разработке и написании таких GUI аддонов очень помогает AddOn Studio. Мощный инструмент, основанный на MS Visual Studio.

Но так как я минималист, в этот раз мы не будем рисовать. Это также даст мне возможность показать, что вы можете создавать формы динамически из самого скрипта без использования дизайнера. Давайте посмотрим на HelloWorld.lua. Я отредактировал его в блокноте++. Чтобы игра зацепила изменения в HelloWorld.toc, Необходимо перезапустить его полностью.

А вот изменения в HelloWorld.lua которые вы можете получить, написав в консоли команду /reload. Так процесс программирования и отладки будет не таким мучительным.

Команды со слешем

К слову об отладке. Рекомендую сразу же добавить обработчик слэш-команд:

SLASH_HELLO_WORLD1 = ‘/helloworld’;
function SlashCmdList.HELLO_WORLD(msg, editbox)
local facing = GetPlayerFacing();
local pitch = GetUnitPitch(«player»);
local x, y = GetPlayerMapPosition(«player»);
print(format(«HelloWorld %.2f %.2f %.2f %.2f», x*100, y*100, facing, pitch));
end

Для этого определим переменную следующего вида SLASH_IMJap. Где ИМЯ является уникальным для всех аддонов, и n либо пусто, либо порядковый номер с 1. И добавим функцию под названием ИМЯ в некоторый объект. Для программиста на C++ может показаться странным, что мы нигде явно не регистрируем эту функцию-обработчик. И мы связываем его со строковой переменной чисто по имени переменной. Но в этом и заключается сила и магия Lua.

Теперь команда в консоли WoW /helloworld сделает то, что вам нужно: отобразит отладочную информацию и, для простейших аддонов, сделает все то, для чего вы ее написали.

И здесь я показал вам WoW API, который получает необходимую информацию.

Обработчик события

Система GUI в аддоне похожа на то, как Windows работает со своими сообщениями и их обработкой.

local EventFrame = CreateFrame(«Frame»)
function EventFrame:OnEvent(event, . )
print(«HelloWorld:», event)
self[event](self, . )
конец
EventFrame:SetScript(«OnEvent», EventFrame.OnEvent)

EventFrame:RegisterEvent(«PLAYER_LOGIN»)
Function EventFrame:PLAYER_LOGIN()
— Инициализация здесь
конец
function EventFrame:OnUpdate()
— Полезные вещи, которые можно сделать здесь
конец
EventFrame:SetScript(«OnUpdate», EventFrame.OnUpdate)

Мы создаем кадр типа «Фрейм» и подключайтесь к акции «OnEvent» и «OnUpdate» команды

EventFrame:SetScript(«OnEvent», EventFrame.OnEvent)
EventFrame:SetScript(«OnUpdate», EventFrame.OnUpdate)

Порученец OnUpdate будет вызываться после каждого фрейма, что нам и нужно для обновления координат. А OnEvent будут вызываться при других желаемых событиях. Из него мы будем извлекать соответствующие функции:

Что еще более удобно в Lua, так это то, что вы можете использовать эту конструкцию для вызова уникальных обработчиков типа

Здесь PLAYER_LOGIN — это событие, которое отправляется всем фреймам, когда вы входите в мир и перезапускаете пользовательский интерфейс. Другие события: PLAYER_LEAVE_COMBAT, QUEST_FINISHED, PLAYER_EQUIPMENT_CHANGED, PLAYER_DEAD, — и многое другое. Полный список доступен здесь. Зарегистрируем событие, которое мы хотим обрабатывать с помощью команды

Передача информации

Поскольку в аддоне мы не можем ничего делать с системой, информация из WoW будет передаваться в другую часть бота путем изменения цвета пикселей. Как сделал rednaxi в своем посте. Но только мы не будем передавать один бит информации, а сериализуем его и передадим больше.

Поскольку нам также нужны фреймы для рисования, мы создадим их

local HelloWorld1 = CreateFrame(«Frame», nil, UIParent)
local HelloWorld2 = CreateFrame(«Frame», nil, UIParent)
function EventFrame:PLAYER_LOGIN()
HelloWorld1:SetFrameStrata(«BACKGROUND»)
HelloWorld1:SetWidth(10)
HelloWorld1:SetHeight(10)
HelloWorld1.texture = HelloWorld1:CreateTexture(nil, «BACKGROUND»)
HelloWorld1.texture:SetAllPoints(HelloWorld1)
HelloWorld1:SetPoint(«TOPLEFT»,0,0)
HelloWorld1:Show()

HelloWorld2:SetFrameStrata(«BACKGROUND»)
HelloWorld2:SetWidth(10)
HelloWorld2:SetHeight(10)
HelloWorld2.texture = HelloWorld2:CreateTexture(nil, «BACKGROUND»)
HelloWorld2.texture:SetAllPoints(HelloWorld2)
HelloWorld2:SetPoint(«TOPLEFT»,10,0)
HelloWorld2:Show()
конец

Думаю, здесь все понятно без комментариев. Найдите подробности для каждого метода самостоятельно.

Сериализация

У нас есть две координаты и два угла. Все числа с плавающей запятой. Компоненты цвета пикселя в аддоне также являются числами с плавающей запятой, но от 0.0 перед 1.0. Кроме того, мы знаем, что компонент цвета будет сохранен в одном байте. Сначала я сохранил каждую координату в одном цветовом компоненте.

В результате точность позиционирования по месту составила 1/255 от размера карты. Это работало следующим образом GPS: вроде бы координаты есть, но водить машину на автомате (управление компьютером без человека) по дороге по навигатору не получится. Таким образом, мы должны были передать два байта. Как сохранить одно дробное число в двух байтах? Я сделал следующее

local x1, x2 = math.modf(x*255)

Функция modf возвращает целую часть и дробную часть, разделенные запятой. Здесь мы используем параллельное присваивание — еще один полезный прием Lua.

При таком подходе я использую всю мощность каждого из двух байтов, в которых хранится координата. А азимут и наклон не так придирчивы к точности, пока они укладываются в интервал 0.0-1.0. Теперь у нас получилось вот так:

local math = getfenv(0).math
function EventFrame:OnUpdate()
local facing = GetPlayerFacing();
local pitch = GetUnitPitch(«player»);
local x, y = GetPlayerMapPosition(«player»);
local x1, x2 = math.modf(x*255)
local y1, y2 = math.modf(y*255)
HelloWorld1.texture:SetTexture(x1/255, x2, facing/7)
HelloWorld2.texture:SetTexture(y1/255, y2, pitch/4+0.5)
end

Теперь при перемещении по миру в левом верхнем углу два квадрата 10 на 10 будут случайным образом менять свой цвет.

Полный текст HelloWorld.lualocal math = getfenv(0).math

local EventFrame = CreateFrame(«Frame»)
local HelloWorld1 = CreateFrame(«Frame», nil, UIParent)
local HelloWorld2 = CreateFrame(«Frame», nil, UIParent)

function EventFrame:OnEvent(event, . )
print(«HelloWorld:», event)
self[event](self, . )
end
EventFrame:SetScript(«OnEvent», EventFrame.OnEvent)

EventFrame:RegisterEvent(«PLAYER_LOGIN»)
Функция EventFrame:PLAYER_LOGIN()
HelloWorld1:SetFrameStrata(«BACKGROUND»)
HelloWorld1:SetWidth(10)
HelloWorld1:SetHeight(10)
HelloWorld1.texture = HelloWorld1:CreateTexture(nil, «BACKGROUND»)
HelloWorld1.texture:SetAllPoints(HelloWorld1)
HelloWorld1:SetPoint(«TOPLEFT»,0,0)
HelloWorld1:Show()

HelloWorld2:SetFrameStrata(«BACKGROUND»)
HelloWorld2:SetWidth(10)
HelloWorld2:SetHeight(10)
HelloWorld2.texture = HelloWorld2:CreateTexture(nil, «BACKGROUND»)
HelloWorld2.texture:SetAllPoints(HelloWorld2)
HelloWorld2:SetPoint(«TOPLEFT»,10,0)
HelloWorld2:Show()
end
function EventFrame:OnUpdate()
local facing = GetPlayerFacing();
local pitch = GetUnitPitch(«player»);
local x, y = GetPlayerMapPosition(«player»;)
local x1, x2 = math.modf(x*255)
local y1, y2 = math.modf(y*255)
HelloWorld1.texture:SetTexture(x1/255, x2, facing/7)
HelloWorld2.texture:SetTexture(y1/255, y2, pitch/4+0.5)
конец
EventFrame:SetScript(«OnUpdate», EventFrame.OnUpdate)

Функция SlashCmdList.HELLO_WORLD(msg, editbox)
local facing = GetPlayerFacing();
local pitch = GetUnitPitch(«player»);
local x, y = GetPlayerMapPosition(«player»);
print(format(«HelloWorld %.2f %.2f %.2f %.2f», x*100, y*100, facing, pitch));
end

Завершение первой части

Давайте повторим то, о чем мы говорили

  1. Мы рассчитали вероятность получения предмета за большое количество попыток
  2. Мы определили проблему, разработали подход к решению и разбили его на модули
  3. Вот код самого простого аддона для WoW на языке Lua
  • научились передавать координаты с помощью цвета
  • научился рисовать, события процесса
  • научились работать со слэш-командами

И если вы разрабатываете что-то и хотите позволить себе или пользователям участвовать в этом, гибко настраивайте свое программное обеспечение, используя API (e.g., написать искусственный интеллект для врагов, позволить брокерам размещать позиции на основе котировок, позволить администраторам делать свои дела на основе инвентаря пользователей и т.д.).п.), вы знаете, что Lua очень гибок и очень прост в построении. Подумайте о такой возможности.

Что ж, в следующей части мы поговорим о том

  1. написание регистратора ключей и координат в AutoIt
  2. Написание инструкции игрока для бота
  3. 2D математика, как ориентироваться в декартовой системе координат без теоремы косинусов
  4. управление роботами, когда не хватает датчиков
  5. Как противостоять ботам

Источник: dml.compkaluga.ru