Варкрафт как создать своего бота
Серверы: rubattle, iccup, eurobattle
Логин: ruuuy-pub
Канал: NB Серверы: rubattle, iccup, eurobattle
Логин: ruuuy-duet
Канал: NB Сервера: rubattle, iccup, eurobattle
Логин: ruuuy-ahost (только для автохоста)
Канал: NB
Где я могу посмотреть список карт?
Список карт здесь http://nightbot.ru/maplist.php
Существуют некоторые ограничения для хоста?
Да:
— один игрок может одновременно добавлять только одну игру
— если игра не началась в течение 15 минут с момента создания, будет автоматически отменена.
— если игра уже находится в очереди или находится на хостинге, но не началась, вы не можете добавить игру в очередь снова.
— Если овернер не заходит в игру в течение 3 минут после создания игры, включается автохост.
— Один игрок может принимать гостей максимум 7 раз в день (контролируется автоматически)
Где найти установленные правила поведения?
0. Решения администрации бота не оспариваются.
Как сделать бота в телеграмме | Telegram Bot
1. Запрещено торопиться в другие игры, а также просто сидеть в лобби для создания иллюзии присутствия людей.
2. Запрещено просить исследователя сделать unhost, если он сам не хочет этого делать.
3. Оскорбление других игроков запрещено (не относится к самой игре).
4. Запрещено обычным игрокам, в том числе vip игрокам, угрожать баном или просто запугивать админов. В крайнем случае, вы можете сообщить игроку, нарушившему правила, что на него подана жалоба в группе.
5. Запрещено выкидывать бота с канала.
6. Випам запрещено создавать игры по просьбе других, если они не собираются играть.
7. Запрещено выдавать себя за администрацию бота.
Администрация определяет наказание за нарушение правил.
Правила могут быть изменены без уведомления игроков.
Кто-то уже создал игру до меня, теперь подождите, пока бот освободится?
В боте реализована система очереди, если бот уже создал чужую игру, на момент когда вы ему написали .хозяин, ваша игра будет поставлена в очередь.
Когда ваша игра будет создана, бот пришлет вам уведомление о создании.
Где можно посмотреть информацию о текущих играх в боте?
Для этого в меню есть пункт Информация о текущих играх
Как написать боту в ls? Как войти в канал бота?
на любом канале или в игре /w ruuuy-pub или /w ruuuy-duet Переключиться на канал /j NB
Я нашел баг в карте, куда писать?
Где угодно, только не здесь.
Требуется регистрация и подтверждение своего ника на сайте?
Нет, это необходимо для доступа к некоторым функциям сайта.
Если вы интересуетесь своей или чужой статистикой, хотите скачать одного из ботов или принять участие в конкурсе и т.д.e — войти. Если вы хотите узнать за что предупреждение или бан, узнать сколько дней осталось vip и другие личные данные, то вам нужно подтвердить никнейм.
Добавление/обновление карт
Как добавить или обновить карту на боте?
Как создать своего бота в telegram?
- Чтобы иметь возможность оставить заявку на добавление/обновление карты, необходимо войти в систему.
- В меню вашего профиля (правый верхний угол) выберите «Добавить карту».
При необходимости переключите вкладку в появившемся окне. - Используйте кнопку «Помощь», чтобы прочитать больше о разрешенных ссылках на скачивание карт.
- «Submit» и все, дождитесь пока заявка будет обработана, вы увидите уведомление в правой части сайта, это оно кликабельное, поэтому обязательно нажмите, после просмотра уведомление исчезнет.
Один человек может оставить до 3 заявок одновременно.
Как просмотреть ваши запросы?
- Чтобы просмотреть свои заявки, вы должны войти в систему.
- В меню профиля (правый верхний угол) выберите «Добавить карту» и перейдите на вкладку «Мои запросы»
- Чтобы уточнить значения числовых кодов, нажмите на сам код или на знак вопроса «?»в колонке «Статус»
Управление ботами
Как создать игру?
Для создания игры напишите боту в PM (/w ruuuy-pub или /w ruuuy-duet) команду .хост
Команда имеет следующий формат .номер хозяина
NUMBER — номер карты, узнать можно здесь http://nightbot.ru/maplist.php
NAME — название игры, которая будет создана, без указания карты название берется как в списке, только без версии.
Например: .host 1 ZiV создаст карту номер 1 с именем ZiV
Основные команды
Сообщение боту:
.host NUMBER — создать игру
.host del — удалить игру из очереди
.info — отобразить краткую информацию о «делах» бота, включая очередь
.vl — отобразить очередь
.checkwarn — проверить наличие предупреждения
В лобби
.whost — даст вам никнейм овера, если он есть в игре
.go — голосование за старт
.vk ник — голосовать за кик
.yes — согласиться на кик
.stats — отображать статистику игры на боте, и количество сыгранных часов
Команды в игре и/или лобби для владельца и выше
.перейти — проголосовать за начало
.gono — сбросить голос
.gol — блокировать голосование
.goul — разблокировать голосование
.запустить || .старт — начать
.unhost — отменить хостинг вашей игры
.swap — обменяться игроками
.открыть — открыть слот
.закрыть — слот закрыт
.латентность || .dr — установить задержку
.ник owner — передать право собственности другому игроку
.lock — заблокировать игру, только владелец может использовать
.Unlock — разблокировать игру
.as n — включить автозапуск для n игроков
.as — отключить автозапуск
.a — стоп-старт
.спидхак 0-3 или .shack 0-3 (1 очень быстро; 2 быстро; 3 медленно; 0 выключено) — speed hack ускоряет или замедляет игровой процесс
Платные услуги
В чем преимущества vip?
В настоящее время vip не продается, некоторые преимущества доступны всем, некоторые отсутствуют.
Вы можете разместить столько слотов, сколько захотите.
Возможность всегда хостить на Duet(ruuuy-duet)
Ваша игра будет длиться гарантированные 15 минут в лобби.
cnick (цветной ник).
Нет штрафа за мат.
Впустить меня в игру, даже если она полная (если не запущена).
Карта хоста более 8 мегабайт.
Автоудары не страшны.
Что дает каждое из дополнительных прав?
Расширенные права не работают без VIP-пакета. .hold(.NICK.NICK SLOT) — зарезервировать слот для друга. В качестве бонуса позволяет заходить в игру забаненным игрокам.
.mute/unmute — давать/снимать бан в чате
.End — включает 5-секундный таймер, после чего всех выкидывает из игры, тем самым завершая ее
.kick — кикнуть игрока kick NICK или kick SLOT
.цензор — отключает фильтр нецензурной лексики в игре
.rowner — позволяет захватить права владельца игры, если владелец вышел или не появился в игре
.hostvip — позволяет поместить вашу игру в VIP очередь, тем самым добавляя игру в начало очереди. Предупреждение! Имейте в виду, если до вас в VIP-очереди уже есть другая игра, ваша будет следующей. Если вы используете .игра хоста будет добавлена в конец обычной очереди, только команда .hostvip добавляет в VIP очередь.
.блист (.Blist NICK.Blist NICK ВРЕМЯ (в днях).blist Nick Lifetime (in days) Reason) — позволяет запретить любому игроку заходить в игру, где вы являетесь владельцем, это своего рода личный бан-лист. Количество людей в блисте не ограничено, максимальный срок добавления в список не более 30 дней. Все права кроме hold и rowner работают только в их играх. Обязательные правила:
1. Запрещено необоснованное киканье игроков.
2. Запрещено завершать игру только потому, что вы этого хотите, а другие игроки с вами не согласны.
3. Запрещено намеренно выводить игрока с целью дать ему лут, так же запрещено в дальнейшем препираться или оскорблять игрока получившего лут.
Возможные проблемы
Я пытаюсь создать игру, но у меня появляется какое-то ограничение.
Каждый игрок может создать 7 игр в день
Некоторые карты можно хостить ограниченное количество раз в день, причем лимит не индивидуальный, а общий.
* Значения актуальны на момент написания статьи и могут отличаться от тех, которые установлены сейчас.
Моя игра по какой-то причине была отключена, не успев запуститься.
Если в течение 3* минут после создания игры в ней никого нет, игра будет отключена.
Через 15 * минут после создания игра будет выключена, но перед этим будет запущен старт с обратным отсчетом в 3 секунды. Если в очереди 3 или более игр, и игрок, создавший игру, не является vip или выше, игра будет отключена через 10 * минут, запуск до этого также будет выполнен.
* Значения актуальны на момент написания статьи и могут отличаться от установленных в настоящее время.
Моя игра была следующей в очереди, но бот не создал ее, она просто исчезла из очереди.
Я не могу использовать хост, бот пишет о некоторых предупреждениях.
Есть только два варианта: играть 6* часов на боте с момента получения варпа или ждать 20* дней до истечения срока действия самого варпа.
* Значения актуальны на момент написания статьи и могут отличаться от установленных сейчас.
На сайте 7 человек
Разрешено 3 людьми: moster , purrfect.#5489 , Phoenix/#7697
Рекорд посещаемости (157) записано 20.12.22 02:40
Источник: nightbot.ru
Варкрафт как создать своего бота
Полный спектр компьютерных услуг!
Загрузка. Пожалуйста, подождите.
Сообщение с сайта
(сообщение закроется через 2 секунды)
Внимание!
[Из песочницы] Создание простого бота для WoW, программирование маршрутов
Decker
Предварительный просмотр профиля
12.8.2013, 11:56
Группа: Главные администраторы
Сообщения: 14349
Регистрация: 12.10.2007
От: Сумеречная зона
Пользователь №: 1
Недавно я прочитал пост, в котором автор рассказывал о своем боте для аукционной торговли в игре World of Warcraft. Персонаж бегал на челноке на короткие расстояния и выполнял определенные действия, строго оговоренные в управляющей программе. Воспользовавшись его идеями, я решил пойти немного дальше: пусть персонаж сможет бегать по маршруту продолжительностью не менее пяти минут, должна быть возможность записывать маршрут и выполняемые действия со стороны, не меняя саму управляющую программу. То, что я описал, является развитием оригинального поста, тем не менее я постарался сделать так, чтобы читать его не было необходимости.
В этом посте я опишу
-
Процесс создания тривиального аддона для WoW UI на Lua
- Сериализация данных для передачи между частями системы
- Удар с цветом пикселя
- Программа для записи совершенных действий
- Программа для воспроизведения
- Мат.расчеты направления движения
- Почему запрещено чтение/запись памяти процесса
Предупреждение
Я прекрасно понимаю, что использование ботов запрещено лицензионным соглашением Blizzard. Это может привести к перманентному бану вашего аккаунта. Я был бы расстроен, если бы кто-то, используя материал из этого поста, наживался на экономике игры и вызвал неодобрение других игроков. И да, я знаю, что это нечестно, что я делаю.
Цель этого поста — рассказать о своем опыте и описать трудности, с которыми я столкнулся, чтобы узнать от вас, что можно было бы сделать лучше.
Предыстория
Сбор
Люди, далекие от игровой индустрии, могут без ущерба для себя пропустить этот раздел. В WoW есть такой аспект, как коллекционные предметы. Как и в нумизматике/филателии, чем больше у вас, например, ездовых животных, тем больше удовольствия вы получаете. Аналогично, важен и процесс их получения.
Некоторые драконы требуют выполнения десятка заданий («ачивок»), некоторые — вхождения в топ-2% игроков в мире по навыку управления персонажем (бои на арене), некоторых можно просто купить за внутриигровую валюту, некоторых — за реальные деньги в магазине. Подробнее об этом можно почитать в другом месте, здесь не об этом.
Теперь некоторые коллекционные предметы выпадают в подземелье с шансом около 0.5%. Если игрок имеет возможность кататься только раз в день (иногда в неделю), вам потребуется время, соизмеримое с годом, чтобы запустить. И все ради этого момента получения заветного предмета вожделения. Чем больше времени и усилий вы потратите на «добычу» предмета, тем приятнее вам будет в итоге его получить. По моему опыту, радость очень мимолетна.
Зависимость шанса выпадения от количества попыток
Небольшое отступление. Какова вероятность того, что в шести бросках игральной кости выпадет «6»?? Очевидно, . Итак, наше событие — это событие, противоположное тому, чтобы не получить «6» во всех шести попытках.
Используя второй замечательный предел, нетрудно показать, что .
А вероятность получить лошадь с шансом выпадения 1% за 100 попыток составляет около 63%.
Некоторые игроки, сделав триста попыток, думают, что им вот-вот повезет — вероятность неудачи при таком большом количестве попыток мала. Они будут разочарованы, потому что на следующих 100 метрах им снова повезет лишь на 63%. А старые труды ничего не дают.
Подземелье. Вам нужно пробежать по нему с некоторыми поворотами, выполнив по пути пару простых заданий. Убить финального босса и забрать лут. Чтобы не бежать к выходу пешком, телепортируйтесь в ближайшую деревню и летите ко входу. Повторите 5 раз.
Карта подземелья и маршрут:
Задача максимальная. Начал и бросил на полчаса. Процесс полностью автоматизирован.
Задача минимум. Запустить игру и сесть рядом с ней, читая или играя на гитаре, глядя на монитор. Время от времени помогайте персонажу выйти из непредвиденной ситуации, если это необходимо.
Важно уметь описать маршрут другого подземелья, не вникая в код.
Движение и позиционирование
Просто записывать нажатия клавиш, релизы, позиции и клики мыши не получится. Чтобы быть более точным, вы можете записать это, но когда вы будете играть, это будет не то, что вы ожидаете, по следующим причинам:
- Вам нужно воспроизвести исходное положение персонажа и направление его взгляда. Если перед автоматическим бегом немного повернуть в другую сторону, то вы будете бежать криво и рано или поздно врежетесь в стену
- Если вы записали точные координаты и угол, то вы не сможете поместить туда и своего персонажа. Реагирует на кнопки как бульдозер и поворачивает так же. И даже ошибка в 1 градус на 100 метров даст в результате метры (ширина дверного проема)
- Время нажатия и отпускания кнопок также далеко от идеала. Как будто ходишь по квартире с закрытыми глазами. Вроде бы шесть шагов вперед и строго направо, но вместо туалета мы оказываемся в ванной комнате. Попробуйте также открыть дверь с закрытыми глазами, не касаясь ручки
Вот причины, по которым нам необходимо позиционировать себя в мире с помощью координат. Вы должны проверять свое положение и вносить коррективы регулярно, каждые 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:
- Мы напишем Интерфейсный аддон WoW, которые определяют положение персонажа, азимут и наклон. Правилами игры аддоны не запрещены, указанная информация доступна через внутриигровой API внутри аддона. Это нарисует все на экране. Сам аддон написан на Lua, потому что так решили разработчики игры.
- В аддоне вы можете определять вещи, вы можете рисовать, но вы не можете заставить вашего персонажа двигаться. Также в аддоне нельзя записать в файл, спросить у игры, где стены, где враги, и многое другое нельзя. Поэтому нам нужно написать внешнее приложение управления. Я не стал делать ничего оригинального и использовал AutoIt. Это действительно быстро и удобно, хотя и немного странно для меня, привыкшего программировать на строго типизированных языках.
- Приложение должно уметь написать мои действия. Назовем эту функциональность Recorder
- Приложение должно иметь возможность воспроизведение запись. Назовем его Player
Аддон для WoW на языке Lua
Аддон для WoW представляет собой скрипт на языке Lua. Язык полный, гибкий, эффективный. Вы не можете ничего сделать с системой. Вы можете делать с игрой все, что угодно, но только в рамках API, который предоставляет вам игра.
Поскольку Blizzard не хочет, а точнее, запрещает игрокам и предпринимателям писать ботов, API не предоставляет практически ничего полезного, кроме вышеупомянутых координат. Конечно, для наших нужд полезно. Хорошее руководство по написанию аддонов с описанием Lua можно найти здесь. Что ж, опишу свой вариант.
Манифест и графический интерфейс
Детали и источник. В World of WarcraftInterfaceAddOns создадим папку HelloWorld. В нем вы помещаете HelloWorld.toc с содержимым
## Интерфейс: 50001
## Название: Hello, World!
## Примечания: Мой первый AddOn
HelloWorld.lua
Если бы я хотел нарисовать несколько маленьких фигур и кнопок (для чего и нужны аддоны), в последней строке я бы добавил HelloWorld.xml с описанием этих кнопок. При разработке и написании такого рода GUI-аддонов очень помогает AddOn Studio. Мощный инструмент на базе MS Visual Studio.
Но поскольку я минималист, в этот раз мы не будем ничего рисовать. Кроме того, это даст мне возможность показать, что вы можете создавать формы динамически из самого скрипта без использования дизайнера. Рассмотрим HelloWorld.lua. Я отредактировал его в блокноте++. Чтобы игра включила изменения в HelloWorld.toc, вам нужно перезапустить все это дело.
А вот изменения в HelloWorld.lua можно получить, написав в консоли команду /перезагрузка. Чтобы процесс программирования и отладки был менее болезненным.
Команды слэша
Кстати, об отладке. Я рекомендую добавить обработчик слэш-команд:
SLASH_HELLO_WORLD1 = ‘/helloworld’;
функция 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, 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, . )
end
EventFrame:SetScript(«OnEvent», EventFrame.OnEvent)
EventFrame:RegisterEvent(«PLAYER_LOGIN»)
function EventFrame:PLAYER_LOGIN()
— Инициализация здесь
end
function EventFrame:OnUpdate()
— Полезные вещи, которые можно сделать здесь
end
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()
end
Я думаю, что это довольно просто. Подробности о каждом методе вы можете найти самостоятельно.
Сериализация
У нас есть две координаты и два угла. Все это числа с плавающей запятой. Компоненты цвета пикселей в аддоне также являются числами с плавающей запятой, но от 0.0 до 1.0. Кроме того, известно, что цветовая составляющая сохраняется в одном байте. Сначала я сохранил каждую координату в одном цветовом компоненте.
В результате точность позиционирования в месте расположения составила 1/255 размер карты. Получается, как в GPSКоординаты есть, но ездить на автопилоте (без управления человеком) по дороге по навигатору нельзя. Таким образом, мне пришлось передать два байта. Как сохранить одно дробное число в двух байтах? Я сделал вот что
local x1, x2 = math.modf(x*255)
Функция modf возвращает целую и дробную часть числа, разделенные запятой. Здесь используется параллельное присвоение, еще один полезный прием Lua.
В этом подходе я использую полную мощность каждого из двух байтов, в которых хранится координата. Что касается азимута и наклона, то они не должны быть настолько точными, пока укладываются в интервал 0.0-1.0. Получается вот так:
local math = getfenv(0).математика
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)
конец
Теперь, когда вы перемещаетесь по миру в левом верхнем углу, два квадрата 10 на 10 будут случайным образом менять цвет.
Полный текст HelloWorld.lualocal math = getfenv(0).математика
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, . )
конец
EventFrame:SetScript(«OnEvent», EventFrame.OnEvent)
EventFrame:RegisterEvent(«PLAYER_LOGIN»)
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()
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)
end
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
Заключение первой части
Давайте повторим то, о чем мы говорили
- Мы рассчитали вероятность получения элемента при большом количестве попыток
- Мы обрисовали проблему, разработали подход к решению и разбили его на модули
- Вот код для простого аддона WoW на языке Lua
- научился передавать координаты с помощью цвета
- научился рисовать, обрабатывать события
- узнали, как обрабатывать команды слэша
А если вы что-то разрабатываете и хотите позволить себе или пользователям участвовать в процессе, гибко настраивайте программу, используя API (e.g. написать искусственный интеллект для оппонентов, позволить брокерам размещать позиции на основе котировок, позволить админам действовать по результатам инвентаризации пользователей и т.д.п.), вы должны знать, что Lua очень гибкий и очень легко внедряется. Рассмотрим это.
В следующей части мы поговорим о том
- запись регистратора кнопок и координат в AutoIt
- написание инструкций игрока для бота
- 2D математика, как перемещаться в декартовой системе координат без теоремы косинусов
- Управление роботом при недостаточном количестве датчиков
- меры по противодействию ботам
Источник: dml.compkaluga.ru
Warcraft: Как создать собственного бота
-
Скачали бота, разархивировали его в отдельную папку (желательно на рабочем столе)
!Сначала нужно запустить игру, затем бота.!
Запустите его и увидите нечто подобное:
-
Вкладка Бот — основная вкладка для включения/выключения бота, вы также можете видеть свои жизни, ману, опыт.
Кнопка Запуск боттинга включает бота, но мы его пока не трогаем. На противоположной стороне кнопки S это как бы сокращает бота до простого.
-
Воспроизводить звук при шепоте — если игроку кто-то пишет в PM, он будет воспроизводить музыку в качестве предупреждения.
-
Loot — забирает лут с трупа.
-
Взаимодействие при наведении курсора мыши
Для тех, кто не понял, или не может найти эти кнопки в настройках игры покажу на скриншоте.
Хорошо, дальше. Вы видите два столбца? Да? Бар, клавиши.
Я расскажу вам, что к чему.
Вот скриншот:
-
Eat — чтобы съесть еду, вы помещаете еду в игру, а кнопки — в чит. Дальше все понятно.
Ну может с настройками разобрался.
Теперь перейдем непосредственно к началу работы бота, и его работе.
Заходим в «Поведение». В этой вкладке бот будет бить, лечить, баффать на себя то, что вы прикажете.
Переходим в «Бой» — «Добавить правило». Мы видим новое окно. вот так.
Далее, мы покажем боту, чем бить в бою с существами, даже игроки
Нажмите «Добавить условие.», Выберите «Тикер.», поставить Готов, и кулдаун заклинания или атаки (можно не ставить, но он провалится).
Спуститесь вниз.
Действия: — клавишу «Отправить», напишите название заклинания или атаки. без лишних пробелов и т.д.).
— Как перевести это на английский?
Перейти на ru.wowhead.com или другой сайт с базой данных гав , ищем своего чара на русском, выбираем английский и он переведет. Копируем и вставляем и все.
Выставляем навык/заклинание на командной панели, и выбираем «Бар, клавиши», как мы разбирались выше.
Цель: Выбрать врага.
Название правила: любой понятный.
И сохранить. Так мы обучили бота бить одним навыком или заклинанием. Далее, то же самое, что вы хотите поместить туда, по крайней мере, все. Вообщем как лечиться я думаю вы поймете, а если не поймете то в этом разделе уже готовы модели поведения для каждого класса отдельно.
Радар (маршрут бота)
Итак,. Дошли до последнего шага. Маршрут бота.
Переходим на вкладку «Радар», видим какую-то хрень (извините за выражение, но вы поймете, когда откроете).
То, что вы видите, как вы сами, надеюсь, догадались — это окружение (минералы, трава, NPC и т.д.).д) Вы можете покрасить их в разные цвета, но это бесполезно.
В общем, в папке с ботом уже готовы маршруты (профили) c названием локации и уровней, которые могут быть там наверху. И находятся они в папке «Профили». Там профили до 70 уровня, но я свой сделаю позже кину ссылку на продолжение до 80.
—-
Мы покажем, как его создать.
—-
Перейдите на вкладку «Профиль.». Выбираем (добавить — нормальный — ставим галочку на Автодобавление).
Теперь рисуем свой собственный путь. Запустите персонажа и посмотрите на вкладку «Радар.»Будет нарисована картинка. Делайте путь маленьким, с небольшими кучками мобов 1-3 максимум, что бы бот не умирал при их избиении, но что бы успевал спауниться, когда вы оббегаете весь путь. Маршрут должен быть закончен. Т.е. где вы начали его составлять, там и закончили, чтобы бот не запутался.
На маршруте должно быть наименьшее количество деревьев, различных объектов, кочек, гор и т.д.д. Чтобы он не застревал.
Когда маршрут будет пройден, вы увидите во вкладке «Радар» примерно такую картинку (она всегда разная). Снимаем галочку с «Автодобавление».
Итак, сделано. Теперь давайте сделаем так, чтобы после смерти он вернулся к жизни.
Умереть на маршруте бота поставить возле ангела мертвеца специально, потом расскажу почему).
Выбираем во вкладке «Профиль.» (добавить — Ghost — ставим галочку Auto add) и запускаем воскрешение, деревья и прочую обводку. Сбрасываем, снимаем галочку с Автодобавление. Теперь бот в смерти будет воскресать. Это нужно для того, чтобы бот знал правильный путь (без препятствий) к вашему маршруту, а потом заблудился. Вы можете пробежать весь маршрут мертвым, тогда его будет легко воскресить.
-Выбираем, что будет бить бот. Нажмите цель в игре, и нажать добавить целевую фракцию в боте, и это будет его цель.
Готово. Сохраняем наш маршрут (профиль) Переходим на вкладку «Бот» Загрузите профиль (для этого нажмите «Загрузить профиль», и выберите его).
Нажмите Начать ботоводство и наслаждаться
——————
-Как сделать так, чтобы он собирал руду? или трава? делают то же самое, настройки делаем, так же как и мы в Профиле, только последние 2 пункта лишние.
Просто полетал по локации где больше руды или травы, поставил маунта, в настройках кнопки указал старт и все, не забудьте переставить режим)
——
Вот и все. Легко и просто Пару раз потренироваться и у вас все получится.
——
Задавайте мне вопросы, если не можете решить что-то.
Источник: wowexpert.ucoz.com