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

Основной раздел => Предложения => Topic started by: zip777 on December 13, 2012, 07:14:42 AM

Title: IF_PIXEL_IN несколько раз подряд
Post by: zip777 on December 13, 2012, 07:14:42 AM
Помогите, пожалуйста!

Ситуация такая :

1. Нужно найти пиксель определенного цвета в заданной области
2.кликнуть по нему
3.после этого нужно чтоб цикл продолжался и искать пиксель другого цвета в другой области (объект движется и попадает в эту область всего на секунду!! но нужна именно эта область! ))
4.далее когда пиксель попал в эту область нужно кликнуть по нему
5. продолжаем через какую то паузу (задержка всегда разная) нужно повторить пункт 3
6.далее кликнуть 3 раза на 3 разные точки
7 после чего все должно повториться

я написал ...помогите подскажите что не так


Так это будет выглядеть ?[spoiler]IF_PIXEL_IN(554,620,710,660, #252e60)
lclick(630,630)
END_IF
IF_PIXEL_IN(508,600,600,645, #1222BA)
lclick(540,600)
END_IF
IF_PIXEL_IN(508,600,600,645, #1222BA)
lclick(540,600)
LCLICK(573,447)
LCLICK(525,525)
LCLICK(530,530)
END_IF
GOTO(1)[/spoiler]

ЧУТЬ поправил но все равно не срабатывает такой вариант. находит первый пиксель , щелкает где надо и останавливается и на этом все!!!
Title: Re: IF_PICTURE_IN несколько раз подряд
Post by: Vint on December 13, 2012, 08:40:16 AM
Так это будет выглядеть ?
Нет. Ну почти.
А что вот это у тебя?
...
lclick($_540, $_600)
...
GOTO(1)
Title: Re: IF_PICTURE_IN несколько раз подряд
Post by: Oraven on December 13, 2012, 04:38:10 PM
Прежде всего скачай последнюю версию 4.7 SE
Почему тема называется IF_PICTURE_IN когда ты используешь IF_PIXEL_IN?
Цвета с конвертировал в десятеричный вид, это будет работать только на 4ой версии кликера

Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(554,620,710,660, 6303269)
   LCLICK($_return1, $_return2)
   WAITMS(100)
   $search = 0
   WHILE($search < 2)
      GETSCREEN
      IF_PIXEL_IN(508,600,600,645, 12198418)
         INC($search,1)
         LCLICK($_return1, $_return2)
         WAITMS(100)
      Else
         WAITMS(50)
      END_IF
     
      IF($search = 1)
         WAITMS(RND(500,1000)) // Рандомная задержка 500-1000 мс
      END_IF
   END_CYC
   
   WAITMS(200)
   
   LCLICK(573,447)
   LCLICK(525,525)
   LCLICK(530,530)
   
Else
   WAITMS(100)
END_IF

Действительно если первый пункт не найден то остальное выполнять не нужно... переделал.
Title: Re: IF_PICTURE_IN несколько раз подряд
Post by: Сергей on December 13, 2012, 04:52:40 PM
И битва экстрасенсов продолжается!  ;D
Я думаю что автор хотел что-то такое:

Code: (clickermann) [Select]
$break = 0
WHILE($break = 0)
   GETSCREEN
   IF_PIXEL_IN(554,620,710,660, 6303269)
      LCLICK($_return1, $_return2)
      $break = 1
   Else
      WAITMS(50)
   END_IF
END_CYC

for($i, $i < 2)
   $break = 0
   WHILE($break = 0)
      GETSCREEN
      IF_PIXEL_IN(508,600,600,645, 12198418)
         $break = 1
         LCLICK($_return1, $_return2)
      Else
         WAITMS(50)
      END_IF
   END_CYC
   WAITMS(RND(600,1100)) // Рандомная задержка 600-1100 мс
end_cyc
 
WAITMS(200)
 
LCLICK(573,447)
LCLICK(525,525)
LCLICK(530,530)
Title: Re: IF_PICTURE_IN несколько раз подряд
Post by: Oraven on December 13, 2012, 05:56:56 PM
Но в твоем случае задержка  WAITMS(RND(600,1100)) будет 2а раза.
Свой скрипт чуток переделал.
Title: Re: IF_PIXEL_IN несколько раз подряд
Post by: zip777 on December 13, 2012, 06:12:25 PM
Да у вас работает также первый пункт но вот дальше пиксель в движение который его не ловит(возможно не успевает проверить область экранапока пиксель находится в ней)?

Чтоб не городить огород(экстрасенсов) пытаюсь сделать кликер для этого _http://www.niveaformen.ru/promo/hockey.html  флеш игра хоккей

Title: Re: IF_PIXEL_IN несколько раз подряд
Post by: Oraven on December 13, 2012, 06:23:23 PM
Область поиска 508,600,600,645 точно правильная? Может цвет поиска нужно лучше подобрать или добавить несколько цветов?
Попробуй уменьшить задержку на 13 строке WAITMS(50)
Title: Re: IF_PIXEL_IN несколько раз подряд
Post by: zip777 on December 13, 2012, 07:09:52 PM
область поиска менял в зависимости от того на чем проверял на ноутбуке такая на компе больше результат не менялся
Title: Re: IF_PIXEL_IN несколько раз подряд
Post by: zip777 on December 13, 2012, 07:19:49 PM
(http://s48.radikal.ru/i119/1212/cc/05cea54f2177.jpg)   эта ситуация должна повторяться дважды через разные промежутки времени примерно от 1 до 3 сек

Title: Re: IF_PIXEL_IN несколько раз подряд
Post by: Oraven on December 13, 2012, 07:29:20 PM
Ну а с цветом что? Попробуй взять его со скриншота.
Title: Re: IF_PIXEL_IN несколько раз подряд
Post by: zip777 on December 13, 2012, 08:33:19 PM
Теперь выглядит так.   но срабатывает не найдя нужный цвет (переделал не на синий) но проходит несколько циклов ! может где есть синтаксические ошибки?
Code: [Select]
GETSCREEN
IF_PIXEL_IN(1040,580,1060,605, 6303269)
   LCLICK($_return1, $_return2)
   WAITMS(200)
   $search = 0
   WHILE($search < 2)
      GETSCREEN
      IF_PIXEL_IN(945,580,970,615, 16049378)
         INC($search,1)
         LCLICK($_return1, $_return2)
         WAITMS(100)
         GETSCREEN
      IF_PIXEL_IN(755,622,808,600, 16049378)
         INC($search,1)
         LCLICK($_return1, $_return2)
         WAITMS(100)
          GETSCREEN
      IF_PIXEL_IN(910,480,940,515, 8006673)
         INC($search,1)
         LCLICK($_return1, $_return2)
         WAITMS(100)
LCLICK(950,600)
GETSCREEN
IF_PIXEL_IN(820,440,850,450, 6434855)
   LCLICK($_return1, $_return2)
   WAITMS(200) 
      Else
         WAITMS(50)
      END_IF
 
      IF($search = 1)
         WAITMS(RND(500,1000)) // Рандомная задержка 500-1000 мс
      END_IF
   END_CYC
 
   WAITMS(200)
Else
   WAITMS(100)
END_IF
Title: Re: IF_PIXEL_IN несколько раз подряд
Post by: ЦИТРИН on December 13, 2012, 08:52:08 PM
Посмотрел.
 У меня аналогичные проблемы были в  другой программе.
 Обрати внимание на подложку для фона игры.
(скриншот ниже)
 Она имеет некий слабозаметный регулярный рисунок, который  очень мешает кликеру.
 В каждой новой зоне экрана слегка меняется сумма пикселей искомой картинки. 
Я пока не в курсе, как  вычитать этот фон из общего гетскрина.
Выкрутился у себя "правой рукой за левое ухо".
Title: Re: IF_PIXEL_IN несколько раз подряд
Post by: zip777 on December 13, 2012, 08:55:46 PM
Спасибо, я как раз решил переделать чтоб искомый объект был серого цвета но отличался от подложки.
Title: Re: IF_PIXEL_IN несколько раз подряд
Post by: Oraven on December 13, 2012, 08:59:19 PM
У тебя нехватает END_IF но зачем столько IF_PIXEL_IN? При этом IF($search = 1) уже не сработает потому как там куча INC($search,1)

Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(1040,580,1060,605, 6303269)
   LCLICK($_return1, $_return2)
   WAITMS(200)
   $search = 0
   WHILE($search < 2)
      GETSCREEN
      IF_PIXEL_IN(945,580,970,615, 16049378)
         INC($search,1)
         LCLICK($_return1, $_return2)
         WAITMS(100)
         
         GETSCREEN
         IF_PIXEL_IN(755,622,808,600, 16049378)
            INC($search,1)
            LCLICK($_return1, $_return2)
            WAITMS(100)
           
            GETSCREEN
            IF_PIXEL_IN(910,480,940,515, 8006673)
               INC($search,1)
               LCLICK($_return1, $_return2)
               WAITMS(100)
               LCLICK(950,600)
               
               GETSCREEN
               IF_PIXEL_IN(820,440,850,450, 6434855)
                  LCLICK($_return1, $_return2)
                  WAITMS(200)
               Else
                  WAITMS(50)
               END_IF
               
               IF($search = 1)
                  WAITMS(RND(500,1000)) // Рандомная задержка 500-1000 мс
               END_IF
            END_IF
         END_IF
      END_IF
   END_CYC
   
   WAITMS(200)
Else
   WAITMS(100)
END_IF
Title: Re: IF_PIXEL_IN несколько раз подряд
Post by: zip777 on December 13, 2012, 09:06:07 PM
У тебя нехватает END_IF но зачем столько IF_PIXEL_IN? При этом IF($search = 1) уже не сработает потому как там куча INC($search,1)

Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(1040,580,1060,605, 6303269)
   LCLICK($_return1, $_return2)
   WAITMS(200)
   $search = 0
   WHILE($search < 2)
      GETSCREEN
      IF_PIXEL_IN(945,580,970,615, 16049378)
         INC($search,1)
         LCLICK($_return1, $_return2)
         WAITMS(100)
         
         GETSCREEN
         IF_PIXEL_IN(755,622,808,600, 16049378)
            INC($search,1)
            LCLICK($_return1, $_return2)
            WAITMS(100)
           
            GETSCREEN
            IF_PIXEL_IN(910,480,940,515, 8006673)
               INC($search,1)
               LCLICK($_return1, $_return2)
               WAITMS(100)
               LCLICK(950,600)
               
               GETSCREEN
               IF_PIXEL_IN(820,440,850,450, 6434855)
                  LCLICK($_return1, $_return2)
                  WAITMS(200)
               Else
                  WAITMS(50)
               END_IF
               
               IF($search = 1)
                  WAITMS(RND(500,1000)) // Рандомная задержка 500-1000 мс
               END_IF
            END_IF
         END_IF
      END_IF
   END_CYC
   
   WAITMS(200)
Else
   WAITMS(100)
END_IF
столько IF_PIXEL_IN потому что там несколько раз движущиеся объекты которые нужно поймать при их положении рядом друг с другом...я поставил их потому как не знаю чем их заменить ! если можете помогите . заранее спасибо!
Title: Re: IF_PIXEL_IN несколько раз подряд
Post by: zip777 on December 13, 2012, 09:33:38 PM
(http://i047.radikal.ru/1212/8d/e2af9a05a605.jpg)Стоит ли пользоваться функцией IF_PICTURE_IN в данном случае?
Title: Re: IF_PIXEL_IN несколько раз подряд
Post by: Oraven on December 13, 2012, 10:35:44 PM
Ну понимаешь там у тебя вложенные условия, если сработает первое, то тогда перейдет ко второму, если сработает второе, то к третьему, а если первое не сработает, то и все остальное проигнорируется.