5 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как пишутся боты для онлайн игр

Содержание

Создание ботов для игр: необходимые программы и инструменты

Игры бывают разные. Но рано или поздно любой геймер задает себе вопрос: «Как сделать бота для игры?». Почему так происходит? Потому что во многих играх:

есть масса рутинных действий, которые ну ж но выполнять человеку;

«качаться» до желанного уровня или скилла очень долго и не хочется тратить личное время, поэтому нужно , чтобы кто-то играл вместо самого геймера;

нужный скилл дается только за деньги или за большое количество игрового времени, деньги тратить не хочется и время — тоже;

хочется «качать» сразу несколько игр подряд, а возможность играть есть только в одну игру;

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

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

Создание ботов для игр намного сложнее создания чат-ботов, поэтому в большинстве случаев понадоб ятся знания одного из языков программирования. Но в т о ж е время создание ботов для игр зависит от того, для какой игры создается бот:

для игры в со цс ети;

Статья в тему:  Как играть через шифт в доте 2

для мобильной игры;

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

Уже от этого будет зависеть выбор необходимых инструментов. Плюс есть разные виды ботов для игр. Для чего они нужны:

есть боты, созданные разработчиками самих игр;

есть боты-кликеры, которые выполняют в игре самые простые действия;

есть боты-повторители, которые выполняют одни и те же действия по заготовленному шаблону;

есть боты-имитаторы, которые призваны имитировать действия реальных игроков.

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

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

Итак, как сделать бота для простых игр? Попробуйте для этого использовать программы для создания ботов для игр:

Кибор. Есть визуальный редактор, можно создать бота для простой игры;

Zennoposte r . Не нужно знать программирование для этого сервиса. При создании бота используется технология «перетаскивания» компонентов. Способен создать ботов для браузерных игр и игр в со цс етях. При желании можно сделать ботов и для других целей. Минус этого сервиса — не бесплатен, но есть бесплатный период в 14 дней.

Zbot. Это уже более продвинутая программа, которая способна создать бота даже для Counter Strike.

Также можно посмотреть еще POD-bot, YaPb и др.

Для более продвинутых «ботоделов» или те х, кто хочет таким стать , можно посоветовать специальные среды разработки для игровых ботов. Тут , конечно , нужно знать один из языков программирования:

JavaScript или др.

Конечно , с таким подходом вам буд у т открыты более широкие возможности при написании ботов для игр. Но и «попотеть» на старте придется, потому что если вы собираетесь сделать с нуля бота для игры, то вам придется как минимум выучить один язык программирования. А выученный язык программирования дает вам возможность состояться в IT-индустрии, если вы этого захотите. Потому что работы по программированию достаточно.

Две популярные среды разработки для игровых ботов:

SikuliX. Для разработки бота при помощи этой среды нужно подучить языки Python или Ruby, при установке нужно будет выбрать.

Nomad Bot. С данной средой не возникнет вопроса : « К ак сделать бота для игры ? », потому что данная среда «заточена» именно под создание ботов для игр и нацелена на то, чтобы экономить ваше время для разработки.

Статья в тему:  Что собирать clinkz в доте

Итог

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

Мы будем очень благодарны

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

Создание ботов для игр без программирования. Автоматизация рыбалки

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

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

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

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

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

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

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

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

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

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

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

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

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

Статья в тему:  Какой должен быть пинг для онлайн игр

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

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

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

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

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

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

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

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

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

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

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

Видео создания и работу готового бота можно посмотреть тут https://youtu.be/u8NpA1eXTsI

Найдены возможные дубликаты

Что-то дальше одного поста у вас дело не пошло.

Забросили программу или просто не публикуете здесь информацию по ее развитию?

Если вам не кайф сидеть рыбачить за компом, зачем нужны боты? Если можно просто не играть?

Эта тема не о этом. Это пример. далеко не все на компьютере делать в кайф, а надо.

А что публиковать. Все равно тут ее не опишешь полностью. Она имеет очень много инструментов и функций.
Не забросил, наоборот.

Сегодня вышло обновление.

Добавил обучаемую функцию распознавания текста.

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

Подробнее о распознавание текста в Кибор

Статья в тему:  Онлайн игры где можно создавать семью

Видео работы функции и процесса обучения

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

Оптическое распознавание текста в Кибор. Примеры создания ботов:

Домашняя работа

А мыслишка то проскакивает.

Сделай правильный выбор

Притча о храме и баре

Человек пришёл в храм. Он забыл выключить телефон, который во время молитвы зазвонил. Священник отчитал его. Люди, которые молились, ругали его после молитвы за то, что он нарушил тишину. Всю дорогу домой его жена выговаривала ему за его невнимательность. На его лице можно было увидеть стыд, растерянность и унижение.

После этого случая этого человека никогда больше не видели в храме. И в этот же вечер он пошёл в бар. Этот человек всё ещё нервничал и его руки дрожали. Случайно он разлил свой напиток на стол. Официант извинился и дал ему салфетку, чтобы вытереться. Уборщик вытер пол. Управляющая бара предложила ему другой напиток за счёт заведения. При этом она сказала: «Не беспокойтесь, мужчина. Все делают ошибки».

С этого дня он ходил в бар каждый вечер.

В современных реалиях

Развлечение

Фонарик для похода в туалет

Ответ на пост «Контейнер»

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

Дочка время от времени в сумку подкладывает конфеты и записки вроде «Папа, я тебя люблю»/»Папа, я скучаю»/»Папа, хорошего дня» и так далее. На работе в сумку полезешь, а там такой сюрприз. А в командировку если уезжаю, она всегда в мои бумаги сунет рисунок свой какой-нибудь забавный.

Сразу как-то тепло становится.

Больно

Неадекватные соседи

Придаю огласке ситуацию, которая произошла в семье у моей хорошей знакомой (ссылка на пост из инстаграмма — angelova_ka)

Текст без изменений:

