Что нового

2 цикла в 1 скрипте

Anjelo

Новичок
Сообщения
5
Репутация
0
Собственно, я только учусь потому не судите строго. Есть 2 скрипта по отдельности и вместе они работают идеально, но приходится запускать два скрипта, хотелось бы скомпоновать их в 1, и я ни как не соображу как это сделать.

Код:
HotKeySet("{F7}", "toggle1") ; активация
Global $toggle1
Func toggle1 ()
$toggle1 = Not $toggle1
EndFunc
While 1
		Select
			Case $toggle1
			Send("{F1}") 
			Sleep(1000)
			Send("{F2}") 
			Sleep(5000)
			Send("{F2}") 
			Sleep(5000)
			Send("{F2}") 
			Sleep(5000)
			Send("{F2}") 
			Sleep(5000)
			Send("{F2}") 
			Sleep(5000)
			Send("{F2}") 
			Sleep(5000)
			Send("{F3}")
			Sleep(1000)
			Send("{F3}")
			Sleep(1000)
			case Else
			Sleep(1000)
		EndSelect
	Sleep(1000)
WEnd


Код:
HotKeySet("{F8}", "toggle2") ; активация
Global $toggle2
Func toggle2 ()
$toggle2 = Not $toggle2
EndFunc
While 1
		Select
			Case $toggle2
			Send("{NUMPAD5}")
			Sleep(1200000)
			case Else
			Sleep(1000)
		EndSelect
	Sleep(1000)
WEnd
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Re: 2 цикла в 1 скрипте не получается

Так не пробовал?

Код:
HotKeySet("{F7}", "toggle1") ; активация
Global $toggle1
HotKeySet("{F8}", "toggle2") ; активация
Global $toggle2
Func toggle2 ()
$toggle2 = Not $toggle2
EndFunc
Func toggle1 ()
$toggle1 = Not $toggle1
EndFunc
While 1
      Select
         Case $toggle1
         Send("{F1}")
         Sleep(1000)
         Send("{F2}")
         Sleep(5000)
         Send("{F2}")
         Sleep(5000)
         Send("{F2}")
         Sleep(5000)
         Send("{F2}")
         Sleep(5000)
         Send("{F2}")
         Sleep(5000)
         Send("{F2}")
         Sleep(5000)
         Send("{F3}")
         Sleep(1000)
         Send("{F3}")
         Sleep(1000)
         case Else
         Sleep(1000)
      EndSelect
   Sleep(500)
      Select
         Case $toggle2
         Send("{NUMPAD5}")
         Sleep(1200000)
         case Else
         Sleep(1000)
      EndSelect
  Sleep(500)
WEnd
 
Автор
A

Anjelo

Новичок
Сообщения
5
Репутация
0
Re: 2 цикла в 1 скрипте не получается

Немного не так, если вы знакомы с онлайн играми то объясню, первый скрипт для кача: таргет цель (Ф1), атака 6 раз(Ф2), подбор дропа 2 раза(Ф3) и так по циклу пока не остановлю, второй скрипт для бафа каждые 20 минут определенного умения (num5), а ваш скрипт задерживает выполнение 1 скрипта на 20 минут, а он должен работать постоянно.

2Belfigor, извините исправил
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Используй TImerInit() TimerDiff(), тогда сможешь уместить эти 2 действия в одном скрипте.
 

NoMad73rus

Продвинутый
Сообщения
124
Репутация
80
Зачем городить таймеры, если есть AdlibRegister? Я бы сделал так:
Код:
HotKeySet("{F7}", "toggle1") ; активация
HotKeySet("{F8}", "toggle2") ; активация
Global $toggle1
Global $toggle2

While 1
        Select
            Case $toggle1
            Send("{F1}")
            Sleep(1000)
            Send("{F2}")
            Sleep(5000)
            Send("{F2}")
            Sleep(5000)
            Send("{F2}")
            Sleep(5000)
            Send("{F2}")
            Sleep(5000)
            Send("{F2}")
            Sleep(5000)
            Send("{F2}")
            Sleep(5000)
            Send("{F3}")
            Sleep(1000)
            Send("{F3}")
            Sleep(1000)
            case Else
            Sleep(1000)
        EndSelect
    Sleep(1000)
WEnd

Func toggle1 ()
	$toggle1 = Not $toggle1
EndFunc

Func toggle2 ()
	If $toggle2 Then AdlibRegister('_baf', 1200000)
	If not $toggle2 Then AdlibUnRegister('baf')
	$toggle2 = Not $toggle2
EndFunc

Func _baf()
	Send("{NUMPAD5}")
EndFunc
 
Автор
A

Anjelo

Новичок
Сообщения
5
Репутация
0
Упростив 1 скрипт и уменьшив слип для проверки работоспособности у нас по идее должен был получится следующи результат: 555556555556555... но не выходит такового.

Код:
HotKeySet("{F7}", "toggle1") ; активация
HotKeySet("{F8}", "toggle2") ; активация
Global $toggle1, $toggle2

While 1
        Select
            Case $toggle1
            Send("{NUMPAD5}")
            Sleep(1000)
            case Else
            Sleep(100)
        EndSelect
    Sleep(100)
WEnd

Func toggle1 ()
    $toggle1 = Not $toggle1
EndFunc

Func toggle2 ()
    If $toggle2 Then AdlibRegister('_baf', 5000)
    If not $toggle2 Then AdlibUnRegister('baf')
    $toggle2 = Not $toggle2
EndFunc

Func _baf()
    Send("{NUMPAD6}")
EndFunc
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
NoMad73rus сказал(а):
Зачем городить таймеры, если есть AdlibRegister? Я бы сделал так:
Использование Adlib для скрипта такого примитивного уровня ведет к отупению разработчика. И в будущем когда он захочет прикрутить к своему скрипту ГУИ ему придется засовывать гуи в один из уже существующих циклов и делать как я написал выше.
 
Автор
A

Anjelo

Новичок
Сообщения
5
Репутация
0
я наверно совсем тупой, сделал так и все равно не робит

Код:
HotKeySet("{F7}", "toggle1") ; активация

Global $toggle1

Func toggle1 ()
$toggle1 = Not $toggle1
EndFunc

$begin=TimerInit()

While 1
	Select
		case $toggle1
		Send("{NUMPAD5}") 
		Sleep(1000)
	EndSelect

	If TimerDiff($begin) = 5000 Then
		Send("{NUMPAD6}")
	$begin=TimerInit() 
	EndIf
WEnd
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Наверное потому, что вероятность того, что будет ровно 5000ms довольно мала... :smile:)

Код:
HotKeySet("{F7}", "toggle1") ; активация

Global $toggle1

Func toggle1 ()
$toggle1 = Not $toggle1
EndFunc

$begin=TimerInit()

While 1
	Select
        case $toggle1
        Send("{NUMPAD5}")
        Sleep(1000)
    EndSelect
    If TimerDiff($begin) > 5000 Then
        Send("{NUMPAD6}")
    $begin=TimerInit()
    EndIf
WEnd
 
Верх