105 lines
3.1 KiB
Python
105 lines
3.1 KiB
Python
import argparse
|
|
import shutil
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# Change this order or remove elements to change the ingame knife order
|
|
# Make sure that the knive names are correct
|
|
KNIVES = [
|
|
"weapon_knife_karambit",
|
|
"weapon_knife_m9_bayonet",
|
|
"weapon_bayonet",
|
|
"weapon_knife_butterfly",
|
|
"weapon_knife_flip",
|
|
"weapon_knife_gut",
|
|
"weapon_knife_push",
|
|
"weapon_knife_tactical",
|
|
"weapon_knife_falchion",
|
|
"weapon_knife_survival_bowie",
|
|
"weapon_knife_ursus",
|
|
"weapon_knife_gypsy_jackknife",
|
|
"weapon_knife_stiletto",
|
|
"weapon_knife_widowmaker",
|
|
"weapon_knife_ghost",
|
|
"weapon_knife_css",
|
|
"weapon_knife_canis",
|
|
"weapon_knife_cord",
|
|
"weapon_knife_outdoor",
|
|
"weapon_knife_skeleton",
|
|
]
|
|
|
|
# For a list of available hotkeys, see https://totalcsgo.com/binds/keys
|
|
HOTKEY = "KP_END"
|
|
|
|
# You should not have to change anything below here !
|
|
# ------------------------------------------------------------------------------------ #
|
|
|
|
CFG_CONTENT = (
|
|
"ent_fire weapon_knifegg kill\n"
|
|
"give {knife}\n"
|
|
'script DoEntFire("weapon_knife", "addoutput", "classname weapon_knifegg", 0, null, null)\n'
|
|
'bind {hotkey} "exec knives/{next_cfg}"\n'
|
|
"slot3\n"
|
|
)
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
"--cfg",
|
|
"-c",
|
|
type=Path,
|
|
default=Path(
|
|
"C:\Program Files (x86)\Steam\steamapps\common\Counter-Strike Global Offensive\csgo\cfg"
|
|
),
|
|
help="CSGO cfg directory. Assumes default windows path if not specified.",
|
|
)
|
|
args = parser.parse_args()
|
|
cfg: Path = args.cfg
|
|
|
|
# Check if cfg directory is correct
|
|
if not cfg.exists():
|
|
sys.exit("Error: cfg directory does not exist.")
|
|
if not cfg.name == "cfg":
|
|
sys.exit(f"Error: cfg directory must be named 'cfg' (not {cfg.name})")
|
|
|
|
# Create `knives` subdirectory
|
|
knives = cfg / "knives"
|
|
|
|
# If already exists, ask if current should be overwritten
|
|
if knives.exists():
|
|
while True:
|
|
overwrite = input(
|
|
"Warning: cfg/knives directory already exists. Continue and overwrite? (y/n) "
|
|
).lower()
|
|
if overwrite == "y":
|
|
shutil.rmtree(knives)
|
|
break
|
|
elif overwrite == "n":
|
|
sys.exit("Aborted")
|
|
|
|
knives.mkdir()
|
|
|
|
# For each knive, create cfg file
|
|
for index, knife in enumerate(KNIVES):
|
|
# Create file
|
|
knife_cfg = knives / f"{index:02d}_{KNIVES[index]}.cfg"
|
|
|
|
# Next index in knife list (rotate)
|
|
next_index = (index + 1) % len(KNIVES)
|
|
|
|
# Drop default knife initially
|
|
content = CFG_CONTENT.format(
|
|
knife=knife,
|
|
next_cfg=f"{next_index:02d}_{KNIVES[next_index]}",
|
|
hotkey=HOTKEY,
|
|
)
|
|
|
|
# Write to file
|
|
with open(knife_cfg, "w") as knife_cfg_file:
|
|
knife_cfg_file.write(content)
|
|
|
|
# Done! Show user initial bind line
|
|
print("Done! Add these lines to your config for the initial knife drop:")
|
|
print("mp_drop_knife_enable 1")
|
|
print(f'bind {HOTKEY} "use weapon_knife; drop; exec knives/00_{KNIVES[0]}"')
|