Author Topic: Скрипт для поиска картинок в заданной облости.  (Read 14284 times)

0 Members and 4 Guests are viewing this topic.

alikvm

  • Зашел в гости
  • *
  • Posts: 8
  • http://nick-name.ru/nickname/alikvm/
    • View Profile
Помогите пожайлуста сделать правильный скрипт. Это из раздела Бот на оценку в Dark Age, только ситуация немного другая, а результат нужен тот же: т.е. найти в области сканирования scanpicture с заданной картинкой ку.bmp 2 -а совпадения, т.е. чтобы бот остановился когда в области сканиррования scanpicture выпадут 2е одинаковые оценки снаряжения.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Code: (clickermann) [Select]
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "picture.bmp", -1, 100)
IF(ARRSIZE($ARR_SCAN)/2 = 2) // стоп если найдено две картинки
   HALT
END_IF
UNDEFINE($ARR_SCAN)

alikvm

  • Зашел в гости
  • *
  • Posts: 8
  • http://nick-name.ru/nickname/alikvm/
    • View Profile
куда вставить LCLICK(409,484) чтобы кликал пока не выпадут нужные картинки в заданной области?

alikvm

  • Зашел в гости
  • *
  • Posts: 8
  • http://nick-name.ru/nickname/alikvm/
    • View Profile
