203 lines
8.7 KiB
AutoHotkey
203 lines
8.7 KiB
AutoHotkey
#singleInstance force
|
|
SendMode "Event"
|
|
SetKeyDelay 100, 50
|
|
|
|
; Stratagem sequence definition
|
|
{
|
|
stratagems := Map()
|
|
stratagems.Default := ""
|
|
stratagems["Reinforce"] := "wsdaw"
|
|
stratagems["SOSBeacon"] := "wsdw"
|
|
stratagems["Resupply"] := "sswd"
|
|
stratagems["EagleRearm"] := "wwawd"
|
|
stratagems["Hellbomb"] := "swaswdsw"
|
|
stratagems["SSSDDelivery"] := "sssww"
|
|
stratagems["UploadData"] := "adwww"
|
|
stratagems["OrbitalIlluminationFlare"] := "ddaa"
|
|
stratagems["MachineGun"] := "saswd"
|
|
stratagems["AntiMaterielRifle"] := "sadws"
|
|
stratagems["Stalwart"] := ""
|
|
stratagems["ExpendableAntiTank"] := "ssawd"
|
|
stratagems["RecoillessRifle"] := "sadda"
|
|
stratagems["Flamethrower"] := ""
|
|
stratagems["Autocannon"] := "saswwd"
|
|
stratagems["RailGun"] := "sdswad"
|
|
stratagems["Spear"] := ""
|
|
stratagems["GrenadeLauncher"] := ""
|
|
stratagems["LaserCannon"] := ""
|
|
stratagems["ArcThrower"] := ""
|
|
stratagems["JumpPack"] := "swwsw"
|
|
stratagems["SupplyPack"] := ""
|
|
stratagems["GuardDog"] := "swawds"
|
|
stratagems["GuardDogRover"] := ""
|
|
stratagems["BallisticShieldBackpack"] := ""
|
|
stratagems["ShieldGeneratorPack"] := "swadad"
|
|
stratagems["OrbitalGatlingBarrage"] := "dsaww"
|
|
stratagems["OrbitalAirburstStrike"] := "ddd"
|
|
stratagems["Orbital120MMHEBarrage"] := "ddsads"
|
|
stratagems["Orbital380MMHEBarrage"] := "dswwass"
|
|
stratagems["OrbitalWalkingBarrage"] := ""
|
|
stratagems["OrbitalLaser"] := "dswds"
|
|
stratagems["OrbitalRailcannonStrike"] := ""
|
|
stratagems["OrbitalPrecisionStrike"] := "ddw"
|
|
stratagems["OrbitalGasStrike"] := ""
|
|
stratagems["OrbitalEMSStrike"] := ""
|
|
stratagems["OrbitalSmokeStrike"] := ""
|
|
stratagems["EagleStrafingRun"] := "wdd"
|
|
stratagems["EagleAirstrike"] := "wdsd"
|
|
stratagems["EagleClusterBomb"] := "wdssd"
|
|
stratagems["EagleNapalmAirstrike"] := ""
|
|
stratagems["EagleSmokeStrike"] := ""
|
|
stratagems["Eagle110MMRocketPods"] := "wdwa"
|
|
stratagems["Eagle500KgBomb"] := "wdsss"
|
|
stratagems["AntiPersonnelMinefield"] := "sawd"
|
|
stratagems["IncendiaryMines"] := ""
|
|
stratagems["HMGEmplacement"] := "swadda"
|
|
stratagems["ShieldGeneratorRelay"] := ""
|
|
stratagems["TeslaTower"] := ""
|
|
stratagems["MachineGunSentry"] := "swddw"
|
|
stratagems["GatlingSentry"] := "swda"
|
|
stratagems["MortarSentry"] := "swdds"
|
|
stratagems["AutocannonSentry"] := ""
|
|
stratagems["RocketSentry"] := "swdda"
|
|
stratagems["EMSMortarSentry"] := ""
|
|
}
|
|
|
|
sendStratagem(keyname) {
|
|
BlockInput "On"
|
|
Send "{LControl down}" . stratagems[getValue("HOTKEYS", keyname)] . "{LControl up}"
|
|
; Send stratagems[getValue("HOTKEYS", keyname)]
|
|
BlockInput "Off"
|
|
}
|
|
|
|
; Config handling
|
|
{
|
|
; Enable numlock, revert previous state on exit
|
|
orgNumlockState := GetKeyState("NumLock", "T")
|
|
SetNumLockState "AlwaysOn"
|
|
|
|
; Config path
|
|
configPath := A_ScriptDir . "\config.ini"
|
|
|
|
; Config file init
|
|
if ( not FileExist(configPath)) {
|
|
FileAppend("", configPath)
|
|
|
|
; load defaults
|
|
initValue("HOTKEYS", "NumpadDiv")
|
|
initValue("HOTKEYS", "NumpadMult")
|
|
initValue("HOTKEYS", "NumpadSub")
|
|
initValue("HOTKEYS", "Numpad7")
|
|
initValue("HOTKEYS", "Numpad8")
|
|
initValue("HOTKEYS", "Numpad9")
|
|
initValue("HOTKEYS", "NumpadAdd")
|
|
initValue("HOTKEYS", "Numpad4")
|
|
initValue("HOTKEYS", "Numpad5")
|
|
initValue("HOTKEYS", "Numpad6")
|
|
initValue("HOTKEYS", "Numpad1")
|
|
initValue("HOTKEYS", "Numpad2")
|
|
initValue("HOTKEYS", "Numpad3")
|
|
initValue("HOTKEYS", "NumpadEnter")
|
|
initValue("HOTKEYS", "Numpad0")
|
|
initValue("HOTKEYS", "NumpadDot")
|
|
|
|
FileAppend("`n", configPath)
|
|
|
|
for key, value in stratagems {
|
|
setValue("STRATAGEMS", key, value)
|
|
}
|
|
|
|
FileAppend("`n", configPath)
|
|
|
|
initValue("WINDOW", "X", 0)
|
|
initValue("WINDOW", "Y", 0)
|
|
initValue("WINDOW", "AlwaysOnTop", "+")
|
|
}
|
|
|
|
; Update stratagems sequences
|
|
for key, value in stratagems {
|
|
setValue("STRATAGEMS", key, value)
|
|
}
|
|
|
|
; Config functions
|
|
getValue(section, key, default := "") {
|
|
return IniRead(configPath, section, key, default)
|
|
}
|
|
|
|
setValue(section, key, value) {
|
|
IniWrite(value, configPath, section, key)
|
|
return value
|
|
}
|
|
|
|
initValue(section, key, default := "Blank") {
|
|
return setValue(section, key, getValue(section, key, default))
|
|
}
|
|
}
|
|
|
|
; Load hotkeys
|
|
loop parse, IniRead(configPath, "HOTKEYS"), "`n" {
|
|
hotkeyPair := StrSplit(A_LoopField, "=")
|
|
|
|
HotIfWinactive("HELLDIVERS™ 2")
|
|
Hotkey(hotkeyPair[1], sendStratagem)
|
|
}
|
|
|
|
; GUI
|
|
{
|
|
MyGui := Gui("-Resize " . getValue("WINDOW", "AlwaysOnTop") . "AlwaysOnTop", "HD2 Stratagems")
|
|
MyGui.BackColor := "292929"
|
|
MyGui.OnEvent("Close", MyGui_Close)
|
|
OnExit(MyGui_Close)
|
|
|
|
MyGui_Close(*) {
|
|
SetNumLockState(orgNumlockState = 0 ? "Off" : "On")
|
|
|
|
MyGui.GetPos(&guiX, &guiY)
|
|
setValue("WINDOW", "X", guiX)
|
|
setValue("WINDOW", "Y", guiY)
|
|
ExitApp(0)
|
|
}
|
|
|
|
MyGui.Add("Picture", "VAlwaysOnTop X0 Y0 W64 H64", A_ScriptDir . "\Icons\" . "AlwaysOnTop" . ".png").OnEvent("Click", (*) => MyGui.Opt(setValue("WINDOW", "AlwaysOnTop", getValue("WINDOW", "AlwaysOnTop") = "-" ? "+" : "-") . "AlwaysOnTop")) ; AlwaysOnTop
|
|
|
|
MyGui.Add("Picture", "VNumpadDiv X64 Y0 W64 H64", A_ScriptDir . "\Icons\" . getValue("HOTKEYS", "NumpadDiv") . ".png").OnEvent("Click", buttonClick) ; NumpadDiv
|
|
MyGui.Add("Picture", "VNumpadMult X128 Y0 W64 H64", A_ScriptDir . "\Icons\" . getValue("HOTKEYS", "NumpadMult") . ".png").OnEvent("Click", buttonClick) ; NumpadMult
|
|
MyGui.Add("Picture", "VNumpadSub X192 Y0 W64 H64", A_ScriptDir . "\Icons\" . getValue("HOTKEYS", "NumpadSub") . ".png").OnEvent("Click", buttonClick) ; NumpadSub
|
|
|
|
MyGui.Add("Picture", "VNumpad7 X0 Y64 W64 H64", A_ScriptDir . "\Icons\" . getValue("HOTKEYS", "Numpad7") . ".png").OnEvent("Click", buttonClick) ; Numpad7
|
|
MyGui.Add("Picture", "VNumpad8 X64 Y64 W64 H64", A_ScriptDir . "\Icons\" . getValue("HOTKEYS", "Numpad8") . ".png").OnEvent("Click", buttonClick) ; Numpad8
|
|
MyGui.Add("Picture", "VNumpad9 X128 Y64 W64 H64", A_ScriptDir . "\Icons\" . getValue("HOTKEYS", "Numpad9") . ".png").OnEvent("Click", buttonClick) ; Numpad9
|
|
|
|
; MyGui.Add("Picture", "X192 Y64 W64 H128", A_ScriptDir . "\Icons\Blank.png") ; NumpadAdd background
|
|
MyGui.Add("Picture", "VNumpadAdd X192 Y96 W64 H64", A_ScriptDir . "\Icons\" . getValue("HOTKEYS", "NumpadAdd") . ".png").OnEvent("Click", buttonClick) ; NumpadAdd
|
|
|
|
MyGui.Add("Picture", "VNumpad4 X0 Y128 W64 H64", A_ScriptDir . "\Icons\" . getValue("HOTKEYS", "Numpad4") . ".png").OnEvent("Click", buttonClick) ; Numpad4
|
|
MyGui.Add("Picture", "VNumpad5 X64 Y128 W64 H64", A_ScriptDir . "\Icons\" . getValue("HOTKEYS", "Numpad5") . ".png").OnEvent("Click", buttonClick) ; Numpad5
|
|
MyGui.Add("Picture", "VNumpad6 X128 Y128 W64 H64", A_ScriptDir . "\Icons\" . getValue("HOTKEYS", "Numpad6") . ".png").OnEvent("Click", buttonClick) ; Numpad6
|
|
|
|
MyGui.Add("Picture", "VNumpad1 X0 Y192 W64 H64", A_ScriptDir . "\Icons\" . getValue("HOTKEYS", "Numpad1") . ".png").OnEvent("Click", buttonClick) ; Numpad1
|
|
MyGui.Add("Picture", "VNumpad2 X64 Y192 W64 H64", A_ScriptDir . "\Icons\" . getValue("HOTKEYS", "Numpad2") . ".png").OnEvent("Click", buttonClick) ; Numpad2
|
|
MyGui.Add("Picture", "VNumpad3 X128 Y192 W64 H64", A_ScriptDir . "\Icons\" . getValue("HOTKEYS", "Numpad3") . ".png").OnEvent("Click", buttonClick) ; Numpad3
|
|
|
|
; MyGui.Add("Picture", "X192 Y192 W64 H128", A_ScriptDir . "\Icons\Blank.png") ; NumpadEnter background
|
|
MyGui.Add("Picture", "VNumpadEnter X192 Y224 W64 H64", A_ScriptDir . "\Icons\" . getValue("HOTKEYS", "NumpadEnter") . ".png").OnEvent("Click", buttonClick) ; NumpadEnter
|
|
|
|
; MyGui.Add("Picture", "X0 Y256 W128 H64", A_ScriptDir . "\Icons\Blank.png") ; Numpad0 background
|
|
MyGui.Add("Picture", "VNumpad0 X32 Y256 W64 H64", A_ScriptDir . "\Icons\" . getValue("HOTKEYS", "Numpad0") . ".png").OnEvent("Click", buttonClick) ; Numpad0
|
|
MyGui.Add("Picture", "VNumpadDot X128 Y256 W64 H64", A_ScriptDir . "\Icons\" . getValue("HOTKEYS", "NumpadDot") . ".png").OnEvent("Click", buttonClick) ; NumpadDot
|
|
|
|
buttonClick(GuiCtrlObj, Info) {
|
|
stratagemPath := FileSelect(3, A_ScriptDir . "\Icons", "Select stratagem", "Stratagem (*.png)")
|
|
if ( not stratagemPath = "") {
|
|
stratagem := StrSplit(stratagemPath, "\")
|
|
stratagem := StrSplit(stratagem[stratagem.Length], ".")[1]
|
|
|
|
setValue("HOTKEYS", GuiCtrlObj.Name, stratagem)
|
|
|
|
GuiCtrlObj.Value := stratagemPath
|
|
GuiCtrlObj.Redraw()
|
|
}
|
|
}
|
|
|
|
MyGui.Show("X" . getValue("WINDOW", "X") . " Y" . getValue("WINDOW", "Y") . " W256 H320")
|
|
} |