Author Topic: Помош со скриптом  (Read 3282 times)

0 Members and 1 Guest are viewing this topic.

Bukasch

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Помош со скриптом
« on: May 28, 2022, 03:31:00 AM »
Всем привет, не могу понять как написать скрипт. В кратце о скрипте:
Есть 4 точки каждая из которых меняет цвет с зеленого на красный. Когда к примеру на точке 1 пиксель становится зеленым запускается мой сценарии после ждем красный и тоже запускаем сценарий и так по кругу. Токо для 4 точек
Я пришол к этому, это для одной точки.

WAIT(3)
GETSCREEN
WHILE(PXL (1185, 580) ! 13297609) // ждем зеленый
   WAITMS (100)
   GETSCREEN
END_CYC

// Мой сценарий

GETSCREEN
WHILE(PXL (1185, 580) ! 1700990) // ждем красный
   WAITMS (100)
   GETSCREEN
END_CYC

// Мой сценарий

Не знаю как сделать для 4 и чтобы они работали независемо друг от друга.

Иван_Васильевич

  • Освоившийся
  • **
  • Posts: 72
    • View Profile
Re: Помош со скриптом
« Reply #1 on: May 28, 2022, 06:46:28 AM »
Сдается  у нас очередная рулетка :D
Вижу у автора с языком плоховато, поэтому от просившихся сюда подпрограмм пришол :o к более простому варианту Помоши. ???
Code: (clickermann) [Select]
#name "скрипт - Ждун"
//вместо 100,100 вписать координаты проверяемых пикселей!
GETSCREEN
IF($var1=0)
   IF(PXL(1185,580)=13297609)  // ждем зеленый
      LOGWRITE ("зеленый 1")     
      $var1=1
      // Мой сценарий
   END_IF
ELSE
   IF(PXL(1185,580)=1700990) // ждем красный
      LOGWRITE ("красный 1")
      $var1=0
      // Мой сценарий
   END_IF
END_IF

IF($var2=0)
   IF(PXL(100,100)=13297609)  // ждем зеленый
      LOGWRITE ("зеленый 2")     
      $var2=1
      // Мой сценарий
   END_IF
ELSE
   IF(PXL(100,100)=1700990) // ждем красный
      LOGWRITE ("красный 2")
      $var2=0
      // Мой сценарий
   END_IF
END_IF

IF($var3=0)
   IF(PXL(100,100)=13297609)  // ждем зеленый
      LOGWRITE ("зеленый 3")     
      $var3=1
      // Мой сценарий
   END_IF
ELSE
   IF(PXL(100,100)=1700990) // ждем красный
      LOGWRITE ("красный 3")
      $var3=0
      // Мой сценарий
   END_IF
END_IF

IF($var4=0)
   IF(PXL(100,100)=13297609)  // ждем зеленый
      LOGWRITE ("зеленый 4")     
      $var4=1
      // Мой сценарий
   END_IF
ELSE
   IF(PXL(100,100)=1700990) // ждем красный
      LOGWRITE ("красный 4")
      $var4=0
      // Мой сценарий
   END_IF
END_IF
WAITMS(100)

Bukasch

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Re: Помош со скриптом
« Reply #2 on: June 04, 2022, 02:47:54 PM »
Сдается  у нас очередная рулетка :D
Вижу у автора с языком плоховато, поэтому от просившихся сюда подпрограмм пришол :o к более простому варианту Помоши. ???
Code: (clickermann) [Select]
#name "скрипт - Ждун"
//вместо 100,100 вписать координаты проверяемых пикселей!
GETSCREEN
IF($var1=0)
   IF(PXL(1185,580)=13297609)  // ждем зеленый
      LOGWRITE ("зеленый 1")     
      $var1=1
      // Мой сценарий
   END_IF
ELSE
   IF(PXL(1185,580)=1700990) // ждем красный
      LOGWRITE ("красный 1")
      $var1=0
      // Мой сценарий
   END_IF
END_IF

IF($var2=0)
   IF(PXL(100,100)=13297609)  // ждем зеленый
      LOGWRITE ("зеленый 2")     
      $var2=1
      // Мой сценарий
   END_IF
ELSE
   IF(PXL(100,100)=1700990) // ждем красный
      LOGWRITE ("красный 2")
      $var2=0
      // Мой сценарий
   END_IF
END_IF

IF($var3=0)
   IF(PXL(100,100)=13297609)  // ждем зеленый
      LOGWRITE ("зеленый 3")     
      $var3=1
      // Мой сценарий
   END_IF
ELSE
   IF(PXL(100,100)=1700990) // ждем красный
      LOGWRITE ("красный 3")
      $var3=0
      // Мой сценарий
   END_IF
END_IF

IF($var4=0)
   IF(PXL(100,100)=13297609)  // ждем зеленый
      LOGWRITE ("зеленый 4")     
      $var4=1
      // Мой сценарий
   END_IF
