Что нового

как управлять несколькими функциями в 1-м скрипте?

Andrey85

Новичок
Сообщения
4
Репутация
0
Добрый день! Есть скрипт, состоящий из 3-х функций (_f1() , _f2(), _f3() ), при запуске скрипта все 3 функции начинают работать, нужно сделать так что бы (_f2()) можно было выключить или включить вручную, подскажите пожалуйста как
_f1()- ищет пиксель по цвету и кликает ЛКМ
_f2()- спамит в чат заданное сообщение в чат с интервалом в 10 сек
_f3()- нажимает клавиши 1,2,3 с интервалом в 30 сек

вот сам скрипт

Код:
MsgBox(0, "Кликалка", "Для запуска нажмите ОК, старт/стоп по кнопкам F5/F6, выход на F7")
WinActivate( "- ArcheAge - Apr 28 2015 (12:09:46) Луций")
Global $Paused
HotKeySet("{F5}", "Start")
HotKeySet("{F6}", "Stop")
HotKeySet("{F7}", "Close")


$text = InputBox("введите текст", "ввод")
Global $text


Global $hTimer_1 = TimerInit(), $hTimer_2 = TimerInit(), $hTimer_3 = TimerInit()


While 1
_f1()
_f2()
_f3()
Wend

WinActivate( "- ArcheAge - Apr 28 2015 (12:09:46) Луций")


Func _f1()
If TimerDiff($hTimer_1) < 1000 Then Return
$hTimer_1 = TimerInit()

$Pos = PixelSearch(1342, 388, 1459, 435, 0xDBC08E)
if IsArray($Pos) Then
MouseMove($Pos[0],$Pos[1],0)
Sleep(500)
MouseClick("Left")
EndIf

$Pos = PixelSearch(1345, 569, 1456, 616, 0xDBC08E)
if IsArray($Pos) Then
MouseMove($Pos[0],$Pos[1],0)
Sleep(700)
MouseClick("Left")
EndIf

$Pos = PixelSearch(1343, 749, 1458, 795, 0xDBC08E)
if IsArray($Pos) Then
MouseMove($Pos[0],$Pos[1],0)
Sleep(500)
MouseClick("Left")
EndIf

$Pos = PixelSearch(803, 22, 1115, 59, 0x8E2322)
if IsArray($Pos) Then
Sleep(500)
Send("{esc}")
EndIf

$Pos = PixelSearch(803, 22, 1115, 59, 0x3B7C24)
if IsArray($Pos) Then
Sleep(500)
Send("{esc}")
EndIf
EndFunc


Func _f2()
If TimerDiff($hTimer_2) < 10000 Then Return
$hTimer_2 = TimerInit()

send ("{ENTER}")
Sleep (100)
send ($text)
Sleep (100)
send("{ENTER}")
EndFunc


Func _f3()
If TimerDiff($hTimer_3) < 30000 Then Return
$hTimer_3 = TimerInit()
Send("{1}")
Sleep(3000)
Send("{2}")
Sleep(3000)
Send("{3}")
EndFunc


Func Stop()
$Paused = NOT $Paused
While $Paused
sleep(100)
WEnd
EndFunc
Func Close()
Exit 0
EndFunc
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Может это поможет
Код:
AdlibRegister

Хотя я похоже не понял вопроса. Если надо чтобы f2() можно было включить выключить, то задайте условие.
Код:
if $P= False Then f2()

А значение $P меняйте вызовом по горячим клавишам.
 
Автор
A

Andrey85

Новичок
Сообщения
4
Репутация
0
edyapd сказал(а):
Может это поможет
Код:
AdlibRegister

а куда вставить этот код??


Добавлено:
Сообщение автоматически объединено:

Andrey85 сказал(а):
Добрый день! Есть скрипт, состоящий из 3-х функций (_f1() , _f2(), _f3() ), при запуске скрипта все 3 функции начинают работать, нужно сделать так что бы (_f2()) можно было выключить или включить вручную, подскажите пожалуйста как
_f1()- ищет пиксель по цвету и кликает ЛКМ
_f2()- спамит в чат заданное сообщение в чат с интервалом в 10 сек
_f3()- нажимает клавиши 1,2,3 с интервалом в 30 сек

вот сам скрипт

