ZQuake User Manual
<ZQuake 0.13dev build 780>
25 March 2002

Contents

CVar/Command Listing: Client Server
New/Modified Client CVar/Commands
New/Modified Server Commands
Teamplay
  List of Macros
  Fun Character Conversion
Other Features
  CVar Expansion
  Message Catcher System
  Key Use in Console
  Demos
  Command-Line Parameters
  f_version and z_version
  TF Cheats Protection
  Server Custom Ent Files
Contacts

CVar/Command Listing

Client:
_z_cmd, aliaslist, bindlist, cl_bonusflash, cl_c2spps, cl_c2simpulsebackup, cl_chatmode, cl_chatsound, cl_clock, cl_clock_x, cl_clock_y, cl_deadbodyfilter, cl_demopinginterval, cl_demospeed, cl_explosion, cl_filterdrawviewmodel, cl_gibfilter, cl_keypad, cl_muzzleflash, cl_nofake, cl_oldpl, cl_parsesay, cl_parsewhitetext, cl_r2g, cl_staticsounds, cl_triggers, cl_trueLightning, cmdlist, con_notifylines, con_notifytime, contrast, crosshair, cvarlist, default_fov, easyrecord, enemycolor, enemyskin, filter, if, gl_conalpha, gl_contrast, gl_gamma, gl_fb_bmodels, gl_fb_depthhack, gl_fb_models, impulse, inc, loadloc, macrolist, mapname, msg_trigger, playdemo, qizmo_dir, r_drawflame, r_drawviewmodel, r_fastsky, r_fullbrightskins, r_grenadetrail, r_powerupglow, r_rocketlight, r_rockettrail, r_skycolor, s_khz, scr_centermenu, scr_centersbar, scr_consize, screenshot, set, show_speed, teamcolor, teamskin, toggle, tp_forcetriggers, tp_loadlocs, tp_name_item, tp_need_item, tp_pickup, tp_point, tp_soundtrigger, tp_took, unalias, unaliasall, v_contentblend, v_damagecshift, v_dlightcshift, v_gunkick, v_pentcshift, v_quadcshift, v_ringcshift, v_suitcshift, vid_hwgammacontrol, viewalias, writeconfig

Server:
devmap, kick, sv_cheats, sv_loadentfiles, sv_maxrate, sv_nailhack, serverinfo maxfps, cheats

New/Modified Client CVar/Commands

_z_cmd [Cont. List.]
Execute commands which will only run in ZQuake.

Example:
_z_cmd exec zquake.cfg

aliaslist [Cont. List.]
List all aliases.

bindlist [Cont. List.]
Lists all key bindings.

crosshair [0-6] [Cont. List.]
A mini crosshair (color of crosshaircolor, of course).

cl_bonusflash [0,1] [Cont. List.]
Turn on/off the weapon/item pickup flash.

