2015-08-20 5 views
0

Хорошо, так что у меня есть эта часть моего кода:АХК HOTKEY в строке, отдельные команды без пробелов

SetGrenade: 
    gui, 2: Submit, NoHide 
    if Flashbang 
     CurrentNade := "send 4|Sleep 20|send 4|Sleep 1000|Send {LButton}|Sleep 100|send 1" 
    else if Smoke 
     CurrentNade := "Send 4|Sleep 20|Send 4|Sleep 20|Send 4|Sleep 1000|Send {LButton}|Sleep 100|Send 1" 
    else ;He 
     CurrentNade := "send 4|Sleep 1000|Send {LButton}|Sleep 100|Send 1" 
return 

(Hotkey для этого XButton1) И все работает хорошо, за исключением того, что это «|» вертикальная полоса используется для разделения команд, но она также помещает пробел. Например: Пользователь выбирает вариант 1 (Flashbang), когда он нажимает XButton1 его мышью он получает это: не 441 (. Я пропустил спит и щелчки, потому что они Арент показаны в блокноте)

ли есть способ исправить это? Я попытался удалить вертикальные полосы (|), но затем код помещается в виде текста. Пожалуйста, помогите, привет, Адам

EDIT: Полный код:

#SingleInstance force 
SetWorkingDir %A_ScriptDir% 
CurrentNade := 0 
;GUI 
Gui, Show, w200 h300, sAHK v0.2 
Gui, Add, checkbox, gAutoNade vAutoNade cBlue, Enable Auto-Grenade 
Gui, Add, button, vSettingsButton gSettings, View Settings 
Gui, Add, button, gUpcoming, View Upcoming Functions 

Hotkey, xbutton1, CurrentNade, Off 

Gui, 2:Hide 
Gui, 2:Add, Text, cBlue, Auto-Grenade To Throw: 
Gui, 2:Add, radio, gSetGrenade vFlashbang, Flashbang 
Gui, 2:Add, radio, gSetGrenade vSmoke, Smoke Grenade 
Gui, 2:Add, radio, gSetGrenade vHe, Explosive Grenade 

OnExit, GuiClose 

return 

;END GUI 

;EXPRESSION 

Settings: 
WinGetPos, guiPosX, guiPosY,,, A 
guiPosX := guiPosX + 200 
Gui, 2:Show, x%guiPosX% y%guiPosY% Restore 
Gui, 2:Show, w200 h300, Script Settings 
return 

AutoNade: 
    gui, Submit, NoHide 
    if AutoNade 
    { 
     SoundPlay, %A_ScriptDir%/snd-EN/SL.wav 
    Hotkey, xbutton1, On 
    } 
    else 
    { 
    Hotkey, xbutton1, Off 
    SoundPlay, %A_ScriptDir%/snd-EN/ST.wav 
    } 
return 

CurrentNade: 
    ;MsgBox %CurrentNade% 
    Loop, Parse, CurrentNade,| 
    { 
    if instr(A_LoopField,"send") 
     send % SubStr(A_LoopField, 5) 
    else 
     Sleep SubStr(A_LoopField, 6) 
    } 
return 

SetGrenade: 
    gui, 2: Submit, NoHide 
    if Flashbang 
     CurrentNade := "send 4|Sleep 20|send 4|Sleep 1000|Send {LButton}|Sleep 100|send 1" 
    else if Smoke 
     CurrentNade := "Send 4|Sleep 20|Send 4|Sleep 20|Send 4|Sleep 1000|Send {LButton}|Sleep 100|Send 1" 
    else ;He 
     CurrentNade := "send 4|Sleep 1000|Send {LButton}|Sleep 100|Send 1" 
return 

Upcoming: 
Gui, Upcoming:Add, Text,, 1. Overall impovements, UI updates, bug fixes and small changes 
Gui, Upcoming:Add, Text,, 2. Bunny Hop 
Gui, Upcoming:Add, Text,, 3. 180 turnaround 
Gui, Upcoming:Add, Text,, 4. Recoil Reducer (RCS) 
Gui, Upcoming:Show 
return 

GuiClose: 
ExitApp 

;END EXPRESSION 
+0

код, который вы показали, ничего не делает. он определяет значение 'currentNade' как строку. что должно произойти с этой переменной? можете ли вы показать эту часть кода, пожалуйста? – Blauhirn

+0

Разместил полный код, извините, забыли, что –

ответ

0

substr в AutoHotKey составляет 1 на основе согласно documentation:

Для StartingPos, укажите значение 1, чтобы начать при первом знаке

Просто увеличьте индекс в своем коде на 1:

if instr(A_LoopField,"send") 
    send % SubStr(A_LoopField, 6) 
else 
    sleep SubStr(A_LoopField, 7) 
} 
+0

о, боже, спасибо вам большое! Я бы не подумал об этом. –