Что нового

Повтор второго цикла через определенный период времени.

jufas222

Знающий
Сообщения
93
Репутация
5
Версия AutoIt: v3.

Описание: Совместите эти 2 скрипта так что, бы второй скрипт срабатывал каждые пол часа или так как задам я, но при этом первый скрипт должен работать всегда (ну только должен переставать работать при выполнении действий второго скрипта), если это возможно...


Код:
TraySetToolTip('Кач - человек')
MsgBox(0,"Описание","F1 - Pause"&@CRLF&"F2 - NotPause")

HotKeySet("{F1}", "_Pause")
HotKeySet("{F2}", "_NotPause")
Global $Paused
Func _Pause()
    $Paused = True
    While $Paused
        Sleep(100)
    WEnd
EndFunc
Func _NotPause()
    $Paused = False
EndFunc


While 1
$aWinList = WinList('Counter-Strike')
$pid = WinGetProcess("Counter-Strike")
For $i = 1 To $aWinList[0][0] Step +1
    If WinGetProcess($aWinList[$i][1]) = $Pid Then
        Sleep (1000)
		ControlSend($aWinList[$i][1], '', '', '{Space}')
		Sleep (1000)
		ControlSend($aWinList[$i][1], '', '', '{0 down}')
		sleep (500)
		ControlSend($aWinList[$i][1], '', '', '{0 up}')
		Sleep (1000)
		ControlSend($aWinList[$i][1], '', '', '{5}')
        Sleep (1000)
		ControlSend($aWinList[$i][1], '', '', '{5}')
	    Sleep (1000)
		ControlSend($aWinList[$i][1], '', '', '{0 down}')
		Sleep(500)
		ControlSend($aWinList[$i][1], '', '', '{0 up}')
		Sleep (1000)
		ControlSend($aWinList[$i][1], '', '', '{2}')
		Sleep (1000)
		ControlSend($aWinList[$i][1], '', '', '{0 down}')
		Sleep (500)
		ControlSend($aWinList[$i][1], '', '', '{0 up}')
		Sleep (1000)
        ControlSend($aWinList[$i][1], '', '', '{9}')
		Sleep (1000)
		ControlSend($aWinList[$i][1], '', '', '{F5 down}')
		Sleep (Random(100,200))
		ControlSend($aWinList[$i][1], '', '', '{F5 up}')
		Sleep (500)
		ControlSend($aWinList[$i][1], '', '', '{8}')
		ExitLoop
    EndIf
 Next
 WEnd





Код:
$aWinList = WinList('Counter-Strike')
$pid = WinGetProcess("Counter-Strike")
For $i = 1 To $aWinList[0][0] Step +1
    If WinGetProcess($aWinList[$i][1]) = $Pid Then
        Sleep (1000)
        ControlSend($aWinList[$i][1], '', '', '{ё}') ;консоль открывается
        Sleep (1000)
        ControlSend($aWinList[$i][1], '', '', 'connect 62.122.213.23',1)
		ControlSend($aWinList[$i][1], '', '', ':',1)
		ControlSend($aWinList[$i][1], '', '', '27283',1)
        Sleep (100)
        ControlSend($aWinList[$i][1], '', '', '{ENTER}')
        ExitLoop
    EndIf
 Next
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
219
Код:
TraySetToolTip('Кач - человек')
MsgBox(0,"Описание","F1 - Pause"&@CRLF&"F2 - NotPause")

HotKeySet("{F1}", "_Pause")
HotKeySet("{F2}", "_NotPause")
Global $Paused
Func _Pause()
    $Paused = True
    While $Paused
        Sleep(100)
    WEnd
EndFunc
Func _NotPause()
    $Paused = False
EndFunc

AdlibRegister('connect', 30*60*1000) ;запускаем функцию connect каждые 30 минут