Пока я тихо-мирно отдыхала в Питере, дома произошел пиздец. Наши соседи снизу совершенно неадекватные люди. Как и их дочь. Сейчас нам необходима широкая огласка произошедшего, потому что иметь дело с такими психопатами без общественной поддержки не представляю возможным. Историю публикую от лица брата. Полные видео можно посмотреть у меня в ВК.
«27.09.2021 я встретил у подъезда своего соседа, А.Г., , владеющего замечательной собакой породы золотистый ретривер, которую он запирает в клетку на время своего отсутствия, в результате чего бедное животное целыми днями лает и воет на радость соседям.
Сделав А.Г. очередное замечание по поводу лая его собаки, в ответ услышал, что «я его за***л». Ответив ему в аналогичной манере, я продолжил путь в подъезд, тут же получив удар ногой в спину, а обернувшись — удар рукой в лицо.
Отшатнувшись от удара, я отступил и сказал А.Г. успокоиться, что он проигнорировал и двинулся на меня.
Понимая его недобрые намерения, я предпринял ещё одну попытку вразумить человека — оттолкнул нападавшего и крикнул ему «не подходи ко мне».
А.Г. было все равно, он схватил меня за руку, на что я в ответ схватил его за куртку, пытаясь удержать его и повторяя «Успокойся! Успокойся!» Бестолку.
Доблестный А.Г. начал отвешивать мне удар за ударом, а я пытался защититься, хватая его руки, при этом стараясь не нанести А.Г. повреждений.
Вдоволь получив по лицу, я схватил А.Г., чтобы он больше не смог меня бить.
Тут подоспели соседи и я отпустил А.Г., убедившись, что он сбавил свой агрессивный настрой, после чего мы разошлись.
Но, как оказалось, это было только начало.
После того, как я вместе с председателем ТСЖ получил видео с камер, услышал сверху попытки выбить дверь, сразу поняв кто и к кому ломится.
«Лидия Александровна (пред. ТСЖ), будете свидетелем, если что» — сказал я, готовясь снимать продолжение.
На четвертом этаже меня ждал А.Г. и его сожительница — А.А., «
Я только и успел сказать: «так, спокойно!», как эта интеллигентная женщина начала наносить мне удары, а А.Г. пытался вытащить меня из лифта. А.А. целилась мне ногтями в глаза при этом поливая меня несомненно литературными ругательствами. Тут я не на шутку испугался — бежать не куда, бить — себе дороже, просто старался вытолкать их из лифта. В итоге все мы втроём выпали в тамбур четвертого этажа, где А.Г. и А.А. продолжили наносить мне удары руками и ногами.
Не помню как я отбился, но мне удалось встать и оттолкнуть их от себя. Забившись в угол я продолжал отталкивать кидавшихся на меня соседей и кричал что-то страшное.
В конце концов им это надоело и, пообещав мне страшных кар, они уехали на втором лифте.
Далее по стандарту: полиция, заявления, травматология, сотрясение, больничный.
В тот же вечер моей маме через VPN позвонили неизвестные и угрожали разобраться с ней и со мной. Как оказалось, звонила дочка А.А. — Я.О., после чего уже начала сыпать угрозами мне в соцсети.
Я напуган как самой ситуацией, так и тем, как активно нападавшие пытаются сделать меня виноватым — звонят мне на работу, моим родственникам и т.д.
Я хочу придать огласку данному случаю, чтобы обезопасить себя и своих близких.

Статья в тему:  Как отдалить камеру в доте 2 через консоль 2017

Пишем бота для онлайн-игры на JavaScript с применением AOP

1. Готовим ингредиенты

Нам потребуются:

  • Собствена сама игра. Я буду показывать на примере Пернатска
  • Браузер. У меня все стандартно — Chrome
  • Текстовый редактор или в чем вы будете редактировать JS код. Notepad++ подойдет
  • Аккаунт для тестов, который не жалко будет потерять в результате бана

Важно! Игра должна работать в браузере, а не в клиенте. Причем не на Flash, а на HTML+JavaScript.
На выходе у нас должно получиться расширение для Chrome, которое будет играть вместо нас.

2. Делаем расширение

О том как делается расширение я не буду подробно расписывать. На хабре об этом уже писали, например, тут.
Приведу лишь коды, нужных нам файлов.
В manifest.json

В строчке «matches»: [ «pernatsk.ru*» ] вам нужно будет указать адрес вашей игры.
Файл background.js я использую для случаев, когда хочу инджектить на сайте свой JS кода. Собственно код background.js:

Важно! Если вы не понимаете, что мы делаем в этой единственной функции, то делать бота вам пока рано. Почитайте основы JavaScript.
Вся работа у нас будет вестись в файле injected.js Его код пока такой:

Все эти файлы сохраняем в одной папке bot.

3. Первый пуск бота

4. Добавляем AOP

Для работы бота нам потребуются библиотеки. Мой любимый jQuery уже используется на Пернатске, поэтому добавлять его не будет.
Добавим плагин AOP for Jquery. По хорошему это стоило запаковать в само расширение в виде отдельного файла, но я ленив. Поэтому просто добавим код bin/aop.pack.js первой строкой в наш injected.js.
Проверим, что это работает изменив ai_on

Статья в тему:  Как продать вещи из доты в стиме

Проверяем, что AOP нормально подключилось. В консоле разработчика теперь будет строчка «jQuery detected!» Сообщение будет только один раз, так как я отключаю совет после первого же срабатывания.
Важно! Прочитайте документацию AOP for Jquery, чтобы понять jQuery.aop.after и bot[0].unweave().

5. Зачем мы будем использовать AOP

6. Учим бота первой команде

В injected.js добавим такой код:

По этой команде наша бот-птичка будет лететь в Пернатске за шишками. Код слегка мудренный, так как в Пернатске есть небольшая защита от ботов.
Когда вы будете писать свои команды я рекомендую сначала опробовать их работоспособность в console, а уже потом переносить код в редактор.
Чтобы протестировать и проверить работу нашей команды запустим в косноле код commands.conessearch() Все работает.

7. Ищем событие на которое должен реагировать бот

