Author Topic: Нужен помощь  (Read 1275 times)

0 Members and 1 Guest are viewing this topic.

novickek

  • Зашел в гости
  • *
  • Posts: 1
    • View Profile
Нужен помощь
« on: January 11, 2018, 10:26:14 PM »
Здравствуйте гуру, нужна небольшая помощь в коде:
Code: (clickermann) [Select]
getscreen
IF_PIXEL_IN (0,0, 1366, 768, 255) // поиск пикселя
 WAITMS(500)
 MOVE($_return1+40, $_return2+50) // наведение на моба
 WAITMS(500)
 LCLICK($_return1+40, $_return2+50) // выстрел в моба
 WAITMS(500)
 LCLICK(1121,590) //отдать ход
 WAIT(5)
 ELSE
 LCLICK(1121,590) //нажать ок если нет моба на экране 
END_IF
Суть такова, что я не пойму где и как дальше дописать следующий поиск пикселя.
Что я преследую:
1 поиск нужно пикселя
2 Провести действие с этим пикселем.
3 Поиск следующего пикселя такого же цвета. (после найденного первого)
4 провести действие.
И в таком же действии до 5 раз
По данному скрипту получается что программа работает только с первым найденным пикселем.
Заранее спасибо за помощь! :)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Нужен помощь
« Reply #1 on: January 12, 2018, 08:27:20 AM »
Нужно использовать другую функцию поиска всех пикселов заданного цвета.
Code: (clickermann) [Select]
GETSCREEN
SCANPXL($ARR_SCAN, 0,0, $_xmax,$_ymax, 255)
IF(ARRSIZE($ARR_SCAN) = 0)
   LCLICK(1121,590) //нажать ок если нет моба на экране
   WAITMS(500)
END_IF

$ARR_NUM = 0
$SHIFT_X = 0 // смещение (кол-во игнор пикселов после найденного)
$SHIFT_Y = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
   $X = $ARR_SCAN[$ARR_NUM]
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN[$ARR_NUM]
   INC($ARR_NUM,1)
   IF(($X > $X2)|($Y > $Y2))
      $X2 = $X + $SHIFT_X
      $Y2 = $Y + $SHIFT_Y
      MOVE($X+40, $Y+50) // наведение на моба
      WAITMS(500)
      LCLICK($X+40, $Y+50) // выстрел в моба
      WAITMS(500)
      LCLICK(1121,590) //отдать ход
      WAIT(5)
   END_IF
END_CYC
UNDEFINE($ARR_SCAN)