cl_c2spps [Cont. List.]
Packet filtering (a la Qizmo's .c2spps command). Use this to reduce network traffic if you're playing on a 28800 (or worse) connection and can't set cl_maxfps 72 because it causes lags.
The recommended settings are cl_maxfps 72 and cl_c2spps 30.
Note that if you're playing on a buggy 2.30 server, the increase of fps may result in "failing" jumps when you bunny-hop. The best would be to get zqwsv or KT 2.20 installed on the server; if that's impossible, you'll have to cap your fps with cl_maxfps (try cl_maxfps 50 or 30).

cl_c2simpulsebackup [0..3] (default 3) [Cont. List.]
Used with cl_c2spps, it controls how many backup copies of packets with non-zero impulses are to be sent to the server. The recommended value is 3, but you can try 2 or even 1 to reduce traffic if you don't have any packet loss.

cl_chatmode [0-2] [Cont. List.]
Console chat mode.
0 - text in the console is always treated as a command and in order to chat you have to use messagemode/messagemode2 or use the say/say_team commands
1 - everything you type in the console goes into chat, in order to issue a command, prefix it with a slash (/)
2 - if the first word in the line is a command, it is executed, otherwise the line is sent as chat

cl_chatsound [0-2] [Cont. List.]
Chat sound (the beep when someone says something).
0 - all off
1 - all on
2 - team chat only

cl_clock [0-2] (default 0) [Cont. List.]
A clock.
0 - off
1 - shows the time you spent on server (you'll also see it in the status bar when you press TAB)
2 - shows the time of day

cl_clock_x [Cont. List.]
Horizontal coordinates of the clock.

cl_clock_y [Cont. List.]
Vertical coordinates of the clock.
If < 0, the coordinates are calculated from bottom up, e.g. -1 means the screen line just above the scoreboard.

cl_deadbodyfilter [0,1] (default 0) [Cont. List.]
If 1, corpses are not drawn. This helps the FPS somewhat, not to mention your concentration. In TeamFortress feigning spies are hidden.

cl_demopinginterval (default 5) [Cont. List.]
How often to request ping updates when recording demos. 0 disables automatic ping requests.
This variable doesn't affect ping updates when the scoreboard is shown (they are always one update per 2 seconds).

cl_demospeed [0.1-10] [Cont. List.]
Changes speed of demo playback.

cl_explosion [0-3, 6-8] [Cont. List.]
Changes standard explosions to less fps-hogging ones.
0 - normal (default )
1 - no particles
2 - no dynamic lighting
3 - no particles, no dynamic lighting
6 - teleport
7 - blood
8 - bigblood

cl_filterdrawviewmodel [0,1] [Cont. List.]
Prevents r_drawviewmodel from being changed by Rocket Arena servers.

cl_gibfilter [0,1] (default 0) [Cont. List.]
If 1, gibs are turned off.

cl_keypad [0,1] (default 1) [Cont. List.]
If 1, you will be able to bind such keys as capslock, numlock, and all numpad keys. 0 is QW compatibility where the keypad keys act the same key name, eg KP_8 acts like uparrow would.

The full listing is:
Key NameAlternative Name
CAPSLOCK
KP_NUMLOCKNUMLOCK
KP_SLASH
KP_STAR
KP_MINUS
KP_HOMEKP_1
KP_UPARROWKP_2
KP_PGUPKP_3
KP_PLUS
KP_LEFTARROWKP_4
KP_5
KP_RIGHTARROWKP_6
KP_ENDKP_7
KP_DOWNARROWKP_8
KP_PGDNKP_9
KP_ENTER
KP_INSKP_0
KP_DEL

cl_muzzleflash [0-2] [Cont. List.]
"Muzzleflash" (the flashes when a gun is shot)
0 - all turned off
1 - all turned on (default )
2 - own's flash off, all other on

cl_nofake [0-2] [Cont. List.]
1 disables "fake" messages sent by other players. It replaces all line feed (0x0A) and carriage return (0x0D) characters with a space symbol.
A value of 2 disables fake messages from enemies only, so 2 is suggested. But ZQuake cannot be sure who exactly sent the message when there is, for a example, a guy named "unnamed" in your team and "(unnamed)" in the enemy team, because a messsage from (unnamed) and a team message from unnamed will look identically. In this case ZQuake will "unfake" messages from both players.

cl_oldpl [0,1] [Cont. List.]
Use 0 to disable the new PL calculation algorithm.

cl_parsesay (default 0) [Cont. List.]
If 1, you can use macros such as %l, %d %a, %h etc. List of Macros.

cl_parsewhitetext [0-2] (default 1) [Cont. List.]
Convert text between { and } to white or not in chat/team chat.
0 - convert none
1 - convert all (chat and team chat)
2 - convert team chat only

Example:
cl_parsewhitetext 1
say this text is red
say {this text is white}

cl_r2g [0,1] [Cont. List.]
If 1, converts all rockets to grenades.

cl_staticsounds [0,1] (default 1) [Cont. List.]
Set this to disable static sounds.
Note that that you must reconnect or restart the map for it to take effect.

cl_triggers [0,1] (default 0) [Cont. List.]
If 1, then special aliases can be executed, or triggered, when something happens.

Aliases:
f_respawn - triggered when you are (re)spawned.
f_death - triggered when you die.
f_flagdeath - when you die with a flag in TeamFortress.
f_mapend - triggered when the intermission screen is brought up.
f_newmap - triggered when a new map is entered.
f_spawn - executed after the first frame on a new map is rendered.
f_took - called when you pick up an item in teamplay (use the tp_took command to specify what items should trigger this alias).
f_weaponchange - called when you change your weapon (except in cases when you die or respawn).

Examples:
alias f_respawn "say_team respawned at %l"
alias f_death "say_team died at %d"
alias f_flagdeath "say_team enemy flag lost at %d!"
alias f_mapend "stop; screenshot"
alias f_spawn "easyrecord"
alias f_newmap "cl_warncmd 0; exec mapcfg/$mapname.cfg; cl_warncmd 1"
alias f_took "say_team took %i"
alias f_weaponchange "echo I'm using %w"

cl_truelightning [0..1] (default 0) [Cont. List.]
Smoothes out shaft movement, 0 means no smoothing at all, 1 - 100% smoothing; a value of about 0.5 is recommended for modem players.

cmdlist [Cont. List.]
List all commands.

con_notifylines (default 4) [Cont. List.]
Number of console messages displayed at top of screen.

con_notifytime (default 3) [Cont. List.]
How long console messages stay on screen.

contrast (default 1) [Cont. List.]
Screen brightness in software mode.

cvarlist [Cont. List.]
List all console variables (also known as CVars)
It also prints each CVar's flags:
* - archived variable (m_pitch, name..)
u - userinfo (name, bottomcolor..)
s - serverinfo (deathmatch, hostname..)

default_fov [Cont. List.]
Very useful in TeamFortress, and other mods that reset your fov when you spawn to 90. Basically, when the server sends you "fov 90", your fov is set to default_fov.

easyrecord [Cont. List.]
Record demos without worrying about the filename. See also.

enemycolor [color] [Cont. List.]
Overrides the colour of enemies. Disabled in TeamFortress.

enemyskin [skin.pcx] [Cont. List.]
Overrides the skins of enemies. Disabled in TeamFortress.

filter [#filtername] [Cont. List.]
Message filtering system. Only team messages are filtered.
Use filter with no parameters to list current filters and filter clear to remove all filters.

Example:
filter #a
say_team i can see this message #a
say_team i can't see this message #d

if <expr1> <op> <expr2> [then] command [else command] [Cont. List.]
Logical expressions.

<expr1> and <expr2>: either strings or numbers
<op>: one of ==, !=, >, <, >= or <=
then and else: optional
== and =, != and <> have exactly the same meaning.

Examples:
alias vol_up "if $volume < 1 inc volume 0.05"
alias vol_down "if $volume > 0 inc volume -0.05"
bind kp_plus vol_up
bind kp_minus vol_down

if $mapname == dm2 then gl_gamma 0.5 else gl_gamma 0.7
if $bottomcolor == 4 then "say i'm in red team"

Notes:
== and != are used for string comparisons and >, <, >=, <= only apply to numbers.
If the first character is ".", "-", "+", or "0"-"9" it gets treated as a number. So if you want to force string comparison, prefix the two expressions with underscores. eg:
if _$date == _01.01.09 say "happy new year! (oh, they still play quake in 2009?) :-)"

gl_conalpha [0..1] (default 0.8) [Cont. List.]
Console transparency in GL. 1 is solid and 0 is fully transparent.

gl_contrast [0..1] [Cont. List.]
Controls screen brightness in GL.

gl_gamma [Cont. List.]
Controls gamma in GL, only works in fullscreen mode and only if your video card supports the SetDeviceGammaRamp function (Voodoo cards don't).

gl_fb_bmodels [0,1] (default 1) [Cont. List.]
Enable "fullbright" colors on bsp models (World, health boxes, etc). Setting it to 0 might give you a couple more fps.

gl_fb_models [0,1] (default 1) [Cont. List.]
Enable "fullbright" colors on alias models (grenades, player models, etc). Setting it to 0 might also give you more fps.

gl_fb_depthhack [0,1] (default 1) [Cont. List.]
0 is faster but may cause problems (fullbright colors on bmodels may be drawn incorrectly in gl_texsort 0 mode, also it's been reported to provide an ugly effect in gl_texsort 1, -bpp 32 mode on some vid cards)

impulse imp1 [imp2 [imp3...]] [Cont. List.]
Switch to single or best weapon.
Example: impulse 5 4 - chooses either nailgun or supernailgun, depending on which one you have. If you have both, chooses supernailgun.

inc [cvar] [value] [Cont. List.]
Adds value to a cvar. If value is left out, the cvar in increased by 1.

Example:
inc volume -0.1
Would subtract 0.1 from volume.

loadloc [file.loc] [Cont. List.]
Loads a loc file (must be located in id1/locs, qw/locs, or <gamedir>/locs - this means fortress/locs when you play TeamFortress). The ".loc" extention is optional, for example, "loadloc dm6"; if the file name has no extension, use its explicit name ("loadloc dm6.").

macrolist [Cont. List.]
Lists all supported macro expressions, like $location, $health. See also.

mapname [Cont. List.]
This is a read-only cvar that contains the short name (like "dm6") of the map being played.

msg_trigger <alias> <string> [-l <level>] [Cont. List.]
Message catcher system. Explained here.

playdemo [demoname] [Cont. List.]
Plays demos. See also.

qizmo_dir [path] [Cont. List.]
The path to qizmo.exe relative to main Quake folder. Set it to "" if you placed qizmo in one folder with zquake.exe, or "qizmo" if your qizmo path is something like c:\quake\qizmo\qizmo.exe.

r_drawflame [0,1] [Cont. List.]
If 0, torch models are not drawn. On maps like dm6 this really helps the frame rate.

r_drawviewmodel [0-2] (default 1 for GL, 2 for software) [Cont. List.]
A value of 1 makes the weapon model always visible in both GL and software no matter what fov you have, and 2 makes it only visible when fov is <= 90.

r_fastsky [0,1] [Cont. List.]
Setting it to 1 makes the sky flat, helps fps a bit on maps with large sky areas, like dm2, dm3 or q1dm17. It looks a bit dark on dm3, so you might want to change its color using the r_skycolor cvar (on dm3, try 7 or 44).

r_fullbrightSkins [0,1] (default 0) [Cont. List.]
When set to 1, makes all player models fully lit. Many TeamFortress players consider this a cheat, so it's disabled for Team Fortress.

r_grenadetrail [0,1] [Cont. List.]
Setting it to 0 hides grenade trails.

r_powerupglow [0-2] [Cont. List.]
If 0, powerup glow is turned off on all players. This is not recommended though, because you won't be able to see if a player has Quad/Pent. 2 disables the powerup glow from yourself only (really helps fps when you have a powerup).

r_rocketlight
Turn off/on dynamic lighting of rockets.

r_rockettrail [0-2] (default 1) [Cont. List.]
Changes rocket trail.
0 - trail turned off
1 - standard
2 - grenade

r_skycolor (default 4) [Cont. List.]
Change the color of sky when r_fastsky is on.

s_khz [11,22,44] (default 11) [Cont. List.]
Sound quality. Must be set from the command line.

Example:
zquake +set s_khz 22

scr_centermenu [0,1] (default 1) [Cont. List.]
Centers the menu vertically, 1 (has no effect if you're playing in 320x200 mode, same applies to scr_centersbar).

scr_centersbar [0,1] [Cont. List.]
Centers the status bar horizontally so it looks like in NetQuake.

scr_consize [0..1] (default 0.5) [Cont. List.]
Controls vertical size of console, 0.5 is half screen. Alternatively you can use ctrl+up and ctrl+down keys in the console to adjust its height.

screenshot [filename] [Cont. List.]
Takes a screenshot. Filename is optional.

set [name] [value] [Cont. List.]
Set a value to or create a cvar.

Example:
set mycvar 1

show_speed [0-2] [Cont. List.]
Shows your horizontal velocity in upper right corner. Very useful for practising bunny hopping.
show_speed 2 shows predicted speed (less "laggy" when you're on a modem).

teamcolor [color] [Cont. List.]
Overrides the color of teammates. Disabled in TeamFortress.

teamskin [skin.pcx] [Cont. List.]
Overrides the skins of teammates. Disabled in TeamFortress.

toggle [cvar] [Cont. List.]
Invert the value of a cvar (1 -> 0 and 0 -> 1).

tp_forcetriggers [0,1] [Cont. List.]
Force execution of f_* triggers when there is no one on your team.

tp_loadlocs (default 1) [Cont. List.]
If 1, loc files are loaded automatically when the map changes. The loc files should be located in /id1/locs or /qw/locs. Loc files are files that assosiate spots on the map with a message, and they can be used to display your location in a map.
No ability exists in zquake, as of yet, to create loc files, best way is to make your own with a proxy, or download them from http://blip.cjb.net.

tp_need_item [Cont. List.]
Customizes the %u macro.
Item is:
tp_need_shells, tp_need_nails, tp_need_cells, tp_need_rockets, tp_need_rl, tp_need_weapon, tp_need_health, tp_need_ga, tp_need_ya, tp_need_ra

Example:
tp_need_health 50
say_team I need %u!

tp_name_item [Cont. List.]
Customizes item name.
Full list:
tp_name_at, tp_name_someplace, tp_name_nothing, tp_name_flag, tp_name_backpack, tp_name_health, tp_name_mh, tp_name_cells, tp_name_rockets, tp_name_nails, tp_name_shells, tp_name_suit, tp_name_ring, tp_name_pent, tp_name_quad, tp_name_ga, tp_name_ya, tp_name_ra, tp_name_lg, tp_name_rl, tp_name_gl, tp_name_sng, tp_name_ng, tp_name_ssg, tp_name_sg, tp_name_axe

Example:
tp_name_someplace "I have no idea!"

tp_pickup [[+|-]item] [[+|-]item] ... [Cont. List.]
What can be reported by %i, $took, $tookloc and $tookatloc.

Example:
You kill an enemy with RL and shout out "pack at".
You wait a while but no one says he's coming to pick it up, so you decide to take it yourself, but doing so you accidentally pick up a box of shells. You want to report that the pack is no longer available, but what comes out is "took shells at ". Confusing? Sure. A friend might get killed trying to get to to get the non-existent pack.
That's why default for tp_pickup is powerups, suit, armor, weapons, mh, rockets, pack and flag.

The effective setting for %i is tp_pickup PLUS tp_took.
For Example:
If you set tp_pickup to "nothing" and tp_took to "flag", flag pickups will still be reported.

tp_point [[+|-]item] [[+|-]item] ... [Cont. List.]
What to report for pointing (%x, %y and %t).
Item can be: quad, pent, ring, suit, ra, ya, ga, mh, health, lg, rl, gl, sng, ng, ssg, pack, cells, rockets, nails, shells, flag, armor, weapons, powerups, ammo, all, default, none
Item names can be customized with tp_name_item

Examples:
tp_point powerups flag
say_team I see %t!

tp_took [[+|-]item] [[+|-]item] ... [Cont. List.]
Customizes the f_took trigger.
Item can be: quad, pent, ring, suit, ra, ya, ga, mh, health, lg, rl, gl, sng, ng, ssg, pack, cells, rockets, nails, shells, flag, armor, weapons, powerups, ammo, all, default, none
Item names can be customized with tp_name_item

Examples:
tp_took powerups ra ya lg rl mh flag (same as "default")
tp_took all -ammo (report everything but ammo)
tp_took +gl (add grenade launcher to pickup list)
alias f_took "say_team took %i"

tp_soundtrigger [trigger] [Cont. List.]
SoundTrigger like proxys.
A SoundTrigger must be terminated by either a CR, LF or filter. The .wav extension is not required at the end. Trigger is a character before the sound file.

Example:
tp_soundtrigger ~
filter #a
say_team I'm at %l ~location.wav"
say_team ~location.wav$\me: I'm at %l #a"
say_team ~location$\me: I'm at %l #a"
say_team I'm at %l ~location #a"

unalias [aliasname] [Cont. List.]
Completely destroys an alias.

unaliasall [Cont. List.]
Destroys all aliases.

v_contentblend [0..1] [Cont. List.]
If 0, water becomes clear. Fractional value work too, for example, you might set it to 0.1 so that water is almost transparent, but you can still see instantly when you are in water (helps a lot on weird maps like e4m1 where it's not all that easy to say where you are).

v_damagecshift [0..1] [Cont. List.]
Coefficient of the flash (1-full flash, 0-no flash) when you are hit. Some people are annoyed by the flash, others use it as the only indicator that they are hit, so toggle it as you wish. A good idea is to set it to about 0.3 so that you "feel" how much of your health was taken, but don't get blind when the enemy attacks you with shaft.

v_pentcshift [0..1] [Cont. List.]
Flash coefficient for when you take the pent.

v_quadcshift [0..1] [Cont. List.]
Flash coefficient for when you take the quad.

v_ringcshift [0..1] [Cont. List.]
Flash coefficient for when you take the ring.

v_suitcshift [0..1] [Cont. List.]
Flash coefficient for when you take the suit.

v_gunkick [0..1] [Cont. List.]
Kick back of the weapon when fired.

v_dlightcshift [Cont. List.]
If 0 turns off light blend when you're inside a light bubble (with gl_flashblend 1).

vid_hwgammacontrol [0-1] [Cont. List.]
Set to 0 to disables hardware gamma control. (GL) palette flashes are applied to all of the screen unless hwgmma is not present or disabled.

viewalias [aliasname] [Cont. List.]
Displays contents of an alias.

writeconfig [filename] [Cont. List.]
Writes all your binds and cvars to a custom config file.

New/Modified Server Commands

devmap [mapname] [Cont. List.]
Quickly spawn a server with cheats enabled for testing purposes.

kick [userid] [reason] [Cont. List.]
Kick command enhanced, you can give a reason for kicking the player.

Example: kick 45 stop camping!

sv_cheats [0,1] [Cont. List.]
You don't have to restart the server with or without -cheats on the command line to enable or disable them, just type sv_cheat 1/0 and restart the map.
Also, ZQuake prints a warning ("== Cheats are enabled ==") when it connects to a server with cheats.

sv_maxrate [Cont. List.]
Maximum rate for clients.

sv_nailhack [0,1] [Cont. List.]
1 allows nails in most cases to uses less bandwidth and to fly around smoother and point in the right direction.

sv_loadentfiles [0,1] (default 0) [Cont. List.]
See here.

serverinfo maxfps [30..120] [Cont. List.]
Maximum fps for clients.

Cheats [Cont. List.]
god, give and noclip are client console commands now (forwarded to server). They will NOT work if you type them in the server's console. Use your ZQuake console instead. Note that you don't have to supply your userid any more so instead of 'rcon foo god <userid>' all you need to type is 'god'.
If you're using zqwsv with a non-zquake client, prefix the command with 'cmd', like this: 'cmd god'

Teamplay

List of Macros [Cont. List.]
Macros column - full macro name, to be used in console scripts.
Qizmo - proxy style, use it in say/say_team commands (cl_parsesay must be set to 1 for this to work).
MacroQizmoDescription
$armor%aamount of armor
%[a]same as %A:%a, but adds glowing braces if armor is low
$armortype%Atype of armor (ga, ya, ra)
%bbest weapon and amount of ammo for it in RL:10 style
$health%hhealth
%[h]same as %h, but adds glowing braces if health is low
$shellsamount of shells
$nails..nails
$rockets%r...rockets/grenades
$cells%c...lg batteries
%wcurrent weapon and amount of ammo for it, in "RL:5" style
$powerups%ppowerups which you have (quad/pent/ring)
%[P]same as %p, but adds glowing braces if you have a powerup
$tookatloc%ithe name and location of the item you picked up last
$location%lcurrent location according to the loc file (which should be loaded)
%Lcurrent location, or location of death if you died 5 or less seconds ago
$deathloc%dlocation of last death
%xwhat you see (pointing)
%ylocation of the item you see
%tsame as "%x at %y"
%uwhat you need (see tp_need_item)
$weaponcurrent weapon (lg, rl, gl, sng, ng, ssg, sg, or axe)
$weaponnumthe number of current weapon (1 for axe, 7 for RL, etc)
$ammoamount of ammo for current weapon
$bestweaponbest weapon
$bestammoamount of ammo for the best weapon
$datecurrent date in dd.mm.yy format
$timecurrent time in hh:mm format
$qtquote (") character

Fun Character Conversion [Cont. List.]
When cl_parsefunchars is turned on, you can use Ocrana LED's by hand right out of the console and chat anonymously through "$\" without showing your name (chat messages that are seen without your name at the beginning). More QuakeWorld fonts are avaliable here.
Full list:

$R - red lamp
$G - green lamp
$B - blue lamp
$Y - yellow lamp
$\ - carridge return
$( - big left bracket
$= - big equal sign
$) - big right bracket
$. - red middle dot
$, - white dot (names only)
$< - small left bracket
$- - small equal sign
$> - small right bracket
$a - big grey block
$: - line feed
$b - filled red block
$d - right pointing red arrow
$[ - gold left square bracket
$] - gold right square bracket
$^ - white ^ (names only)
^x - red x (names only)
$0-9 - yellow number
$xyy - char with hex code yy

(In order to use the lamps, you'll need the Ocrana pak.)

Example:
say_team "$\$R$R NMY QUAD $R$R$:$R$R NMY QUAD $R$R$:$R$R NMY QUAD $R$R"
Your teammates will see three lines containing @@ NMY QUAD @@ (@ here means red ocrana lamps). The reason for using $: instead of three identical say commands is to avoid triggering flood protection.

Other Features

Cvar Expansion [Cont. List.]
CVars are console variables and can be used to hold info (numbers, characters..).

Examples:
echo $sensitivity //shows your current sens.

alias +zoom "set _fov $fov; fov 45"
alias -zoom "set fov $_fov"
With the above two aliases you'll be able to restore the previous value of a cvar. Useful when you're writing scripts that regulate your rate, volume, sens, etc.

bind F5 "if rate <= 3500 inc rate 500; echo $rate"
bind F6 "if rate >= 1000 inc rate -500; echo $rate"

This will let you adjust your rate without bringing down the console, by just typing F5 and F6 keys.

Message Catcher System [Cont. List.]
msg_trigger <alias> <string> [-l <level>]
This command lets you automatically execute an alias if a specific string is found in the console.
The alias is limited to the following commands: alias, echo, play, playvol, stopsound, say, say_team, set, msg_trigger, inc, record, easyrecord, stop, if.

You can also set cvars, but you can't execute nested aliases.
The length of the <string> parameter is limited to 64 chars. You can specify the <level> parameter if you want to catch pickup messages, death messages, or player chat.

The meaning of <level> is as follows:
0 - pickup messages ("You got armor")
1 - death messages ("unnamed becomes bored with life")
2 - other messages ("Quad damage is wearing off")
3 - chat messages
t - team chat messages

Example:
alias no_ammo "play noammo.wav"
msg_trigger no_ammo "not enough ammo"
Now when "not enough ammo" appears in the console, alias no_ammo will be automatically executed (in this case it plays a wav file).

For TeamFortress:
alias play_count "play count.wav"
msg_trigger play_count "renade primed"
Now if "Grenade primed, 3 seconds..." or "Napalm grenade primed, 3 seconds..." appears in console then play_count will be executed.

Msg_trigger can also be used instead of SoundTriggers for playing sounds. However a msg_trigger will have to be made for every message you want to play a sound for.

Example:
alias play_spiral "play incspiral.wav"
alias play_ramps "play incramps.wav"
alias play_lift "play inclift.wav"
alias play_ourflag "play ourflag.wav"
alias play_enemyflag "play enemyflag.wav"
msg_trigger play_spiral "incoming spiral" -l t
msg_trigger play_spiral "inc spiral" -l t
msg_trigger play_ramps "incoming ramps" -l t
msg_trigger play_ramps "inc ramps" -l t
msg_trigger play_lift "incoming lift" -l t
msg_trigger play_lift "inc lift" -l t
msg_trigger play_ourflag "our flag" -l t
msg_trigger play_enemyflag "enemy flag" -l t

Key Use in Console [Cont. List.]
Console keys are used more effectively now. Keys such as <-- and -->, HOME and END work as expected in editing the current line. (To use HOME and END as they were originally intended, i.e. to scroll the console buffer all the way up or down, use ctrl+HOME/ctrl+END). You can also use ctrl+leftarrow and ctrl+rightarrow to jump one word left/right. Pressing ctrl+PgUp or ctrl+PgDn will scroll the console one page up or down.

Fun characters can be created in the console:
ctrl+[, ] - gold square brackets
ctrl+R, G, B, Y - ocrana LEDs
alt+<letter> - red letter
ctrl+<0..9> - yellow number
ctrl+shift+() - big left and right brackets
ctrl+= - big equals sign
ctrl+shift+<> - left and right small bracket
ctrl+- - small equals sign
ctrl+, - white middle dot (only in names)
ctrl+. - yellow middle dot
ctrl+a - big grey block
ctrl+shift+B - filled red block
ctrl+shift+C - right pointing red arrow

Note that red chars are only useful for creating fun names, you can't use them in chat because chat messages are red anyway. And finally, you can press and hold any key to make it auto repeat.

Demos [Cont. List.]
During playback of demos, pause now actually works, as does cl_demospeed:
cl_demospeed 0.25 - slomo viewing (1/4th normal speed)
cl_demospeed 5 - fast forward (5 times normal speed)
cl_demospeed 1 - normal speed

easyrecord [demoname] - with this command, you can record demos without specifying a name. In other words, if demoname is not specified (and it shouldn't, as it defeats the whole purpose), the name is generated in the following manner:

duel: <player1>_vs_<player2>_map
teamplay: <player1>_<team1>_vs_<team2>_map
ffa: <player>_ffa_map
one player: <player>_map
spectator mode: <player>_map

If a demo with the same name already exists, an _ and two numbers will be appended to the filename. So if there is already an unnamed_dm6.qwd, unnamed_dm6_00.qwd will be created, then unnamed_dm6_01.qwd, and so on. Also, when demoname is specified, it will work like the record command, except it won't overwrite existing demos by adding numbers to the new demo filename.

Example:
easyrecord tempdemo
easyrecord $name_$team_$mapname

playdemo command can be used for playing .qwz demos. You still need qizmo.exe and compress.dat, but ZQuake will do the job of unpacking the .qwz for you. Note that you must set qizmo_dir cvar properly so that ZQuake knows where your qizmo.exe is located.

Command-Line Parameters [Cont. List.]
zquake.exe and zqwsv.exe:
-port <portnum> - Changes the port of the server (default is 27500).
GL only:
-nohwgamma - Disables hardrware gamma control.

f_version and z_version [Cont. List.]
ZQuake replies, like a proxy, to f_version or z_version in chat with its current version and build. It doesn't reply, though, if you're in spectator mode, or if 20 seconds haven't passed since the last reply.

TF Cheats Protection [Cont. List.]
A lot of commands and cvars were changed not to let people cheat in TeamFortress.
- v_cshift, v_idlescale and other v_i* are disabled in TeamFortress, in order to avoid cheating with old flash and concussion grenades.
- gl_polyblend cannot be used to reduce the effect of flash grenades.
Note that it only applies to TeamFortress, in normal DM all the cvars and commands work just as expected.

Server Custom Ent Files [Cont. List.]
The custom entity files lets you add, delete and modify entities on a map without recompiling the .bsp - just put an .ent file into id1/maps and set sv_loadentfiles to 1.
Example ent files: 1 2 3

What makes the .ent files so handy is that they don't affect a map's checksum, so if you use them on a public server, the users don't have to download any additional maps. They are also very easy to create because you don't have to recompile the map - just open it in an editor like QuArK, do whatever changes you want, then export the "entities" lump to a text file, rename it to .ent and place in your id1/maps folder.
In fact you don't need any editor at all - you can just open a .bsp file in any text editor, search for "worldspawn", then copy-and-paste to a new file all the text between (and including) the first and last opening brace. You should get something like this:

{
"wad" "gfx/wizard.wad"
"classname" "worldspawn"
"message" "Shub-Niggurath's Pit"
"sounds" "4"
}
...
{
"classname" "item_armorInv"
"origin" "-176 -496 -560"
"spawnflags" "1792"
}

Do whatever changes you want and save the file. You can change the "message" field in worldspawn entity to something like "my super cool map" if you want.

When an entfile is loaded on the server, an "*entfile" key is added to its serverinfo. Its value is checksum of the entity file. You can always tell (by typing "serverinfo" in the console) if you're playing a modified map. This is to prevent some bright person making a cheat entfile (ie place a red armor + 100 health + quad in a secret place :) and use it in an official game.

Contacts

Coding: Anton Gavrilov aka Tonik (tonik@vipmail.ru)
Additional coding: QuakeForge team; Victor Luchits aka Vic (vic@captured.com)
Ideas and web page design: Alexei Shabrov aka Turba (turba@gazeta.ru)

User Manual: bliP (contact, http://nisda.net)
Info: Quake666A/B (quake_jatekos@freemail.hu)
Original readme: Tonik (tonik@vipmail.ru)
Translator of original readme: GuPH (guph@netzero.net, http://guph.net)

Thanks to id Software and the QuakeWorld team for the original source.