Что нового

Запуск функции после того, как другая функция выполнится несколько раз

Can

Новичок
Сообщения
59
Репутация
1
Подскажите пожалуйста, как в данном скрипте сделать так, чтобы Func Cycle4() выполнялась после того, как Func Cycle3() в скрипте выполнится 5 раз?

Код:
HotKeySet ( "{ESC}" ,"_Exit")


While 1 
   Cycle1()
   Cycle2()
   Cycle3()
   
   Cycle4()
   Sleep(270)
WEnd
Func _Exit()
    Exit
EndFunc

Func Cycle1() 
    ConsoleWrite("Cycle1()" & @CRLF)   
        PixelSearch( 180, 578, 187, 584, 0x40404F, 0, 1) 
         If Not @error Then 
        Sleep(100)
        Cycle2() 
    Else
        Cycle3() 
        EndIf
EndFunc 


Func Cycle2() 
    ConsoleWrite("Cycle2()" & @CRLF)
   
        Sleep(100)
        Cycle1() 
EndFunc 


Func Cycle3() 
    ConsoleWrite("Cycle3()" & @CRLF)
        Sleep(10000)
        Cycle1() 
    
EndFunc 
 
 
Func Cycle4() 
    ConsoleWrite("Cycle4()" & @CRLF)
        Sleep(90000)
        Cycle1() 
    
EndFunc
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Can
Если я правильно понял задачу, то, как то так:

Код:
HotKeySet ( "{ESC}" ,"_Exit")

Global $Cycle3 = 0

While 1
   Cycle1()
   Cycle2()
   Cycle3()

   Cycle4()
   Sleep(270)
WEnd

Func _Exit()
    Exit
EndFunc

Func Cycle1()
    ConsoleWrite("Cycle1()" & @CRLF)
        PixelSearch( 180, 578, 187, 584, 0x40404F, 0, 1)
		If Not @error Then
        Sleep(100)
        Cycle2()
    Else
        Cycle3()
        EndIf
EndFunc


Func Cycle2()
    ConsoleWrite("Cycle2()" & @CRLF)

        Sleep(100)
        Cycle1()
EndFunc


Func Cycle3()
	$Cycle3 += 1
    ConsoleWrite("Cycle3() #"&$Cycle3 & @CRLF)
        Sleep(10000)

		If $Cycle3 = 5 Then Cycle4()

		Cycle1()

EndFunc


Func Cycle4()
	$Cycle3 = 0
    ConsoleWrite("Cycle4()" & @CRLF)
        Sleep(90000)
        Cycle1()

EndFunc
 

Fever

Скриптер
Сообщения
308
Репутация
112
Код:
...
Func Cycle3()
   For $i = 1 To 5
    ConsoleWrite("Cycle3() #"&$Cycle3 & @CRLF)
        Sleep(10000)
   Next

   Cycle4()
EndFunc
...


так, помоему, будет куда лучше ;)
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,600
Репутация
940
Самый примитивный способ:
Код:
While 1
   Cycle1()
   Cycle2()
   For $i = 0 To 4 Step 1
        Cycle3()
   Next
   Cycle4()
   Sleep(270)
WEnd
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Belfigor, Fever

Func Cycle4() выполнялась после того, как Func Cycle3() в скрипте выполнится 5 раз?
А не в цикле!
Если я не прав, то дайте веслом по голове! :smile:
 
Автор
C

Can

Новичок
Сообщения
59
Репутация
1
Всем спасибо, первый вариант подошел.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,600
Репутация
940
SECTOR сказал(а):
Belfigor, Fever
Func Cycle4() выполнялась после того, как Func Cycle3() в скрипте выполнится 5 раз?
А не в цикле! Если я не прав, то дайте веслом по голове! :smile:
А в чём разница выполнится она 5 раз в цикле или же 5 раз просто копипастом? Единственная разница - в количестве строк, в случае цикла - 3 строки в тмвоем - 5.
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Belfigor сказал(а):
SECTOR сказал(а):
Belfigor, Fever
Func Cycle4() выполнялась после того, как Func Cycle3() в скрипте выполнится 5 раз?
А не в цикле! Если я не прав, то дайте веслом по голове! :smile:
А в чём разница выполнится она 5 раз в цикле или же 5 раз просто копипастом? Единственная разница - в количестве строк, в случае цикла - 3 строки в тмвоем - 5.

Ну запусти свой скрипт и мой, и сравни записи в консоле :smile:
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,600
Репутация
940
Ну в принципе да, но я понял как отработку функции просто 5 раз подряд :smile:
 
Верх