Помогите связать GUI со скриптом. Я привык к делфи синтаксису c ивентами и записью элемент.свойство и не совсем понимаю синтаксис AutoIt.
Написал скрипт для игрушки:
Написал GUI
Волнует меня странная организация цикла в скрипте - когда он запущен кнопка W всё время отпускается и бежать невозможно, но без этого я не знаю как остановить бег после включения ф-ии runfor
Думаю, что с таким циклом будет сложно привязать скрипт к GUI, поэтому прошу вас помочь в первую очередь с циклом.
Еще прошу помощи со связью кнопки старт и активной вкладки (tab). Т.е. привязать каждую из трех ф-й к вкладке
tunnel tab - startmine
layer tab - square
run tab - runfor
start button - stopw
Должно получиться так:
-Пользователь открывает вкладку, задаёт параметры
-Opt("SendKeyDownDelay", 230) только вместо 230 нужно вставить введённое в GuiCtrlCreateInput значение
-MouseMove($pos[0]+40, $pos[1]) только вместо +40 нужно +GuiCtrlCreateInput
-Как сделть чтобы скрипт "бежал" определённое время, т.е. давил кнопку W например 30 сек я еще не придумал.
Спасибо, что прочитали. Буду рад любым советам.
//Все вопросы 1го поста решены
Написал скрипт для игрушки:
Код:
Opt("PixelCoordMode", 0)
Opt("MouseCoordMode", 0)
Opt("SendKeyDownDelay", 230)
Global $Action = 0
Global $S = 1
Global $i = 1
HotKeySet("{z}", "startmine")
HotKeySet("{x}", "runfor")
HotKeySet("{c}", "stopw")
HotKeySet("{v}", "square")
While 1
If $Action = 1 then
MouseDown("left")
Sleep(1000)
Send("{w}")
Sleep(1500)
Send("{w}")
Sleep(1200)
MouseUp("left")
ToolTip("Вкл 1", 0, 0)
Elseif $Action = 2 Then
Send("{w down}")
Sleep(1000)
ToolTip("Вкл 2", 0, 0)
Elseif $Action = 3 Then
While ($Action = 3)
MouseDown("left")
For $i = 1 to $S Step 1
Send("{w}")
Next
$pos = MouseGetPos()
MouseMove($pos[0]+40, $pos[1])
For $i = 1 to $S Step 1
Send("{w}")
Next
$S=$S+1
MouseUp("left")
WEnd
ToolTip("Вкл 1", 0, 0)
Else
sleep(10)
ToolTip("Выкл", 0, 0)
Send("{w up}")
EndIf
WEnd
Func startmine()
$Action = 1
EndFunc
Func runfor()
$Action = 2
EndFunc
Func square()
$Action = 3
EndFunc
Func stopw()
$Action = 0
EndFunc
Написал GUI
Код:
#include <GuiConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>
; GUI
$hGUI = GuiCreate("New", 400, 400)
; BUTTON
$hStart_1 = GuiCtrlCreateButton("Start", 70, 330, 100, 30,$WS_GROUP)
; TAB
$hTab = GuiCtrlCreateTab(70, 4, 320, 310)
$hTab1 = GuiCtrlCreateTabItem("Tunnel")
GuiCtrlCreateLabel("To dig a tunnel forward. Only forward", 80, 40)
; UPDOWN
GuiCtrlCreateLabel("Delay step/ms", 88, 250)
$hTab1u = GuiCtrlCreateInput("2000", 88, 268, 80, 20)
GuiCtrlCreateUpDown(-1)
$hTab2 = GuiCtrlCreateTabItem("Layer")
GuiCtrlCreateLabel("To dig round itself. To level an earth or sand layer", 80, 40)
; UPDOWN
GuiCtrlCreateLabel("Delay step/ms", 88, 250)
GuiCtrlCreateInput("3000", 88, 268, 80, 20)
GuiCtrlCreateUpDown(-1)
GuiCtrlCreateLabel("Angle in pix not deg", 190, 226)
GuiCtrlCreateLabel("+90/-90 right/left turn", 190, 240)
GuiCtrlCreateLabel("60 pix in window ~ 90 deg", 190, 254)
$hTab2u = GuiCtrlCreateInput("60", 190, 268, 80, 20)
GuiCtrlCreateUpDown(-1)
$hTab3 = GuiCtrlCreateTabItem("Run")
GuiCtrlCreateLabel("To run forward without a stop", 80, 40)
; UPDOWN
$hTab3u = GuiCtrlCreateLabel("Time sec", 88, 250)
$hTime = GuiCtrlCreateInput("30", 88, 268, 80, 20)
; CHECKBOX
$hCheck_1 = GuiCtrlCreateCheckbox("Hold shift", 180, 274, 62, 12)
;GuiCtrlSetState(-1, $GUI_CHECKED)
GuiCtrlCreateUpDown(-1)
GuiCtrlCreateTabItem("")
; PROGRESS
GuiCtrlCreateLabel("Progress:", 260, 320)
GuiCtrlCreateProgress(240, 338, 150, 18)
GuiCtrlSetData(-1, 50)
GuiSetState()
; GUI MESSAGE LOOP
While GuiGetMsg() <> $GUI_EVENT_CLOSE
WEnd
Волнует меня странная организация цикла в скрипте - когда он запущен кнопка W всё время отпускается и бежать невозможно, но без этого я не знаю как остановить бег после включения ф-ии runfor
Думаю, что с таким циклом будет сложно привязать скрипт к GUI, поэтому прошу вас помочь в первую очередь с циклом.
Еще прошу помощи со связью кнопки старт и активной вкладки (tab). Т.е. привязать каждую из трех ф-й к вкладке
tunnel tab - startmine
layer tab - square
run tab - runfor
start button - stopw
Должно получиться так:
-Пользователь открывает вкладку, задаёт параметры
-Opt("SendKeyDownDelay", 230) только вместо 230 нужно вставить введённое в GuiCtrlCreateInput значение
-MouseMove($pos[0]+40, $pos[1]) только вместо +40 нужно +GuiCtrlCreateInput
-Как сделть чтобы скрипт "бежал" определённое время, т.е. давил кнопку W например 30 сек я еще не придумал.
Спасибо, что прочитали. Буду рад любым советам.
//Все вопросы 1го поста решены