не видет, не получается, кликает дальше даже когда в этой области выпадают 2е такие картинки(
пример картинки (ку.bmp) и области сканирования (картинка.bmp) сверху в  первом сообщении


 
LCLICK(409,484)
       wait(3)
 
getscreen

scanpicture($ARR_SCAN, 379,214, 550,270, "ку.bmp",-1,100)

IF(ARRSIZE($ARR_SCAN)/2 = 2) // стоп если найдено две картинки
   HALT
END_IF
UNDEFINE($ARR_SCAN)
« Last Edit: March 11, 2016, 05:15:56 PM by alikvm »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Ну тык пикселы меняются. Нужна цветокоррекция и применения процента совпадения.

alikvm

  • Зашел в гости
  • *
  • Posts: 8
  • http://nick-name.ru/nickname/alikvm/
    • View Profile
не понимаю(
так тоже не останавливается(


Code: (clickermann) [Select]
LCLICK(409,484)
  wait(3)
 
getscreen
colormode(8)
scanpicture($ARR_SCAN, 379,214, 550,270, "ку.bmp",-1,50)

IF(ARRSIZE($ARR_SCAN)/2 = 2) // стоп если найдено две картинки
   HALT
END_IF
UNDEFINE($ARR_SCAN)]

alikvm

  • Зашел в гости
  • *
  • Posts: 8
  • http://nick-name.ru/nickname/alikvm/
    • View Profile
Как сделать, чтобы хотя бы одну из 3х строк находил и останавливался, для проверки скрипта? В идеале 2е из 3х.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
А лог тебе на что?

Code: (clickermann) [Select]
LCLICK(409,484)
wait(3)

getscreen
colormode(8)
scanpicture($ARR_SCAN, 379,214, 550,270, "ку.bmp",-1,50)
LOGWRITE ("Всего найдено: ", ARRSIZE($ARR_SCAN)/2)

IF(ARRSIZE($ARR_SCAN)/2 > 1) // стоп если найдено больше одной
   HALT
END_IF
UNDEFINE($ARR_SCAN)

alikvm

  • Зашел в гости
  • *
  • Posts: 8
  • http://nick-name.ru/nickname/alikvm/
    • View Profile
Спасибо)

Code: (clickermann) [Select]
LCLICK(409,484)
wait(4)
 
getscreen
colormode(0)
scanpicture($ARR_SCAN, 377,213, 420,267, "ку.bmp",-1,17)
LOGWRITE ("Всего найдено: ", ARRSIZE($ARR_SCAN)/2)
 
IF(ARRSIZE($ARR_SCAN)/2 > 1) // стоп если найдено больше одной
   HALT
END_IF
UNDEFINE($ARR_SCAN)

alikvm

  • Зашел в гости
  • *
  • Posts: 8
  • http://nick-name.ru/nickname/alikvm/
    • View Profile
А можно ли как нибудь доделать условие в этом скрипте так, что бы он искал в области ни 2 и более совпадений одной картинки, а искал 2 и более совпадений одной ИЛИ 2х картинок? Т.е. останавливал кликание когда найдет в области поиска 2а и более совпадений 1й картинки или 2а и более совпадений 2й картинки, или одно или несколько совпадений 1й и 2й картинок сразу? Заранее спасибо. Предыдущий скрипт работает супер.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Code: (clickermann) [Select]
LCLICK(409,484)
wait(4)

getscreen
scanpicture($ARR_SCAN_1, 377,213, 420,267, "ку1.bmp",-1,17)
scanpicture($ARR_SCAN_2, 377,213, 420,267, "ку2.bmp",-1,17)
$siz1 = ARRSIZE($ARR_SCAN_1)/2
$siz2 = ARRSIZE($ARR_SCAN_2)/2
IF((($siz1 > 1)|($siz2 > 1))|(($siz1 > 0)&($siz2 > 0)))
   HALT
END_IF
UNDEFINE($ARR_SCAN_1)
UNDEFINE($ARR_SCAN_2)

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Как-то мудрёно написал задание. Мне кажется там было всё проще и пытается искать несколько вариантов одной картинки.
Code: (clickermann) [Select]
LCLICK(409,484)
wait(4)

getscreen
colormode(0)
scanpicture($ARR_SCAN, 377,213, 420,267, "ку1.bmp",-1,17)
scanpicture($ARR_SCAN, 377,213, 420,267, "ку2.bmp",-1,17)
LOGWRITE ("Всего найдено: ", ARRSIZE($ARR_SCAN)/2)

IF(ARRSIZE($ARR_SCAN) > 2) // стоп если найдено больше одной
   HALT
END_IF
UNDEFINE($ARR_SCAN)

P.S. Процент 17 - ни разу не рабочий. Всё что ниже 60 уже как бог пошлёт.


ЦИТРИН

  • Супермодератор
  • Оплот сообщества
  • *
  • Posts: 484
  • Марафон опавших листьев, коктейль из дыма и мыслей
    • View Profile
У меня аналогичная проблема. Ну буду плодить новую тему.
 Вот собственно сам скрипт
[spoiler]
Code: (clickermann) [Select]
//   https://yobit.net/en/freecoins/
//масштаб 50%
// сбор монет
//-----------

LCLICK(0,622)  // 16448250
WAITMS(200)
KEYPRESS(#PAGEUP)
WAITMS ( RND (461,854))
WAITMS(200)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#0)
WAITMS (50)
KEYUP (#0)
KEYUP (#CTRL)
WAITMS(200)

FOR($a,$a < 4)  // масштаб 50%
   WAITMS(200)
   KEYDOWN (#CTRL)
   WAITMS (150)
   KEYDOWN (189)
   WAITMS (150)
   KEYUP (189)
   KEYUP (#CTRL)
   WAITMS ( RND (361,540))
END_CYC
$a=0
WAITMS (500)
LCLICK(935,187)  // вызываем капчу

WAITMS ( RND (461,854))

$dialog =DIALOGBOX("Продолжить действие", 4, 2)





WAITMS ( RND (461,854))
FOR($a,$a < 50) // повторяем
   
 //  сканируем страницу   
   
   
   WAITMS ( RND (61,154))
   GETSCREEN
   
   WAITMS ( RND (261,454))
   SCANPICTURE($ARR_SCAN,828,111, 876,1038, "redy.bmp", -1, 75)
   $ARR_NUM = 0
   WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN)) // работаем  кликами по  найденным картинкам  redy.bmp
      $X = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      $Y = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      LCLICK($X + (91+ rnd(-25,25)), $Y + rnd(-2,3))
      WAITMS(600)   
      GETSCREEN  //  после каждого клика возможны 3 ситуации
     
      IF_PIXEL_IN(385,593, 395,599,8158075)//  1. появляется  окно случайная капча
         
         BEEP(3800,200)
         WAITMS(500)
         BEEP(3800,200)
         WAITMS(500)
         BEEP(3800,200)
         $dialog = DIALOGBOX ("Продолжить действие", 4, 2)
         WAITMS(500)
         $ARR_NUM = 500   // тут я  какбЭ хочу прервать цикл и снова опросить лист  , возвратившись на страницу назад !!! но не получается
         KEYPRESS(#PAGEUP)
         
         WAITMS (550)
      END_IF
     
      IF_PIXEL_IN(1055,553, 1078,564,4737721) // 2.  появляется  окно повтора , гасим окно повтора
         WAITMS (100)
         LCLICK(959 + rnd (-3,3) , 601 + rnd (-3,3))
         WAITMS ( RND (1461,1854))
         $ARR_NUM=500
         KEYPRESS(#PAGEUP)
         
         WAITMS (550)
      END_IF
     
      WAITMS (50)
      IF_PIXEL_IN(1144,100, 1150,105,16316406) // 3.  появляется окно твиттера,  гасим окно твиттера
         LCLICK(1156 + rnd (-2,2) , 41 + rnd (-2,2))         
         WAITMS (550)
      END_IF
     
      WAITMS ( RND (61,254))
     
   END_CYC
   UNDEFINE($ARR_SCAN)
   WAITMS ( RND (961,1354))
   LCLICK(1130 + rnd(-55,55),184+ rnd(-3,3))
   WAITMS ( RND (461,854))
   
   KEYPRESS(#PAGEDOWN)
   WAITMS ( RND (1261,1854))
   WAITMS (350)
   
   GETSCREEN
   IF_PIXEL_IN(1217,1030, 1218,1035,15525859) // ищем  признак окончания списка  и переходи  на последний цикл опроса страниц
      $a = 49
   END_IF

   
   IF_PIXEL_IN(1055,553, 1078,564,4737721) // гасим окно повтора
      LCLICK(959 + rnd (-3,3) , 601 + rnd (-3,3))
      WAITMS ( RND (1461,1854))
      $ARR_NUM=500
      KEYPRESS(#PAGEUP)
     
      WAITMS (550)
   END_IF
   
END_CYC

LCLICK(1130 + rnd(-55,55),184+ rnd(-3,3))
WAITMS ( RND (461,854))

KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#HOME)
WAITMS (50)
KEYUP (#HOME)
KEYUP (#CTRL)
WAITMS ( RND (461,854))

WAITMS(200)
KEYPRESS(#PAGEUP)
WAITMS ( RND (461,854))
WAITMS(200)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#0)
WAITMS (50)
KEYUP (#0)
KEYUP (#CTRL)
WAITMS(200)
//-----------

HALT
[/spoiler]

Работает без проблем  , пока не встречается с внезапными изменениями на экране. Мне нужно чтобы после выполнения  одного из условия  IF_PIXEL_IN скрипт  начал новое сканирование ( желательно чтобы ещё и страницу отмотал назад на всякий случай) . 
 Но  не получается . Любые переменные менял , обнулял итп , но скрипт продолжает работу, по старому  условию SCANPICTURE($ARR_SCAN  итп .
Чего я не понимаю?
« Last Edit: March 24, 2016, 06:25:12 PM by ЦИТРИН »
Бабочки полёт будит тихую поляну в солнечном свету...

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Мне нужно чтобы после выполнения  одного из условия  IF_PIXEL_IN скрипт  начал новое сканирование
После какого? В каком месте? И откуда начал?


ЦИТРИН

  • Супермодератор
  • Оплот сообщества
  • *
  • Posts: 484
  • Марафон опавших листьев, коктейль из дыма и мыслей
    • View Profile
После какого? В каком месте? И откуда начал?
После 44 строки в скрипте выше я добавил пояснения . На 71 строке описана  проблема , тоже с пояснениями .
Сам процесс идет вот тут.

пэ.сэ.
 на моей винде Кликерман 12 не работает . Пока на 11 версии.
« Last Edit: March 24, 2016, 06:34:43 PM by ЦИТРИН »
Бабочки полёт будит тихую поляну в солнечном свету...