Тут есть два метода первый — анализируем код игры. Долго 🙁
Второй метод — воспользоваться AOP, и после всех функций, который срабатывали вывести в лог их имя. Потом выбрать нужные.
Меняем ai_on()

У нас пойдет много-много функция. Там будет $ от jQuery или стандартная setTimeout.
Работать с этим очень не удобно изменим код еще раз.

Теперь у нас отражаются только те функции, которые еще не отображались. Их полный список мы храним в fnList.
После пары минут там будут такие варианты функции для прицепки [«clearInterval», «$», «setTimeout», «timerTick», «serverTimeUpdate», «getComputedStyle», «setInterval», «tutorialArr», «showQ», «showQc», «updateBirdData», «viz», «unviz», «weatherUpdate»]
Меняя target и регулярное выражение в method мы можем подобрать ту функцию, которая нам подойдет, чтобы к ней прицепиться. Для примера, я выбираю функцию weatherUpdate теперь каждый раз как будет меняться погода наша птичка будет лететь за шишками.

Статья в тему:  Онлайн игры как техномагия

7. Учим бота реагировать на события

Мы снова меняем код функции ai_on()

Функцияю ai_off нужна, чтобы через консоль выключить бота.

Делаем своего первого чат-бота

Суперпростой способ создать бота, не зная программирования.

Уровень: начинающий

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

Многие слышали про чат-ботов и роботов для общения: им пишешь, они отвечают, получается диалог с машиной. Чат-бот может рассказать анекдот, поискать за вас в интернете, забронировать столик в ресторане и что угодно ещё, чему его обучат создатели.

Иногда такое общение выглядит как общение с человеком. Может даже показаться, что там работает искусственный интеллект — и иногда так действительно бывает. Но часто всё проще: это алгоритм, который умеет распознавать некоторые ваши слова и давать ответы по заранее заготовленным шаблонам. Чем алгоритм более разветвлённый, тем естественнее и полезнее бот.

Давайте сделаем собственного чат-бота с очень простым алгоритмом. Позже вы сможете усложнить его, как захотите. Но сначала — самая база для тех, кто никогда не писал код.

Обычно, чтобы создать какую-то программу, нужно выполнить несколько действий: например, скачать программу-обработчик языка, завести проект, написать задуманную программу, скомпилировать. И только потом ей можно пользоваться. Но мы пойдём по более простому пути: напишем программу, работающую прямо в браузере, через который вы читаете эту статью. Сделать это можно лишь на компьютере, на телефоне придётся пользоваться ботом.

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

Статья в тему:  Почему скачет фпс в доте 2

Чтобы сделать что-то на JavaScript, нужно открыть консоль. Почти во всех современных браузерах это делается сочетанием клавиш Shift + Ctrl + J или Cmd + Alt + J. Справа или снизу появится дополнительное окно, в котором уже будет что-то происходить:

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

Когда вы открываете консоль, она сразу готова выполнять ваши команды. Если в неё вставить программу, написанную на JavaScript, и нажать Enter, ваш браузер её реализует. Если в коде есть ошибки, консоль сама подсветит их. Можно отправлять в неё программу кусками или даже построчно: браузер будет помнить всё, что происходило в вашей программе, пока вы не перезагрузите страницу.

Первая строка

В консоли можно не только писать код, но и выводить туда результаты. Давайте для начала сделаем самую простую программу, которая отобразит в консоли слово «Привет!». Для этого используем команду console.log(‘Привет!’);

Вставим её в консоль и нажмём Enter:

Поздравляем, вы только что написали свою первую программу для компьютера! Она очень простая: компьютер всего лишь говорит «Привет!». Но оцените момент: это вы его научили так говорить. Попробуйте научить его и другим словам.

Если написать несколько команд, получим сообщение из нескольких строк:

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

Переменные

Чтобы дать понять компьютеру, что у нас сейчас будет переменная, нужно сказать ему слово var, после которого вписать название переменной — так нам проще к ней обращаться. Например, следующая строка создаст переменную name и положит в неё слово «Код»:

Название тут может быть практически любым, главное, чтобы оно начиналось с буквы. По-русски переменные называть нельзя, только буквами латинского алфавита. Можно было бы использовать вариант imya или zovut, но программисты считают, что чем проще название переменной, тем лучше.

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

Можно посмотреть, какое сегодня число. Это внутренняя системная переменная. Строго говоря, это не совсем переменная, но для начала давайте считать так:

Но это мы всё смотрим во внутренности компьютера. А нам нужно спросить что-то у пользователя. Чтобы мы могли ввести новые данные в нашу программу, используем команду prompt()

Вставьте в консоль команду var name = prompt(‘Как вас зовут?’); и посмотрите, что произойдёт. Компьютер выведет окно и будет ждать, пока вы внесёте туда своё имя. Интерфейс выглядит красиво: давайте в диалоге общаться с компьютером не через консоль, а через такие появляющиеся окошки. Для этого напишем новые команды:

Статья в тему:  Как сохранить игру в рдр2 онлайн

Пусть компьютер проявит вежливость и скажет, что ему приятно с нами познакомиться. Чтобы он смог обратиться к нам по имени, используем переменную name — в ней как раз хранится то, что мы ответили компьютеру:

Чтобы вывести осмысленную фразу, мы взяли начало ‘Привет, ‘, затем с помощью плюсика соединили со значением переменной name , которая хранит наше имя, а потом ещё одним плюсиком добавили к фразе концовку. Чтобы компьютер знал, что мы хотим вывести на экран текст, а не числа, используются кавычки. Компьютер воспринимает как текст то, что внутри кавычек. И выводит точно в том виде, в котором написано.

Расчёт дня рождения

Давайте соединим все наши команды в одну программу и допишем несколько новых фраз:

Обратите внимание: у нас появился новый вопрос и новая переменная hobby, в которой хранится информация об увлечении. А ещё — комментарии, которых можно добавлять сколько угодно. JavaScript не обращает внимания на то, что написано после двух косых черт:

