/Half-Life-scripts

Scripts for GoldSource, mainly for speedrunning purposes.

Primary LanguagePython

banner

Table of scripts for GoldSrc (Half-Life's engine) games.

For greater compatibility, Bunnymod XT's 'bxt_append' and 'w' functions are used. Scripts with "BXT" mean that they require this program to function.

Special thanks to nin_talal, vitosnatios1 and YaLTeR.

How to use 💡

  1. Inject Bunnymod XT link
  2. Create userconfig.cfg inside the mod dir of choice (found inside "Half-Life"):
  • Half-Life Steam (or in case you want to use it across mods) - valve
  • Half-Life WON - valve_WON
  • Opposing Force WON - gearbox_WON
  • Counter-Strike 1.6 - cstrike
  1. Copy and paste the script code into userconfig.cfg (including a bind of your choice, check availability here) using notepad and save.
  2. In-game open the console and type exec userconfig.cfg
  3. Please carefully read instructions and the wiki page if this if your first time scripting!

💡 My very own configs for learning/copying. I press F3-F10 during certain spots in the run to change what my 'G'/'mouse4'/'mouse5' do. scripts.cfg - my run on youtube

Issues and Help 📢

Please visit the Wiki page for helpful information on scripting, performance tips and common issues!

Table of Contents 📝

1. Movement & Misc

Bunnyhop BXT

Use BunnymodXT's "bxt_autojump 1" instead. 💡

Click here to view script

alias +bhop "alias _zspecial @bhop;@bh1"
alias -bhop "alias _zspecial;-jump"
alias @bh1 "+jump;alias @bhop @bh2;bxt_append _zspecial"
alias @bh2 "w;alias @bhop @bh3;bxt_append _zspecial"
alias @bh3 "-jump;alias @bhop @bh4;bxt_append _zspecial"
alias @bh4 "w;alias @bhop @bh1;bxt_append _zspecial"

Example: bind space +bhop

Duckroll BXT

Also known as "Duck Spam", might be useful for boosting in triggers such as in the toxic waste in HL1.
Use BunnymodXT's "+bxt_tas_ducktap" instead. 💡

Click here to view script

alias +duckroll "alias _zspecial @duck;@dr1"
alias -duckroll "alias _zspecial;-duck"
alias @dr1 "+duck;alias @duck @dr2;bxt_append _zspecial"
alias @dr2 "w;alias @duck @dr3;bxt_append _zspecial"
alias @dr3 "-duck;alias @duck @dr4;bxt_append _zspecial"
alias @dr4 "w;alias @duck @dr1;bxt_append _zspecial"

Example: bind mouse3 +duckroll

Use Spam BXT

alias +usespam "alias _zspecial @use;@use1"
alias -usespam "alias _zspecial;-use"
alias @use1 "+use;alias @use @use2;bxt_append _zspecial"
alias @use2 "w;alias @use @use3;bxt_append _zspecial"
alias @use3 "-use;alias @use @use4;bxt_append _zspecial"
alias @use4 "w;alias @use @use1;bxt_append _zspecial"

Example: bind k +usespam

Object Boosting BXT

2000 units/s boost (fastest)
alias "obbo" "+use;w 12;-use;+jump;wait;-jump"

Example: bind e obbo

800 units/s boost (average)
alias "obbo800" "+use;w 7;-use;+jump;wait;-jump"

Example: bind e obbo800

"On a Rails" forward obbo with shotgun
alias obboshoot "+use;w 10;-use;+attack2;+jump;w;-attack2;-jump"

Example: bind mouse5 obboshoot

How to use: While facing the box, walk forward and press mouse5. Changing the number after 'w' will affect the boost, values around 6 to 16 are good.

Residue Processing

alias rp_obbo "+use;w 15;-use"

Example: bind mouse5 rp_obbo
Video guide: link
How to use: while crouched, move right while facing the floating object until you reach max speed (106) then press mouse5. Hold jump after hitting your head inside the pipe.

Gauss 180° Boosting

alias _taubo
alias _taubofunc "cl_pitchup 180;cl_pitchdown -180;-attack2;wait;cl_pitchup 89;cl_pitchdown 89;force_centerview"
alias +tau "+attack2;alias _taubo _taubofunc"
alias -tau "_taubo;alias _taubo"

Example: bind mouse5 +tau

Quickgauss 180° Steam BXT

Important note: quickgauss is a trick ONLY possible on the Steam version of the game, NOT WON. 💡

How to use:

  1. Copy quickgauss.cfg to your valve dir.
  2. Type in console: exec quickgauss.cfg.
  3. Make a bind for +gauss, example: bind mouse4 +gauss.
  4. Press the bind and be prepared for the discharge after ~400ms.

When you use the bind, a single gauss cell is charged, a save and load happens and the script will time the 180° based on average results, which is a 6 frame gap.

Nade Boosting

Blast Pit "Barrel Bridge"
alias bp_nade "cl_pitchdown 85;cl_pitchup -85;+duck;+jump;wait;-attack;w 15;-jump;-duck;cl_pitchup 89;cl_pitchdown 89;force_centerview"
Interloper c4a1c
alias in_nade "cl_pitchdown -35;cl_pitchup 35;+duck;+jump;w;-attack;w 15;-jump;-duck;cl_pitchup 89;cl_pitchdown 89;force_centerview"

How to use: Walk forward and activate.
Example: bind mouse5 in_nade

SMG Boosting

alias smgboost "cl_pitchup -89;cl_pitchdown 89;w;+attack2;+jump;w;-attack2;-jump;cl_pitchup 89;cl_pitchdown 89;force_centerview"

How to use: Crouch for a few frames and activate it, this will boost the player vertically, useful on surface tension.
Example: bind g smgboost

Half-Life Multiplayer / OpenAG

Fast Zoom Crossbow

You may increase the wait count based on latency.

alias fastzoom "+attack2;+attack;wait;wait;wait;wait;lastinv;lastinv;-attack;-attack2"

Example: bind mouse5 fastzoom

Backwards Gauss Boosting

alias +tau "weapon_gauss;wait;+attack2"
alias -tau "cl_pitchup 270;cl_pitchspeed 21500;fps_max 60;wait;+lookup;wait;-lookup;-attack2;wait;+lookdown;wait;-lookdown;cl_pitchup 89;fps_max 100"

Example: bind mouse5 +tau

Duckroll OpenAG

alias ds1 "+duck;alias ds ds2;append ds"
alias ds2 "wait;alias ds ds3;append ds"
alias ds3 "-duck;alias ds ds4;append ds"
alias ds4 "wait;alias ds ds1;append ds"
alias +ds "cl_autojump 0;ds1"
alias -ds "alias ds;-duck;cl_autojump 1"

Example: bind mouse3 +ds

Double Duck OpenAG

alias dd1 "+duck;alias dd dd2;append dd"
alias dd2 "wait;alias dd dd3;append dd"
alias dd3 "-duck;alias dd dd4;append dd"
alias dd4 "wait;alias dd dd5;append dd"
alias dd5 +duck
alias +dd dd1
alias -dd "alias dd;-duck"

Example: bind mouse3 +dd

Use Spam OpenAG

alias us1 "+use;alias us us2;append us"
alias us2 "wait;alias us us3;append us"
alias us3 "-use;alias us us4;append us"
alias us4 "wait;alias us us1;append us"
alias +us us1
alias -us "alias us;-use"

Example: bind e +us

Counter-Strike 1.6

Fast Switch

alias fastswitch "+attack2;wait;wait;wait;-attack2;+attack;wait;wait;wait;-attack;lastinv;wait;lastinv"

Example: bind mouse4 fastswitch

Auto Fire BXT

alias +aps "alias _aps @aps;@aps"
alias -aps "alias _aps"
alias @aps "+attack;wait;-attack;wait;bxt_append _aps"

Example: bind mouse5 +aps

Fast Walk BXT

Also known as "ground strafe".

alias "+fr" "alias _fr @fr;cl_yawspeed 0;@fr"
alias "-fr" "alias _fr;cl_yawspeed 210"
alias "@fr" "+left;+moveleft;w;-left;-moveleft;+right;+moveright;w;-right;-moveright;bxt_append _fr"

Example: bind f +fr

Opposing Force

M249 180° Automatic BXT

Must be used at 100 fps, preferably in small bursts.

alias +m249 "alias _zspecial @m249;@m249_1"
alias -m249 "-attack;alias _zspecial"
alias @m249_1 "cl_pitchup 180;cl_pitchdown -180;+attack;alias @m249 @m249_2;bxt_append _zspecial"
alias @m249_2 "w;cl_pitchdown 89;cl_pitchup 89;force_centerview;alias @m249 @m249_3;bxt_append _zspecial"
alias @m249_3 "w;alias @m249 @m249_4;bxt_append _zspecial"
alias @m249_4 "w;alias @m249 @m249_5;bxt_append _zspecial"
alias @m249_5 "w;alias @m249 @m249_6;bxt_append _zspecial"
alias @m249_6 "w;alias @m249 @m249_7;bxt_append _zspecial"
alias @m249_7 "w;alias @m249 @m249_8;bxt_append _zspecial"
alias @m249_8 "w;alias @m249 @m249_1;bxt_append _zspecial"

Example bind mouse5 +m249

Throwing nades under the door on "Friendly Fire"

Also works on They Hunger 1.

alias door "fps_max 20;cl_pitchdown 60.5;cl_pitchup -60.5;+duck;w 5;fps_max 19.5;+attack;w;-attack;w 25;+attack;w;-attack;w 15;fps_max 100;-duck;cl_pitchup 89;cl_pitchdown 89"

Example: bind g door

2. Scripted Sequences BXT

All scripts must be done at 100 fps (check using net_graph 1) and for those requiring angles, use bxt_hud_viewangles 1. Issues are likely related to framerate, so please check the wiki for possible solutions! 💡

Test Chamber A

This version is currently NOT allowed by speedrun.com/hl1 rules.

Click here to view script

alias testchamber "+moveright;+back;w 30;+use;w 4;-use;w 40;-moveright;-back;w 100;+left;w 6;-left;wait;+moveright;w 22;+use;w 11;-use;+duck;wait;-duck;-moveright;w 40;+back;w 13;-back"

How to use: Stay on the left corner between cart cage and wall, after the cart fully arrives, activate it. Must be done within these angles: pitch 30~40, yaw 125.05 ~ .09

Test Chamber B

Consistent/simple version.

alias testchamber "tc1"
alias tc1 "w 100;w 100;alias testchamber tc2"
alias tc2 "w 10;w 10;w 10;+use;wait;wait;wait;wait;-use;w 10;w 10;w 10;w 10;-moveright;-back;w 100;alias testchamber tc3"
alias tc3 "wait;wait;wait;wait;wait;wait;-left;wait;alias testchamber tc4"
alias tc4 "w 10;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;+use;w 10;wait;-use;+duck;wait;-duck;-moveright;w 10;w 10;w 10;w 10;alias testchamber tc5"
alias tc5 "w 10;wait;wait;wait;-back;alias testchamber tc1"

bind 6 "alias testchamber tc1"
bind 7 +left
bind 8 +moveright
bind 9 +back
bind 0 testchamber

Video guide: link
How to use: Stay on the left corner between cart cage and wall, when the cage starts to decend, follow the steps. Must be done within these angles: pitch 30~40, yaw 125.05 ~ .09

  1. press 0
  2. hold s+d+0 then release
  3. hold 7+0 then release
  4. hold 8+0 then release
  5. hold 9+0 then release

Test Chamber C

This version is slightly faster than A/B but harder to hit the trigger.

alias testchamber "tc1"
alias tc1 "w 200;alias testchamber tc2"
alias tc2 "w 10;w 10;w 10;+use;wait;-moveright;wait;wait;wait;-use;alias testchamber tc3"
alias tc3 "w 10;w 10;w 50;cl_pitchup -89;+use;w 10;wait;wait;wait;wait;-use;cl_pitchup 89;-moveright;-back;cl_pitchdown 30;w 50;+use;alias testchamber tc4" 
alias tc4 "w 10;wait;wait;wait;wait;-use;w 50;w 10;-moveright;cl_pitchdown 89;alias testchamber tc1"

bind 8 +back
bind 9 +moveright
bind 0 testchamber

How to use: Stay on the left corner between cart cage and wall, when the cage starts to decend, follow the steps. Must be done within these angles: pitch 30~40, yaw 136.5 ~ .49

  1. press 0
  2. hold 8+9+0 then release
  3. hold 8+9+0 then release
  4. hold 9+0 then release

Test Chamber D

Probably the "best" version, it offers an edge bug to cancel fall damage.

alias testchamber "tc1"
alias move "+moveright"

alias tc1 "w 200;alias testchamber tc2;alias move +moveright"
alias tc2 "alias testchamber tc3;alias move +back"
alias tc3 "w 30;+use;wait;-moveright;wait;wait;wait;-use;alias testchamber tc4;alias move +moveright"
alias tc4 "w 70;cl_pitchup -89;+use;w 10;wait;wait;wait;wait;-use;cl_pitchup 89;-moveright;-back;cl_pitchdown 30;w 50;+use;alias testchamber tc5" 
alias tc5 "w 10;wait;wait;wait;wait;-use;w 10;-moveright;w 30;cl_pitchdown 89;alias testchamber tc6;alias move +forward"
alias tc6 "cl_pitchdown 180;cl_pitchup -170;w 9;cl_pitchup 89;cl_pitchdown 40;wait;cl_pitchdown 89;-forward;w 63;alias testchamber tc7;alias move +moveleft"
alias tc7 "alias testchamber tc8;alias move +left"
alias tc8 "w 50;-moveleft;w 100;-left;fps_max 40;w 11;fps_max 100;alias testchamber tc9;alias move +forward"
alias tc9 "w 40;-forward"

bind 9 move
bind 0 testchamber 

Video guide: link
How to use: Stay on the left corner between cart cage and wall, when the cage starts to decend, follow the steps. It helps if you have developer 1 to see the level change being triggered. Must be done within these angles: pitch 30~40, yaw 136.51 ~ .40

  1. 0, 9, 0, 9, 0, 9, 0, 9, 0, 9, 0, 9, 0, 9, 0

Basically (0 then 9) times seven then '0' once. After touching the level change trigger up there you may continue:

  1. 9 then 0
  2. hold A + duck

Power Up A

alias puskip "-jump;-moveright;-moveleft;speak fvox/power_level_is;w 100;speak fvox/beep;w 100;speak fvox/beep;w 100;speak fvox/beep;w 100;speak fvox/beep;w 100;speak fvox/beep;w 100;speak fvox/beep;cl_pitchdown 180;cl_pitchup -179;w 30;cl_pitchup -30;cl_pitchdown 31;wait;cl_pitchup 89;cl_pitchdown 89;w 10;+use;w 11;-use;+jump;wait;-jump"

Video guide: link
Example: bind g puskip

Power Up B

Facing forward, no object boost.

alias puskip "speak fvox/power_level_is;w 100;speak fvox/beep;w 100;speak fvox/beep;w 100;speak fvox/beep;w 100;speak fvox/beep;w 100;speak fvox/beep;w 50"

How to use: Walk forward and activate the script as you walk across the level change trigger, grab the tripmines and wait against the wall.

Power Up C

Facing forward, with object boost!

alias puskip "weapon_shotgun;-jump;-moveright;-moveleft;w 350;+use;w 12;-use;+jump;wait;-jump;+attack2;wait;-attack2;+duck;w 28;-duck"

Video guide: link

Apprehension

alias captured "ct1"

alias ct1 "fps_max 100;w 2205;alias captured ct2"
alias ct2 "w 164;alias captured ct3"
alias ct3 "w 6;+speed;w 21;-right;-speed;alias captured ct4"
alias ct4 "w 11;+jump;+duck;w 21;-forward;alias captured ct5"
alias ct5 "w 15;-moveright;-right;w 50;alias captured ct6"
alias ct6 "w 30;-duck;-jump;-moveleft;-left;w 40;cl_pitchdown 89.999;cl_pitchup -89.999;wait;+use;wait;-use;wait;alias captured ct7"
alias ct7 "wait;-forward;wait;alias captured ct8"
alias ct8 "wait;-forward;wait;alias captured ct9"
alias ct9 "wait;-forward;wait;alias captured ct10"
alias ct10 "wait;-forward;wait;+use;wait;-use;cl_pitchup 89;cl_pitchdown 89"

bind 7 captured

How to use: Lower fps to 8 and do step 1 when you see the "loading" for the two soldiers talking cutscene.

  1. 7
  2. s+7
  3. rightarrow+7
  4. w+7
  5. d+rightarrow+7
  6. a+leftarrow+7
  7. w+7
  8. w+7
  9. w+7
  10. w+7

Box jump

bind 7 "spk fvox/blip.blip.blip.blip"

How to use: Save/load after cutscene ends, when screen fades again press 7.
Video guide: link

Surface Tension Valve

alias valve "v1"

alias v1 "w 100;alias valve v2"
alias v2 "w 195;-forward;w 220;-moveleft;alias valve v3"
alias v3 "w 125;alias valve v1"

bind 6 valve

How to use: ???

  1. 6
  2. W+A+6
  3. W+6

Forget About Freeman A

alias faf "save quick;speak fvox/power_level_is.beep._comma.beep._comma.beep._comma.beep;-moveright;-moveleft;-duck;weapon_crowbar;+attack;w 500;weapon_handgrenade;w 40;cl_pitchdown 180;cl_pitchup -179;w 40;cl_pitchup 89.999;cl_pitchdown 89.999;cl_pitchup -40;cl_pitchdown 40.001;w 30;-attack;w 4;+jump;+duck;wait;-jump;-duck;cl_pitchup 89;cl_pitchdown 89;w 61"

Video guide: link
Example: bind g faf

Forget About Freeman B

This version uses a smg nade to scare the vortigaunts off.

alias faf "w 400;smg;w 1;weapon_handgrenade;w 10;+attack;w 50;cl_pitchdown 180;cl_pitchup -179;w 40;cl_pitchup 89.999;cl_pitchdown 89.999;cl_pitchup -40;cl_pitchdown 40.001;w 30;-attack;w 4;+jump;+duck;w 1;-jump;-duck;cl_pitchup 89.999;cl_pitchdown 90;w 61"
alias smg "cl_pitchdown 180;cl_pitchup -179;w 1;+attack2;w 1;cl_pitchup 89;cl_pitchdown 89;-attack2"

How to use: same as A version but cook the grenade and switch to the SMG before activating.
Example: bind g faf

Interloper

alias in_dboost "-forward;cl_pitchdown 89;cl_pitchup -89;-attack;w;+duck;+jump;weapon_9mmAR;w 45;cl_pitchdown 32;cl_pitchup -32;+attack2;w 10;-duck;-jump;-attack2;cl_pitchup 89;cl_pitchdown 89;force_centerview;weapon_gauss"

Video guide: link
Example: bind mouse5 in_dboost

3. Jumpbugs BXT

Jumpbugs basically cancel fall damage by jumping and unducking 2 units above the ground, the scripts will time this while allowing the player to move freely. Spreadsheet by Jukspa link

Before anything:

  • If version in your console outputs Exe build: [...] from 2013 or later, subtract 0.5 fps from fps_max values within the script in order to work.
  • Scripts ending with *_steampipe.cfg already take that in count.

How to use 💡

  1. Download this repository clicking here then move the script you want inside the mod dir (valve, valve_WON, gearbox_WON, etc).
  2. Load the script you want: bind F2 "exec jb_example.cfg" OR type in console exec jb_example.cfg
  3. Make a bind for "+jumpbug": bind mouse4 +jumpbug
  4. Hold down "+jumpbug" until it's over, you can move/attack freely. The script jumps and jumpbugs automatically.

Video showcase for most jumpbugs: Click here to watch 📺

The table below shows where to execute each script. (Specific spots outlined in green)

Script Jump (+jumpbug) Land
jb_am.cfg
jb_blastpitfall.cfg
jb_blastpitbox.cfg
jb_blastbutton.cfg
jb_blastpitpipe.cfg
jb_rails.cfg
jb_rp.cfg
jb_op4.cfg
jb_they9_steampipe.cfg