|
Игровой бот Небеса: уникальная игра! |
|
|
dimоn |
10.2.2015, 17:53
|
Novice
Сообщений: 97
Регистрация: 24.10.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.079
Возраст: 27
|
Добрался, наконец-то, все никак руки не доходили... В общем, появилось немного свободного времени, задался вопросом написания бота, самого обычного, для поиска, выноса мобов и разбора... Пошарил поиск, видел несколько незаконченных тем, но решил создать новую, потому что работает немного по другой структуре. Хотелось бы выразить благодарность DarkMaster'у Все-таки, не каждый человек, будет сидеть на каком-то форуме, что бы помочь народу с написанием какой-то, нужной им, лабуды, с целью их умственного развития... Честно скажу, времени ушло много, но в основном это зависело от наличия свободного и в тот или иной момент, желания. Не обошлось и без блок-схемы. Только так смог собрать все посещающие голову мысли в единое целое. (IMG: http://clip2net.com/clip/m359722/2d2fd-clip-82kb.jpg) Итак, значит бот построен по следующей структуре: (IMG: http://clip2net.com/clip/m359722/3c33e-clip-25kb.jpg) Блок поиска и нападения - это все индивидуально, в зависимости от хар-к и направленности. Блок дропа, соответственно, от блока поиска, то есть от задач. Хотелось бы разобрать блок боя. Основными задачами были возможность самостоятельной безконтрольной игры, ну и, конечно же, не засветиться с ботом, то есть, к минимуму свести холостые и однотипные"тыки" ... Исходный код set #h workwindow set workwindow #h :boy while_not (1147, 456 72864) or (1154, 454 778406) while_not 840, 204 936748 wait 2000 if 1190, 474 2249471 goto boy_okonchen end_if end_while if 658, 214 16763649 if (731, 612 16777215 ) or ( 782, 612 16711665 ) if 731, 612 16777215 left 728, 615 wait 1000 + random (2500) set #x 841 + random (210) set #y 263 + random (200) left #x #y goto boy end_if if 782, 612 16711665 left 784, 613 wait 1000 + random (2500) set #x 841 + random (210) set #y 263 + random (200) left #x #y goto boy end_if else if_not (733, 607 15592941) and ( 787, 615 8928750) start_script 2 stop_script end_if end_if else if 989, 616 7484429 wait 1000 left 1007, 616 wait 1000 left 919, 644 wait 1000 else start_script 2 stop_script end_if end_if end_while :boy_okonchen If 1175, 455 92751 left 964, 516 wait 3500 left 788, 515 wait 1500 left 1000, 530 wait 1000 goto boy end_if
start_script 3 pause_script resume_script 0
stop_script На момент написания отдельных элементов стоял образ архангела, поэтому, чтобы не переделывать, в конечной версии осталось так же. Следующей задачей был алгоритм хода, на случай, если ни квадрата, ни креста нет. На самом деле, не придумал ничего проще, чем сходить по подсказке... Исходный код // (межстрочный интервал 10) set #h workwindow set workwindow #h
while_not #x1 > 0 set $l findimage (792, 210 1094, 517 (\image\стрелки\лево.bmp)%lv 2 20 1 5) if ($l > 0) set #x1 %lv[1 1] set #y1 %lv[1 2] set #x2 #x1 + 40 set #y2 #y1 end_if
set $v findimage (792, 210 1094, 517 (\image\стрелки\верх.bmp)%up 2 21 1 5) if ($v > 0) set #x1 %up[1 1] set #y1 %up[1 2] set #x2 #x1 set #y2 #y1 + 40 end_if if_not 840, 204 936748 goto end end_if end_while wait 1000 left #x1 #y1 wait 1000 + random (1500) left #x2 #y2 left #x2 #y2 wait 1500 :end start_script 1 stop_script
лево.bmp ( 3,33 килобайт )
Кол-во скачиваний: 8479
верх.bmp ( 2,27 килобайт )
Кол-во скачиваний: 8120Долго мучался со стрелками, их вращением и считыванием именно той, которой нужно. Так вроде работает. Скрипт_0 - поиск, нападение, 1 - бой, 2 - ход, 3 - дроп, разбор, с него уходим "resume_script 1" Народ, скрипт сырой, если появятся какие-то правки, замечания, изменения, не будьте единоличниками, выкладывайте. Так же, выкладываю все на безвозмездной основе, попытки продать, как бота - это, как минимум свинство и того не стоит. Что не понравилось, с сохранением у пилота, какая-то беда, и в настройках указал, сохранять при выходе: то, писал что-то, возьмет, не сохранит, то возьмет заменит чем-нибудь.. В общем беда. Так же не понравилось и добавило объема - в пилоте, почему то, нет ф-ции отрицания... т.е. есть if_not, while_not, но нет not_and, not_or и пр. а это дополнительные проверки... По крайней мере не нашел ни описания, к ним, ни синтаксиса.
Прикрепленные файлы
бой.txt ( 1,63 килобайт )
Кол-во скачиваний: 40813
ход.txt ( 697 байт )
Кол-во скачиваний: 6469
|
|
|
|
|
|
Ответов
guetajazz |
28.6.2015, 21:40
|
Registred
Сообщений: 5
Регистрация: 5.5.2014 Группа: Пользователи Наличность: 0
Пользователь №: 16.820
Возраст: 21
|
Тема близка и интересна))) Сам играю и часто пользуюсь пилотом. Но,т.к. я чайник,то и скрипты соответствующие у меня) Было бы хорошо,если бы автор указывал,что именно делает пилот при той или иной команде. Использую пилот для арены,куча лишних тыков,клики в одну и ту же область от не знания большинства команд. Вот пример скрипта- В чем мои косяки ? подскажите Код ___________________________________________________________________________ // проверка на наличие сундука в луте //
set $boss10 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\сундук2.bmp) %mob 2 50 1) if $boss10 > 0 wait 300 left 875, 447 wait 1200 left 939, 462 wait 1200 end_if
// собираем или продаем лут // set $boss4 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\лоскут.bmp) %mob 2 50 1) set $boss5 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\развед.bmp) %mob 2 50 1) set $boss6 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\страж.bmp) %mob 2 50 1) set $boss44 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец1.bmp) %mob 2 50 1) set $boss55 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец2.bmp) %mob 2 50 1) set $boss66 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец3.bmp) %mob 2 50 1) set $boss77 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец4.bmp) %mob 2 50 1) set $boss88 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец5.bmp) %mob 2 50 1) set $boss99 findimage (850, 420 907, 481 (C:\Users\123\Desktop\12\рец6.bmp) %mob 2 50 1) if $boss4 > 0 or $boss5 > 0 or $boss6 > 0 or $boss44 > 0 or $boss55 > 0 or $boss66 > 0 or $boss77 > 0 or $boss88 > 0 or $boss99 > 0 wait 300 left 875, 447 wait 1200 left 957, 447 left 957, 449 wait 1200 else left 912, 516 wait 200 left 972, 496 wait 200 left 1254, 521 end_if
// бьем моба // set $boss4 findimage (829, 180 902, 235 (C:\Users\123\Desktop\12\я.bmp) %mob 2 50 1) // бьем моба // if $boss4 > 0 wait 400 left 694, 662 wait 200 left 1005, 621 wait 300 left 689, 666 wait 300 left 797, 613 wait 300 left 907, 349 wait 300 left 687, 610 wait 200 left 763, 615 wait 200 left 940, 376 wait 2s end_if left 1222, 551
Сообщение отредактировал DarkMaster - 28.6.2015, 22:25
|
|
|
|
dimоn |
29.6.2015, 19:21
|
Novice
Сообщений: 97
Регистрация: 24.10.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.079
Возраст: 27
|
Цитата(guetajazz @ 28.6.2015, 21:40) Было бы хорошо,если бы автор указывал,что именно делает пилот при той или иной команде.
Что именно не понятно? Все или конкретный кусок? По скриптам, есть мнение, на мой взгляд довольно правдивое, что статичные клики, сервер без проблем расценит, как работу сторонней программы. То есть, если поставить курсор в произвольную точку, при нажатии на ктрл+а, программа выдаст текущую позицию. А теперь отведи мышку и поставь на то же место. Какова вероятность того, что при нажатии на ктрл+а, курсор будет находиться на том же пикселе? В общем координаты клика постоянно должны отличаться. При чем, недавно проверили, поиск по картинкам тоже дает координаты, близкие к статичным. Цитата(DarkMaster @ 28.6.2015, 22:40) Все wait'ы выкинуть заменив на: while_not x y color // ну либо на while, смотря что детектить. wait 10 end_while
Вот этот момент довольно скользкий. Не вопрос, это быстро, просто, понятно, но не практично и не эффективно. Со временем перестает работать. При чем, по-разому, может через день, через неделю, а может и через час. Все поиски, по максимуму, лучше всего реализовать поиском по картинкам. имхо. Цитата Все координаты настоятельно рекомендую выносить в шапку и давать им подробные комментарии. Если придется что-то править, то вы одуреете потом. Вот это, в точку!!!
|
|
|
|
Сообщений в этой теме
dimоn Игровой бот Небеса: уникальная игра! 10.2.2015, 17:53 DarkMaster
это я так понимаю подразумевается отрицание услов... 10.2.2015, 18:09 dimоn
[code] !(3 > 4)
истинность второ... 10.2.2015, 18:27 dimоn Тишина, гробовая.. Навязывается вопрос, это вообще... 9.4.2015, 17:21 cirus
Может кому-то и пригодится когда-нибудь.
Точка я... 10.4.2015, 2:45 dimоn
Точка явно лишняя.
Почему? Что в ней не так? 10.4.2015, 11:09 dimоn
Почему? Что в ней не так?
А, я понял..
Нет, ... 10.4.2015, 11:30 DarkMaster
Пилот скачивают сотни тысяч раз. Сколько людей пр... 10.4.2015, 8:01 cirus Так смысл точки в условии в чём?
if $v >.... 10.4.2015, 12:03 dimоn Не знаю, куда написать, тему создавать, смысла, ос... 16.5.2015, 5:30 cirus
Нельзя. 16.5.2015, 11:35 dimоn Ок, а если сделать скрин и его стрельнуть два раза... 16.5.2015, 16:24 DarkMaster столько же + время на скрин. 16.5.2015, 16:30 dimоn Такой вопрос, на сколько и в какую сторону изменяе... 24.5.2015, 13:18 DarkMaster Откуда в коде два адреса? Откуда после массива адр... 24.5.2015, 13:58 dimоn Начал разбираться с командами, и в описании к find... 24.5.2015, 14:17 DarkMaster
Вы можете пояснить, как адрес в скобках может явл... 24.5.2015, 14:18 dimоn
Вы можете пояснить, как адрес в скобках может явл... 24.5.2015, 14:45 dimоn
Что именно? Вы хотите искать в изображении на вин... 24.5.2015, 16:25 DarkMaster
Исходя из синтаксиса там написано "handle... 24.5.2015, 16:26 dimоn Исходя из синтаксиса там написано "handle... 24.5.2015, 18:19 DarkMaster
Я цитирую кусок про принтскрин и пишу про него, в... 24.5.2015, 18:59 dimоn Ладно, спорить можно было бы бесконечно :duel: , н... 24.5.2015, 19:14 dimоn
Я цитирую кусок про принтскрин и пишу про него, в... 24.5.2015, 21:42 DarkMaster
Это не более чем схожие либо связанные по смыслу/... 24.5.2015, 22:10 dimоn На самом деле, тоже не удивлюсь, если это просто с... 24.5.2015, 22:39 dimоn Да и фиг бы с ними, с показателями, так, для общег... 24.5.2015, 22:50 DarkMaster В частности вы нашли три изображения "verkh... 24.5.2015, 23:00 dimоn
В частности вы нашли три изображения "verkh... 25.5.2015, 14:31 veiron А зачем ждать подсказки игры и искать ход по стрел... 25.5.2015, 17:49 WKnight А чего там вообще workwindow в логе делает? 25.5.2015, 11:03 DarkMaster
Ворквиндов - это номер окна. Это не процент совпа... 25.5.2015, 18:54 dimоn
А зачем ждать подсказки игры и искать ход по стре... 25.5.2015, 21:46 veiron
Почитай, пожалуйста тему сначала...
Мне не нужны ... 25.5.2015, 23:32 dimоn
Да, я почитал тему.
Вот у тебя выложен скрипт боя... 26.5.2015, 3:40 veiron
В чем же тогда проблема? Где его можно посмотреть... 28.5.2015, 10:41 dimоn Я понят твою мысль, уж эти моменты, действительно,... 29.5.2015, 3:33 veiron
Но бой состоит не из одного хода.
У меня просто ... 29.5.2015, 10:20 dimоn
У меня просто статы позволяют обходиться с одним ... 30.5.2015, 14:17 dimоn Было дело, DarkMaster посоветовал проверить скрипт... 18.6.2015, 14:19 DarkMaster Я надеюсь возвращением к этой теме стал не бан? 18.6.2015, 15:30 dimоn Нет, по крайней мере у меня все норм.
Хотя, не у в... 19.6.2015, 0:36 dimоn
Использую пилот для арены,куча лишних тыков,клик... 29.6.2015, 21:59 DarkMaster Первое в чем косяки - это читаемость скрипта:
1) В... 28.6.2015, 22:40 guetajazz В общем- да! Я и не спорю. Сказал об этом сраз... 29.6.2015, 23:46 dimоn Основные команды, которые для этого могут подойти,... 30.6.2015, 0:17 DarkMaster
С какого перепугу? Это очень практично и очень эф... 30.6.2015, 3:50 dimоn Я, наверное, что-то не так понял..
Можно поподробн... 30.6.2015, 4:53 DarkMaster Например, нам необходимо кликнуть по предмету и вы... 30.6.2015, 5:08 veiron
left 1 1
while_not x y c // Пока не появится меню... 30.6.2015, 8:41 dimоn
А если в этот момент произошел разрыв с сервером,... 30.6.2015, 14:27 veiron
Значит while_not заменяется на while
Не вариант,... 30.6.2015, 18:05 cirus
Для этого в условие добавляется таймер. 30.6.2015, 10:59 veiron
Для этого в условие добавляется таймер.
while_no... 30.6.2015, 11:14 DarkMaster
И чем это отличается от wait'ов которые в сам... 30.6.2015, 18:33 veiron
То делается подпрограмма и в нее передается набор... 30.6.2015, 18:56 dimоn
И чем это отличается от wait'ов которые в сам... 1.7.2015, 9:58 DarkMaster Подпрограмма которая выполняет функцию ожидания и ... 30.6.2015, 20:16 DarkMaster
Т.е. у вас на 1 строку приходится 1-3 строки wait... 1.7.2015, 10:27 dimоn
Т.е. у вас на 1 строку приходится 1-3 строки wait... 1.7.2015, 13:27 DarkMaster
Вам виднее. Из того, что вы написали выше (размер... 1.7.2015, 14:55 dimоn в 4 раза он уменьшится, если использовать вариант ... 2.7.2015, 1:25 DarkMaster
В скрипте нет ни одной строки кроме кликов что ли... 2.7.2015, 7:50 dimоn
В скрипте нет ни одной строки кроме кликов что ли... 2.7.2015, 10:45 dimоn
// Примитивная подпрограмма на ожидание будет 5 с... 2.7.2015, 10:55 DarkMaster
Это уже не клик, а условие. Соответственно оно по... 2.7.2015, 11:01 dimоn
Это уже не клик, а условие. Соответственно оно п... 2.7.2015, 11:52 DarkMaster
Цепляюсь и цепляюсь оправданно. Потому, что ваши ... 2.7.2015, 12:07 dimоn
Кстати можно и вовсе создать подпрограмму-комбайн... 2.7.2015, 14:08 DarkMaster
Можно и так, но я бы просто задал некоторую точку... 2.7.2015, 14:40 sefi Прочитал данную дискуссию ... увидел, что автор де... 14.7.2015, 9:29 dimоn Ну да, понял не особо...
То есть, Вы хотите сказат... 14.7.2015, 13:01 DarkMaster
В этом есть смысл, но в плане скриптов и объемных... 14.7.2015, 19:39 Triniti Всем утро/день/вечер/другое (нужное подчеркнуть) :... 26.7.2015, 23:05 dimоn
Всем утро/день/вечер/[u]другое (нужное подчеркнут... 27.7.2015, 0:33 Triniti
А на лог возможно взглянуть? //к налоговой инспек... 27.7.2015, 0:50 dimоn
Лог поиска на 8.1 здесь
Лог поиска на (виртуалке)... 27.7.2015, 1:36 Triniti
Разрешение экрана на 8-ке?
У тебя стоит поиск на... 27.7.2015, 1:48 dimоn
И там (виртуалка) и тут 1920х1080. Поиск же идёт ... 27.7.2015, 1:59 cirus
Причин может быть множество. Зависит от того в ка... 27.7.2015, 0:10 Triniti
Причин может быть множество. Зависит от того в ка... 27.7.2015, 0:25 DarkMaster
Выкинуть к чертям собачьим ВСЕ goto, кроме зацикл... 27.7.2015, 0:25 DarkMaster А зачем вы привязываетесь к конейнеру? Это фактиче... 27.7.2015, 0:29 Triniti
А зачем вы привязываетесь к конейнеру?
Вы уже гд... 27.7.2015, 0:35 DarkMaster у вас версия браузера которой пара лет? Вообще вы ... 27.7.2015, 0:48 DarkMaster
опечатался, исправил. frompoint. Справка должна с... 27.7.2015, 0:59 Triniti
опечатался, исправил. frompoint. Справка должна с... 27.7.2015, 1:06 DarkMaster Ну это олдстайл. Возможно хром отказался от идеи и... 27.7.2015, 1:26 Triniti
Вообще даже если все это действительно так, то те... 27.7.2015, 1:34 DarkMaster
Если работает по моему скрипту, то с поинтом разв... 27.7.2015, 1:40 DarkMaster
Процессы пофиг. Главное хендлы. Хэндл в вашем слу... 27.7.2015, 1:56 Triniti
Процессы пофиг. Главное хендлы. Хэндл в вашем слу... 27.7.2015, 1:59 dimоn
В процессе флэша 200 600 - избыточны, всё что нуж... 27.7.2015, 2:12 dimоn Если поставишь вот эту галочку
http://c2n.me/iXrFa... 27.7.2015, 2:05 DarkMaster
Остался не отвеченным вопрос cirus'a, о том в... 27.7.2015, 2:08 Triniti
Остался не отвеченным вопрос cirus'a, о том в... 27.7.2015, 14:31 dimоn
а у меня правый нижний угол (избранные) это 805,... 27.7.2015, 15:24 dimоn И еще...
http://c2n.me/3lh8Fqv.png 27.7.2015, 2:30
2 страниц 1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|