как сделать бота для игры

ВАЖНО! Для того, что бы сохранить статью в закладки, нажмите: CTRL + D

Задать вопрос ВРАЧУ, и получить БЕСПЛАТНЫЙ ОТВЕТ, Вы можете заполнив на НАШЕМ САЙТЕ специальную форму, по этой ссылке >>>

Робот или Бот — это ни что иное, как программа-робот, работающая под управлением компьютера и заменяющая партнёров в сетевых играх.

Можно обратиться на сайт habrahabr, где есть подробное описание создания бота для игры.

И посмотрите обучающее видео.

Смотря для чего вам нужен бот. К примеру, в игре «Counter-Strike» во время игры можно добавлять ботов, то есть персонажей за команду, которые управляются не живыми игроками, а бегают сами по себе и выполняют ряд действий. При этом стоит отметить, что бот — это заскриптованный персонаж, которые выполняет команды при стечении обстоятельств и не более. То есть он видит противника — сразу начинает стрелять, при этом рандомно, процент попадания зависит от действий игрока и алгоритма.

Так что создать бота можно следующим образом:

  • нарисовать 3д модель,
  • сделать текстуру,
  • на движке анимировать действия персонажа,
  • прописать скрипты действий.

Источник: http://www.bolshoyvopros.ru/questions/2000450-kak-sdelat-bota-dlja-igry.html

ты видел ботов на питоне?

Определитесь, вам нужно прикладное программирование, или веб-программирование.

Если под веб — php, html, css, js и какую-нибудь базу данных, желательно MySQL
Если прикладное — C++ или Delphi ( не рекомендую, а то большинство тех, кто кодил на делфи первым языком почему-то отрофируются из-за компонент ).
Есть еще системное программирование.

от себя добавлю что основные методы это
1) простейший понятный способ — поиск нужного элемента на экране и кликание по экрану, или клик по указанным координатам. я в основном использую этот способ, так как вмешательство в игру минимальное — ее не надо ломать, для онлайн игр — меньше шансов получить бан. Подходит для простых игр, в основном те что 2D пошаговые.
Гуглить отправку событий мыши и клавиатуры на выбранном вами ЯП (java robots например).
Минусы — игра должна быть постоянно открыта на экране и иметь фокус (можно решить — запустив игру с ботом в виртуалке).

2) для онлайн игр — изучение протокола обмена данными с сервером. нужно изучать куда отправляются/откуда получаются данные и в каком формате. пишем программу которая эмулирует клиент игры. очень хороший способ — для очень интерактивных игр — максимальная скорость. Способ довольно сложный надо реверсить протокол (гуглить wireshark) и возможно само приложение (гуглить дизассемблирование / декомпиляция). Если игра браузерная — то все может быть проще — запросы и ответы можно смотреть в консоли браузера. Очень перспективный способ — визуальный клиент не обязателен — можно делать армию ботов и размещать на серверах — скорее всего они будут потреблять немного памяти и процессора и возможности впечатляющие.

3) для десткопных игр — патчинг памяти запущенной игры. варианты от простых типа — поменять очки/деньги в игре (artmoney) это в основном для не онлайн игр, и до очень сложных — подменить адрес вызова системной функции — например функции отрисовки directx — то есть меняем адрес вызова на свою функци (недавно была серия статей на эту тему, к сожалению не нашел побыстрому). Либо как разновидность — декомпиляция игры — изменение логики — компиляция (гуглить все что связано с крекерством, создание кейгенов). Для этого варинта требуется довольно высокая квалификация, понимание того как работает игра. Также игры могут иметь защиту от этого.

Кстати понимание того как работают игры/программы — одно из главных в этом деле. Поэтому в первую очередь следует заняться тем чтобы понять как работает конкретная игра, а потом уже думать на каком этапе можно вмешаться в ее логику чтобы достичь нужного эффекта. Изучайте также средства тестирования игр/приложений — с помощью их также можно малой кровью добится хороших результатов.

Источник: http://toster.ru/q/217514

Бот для игры Stronghold Kingdoms.