Теперь у вас есть всё, что нужно, чтобы написать свою версию чат-бота для общения. Если продолжите решать наши задачки, то сможете научить компьютер по-разному реагировать на ваши ответы и даже вести осмысленный диалог.

Что ещё посмотреть

Вот кое-что, что может вам пригодиться при создании первого чат-бота.

performance.now() — эта команда возвращает время в миллисекундах с момента открытия текущей страницы. Можно поделить на 1 000, и вы узнаете, сколько секунд вы сидите на какой-то странице. Если поделить на 60 000 — сколько минут.

setTimeout() — позволяет выполнить любой код через определённое время. Например, вы можете задать вопрос и предоставить ровно минуту на размышление, после чего появится окно для ответа.

setInterval() — то же самое, что и предыдущее, но выполнение кода повторяется с равномерным интервалом, например раз в 5 минут. Если вы хотите научить чат-бота, чтобы он раз в час напоминал попить воды, эта команда — то, что нужно.

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

Чат-боты: для чего нужны и как создать. Гайд для тех, кто ещё не разобрался

Как создать чат-бота самостоятельно, без программистов? Когда нужно привлекать разработчиков? Разбираемся вместе с экспертами.

Статья в тему:  Онлайн игра где не надо качаться

Пользователи любят общаться с компаниями через мессенджеры. Платформа Twilio опросила шесть тысяч человек и выяснила, что 85% из них хотели бы иметь возможность связаться с поддержкой через сообщения. По последним данным, 56% клиентов предпочтут мессенджер звонку на горячую линию, а 51% ожидают от компании моментального ответа в любое время суток.

К 2022 году 80% запросов будут обрабатывать чат-боты, предсказывает CNBC. Этот прогноз не удивляет. Для пользователей чат-боты — это круглосуточная поддержка и быстрые ответы на вопросы. Для бизнеса это рост продаж и обслуживание клиентов без затрат на операторов.

Эта статья для тех, кто ещё не включил чат-ботов в свой инструментарий. В ней мы разберём:

  • какие бизнес-задачи решают эти программы, почему их нельзя путать с рассылками;
  • когда подойдёт конструктор, а когда лучше обратиться к разработчику;
  • как самостоятельно собрать чат-бота с помощью конструктора;
  • что нужно знать, чтобы заказать такой алгоритм у разработчика.

Пишет про технологии и бизнес.

Что такое чат-боты и зачем они нужны

Хотя слово «чат-боты» знакомо каждому маркетологу, их часто путают с другими инструментами, а ещё приписывают им ложные функции. Разберём, какие цели текстовые боты решают в бизнесе, в какие интерфейсы их внедряют, а также что они делать не умеют.

Чат-бот — это автоматическая система для общения с пользователями. Другими словами, это алгоритм, робот, который помогает клиентам решать различные задачи. Например, сделать заказ в интернет-магазине.

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

Чат-ботов можно встретить в разных интерфейсах:

  • в мессенджерах, в том числе в социальных сетях;
  • в мобильных приложениях;
  • на сайтах в виде онлайн-чата;
  • в голосовых помощниках: в «Алисе» от «Яндекса», Google Assistant, Alexa;
  • на отдельных веб-страницах.

Их не стоит путать с рассылками и информационными каналами. Чат-бот «общается» с пользователем, отвечает на его вопросы. Рассылки просто дают информацию, ничего не спрашивая и не реагируя на запросы читателей. Если рассылку отправляют через чат-бота, то он сможет ответить на вопросы и перейти к диалогу с пользователем.

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

Статья в тему:  Что собирать clinkz в доте

В бизнесе чат-боты решают две большие группы задач:

  • Конверсии и продажи. Это алгоритмы для общения с потенциальными и повторными клиентами. Цель — привести пользователя к покупке.
  • Снижение нагрузки на службу поддержки и, следовательно, сокращение затрат. Такие алгоритмы отвечают на типовые вопросы и помогают пользователям решить их проблемы. Чаще встречаются в крупных компаниях.

О чат-ботах есть несколько ложных представлений. Они не могут полностью заменить человека: некоторые задачи алгоритмы закрывают сами, но для других они подключают операторов. Чат-ботов также не используют для рассылок спама незнакомым контактам. Кроме того, автоматические алгоритмы в мессенджерах не могут полностью заменить систему продаж: сайт всё равно нужен.

Насколько эффективны чат-боты? Open Rate сообщений в мессенджерах — 90%. Для сравнения, у email-писем похожего содержания показатель составляет 20–30%. В мессенджерах выше Click Rate и скорость ответа. В среднем это 90 секунд для чат-ботов против 90 минут для email.

Робот стоит на первой линии поддержки, он может забрать на себя 50% и более обращений, говорит директор платформы для разработки голосовых и текстовых роботов Ziax, эксперт курса «Мессенджер-маркетинг» Роман Милованов. По его словам, это касается типовых обращений, которые не требуют уникального подхода к клиенту. Чат-боты избавляют операторов от рутины — это снижает и затраты, которые можно посчитать в FTE, и косвенные издержки, которые трудно подсчитать.

Роман Милованов приводит и другие примеры использования чат-ботов. Их используют в HR для ответов на запросы сотрудников. Или во внутренних техподдержках: чат-боты заводят заявки, отслеживают статусы, бронируют переговорные комнаты. Тем не менее в этой статье мы говорим о ботах для маркетинга.

Конструкторы vs разработчики

Чат-боты различаются по сложности. Есть простые алгоритмы — они могут вывести информацию по запросу или ответить на вопросы пользователя, если те входят в базу данных. Если ответа в базе нет, робот перенаправляет к менеджеру. Таких ботов часто собирают самостоятельно с помощью конструкторов.

Сложные чат-боты умеют запоминать ответы пользователей и учиться на них. Для работы таких чат-ботов нужен искусственный интеллект, и, как правило, их заказывают у разработчиков. Есть версии конструкторов с ИИ, однако мнения на их счёт разделились: некоторые уверяют, что результат всё равно будет хуже, чем при индивидуальной разработке.

