Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: lanser285 on October 30, 2013, 10:39:11 AM

Title: поиск по изображению
Post by: lanser285 on October 30, 2013, 10:39:11 AM
Дело такое, хочется написать более менее универсальный скрипт, для игры. Делаю через поиск изображений, у меня все работает, а на другом компе нет, так же не работает когда в полноэкранный режим ее запускаеш. Собственно вопрос: проблема в разрешении экрана? и как это можно исправить?
Title: Re: поиск по изображению
Post by: Vint on October 30, 2013, 12:03:24 PM
Дело такое, хочется написать более менее универсальный скрипт, для игры. Делаю через поиск изображений, у меня все работает, а на другом компе нет. Собственно вопрос: проблема в разрешении экрана? и как это можно исправить?
Покажи пример твоего скрипта.
Title: Re: поиск по изображению
Post by: lanser285 on October 30, 2013, 12:13:19 PM
Дело такое, хочется написать более менее универсальный скрипт, для игры. Делаю через поиск изображений, у меня все работает, а на другом компе нет. Собственно вопрос: проблема в разрешении экрана? и как это можно исправить?
Покажи пример твоего скрипта.

GETSCREEN
IF_PICTURE_IN (0,0,$_xmax,$_ymax,"mob.bmp")
   WAITMS(1000)
   LCLICK($_return1+10, $_return2+10)
END_IF
GETSCREEN
IF_PICTURE_IN (0,0,$_xmax,$_ymax,"mob1.bmp")
   WAITMS(1000)
   LCLICK($_return1+10, $_return2+10)
END_IF
wait (3)

//вкладка кадавра
GETSCREEN
IF_PICTURE_IN (0,0,$_xmax,$_ymax,"kadavr.bmp")
   WAITMS(1000)
   LCLICK($_return1+10, $_return2+10)
END_IF

вот небольшой кусочек, все в таком же стиле
Title: Re: поиск по изображению
Post by: Vint on October 30, 2013, 12:33:48 PM
И где здесь что нибудь зависящее от разрешения?
Проверяй работу кликера на второй машине. Отключение UAC и тому подобное.
А так же наличие всех картинок скрипта в нужном месте.

P.S. Задержку лучше делать после клика, а не до. Поиск - сразу клик, а то убежит  :)
Title: Re: поиск по изображению
Post by: lanser285 on October 31, 2013, 12:13:34 PM
Ну смотри, я скрин делаю на своем мониторе ведь, прога сравнивает все ок, при переносе на другую систему моих картинок, она не может ее найти, ибо там разрешение другое. такое может быть?
Title: Re: поиск по изображению
Post by: Vint on October 31, 2013, 02:19:38 PM
Ну смотри, я скрин делаю на своем мониторе ведь, прога сравнивает все ок, при переносе на другую систему моих картинок, она не может ее найти, ибо там разрешение другое. такое может быть?
Нет. Обычно картинки от разрешения не "тянутся".

Качество цветопередачи в системах должно быть одинаковое.
Если приложение отдельное типа игры, настройки параметров рендеринга/качества должны быть одинаковые.
Стараться не использовать картинки в которые попадают системные шрифты и шрифты во FLASH приложениях, т.к. могут стоять разные параметры сглаживания шрифтов в системе.
Title: Re: поиск по изображению
Post by: lanser285 on October 31, 2013, 02:56:11 PM
хм, это объясняет данную проблему, примного благодарен, а как выкрутиться в таком случае, если на картинке имеются шрифты?
Title: Re: поиск по изображению
Post by: Vint on October 31, 2013, 05:13:35 PM
хм, это объясняет данную проблему, примного благодарен, а как выкрутиться в таком случае, если на картинке имеются шрифты?
С этим сложно. Проще переделать картинки под шрифт с другим сглаживанием.
Или привести все шрифты к одному виду, лучше без сглаживания.
Title: Re: поиск по изображению
Post by: lanser285 on October 31, 2013, 07:33:15 PM
а вот смотри, в середине кнопки, есть текст, его нельзя в редакторе затереть и сделать поиск без этого участка? даже незнаю как более подробно объяснить...вот приложил картинку, в середине потереть надпись или исключить это место из поиска?
Title: Re: поиск по изображению
Post by: rev41k on November 12, 2013, 10:17:09 PM
Всем привет, помогите начинающему кто может. Может я не в тему , но простите... Целый день мучаюсь и ничего не выходит. Есть браузерная игра, я сделал скрин моба, сохранил *.bmp , но бот почему-то не находит картинку. Сразу скажу у мобов анимация и они находятся постоянно в подвижном состоянии.

