Author Topic: Поиск пикселов определенных цветов.  (Read 5162 times)

0 Members and 1 Guest are viewing this topic.

zloyvip

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Есть функция GETSCREEN, которая ищет пиксел определенного цвета и если находит то запускает приложение.
GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 5342499)

EXECUTE("    ") //запуск приложения

Как сделать чтобы она искала пиксел не одного конкретного цвета, а скажем трёх и в случае нахождения пиксела любого из заданного списка цветов запускала приложение?

zloyvip

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Re: Поиск пикселов определенных цветов.
« Reply #1 on: November 03, 2015, 11:22:36 PM »
Указать цвета через запятую, была такая мысль, но подумал что это слишком просто, чтобы сработало. :) Спасибо!

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Поиск пикселов определенных цветов.
« Reply #2 on: November 05, 2015, 08:02:56 AM »
А зачем гадать, если есть справка.
[spoiler]
Quote
IF_PIXEL_IN

Синтаксис

IF_PIXEL_IN (x, y, x2, y2, color1, ...) - производит поиск пикселя заданного цвета в прямоугольной области буфера анализа


Параметры
x, y - числовые координаты левого верхнего угла области поиска
x2, y2 - числовые координаты правого нижнего угла области поиска
color1, ... - цвета, поиск которых будет осуществляться


Возвращаемые параметры
$_return1 - x координата найденного пикселя
$_return2 - y координата



Пример
getscreen

// поиск красного пикселя
IF_PIXEL_IN (10,20, 100, 40, 255)
 lclick($_return1, $_return2)
END_IF

// поиск красного или зеленого пикселя
IF_PIXEL_IN (10,20, 100, 40, 255, 65280)
 lclick($_return1, $_return2)
END_IF


Примечания
Как только первый попавшийся пиксель будет найден, инструкция вернет его координаты в переменные $_return1, $_return2 и прекратит анализ
Добавление каждого цвета увеличивает длительность анализа на 100%

[/spoiler]
Неужели не нужно узнать правильный синтаксис, да и вообще существующие команды и возможности.


Puncha

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Поиск пикселов определенных цветов.
« Reply #3 on: November 26, 2015, 12:12:17 PM »
Здравствуйте, хорошая программа, настроил на кв кач профы в аионе, работает хорошо (с записанными движениями мыши и фиксированным таймером, пока не пройдут все раны на изготовление).
На этом можно было бы и остановиться, но если есть время и функционал, че б не замутить покруче).
Время изготовления постоянно разное и постепенно добавляется количество ранов.
Поэтому попробовал контроль окончания изготовления, на изменение цвета в окне профессии:

это в процессе

это по окончании

цвет сундука меняется, вот мой текст:
lDown(432,628)
waitms(113)
  lUp(432,628)
waitms(30000)                                                          //30 сек взято условно чтоб проверял не сразу
IF_PIXEL_IN (504,227, 508,229, 3226180)
lclick($_return1, $_return2)
END_IF
waitms(10000)
lDown(906,863)                                     // клик на макросе разговор сдать кв
waitms(124)
  lUp(906,863)

но скрипт поиска пикселя не срабатывает, перепрыгивает на следующую команду не дождавшись появления нужного цвета, плохо различает оттенки серого?





мышей не смог второй раз найти 3226180
не сложнее будет сделать критерием анализ числа тут?



 
« Last Edit: November 26, 2015, 01:46:23 PM by Puncha »

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Re: Поиск пикселов определенных цветов.
« Reply #4 on: November 26, 2015, 01:29:36 PM »
сложнее, но это возможно.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Поиск пикселов определенных цветов.
« Reply #5 on: December 01, 2015, 11:38:53 AM »
...но скрипт поиска пикселя не срабатывает, перепрыгивает на следующую команду не дождавшись появления нужного цвета, плохо различает оттенки серого?

Вообще не различает. И не только серого. Без GETSCREEN


Команда IF_PIXEL_IN просто ищет, она ничего не ждёт. Чтобы ждать нужно делать поиск в цикле.
На самом деле здесь поиск вообще не нужен, нужен анализ цвета определённого пиксела.
Code: (clickermann) [Select]
lDown(432,628)
waitms(113)
lUp(432,628)
waitms(30000)

GETSCREEN
WHILE(PXL (506, 228) ! 3226180)
   WAITMS (100)
   GETSCREEN
END_CYC
lclick(506, 228)

waitms(10000)
lDown(906,863)
waitms(124)
lUp(906,863)
« Last Edit: December 01, 2015, 11:50:23 AM by Vint »