Что нового

Ждать появление цвета определённое время

Вовчик55

Новичок
Сообщения
57
Репутация
0
Возможно ли сделать так, чтобы ждало появление цвета в определённой точке экрана допустим лишь 5 секунд, а если он не появился - выполнить то, что было выше в цикле, а если появился - продолжить выполнение то что было ниже
Пример: кликает, затем ждёт пока в одной из двух точек появится нужный цвет и кликает в другом месте, но нужный цвет может вовсе не появиться, и тогда оно будет вечность ждать, а хотелось бы чтобы допустим через 5 сек ожидания снова выполнило клик в $X1,$Y1
Код:
While 1
MouseClick('primary', $X1, $Y1,1,0)
Sleep(100)

$Color2='EFF0F6'
$Color3='FFFFFF'
   Do
     $color203=PixelGetColor(957,931)
     $color23=Hex($color203,6)
     $color303=PixelGetColor(957,931)
     $color34=Hex($color303,6)
     Sleep(50)
  Until ($color23 = $Color2) Or ($color34=$Color3)

MouseClick('primary', $X1a, $Y1a,1,0)
Sleep(100)
WEnd
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Код:
$x1 = 100
$Y1 = 200
$X1a = 500
$Y1a = 300
$Color2 = "EFF0F6"
$Color3 = "FFFFFF"
While 1
   MouseClick("primary", $X1, $Y1, 1, 0)
   Sleep(100)
   $hTimer = TimerInit()
   Do
      $color203 = PixelGetColor(957, 931)
      $color23 = Hex($color203, 6)
      $color303 = PixelGetColor(957, 931)
      $color34 = Hex($color303, 6)
      Sleep(50)
   Until $color23 = $Color2 Or $color34 = $Color3 Or TimerDiff($hTimer) > 5000
   MouseClick("primary", $X1a, $Y1a, 1, 0)
   Sleep(100)
WEnd
 
Автор
Вовчик55

Вовчик55

Новичок
Сообщения
57
Репутация
0
Спасибо большое! А можно ли сделать выход из цикла при совпадении одного из цветов, но если время 5 сек истекло (и ни один из цветов не был найден), то чтобы цикл повторялся? Или я изначально неправильно сделал, взяв цикл
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Код:
$x1 = 100
$Y1 = 200
$X1a = 500
$Y1a = 300
$Color2 = "EFF0F6"
$Color3 = "FFFFFF"
Do
   MouseClick("primary", $X1, $Y1, 1, 0)
   Sleep(100)
   $hTimer = TimerInit()
   Do
      $color203 = PixelGetColor(957, 931)
      $color23 = Hex($color203, 6)
      $color303 = PixelGetColor(957, 931)
      $color34 = Hex($color303, 6)
      Sleep(50)
      $flag = $color23 = $Color2 Or $color34 = $Color3
   Until $flag Or TimerDiff($hTimer) > 5000
   MouseClick("primary", $X1a, $Y1a, 1, 0)
   Sleep(100)
Until $flag = True
Если важно, чтобы последний клик не происходил при достижении нужного цвета, то можно ещё этот клик обусловить типом причины выхода из внутреннего цикла. Если это не столь важно, то лучше оставить так.
 
Автор
Вовчик55

Вовчик55

Новичок
Сообщения
57
Репутация
0
Спасибо большущее, теперь всё отлично работает
 
Верх