Runners who want to create a run where they can refine each aspect and achieve the best result they can or runners who want to do a run over an extended period of time rather than all in one go may want to do a segmented run of the game. Segmented runs are popular and often really exciting and visually pleasing. Finishing a segmented run can often bring a bigger sense of accomplishment than doing a run in one sitting and can be an opportunity to remove obvious errors in your running. This short guide aims to get you started on your segmenting journey with useful scripts and tips for segmenting.
Normally it is impossible to tell the game to pause upon loading a save. If you are running using Bunnymod XT then you have access to the useful bxt_autopause feature. This features pauses the game on the first frame of gameplay every time you load a save or change level.
This enables you to load into saves and start a segment when you want to without having to time the loading screen ending. An example of a script that takes advantage of this feature would be the following:
bxt_autopause 1
bxt_hud_timer 1
//Segment load
bind p "l04d"
//Segment save
bind e "s4v3"
alias s4v3 "stopp; save 1"
alias l04d "bxt_timer_reset;pause1;load 1"
alias pause1 "setpause;bxt_timer_stop;sensitivity 0;bind mouse2 pause0"
alias pause0 "record temp;w4;bxt_timer_start;unpause;sensitivity 1;bind mouse2 +attack2"
alias stopp "pause1;w4;stop"
Once you've ended a segment, it is required that you back up your demo to be shared or rendered later and for verification. It is optional but reccomended to back up your saves as well. To make a segment, simply press your start segment bind, do whatever you want, and then press the end segment bind. This will create a) a demo of your segment and b) a save state to pick up exactly where you left off. Make sure you always back up your demos and saves so that they don't accidentally get overwritten and you lose your segment.
Segmenting a run makes it much easier to execute fastfires because you can retry and time segment starts and ends accordingly. To automate fastfiring in segmented runs, the following aliases may be used to fire as soon as the segment begins and then end the segment immediately after firing. Bind these aliases to one of your keys because they won't work from within the console.
alias fastfire1 "pause0;w;+attack;w;-attack;stopp"
alias fastfire2 "pause0;w;+attack2;w;-attack2;stopp"
After executing the fire, pressing your s4v3 bind and backing up your demo you may quick switch to the next weapon in sequence during the pause and execute another fastfire. These scripts also work for stopping a segment as soon as you fire while playing. If you are positive that the fastfire will go as planned then you can replace the stopp
command with the s4v3
command to save the segment automatically.
It may be desired in a run to time short segments with a specific number of frames in order to abuse loading glitches like ammo duplication. These aliases start a segment, wait the indicated number of frames, and end the segment. If you are positive that you will want the segment to save immediately without having to manually hit your s4v3
bind, you can replace the stopp
command with the s4v3
command in the alias.
alias shortseg1 "pause0;w;stopp"
alias shortseg5 "pause0;w5;stopp"
alias shortseg20 "pause0;w20;stopp"
alias shortseg50 "pause0;w50;stopp"
alias shortseg100 "pause0;w100;stopp"
alias shortseg250 "pause0;w250;stopp"
alias shortseg500 "pause0;w500;stopp"
alias shortseg1000 "pause0;w1000;stopp"
Proto made a video tutorial for segmenting that may help you understand. He uses a different config from the one above but the concept is identical.
It is always heavily reccomended to run with Bunnymod XT. However, some people might not want to modify the game for running or want use a different tool like Bunnymod Pro. In these cases, the cvar bxt_autopause doesn't exist and can't be used. The aliases used for segmenting under these circumstances use the host_framerate cvar to substitute for truly pausing. Because of this, they don't work very well on builds of Half-Life 4554 and above, so those running steampipe clients will experience a few menu bugs. The aliases would look something like this:
//Segment load
bind p "l04d"
//Segment save
bind e "s4v3"
alias l04d "reset;pause1;load 1"
alias s4v3 "stopp;save 1"
alias pause1 "host_framerate 0.00000000001;sensitivity 0;bind mouse2 pause0"
alias pause0 "pause;record temp;host_framerate 0;sensitivity 1;bind mouse2 +attack2;pause"
alias stopp "fps_max 100;sensitivity 0;pause;w4;stop;pause1"