Author Topic: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL  (Read 6627 times)

0 Members and 1 Guest are viewing this topic.

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« on: January 17, 2017, 10:46:04 AM »
Здравствуйте Уважаемые знатоки. Подумал что картинка- это определенный набор пикселей и решил искать эту картинку по пикселям. Но не смог решить задачу самостоятельно. Прошу помощи.Ищет первый пиксель-4177919, и если другие не совпадают не переходит на следующий. Как помочь перейти на другой пиксель?
Во вложении образец. Первую картинку находит, но если закрасить пиксель как на третьей, то всё стоит на месте.
Code: (clickermann) [Select]
WAITMS(500)
$check = 0
WHILE($check = 0)
   GETSCREEN
//   COLORMODE(6)                       
   IF_PIXEL_IN(0,0,$_xmax,$_ymax,4177919)
      IF(PXL($_return1-7,$_return2+6)=4161535)
         IF(PXL($_return1,$_return2+2)=8388607)
            IF(PXL($_return1+32,$_return2+2)=8388607)
               $check = 1
               MOVE($_return1-7, $_return2)
            END_IF
         END_IF
      END_IF
   ELSE
      WAITMS(500)
   END_IF
END_CYC
HALT

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #1 on: January 17, 2017, 11:59:55 AM »
А что должно быть?
Не находит 4 пиксел $_return1+32,$_return2+2 потому что его там нет.
Ты закрасил чёрным, значит в первом поиске 4177919 найдётся следующий за ним по x.
При проверке +32 выходим за границы.


open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #2 on: January 17, 2017, 12:03:02 PM »
Это я понимаю. Нужно сделать переход на следующий пиксель, и т.д. пока не совпадет комбинация.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #3 on: January 17, 2017, 12:03:30 PM »
Почему проверку PXL не пишешь в одном условии? Меньше блоков, меньше END_IF-ов
Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(0,0,$_xmax,$_ymax,4177919)
    IF((PXL($_return1-7,$_return2+6) = 4161535) & (PXL($_return1,$_return2+2) = 8388607) & (PXL($_return1+32,$_return2+2) = 8388607))
        LOGWRITE("Нашли X/Y  ", $_return1, " / ", $_return2)
        MOVE($_return1-7, $_return2)
    END_IF
END_IF


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #4 on: January 17, 2017, 12:04:42 PM »
Это я понимаю. Нужно сделать переход на следующий пиксель, и т.д. пока не совпадет комбинация.
Так на твоих примерах она не совпадает больше.


open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #5 on: January 17, 2017, 12:13:50 PM »
1. Новичок. Потому и не пишу. Спасибо, теперь буду.
2. Почему не совпадает? Ведь дальше идут повторы картинок (кроме 3)
« Last Edit: January 17, 2017, 12:20:17 PM by open_78 »

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #6 on: January 17, 2017, 12:34:58 PM »
Слишком много у меня картинок получается. Вот и начал "извращаться". И если программа этого не может - так и скажите.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #7 on: January 17, 2017, 12:48:53 PM »
2. Почему не совпадает? Ведь дальше идут повторы картинок (кроме 3)
При поиске на 3 картинке совпадений нет.
Другие картинки это какие? Все сразу? Тогда найдёт на первой.
Если только 3 и 4, то 4 и искать не будет у тебя так написано.
IF_PIXEL_IN(0,0,$_xmax,$_ymax,4177919) найдёт этот пиксел раньше и другие искать не будет.


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #8 on: January 17, 2017, 12:50:14 PM »
Слишком много у меня картинок получается. Вот и начал "извращаться". И если программа этого не может - так и скажите.
Чего не может? Как написан скрипт так и ищет.


open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #9 on: January 17, 2017, 12:56:47 PM »
Если только 3 и 4, то 4 и искать не будет.
IF_PIXEL_IN(0,0,$_xmax,$_ymax,4177919) найдёт этот пиксел раньше и другие искать не будет.

А мне надо чтобы искал дальше.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #10 on: January 17, 2017, 12:57:22 PM »
но ведь вы избрали совершенно нелепый и дико трудоёмкий способ получения результата.
Хе, хе. Я тоже так делал. Но это было давно. В тех версиях поиск был долгим, небыло % и прозрачности и гетскрин только полный. А вот серия пикселов расположенных со смещениями искалась очень быстро.

Это было давно, сейчас такое не нужно это точно. Версии так с 4.8 примерно.
« Last Edit: January 17, 2017, 01:00:31 PM by Vint »


open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #11 on: January 17, 2017, 12:59:27 PM »
но ведь вы избрали совершенно нелепый и дико трудоёмкий способ получения результата.
Хе, хе. Я тоже так делал. Но это было давно. В тех версиях поиск был долгим, небыло % и прозрачности и гетскрин только полный. А вот серия пикселов расположенных со смещениями искалась очень быстро.

Но это было давно, сейчас такое не нужно это точно.
Значит вы тоже, цитирую- "проявления Олигофрении и чем они отличаются от дебильности".

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #12 on: January 17, 2017, 01:04:40 PM »
Значит вы тоже, цитирую- "проявления Олигофрении и чем они отличаются от дебильности".
Типа того  :D. Тогда это была необходимость, не хватало функционала.
Я думаю и сейчас применимо, если точки отстоят друг от друга далеко.


open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #13 on: January 17, 2017, 01:08:34 PM »
Значит вы тоже, цитирую- "проявления Олигофрении и чем они отличаются от дебильности".
Типа того  :D. Тогда это была необходимость, не хватало функционала.
Я думаю и сейчас применимо, если точки отстоят друг от друга далеко.
Не могли бы вы не надолго вернуться в прошлое...?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #14 on: January 17, 2017, 01:09:00 PM »
Нашёл свои посты что тогда делал
http://crapware.aidf.org/forum/index.php?topic=119.msg1562#msg1562

И я угадал, январь 2013г. Версия кликера 4.7 SE