Неизвестная проблема, числа не вводятся для счетчика - PullRequest
1 голос
/ 24 марта 2019

Я делаю AHK-скрипт для счетчика диссонанса.Бесполезные вещи, но я пытаюсь научиться AHK и работать с системой графического интерфейса.Я впервые делаю графический интерфейс, и у меня есть рабочий код счетчика.Я хочу сделать его удобным для пользователя, сделав графический интерфейс, чтобы вы могли изменять значения.

Я попытался добавить% и удалить% вокруг переменных.На данный момент я действительно сбит с толку.

Это рабочий код NON GUI, который я использую

F11::Goto,lol
ESC::ExitApp,

lol:
; example add 1
VAR1 := (1)
VAR2 := (11492)

Loop,300
{
VAR2 := (VAR2+VAR1)
Send, %VAR2%
Send, {Enter}
Sleep, 6500
}
return

И это код, который я использую с моей системой GUI с переменными.

; Simple counter script. This is for Discord counting
Gui, Show , w210 h200, Counter

; GUI stuff
Gui, Add, Text, x20 y10 w130 Left,Input a number for delay:
Gui, Add, Text, x20 y50 w130 Left,Input a starting number:
Gui, Add, Text, x20 y90 w130 Left,Input a number to add by:
Gui, Add, Text, x20 y120 w130 Left,Input a number for the ammount of loops:
Gui, Add, Text, x0 y160 w200 Center,Press F11 to start the script
Gui, Add, Text, x0 y180 w200 Center,Made by Pyro#5249
Gui, Add, Edit, w50 h19 x150 y10 vDelay Left, 
Gui, Add, Edit, w50 h19 x150 y50 vSTART Left, 
Gui, Add, Edit, w50 h19 x150 y90 vADD Left,
Gui, Add, Edit, w50 h19 x150 y120 vLOOP Left,
F11::goto,lol
return

lol:
{
VAR1 := (%ADD%)
VAR2 := (%START%)

Loop,%LOOP%
{
VAR2 := (VAR2+VAR1)
Send, %VAR2%
Send, {Enter}
Sleep, %DELAY%
}
return
}

GuiClose: 
ExitApp

ESC::ExitApp,

Я хочу, чтобы он начался на F11 и начал выводить счет.Например,

1
2
3
4
5
6
ect...

Но сейчас я ничего не получаю.Нет результатов.

1 Ответ

1 голос
/ 24 марта 2019

У тебя хорошее начало! Вот несколько вещей, которые должны помочь:

  • Если вы хотите получить значения из графического интерфейса, вам нужно использовать Gui , Submit. Если вы хотите, чтобы графический интерфейс продолжал работать, используйте параметр NoHide (Gui , Submit , NoHide).
  • Когда вы присваиваете значения с помощью :=, проценты не используются. Таким образом, VAR := ADD присвоит значение переменной "ADD" переменной "VAR". Вы можете присвоить значения только с помощью =, и вам не нужно будет использовать знаки процента, как есть (VAR = %ADD%), но это поддерживается только для устаревших версий и не рекомендуется для новых сценариев.
  • Некоторые вещи должны быть заключены в фигурные скобки {}, как вы сделали с циклом, но некоторые вещи этого не делают, например, метка "lol".
  • Вы можете отправлять несколько вещей за одну команду отправки, вместо того, чтобы разбивать ее на две отдельные команды отправки.

Справочная документация AutoHotkey превосходна и даст хорошее понимание правильного синтаксиса. Вот рабочий пример вашего скрипта, на котором показан счетчик окна сообщения, поскольку я не знаю, где вы хотите ввести значения (я закомментировал эту часть).

; Simple counter script. This is for Discord counting
Gui, Show , w210 h200, Counter

; GUI stuff
Gui, Add, Text, x20 y10 w130 Left,Input a number for delay (ms):
Gui, Add, Text, x20 y50 w130 Left,Input a starting number:
Gui, Add, Text, x20 y90 w130 Left,Input a number to add by:
Gui, Add, Text, x20 y120 w130 Left,Input a number for the amount of loops:
Gui, Add, Text, x0 y160 w200 Center,Press F11 to start the script
Gui, Add, Text, x0 y180 w200 Center,Made by Pyro#5249
Gui, Add, Edit, w50 h19 x150 y10 vDelay Left, 
Gui, Add, Edit, w50 h19 x150 y50 vSTART Left, 
Gui, Add, Edit, w50 h19 x150 y90 vADD Left,
Gui, Add, Edit, w50 h19 x150 y120 vLOOP Left,
F11::goto,lol
return

lol:
Gui , Submit , NoHide
VAR1 := ADD
VAR2 := START

Loop , %LOOP%
{
    VAR2 += VAR1
    MsgBox ,, Counter , Counter value = %VAR2% , % DELAY / 2000
    Sleep , % DELAY / 2 ; halved delay since MsgBox is also half the delay
;    Send, %VAR2%{Enter}
;    Sleep, %DELAY%
}
return

GuiClose: 
ExitApp
...