getscreen
IF_PICTURE_IN (296,105,1070,430,"ms4.bmp")
lclick($_return1, $return2)
else
print("no bat :(")
end_if

может размер картинки очень маленький , но пробовал и с большой и не выходит
Вот не могу понять , что здесь не так!? Помогите .... Заранее спасибо!!!
Title: Re: поиск по изображению
Post by: Oraven on November 13, 2013, 12:14:43 AM
Ну а что ж ты хотел от анимации??

Вряд ли ты найдешь моба по картинке тут скорее по пикселу искать надо.

Вот есть програмка для поиска уникальных пикселов Unique Colors Search
http://crapware.aidf.org/forum/index.php?topic=42.msg572#msg572
Title: Re: поиск по изображению
Post by: rev41k on November 13, 2013, 12:06:12 PM
Пробовал поиск и по пикселям , в конце указывал около 6-7 цветов через запятую, но не находил ничего.

Спасибо , попробую через программку найти уникальные цвета пикселей. Отпишусь ;) .
Title: Re: поиск по изображению
Post by: lanser285 on November 13, 2013, 05:52:35 PM
Всем привет, помогите начинающему кто может. Может я не в тему , но простите... Целый день мучаюсь и ничего не выходит. Есть браузерная игра, я сделал скрин моба, сохранил *.bmp , но бот почему-то не находит картинку. Сразу скажу у мобов анимация и они находятся постоянно в подвижном состоянии.

getscreen
IF_PICTURE_IN (296,105,1070,430,"ms4.bmp")
lclick($_return1, $return2)
else
print("no bat :(")
end_if

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

