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

Основной раздел => Общие вопросы => Topic started by: gippi on June 28, 2017, 06:14:30 PM

Title: Нахождение персонажа на экране и поиск в области вокруг него картинок
Post by: gippi on June 28, 2017, 06:14:30 PM
Здравствуйте. Помогите пожалуйста. Надо находить персонажа на экране и в области вокруг него искать картинки и кликать по ним.
                                      Getscreen
                                 IF_PICTURE_IN(0,0, $_xmax, $_ymax "персонаж.bmp")    \\ нахожу персонажа
                                  дальше не знаю как искать в области от этого изображения
                                  IF_PICTURE_IN(................................................, "1.bmp")
                                    LCLICK($_return1, $_return2)
                                     WAITMS(100)
                                      END_IF
                                  IF_PICTURE_IN(................................................, "2.bmp")
                                      LCLICK($_return1, $_return2)
                                        WAITMS(100)
                                         END_IF
Title: Re: Нахождение персонажа на экране и поиск в области вокруг него картинок
Post by: Oraven on June 28, 2017, 08:23:01 PM
Записываем координату картинки в переменные и отнимая и прибавляя значения к ним устанавливаем область поиска.
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax, $_ymax "персонаж.bmp", -1, 100)
   $sx = $_return1
   $sy = $_return2
   
   IF_PICTURE_IN ($sx-50,$sy-50, $sx+50,$sy+50, "1.bmp", -1, 100) // Ищем в зоне +-50 пикселов от картинки персонаж.bmp
      LCLICK($_return1, $_return2)
      WAITMS(100)
   END_IF
   
   IF_PICTURE_IN ($sx-50,$sy-50, $sx+50,$sy+50, "2.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(100)
   END_IF   
   
END_IF

WAITMS(50)
Title: Re: Нахождение персонажа на экране и поиск в области вокруг него картинок
Post by: gippi on July 03, 2017, 08:58:11 PM
Спасибо! только работает не совсем так как надо. Картинок персонажа может быть несколько. Когда находится имеющаяся на данный момент картинка персонажа происходит поиск картинок вокруг него и клик по ним, после клика картинка персонажа меняется и её уже нет в скрипте. По идее после getscreen персонаж обнаруживается кликаются картинки рядом по одному разу и всё далее опять getscreen а имеющейся картинки уже нет и цикл останавливается.

Если написать отдельно для одного положения персонажа, то так всё и происходит:
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "pers5.bmp", -1, 100)
   $sx = $_return1
   $sy = $_return2
   
   IF_PICTURE_IN ($sx-300,$sy-300, $sx+300,$sy+300, "r1.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(50)
   END_IF
   
   IF_PICTURE_IN ($sx-300,$sy-300, $sx+300,$sy+300, "r2.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(50)
   END_IF
   
   IF_PICTURE_IN ($sx-300,$sy-300, $sx+300,$sy+300, "r3.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(50)
   END_IF
   
   IF_PICTURE_IN ($sx-300,$sy-300, $sx+300,$sy+300, "r4.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(50)
   END_IF
   
   IF_PICTURE_IN ($sx-300,$sy-300, $sx+300,$sy+300, "r5.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(50)
   END_IF
   
   IF_PICTURE_IN ($sx-300,$sy-300, $sx+300,$sy+300, "r6.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(50)
   END_IF
   
END_IF
WAITMS(50)

Но если добавить несколько положений персонажа, то он начинает кликать по картинке не переставая с определённым промежутком :
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "pers1.bmp", -1, 100)
   $sx = $_return1
   $sy = $_return2
   
   IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r1.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(50)
   END_IF
   
   IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r2.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(50)
   END_IF
   
   IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r3.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(50)
   END_IF
   
   IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r4.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(50)
   END_IF
   
   IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r5.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(50)
   END_IF
   
   IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r6.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(50)
   END_IF
   
   IF_PICTURE_IN (0,0, $_xmax, $_ymax, "pers2.bmp", -1, 100)
      $sx = $_return1
      $sy = $_return2
     
      IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r1.bmp", -1, 100)
         LCLICK($_return1, $_return2)
         WAITMS(50)
      END_IF
     
      IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r2.bmp", -1, 100)
         LCLICK($_return1, $_return2)
         WAITMS(50)
      END_IF
     
      IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r3.bmp", -1, 100)
         LCLICK($_return1, $_return2)
         WAITMS(50)
      END_IF
     
      IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r4.bmp", -1, 100)
         LCLICK($_return1, $_return2)
         WAITMS(50)
      END_IF
     
      IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r5.bmp", -1, 100)
         LCLICK($_return1, $_return2)
         WAITMS(50)
      END_IF
     
      IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r6.bmp", -1, 100)
         LCLICK($_return1, $_return2)
         WAITMS(50)
      END_IF
     
      IF_PICTURE_IN (0,0, $_xmax, $_ymax, "pers3.bmp", -1, 100)
         $sx = $_return1
         $sy = $_return2
         
         IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r1.bmp", -1, 100)
            LCLICK($_return1, $_return2)
            WAITMS(50)
         END_IF
         
         IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r2.bmp", -1, 100)
            LCLICK($_return1, $_return2)
            WAITMS(50)
         END_IF
         
         IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r3.bmp", -1, 100)
            LCLICK($_return1, $_return2)
            WAITMS(50)
         END_IF
         
         IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r4.bmp", -1, 100)
            LCLICK($_return1, $_return2)
            WAITMS(50)
         END_IF
         
         IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r5.bmp", -1, 100)
            LCLICK($_return1, $_return2)
            WAITMS(50)
         END_IF
         
         IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r6.bmp", -1, 100)
            LCLICK($_return1, $_return2)
            WAITMS(50)
         END_IF
      END_IF
     
      WAITMS(50)


 Помогите разобраться пожалуйста                         
Title: Re: Нахождение персонажа на экране и поиск в области вокруг него картинок
Post by: open_78 on July 03, 2017, 09:26:04 PM
Помогите разобраться пожалуйста                       
В твоем примере не хватает нескольких END_IF
Code: (clickermann) [Select]
FOR($_pers=1,$_pers<4)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax, $_ymax, STRCONCAT("pers",$_pers,".bmp"), -1, 100)
      $sx = $_return1
      $sy = $_return2
      FOR($_r=1,$_r<7)
         IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, STRCONCAT("r",$_r,".bmp"), -1, 100)
            LCLICK($_return1, $_return2)
            WAITMS(50)
         END_IF
      END_CYC
   END_IF
END_CYC
WAITMS(50)
Title: Re: Нахождение персонажа на экране и поиск в области вокруг него картинок
Post by: Oraven on July 03, 2017, 09:32:53 PM
Дополню
Code: (clickermann) [Select]
FOR($_pers=1,$_pers<4) // от "pers1.bmp" до "pers3.bmp"
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax, $_ymax, STRCONCAT("pers",$_pers,".bmp"), -1, 100)
      $sx = $_return1
      $sy = $_return2
      FOR($_r=1,$_r<7) // от "r1.bmp" до "r6.bmp"
         IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, STRCONCAT("r",$_r,".bmp"), -1, 100)
            LCLICK($_return1, $_return2)
            WAITMS(50)
            $_r=999 // если найдено прерываем цикл
         END_IF
      END_CYC
   END_IF
END_CYC
WAITMS(50)
Title: Re: Нахождение персонажа на экране и поиск в области вокруг него картинок
Post by: open_78 on July 03, 2017, 09:34:13 PM
Зачем прерывать? Я понял что их все надо прокликать.