Hitman 3 - H3 KBinds

Post gaming related scripts
Noitalommi_2
Posts: 260
Joined: 16 Aug 2023, 10:58

Hitman 3 - H3 KBinds

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:

Image

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
}

Return to “Gaming”

Who is online

Users browsing this forum: No registered users and 5 guests