Что нового

Несколько вопросов по использованию Func в While с рядом условий и ограничений

Pontik

Новичок
Сообщения
9
Репутация
0
Добрый день!
У меня есть примитивный скрипт примерно такого плана:
Код:
While 1
circle1()
circle2()
circle3()
circle4()
WEnd

А теперь самое сложное, постараюсь изложить свои вопросы =)а они заключается в следующем, все circle, кроме 3-го должны использоваться по порядку и без задержек, а 3-ий только каждые 30 секунд, как это можно реализовать ?
И еще, очень интересно, если внутри функции появилась необходимость отправить весь скрипт в самое начало, допустим в circle2() произошла такая необходимость и нужно чтобы весь процесс начался сначала, т.е. с circle1() и далее все по порядку, я читал есть такая команда GOTO, но ее нет на autoit'е :(
Буду признателен всем кто ответит, спасибо за внимание.
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Re: Вопрос по Func

Pontik
Так подойдёт?
Код:
AdlibRegister("Circle_3", 30000)
Dim $y

While 1
    Sleep(150)
    Circle_1()
    Circle_2()
    Circle_4()
WEnd

Func Circle_1()
    Local $i
    Do
        ToolTip("Circle_1: " & $i,0,0)
        $i += 1
        Sleep(150)
    Until $i = 30
EndFunc

Func Circle_2()
    Local $i
    If $y = 3 Then Circle_1()
    Do
        ToolTip("Circle_2: " & $i,0,0)
        $i += 1
        Sleep(150)
    Until $i = 30
    $y += 1
EndFunc

Func Circle_3()
    Local $i
    Do
        ToolTip("Circle_3: " & $i,0,0)
        $i += 1
        Sleep(150)
    Until $i = 30
EndFunc

Func Circle_4()
    Local $i
    Do
        ToolTip("Circle_4: " & $i,0,0)
        $i += 1
        Sleep(150)
    Until $i = 30
EndFunc
 
Автор
P

Pontik

Новичок
Сообщения
9
Репутация
0
Re: Вопрос по Func

Огромное спасибо за AdlibRegister("Circle_3", 30000), очень интересная команда !!! 1-ый вопрос решен на 100%
Насчет 2-го, я в принципе так и делал, но у меня проблема была в том, что после такой вот ссылки If $y = 3 Then Circle_1() (если ссылку делать допустим с Circle_3()) то после того как будет выполнен Circle_1() скрипт опять проверит If $y = 3, игнорируя Circle_2(), а мне бы очень хотелось чтобы он начинал все заново в случае If $y = 3, такое реально ? я понимаю что можно еще написать:
Код:
If $y = 3 Then
Circle_1()
Circle_2()

но это не самый лучший вариант для меня, есть ли другие варианты ?
И еще 1 вопрос тут возник, как сделать, чтобы если весь цикл while 1 прошел 1-ый раз, но если 2 сек не прошло, то Circle_1() пропускался до тех пор, пока не пройдет указанное время ? я думаю для более четкой конкретики вот сама функция:

Код:
Func Circle_1()
	$cvet = 0x5D0196
	$var = PixelGetColor( 288, 941 )
	If $cvet = $var Then
	ControlSend($class1, "","", "{6}")
	EndIf
EndFunc


Причем этот 2-х секундный кулдаун должен появляться только если $cvet = $var

Еще раз большое спасибо за 1-ый ответ!


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

Тут еще кое-что выяснилось, в моем скрипте я использую

Код:
Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
    WEnd
EndFunc


Так вот, пауза, почему-то не действует на функцию, которую я добавил через AdlibRegister("Circle_3", 30000), можно ли сделать так, чтобы и на нее это действовало ?
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
Re: Вопрос по Func

Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки кода необходимо заключать в соответствующий тег ([code]), а также большие выдержки текста помещайте под тег [spoiler], там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.
А так же

За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Как правильно называть темы

Переименуйте тему иначе она будет закрыта.

С уважением, Администратор форума.
 
Автор
P

Pontik

Новичок
Сообщения
9
Репутация
0
Вроде все исправил
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
А теперь посмотрите какой я тег использовал.
У нас есть [autoit] и [code]
 
Верх