Размер картинки тут не причем, бывает так, что маленькая даже лучше.
есть в твоей игре в настройках убрать анимацию? если да то сними ее. как на счет горячих клавиш для выбора мобов? что за игра, могу глянуть оценить ситуацию.
Title: Re: поиск по изображению
Post by: rev41k on November 13, 2013, 10:57:22 PM
Анимацию (монстров на локации) убрать нельзя к сожалению (((
Техномагия - www.tmgame.ru

ПыСы Unique Colors Search не помог... (может проблема в моей ОС была (7 х64) , буду пробовать через виртуалки на ХР) у меня по моему скрипту курсор прыгает на какую-нибудь вкладку браузера и тупа тычен на нее, хоть она вообще не входит в мой заданный диапазон !
Title: Re: поиск по изображению
Post by: Johnny on November 14, 2013, 05:27:19 AM
в ОС здесь проблем нет, обычная игровая ситуация. подбирай картинки, пользуй цветокоррекцию.
Title: Re: поиск по изображению
Post by: lanser285 on November 14, 2013, 10:35:32 AM
Анимацию (монстров на локации) убрать нельзя к сожалению (((
Техномагия - www.tmgame.ru

ПыСы Unique Colors Search не помог... (может проблема в моей ОС была (7 х64) , буду пробовать через виртуалки на ХР) у меня по моему скрипту курсор прыгает на какую-нибудь вкладку браузера и тупа тычен на нее, хоть она вообще не входит в мой заданный диапазон !
посмотрел начало игры, анимация там не сильная, подобрать можно изображение. но меня больше интересует как ты бой собираешся прописывать? там же надо камешки переставлять по 3 вряд одного типа, довольно много условий для  кликера получится
Title: Re: поиск по изображению
Post by: Johnny on November 14, 2013, 12:32:08 PM
да нет, задача решаема. через те же массивы и циклы можно искять рядом стоящие элементы. ходы конечно будут не самые умные, но они будут.

но вот боюсь поскольку возник затык еще на стадии анализа графики, до таких нетривильаных алгоритмов дело не дойдет.
Title: Re: поиск по изображению
Post by: rev41k on November 14, 2013, 01:10:04 PM
появилась другая идея ... кликер же умеет делать скриншот, или я ошибаюсь!? Как вот сделать, чтобы кликер делал скрин, а по сделанному скрину в буфере он определял где есть совпадения с моей картинкой и кликал в те координаты!?
Title: Re: поиск по изображению
Post by: Oraven on November 14, 2013, 02:56:06 PM
 ;D  :D  ;D  :D  ;D
Title: Re: поиск по изображению
Post by: lanser285 on November 14, 2013, 05:06:30 PM
появилась другая идея ... кликер же умеет делать скриншот, или я ошибаюсь!? Как вот сделать, чтобы кликер делал скрин, а по сделанному скрину в буфере он определял где есть совпадения с моей картинкой и кликал в те координаты!?
оммммм.....такой вопрос...если он не находит моба по сделанному скрину вручную, то почему ты решил что он найдет моба по скрину сделанному програмно?

вот скрипт находит первого моба, меньше чем за минуту, будь внимателен просто, даже на анимированых картинках есть практически неизменные места
Title: Re: поиск по изображению
Post by: lanser285 on November 14, 2013, 05:22:38 PM
 :)
Title: Re: поиск по изображению
Post by: rev41k on November 14, 2013, 07:12:03 PM
я просто подумал что если делать скрин програмно , а потом со сделанного скрина вырезать картинку или найти пиксель уникальный. или кликер меняет качество картинки!? И кстати нашел пиксель под свой скрипт через программульку - FastStone Capture, у нее видимо очень хорошее качество скринов.
Кстати мой скрипт заработал на Windows XP SP-3 x86 (который на Windows 7 x64 не хотел работать).
Вопрос теперь появился, как сделать так чтобы кликер сначала кликал на пиксели которые ближе к центру экрана ( или еще лучше было бы ближе к заданному пикселю по координатам).
Всем спасибо за помощь!!!  ;)
2 lanser285 спасибо за скрипт сейчас попробую.
Title: Re: поиск по изображению
Post by: rev41k on November 14, 2013, 11:32:14 PM
помучился немного и все же что-то получилось... только столкнулся с еще одно проблемкой:

sub(skill)      
   getscreen
if_picture_in (297,46,1073,327,"time.bmp", -1, 30)
//if_picture_in (297,46,1073,327,"sokrush.bmp", -1, 30)
wait(1)
lclick($return1, $_return2)   
   print("Удар")
gosub(skill)
          end_if
          //end_if
          else
if_picture_in (297,46,1073,327,"time_a.bmp", -1, 30)
end_if
   gosub(skill)
          end_sub
         else
   print("Бой выйгран" )
            gosub(s1)

Вообщем вот здесь:
if_picture_in (297,46,1073,327,"time.bmp", -1, 30)
//if_picture_in (297,46,1073,327,"sokrush.bmp", -1, 30)
 мне нужно сканить экран на наличие 2-х картинок, и если они обе определенны , тогда кликнуть по второму.

Вопрос теперь появился, как сделать так чтобы кликер сначала кликал на пиксели которые ближе к центру экрана ( или еще лучше было бы ближе к заданному пикселю по координатам).

И этот вопрос тоже интересует...

Хоть маленькую подсказачку, ПОЖАЛУЙСТА!
Title: Re: поиск по изображению
Post by: Oraven on November 15, 2013, 12:24:30 AM
помоему ты СУБпрограмму с ГОТО перепутал
Title: Re: поиск по изображению
Post by: rev41k on November 15, 2013, 02:26:30 AM
помоему ты СУБпрограмму с ГОТО перепутал

уже разобрался ... Осталось только поиск по радиусу((
Title: Re: поиск по изображению
Post by: Vint on November 15, 2013, 08:10:58 AM
помоему ты СУБпрограмму с ГОТО перепутал
Ага. А end_sub с чем тогда перепутал?  :)

Ещё $return1 с $_return1.
И ELSE вообще самостоятельная и универсальная команда которую можно писать где хочешь.  :)
Прекрасный компот получился. Вкупе с совпадением 30%, который будет срабатывать на всё что видит.
Title: Re: поиск по изображению
Post by: rev41k on November 15, 2013, 09:21:14 AM
// New Script
// Author: Anonymous
// Version: 1.0 (29.10.2013)

#name "test_poisk"

//--------------------------------

sub(s1)
GETSCREEN
print("поиск")
IF_PIXEL_IN (590,200,776,339,66050)
   print("íàøåë")
   move($_return1+3, $_return2+3)
   waitms(20)
   lclick($_return1, $_return2+7)
   
      gosub(skill)
     
      else
      print("не нашел")
   gosub(s2)
   end_if
   end_sub

sub(s2)
GETSCREEN
print("поиск")
IF_PIXEL_IN (564,163,820,387, 66050)
   print("íàøåë")
   move($_return1+3, $_return2+3)
       waitms(20)
    lclick($_return1, $_return2+20)   
   
gosub(skill)

   else
   print("не нашел")
      gosub(s3)
end_if
end_sub


sub(s3)
GETSCREEN
print("поиск")
IF_PIXEL_IN (297,106,1073,430, 66050)
   print("íàøåë")
   move($_return1+3, $_return2+3)
   waitms(20)
    lclick($_return1, $_return2+20)
   
gosub(skill)


end_if
end_sub
else
print("не нашел")
gosub(skill)
//-------------------------------------------------------------------------------

//-------------------------------------------------------------------------
sub(skill)
      
   getscreen
if_picture_in (297,46,1073,327,"time.bmp", -1, 30)
scanpicture ($skil, 297,46,1073,327,"sokrush.bmp", -1, 30)
print("мой ход")
WAITMS(10)
LCLICK($skil[0], $skil[1])
gosub(skill)
else
gosub(skill2)
end_if
end_sub
                                          
sub(skill2)                  
   if_picture_in (297,46,1073,327,"time_a.bmp", -1, 30)
                     print("Ход противника")
                     gosub(skill)
                     else
                     PRINT("Бой выйгран")
   IF_PICTURE_IN (297,106,1073,430,"WIN.BMP")
   DBLCLICK($_RETURN1, $_RETURN2+210)
                     gosub(s1)
                     end_if
                     end_sub


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

Ребята помогите с поиском по близжайшей точке, пожалуйстааааа !!!
Title: Re: поиск по изображению
Post by: Vint on November 15, 2013, 12:13:00 PM
Ребята помогите с поиском по ближайшей точке, пожалуйстааааа !!!

Code: (clickermann) [Select]
// вычисляем центр или задаём точку до которой меряем
$Xcentr = INT($_xmax/2)
$ycentr = INT($_ymax/2)

GETSCREEN
SCANPICTURE($ARR_SCAN, 0, 0, $_xmax, $_ymax, "picture.bmp")

$dist = 10000
WHILE (ARRSIZE($ARR_SCAN) > 0)
$Y = ARRPOP($ARR_SCAN)
$X = ARRPOP($ARR_SCAN)
$d_temp = DIST($Xcentr, $ycentr, $X, $Y)
IF($d_temp < $dist)
$dist = $d_temp
$X_centr = $X
$Y_centr = $Y
END_IF
END_CYC
UNDEFINE($ARR_SCAN)

IF($dist ! 10000)
   LOGWRITE ("Ближайшие к центру координаты X: ", $X_centr, " Y: ", $Y_centr)
   LCLICK($X_centr,$Y_centr)
ELSE
   LOGWRITE ("Картинка не найдена")
END_IF


Так-то вот полный. Персонаж бегает по локе и налетает на мобов, затем при условии , если мой ход и есть камни на магию определенную , то бьет. После победы жмет кнопку ОК и повторяет поиск мобов.
По поводу остального...
(http://savepic.net/3956791.gif)

Ты хоть запускал? Работает?
Знаешь, что такое рекурсия?
(http://savepic.net/3970103m.jpg) (http://savepic.net/3970103.htm)
Title: Re: поиск по изображению
Post by: rev41k on November 15, 2013, 01:16:44 PM
Запускал, работает! я мой код, что выше указал немного откорректировал , end_if и end_sub поменял местами , поставил их до else а не после...
СПАСИБО ОГРОМНОЕ за код по поиску, буду мучаться дальше )
По поводу рекурсии... я не силен в программировании , но я пологаю, что это то , что я использовал SUB() и GOSUB().
Title: Re: поиск по изображению
Post by: rev41k on November 15, 2013, 01:44:04 PM
Vint , прости за надоедливость... твой код работает Божественно ) НО!
Пожалуйста напиши как сделать так, чтобы поиск происходил по твоему коду поиска , что ты предоставил и чтобы когда находил картинку(любую первую) больше не искал , а переходил к моему SUB(SKILL). Т.е. должно получиться следующем образом:
1.поиск картинки( моба на локации)
2.После чего кликер нашел клкает по мобу и переходит к подпрограмме SUB(SKILL). Я имею ввиду , вот стоит моб на локе , кликер кликает по нему , прекращает поиск мобов пока не добежит до него, и не войдет в бой (через WAIT не удобно т.к. расстояние до мобов разное). Там уже идет поиск картинок для боя, он у меня крепиться по 2-м картинкам, если они не найдены значит бой завершен и персонаж снова на локации должен искать близжайшего моба.

Вот как-то так)
Извините за наглость...
Title: Re: поиск по изображению
Post by: Vint on November 15, 2013, 01:50:04 PM
Он и так ищет один ближайший и кликает по нему. Дальше выполняется то что напишешь.