Эмулятор мыши на Python.
Как управлять движением мыши и кликами на Питоне.



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

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

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

Допустим, имеется 20 замков. В каждом из них есть сохранение инфраструктуры
и расположения войск.

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

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

Начинаем программировать бота
для Stronghold Kingdoms на Python.



Stronghold Kingdoms использует стандартный Windows API для рабочего стола.
Поэтому первая строка нашей программы должна быть такой:

ЧИТАЙТЕ ТАКЖЕ:  то что сделано своими руками 6 букв

Источник: http://robotday.ru/2015/11/01/%D0%BA%D0%B0%D0%BA-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C-%D0%B1%D0%BE%D1%82%D0%B0/

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

В случае не возможности простого повторения на помощь может прийти один из множества программируемых кликеров, которые в своем арсенале имеют функции анализа экрана. С помощью встроенного скриптового языка в этих программах можно запрограммировать логику действий в зависимости от того что происходит на экране. В этом есть один недостаток — надо знать язык программирования который используется в программе.

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

Использовать будем программу Кибор, в котором присутствует визуальный редактор кода. В визуальном редакторе Кибор схема данного бота будет выглядеть таким образом. На ее составление ушло не более 10 минут с подготовкой всех изображений.

Для примера будем автоматизировать процесс рыбной ловли в игре На рыбалку. Процесс рыбалки выглядит следующим образом:

1) Нажимаем на кнопку Забросить и щелкаем по ней левой кнопкой мыши.

2) Ожидаем появление кнопки Тянуть. При появление кнопки зажимаем на ней левую кнопку мыши. Появляется полоса обозначающая натяжение лески. Нажимая и отпуская левую кнопку мыши следим что бы полоса не перевалила за правый или левый край.

3) Когда рыба вытащена закрываем табличку и переходим к первому этапу.

Для данных действий бот должен уметь:

Распознать кнопку Забросить и нажать на нее.

Распознать кнопку Тянуть и зажать на ней левую кнопку мыши.

Распознать по полосе когда надо кратковременно отпускать левую кнопку мыши.

Распознать появление таблички, что бы закрыть ее и начать лов сначала.

Овальный блок это точка старта. Синие блоки отвечают за анализ экрана, зеленые на манипулирование мышью.

Черные линии — линии переходов по мере выполнения программы. Красные линии — переходы при не нахождение указанного изображения в блоке анализа экрана.

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

Бот строится по порядку действий игрока.

Первым создается блок Старт. В нем объявляются переменные в которые мы в дальнейшем запомним координаты кнопок.

Затем идет блок поиска кнопки Забросить и клик по ней.

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

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

Одновременно с полосой сканируем появление таблички о пойманной рыбе. Эти два изображения сканируются по очереди, пока одно из них не будет найдено. Координаты найденного крестиика закрытия таблички запишутся в переменные (x1 y1).

Как только появится указанный участок полосы при появление которого надо кратковременно отпустить левую кнопку мыши управление переходит в блоки управления мышью. Действия мыши происходит по координатам (x y) кнопки Тянуть. Затем управление опять переходит на сканирование полосы.

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

Источник: http://pikabu.ru/story/sozdanie_botov_dlya_igr_bez_programmirovaniya_avtomatizatsiya_ryibalki_5311139

Итак в этой статье я продемонстрирую как создать простого бота основанного на визуальном поиске объектов на экране. Преимуществом данного метода является «незаметность» для различных систем защиты от ботов. Для написания бота мы естественно будем использовать специализированную среду для разработки ботов NOMAD BoT. Если боты создаются для того чтобы сэкономить ваше время на совершение однообразных рутинных действий, то NOMAD создан для того, чтобы сэкономить ваше время при написании бота. В сравнении с написанием ботов на неспециализированных средах программирования или на не очень специализированных разработка на NOMAD может происходить в десятки, а то и в сотни раз быстрее. (т.к. для начала вам еще придется разработать инструменты обнаружения объектов, которые в NOMAD уже встроены готовые). Скачать дистрибутив NOMAD с уже установленным ботом из этой статьи вы можете по этой ссылке (внимание! настройки программы в дистрибутиве рассчитаны на установку его в папку по умолчанию, если вы устанавливаете его в другое место, то измените пути к базе и конструктору с проигрывателем!)