Код:
MsgBox(0, "Кликалка", "Для запуска нажмите ОК, старт/стоп по кнопкам F5/F6, выход на F7")
WinActivate( "- ArcheAge - Apr 28 2015 (12:09:46) Луций")
Global $Paused
HotKeySet("{F5}", "Start")
HotKeySet("{F6}", "Stop")
HotKeySet("{F7}", "Close")


$text = InputBox("введите текст", "ввод")
Global $text


Global $hTimer_1 = TimerInit(), $hTimer_2 = TimerInit(), $hTimer_3 = TimerInit()


While 1
_f1()
_f2()
_f3()
Wend

WinActivate( "- ArcheAge - Apr 28 2015 (12:09:46) Луций")


Func _f1()
If TimerDiff($hTimer_1) < 1000 Then Return
$hTimer_1 = TimerInit()

$Pos = PixelSearch(1342, 388, 1459, 435, 0xDBC08E)
if IsArray($Pos) Then
MouseMove($Pos[0],$Pos[1],0)
Sleep(500)
MouseClick("Left")
EndIf

$Pos = PixelSearch(1345, 569, 1456, 616, 0xDBC08E)
if IsArray($Pos) Then
MouseMove($Pos[0],$Pos[1],0)
Sleep(700)
MouseClick("Left")
EndIf

$Pos = PixelSearch(1343, 749, 1458, 795, 0xDBC08E)
if IsArray($Pos) Then
MouseMove($Pos[0],$Pos[1],0)
Sleep(500)
MouseClick("Left")
EndIf

$Pos = PixelSearch(803, 22, 1115, 59, 0x8E2322)
if IsArray($Pos) Then
Sleep(500)
Send("{esc}")
EndIf

$Pos = PixelSearch(803, 22, 1115, 59, 0x3B7C24)
if IsArray($Pos) Then
Sleep(500)
Send("{esc}")
EndIf
EndFunc


Func _f2()
If TimerDiff($hTimer_2) < 10000 Then Return
$hTimer_2 = TimerInit()

send ("{ENTER}")
Sleep (100)
send ($text)
Sleep (100)
send("{ENTER}")
EndFunc


Func _f3()
If TimerDiff($hTimer_3) < 30000 Then Return
$hTimer_3 = TimerInit()
Send("{1}")
Sleep(3000)
Send("{2}")
Sleep(3000)
Send("{3}")
EndFunc


Func Stop()
$Paused = NOT $Paused
While $Paused
sleep(100)
WEnd
EndFunc
Func Close()
Exit 0
EndFunc
нужно что бы при запуске скрипта, работали _f1() и f3(), а _f2 включалась и выключалась кнопкой F5 например


Добавлено:
Сообщение автоматически объединено:

edyapd сказал(а):
Может это поможет
Код:
AdlibRegister

Хотя я похоже не понял вопроса. Если надо чтобы f2() можно было включить выключить, то задайте условие.
Код:
if $P= False Then f2()

А значение $P меняйте вызовом по горячим клавишам.

подскажите пожалуйста в какую часть скрипта вставить ваш код?
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Не надо так много цитат :smile:
Примерно так
Код:
HotKeySet("{F1}", "Start_f2")
Global $P = False

While 1
	Sleep(200)
WEnd

Func _f2()
	ConsoleWrite('Спамим' & @LF)
EndFunc

Func Start_f2()
	$P = Not $P
	If $P Then
		AdlibRegister('_f2', 10000)
	Else
		AdlibUnRegister('_f2')
	EndIf
EndFunc

Остальное допишите
 
Автор
A

Andrey85

Новичок
Сообщения
4
Репутация
0
edyapd сказал(а):
Не надо так много цитат :smile:
Примерно так
Код:
HotKeySet("{F1}", "Start_f2")
Global $P = False

While 1
	Sleep(200)
WEnd

Func _f2()
	ConsoleWrite('Спамим' & @LF)
EndFunc

Func Start_f2()
	$P = Not $P
	If $P Then
		AdlibRegister('_f2', 10000)
	Else
		AdlibUnRegister('_f2')
	EndIf
EndFunc