Разработку чат-бота не всегда стоит начинать с поиска исполнителя, считает геймификатор и продакт-менеджер Александр Дученчук. По его словам, сначала нужно смоделировать решение. Это удобно делать на онлайн-досках для майндкарт — например, Miro или Lucidchart.

Если решение линейное, простое и не требует взаимосвязей, то можно попробовать собрать его самостоятельно с помощью no-code/low-code -сервисов. «В наше время их уже достаточно много, и они хорошо развиты», — говорит Дученчук.

Статья в тему:  Онлайн игра где не надо качаться

Простой чат-бот: как сделать с помощью конструктора

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

Самостоятельное создание чат-бота можно условно разделить на пять этапов.

Этап 1. Определите, где будет находиться чат-бот

Это мессенджер, диалоговое окно на сайте, отдельная страница. На российском рынке наиболее популярны мессенджер социальной сети «ВКонтакте» и WhatsApp — многие начинают внедрение чат-ботов именно с них.

Этап 2. Опишите цели чат-бота

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

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

Этап 3. Спроектируйте чат-бота

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

На этом этапе нужно обратить внимание на то, в каком тоне чат-бот общается с клиентами. Сервис доставки еды и похоронное бюро будут использовать разные стили. Текстовые сообщения можно дополнить кнопками, смайликами, анимацией и иллюстрациями.

Этап 4. Выберите конструктор чат-бота

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

Приведём некоторые примеры:

  • Сhatforma;
  • Flow XO;
  • Pipe.bot и SAP Conversational AI — боты с ИИ;
  • Chatfuel — боты для Facebook;
  • Manychat — боты для интернет-магазинов, сервис интегрирован с Shopify;
  • Treebo — сервис для WhatsApp с интеграцией с Bitrix24;
  • Robochat.io — боты для «ВКонтакте» и Telegram.

У Facebook Messenger, Slack и Telegram есть собственные платформы для создания ботов. Они бесплатные, но несколько сложнее классических коммерческих конструкторов.

Для общения с пользователем чат-бот должен откуда-то брать данные: о заказах, товарах, статусе доставки и так далее. Для этого алгоритм интегрируют со сторонними сервисами, которые хранят такие данные. Это, например, «Мой склад», «Google Таблицы», «Google Календарь», Bitrix24 или даже Instagram. При выборе конструктора нужно учитывать, что он должен работать с сервисом, которым пользуетесь вы.

Статья в тему:  Онлайн игры как техномагия

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

Ещё следует обратить внимание:

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

Этап 5. Откорректируйте бота после тестового периода

Когда бот проработает хотя бы месяц, попробуйте его улучшить. Для этого:

  1. Проанализируйте, как клиенты используют чат-бота. Что они ищут? Как вы можете адаптировать бота к их потребностям?
  2. Обратите внимание на слова и фразы, которые бот не распознал. Обычно алгоритмы сохраняют эти данные. Если какая-то фраза встречается много раз, её можно внести в диалог.
  3. Изучите, какие именно пользователи вступают в диалог с чат-ботом, как они с ним общаются. Возможно, чат-боту стоит сменить тон.

Сложный чат-бот: как заказать у программистов

Хотя новичок может справиться с созданием чат-бота, профессиональные лингвисты и программисты сделают робота намного лучше. Так считает Роман Милованов из Ziax. По его словам, это также будет быстрее. В этом разделе мы разберём, сколько может стоить разработка бота, где искать подрядчиков и что нужно учесть при создании ТЗ.

Сколько может стоить создание бота

Час разработки в этом сегменте в среднем стоит от 800 до 2500 рублей. Итоговая цена проекта будет зависеть от сложности, в том числе от того, нужны ли функции ИИ. Самого простого бота можно заказать у фрилансера от 10 тысяч рублей; цена хорошего чат-бота для компании будет находиться в ветке 100–300 тысяч рублей.

Цены на чат-ботов в агентствах, которые на них специализируются, начинаются от 40 тысяч рублей, а в веб-студиях — от 120 тысяч.

Стоимость также зависит от платформы, для которой нужен чат-бот. Самые дешёвые — это роботы для Facebook, Telegram, Viber и сайтов. В них для создания диалогов можно использовать уже существующий интерфейс. Сложнее сделать робота для WhatsApp или SMS — цена может быть больше в пять раз.

Где искать исполнителя

Способы поиска в целом не отличаются от того, как компании ищут квалифицированных сотрудников на другую проектную работу.

  • Биржи фриланса. Например, Fl.ru или Kwork. При выборе исполнителя стоит ориентироваться на рейтинг, отзывы, опыт. Ну и важно помнить — демпингуют на таких биржах обычно новички.
  • Заказать у агентства или компании, для которых чат-боты — это их профиль. Это дороже, зато робота не только напишут под ваш бизнес, но и настроят, отладят и будут сопровождать.
  • В соцсетях. Исполнителя можно найти в Facebook, Telegram или во «ВКонтакте». Там есть и фрилансеры, и агентства. На том, что в соцсетях могут быть мошенники, а опыт потенциального исполнителя нужно оценивать, мы останавливаться не будем.
  • Через знакомых. Способ, который также не нуждается в комментировании.
Статья в тему:  Онлайн игры где можно создавать семью

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

Обязательно нужно проверить на собеседовании, работал ли исполнитель с нужными вам технологиями. Это могут быть технологии обработки естественного языка (NLP), распознавания человеческой речи (Voice Recognition, Text-to-Speech и Speech-to-Text). На изучение этих инструментов уйдёт слишком много времени, отмечает Дученчук.

Для разработки сложных чат-ботов можно применять разные языки, поэтому, если у вас уже есть в стеке, например, Python, можно не усложнять и написать чат-бота на нём, заключает Дукенчук.