Управлять многими — то же, что управлять немногими. Дело в организации.

Нашей задачей сейчас является демонстрация того, как делается бот программа, а потому для автоматизации мы выберем что-нибудь простое и в то же время всем доступное, например, Калькулятор. Конечно это не онлайн игра, но поверьте, создание бота для онлайн игры ничем не отличается. (внимание пример работает в Windows 8 и Windows 7, причем калькулятор должен выглядеть как на скриншоте, который есть ниже по тексту, т.е. например, в Windows XP калькулятор называется и выглядит иначе, и потому там бот работать не будет)

ЧИТАЙТЕ ТАКЖЕ:  как сделать подставку для кубика рубика картинки

Для того чтобы начать играть «автоматически» в что нибудь нам необходимо пройти следующие этапы:

  1. Сформулировать для себя задачу. Каких целей должен достигать наш бот.
  2. Какие действия он должен выполнять для этого?
  3. Исходя из задачи определить какие объекты он должен видеть, и каким образом, и на какие события реагировать для достижения целей описанных в пункте 1.
  4. Создание алгоритма.
  5. Программирование.

Задачей нашего бота будет бесконечно складывать на калькуляторе 2 числа 59 и 3.

Для достижения нашей цели нам необходимо, чтобы наша программа нажимала на кнопки 5 и 9 калькулятора, а в случае успеха на кнопку + и кнопку 3 и затем кнопку =

Следовательно эти объекты мы и должны будем искать на изображении, а затем тыкать в них мышью. Также мы будем анализировать число 59 и число 0 в поле результата, а также кнопку CE, для того чтобы сбросить вычисления на 0 перед началом очередной итерации.

Итак, наш алгоритм: В бесконечном цикле сначала ищем и жмем мышью на кнопку 5, и на кнопку 9. В случае успеха делаем паузу 3 секунды (чтобы успеть насладиться результатом). Затем проверяем есть ли у нас изображение числа 59, если есть то находим и кликаем мышью на кнопки + и 3 калькулятора, если эти операции также выполнены успешно, то находим и кликаем по кнопке = калькулятора. После чего спим 5 секунд. Затем проверяем, если в поле результата нет картинки 0, значит необходимо нажать кнопку CE, чтобы сбросить результаты предыдущих вычислений. После чего итерация повторяется. При нажатии кнопки Esc программа останавливается.

Продемонстрируем код программы которая у нас получилась:

Тут мы забежали немного вперед, написав сразу код, т.к. в NOMAD сначала необходимо создать шаблоны изображений которые мы будем искать. Так если посмотреть в код, то можно увидеть следующие записи: five,nine,fiftynine,plus,three,equal,zero,CE — что это? а это собственно и есть те шаблоны, в NOMAD с ними можно работать из кода как с объектами, т.е. пишем имя объекта в коде и вызываем его метод, например: FindPicture — найти изображение шаблона, MouseClick(‘l’) — найти изображение шаблона и кликнуть левой кнопкой мыши по нему. Для того чтобы подробно изучить возможности и функции NOMAD рекомендую обратиться к документации. А сейчас я в кратце опишу как нам создать недостающие шаблоны:

Во первых создадим базу данных, для этого в Launcher нажмем кнопку ADD, в открывшимся окне заполним в первом поле имя базы данных (например Калькулятор), и во втором поле укажем каталог где мы хотим хранить все что мы напрограммировали. Т.е. собственно исходник нашей программы, или иными словами базу данных. Далее жмем кнопку Save и в списке у нас должна появится запись. Выбираем ее и жмем кнопку Constructor.

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

На пункте выделенном на картинке голубым цветом жмем правой кнопкой мыши и выбираем пункт меню «добавить конвеер скриншотов». В появившемся окошке указываем его имя — «Calc». И нажимаем кнопку Input. После чего объект с таким именем должен появиться в дереве объектов в разделе ScreenShotPipe. Найдем его там и кликнем на нем левой кнопкой мыши. В левой части программы появится окошко следующего вида (свойства могут идти в другом порядке):

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

