Author Topic: IF_PIXEL_IN несколько раз подряд  (Read 28373 times)

0 Members and 1 Guest are viewing this topic.

zip777

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
IF_PIXEL_IN несколько раз подряд
« 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]

ЧУТЬ поправил но все равно не срабатывает такой вариант. находит первый пиксель , щелкает где надо и останавливается и на этом все!!!
« Last Edit: December 13, 2012, 06:09:21 PM by zip777 »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PICTURE_IN несколько раз подряд
« Reply #1 on: December 13, 2012, 08:40:16 AM »
Так это будет выглядеть ?
Нет. Ну почти.
А что вот это у тебя?
...
lclick($_540, $_600)
...
GOTO(1)
« Last Edit: December 13, 2012, 10:11:08 AM by Vint »


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: IF_PICTURE_IN несколько раз подряд
« Reply #2 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

Действительно если первый пункт не найден то остальное выполнять не нужно... переделал.
« Last Edit: December 13, 2012, 05:54:28 PM by Oraven »

Сергей

  • Активный участник
  • ***
  • Posts: 159
    • View Profile
Re: IF_PICTURE_IN несколько раз подряд
« Reply #3 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)
Отсутствую.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: IF_PICTURE_IN несколько раз подряд
« Reply #4 on: December 13, 2012, 05:56:56 PM »
Но в твоем случае задержка  WAITMS(RND(600,1100)) будет 2а раза.
Свой скрипт чуток переделал.

zip777

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: IF_PIXEL_IN несколько раз подряд
« Reply #5 on: December 13, 2012, 06:12:25 PM »
Да у вас работает также первый пункт но вот дальше пиксель в движение который его не ловит(возможно не успевает проверить область экранапока пиксель находится в ней)?

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


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: IF_PIXEL_IN несколько раз подряд
« Reply #6 on: December 13, 2012, 06:23:23 PM »
Область поиска 508,600,600,645 точно правильная? Может цвет поиска нужно лучше подобрать или добавить несколько цветов?
Попробуй уменьшить задержку на 13 строке WAITMS(50)

zip777

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: IF_PIXEL_IN несколько раз подряд
« Reply #7 on: December 13, 2012, 07:09:52 PM »
область поиска менял в зависимости от того на чем проверял на ноутбуке такая на компе больше результат не менялся

zip777

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: IF_PIXEL_IN несколько раз подряд
« Reply #8 on: December 13, 2012, 07:19:49 PM »
   эта ситуация должна повторяться дважды через разные промежутки времени примерно от 1 до 3 сек


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: IF_PIXEL_IN несколько раз подряд
« Reply #9 on: December 13, 2012, 07:29:20 PM »
Ну а с цветом что? Попробуй взять его со скриншота.

zip777

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: IF_PIXEL_IN несколько раз подряд
« Reply #10 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

ЦИТРИН

  • Супермодератор
  • Оплот сообщества
  • *
  • Posts: 484
  • Марафон опавших листьев, коктейль из дыма и мыслей
    • View Profile
Re: IF_PIXEL_IN несколько раз подряд
« Reply #11 on: December 13, 2012, 08:52:08 PM »
Посмотрел.
 У меня аналогичные проблемы были в  другой программе.
 Обрати внимание на подложку для фона игры.
(скриншот ниже)
 Она имеет некий слабозаметный регулярный рисунок, который  очень мешает кликеру.
 В каждой новой зоне экрана слегка меняется сумма пикселей искомой картинки. 
Я пока не в курсе, как  вычитать этот фон из общего гетскрина.
Выкрутился у себя "правой рукой за левое ухо".
Бабочки полёт будит тихую поляну в солнечном свету...

zip777

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: IF_PIXEL_IN несколько раз подряд
« Reply #12 on: December 13, 2012, 08:55:46 PM »
Спасибо, я как раз решил переделать чтоб искомый объект был серого цвета но отличался от подложки.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: IF_PIXEL_IN несколько раз подряд
« Reply #13 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

zip777

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: IF_PIXEL_IN несколько раз подряд
« Reply #14 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 потому что там несколько раз движущиеся объекты которые нужно поймать при их положении рядом друг с другом...я поставил их потому как не знаю чем их заменить ! если можете помогите . заранее спасибо!