Как составить ТЗ и выяснить точную стоимость?

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

  1. Объясните разработчику, какой чат-бот вам нужен. Если вы сами не знаете, попробуйте сосредоточиться на его целях — что этот алгоритм должен делать для вашего бизнеса или проекта.
  2. Какие функции будущего чат-бота какие потребности покроют. Например, если вы хотите снизить нагрузку на команду поддержки, скорее всего, вам нужен чат-бот с ИИ — он сможет вести диалог с пользователями на продвинутом уровне.
  3. Отправьте свои требования в несколько компаний и попросите оценить время и стоимость проекта.

Как узнать больше

Если вас интересует продвижение бизнеса в мессенджерах в целом, то вот здесь мы рассказываем о маркетинге в WhatsApp, здесь — о массовых рассылках во «ВКонтакте» от имени группы, а здесь — о подключении чат-ботов к таргетированной рекламе.

О необычном способе использовать чат-бота можно прочитать в статье «Как в „Газпром нефти“ развивают эмоциональный интеллект с помощью чат-бота».

обложка: Lefgo / Pexels / Colowgee для Skillbox Media

Простой игровой бот для ВК, создаем игру для Вконтакте + исходники! | Часть 1


Данная статья, начало создания игровых механик для своего бота Вконтакте. Многие из вас завадались вопросом: А как создать игрового бота для ВК, давайте начнем создавать классного бота для совместных игр.

Статья в тему:  Как играть через шифт в доте 2

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

Создаем новое сообщество, указываем название, тематику и по желанию свой сайт (если есть).


Переходим в настройки и включаем сообщения сообщества, а так же создаем новое приветствие для новичков :), тут же в подразделе Настройки для бота не забываем включить их, и разрешить добавлять его в беседу!

Теперь переходим к настройке скрипта, назовем это основной файл отвечающий за прием событий от вк и их дальнейшей обработки
Если нет сервера, нужно приобрести, рекомендуем хостинг FirstVDS нам подойдет и обычный хостинг VDS-OVZ-Разминка, цена на время написания статьи всего 90 рублей в месяц. После заказа Вам придет на почту данные для авторизации на сервере. Использовать можете любой хостинг, на ваш вкус и цвет. Главное условие поддержка PHP 5.6+ (желательно 7.0+) и MySQL. Далее переходим на сервер, создаем любое доменное имя куда будем заливать скрипты. Мы будем использовать IP адрес. Если с с настройкой сервера не понятно, то почитайте эту статью на нашем сайте, где мы наглядно показываем как загрузить файлы на сервер.

Для работы с PHP я использую PHPStorm, это платный продукт, но как получить его бесплатно, Вам, наверно, объяснять не нужно 🙂

Распаковываем архив на сервер и открываем наш файл bot.php и пишем код который останется неизменным и может использоваться при создании новых ботов.

Здесь нам нужно заполнить следующие поля:

$host = ‘localhost’; // По умолчанию localhost или ваш IP адрес сервера
$name = »; // логин для авторизации к БД
$pass = »; // Пароль для авторизации к БД
$bdname = »; // ИМЯ базы данных
$vk_key = »; // Длинный ключ сообщества, который мы получим чуть позже
$confirm = »; // СТРОКА которую должен вернуть сервер
$v = ‘5.103’; // Версия API, последняя на сегодняшнее число, оставлять таким если на новых работать в будущем не будет

Получение ключа сообщества:
А так же в разделе Тип событий обязательно включите Входящие сообщения

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

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

Статья в тему:  Как сохранить игру в рдр2 онлайн

2. Регистрация новых пользователей в боте.
Для создания игрового бота понадобится регистрация используя базу данных. Мы будем Использовать для этого обертку на родным MySQLi. Для начала создаем через PhpMyAdmin новую таблицу users с полями:

Или используем запрос ниже:

Переходим к самому интересному, написанию кода.

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

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

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

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

Давайте протестируем регистрацию и ответ на нажатие кнопки:

Ответил не сразу, в коде были допущены следующие ошибки:
ids заменить на vk_id и добавить переменную $userinfo = $vk->userInfo ($id);
Так как статья пишется параллельно созданию бота, могут быть допущены ошибки, выше в исходных файлах они будут исправлены.

Давайте сделаем что бы бонус начислялся на баланс. Добавляем 2 поля к таблице USERS:

переходим к коду и пишем следующую проверку и рандом:

Проверяем:

Так это выглядит в базе данных:

Отлично у нас есть деньги, пора бы начать их и тратить 🙂 самое распространенное в играх конечно же казино, давайте сделаем что-то подобное, самое простейшее казино. Пока мы еще не придумали игровые механики для нашего игрового бота, сделаем фарм денег.

Как будет работать наше казино:
Казино все, казино 100, казино 1кк и прочие, означающие ставки. Погнали делать команду:

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

Получилось не плохо, теперь в нашем игровом боте есть казино!

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

Статья в тему:  Как продать вещи из доты в стиме

Если статья понравилась, оцените ее лайком.

Ваши ставки, господа, бота радуют всегда! Пишем бота для partypoker.com

Содержание статьи

  • Flop aka вливаемся в игру
  • Turn — реализуем бота
  • River: all-in
  • Tricks & Tips
  • Info

Онлайн-покер с каждым днем набирает все большую популярность. Это и неудивительно, ведь азартные игры всегда манили людей возможностью быстрой и легкой наживы. В результате — появление на просторах Сети покерных ботов, способных самостоятельно вести игру.

Но, как известно, в последнее время крупнейшие покер-румы начали активно закручивать гайки, выкидывая любителей нечестной игры из-за столов. В такой ситуации разработка покер-ботов превращается в весьма неблагодарное занятие, а порой и просто в пустую трату времени. Казалось бы, овчинка не стоит выделки, и тему можно смело закрывать. Однако не стоит опускать руки раньше времени. Устраивайся поудобнее, сейчас я покажу тебе, как научить собственного бота играть на partypoker.com :).

Flop aka вливаемся в игру

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

Мы не будем лезть в код клиентского софта покер-рума. Это понижа ет удобство работы взамен на гарантии безопасности и стабильности функционирования бота. Однако все не так сложно, как тебе кажется :).

Turn — реализуем бота

