Hitman 3 - H3 KBinds
Posted: 19 Aug 2023, 08:56
This script with a gui is for Hitman 3, it puts multiple actions on one hotkey, just like it is when playing with a gamepad.
All actions that are possible with one gamepad button, have also been assigned to a single keyboard key.
For example, it puts the 'Interaction', 'Pick up' and 'Activate/Deactivate'key to one Hotkey, so that you can do all these actions with a single button, as it is when playing with a gamepad.
- Selected hotkeys are automatically created based on the in-game key bindings of the first(!) column.
To do this, the script reads the game key bindings, who are stored in the registry, on start up or when refreshing with F5
To be more precise, I have added a holding threshold (200ms).
So tapping the Interaction key will perform the 'Interaction' key press but holding the 'Interaction' Key will perform the 'Pick up' and 'Activate/Deactivate' key press. Same as with the gamepad.
- Hotkeys are only active in-game.
- Hotkeys that you don't want to use can be deactivated with a checkbox.
- The script saves settings in the registry under the path
"HKEY_CURRENT_USER\Software\IO Interactive\HITMAN3\H3_KBinds"
- When changing keys in-game, press "F5" so that the changes take effect.
Buttons:
Gui-Buttons are only active when the game is not running.
're-map keys (default)' = restores the default key bindings (same as the in-game option)
're-map keys (predefined)' = these are the key assignments i use, hold assignments are swapped out to unused symbol keys
This is the Gui with my predefined Bindings:
But anyway, you can also create your own bindings to your likings. But remember, that the script only uses the keys of the first column.
All actions that are possible with one gamepad button, have also been assigned to a single keyboard key.
For example, it puts the 'Interaction', 'Pick up' and 'Activate/Deactivate'key to one Hotkey, so that you can do all these actions with a single button, as it is when playing with a gamepad.
- Selected hotkeys are automatically created based on the in-game key bindings of the first(!) column.
To do this, the script reads the game key bindings, who are stored in the registry, on start up or when refreshing with F5
To be more precise, I have added a holding threshold (200ms).
So tapping the Interaction key will perform the 'Interaction' key press but holding the 'Interaction' Key will perform the 'Pick up' and 'Activate/Deactivate' key press. Same as with the gamepad.
- Hotkeys are only active in-game.
- Hotkeys that you don't want to use can be deactivated with a checkbox.
- The script saves settings in the registry under the path
"HKEY_CURRENT_USER\Software\IO Interactive\HITMAN3\H3_KBinds"
- When changing keys in-game, press "F5" so that the changes take effect.
Buttons:
Gui-Buttons are only active when the game is not running.
're-map keys (default)' = restores the default key bindings (same as the in-game option)
're-map keys (predefined)' = these are the key assignments i use, hold assignments are swapped out to unused symbol keys
This is the Gui with my predefined Bindings:
But anyway, you can also create your own bindings to your likings. But remember, that the script only uses the keys of the first column.
Code: Select all
#Requires AutoHotkey >=2.0
#Warn
#SingleInstance
SetTitleMatchMode 3
Suspend(True)
GuiName := "H3_KBinds v2.3"
global WinTitle := "ahk_exe HITMAN3.exe"
mDefaultBinding := Map( "notebook_map_1_dev", "4294967295", "notebook_map_1_nr", "4294967295", "notebook_map_0_dev", "1", "notebook_map_0_nr", "50"
, "concealretrieve_1_dev", "4294967295", "concealretrieve_1_nr", "4294967295", "concealretrieve_0_dev", "1", "concealretrieve_0_nr", "21"
, "walkslow_1_dev", "4294967295", "walkslow_1_nr", "4294967295", "walkslow_0_dev", "1", "walkslow_0_nr", "56"
, "previous_ammo_1_dev", "4294967295", "previous_ammo_1_nr", "4294967295", "previous_ammo_0_dev", "1", "previous_ammo_0_nr", "44"
, "next_ammo_1_dev", "4294967295", "next_ammo_1_nr", "4294967295", "next_ammo_0_dev", "1", "next_ammo_0_nr", "45"
, "toggle_placement_1_dev", "4294967295", "toggle_placement_1_nr", "4294967295", "toggle_placement_0_dev", "1", "toggle_placement_0_nr", "58"
, "surrender_1_dev", "4294967295", "surrender_1_nr", "4294967295", "surrender_0_dev", "1", "surrender_0_nr", "45"
, "inventory_1_dev", "4294967295", "inventory_1_nr", "4294967295", "inventory_0_dev", "1", "inventory_0_nr", "23"
, "dropitem_1_dev", "4294967295", "dropitem_1_nr", "4294967295", "dropitem_0_dev", "1", "dropitem_0_nr", "44"
, "zoomout_1_dev", "4294967295", "zoomout_1_nr", "4294967295", "zoomout_0_dev", "0", "zoomout_0_nr", "9"
, "zoomin_1_dev", "4294967295", "zoomin_1_nr", "4294967295", "zoomin_0_dev", "0", "zoomin_0_nr", "8"
, "precisionaim_1_dev", "4294967295", "precisionaim_1_nr", "4294967295", "precisionaim_0_dev", "1", "precisionaim_0_nr", "42"
, "holster_1_dev", "0", "holster_1_nr", "2", "holster_0_dev", "1", "holster_0_nr", "35"
, "sneak_1_dev", "4294967295", "sneak_1_nr", "4294967295", "sneak_0_dev", "1", "sneak_0_nr", "46"
, "camswitch_1_dev", "4294967295", "camswitch_1_nr", "4294967295", "camswitch_0_dev", "1", "camswitch_0_nr", "47"
, "instinct_1_dev", "4294967295", "instinct_1_nr", "4294967295", "instinct_0_dev", "1", "instinct_0_nr", "29"
, "reload_1_dev", "4294967295", "reload_1_nr", "4294967295", "reload_0_dev", "1", "reload_0_nr", "19"
, "shoot_1_dev", "4294967295", "shoot_1_nr", "4294967295", "shoot_0_dev", "0", "shoot_0_nr", "0"
, "aim_1_dev", "4294967295", "aim_1_nr", "4294967295", "aim_0_dev", "0", "aim_0_nr", "1"
, "run_1_dev", "4294967295", "run_1_nr", "4294967295", "run_0_dev", "1", "run_0_nr", "42"
, "takedisguise_1_dev", "4294967295", "takedisguise_1_nr", "4294967295", "takedisguise_0_dev", "1", "takedisguise_0_nr", "20"
, "activateprop_1_dev", "4294967295", "activateprop_1_nr", "4294967295", "activateprop_0_dev", "1", "activateprop_0_nr", "34"
, "melee_1_dev", "4294967295", "melee_1_nr", "4294967295", "melee_0_dev", "1", "melee_0_nr", "16"
, "dragbody_1_dev", "4294967295", "dragbody_1_nr", "4294967295", "dragbody_0_dev", "1", "dragbody_0_nr", "48"
, "cover_1_dev", "4294967295", "cover_1_nr", "4294967295", "cover_0_dev", "1", "cover_0_nr", "57"
, "pickup_1_dev", "4294967295", "pickup_1_nr", "4294967295", "pickup_0_dev", "1", "pickup_0_nr", "33"
, "use2_1_dev", "4294967295", "use2_1_nr", "4294967295", "use2_0_dev", "1", "use2_0_nr", "45"
, "use_1_dev", "4294967295", "use_1_nr", "4294967295", "use_0_dev", "1", "use_0_nr", "18"
, "move_right_1_dev", "4294967295", "move_right_1_nr", "4294967295", "move_right_0_dev", "1", "move_right_0_nr", "32"
, "move_left_1_dev", "4294967295", "move_left_1_nr", "4294967295", "move_left_0_dev", "1", "move_left_0_nr", "30"
, "move_down_1_dev", "4294967295", "move_down_1_nr", "4294967295", "move_down_0_dev", "1", "move_down_0_nr", "31"
, "move_up_1_dev", "4294967295", "move_up_1_nr", "4294967295", "move_up_0_dev", "1", "move_up_0_nr", "17" )
mPresetBinding := Map( "notebook_map_1_dev", "4294967295", "notebook_map_1_nr", "4294967295", "notebook_map_0_dev", "1", "notebook_map_0_nr", "50"
, "concealretrieve_1_dev", "4294967295", "concealretrieve_1_nr", "4294967295", "concealretrieve_0_dev", "1", "concealretrieve_0_nr", "43"
, "walkslow_1_dev", "4294967295", "walkslow_1_nr", "4294967295", "walkslow_0_dev", "1", "walkslow_0_nr", "56"
, "previous_ammo_1_dev", "4294967295", "previous_ammo_1_nr", "4294967295", "previous_ammo_0_dev", "1", "previous_ammo_0_nr", "44"
, "next_ammo_1_dev", "4294967295", "next_ammo_1_nr", "4294967295", "next_ammo_0_dev", "1", "next_ammo_0_nr", "45"
, "toggle_placement_1_dev", "4294967295", "toggle_placement_1_nr", "4294967295", "toggle_placement_0_dev", "1", "toggle_placement_0_nr", "58"
, "surrender_1_dev", "4294967295", "surrender_1_nr", "4294967295", "surrender_0_dev", "1", "surrender_0_nr", "45"
, "inventory_1_dev", "4294967295", "inventory_1_nr", "4294967295", "inventory_0_dev", "1", "inventory_0_nr", "16"
, "dropitem_1_dev", "4294967295", "dropitem_1_nr", "4294967295", "dropitem_0_dev", "1", "dropitem_0_nr", "33"
, "zoomout_1_dev", "4294967295", "zoomout_1_nr", "4294967295", "zoomout_0_dev", "0", "zoomout_0_nr", "9"
, "zoomin_1_dev", "4294967295", "zoomin_1_nr", "4294967295", "zoomin_0_dev", "0", "zoomin_0_nr", "8"
, "precisionaim_1_dev", "4294967295", "precisionaim_1_nr", "4294967295", "precisionaim_0_dev", "1", "precisionaim_0_nr", "42"
, "holster_1_dev", "0", "holster_1_nr", "2", "holster_0_dev", "1", "holster_0_nr", "35"
, "sneak_1_dev", "4294967295", "sneak_1_nr", "4294967295", "sneak_0_dev", "1", "sneak_0_nr", "46"
, "camswitch_1_dev", "4294967295", "camswitch_1_nr", "4294967295", "camswitch_0_dev", "1", "camswitch_0_nr", "47"
, "instinct_1_dev", "0", "instinct_1_nr", "3", "instinct_0_dev", "1", "instinct_0_nr", "29"
, "reload_1_dev", "4294967295", "reload_1_nr", "4294967295", "reload_0_dev", "1", "reload_0_nr", "19"
, "shoot_1_dev", "4294967295", "shoot_1_nr", "4294967295", "shoot_0_dev", "0", "shoot_0_nr", "0"
, "aim_1_dev", "4294967295", "aim_1_nr", "4294967295", "aim_0_dev", "0", "aim_0_nr", "1"
, "run_1_dev", "4294967295", "run_1_nr", "4294967295", "run_0_dev", "1", "run_0_nr", "42"
, "takedisguise_1_dev", "4294967295", "takedisguise_1_nr", "4294967295", "takedisguise_0_dev", "1", "takedisguise_0_nr", "78"
, "activateprop_1_dev", "4294967295", "activateprop_1_nr", "4294967295", "activateprop_0_dev", "1", "activateprop_0_nr", "55"
, "melee_1_dev", "4294967295", "melee_1_nr", "4294967295", "melee_0_dev", "1", "melee_0_nr", "74"
, "dragbody_1_dev", "4294967295", "dragbody_1_nr", "4294967295", "dragbody_0_dev", "1", "dragbody_0_nr", "86"
, "cover_1_dev", "4294967295", "cover_1_nr", "4294967295", "cover_0_dev", "1", "cover_0_nr", "57"
, "pickup_1_dev", "4294967295", "pickup_1_nr", "4294967295", "pickup_0_dev", "1", "pickup_0_nr", "52"
, "use2_1_dev", "4294967295", "use2_1_nr", "4294967295", "use2_0_dev", "1", "use2_0_nr", "45"
, "use_1_dev", "4294967295", "use_1_nr", "4294967295", "use_0_dev", "1", "use_0_nr", "18"
, "move_right_1_dev", "4294967295", "move_right_1_nr", "4294967295", "move_right_0_dev", "1", "move_right_0_nr", "32"
, "move_left_1_dev", "4294967295", "move_left_1_nr", "4294967295", "move_left_0_dev", "1", "move_left_0_nr", "30"
, "move_down_1_dev", "4294967295", "move_down_1_nr", "4294967295", "move_down_0_dev", "1", "move_down_0_nr", "31"
, "move_up_1_dev", "4294967295", "move_up_1_nr", "4294967295", "move_up_0_dev", "1", "move_up_0_nr", "17" )
mRegKey := Map("Game", "HKEY_CURRENT_USER\Software\IO Interactive\HITMAN3\Input"
, "Script", "HKEY_CURRENT_USER\Software\IO Interactive\HITMAN3\H3_KBinds")
aHotkey := [ "use_0_nr"
, "use2_0_nr"
, "dropitem_0_nr"
, "cover_0_nr"
, "shoot_0_nr" ]
aKey := [ "use_0"
, "pickup_0"
, "activateprop_0"
, "use2_0"
, "takedisguise_0"
, "dropitem_0"
, "concealretrieve_0"
, "cover_0"
,"dragbody_0"
, "shoot_0"
, "melee_0"
, "aim_0" ]
mMouseButton := Map( "LButton", 0
,"RButton", 1
, "MButton", 2
, "XButton1", 3
, "XButton2", 4
, "WheelUp", 8
, "WheelDown", 9)
mHK_Status := Map(), mCB_Status := Map(), mT_Status := Map(), mKey := Map()
For Name in aHotkey {
if RegRead(mRegKey.Get("Script"), Name . "_CB", "ERROR") = "ERROR"
RegWrite(1, "REG_DWORD", mRegKey.Get("Script"), Name . "_CB"), mCB_Status.Set(Name, " Checked"), mT_Status.Set(Name, ""), mHK_Status.Set(Name, "On")
else
RegRead(mRegKey.Get("Script"), Name . "_CB") ? (mCB_Status.Set(Name, " Checked"), mT_Status.Set(Name, ""), mHK_Status.Set(Name, "On")) : (mCB_Status.Set(Name, ""), mT_Status.Set(Name, " Disabled"), mHK_Status.Set(Name, "Off"))
}
For Name in aKey {
RegValue := RegRead(mRegKey.Get("Game"), Name . "_nr")
For Button, Value in mMouseButton {
if RegValue = Value && RegRead(mRegKey.Get("Game"), Name . "_dev") = 0{
mKey.Set(Name . "_nr", Button)
continue 2
}
}
mKey.Set(Name . "_nr", GetKeyName("sc" . Format("{:x}", RegValue)))
}
For Name in aHotkey {
Hotkey "*" mKey.Get(Name), _Hotkey.Bind(Name), mHK_Status.Get(Name)
}
DrawLine := "_______________________________________________________________"
gH3_KBinds := Gui(, GuiName), gH3_KBinds.MarginX := 5, gH3_KBinds.MarginY := 5
gH3_KBinds.SetFont("s12")
tDrawLine := gH3_KBinds.AddText("xm ym", DrawLine)
tDrawLine.GetPos(,, &tWidth)
pProgress := gH3_KBinds.AddProgress("xm y+m w" . tWidth " h20 cRed", 100)
bDefaultBinding := gH3_KBinds.AddButton("xm y+m w" . (tWidth - gH3_KBinds.MarginY) / 2 . " Disabled", "re-map keys (default)"), bDefaultBinding.OnEvent("Click", _Binding)
bPresetBinding := gH3_KBinds.AddButton("x+m yp w" . (tWidth - gH3_KBinds.MarginY) / 2 . " Disabled", "re-map keys (predefined)"), bPresetBinding.OnEvent("Click", _Binding)
gH3_KBinds.SetFont("bold"), gH3_KBinds.AddText("xm y+m", "F5"), gH3_KBinds.SetFont("norm"), gH3_KBinds.Add("Text", "x+m yp", "= reload")
gH3_KBinds.SetFont("bold"), gH3_KBinds.AddText("xm y+m", "F8"), gH3_KBinds.SetFont("norm"), gH3_KBinds.Add("Text", "x+m yp", "= close")
gH3_KBinds.SetFont("norm")
gH3_KBinds.AddText("xm y+m", DrawLine)
gH3_KBinds.SetFont("underline")
use_0_nr_CB := gH3_KBinds.AddCheckBox("xm y+m" mCB_Status.Get("use_0_nr"), "Interact Hotkey") .OnEvent("Click", _CheckBox.Bind("use_0_nr"))
gH3_KBinds.SetFont("norm")
gH3_KBinds.SetFont("bold")
tuse_0_nr_1 := gH3_KBinds.AddText("xm y+m" mT_Status.Get("use_0_nr"), StrUpper(mKey.Get("use_0_nr"))), gH3_KBinds.SetFont("norm")
tuse_0_nr_2 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use_0_nr"), "(tap) ="), gH3_KBinds.SetFont("bold")
tuse_0_nr_3 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use_0_nr"), "interaction"), gH3_KBinds.SetFont("norm")
tuse_0_nr_4 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use_0_nr"), ", prompt = [ " . StrUpper(mKey.Get("use_0_nr")) . " ]")
gH3_KBinds.SetFont("bold")
tuse_0_nr_5 := gH3_KBinds.AddText("xm y+m" mT_Status.Get("use_0_nr"), StrUpper(mKey.Get("use_0_nr"))), gH3_KBinds.SetFont("norm")
tuse_0_nr_6 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use_0_nr"), "(hold) ="), gH3_KBinds.SetFont("bold")
tuse_0_nr_7 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use_0_nr"), "pick up item"), gH3_KBinds.SetFont("norm")
tuse_0_nr_8 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use_0_nr"), ", prompt = [ " . StrUpper(mKey.Get("pickup_0_nr")) . " ]")
gH3_KBinds.SetFont("bold")
tuse_0_nr_9 := gH3_KBinds.AddText("xm y+m" mT_Status.Get("use_0_nr"), StrUpper(mKey.Get("use_0_nr"))), gH3_KBinds.SetFont("norm")
tuse_0_nr_10 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use_0_nr"), "(hold) ="), gH3_KBinds.SetFont("bold")
tuse_0_nr_11 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use_0_nr"), "activate / deactivate"), gH3_KBinds.SetFont("norm")
tuse_0_nr_12 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use_0_nr"), ", prompt = [ " . (StrUpper(mKey.Get("activateprop_0_nr")) = "NUMPADMULT" ? "*" : StrUpper(mKey.Get("activateprop_0_nr"))) . " ]")
gH3_KBinds.AddText("xm y+m", DrawLine)
gH3_KBinds.SetFont("underline")
use2_0_nr_CB := gH3_KBinds.AddCheckBox("xm y+m" mCB_Status.Get("use2_0_nr"), "Agility Hotkey") .OnEvent("Click", _CheckBox.Bind("use2_0_nr"))
gH3_KBinds.SetFont("norm")
gH3_KBinds.SetFont("bold")
tuse2_0_nr_1 := gH3_KBinds.AddText("xm y+m" mT_Status.Get("use2_0_nr"), StrUpper(mKey.Get("use2_0_nr"))), gH3_KBinds.SetFont("norm")
tuse2_0_nr_2 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use2_0_nr"), "(tap) ="), gH3_KBinds.SetFont("bold")
tuse2_0_nr_3 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use2_0_nr"), "agility action"), gH3_KBinds.SetFont("norm")
tuse2_0_nr_4 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use2_0_nr"), ", prompt = [ " StrUpper(mKey.Get("use2_0_nr")) " ]")
gH3_KBinds.SetFont("bold")
tuse2_0_nr_5 := gH3_KBinds.AddText("xm y+m" mT_Status.Get("use2_0_nr"), StrUpper(mKey.Get("use2_0_nr"))), gH3_KBinds.SetFont("norm")
tuse2_0_nr_6 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use2_0_nr"), "(hold) ="), gH3_KBinds.SetFont("bold")
tuse2_0_nr_7 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use2_0_nr"), "take disguise"), gH3_KBinds.SetFont("norm")
tuse2_0_nr_8 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use2_0_nr"), ", prompt = [ " (StrUpper(mKey.Get("takedisguise_0_nr")) = "NUMPADADD" ? "+" : StrUpper(mKey.Get("takedisguise_0_nr"))) " ]")
gH3_KBinds.SetFont("bold")
tuse2_0_nr_9 := gH3_KBinds.AddText("xm y+m" mT_Status.Get("use2_0_nr"), StrUpper(mKey.Get("use2_0_nr"))), gH3_KBinds.SetFont("norm")
tuse2_0_nr_10 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use2_0_nr"), "(tap), (tap) + (hold) ="), gH3_KBinds.SetFont("bold")
tuse2_0_nr_11 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use2_0_nr"), "get frisked"), gH3_KBinds.SetFont("norm")
tuse2_0_nr_12 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use2_0_nr"), ", prompt = [ " StrUpper(mKey.Get("use2_0_nr")) " ]")
gH3_KBinds.SetFont("bold")
tuse2_0_nr_13 := gH3_KBinds.AddText("xm y+m" mT_Status.Get("use2_0_nr"), StrUpper(mKey.Get("use2_0_nr"))), gH3_KBinds.SetFont("norm")
tuse2_0_nr_14 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use2_0_nr"), "(tap), (tap) + (hold) ="), gH3_KBinds.SetFont("bold")
tuse2_0_nr_15 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use2_0_nr"), "show invitation"), gH3_KBinds.SetFont("norm")
tuse2_0_nr_16 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("use2_0_nr"), ", prompt = [ " StrUpper(mKey.Get("use2_0_nr")) " ]")
gH3_KBinds.AddText("xm y+m", DrawLine)
gH3_KBinds.SetFont("underline")
dropitem_0_nr_CB := gH3_KBinds.AddCheckBox("xm y+m" mCB_Status.Get("dropitem_0_nr"), "Drop Item Hotkey") .OnEvent("Click", _CheckBox.Bind("dropitem_0_nr"))
gH3_KBinds.SetFont("norm")
gH3_KBinds.SetFont("bold")
tdropitem_0_nr_1 := gH3_KBinds.AddText("xm y+m" mT_Status.Get("dropitem_0_nr"), StrUpper(mKey.Get("dropitem_0_nr"))), gH3_KBinds.SetFont("norm")
tdropitem_0_nr_2 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("dropitem_0_nr"), "(tap) ="), gH3_KBinds.SetFont("bold")
tdropitem_0_nr_3 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("dropitem_0_nr"), "drop item")
gH3_KBinds.SetFont("bold")
tdropitem_0_nr_4 := gH3_KBinds.AddText("xm y+m" mT_Status.Get("dropitem_0_nr"), StrUpper(mKey.Get("dropitem_0_nr"))), gH3_KBinds.SetFont("norm")
tdropitem_0_nr_5 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("dropitem_0_nr"), "(hold) ="), gH3_KBinds.SetFont("bold")
tdropitem_0_nr_6 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("dropitem_0_nr"), "conceal / retrieve item"), gH3_KBinds.SetFont("norm")
tdropitem_0_nr_7 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("dropitem_0_nr"), ", prompt = [ " StrUpper(mKey.Get("concealretrieve_0_nr")) " ]")
gH3_KBinds.AddText("xm y+m", DrawLine)
gH3_KBinds.SetFont("underline")
cover_0_nr_CB := gH3_KBinds.AddCheckBox("xm y+m" mCB_Status.Get("cover_0_nr"), "Cover Hotkey") .OnEvent("Click", _CheckBox.Bind("cover_0_nr"))
gH3_KBinds.SetFont("norm")
gH3_KBinds.SetFont("bold")
tcover_0_nr_1 := gH3_KBinds.AddText("xm y+m" mT_Status.Get("cover_0_nr"), StrUpper(mKey.Get("cover_0_nr"))), gH3_KBinds.SetFont("norm")
tcover_0_nr_2 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("cover_0_nr"), "(tap) ="), gH3_KBinds.SetFont("bold")
tcover_0_nr_3 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("cover_0_nr"), "cover")
gH3_KBinds.SetFont("bold")
tcover_0_nr_4 := gH3_KBinds.AddText("xm y+m" mT_Status.Get("cover_0_nr"), StrUpper(mKey.Get("cover_0_nr"))), gH3_KBinds.SetFont("norm")
tcover_0_nr_5 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("cover_0_nr"), "(hold) ="), gH3_KBinds.SetFont("bold")
tcover_0_nr_6 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("cover_0_nr"), "drag body"), gH3_KBinds.SetFont("norm")
tcover_0_nr_7 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("cover_0_nr"), ", prompt = [ " StrUpper(mKey.Get("dragbody_0_nr")) " ]")
gH3_KBinds.SetFont("bold")
tcover_0_nr_8 := gH3_KBinds.AddText("xm y+m" mT_Status.Get("cover_0_nr"), StrUpper(mKey.Get("cover_0_nr"))), gH3_KBinds.SetFont("norm")
tcover_0_nr_9 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("cover_0_nr"), "(tap), (tap) + (hold) ="), gH3_KBinds.SetFont("bold")
tcover_0_nr_10 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("cover_0_nr"), "slide"), gH3_KBinds.SetFont("norm")
tcover_0_nr_11 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("cover_0_nr"), ", prompt = [ " StrUpper(mKey.Get("cover_0_nr")) " ]")
gH3_KBinds.AddText("xm y+m", DrawLine)
gH3_KBinds.SetFont("underline")
shoot_0_nr_CB := gH3_KBinds.AddCheckBox("xm y+m" mCB_Status.Get("shoot_0_nr"), "Attack Hotkey") .OnEvent("Click", _CheckBox.Bind("shoot_0_nr"))
gH3_KBinds.SetFont("norm")
gH3_KBinds.SetFont("bold")
tshoot_0_nr_1 := gH3_KBinds.AddText("xm y+m" mT_Status.Get("shoot_0_nr"), StrUpper(mKey.Get("shoot_0_nr"))), gH3_KBinds.SetFont("norm")
tshoot_0_nr_2 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("shoot_0_nr"), "="), gH3_KBinds.SetFont("bold")
tshoot_0_nr_3 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("shoot_0_nr"), "melee attack"), gH3_KBinds.SetFont("norm")
tshoot_0_nr_4 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("shoot_0_nr"), ", prompt = [ " (StrUpper(mKey.Get("melee_0_nr")) = "NUMPADSUB" ? "-" : StrUpper(mKey.Get("melee_0_nr"))) " ]")
gH3_KBinds.SetFont("bold")
tshoot_0_nr_5 := gH3_KBinds.AddText("xm y+m" mT_Status.Get("shoot_0_nr"), StrUpper(mKey.Get("shoot_0_nr"))), gH3_KBinds.SetFont("norm")
tshoot_0_nr_6 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("shoot_0_nr"), "(while aiming) ="), gH3_KBinds.SetFont("bold")
tshoot_0_nr_7 := gH3_KBinds.AddText("x+m yp" mT_Status.Get("shoot_0_nr"), "shot / throw"), gH3_KBinds.SetFont("norm")
gH3_KBinds.OnEvent("Close", _CloseScript)
_GuiShow("show")
Loop{
Sleep 1000
if ID := WinExist(WinTitle){
MouseGetPos ,, &OutputVarWin
if bDefaultBinding.Enabled = True || bPresetBinding.Enabled = True
bDefaultBinding.Enabled := bPresetBinding.Enabled := False
if OutputVarWin = ID && A_IsSuspended = True {
Suspend(False)
pProgress.Opt("cGreen")
}
else if OutputVarWin != ID && A_IsSuspended = False {
Suspend(True)
pProgress.Opt("cRed")
}
}
else if ID := !WinExist(WinTitle) {
if A_IsSuspended = False {
Suspend(True)
pProgress.Opt("cRed")
}
if bDefaultBinding.Enabled = False || bPresetBinding.Enabled = False
bDefaultBinding.Enabled := bPresetBinding.Enabled := True
}
}
;######################################################## Functions ##########################################################################
_Hotkey(Name, ThisHotkey){
if Name = "use_0_nr"
Key1 := mKey.Get("use_0_nr"), Key2 := mKey.Get("pickup_0_nr"), Key3 := mKey.Get("activateprop_0_nr")
else if Name = "use2_0_nr"
Key1 := mKey.Get("use2_0_nr"), Key2 := mKey.Get("takedisguise_0_nr"), Key3 := ""
else if Name = "dropitem_0_nr"
Key1 := mKey.Get("dropitem_0_nr"), Key2 := mKey.Get("concealretrieve_0_nr"), Key3 := ""
else if Name = "cover_0_nr"
Key1 := mKey.Get("cover_0_nr"), Key2 := mKey.Get("dragbody_0_nr"), Key3 := ""
else if Name = "shoot_0_nr" {
Key1 := mKey.Get("shoot_0_nr"), Key2 := mKey.Get("melee_0_nr"), Key3 := mKey.Get("aim_0_nr")
if !GetKeyState((Key3 = "" ? "End" : Key3), "P"){
SendInput("{" . Key1 . " " . (Key1 = "" ? ("") : " down") . "}"), SendInput("{" . Key2 . " " . (Key2 = "" ? ("") : " down") . "}")
while GetKeyState((Key1 = "" ? "End" : Key1), "P"){
}
SendInput("{" . Key1 . " " . (Key1 = "" ? ("") : " up") . "}"), SendInput("{" . Key2 . " " . (Key2 = "" ? ("") : " up") . "}")
Return
}
else
Return
}
if KeyWait((Key1 = "" ? "End" : Key1), "T0.2"){
SendInput("{" . Key1 . " " . (Key1 = "" ? ("") : " down") . "}"), Sleep(100)
while GetKeyState((Key1 = "" ? "End" : Key1), "P"){
}
SendInput("{" . Key1 . " " . (Key1 = "" ? ("") : " up") . "}")
}
else {
SendInput("{" . Key2 . " " . (Key2 = "" ? ("") : " down") . "}"), SendInput("{" . Key3 . " " . (Key3 = "" ? ("") : " down") . "}"), Sleep(100)
while GetKeyState((Key1 = "" ? "End" : Key1), "P"){
}
SendInput("{" . Key2 . " " . (Key2 = "" ? ("") : " up") . "}"), SendInput("{" . Key3 . " " . (Key3 = "" ? ("") : " up") . "}"), Sleep(50)
}
}
_Binding(GuiCtrlObj, *){
if GuiCtrlObj.Text = "re-map keys (predefined)" {
For RegName, Key in mPresetBinding
RegWrite(Key, "REG_DWORD", mRegKey.Get("Game"), RegName)
_GuiShow("Reload")
Reload
}
else if GuiCtrlObj.Text = "re-map keys (default)" {
For RegName, Key in mDefaultBinding
RegWrite(Key, "REG_DWORD", mRegKey.Get("Game"), RegName)
_GuiShow("Reload")
Reload
}
}
_CheckBox(Name, GuiCtrlObj, Info){
if GuiCtrlObj.Value = True {
Loop {
if !IsSet(t%Name%_%A_Index%)
break
else
t%Name%_%A_Index%.Enabled := True, mCB_Status.Set(Name, " Checked"), mT_Status.Set(Name, ""), mHK_Status.Set(Name, "On")
}
}
else if GuiCtrlObj.Value = False {
Loop {
if !IsSet(t%Name%_%A_Index%)
break
else
t%Name%_%A_Index%.Enabled := False, mCB_Status.Set(Name, ""), mT_Status.Set(Name, " Disabled"), mHK_Status.Set(Name, "Off")
}
}
RegWrite GuiCtrlObj.Value, "REG_DWORD", mRegKey.Get("Script"), Name . "_CB"
Hotkey "*" mKey.Get(Name), _Hotkey.Bind(Name), mHK_Status.Get(Name)
}
_GuiShow(Status){
if Status = "Show" {
RegRead(mRegKey.Get("Script"), "ScriptReload", "ERROR") = "ERROR" ? RegWrite(0, "REG_DWORD", mRegKey.Get("Script"), "ScriptReload") : ("")
RegRead(mRegKey.Get("Script"),"ScriptReload") = True ? (gH3_KBinds.Show("x" . RegRead(mRegKey.Get("Script"),"XPos") " y" . RegRead(mRegKey.Get("Script"),"YPos") "NoActivate"), (WinExist(WinTitle) ? WinActivate(WinTitle) : (""))) : gH3_KBinds.Show()
}
else if Status = "Reload"
WinGetPos(&OutX, &OutY,,, A_IsCompiled ? "ahk_exe " A_ScriptName : GuiName), RegWrite(1, "REG_DWORD", mRegKey.Get("Script"), "ScriptReload"), RegWrite(OutX, "REG_SZ", mRegKey.Get("Script"), "XPos"), RegWrite(OutY, "REG_SZ", mRegKey.Get("Script"), "YPos")
else if Status = "Close"
RegWrite(0, "REG_DWORD", mRegKey.Get("Script"), "ScriptReload"), RegWrite(0, "REG_SZ", mRegKey.Get("Script"), "XPos"), RegWrite(0, "REG_SZ", mRegKey.Get("Script"), "YPos")
}
_CloseScript(GuiObj){
_GuiShow("Close")
ExitApp
}
#SuspendExempt
F5::{
_GuiShow("Reload")
Reload
}
F8:: {
_GuiShow("Close")
ExitApp
}