Author Topic: Нахождение по цвету  (Read 2852 times)

0 Members and 1 Guest are viewing this topic.

Psix

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Нахождение по цвету
« on: January 15, 2017, 12:48:18 PM »
Совсем не соображаю в программировании, на бирже желающих не нашел, пришлось сюда перебраться, заранее извините :D
Вот написал нахождение, при появлении этого цвета- он жмет туда ЛКМ. Как теперь это все сделать, чтобы он искал эти цвета на продолжении всего скрипта? То есть выполнялся определенный скрипт, как только появился данный цвет - он тыкнул туда ЛКМ. Эти окна выползают в неопределенное время, может вылезти любое из них.
Code: (clickermann) [Select]
GETSCREEN
 if_pixel_in(828, 191, 852, 213, 4815250)
 lclick(838, 199)
 end_if
GETSCREEN
if_pixel_in(821, 188, 849, 218, 16777215)
lclick(833, 197)
end_if
GETSCREEN
if_pixel_in(808, 402, 817, 410, 2045887)
lclick(817, 402)
end_if
GETSCREEN
if_pixel_in(733, 218, 754, 236, 15132390)
lclick(740, 227)
end_if
GETSCREEN
if_pixel_in(756, 199, 772, 216, 15066597)
lclick(763, 207)
end_if
GETSCREEN
if_pixel_in(626, 790, 660, 820, 16777215)
lclick(629, 816)
end_if

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Нахождение по цвету
« Reply #1 on: January 15, 2017, 01:15:20 PM »
Для начала добавим задержки после клика. Выполнение скрипта без задержек это большая нагрузка на процессор. И главное после клика должно пройти время на изменения и только потом нужно снова искать.

Данный скрипт просто ищет последовательно в зонах заданный цвет по кругу. Если находит выполняет внутренность условия тоесть клик.
Code: (clickermann) [Select]
GETSCREEN
if_pixel_in(828, 191, 852, 213, 4815250)
   lclick(838, 199)
   WAITMS(1000)
end_if

GETSCREEN
if_pixel_in(821, 188, 849, 218, 16777215)
   lclick(833, 197)
   WAITMS(1000)
end_if

GETSCREEN
if_pixel_in(808, 402, 817, 410, 2045887)
   lclick(817, 402)
   WAITMS(1000)
end_if

GETSCREEN
if_pixel_in(733, 218, 754, 236, 15132390)
   lclick(740, 227)
   WAITMS(1000)
end_if

GETSCREEN
if_pixel_in(756, 199, 772, 216, 15066597)
   lclick(763, 207)
   WAITMS(1000)
end_if

GETSCREEN
if_pixel_in(626, 790, 660, 820, 16777215)
   lclick(629, 816)
   WAITMS(1000)
end_if

WAITMS(50)

Psix

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Нахождение по цвету
« Reply #2 on: January 15, 2017, 01:25:48 PM »
А как сделать чтобы на протяжении всего скрипта проверялось условие? То есть, если есть данные цвета в этих местах - он кликал на них? Если нет, то продолжал основные действия. В случае появления цвета - кликнул на него и продолжил работу с того же места. Такое возможно?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Нахождение по цвету
« Reply #3 on: January 15, 2017, 01:46:52 PM »
Я так понимаю у тебя есть еще код, который должен выполняться но параллельно ему должен идти анализ этих пикселов?
Тогда нужно использовать потоки.

Когда в потоке errors будет обнаружен пиксел, поток main ставится на паузу, выполняется клик и снова запускается поток main.
Code: (clickermann) [Select]
THREAD(main, 1) // это главный поток твоего скрипта
   
   LOGWRITE ("Основной скрипт")
   WAIT(1)
   
END_THREAD

THREAD(errors, 1) // это поток паралельного анализа
   GETSCREEN
   if_pixel_in(828, 191, 852, 213, 4815250)
      SETTHREAD (main, 0) // 0 - Пауза
      WAITMS(500)
      lclick(838, 199)
      WAITMS(1000)
      SETTHREAD (main, 1) // 1 - Старт
   end_if
   
   if_pixel_in(821, 188, 849, 218, 16777215)
      SETTHREAD (main, 0)
      WAITMS(500)
      lclick(833, 197)
      WAITMS(1000)
      SETTHREAD (main, 1)
   end_if
   
   if_pixel_in(808, 402, 817, 410, 2045887)
      SETTHREAD (main, 0)
      WAITMS(500)
      lclick(817, 402)
      WAITMS(1000)
      SETTHREAD (main, 1)
   end_if
   
   if_pixel_in(733, 218, 754, 236, 15132390)
      SETTHREAD (main, 0)
      WAITMS(500)
      lclick(740, 227)
      WAITMS(1000)
      SETTHREAD (main, 1)
   end_if
   
   if_pixel_in(756, 199, 772, 216, 15066597)
      SETTHREAD (main, 0)
      WAITMS(500)
      lclick(763, 207)
      WAITMS(1000)
      SETTHREAD (main, 1)
   end_if
   
   if_pixel_in(626, 790, 660, 820, 16777215)
      SETTHREAD (main, 0)
      WAITMS(500)
      lclick(629, 816)
      WAITMS(1000)
      SETTHREAD (main, 1)
   end_if
   
   WAITMS(50)
END_THREAD

WAIT(1)

Psix

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Нахождение по цвету
« Reply #4 on: January 15, 2017, 02:44:47 PM »
Спасибо, вроде то, что мне нужно - пойду пробовать. :)

Psix

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Нахождение по цвету
« Reply #5 on: January 16, 2017, 05:27:55 PM »
Можно ли сделать привязку в BlueStacksе? Если можно, то подскажите как...