Итак, перед запуском бота необходимо произвести следующие действия:

  1. Сливаем официальный бесплатный клиент с partypoker.com.
  2. Запускаем его и регистрируемся в покер-руме.
  3. В настройках клиента ставим четырехцветную колоду карт.
  4. Открываем четыре любых игровых стола и устанавливаем автоматическое расположение окон.

Обрати внимание, что окна должны располагаться именно в автоматическом режиме, иначе бот не сможет ориентироваться в игре. Бот имеет собственную панель управления. Она рассчитана на разрешение экрана 1280х1024, размещается ниже игровых столов и выше панели задач винды, что позволяет одновременно наблюдать за игрой и контролировать работу бота, не мешая ему считывать информацию со столов. Согласно концепции, бот может играть одновременно на четырех столах, для каждого из которых выделена область, активируемая кликом мыши. Таким образом, мы можем выбрать, на каких именно столах будет играть бот.

Подготовка завершена, но запускать бота пока рано, для начала разберемся в начинке софтины. Логика работы бота станет понятна после просмотра сорца Unit3.cpp. Для экономии места похожие строчки кода мы заменим на «. ».

Статья в тему:  Какой должен быть пинг для онлайн игр

Для удобства хранения инфы создадим четыре объекта TABLE, хранящие данные по каждому столу:

Позиция игрока за столом и предыдущие карты выставляются по-дефолту:

table1.position = «1»;
.
table1.last_cards = «start»;
.

Забираем из боксов и присваиваем позиции для каждого стола:

Запускаем основной цикл. Задержка в начале цикла выставлена не случайно. Дело в том, что работа с нашими снимками занимает приличное количество времени. Данная задержка оптимальна для рабочей лошадки P4 2800MHZ, 1ГБ ОЗУ.

Далее следует проверка и прорисовка в окне бота ситуации на столах:

check_situation(table1.situation, table2.situation, table3.situation, table4.situation);
Form1->Label34->Caption = table1.situation.c_str();
Form1->Label35->Caption = table2.situation.c_str();
Form1->Label36->Caption = table3.situation.c_str();
Form1->Label37->Caption = table4.situation.c_str();

И, наконец, обработка каждого стола. Рассмотрим на примере первого. Для начала проверим, требуется ли от бота игра на этом столе. Это удобно, поскольку можно отключать бота от стола и играть вручную:

if (table_1_start == «go») <

Проверяем ситуацию — требуется ли от бота принятие каких-либо решений, или сейчас ходят другие игроки:

if (table1.situation==»check» ||
table1.situation == «call_0.10» ||
table1.situation==»call_0.05″ ||
table1.situation==»call_many» ||
table1.situation==»allin») <
Обнуляем параметры стола:
table1.combination = «—«;
table1.action = «—«;

Проверяем и прорисовываем карты игрока и карты на столе:

check_p_cards( 1, table1.p_card_1, table1.p_card_2);
Form1->Label26->Caption = table1.p_card_1.c_str();
Form1->Label27->Caption = table1.p_card_2.c_str();
check_t_cards( 1,table1.t_card_1,table1.t_card_2, table1.t_card_3,table1.t_card_4, table1.t_card_5);
Form1->Label11->Caption = table1.t_card_1.c_str();
Form1->Label12->Caption = table1.t_card_2.c_str();
Form1->Label13->Caption = table1.t_card_3.c_str();
Form1->Label14->Caption = table1.t_card_4.c_str();
Form1->Label15->Caption = table1.t_card_5.c_str();

Определяем место игрока в данной раздаче (большой блайнд/малый блайнд/etc):

check_position(1, table1);
Form1->Label62->Caption = table1.position.c_str();

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

В результате мы имеем конкретное решение в свойстве table1.action:

Form1->Label38->Caption = table1.action.c_str();
Form1->Label58->Caption = table1.combination.c_str();

Решение — это хорошо, но от нас клиентская программа покеррума все еще ждет действий. Действуем согласно решению:

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

Последние карты, с которыми мы играли, записываем в свойство стола.

table1.last_cards = table1.p_card_1 + table1.p_card_2;

На этом основной цикл заканчивается. Рассмотрим используемые функции более подробно. Создадим функцию для получения нужной нам картинки. В переменной outfile_name получим название файла, куда будет необходимо сохранить снимок. Здесь startX и startY — координаты верхней левой точки прямоугольника с высотой height и шириной width.

void PRINT_RECT_SVV (char* outfi le_name, int startX, int startY, int width, int height)
// Функция GetDC извлекает дескриптор
// дисплейного контекста устройства. 0 — экран
<
HDC hdc = GetDC(0);
if (hdc) //если дескриптор успешно получен
<
Graphics::TBitmap* bmp = new Graphics::TBitmap();
__try <
bmp->Width = width;
bmp->Height = height;
// Копиpует каpту бит из hdc в bmp, выполняя
// указанную pастpовую операцию, в данном случае SRCCOPY
BitBlt(bmp->Canvas->Handle, 0, 0, width, height, hdc, startX, startY, SRCCOPY);
bmp->SaveToFile(outfi le_name);
//сэйв BMP
>
__finally <
delete bmp; //освобождаем память
>
>
>

Статья в тему:  Почему скачет фпс в доте 2

Теперь, когда у нас есть возможность сохранять нужные нам снимки, возникает вопрос: как установить их идентичность? Можно попиксельно сравнивать растровые изображения, но это займет много процессорного времени. Мы возьмем за основу совпадения контрольных MD5-сумм у двух изображений, пути к которым передаются как входящие параметры, а факт совпадения будет отражаться в возвращаемом функцией значении.

Непосредственно для подсчета MD5-сумм будем использовать готовую функцию, заново изобретать велосипед ни к чему:

bool CHECK_MD5_SVV (char* ET_file, char* newfile)
<
md5wrapper md5;
// Получим хэш сравниваемого файла
std::string hash1 = md5.getHashFromFile(newfile);
// Получим хэш файла, содержащего шаблон
std::string hash2 = md5.getHashFromFile(ET_file);
// Сравним хэши
if (hash1==hash2) return true;
else return false;
>