While 1
    $aWinList = WinList('Counter-Strike')
    $pid = WinGetProcess("Counter-Strike")
    For $i = 1 To $aWinList[0][0] Step +1
        If WinGetProcess($aWinList[$i][1]) = $Pid Then
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{Space}')
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{0 down}')
            sleep (500)
            ControlSend($aWinList[$i][1], '', '', '{0 up}')
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{5}')
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{5}')
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{0 down}')
            Sleep(500)
            ControlSend($aWinList[$i][1], '', '', '{0 up}')
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{2}')
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{0 down}')
            Sleep (500)
            ControlSend($aWinList[$i][1], '', '', '{0 up}')
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{9}')
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{F5 down}')
            Sleep (Random(100,200))
            ControlSend($aWinList[$i][1], '', '', '{F5 up}')
            Sleep (500)
            ControlSend($aWinList[$i][1], '', '', '{8}')
            ExitLoop
        EndIf
     Next
 WEnd

;помещаем код в функцию
Func connect()
    $aWinList = WinList('Counter-Strike')
    $pid = WinGetProcess("Counter-Strike")
    For $i = 1 To $aWinList[0][0] Step +1
        If WinGetProcess($aWinList[$i][1]) = $Pid Then
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{ё}') ;консоль открывается
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', 'connect 62.122.213.23',1)
            ControlSend($aWinList[$i][1], '', '', ':',1)
            ControlSend($aWinList[$i][1], '', '', '27283',1)
            Sleep (100)
            ControlSend($aWinList[$i][1], '', '', '{ENTER}')
            ExitLoop
        EndIf
    Next
EndFunc
 
Автор
J

jufas222

Знающий
Сообщения
93
Репутация
5
Спасибо вы мне очень помогли! Я по вашему примеру дописал ещё 1 функцию, её задача заключается в открытии чата, ввод текста и отправка его, но дело в том, что когда проходит 5 минут (поделил ваше время, так как не знаю, как ставить своё) чат открывается вписываются заданные мной данные и паралельно им за тот промежуток времени, пока пишутся мои данные вписываются клавиши 5,0,2,9, тоесть те которые в скрипте выше.
Так вот, возможно ли поставить на паузу,отключить, на время выполнения мною заданной функции???
Сейчас код выглядет так:

Код:
TraySetToolTip('Кач - человек')
MsgBox(0,"Описание","F1 - Pause"&@CRLF&"F2 - NotPause")

HotKeySet("{F1}", "_Pause")
HotKeySet("{F2}", "_NotPause")
Global $Paused
Func _Pause()
    $Paused = True
    While $Paused
        Sleep(100)
    WEnd
EndFunc
Func _NotPause()
    $Paused = False
EndFunc

AdlibRegister('connect', 30*60*1000) ;запускаем функцию connect каждые 30 минут
AdlibRegister('rs', 15*30*500) ;запускаем функцию rs каждые 5 минут

While 1
    $aWinList = WinList('Counter-Strike')
    $pid = WinGetProcess("Counter-Strike")
    For $i = 1 To $aWinList[0][0] Step +1
        If WinGetProcess($aWinList[$i][1]) = $Pid Then
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{Space}')
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{0 down}')
            sleep (500)
            ControlSend($aWinList[$i][1], '', '', '{0 up}')
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{5}')
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{5}')
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{0 down}')
            Sleep(500)
            ControlSend($aWinList[$i][1], '', '', '{0 up}')
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{2}')
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{0 down}')
            Sleep (500)
            ControlSend($aWinList[$i][1], '', '', '{0 up}')
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{9}')
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{F5 down}')
            Sleep (Random(100,200))
            ControlSend($aWinList[$i][1], '', '', '{F5 up}')
            ExitLoop
        EndIf
     Next
 WEnd

;помещаем код в функцию
Func connect()
    $aWinList = WinList('Counter-Strike')
    $pid = WinGetProcess("Counter-Strike")
    For $i = 1 To $aWinList[0][0] Step +1
        If WinGetProcess($aWinList[$i][1]) = $Pid Then
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', '{ё}') ;консоль открывается
            Sleep (1000)
            ControlSend($aWinList[$i][1], '', '', 'connect 62.122.213.23',1)
            ControlSend($aWinList[$i][1], '', '', ':',1)
            ControlSend($aWinList[$i][1], '', '', '27283',1)
            Sleep (100)
            ControlSend($aWinList[$i][1], '', '', '{ENTER}')
            ExitLoop
        EndIf
    Next