ELSE
   IF(PXL(100,100)=1700990) // ждем красный
      LOGWRITE ("красный 4")
      $var4=0
      // Мой сценарий
   END_IF
END_IF
WAITMS(100)

Спасибо за ответ.  Возникла проблема с тем что некоторые пиксели в указаных координатах просто мигают (появляются и исчезают) в этом случае выполнениее сценария бесмыслено. А нужно учитывать те которые появились и не исчезли ну или хотябы продержались некоторое время 10-15с. Есть ли такая функция?

Иван_Васильевич

  • Освоившийся
  • **
  • Posts: 72
    • View Profile
Re: Помош со скриптом
« Reply #3 on: June 04, 2022, 03:03:51 PM »
Естественно, что такой специфической функции нет. Нежно  скриптом засекать время при нахождении и ждать по таймеру исчезнет за отведённое время или нет.

Иван_Васильевич

  • Освоившийся
  • **
  • Posts: 72
    • View Profile
Re: Помош со скриптом
« Reply #4 on: June 04, 2022, 03:21:12 PM »
Спасибо за ответ.  Возникла проблема с тем что некоторые пиксели в указаных координатах просто мигают (появляются и исчезают) в этом случае выполнениее сценария бесмыслено. А нужно учитывать те которые появились и не исчезли ну или хотябы продержались некоторое время 10-15с. Есть ли такая функция?
Code: (clickermann) [Select]
#name "просто мигають"

$var=10 // указать некоторое время в секундах

GETSCREEN
WAITMS(500)

THREAD(name1, 1)
   IF($var1=0)
      IF(PXL(1185,580)=13297609)  // ждем зеленый
         WAIT($var)
         IF(PXL(1185,580)=13297609)
            LOGWRITE ("зеленый 1")
            $var1=1
            // Мой сценарий
         END_IF
      END_IF
   ELSE
      IF(PXL(1185,580)=1700990) // ждем красный
         WAIT($var)
         IF(PXL(1185,580)=1700990) // ждем красный
            LOGWRITE ("красный 1")
            $var1=0
            // Мой сценарий
         END_IF
      END_IF
   END_IF
   WAITMS(100)
END_THREAD

THREAD(name2, 1)
   IF($var2=0)
      IF(PXL(100,100)=13297609)  // ждем зеленый  вместо 100,100 вписать координаты проверяемых пикселей!
         WAIT($var)
         IF(PXL(100,100)=13297609)  // ждем зеленый
            LOGWRITE ("зеленый 2")
            $var2=1
            // Мой сценарий
         END_IF
      END_IF
   ELSE
      IF(PXL(100,100)=1700990) // ждем красный
         WAIT($var)
         IF(PXL(100,100)=1700990) // ждем красный
            LOGWRITE ("красный 2")
            $var2=0
            // Мой сценарий
         END_IF
      END_IF
   END_IF
   WAITMS(100)
END_THREAD

THREAD(name3, 1)
   IF($var3=0)
      IF(PXL(100,100)=13297609)  // ждем зеленый
         WAIT($var)
         IF(PXL(100,100)=13297609)  // ждем зеленый
            LOGWRITE ("зеленый 3")
            $var3=1
            // Мой сценарий
         END_IF
      END_IF
   ELSE
      IF(PXL(100,100)=1700990) // ждем красный
         WAIT($var)
         IF(PXL(100,100)=1700990) // ждем красный
            LOGWRITE ("красный 3")
            $var3=0
            // Мой сценарий
         END_IF
      END_IF
   END_IF
   WAITMS(100)
END_THREAD

THREAD(name4, 1)
   IF($var4=0)
      IF(PXL(100,100)=13297609)  // ждем зеленый
         WAIT($var)
         IF(PXL(100,100)=13297609)  // ждем зеленый
            LOGWRITE ("зеленый 4")
            $var4=1
            // Мой сценарий
         END_IF
      END_IF
   ELSE
      IF(PXL(100,100)=1700990) // ждем красный
         WAIT($var)
         IF(PXL(100,100)=1700990) // ждем красный
            LOGWRITE ("красный 4")
            $var4=0
            // Мой сценарий
         END_IF
      END_IF
   END_IF
   WAITMS(100)
END_THREAD

Bukasch

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Re: Помош со скриптом
« Reply #5 on: June 04, 2022, 04:17:21 PM »
Естественно, что такой специфической функции нет. Нежно  скриптом засекать время при нахождении и ждать по таймеру исчезнет за отведённое время или нет.

Простите меня за мою назойливость, но можете написать как это будет выгледеть здесь.

GETSCREEN
WHILE(PXL (100, 100) ! 255)
   WAITMS (100)
   GETSCREEN
END_CYC

Иван_Васильевич

  • Освоившийся
  • **
  • Posts: 72
    • View Profile
Re: Помош со скриптом
« Reply #6 on: June 04, 2022, 04:24:29 PM »
Естественно, что такой специфической функции нет. Нежно  скриптом засекать время при нахождении и ждать по таймеру исчезнет за отведённое время или нет.

