Главная » 2016 » Декабрь » 22 » Полезные скрипты для Clickermann - поиск картинки из нескольких возможных.
00:19
Полезные скрипты для Clickermann - поиск картинки из нескольких возможных.

Рассмотрим полезные коды для Clickermann, которые постоянно применяются в построении ботов-автокликеров. Первый необходимый код поиска картинки или пикселя на экране:

GETSCREEN

 if_picture_in(0,0,$_xmax,$_ymax,"img.bmp")// если картинка img.bmp есть

 MOVE($_return1+5,$_return2+5) // перемещаемся на картинку

 WAIT(1) // пауза 1с

 LCLICK($_return1+5,$_return2+5) // лкм на картинке

END_IF

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

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

            Теперь представим ,что в игре на нас надают несколько монстров (соперников) разного вида.  Ранее приведенный код можно переписать несколько раз подряд для поиска нескольких изображений:

GETSCREEN

 if_picture_in(0,0,$_xmax,$_ymax,"img1.bmp")// если картинка img.bmp есть

 MOVE($_return1+5,$_return2+5) // перемещаемся на картинку

 WAITMC(10) // пауза 10mс

 LCLICK($_return1+5,$_return2+5) // лкм на картинке

END_IF

GETSCREEN

 if_picture_in(0,0,$_xmax,$_ymax,"img2.bmp")// если картинка img.bmp есть

 MOVE($_return1+5,$_return2+5) // перемещаемся на картинку

 WAITMC(10) // пауза 10mс

 LCLICK($_return1+5,$_return2+5) // лкм на картинке

END_IF

GETSCREEN

 if_picture_in(0,0,$_xmax,$_ymax,"img3.bmp")// если картинка img.bmp есть

 MOVE($_return1+5,$_return2+5) // перемещаемся на картинку

 WAITMC(10) // пауза 10mс

 LCLICK($_return1+5,$_return2+5) // лкм на картинке

END_IF

Код будет работать, но все ( включая пионеров и пенсионеров) кто мало-  мальски знаком с азами программирования будут крутить носом увидев такую запись, поэтому предлагаю записать тоже самое «по взрослому», используя цикл for (для):

// создаем список и передаём в него изображения

$img[0]=”img1.bmp”

$img[1]=”img2.bmp”

$img[2]=”img3.bmp”

for($i=0,$i<3)// для переменной i=0 пока  i<3

if_picture_in(0,0,$_xmax,$_ymax,$img[i])// если картинка из списка есть

MOVE($_return1+5,$_return2+5)

WAITMS(10)

 LCLICK($_return1+5,$_return2+5)

END_IF// конец условия если

END_CYC// конец цикла для

Первое что мы делаем создаем список и элементам списка присваиваем ссылки на изображения противников.

Затем с помощью цикла for проверяем присутствие на экране каждого изображения противника (если есть – перемещение и клик на нем)

И обязательно заканчиваем условие if и цикл for.

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

Теперь немного простого анализа как изменятся изображения соперников в трех мерных играх.

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

Мои советы по решению подобных задач:

1.Если возможно, то находим уникальный цвет принадлежащий нашему противнику и ищем не картинку, а пиксель с заданным цветом.

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

 

GETSCREEN

if_pixel_in(0,INT(0+$_ymax/4), $_xmax,INT($_ymax/2),4373494)        

 MOVE($_return1+5,$_return2+5)

 WAITMS(50)

 LCLICK($_return1+5,$_return2+5)

END_IF

 

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

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

Создаем три списка (каждый список соответствует определенной дистанции) и вводим изображения каждого противника:

 $fut1[0]=”vrag1_1.bmp”//список дистанции 1 –враг1

$fut1[1]=”vrag2_1.bmp” //список дистанции 1 –враг2

$fut1[2]=”vrag3_1.bmp”

$fut2[0]=”vrag1_2.bmp” //список дистанции 2 –враг1

$fut2[1]=”vrag2_2.bmp”

$fut2[2]=”vrag3_2.bmp”

$fut3[0]=”vrag1_3.bmp”// список дистанции 3 –враг1

 

$fut3[1]=”vrag2_3.bmp”

$fut1[0]=”vrag3_3.bmp”

 

SUB(poisk, x1,$y1,$x2,$y2,$img) // подпрограмма поиска и клика

for($i=0,$i<3)// для переменной i=0 пока  i<3

if_picture_in($x1,$y1,$x2,$y2,$img[i])// если картинка из списка есть

MOVE($_return1+5,$_return2+5)

WAITMS(10)

 LCLICK($_return1+5,$_return2+5)

END_IF// конец условия если

END_CYC// конец цикла для

poisk(0,100,$_xmax,200,$fut1) //вызов поиска в заданных координатах списка

poisk(0,200,$_xmax,300,$fut2)

poisk(0,300,$_xmax,400,$fut3)

Категория: Автокликер Clickermann | Просмотров: 7264 | Добавил: kuzma | Рейтинг: 2.5/4
Всего комментариев: 2
avatar
1 Николаевич • 19:49, 08.02.2017
здравствуйте а как быть если для каждой картинке надо выполнить разные функции например ”img1.bmp” нажать клавишу KEYPRESS(#L) а для ”img2.bmp” KEYPRESS(#S)
avatar
2 adm38rus • 17:57, 14.04.2018
А если есть такая задача, два блока программ, первая клик по двигающемуся куску картинки (их от трех до семи где то), а второй блок это появление определенного куска картинки, но клики в указанные на карте точки и желательно выполнение задач или точнее запуск блоков был из файлов, так как второй блок очень длинный, а бесконечно зациклинное чтение кодов может скрашить цель кликера.
avatar

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

- автор идеи Кузьма Кузин

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

-совместная работа с группой молодых программистов

Срипты для автоматического заработка на SEO сайтах.

- для всех пользователей всё по цене в 1 EUR