legro0303 |
Отправлено: 17 Апреля, 2023 - 21:20:33
|
Наблюдатель
Покинул форум
Сообщений всего: 36
Дата рег-ции: Июль 2020
Репутация: 0
|
Здравствуйте. Хотел бы узнать у более опытных людей идеи для написания бота, а именно какие подходы выбирать для решения тех или иных задач.
Вводные данные:
1. Корейская MMORPG, пиратский сервер, защищена от запуска на виртуальной машине, есть защита от эмуляции кликов (Последний пункт вроде как решается AvtoK)
2. В случайное время появляется капча(окно) с набором из 4 цифр, каждый набор - отдельная кнопка, всего кнопок 4, требуется нажать ту кнопку, цифры которой соответствуют описанию в окне, в противном случае система примет вас за бота и игра будет закрыта. Время на нажатие требуемой кнопки - 30 сек.
3. Перемещение в данжах (а именно в комнатах). Игра имеет XYZ координаты, т.е. нужно как то понимать, где лестницы/уступы и прочее, чтобы персонаж в них не застрял. Из того, что может помочь, в игре визуально можно включить XYZ координаты и видеть как они изменяются, ничего умнее считывания координат в реальном времени и нажатию кнопок WASD для перемещения до захардкоженной координаты (читай следующей комнаты) не придумал. Но это получается динамический фон, то есть распознование координат будет сильно усложнено.
4. Проверка инвентаря на заполненность. В инвентаре есть 5 вкладок, по 30 ячеек каждая. Необходимо проверять каждую ячейку (т.к. в игре есть случайные события, т.е. ценный предмет может упасть с любого монстра с редким шансом) и определять какой предмет можно продать, а какой нельзя. Также требуется определять когда инвентарь заполнен, чтобы запускать скрипт перемещения в город и продажи предметов.
5. Фарм монстров. В комнатах есть много монстров, требуется собирать их "в кучки" (а не бить по одному как простые кликеры-болванчики) и использовать способности, наносящие массовый урон.
Резюмирую, под каждую из 5 пунктов не придумал каких-то нормальных подходов и не выявил оптимальных инструментов в киборе для работы с подобными задачами. Подскажите, что лучше использовать для решения вышеуказанных задач, какие способы решения применять, в какую сторону "глядеть" |
|
|
legro0303 |
Отправлено: 17 Апреля, 2023 - 22:21:09
|
Наблюдатель
Покинул форум
Сообщений всего: 36
Дата рег-ции: Июль 2020
Репутация: 0
|
Zireael пишет: 1. Использовать ps/2 мышь/клаву, либо ардуино.
2. Если цифры не сильно отличаются и не накладываются друг на друга, то функций readtext распознать их и нажать. Если это сложная капча, то использовать сервисы для распознавания.
3. Таким не занимался, так что не знаю.
4. Обычно решается через findimage, ищется картинка пустой ячейки, если картинка не найдена, значит ячейка заполнена.
5. Сложно что-то сказать не зная как это выглядит. В любом случае это не простая задача.
По 2 пункту, проблема в том, что неизвестно, когда капча может возникнуть, как сделать так, чтобы экран мониторился каждые n-секунд на её наличие ? |
|
|
Ilya001 |
Отправлено: 17 Апреля, 2023 - 22:39:02
|
Эксперт
Покинул форум
Сообщений всего: 458
Дата рег-ции: Май 2020
Репутация: 23
|
legro0303 пишет: Zireael пишет: 1. Использовать ps/2 мышь/клаву, либо ардуино.
2. Если цифры не сильно отличаются и не накладываются друг на друга, то функций readtext распознать их и нажать. Если это сложная капча, то использовать сервисы для распознавания.
3. Таким не занимался, так что не знаю.
4. Обычно решается через findimage, ищется картинка пустой ячейки, если картинка не найдена, значит ячейка заполнена.
5. Сложно что-то сказать не зная как это выглядит. В любом случае это не простая задача.
По 2 пункту, проблема в том, что неизвестно, когда капча может возникнуть, как сделать так, чтобы экран мониторился каждые n-секунд на её наличие ?
Использовать таймер https://kibor-bot.com/forum/topic.php?forum=1&topic=57, для поиска капчи использовать findimage.
Про 3 и 5 пункт, нужно лазить по памяти игры, если получится то можно оттуда вытянуть координаты игрока и не только, но для этого нужно иметь опыт и знания. Данный метод сложный.(Отредактировано автором: 17 Апреля, 2023 - 22:42:24) |
|
|
legro0303 |
Отправлено: 18 Апреля, 2023 - 11:13:38
|
Наблюдатель
Покинул форум
Сообщений всего: 36
Дата рег-ции: Июль 2020
Репутация: 0
|
Ilya001 пишет: legro0303 пишет: Zireael пишет: 1. Использовать ps/2 мышь/клаву, либо ардуино.
2. Если цифры не сильно отличаются и не накладываются друг на друга, то функций readtext распознать их и нажать. Если это сложная капча, то использовать сервисы для распознавания.
3. Таким не занимался, так что не знаю.
4. Обычно решается через findimage, ищется картинка пустой ячейки, если картинка не найдена, значит ячейка заполнена.
5. Сложно что-то сказать не зная как это выглядит. В любом случае это не простая задача.
По 2 пункту, проблема в том, что неизвестно, когда капча может возникнуть, как сделать так, чтобы экран мониторился каждые n-секунд на её наличие ?
Использовать таймер https://kibor-bot.com/forum/topic.php?forum=1&topic=57, для поиска капчи использовать findimage.
Про 3 и 5 пункт, нужно лазить по памяти игры, если получится то можно оттуда вытянуть координаты игрока и не только, но для этого нужно иметь опыт и знания. Данный метод сложный.
Координаты игрока есть в самом игровом интерфейсе, тут больше вопрос к тому, как реализовать перемещение. Допустим я знаю, что персонаж сейчас в X=1, Y=1, Z=1, и нужно бежать прямо до X=100, а потом направо до Y = 50. В голову приходить только простой скрипт который зажимает нужную клавишу пока координата не изменится, но координату нужно будет считывать+сравнивать буквально каждую секунду, что мне кажется не самым оптимальным вариантом, наверняка есть что то умнее чем реализация в лоб. |
|
|
|