Уважаемые форумчане, помогите отловить ошибку в коде. Задача такая: кликер для игры (Requiem-online), простая бафалка, чтобы можно было афк перса оставить на час-полтора. GUI-интерфейс, где вводится откат бафа(или скила для некоторых классов) и задается клавиша, на которую следует жать. Так-то вроде все работает по отдельности, но когда скрипт прикручиваю к GUI лажа выходит, конкретно - не получается реализовать нажатие на паузу. Т.е. при запуске скрипта нажатие на кнопки в GUI не дает никакой реакции, он продолжает выполняться и отсылать нажатия, только при открытии Меню и т.п. нажатие на клавиши ставится на паузу.
Пробовал разные варианты: If-EndIf, Switch-Case-EndSwitch. На самом деле не пойму алгоритм взаимодействия GUI и скрипта...И еще, может посоветуете как реализовать вариант, когда человек вводит не 5 бафов, а 2-3, например, чтобы не грузить лишними процессами.
Пробовал разные варианты: If-EndIf, Switch-Case-EndSwitch. На самом деле не пойму алгоритм взаимодействия GUI и скрипта...И еще, может посоветуете как реализовать вариант, когда человек вводит не 5 бафов, а 2-3, например, чтобы не грузить лишними процессами.
Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=D:\AutoIT\Koda\Test Click!T.kxf
$Form1 = GUICreate("TEST Click!T", 453, 312, 192, 124)
$Menu1 = GUICtrlCreateMenu("Меню")
$start = GUICtrlCreateMenuItem("Click!T", $Menu1)
$pause = GUICtrlCreateMenuItem("Пауза", $Menu1)
$exit = GUICtrlCreateMenuItem("Выход", $Menu1)
$info = GUICtrlCreateMenu("Инфо")
$help = GUICtrlCreateMenuItem("Помощь", $info)
$about = GUICtrlCreateMenuItem("О программе", $info)
$time1 = GUICtrlCreateLabel("Длительность бафа, сек", 16, 32, 184, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$time2 = GUICtrlCreateLabel("Длительность бафа, сек", 16, 69, 184, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$time3 = GUICtrlCreateLabel("Длительность бафа, сек", 16, 106, 184, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$time4 = GUICtrlCreateLabel("Длительность бафа, сек", 16, 143, 184, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$time5 = GUICtrlCreateLabel("Длительность бафа, сек", 16, 180, 184, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$T1 = GUICtrlCreateInput("0", 208, 32, 49, 21)
$T2 = GUICtrlCreateInput("0", 208, 69, 49, 21)
$T3 = GUICtrlCreateInput("0", 208, 106, 49, 21)
$T4 = GUICtrlCreateInput("0", 208, 141, 49, 21)
$T5 = GUICtrlCreateInput("0", 208, 180, 49, 21)
$button1 = GUICtrlCreateLabel("Кнопка", 272, 32, 57, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$button2 = GUICtrlCreateLabel("Кнопка", 272, 68, 57, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$button3 = GUICtrlCreateLabel("Кнопка", 272, 105, 57, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$button4 = GUICtrlCreateLabel("Кнопка", 272, 142, 57, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$button5 = GUICtrlCreateLabel("Кнопка", 272, 178, 57, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$K1 = GUICtrlCreateCombo("1", 344, 32, 80, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL, $WS_VSCROLL))
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|0|-|=|F1|F2|F3|F4|F5|F6|F7|F8|F9|F10|F11|F12|NUMPAD0|NUMPAD1|NUMPAD2|NUMPAD3|NUMPAD4|NUMPAD5|NUMPAD6|NUMPAD7|NUMPAD8|NUMPAD9")
$K2 = GUICtrlCreateCombo("2", 344, 68, 80, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL, $WS_VSCROLL))
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|0|-|=|F1|F2|F3|F4|F5|F6|F7|F8|F9|F10|F11|F12|NUMPAD0|NUMPAD1|NUMPAD2|NUMPAD3|NUMPAD4|NUMPAD5|NUMPAD6|NUMPAD7|NUMPAD8|NUMPAD9")
$K3 = GUICtrlCreateCombo("3", 344, 103, 80, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL, $WS_VSCROLL))
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|0|-|=|F1|F2|F3|F4|F5|F6|F7|F8|F9|F10|F11|F12|NUMPAD0|NUMPAD1|NUMPAD2|NUMPAD3|NUMPAD4|NUMPAD5|NUMPAD6|NUMPAD7|NUMPAD8|NUMPAD9")
$K4 = GUICtrlCreateCombo("4", 344, 139, 80, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL, $WS_VSCROLL))
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|0|-|=|F1|F2|F3|F4|F5|F6|F7|F8|F9|F10|F11|F12|NUMPAD0|NUMPAD1|NUMPAD2|NUMPAD3|NUMPAD4|NUMPAD5|NUMPAD6|NUMPAD7|NUMPAD8|NUMPAD9")
$K5 = GUICtrlCreateCombo("5", 344, 175, 80, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL, $WS_VSCROLL))
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|0|-|=|F1|F2|F3|F4|F5|F6|F7|F8|F9|F10|F11|F12|NUMPAD0|NUMPAD1|NUMPAD2|NUMPAD3|NUMPAD4|NUMPAD5|NUMPAD6|NUMPAD7|NUMPAD8|NUMPAD9")
$bStart = GUICtrlCreateButton("Click!T", 42, 232, 97, 25)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$bPause = GUICtrlCreateButton("Пауза", 178, 232, 97, 25)
$bExit = GUICtrlCreateButton("Выход", 314, 232, 97, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Opt("SendKeyDownDelay", 500) ; задержка нажатия клавиш, т.е. клавиша будет удерживаться 0,5 сек
Global $clicker
Global $key1 = GUICtrlRead($K1), $key2 = GUICtrlRead($K2), $key3 = GUICtrlRead($K3), $key4 = GUICtrlRead($K4), $key5 = GUICtrlRead($K5) ; назначаем горячие клавиши из ComboBox'a
Global $timer1 = Number(GUICtrlRead($T1)), $timer2 = Number(GUICtrlRead($T2)), $timer3 = Number(GUICtrlRead($T3)), $timer4 = Number(GUICtrlRead($T4)), $timer5 = Number(GUICtrlRead($T5)) ; объявляем введенные таймеры
Global $otkat1, $otkat2, $otkat3, $otkat4, $otkat5
While 1
$nMsg = GUIGetMsg()
If $nMsg = $bPause Or $nMsg = $pause Then $clicker = False
If $nMsg = $GUI_EVENT_CLOSE Or $nMsg = $bExit Or $nMsg = $exit Then ExitLoop
If $nMsg = $about Then MsgBox(0, "About", "Requiem clicker 0.0.1")
If $nMsg = $help Then MsgBox(0, "Помощь", "Выберете длительность бафа (или скорость отката каста) и горячую клавишу этого заклинания, после этого нажмите 'Click!T' или 'Старт'. По умолчанию горячие клавиши: 1, 2, 3, 4, 5. А скорость отката равна 0.")
If $nMsg = $bStart Or $nMsg = $start Then count1()
WEnd
Exit
GUIDelete()
Func count1()
$otkat1 = TimerInit()
$otkat2 = TimerInit()
$otkat3 = TimerInit()
$otkat4 = TimerInit()
$otkat5 = TimerInit()
While True
Switch $nMsg
Case TimerDiff($otkat1)>$timer1 Then
Send($key1)
Case TimerDiff($otkat2)>$timer2 Then
Send($key2)
Case TimerDiff($otkat3)>$timer3 Then
Send($key3)
Case TimerDiff($otkat4)>$timer4 Then
Send($key4)
Case TimerDiff($otkat5)>$timer5 Then
Send($key5)
Case $nMsg = $bPause Or $nMsg = $pause Then $clicker = False
EndSwitch
WEnd
EndFunc