EndFunc


Func rs()
	$aWinList = WinList('Counter-Strike')
    $pid = WinGetProcess("Counter-Strike")
    For $i = 1 To $aWinList[0][0] Step +1
        If WinGetProcess($aWinList[$i][1]) = $Pid Then
            Sleep (100)
            ControlSend($aWinList[$i][1], '', '', '{н}')
                                  Sleep (1000)
			ControlSend($aWinList[$i][1], '', '', '{.}')
			ControlSend($aWinList[$i][1], '', '', '{к}')
			ControlSend($aWinList[$i][1], '', '', '{ы}')
			ExitLoop
		EndIf
	Next
EndFunc






P.S. Обьясните пожалуйста как писать время, до начала выполнения функции...
То что вы мне дали 30*60*1000 = 30 минут, я решил поделить все числа на 2, что бы получить 15 минут, но у меня вышло 5.
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
219
jufas222 [?]
Обьясните пожалуйста как писать время, до начала выполнения функции
В милисекундах.
30 минут = 30*60 секунд = 1800 секунд = 30*60*1000 милисекунд = 1800000 милисекунд
15 минут = 30/2 минут = 30/2*60*1000 милисекунд = 15*60*1000 милисекунд

и паралельно им за тот промежуток времени, пока пишутся мои данные вписываются клавиши 5,0,2,9, тоесть те которые в скрипте выше.
Не понял. Что в итоге оказывается написанным?
 
Автор
J

jufas222

Знающий
Сообщения
93
Репутация
5
С временем разобрался, спасибо.


dwerf [?]
Не понял. Что в итоге оказывается написанным?

У меня в скрипте как вы видите идёт нажатие клавиш: пробел, 9,2,0,5.

Дело в том, что когда проходит заданное время в данном случае 5 минут. Открывается чат в игре и вписуется ".кы", но так как скрипт с нажатиями клавиш не останавливается он вписует за тот, короткий промежуток времени 2,9,0,5 (примерно). он пишет тот текст на котором сейчас находится скрипт.

Например: открылся чат, но действие скрипта, то не остановилось, а скрипт находится на
Код:
ControlSend($aWinList[$i][1], '', '', '{5}')
за это время пока вписуется текст из функции, впишется в текст цифра "5" и тем самым текст получится не корректным, например: ".к0000ы"

Возможно ли сделать так: Запустили скрипт, прошло 5 минут, скрипт где симулируется нажатие клавиш прекращает работу на 5 секунд, и потом заного, или с того жи места возобновляет свою работу.
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
219
jufas222 [?]
Возможно ли сделать так: Запустили скрипт, прошло 5 минут, скрипт где симулируется нажатие клавиш прекращает работу на 5 секунд, и потом заного, или с того жи места возобновляет свою работу.
огда вызывается connect() или rs() скрипт, где симулируются нажатия цифр, автоматически останавливается. Допишите в начале функций rs() и connect() Sleep(5000).
Получится следующее: основная часть скрипта останавливается, вызывается одна из функций, эта функция ждёт 5 секунд и только потом выполняет свою работу.
 
Автор
J

jufas222

Знающий
Сообщения
93
Репутация
5
У меня получилось, большое спасибо вам, но я не пойму....Sleep останавливает главный скрипт? или останавливает скрипт, и задерживает действие функции на заданное время, если второй вариант, то не лучше ли поставить 100 м/c, вместо 5сек.
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
219
jufas222 [?]
Sleep останавливает главный скрипт?
Выполняется главный скрипт ->
через X времени главный скрипт прерывается ->
срабатывает одна из функций ->
в функции срабатывает Sleep ->
Sleep выполняется Y времени ->
Sleep завершается ->
функция продолжает работать ->
функция завершается ->
главный скрипт выполняется с того момента, на котором он прервался ->
через X времени главный скрипт прерывается ->
срабатывает одна из функций ->
...
 
Автор
J

jufas222

Знающий
Сообщения
93
Репутация
5
Я так и понял, спасибо большое за решение моей проблемы.
 
Верх