Что нового

Пошаговое выполнение скрипта при появление нужного пикселя

Goldenx

Новичок
Сообщения
14
Репутация
0
В чем вся суть проблемы. Скрипт нажимает на ссылку А, ждет пока появится нужный пиксель в координатах (х, у), как он появляется нажимает на ссылку Б.

Тоесть просто так не получается. Просто не успевает дождаться появления пикселя.

Код:
If $some_clause Then
    Сделать А
    If $sub_clause1 Then
        Сделать Б
    EndIf
EndIf


Добавить паузу скрипту тоже не вариант, так как появление пикселя может занять 1 секунду, а может и 5, 10. Надеюсь на помощь
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Goldenx,
Код:
Global $fNext = False
HotKeySet('{Esc}', '_Exit')

While 1
;~ 1-е действие
	Do
		ToolTip(StringFormat('First Now time: %02d:%02d:%02d\n$fNext = %s', @HOUR, @MIN, @SEC, $fNext), 0, 0)
		Sleep(1000)
;~ 		что-то ищем или, для примера, ждем
		If @SEC = 0 Then
;~ 			что-то делаем
			$fNext = True
		EndIf
	Until $fNext
	Beep(1500, 500)
;~ 2-е действие
	While $fNext
		ToolTip(StringFormat('Second Now time: %02d:%02d:%02d\n$fNext = %s', @HOUR, @MIN, @SEC, $fNext), 0, 0)
		Sleep(1000)
;~ 		что-то ищем или, для примера, ждем
		If @SEC = 30 Then
;~ 			что-то делаем
			$fNext = False
		EndIf
	WEnd
	Beep(1000, 500)
WEnd

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Goldenx [?]
ждет пока появится нужный пиксель в координатах (х, у)
Вот функция, которая это делает. Время в секундах. По умолчанию - бесконечно.
Код:
Func PixelWait($X, $Y, $Color, $WaitTime = 0)
  Local $Timer = TimerInit()
  While PixelGetColor($X, $Y) <> $Color
    If $WaitTime > 0 And TimerDiff($Timer) >= $WaitTime * 1000 Then Return 0
    Sleep(100)
  WEnd
  Return 1
EndFunc
 
Автор
G

Goldenx

Новичок
Сообщения
14
Репутация
0
InnI
Незнаю в чем проблема, но скрипт просто жмет на (921, 131) и закрывается. Уже что только не перепробовал

Код:
Sleep (1000)

HotKeySet('{Esc}', '_Exit')

PixelWait()

  Func PixelWait()
    Local $Timer = TimerInit()
  While PixelGetColor(205, 207) = 0x730000
    If $WaitTime > 0 And TimerDiff($Timer) >= $WaitTime * 1000 Then 		MouseMove( 245, 210 )
		 MouseClick( "left" ) 
		 Return 0
  WEnd
  		 MouseMove( 921, 131 )
		 MouseClick( "left" )
		 Return 1
  EndFunc

Func _Exit()
    Exit
 EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Goldenx
Код:
HotKeySet('{Esc}', '_Exit')

Global $WaitTime = 3 ; <= время ожидания в секундах

PixelWait()

Func PixelWait()
  Local $Timer = TimerInit()
  While PixelGetColor(205, 207) = 0x730000
    If $WaitTime > 0 And TimerDiff($Timer) >= $WaitTime * 1000 Then Return 0
    MouseMove( 245, 210 )
    MouseClick( "left" )
  WEnd
  MouseMove( 921, 131 )
  MouseClick( "left" )
  Return 1
EndFunc

Func _Exit()
  Exit
EndFunc
 
Верх