Простите меня за мою назойливость, но можете написать как это будет выгледеть здесь.

GETSCREEN
WHILE(PXL (100, 100) ! 255)
   WAITMS (100)
   GETSCREEN
END_CYC
Нет это Вы меня простите, не понимаю, какое отношение ваш пример может иметь к вашей теме и чем не устроил готовый код?

Bukasch

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Re: Помош со скриптом
« Reply #7 on: June 04, 2022, 04:41:14 PM »
Естественно, что такой специфической функции нет. Нежно  скриптом засекать время при нахождении и ждать по таймеру исчезнет за отведённое время или нет.

Простите меня за мою назойливость, но можете написать как это будет выгледеть здесь.

GETSCREEN
WHILE(PXL (100, 100) ! 255)
   WAITMS (100)
   GETSCREEN
END_CYC
Нет это Вы меня простите, не понимаю, какое отношение ваш пример может иметь к вашей теме и чем не устроил готовый код?

Готовы код меня устроил, просто я хочу применить этот таймер к другим скриптам.

Иван_Васильевич

  • Освоившийся
  • **
  • Posts: 72
    • View Profile
Re: Помош со скриптом
« Reply #8 on: June 04, 2022, 04:47:11 PM »
Готовы код меня устроил, просто я хочу применить этот таймер к другим скриптам.
В вашем коде нет таймера, это цикл ожидания, пока указанный пиксель не станет заданного цвета.

Bukasch

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Re: Помош со скриптом
« Reply #9 on: June 13, 2022, 10:45:35 AM »
Спасибо за ответ.  Возникла проблема с тем что некоторые пиксели в указаных координатах просто мигают (появляются и исчезают) в этом случае выполнениее сценария бесмыслено. А нужно учитывать те которые появились и не исчезли ну или хотябы продержались некоторое время 10-15с. Есть ли такая функция?
Code: (clickermann) [Select]
#name "просто мигають"

$var=10 // указать некоторое время в секундах

GETSCREEN
WAITMS(500)

THREAD(name1, 1)
   IF($var1=0)
      IF(PXL(1185,580)=13297609)  // ждем зеленый
         WAIT($var)
         IF(PXL(1185,580)=13297609)
            LOGWRITE ("зеленый 1")
            $var1=1
            // Мой сценарий
         END_IF
      END_IF
   ELSE
      IF(PXL(1185,580)=1700990) // ждем красный
         WAIT($var)
         IF(PXL(1185,580)=1700990) // ждем красный
            LOGWRITE ("красный 1")
            $var1=0
            // Мой сценарий
         END_IF
      END_IF
   END_IF
   WAITMS(100)
END_THREAD

THREAD(name2, 1)
   IF($var2=0)
      IF(PXL(100,100)=13297609)  // ждем зеленый  вместо 100,100 вписать координаты проверяемых пикселей!
         WAIT($var)
         IF(PXL(100,100)=13297609)  // ждем зеленый
            LOGWRITE ("зеленый 2")
            $var2=1
            // Мой сценарий
         END_IF
      END_IF
   ELSE
      IF(PXL(100,100)=1700990) // ждем красный
         WAIT($var)
         IF(PXL(100,100)=1700990) // ждем красный
            LOGWRITE ("красный 2")
            $var2=0
            // Мой сценарий
         END_IF
      END_IF
   END_IF
   WAITMS(100)
END_THREAD

THREAD(name3, 1)
   IF($var3=0)
      IF(PXL(100,100)=13297609)  // ждем зеленый
         WAIT($var)
         IF(PXL(100,100)=13297609)  // ждем зеленый
            LOGWRITE ("зеленый 3")
            $var3=1
            // Мой сценарий
         END_IF
      END_IF
   ELSE
      IF(PXL(100,100)=1700990) // ждем красный
         WAIT($var)
         IF(PXL(100,100)=1700990) // ждем красный
            LOGWRITE ("красный 3")
            $var3=0
            // Мой сценарий
         END_IF
      END_IF
   END_IF
   WAITMS(100)
END_THREAD

THREAD(name4, 1)
   IF($var4=0)
      IF(PXL(100,100)=13297609)  // ждем зеленый
         WAIT($var)
         IF(PXL(100,100)=13297609)  // ждем зеленый
            LOGWRITE ("зеленый 4")
            $var4=1
            // Мой сценарий
         END_IF
      END_IF
   ELSE
      IF(PXL(100,100)=1700990) // ждем красный
         WAIT($var)
         IF(PXL(100,100)=1700990) // ждем красный
            LOGWRITE ("красный 4")
            $var4=0
            // Мой сценарий
         END_IF
      END_IF
   END_IF
   WAITMS(100)
END_THREAD

А можно строки с ожиданием цвета заменить на строки с ожиданием картинки? на подобие этого
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "bab.bmp", -1, 100)  чтобы скрипт ждал появление картинки и когда картинка появится после 10 секунд начинается мой сценарий. Я пробывал подстовлять эту строчку в скрипт но он не работает.