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

0 Members and 5 Guests are viewing this topic.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #30 on: January 17, 2017, 04:34:37 PM »
А нахрена мне тогда IF_PIXEL_IN??? Если я точно знаю координаты всех шести пикселей...
Вот вот.
Но разработчики не обязаны пиксел в пиксел попадать. В силу отсутствия перфекционистов, они и не попадают.
Вот, например подобное окно в зомби ферме почти всегда в одних координатах вылазит. Но есть моменты на пиксел левее и хоть ты тресни от чего это зависит.


open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #31 on: January 17, 2017, 04:46:09 PM »
Попробовал. С  IF_PIXEL_IN лучше.

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #32 on: January 17, 2017, 06:40:38 PM »
Испытал в "полевых условиях" - всё сработало как нужно. Спасибо всем.

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #33 on: February 05, 2017, 05:17:19 PM »
Теперь сделал так. Выглядит симпатичнее, но логику понять не смог. Методом подбора получилось.
Code: (clickermann) [Select]
$check = 0    //продаем склад
WHILE($check = 0)
   WAITMS(200)
   FOR($yy=626, $yy < 1130,252)
      FOR($xx=769, $xx < 1384,205)
         GETSCREEN(760,626,1230,890)
         COLORMODE(6,760,626,1230,890)
         IF_PIXEL_IN($xx,$yy,$xx+39,$yy+6,4177919)
            IF((PXL($_return1+32,$_return2+1)=4177919)&(PXL($_return1-7,$_return2+5)=4161535)&(PXL($_return1+32,$_return2+2)=8388607))
               $xx=564  //тут пришлось отнять 205. Почему?
               $yy=626  // а тут осталось без изменений.
               MOVE($_return1+45, $_return2-35)
               WAITMS(50)
               LCLICK($_return1+45, $_return2-35)
               WAITMS(50)
               KEYSTRING("999999",5)
               WAITMS(50)
               LCLICK($_return1+65, $_return2+15)
               WAITMS(50)
            END_IF
         ELSE
            $check = 1
         END_IF
      END_CYC
   END_CYC
END_CYC
HALT

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #34 on: September 01, 2018, 09:56:19 PM »
Можно сделать вот так

Code: (clickermann) [Select]
GETSCREEN
SCANPXL($coord, 0,0, $_xmax,$_ymax, 12625556) // Пиксель аватарки open_78

$size = ARRSIZE($coord)
FOR($i = 0,$i < $size, 2)
   IF( (PXL($coord[$i]+1, $coord[$i+1]) = 9266230) & (PXL($coord[$i]+2, $coord[$i+1]) = 11769980) & (PXL($coord[$i]+3, $coord[$i+1]) = 15327713) )
      MOVE($coord[$i], $coord[$i+1])
      HALT
   END_IF
END_CYC
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PICTURE_IN заменить на IF_PIXEL_IN/PXL
« Reply #35 on: September 03, 2018, 09:36:15 AM »
На дату обращаем внимание.  1,5 года теме. open_78 уже и сам что хочешь напишет и в разных вариантах.