Сравниваем контрольные суммы:

void check_this_card (char* new_path, string &card) <
// A
if (CHECK_MD5_SVV(«.ETET_A_p.bmp», new_path))

else if (CHECK_MD5_SVV(«.ETET_A_k.bmp», new_path))

else if (CHECK_MD5_SVV(«.ETET_A_ch.bmp», new_path))

else if (CHECK_MD5_SVV(«.ETET_A_b.bmp», new_path))

// К
.
else < card = "--"; >
>

Далее для наглядности кода (а значит, и для удобства работы) создадим функции проверки карт игрока и карт на столе. Принцип тот же — получаем снимок, сравниваем с шаблоном:

void check_p_cards(int table, string &card1, string &card2) <
if (table==1) <
//скринить первую карту игрока
PRINT_RECT_SVV(«.ETch_card1_t1.bmp», 37,150,12,22);
//скринить вторую карту игрока
PRINT_RECT_SVV(«.ETch_card2_t1.bmp», 55,150,12,22);
//распознать первую
check_this_card(«.ETch_card1_t1.bmp», card1);
//распознать вторую
check_this_card(«.ETch_card2_t1.bmp», card2);
>
if (table==2) <
.
>
void check_t_cards (int table, string &card1, string &card2, string &card3, string &card4, string &card5) <
if (table==1) <
PRINT_RECT_SVV(«.ETt1c1.bmp»,198,154,12,22);
PRINT_RECT_SVV(«.ETt1c2.bmp»,249,154,12,22);
PRINT_RECT_SVV(«.ETt1c3.bmp»,300,154,12,22);
PRINT_RECT_SVV(«.ETt1c4.bmp»,351,154,12,22);
PRINT_RECT_SVV(«.ETt1c5.bmp»,402,154,12,22);
//распознать
check_this_card(«.ETt1c1.bmp», card1);
check_this_card(«.ETt1c2.bmp», card2);
check_this_card(«.ETt1c3.bmp», card3);
check_this_card(«.ETt1c4.bmp», card4);
check_this_card(«.ETt1c5.bmp», card5);
>
if (table==2) <
.
>

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

bool is_a_table (int table_number) <
if (table_number==1) <
PRINT_RECT_SVV(«.ETis_a_table_1.bmp»,5,5,95,25);
if (CHECK_MD5_SVV(«.ETET_is_table.bmp», «.ETis_a_table_1.bmp»)) return true;
else return false;
>
if (table_number==2) <
.

Имитировать действия игрока будем программно, двигая курсор и кликая мышью. Естественно, не абы-куда, а по кнопочке, определяемой стратегией.

void mouse_click (int table_number, TABLE &this_table) <
.
if (this_table.action == «fold») <
SetCursorPos(x+380, y+410);
mouse_event(MOUSEEVENTF_LEFTDOWN, x+380, y+410,0,0);
Sleep(100);
mouse_event(MOUSEEVENTF_LEFTUP, x+380, y+410, 0, 0);
>
.
>

Как ты уже догадался, вся необходимая для игры на конкретном столе инфа хранится в экземпляре класса TABLE. Он предельно прост и откомментирован, поэтому оставим его на самостоятельное изучение. Также не будем рассматривать описание функций ведения статистики, определения ситуации на столе и позиции игрока.

Статья в тему:  Как отдалить камеру в доте 2 через консоль 2017

Теперь: mov ah,86h; mov dx,cx; int 15h .

«Бред!» — скажешь ты, и будешь абсолютно прав! Если ты читаешь эти строки – значит, ты прошел почти весь долгий путь создания бота и можешь сделать передышку :). Но расслабляться все еще рано, впереди нас ждет самый ответственный этап — анализ и разработка стратегии игры. Все начинающие игроки, как правило, изучают стратегию коротких стеков (shortstack). Рассмотрим ситуацию на префлопе (карты розданы игрокам, но на столе все еще пусто), когда у нас на руках «карманка» (пара карт одинакового ранга).

// Итак, удостоверяемся что на столе нет карт
if (this_table.t_card_1 == «—«) <
// А на руках у нас карты одинакового ранга:
if (card_rank(this_table.p_card_1)== card_rank(this_table.p_card_2)) <
//Если кто-то до нас повысил ставки
// или нас заставляют пойти ва-банк
if ((this_table.situation == «call_many») || (this_table.situation == «allin»)) <
//Если карманка выше восьмерок и это уже
// второй круг торговли, идем ва-банк (all in)
if ((card_rank(this_table.p_card_1)>=9) && (this_table.trade_cycle>=2)) // Если карманка начиная с десяток —
// не обращаем внимания на круг торговли
// и сразу идём all-in
else if (card_rank(this_table.p_card_1)>=10)
< this_table.action = "allin"; >
else < this_table.action = "fold"; >
//Если до нас никто внятно не рейзил
// (ставка была не больше размера большого блайнда)
> else if ((this_table.situation == «check») || (this_table.situation == «call_0.05»)||
(this_table.situation == «call_0.10»)) <
// Если мы находимся в ранней
// позиции (с нас начинаются торги)
.

Заметь, мы рассмотрели лишь одну ситуацию. Полные сорцы стратегии, как и всего бота, я заботливо приготовил для тебя на диске. Разработка стратегии является ключевым этапом создания бота. От ее качества напрямую зависит твой возможный доход. Мой вариант позволяет боту играть в плюс на низких лимитах, но это далеко не предел. Чем больше усилий ты вложишь в разработку собственной стратегии, тем больше нулей будет появляться на твоем счету :).

River: all-in

Тестируя бота на протяжении двух месяцев, я заметил одну интересную деталь: PartyPoker имеет защиту от снятия информации со стола посредством снимка изображения. Пару раз в месяц наши друзья (привет администрации пати-покера!) меняют изображения трех-четырех карт, в результате чего работоспособность бота нарушается. Проблема решается довольно просто: достаточно заменить старые шаблоны карт на новые.

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

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector