Strafescript

From QWiki

Strafescript is a feature that changes behavior of the movement keys in the game. Normally when you perform side steps, you can hold only one of the keys that perform side step - left or right. If you hold both at the same time the player will stop moving.

With strafescript enabled you will always be moving to one side even if you hold both side step keys. If you hold both keys, you will move to the side of the last pressed key. So press and hold +moveleft and then +moveright and you will be moving to the right side.

Availability

This feature was available in QuakeWorld ever since it was possible to use user variables in scripts. It was possible to bind custom commands on the movement keys modify their behavior in the way described here. In ezQuake 1.9.3 the functionality is also available under cl_iDrive command.

EQL 9 decided to disallow usage of this functionality and the whole issue is still under open discussion on the scene.

Benefits

As the left-right switching is important in bunny-jumping (making your first jump perfect) and also in increasing your speed while running straight forward, the more precisely it is done, the higher speed is achieved.

JohnNy_cz performed a test of 5 + 5 runs in a straight line (holding +forward and tapping +moveleft/right alternatively and swirling the mouse) and measured the time using race mode, first 5 runs without strafescript, another 5 with strafescript. The times achieved with strafescript were about 5-6% better than without.

Other benefits are quicker (more exact) left-right dodging.

Script

 bind w "+mforward"
 bind a "+mleft"
 bind s "+mback"
 bind d "+mright"
 
 alias +mback "+back;inc nmback  1;if $nmforward > 0 then -forward"
 alias -mback "-back;inc nmback -1;if $nmforward > 0 then +forward"
 alias +mforward "+forward;inc nmforward  1;if $nmback > 0 then -back"
 alias -mforward "-forward;inc nmforward -1;if $nmback > 0 then +back"
 alias +mleft "+moveleft;inc nmleft  1;if $nmright > 0 then -moveright"
 alias -mleft "-moveleft;inc nmleft -1;if $nmright > 0 then +moveright"
 alias +mright "+moveright;inc nmright  1;if $nmleft > 0 then -moveleft"
 alias -mright "-moveright;inc nmright -1;if $nmleft > 0 then +moveleft"
 
 set nmback "0"
 set nmforward "0"
 set nmleft "0"
 set nmright "0"

cl_iDrive

Since version 1.9.3 ezQuake disables scripts that contain movement commands if user has allow_scripts 0 set. To not remove the possibility to use the strafescript, cl_iDrive setting is available, which simply emulates the strafescript functionality. The client's reply to the f_ruleset check will also contain "+i" flag if the user is using cl_iDrive. To make sure a player is not using strafescript, f_ruleset reply has to have both flags "i" and "s" (denoting allow_scripts 0) disabled (prefixed with "-").

Links