Author Topic: Clickermann(IF_PICTURE_IN)  (Read 3642 times)

0 Members and 1 Guest are viewing this topic.

DENICH

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Clickermann(IF_PICTURE_IN)
« on: March 26, 2018, 09:23:19 PM »
Я изначально хотел сделать поиск и нажатие по картинке в браузерной игре, которая на Флэше, но столкнулся с проблемой, у меня почему-то компилятор отказывается выполнять IF_PICTURE_IN, ошибки при интерпретации строки, я понимаю что я не первый с такой проблемой, но я искал на форуме, на ютубе(у людей все нормально работает, а я делаю также)  и не понял как мне ее решить, я упростил код до того, что просто хотел чтобы програмка клацнула на архиве на рабочем столе, но проблема та же, картинку архива сделал в формате bmp, сохранил в папке projects , там где и скрипт, так что тут вроде не накосячил. картинку делал через "Ножницы". Подскажите пожалуйста, что делать. Заранее большое спасибо.
Code: [Select]
getscreen
IF_PICTURE_IN (0,0,$_xmax,$_ymax, "arh.bmp")
LCLICK($_return1+4, $_return2+3)
END_IF
WAITMS (100)

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Clickermann(IF_PICTURE_IN)
« Reply #1 on: March 26, 2018, 10:13:33 PM »
странно, у меня ножницы в бмп не умеют делать картинки  :-\




делай скрин самим кликером, проблем точно не будет.
Code: (clickermann) [Select]
GETSCREEN
//снимок в папке \screens
SCREENSHOTEX($x1,$y1,$x2,$y2, "Image_", 0) //область снимка в $x1,$y1,$x2,$y2
halt


DENICH

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Re: Clickermann(IF_PICTURE_IN)
« Reply #2 on: March 28, 2018, 11:52:36 PM »
я скачал програмку под названием LightShot попробовал ещё раз, уже в браузере, и у меня этот поиск по картинке выполнялся, пару раз попробовал, все ок, потом спустя 30 минут, когда решил все проверить ещё раз, поиск уже не выполнялся, не выдавало ошибок , ничего, просто не выполняется код, подскажите пожалуйста, от чего это зависит? может я чего не знаю?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Clickermann(IF_PICTURE_IN)
« Reply #3 on: March 29, 2018, 07:01:38 AM »
Очевидно изображение в игре изменилось.

В таком варианте производится поиск со 100% совпадением.
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (0,0,$_xmax,$_ymax, "arh.bmp")
   LCLICK($_return1+4, $_return2+3)
   WAITMS(100)
ELSE
   WAITMS(50)
END_IF

Нужно сделать скриншот с цветокоррекцией чтобы убрать легкие изменения цветов и сократить количество этих цветов. А легкие изменения в пикселах можно отсеять снизив процент совпадения.
Делается это таким скриптом
Code: (clickermann) [Select]
GETSCREEN // Снимок экрана в буфер кликера
COLORMODE(6) // Цветокоррекция снимка до уровня 6
SCREENSHOT // снимок сохраняется в папку Screens в папке скрипта
HALT // Стоп
Вырезаешь из полученного скриншота объект поиска.

В своем скрипте тоже применяешь цветокоррекцию и ищешь с меньшим процентом совпадения.
Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0,$_xmax,$_ymax, "arh.bmp",-1,70) // поиск с 70% совпадения
   LCLICK($_return1+4, $_return2+3)
   WAITMS(100)
ELSE
   WAITMS(50)
END_IF

Можно попробовать уровни цветокоррекции от 5 до 8.
Посмотреть как выглядит цветокоррекция в реальном времени можно через лупу. Под окошком лупы изменяем % 0 на нужное число.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Clickermann(IF_PICTURE_IN)
« Reply #4 on: March 29, 2018, 08:37:17 AM »
поиск уже не выполнялся, не выдавало ошибок , ничего, просто не выполняется код, подскажите пожалуйста, от чего это зависит? может я чего не знаю?
"Не выполняется код" и "картинку не находит" - это, как говорят в Одессе, две большие разницы.
Давайте не будем говорить, что код не выполняется, как это определили? Там логи выводятся в нужных местах? - Нет.
Всё там выполняется, не будем путать читающих.
А про поиск написали выше.


m1hai

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Re: Clickermann(IF_PICTURE_IN)
« Reply #5 on: March 29, 2018, 10:10:03 PM »
Доброго вечера. Прошу помочь. Проблема похожа.
Работало всё нормально, решил сделать другие битмапы (название их не менял, хотел только площадь немного по больше чтобы распознало лучше) и всё, не работает никак. Кликерман грузится или лагает и показывает что не отвечает. Поставил паузу в коде но ничего не решилось. Перезагрузил комп/скачал заного кликерман/сделал скрин с кликером в Colormode(6) потом сделал обрезы из них, ничего не помогает. В чём может быть проблема?

Code: (clickermann) [Select]
STRSEPARATE("first,second,third,fourth,fith,sixth",",",$ph)
GETSCREEN
COLORMODE(6)
FOR($a1=0,$a1<6)
   print("test")
   SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax,STRCONCAT($ph[$a1],".bmp"), -1, 70)
   print("test2")
   $ARR_NUM = 0
   WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
      print("test3")
      $X = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      $Y = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      MOVE($X+20, $Y+50)
      WAITMS(150)
   END_CYC
   UNDEFINE($ARR_SCAN)
END_CYC

HALT

После первого принта кликерман не отвечает.  :-\
До того как решился сделать другие битмапы всё робило хорошо :/
Прошу помочь.
П.С сделал другие битмапы размерами гдето 40х40 в 24-зарзядном и 256-цветной, всё так же кликерман не отвечает. При первых битмапах когда он работал они были немного больше.

П.П.С. Не знаю как но заработало, опять сделал бимапы, поставил без цветокорекции и со 100%. Магия какая то или хз.
Спасибо.
« Last Edit: March 29, 2018, 10:40:22 PM by m1hai »