В третьих запустим калькулятор и сделаем его снимок, для того чтобы сделать снимок необходимо нажать кнопку ScreenShot в левом верхнем углу Конструктора. После этого у нас появится окно TV со снимком экрана. Теперь нам необходимо нажать кнопку Cut и выделить в окне TV наш калькулятор, результатом этих действий должно быть окно TV с изображением калькулятора.

Нажимаем кнопку Borders ( примечание. с момента написания этой статьи в программе появился режим FixBorders (кнопка черный мониторчик с луной), рекомендую использовать именно его. Используется он точно также как Borders, но работает на динамических изображениях гораздо стабильнее ) и начинаем делать шаблоны. Объясню как это делается на примере шаблона для кнопки «+» — мы должны выбрать на изображении самый характерный его участок, который не повторяется в других местах. Собственно и выбираем сам символ +, нажимаем на кнопку Select, и выделяем этот знак в квадратик:

ЧИТАЙТЕ ТАКЖЕ:  как сделать карту моментум

Кликаем правой кнопкой мыши внутри пунктирного квадратика и у нас появляется окно:

в поле имя которого мы пишем «plus» (так как этот объект у нас в коде был написан) и жмем Input. В разделе Templates дерева объектов у нас появился объект с таким именем. Нажмем на него и слева появится уже знакомое нам окошко:

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

Очень важно, чтобы наименования в точности включая регистр ввода соответствовали тому, что вы видите на картинке. В примере шаблоны five и nine сделаны другим способом, в режиме ColMap, за подробностями того как это делается предлагаю обратиться к документации. На работу кода программы это не окажет особого влияния и вы можете сделать все шаблоны тем же образом как и шаблон кнопки +. А можете ничего не делать, и скачать готовый дистрибутив с примером

Для того чтобы создать шаблоны fiftynine и zero необходимо делать шаблон участка калькулятора выделенного на картинке:

По шаблонам все.

3) Еще нам необходимо создать графический интерфейс программы через который она будет общаться с пользователем. Для этого необходимо в Конструкторе программы войти в меню «Окна» и выбрать пункт «Дизайнер Формы»

Откроется окно с формой, на которой нужно дважды щелкнуть и из открывшегося окна добавить объект Button в обоих полях формы пишем Start. Жмем ОК и выходим из формы, а на главной форме у нас появилась кнопка Start, нажимаем на нее и появляется опять меню свойств, жмем на закладку Events и видим следующее:

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

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

Запускаем калькулятор, делаем его видимым на рабочем столе и жмем кнопку старт. Когда надоест жмем кнопку Esc, и ждем сообщения о том что программа закончена.

Вот и все. Сложно? Делать это на обычном языке программирования сложнее в разы. Лично у меня написание этого бота заняло не более получаса, чего не могу сказать об этой статье.

Другие примеры ботов можно поискать на форуме http://nomadbot.com/forum/index.php например, тут

Как сделать (создать) бот программу(кликер)?: 19 комментариев

Приветствую, отличная статья!
Все получилось, но есть несколько вопросов.
Как заставить мышку двигаться на много быстрее, а то
все очень медленно происходит?
Возможно ли с вами связаться лично?

1) Вы скачали обновление? В новых версиях мышка двигается быстро. В Launcher нажать кнопку Update.
2) Зарегистрироваться на форуме и отправить мне личное сообщение.

Как сделать так, чтобы бот кликал только при 100% распозновании

Свойство «к» в итеме шаблона должно быть = 1, тогда будет при 100%. На динамически меняющихся изображениях 100% достигнуть сложно.

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

1) В режиме borders результат зависит от общей яркости изображения. Поэтому если она существенно меняется, то меняются и формы границ. Т.е. данный фильтр существенно снижает чувствительность к изменению цветов, но не исключает ее полностью.
2) функции KeyDown, KeyUp шаблона. или WinApi функции.

Может ли программа двигать курсором удерживая при этом лкм?

Источник: http://nomadbot.com/createbot

Ссылка на основную публикацию