Добрался, наконец-то, все никак руки не доходили...
В общем, появилось немного свободного времени, задался вопросом написания бота, самого обычного, для поиска, выноса мобов и разбора...
Пошарил поиск, видел несколько незаконченных тем, но решил создать новую, потому что работает немного по другой структуре.
Хотелось бы выразить благодарность 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 и пр. а это дополнительные проверки...
По крайней мере не нашел ни описания, к ним, ни синтаксиса.