Остальное допишите
извините меня, но я не силён, в autoit и не могу понять куда что добавить и что дописать:smile:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Andrey85,
Предупреждение За нарушение общих правил (пункт В.2):
Старайтесь избегать “Over quoting” (преувеличенное цитирование) - цитируйте только необходимую часть сообщения, которая наилучшим образом подчеркнёт суть цитируемого.


С уважением, ваш Глобальный модератор.
 

forc1k

Новичок
Сообщения
42
Репутация
1
Попробуйте так. Запустить _f2() - по F8, остановить - по F9
Код:
MsgBox(0, "Кликалка", "Для запуска нажмите ОК, старт/стоп по кнопкам F5/F6, выход на F7")
WinActivate("- ArcheAge - Apr 28 2015 (12:09:46) Луций")
Global $Paused
;HotKeySet("{F5}", "Start")
HotKeySet("{F6}", "Stop")
HotKeySet("{F7}", "Close")
HotKeySet("{F8}", "Start_f2")
HotKeySet("{F9}", "Stop_f2")


$text = InputBox("введите текст", "ввод")
Global $text


Global $hTimer_1 = TimerInit(), $hTimer_2 = TimerInit(), $hTimer_3 = TimerInit()


While 1
	_f1()
	_f3()
WEnd

WinActivate("- ArcheAge - Apr 28 2015 (12:09:46) Луций")


Func _f1()
	If TimerDiff($hTimer_1) < 1000 Then Return
	$hTimer_1 = TimerInit()

	$Pos = PixelSearch(1342, 388, 1459, 435, 0xDBC08E)
	If IsArray($Pos) Then
		MouseMove($Pos[0], $Pos[1], 0)
		Sleep(500)
		MouseClick("Left")
	EndIf

	$Pos = PixelSearch(1345, 569, 1456, 616, 0xDBC08E)
	If IsArray($Pos) Then
		MouseMove($Pos[0], $Pos[1], 0)
		Sleep(700)
		MouseClick("Left")
	EndIf

	$Pos = PixelSearch(1343, 749, 1458, 795, 0xDBC08E)
	If IsArray($Pos) Then
		MouseMove($Pos[0], $Pos[1], 0)
		Sleep(500)
		MouseClick("Left")
	EndIf

	$Pos = PixelSearch(803, 22, 1115, 59, 0x8E2322)
	If IsArray($Pos) Then
		Sleep(500)
		Send("{esc}")
	EndIf

	$Pos = PixelSearch(803, 22, 1115, 59, 0x3B7C24)
	If IsArray($Pos) Then
		Sleep(500)
		Send("{esc}")
	EndIf
EndFunc   ;==>_f1


Func _f2()
	If TimerDiff($hTimer_2) < 10000 Then Return
	$hTimer_2 = TimerInit()

	Send("{ENTER}")
	Sleep(100)
	Send($text)
	Sleep(100)
	Send("{ENTER}")
EndFunc   ;==>_f2


Func _f3()
	If TimerDiff($hTimer_3) < 30000 Then Return
	$hTimer_3 = TimerInit()
	Send("{1}")
	Sleep(3000)
	Send("{2}")
	Sleep(3000)
	Send("{3}")
EndFunc   ;==>_f3


Func Stop()
	$Paused = Not $Paused
	While $Paused
		Sleep(100)
	WEnd
EndFunc   ;==>Stop
Func Close()
	Exit 0
EndFunc   ;==>Close

Func Start_f2()
	AdlibRegister("_f2")
EndFunc
Func Stop_f2()
	AdlibUnRegister("_f2")
	EndFunc
 
Автор
A

Andrey85

Новичок
Сообщения
4
Репутация
0
Andrey85 сказал(а):
edyapd сказал(а):
Не надо так много цитат :smile:
Примерно так
Код:
HotKeySet("{F1}", "Start_f2")
Global $P = False

While 1
	Sleep(200)
WEnd

Func _f2()
	ConsoleWrite('Спамим' & @LF)
EndFunc

Func Start_f2()
	$P = Not $P
	If $P Then
		AdlibRegister('_f2', 10000)
	Else
		AdlibUnRegister('_f2')
	EndIf
EndFunc

Остальное допишите
извините меня, но я не силён, в autoit и не могу понять куда что добавить и что дописать:smile:
всё заработало, спасибо большое:smile:
 
Верх