This is the html version of the file http://www.rtcw.jolt.co.uk/content/enemy_territory/server_guide/ET-Serverguide.pdf.
G o o g l e automatically generates html versions of documents as we crawl the web.
To link to or bookmark this page, use the following url: http://www.google.com/search?q=cache:OBLTKJkMgnQJ:www.rtcw.jolt.co.uk/content/enemy_territory/server_guide/ET-Serverguide.pdf+%22all+seeing+eye%22%2B%22enemy+territory%22%2Bsv_master1&hl=en


Google is neither affiliated with the authors of this page nor responsible for its content.
These search terms have been highlighted: all seeing eye enemy territory sv_master1 

Advanced Wolfenstein: Enemy Territory Server Setup Guide
Page 1
Advanced Wolfenstein: Enemy Territory Server Setup Guide
by DG (last updated 30th March 2005)
This article intends to provide information for more advanced Enemy Territory server configurations -
and admins trying to become a little more advanced. There is an assumption that the reader has a
basic understanding of scripting (being able to hack up your player .cfg will do). Fairly extensive
explanations are given for issues seen as most complicated (or most often problematic), especially
where there is little adequate assistance to be found elsewhere. This guide probably isnt suited to
idiots, but then neither is adminning a server so hopefully you'll make it past my lack of succinctness.
Broadly, there are 3 sections to this article: firstly ETPro "Quick" Server Guide is a one-stop-shop for a
relatively short guide to setup an ETPro clanserver - one that is sometimes used for clanwars and
sometimes is open to the public. The second section goes into far more detail and is based upon a
normal ET server, though it still applies for mods like ETPro (with certain changes). Thirdly, certain
complicated elements are explained in detail, plus there's some additional information that some
people may need.
This article is not intended to do all the work for you, it is for providing information to help you setup
your server exactly how you want it. The Enemy Territory install comes with basic help and basic
server configuration files, many people will find them ample - although the settings that relate to the
RTCW mod OSP that is integrated to ET were missed out. Also, Evenbalance provides in-depth
manuals for Punkbuster on their website.
Please note, it is advisable to run servers from Enemy Territory installations that are as 'clean' as
possible, best practice is to remove any non-official files if they are not intended for use on the
gameserver. It is fine to have unused modifications installed, as long as their files are kept within their
own folder, but aviod keeping anywhere within etmain (or indeed any active folders, e.g. fs_homepath
folders or subfolders of mods in use) any unwanted texture/skins/sound mini-mods or campaign files,
and beware of any custom maps (especially older ones) that may contain campaign files or badly
implemented textures which may replace official ones.
1

Page 2
Contents
Basic Guides:
3
ETPro Clanserver Guide
3
Extended Server Guide:
13
Startup & Basics
13
Server Configuration - server.cfg
16
Map rotations & campaigns
21
Specifics:
26
Hosting Custom Maps & Minimods: Faster Downloads via http
26
Weapons Restrictions / g_heavyWeaponRestriction
32
Voting Options
35
Complaint Limits
37
Recommended Cvar Restrictions
38
Admin Guide:
58
Remote Console (RCON)
59
Referee Commands (REF)
62
Banning Players
65
PB Player Power
68
About Modifications
70
Server System Requirements
73
Credits
78
2

Page 3
"Quick" Server Guide (ETPro)
For A Dual-Use Clanserver
This is the "quick" server guide, for people who just want a server up - you can learn about the various
configuration options and other sever knowledge on the other pages. The server guide here will setup
the server in a way to suit a server that has two uses: sometimes a public server, sometimes a private
clanwar server. This guide is for an Enemy Territory server running the highly popular ETPro
modification, which is recommended for public servers, and is more or less essential for a clan server.
The basic principle of what is happening is that ET is loaded in a way that starts it up with certain
settings, and also makes ET run a configuration file - server.cfg. This server.cfg sets up a lot more
settings, and also runs two more configuration files - maprotate.cfg, which loads up the map rotation,
and public.config file which is an "etpro pluggable format" configuration file. Finally, we add two files
default_pub.cfg and default_comp.cfg, which are for easing the process of swapping between the
public and clanwar settings to the extent that a REFeree player can use the REF "vote" UI menu.
The way this example is done, initially the server is loaded with some public server settings, but
afterwards it is straightforward to switch back and forth between the assumed dual uses of the server:
public and clanwar.
Startup
Chances are you've rented a server and they have set the startup command line already, which most
likely you wont actually need to modify (or for that matter, be able to). Here's a rough idea what it
should look like:
Chances are you've rented a server and they have set the startup command line already, which most
likely you wont actually need to modify (or for that matter, be able to). Here's a rough idea what it
should look like:
C:\path\et.exe +set dedicated 2 +set net_port 27960 +set fs_game etpro +set fs_homepath 27960
+set sv_punkbuster 1 +exec server.cfg
dedicated - there are 3 ways to run a server. A "listen" server, which is where you play on the server at
the same time as hosting server. This is not the way to host a real server, and hence this type of
server is not listed on server browsers etc., really its for lone players to check out custom maps or
maybe play with friends over LAN (ETPro does not even work correctly on a listen server, and will
3

Page 4
display warnings in the console text area). A listen server would be dedicated 0. Dedicated 2 is for a
proper server, you cannot play on it at the same time as hosting - it appears only as a console on the
host machine - and the server will be listed on server browsers. Dedicated 1 would be a host server for
a LAN, dedicated but not showing up on server browser listings.
net_port - this sets the communications port the server will use. Default is 27960, but it is very likely
your host will have many ET servers running on that one computer, and each ET server running on the
same machine or IP MUST have it's own port address. Best practice is to keep it similar, i.e. count up
so the next server would be 27961, 27962 etc..
fs_game - this is where you load modifications. If this line is not included, it will default to etmain and
only the normal game will be loaded. You must load modifications via fs_game in the startup line.
fs_homepath - OK so there are several game servers running off the one ET install, right? Doesnt
each server need it's own folder for a "work area", logs and stuff? Yep, and this is where you set it. It is
strongly recommended each server running from the one ET install should have it's own fs_homepath.
Failure to do this (which happens all the time by server hosts, you dont expect them to know
everything about the two dozen games they host) will likely screw up punkbuster, especially when it
updates. I have called the homepath folder the same thing as the port number - this makes it very
easy to determine what folder is for what server.
sv_punkbuster - you can enable punkbuster in a configuration file with pb_sv_enable, but this should
be as last-resort, Evenbalance recommends that it be initiated on the startup command switch in the
manner shown in the example.
exec server.cfg - this loads up the server configuration file, which sets all the other server settings -
and loads a map. ET seeks the specified filename in "etmain" folder, regardless of the mod being
used. You can specify a path to subfolders if you would rather keep your configurations neat in a
folder, for example +exec server_cfg/server.cfg.
There may be several extra settings in a startup command line provided by a commercial server host,
but you are unlikely to need anything except the above (which does not mean "definately all that you
might possibly need" - server hosts tend to only add things for a reason). Of course, the values are
likely to be different, especially for net_port and fs_homepath, and whatever you called your server
configuration file. The 3 you will definately need are +set fs_game etpro to load it, +set sv_punkbuster
1 assuming you wish to enable it, and +exec server.cfg because the server wont be doing much
otherwise.
4

Page 5
Configuration Files
There is actually fairly little really necessary to setup a standard server, for a lot of settings the default
value is desired, or at least adequate. However, you will have to change several settings to suit your
needs.
Note that the name for this file is server.cfg, which matches the file executred from the startup
command line. You can call the server file whatever you like, provided it matches what is being
executed (exec) in the startup line.
Chances are I'll forget to update it if I do update this page though, and the official clanwar.config will
almost certainly need updating to the current version.
Server Config - server.cfg
// TITLE OF SERVER CONFIG (if you want)
// maybe a description (if you want)
set username "NotForYouToKnow"
// PASSWORDS & CLIENTS
set sv_maxclients "20"
set sv_privateclients "2"
set password ""
set g_needpass "0"
set sv_privatepassword "private_password"
set rconpassword "rcon_password"
set refereepassword "ref_password"
// MOTD ETC
// max length is "12345678901234567890123456"
set sv_hostname "name of server"
set server_motd0 "^B.........................."
set server_motd1 "^B. ^&welcome ^B."
set server_motd2 "^B. ^&message ^B."
set server_motd3 "^B. ^&a.k.a. ^B."
set server_motd4 "^B. ^&motd ^B."
set server_motd5 "^B.........................."
// DL, RATE
set sv_allowDownload "1"
set sv_maxRate "16000"
set sv_dl_maxRate "42000"
set sv_lanforcerate "0"
// PB
pb_sv_dupNameGrace 20
pb_sv_changePeriod 20
pb_sv_changeMax 5
pb_sv_noguidgrace 30
pb_sv_updategrace 450
pb_sv_guidrelax 4
pb_sv_badname 10 teamkill
pb_sv_AutoSs 0
// LOGGING
set g_log "logfilename.log"
set logfile 0
set g_logsync 0
set b_cheatlog "etpro_cheats.log"
// MAP ROTATION
// in this case, a seperate file
// but can just paste it here.
- sets the total number of players, including private slots.
- password-protected private slots
- set a password to stop joe public joining clan server
- set wether the above password is enabled
- the password for those private slots
- RCON password, keep safe!
- password for players to get ref control
allow players to download missing files off server
- rate cap for
- a little faster for downloading those missing files
- stops ET forcing players to LAN settings if they have similar IP
5

Page 6
exec maprotate.cfg
// ETPRO PLUGGED CFG
wait 150
config public
wait 150
reset_match
- replace with whatever you call your map rotation file
- next line needs map loaded to work, the wait gives it time
- loads the etpro style config file, here it'd be public.config
- reset's match to ensure the .config settings are running
Map Rotation File - maprotate.cfg
Note that the map rotation file has been executed from the server.cfg file - exec maprotate.cfg. You
can of course call the file whatever you want, aslong as the entry in the initial server configuration file
matches it.
// STOPWATCH MAP ROTATION
// So called "clanwar" maps in an AB stopwatch rotation
// WATCHDOG
set com_watchdog_cmd "vstr m1r1 ; say watchdog found no map running - restarted mapcycle"
// MAP
set m1r1 "g_gametype 3; map oasis; set nextmap vstr m1r2"
set m1r2 "map_restart 0; set nextmap vstr m2r1"
set m2r1 "g_gametype 3; map goldrush; set nextmap vstr m2r2"
set m2r2 "map_restart 0; set nextmap vstr m3r1"
set m3r1 "g_gametype 3; map radar; set nextmap vstr m3r2"
set m3r2 "map_restart 0; set nextmap vstr m4r1"
set m4r1 "g_gametype 3; map railgun; set nextmap vstr m4r2"
set m4r2 "map_restart 0; set nextmap vstr m5r1"
set m5r1 "g_gametype 3; map supplydepot; set nextmap vstr m5r2"
set m5r2 "map_restart 0; set nextmap vstr m6r1"
set m6r1 "g_gametype 3; map caen; set nextmap vstr m6r2"
set m6r2 "map_restart 0; set nextmap vstr m1r1"
vstr m1r1
ETPro Plugable Config Files - public.config, clanwar.config
The "ETPro Plugable Config Files" are a configuration system introduced in ETPro 2.1. The purpose of
them is for a more flexible and powerful method to configure the server - it is easy for leagues to bring
outupdated configs and they can be simply "plugged" into the server, and loaded easily by vote or
referee - unlike .cfg files which require an admin with RCON. The .config files should be saved in the
server's etpro/configs/ folder.
With the .config system, it becomes easy to setup the basics of the server configuration with the
normal .cfg, and then have two .config files, one of which is the settings for when the server is in
public-server mode, i.e. open to the public and running a map rotation, and the other is for when the
server is in clanwar mode, i.e. off limits to the public and with specific official settings.
6

Page 7
The important consideration here is where public and clanwar settings differ, each .config must reset
the undesired settings made by the previously used .config. In other words, when you want to go to
public mode, you not only need to set the wanted public settings but remove the unwanted clanwar
settings. You shouldnt modify the configs competition organisations supply, so you have to work
around them with your public server .config.
The public.config is your own concoction, whatever settings you want for your public server. The
clanwar settings, on the other hand, will be provided to you by the organisations who's events you are
participating in. If you dont actually participate in an official ladder, league or cup or whatever, then the
best bet is to find out what the most common one is and then use their config for scrims. In Europe,
that config would be the joint Clanbase & RTCW.no one. In North America, that would presumably be
one from either CAL or TWL.
The example clanwar config used is that of Clanbase & RTCW.no (current at time of writing, probably
not at time of reading). Again, the name of the configs can be anything, I've used public & clanwar for
illustration, and also by coincidence clanbase/rtcw.no config calls itself "clanwar".
public.config
clanwar.config
configname "public"
init
{
setl g_gametype 3
setl g_warmup 40
setl g_doWarmup 0
setl g_voiceChatsAllowed 5
setl g_spectatorInactivity 1
setl g_friendlyFire 1
setl g_heavyWeaponRestriction 20
setl g_medicChargeTime 45000
setl g_LTChargeTime 40000
setl g_engineerChargeTime 30000
setl g_soldierChargeTime 20000
setl g_covertopschargetime 30000
setl g_landminetimeout 0
setl g_teamForceBalance 1
setl g_filtercams 0
setl team_maxMortars 2
setl team_maxFlamers 2
setl team_maxMg42s 2
setl team_maxPanzers 2
setl team_maxMines 10
setl team_maxRiflegrenades 2
setl team_maxplayers 0
setl team_nocontrols 1
setl match_timeoutcount 0
setl match_timeoutlength 300
setl match_minplayers 0
setl match_latejoin 1
setl match_mutespecs 0
setl match_readypercent 100
setl match_warmupDamage 2
setl sv_pure 1
setl sv_minping 0
setl sv_maxping 900
setl sv_cheats 0
setl g_complaintlimit 6
setl g_IPcomplaintLimit 4
setl g_allowVote 0
figname "^gClanBase & rtcw.no"
version 4.1.0.0 clanwar.version.rtcw.no
init
{
setl g_gametype 3
setl g_warmup 15
setl g_doWarmup 1
setl g_voiceChatsAllowed 99
setl g_spectatorInactivity 0
setl g_friendlyFire 1
setl g_heavyWeaponRestriction 20
setl g_medicChargeTime 45000
setl g_LTChargeTime 40000
setl g_engineerChargeTime 30000
setl g_soldierChargeTime 20000
setl g_covertopschargetime 30000
setl g_landminetimeout 0
setl g_teamForceBalance 0
setl g_filtercams 1
setl team_maxMortars 1
setl team_maxFlamers 1
setl team_maxMg42s 1
setl team_maxPanzers 1
setl team_maxMines 7
setl team_maxRiflegrenades 1
setl team_maxplayers 0
setl team_nocontrols 0
setl match_timeoutcount 2
setl match_timeoutlength 240
setl match_minplayers 2
setl match_latejoin 1
setl match_mutespecs 0
setl match_readypercent 100
setl match_warmupDamage 2
setl sv_pure 1
setl sv_minping 0
setl sv_maxping 0
setl sv_cheats 0
setl pmove_fixed 0
set nextmap ""
setl g_allowVote 1
7

Page 8
setl vote_limit 3
setl vote_percent 51
setl vote_allow_balancedteams 0
setl vote_allow_muting 1
setl vote_allow_swapteams 0
setl vote_allow_friendlyfire 0
setl vote_allow_timelimit 0
setl vote_allow_warmupdamage 1
setl vote_allow_kick 1
setl vote_allow_map 1
setl vote_allow_matchreset 1
setl vote_allow_mutespecs 0
setl vote_allow_nextmap 1
setl vote_allow_referee 0
setl vote_allow_config ""
setl vote_allow_comp 0
setl vote_allow_gametype 0
setl vote_allow_pub 0
setl vote_allow_shuffleteams 1
setl vote_allow_cointoss 0
setl b_mapscriptdirectory ""
setl b_levels_battlesense ""
setl b_levels_engineer ""
setl b_levels_medic ""
setl b_levels_fieldops ""
setl b_levels_lightweapons ""
setl b_levels_soldier ""
setl b_levels_covertops ""
setl b_statsaver 1
setl b_intermissiontime 20
setl b_privatemessages 0
setl b_match_warmupjoin 1
setl b_xpstopwatch 0
setl b_multiview 0
setl b_spectatornames 1
setl b_defaultskills ""
setl b_noskillupgrades 0
setl b_shove 1
setl b_stickycharge 2
setl b_damagexp 1
setl b_antiwarp 1
setl b_panzerlevelup 1
setl b_headshot 0
setl b_riflegrenades 1
setl b_fallingbugfix 1
setl b_fixedphysics 1
setl b_fixedphysicsfps 125
setl b_anticheat 1
setl b_cheatkicktime 5
command "pb_sv_enable"
command "pb_sv_kicklen 2"
command "pb_sv_cvarempty"
command "sv_cvarempty"
command "sv_cvar rate IN 2500 25000"
command "sv_cvar snaps IN 20 40"
command "sv_cvar cl_maxpackets IN 15 100"
command "sv_cvar cl_timenudge EQ 0"
command "sv_cvar cl_freelook EQ 1"
command "sv_cvar cl_yawspeed IN 0 140"
command "sv_cvar cl_pitchspeed IN 0 140"
command "sv_cvar m_pitch OUT -0.015 0.015"
command "sv_cvar m_yaw IN -0.022 0.022"
command "sv_cvar cg_bobup IN 0 0.005"
command "sv_cvar cg_errordecay EQ 100"
command "sv_cvar cg_shadows IN 0 1"
command "sv_cvar cg_fov IN 90 125"
command "sv_cvar r_flares IN 0 1"
command "sv_cvar r_primitives IN 0 2"
command "sv_cvar r_nv_fogdist_mode INCLUDE NV
GL_EYE_RADIAL_NV"
command "sv_cvar r_detailTextures EQ 0"
command "sv_cvar r_clamptoedge EQ 1"
command "sv_cvar r_drawworld EQ 1"
setl vote_limit 99
setl vote_percent 51
setl vote_allow_balancedteams 0
setl vote_allow_muting 1
setl vote_allow_swapteams 1
setl vote_allow_friendlyfire 0
setl vote_allow_timelimit 1
setl vote_allow_warmupdamage 1
setl vote_allow_kick 1
setl vote_allow_map 1
setl vote_allow_matchreset 1
setl vote_allow_mutespecs 1
setl vote_allow_nextmap 1
setl vote_allow_referee 1
setl vote_allow_config *
setl vote_allow_comp 0
setl vote_allow_gametype 0
setl vote_allow_pub 0
setl vote_allow_shuffleteams 0
setl vote_allow_cointoss 1
setl b_mapscriptdirectory etpromapscripts
setl b_levels_battlesense "20 90 140"
setl b_levels_engineer "20 90 140"
setl b_levels_medic "20 90 140"
setl b_levels_fieldops "20 140"
setl b_levels_lightweapons "20 90 140"
setl b_levels_soldier "140"
setl b_levels_covertops "20 90 140"
setl b_statsaver 1
setl b_intermissiontime 20
setl b_privatemessages 0
setl b_match_warmupjoin 0
setl b_xpstopwatch 0
setl b_multiview 1
setl b_spectatornames 1
setl b_defaultskills ""
setl b_noskillupgrades 0
setl b_shove 0
setl b_stickycharge 2
setl b_damagexp 1
setl b_antiwarp 1
setl b_panzerlevelup 1
setl b_headshot 0
setl b_riflegrenades 1
setl b_fallingbugfix 1
setl b_fixedphysics 1
setl b_fixedphysicsfps 125
setl b_anticheat 1
setl b_cheatkicktime -1
command "pb_sv_enable"
command "pb_sv_kicklen 1"
command "sv_cvarempty"
command "sv_cvar cl_freelook EQ 1"
command "sv_cvar cl_maxpackets IN 30 100"
command "sv_cvar cl_timenudge EQ 0"
command "sv_cvar rate IN 7000 25000"
command "sv_cvar snaps IN 20 40"
command "sv_cvar cg_bobup IN 0 0.005"
command "sv_cvar cg_fov IN 90 120"
command "sv_cvar cg_shadows IN 0 1"
command "sv_cvar cg_thirdperson EQ 0"
command "sv_cvar m_pitch OUT -0.015 0.015"
command "sv_cvar m_yaw IN -0.022 0.022"
command "sv_cvar r_allowextensions EQ 1"
command "sv_cvar r_ati_fsaa_samples EQ 0"
command "sv_cvar r_ati_truform_tess EQ 0"
command "sv_cvar r_drawentities EQ 1"
command "sv_cvar r_drawfoliage EQ 1"
command "sv_cvar r_ext_ATI_pntriangles EQ 0"
command "sv_cvar r_ext_texture_filter_anisotropic EQ 0"
command "sv_cvar r_flares IN 0 1"
command "sv_cvar r_gamma IN 1 3"
command "sv_cvar r_lightmap EQ 0"
8

Page 9
command "sv_cvar r_drawfoliage EQ 1"
command "sv_cvar r_znear EQ 3"
command "sv_cvar r_showtris EQ 0"
command "sv_cvar r_drawentities EQ 1"
command "sv_cvar r_showmodelbounds EQ 0"
command "sv_cvar r_lightmap EQ 0"
}
map default
{
set g_userTimeLimit 0
set g_useralliedrespawntime 0
set g_useraxisrespawntime 0
set b_moverscale 1
}
command "sv_cvar r_mapoverbrightbits IN 0 3"
command "sv_cvar r_overbrightbits IN 0 1"
command "sv_cvar r_showtris EQ 0"
command "sv_cvar r_showmodelbounds EQ 0"
command "sv_cvar r_shownormals EQ 0"
command "sv_cvar r_wolffog EQ 1"
command "sv_cvar r_primitives IN 0 2"
command "sv_cvar r_clamptoedge EQ 1"
command "sv_cvar r_detailtextures EQ 0"
command "sv_cvar r_nv_fogdist_mode INCLUDE NV
GL_EYE_RADIAL_NV"
}
map default
{
set g_userTimeLimit 0
set g_speed 320
set g_gravity 800
setl g_useralliedrespawntime 0
setl g_useraxisrespawntime 0
setl b_moverscale 1
}
map fueldump
{
set g_userTimeLimit 15
setl b_moverscale 1.5
}
map radar
{
set g_userTimeLimit 15
}
map battery
{
set g_userTimeLimit 10
}
map goldrush
{
set g_userTimeLimit 20
setl b_moverscale 1.5
}
map oasis
{
set g_userTimeLimit 20
setl g_useralliedrespawntime 15
}
map railgun
{
setl g_useralliedrespawntime 30
set g_userTimeLimit 15
setl b_moverscale 1
}
map caen
{
setl g_useralliedrespawntime 30
set g_userTimeLimit 20
setl b_moverscale 1.5
}
signature 0014131cf584ca5766ed19a5441ab41fa57af03e
The important bits:
configname must be the first line of the file, it takes a single parameter -- the name of the tournament
config. This would be displayed below the "waiting on X players" line in warmup.
The init block is executed only once, when the config is loaded by referee or rcon/console. It is never
reloaded.
The map blocks are loaded on every map_restart. The parameter is the mapname to match to. A
parameter of default will execute that block for all maps. map blocks are executed in order from first to
9

Page 10
last. Generally you want your default block first, and then specific map blocks to override it.
Inside a block you may have two commands: set and command.
The set command takes two parameters. A cvar name and a cvar value. Any cvar value with spaces
in it must be quoted.
The command command takes one parameter, the console command to execute. Any command with
spaces in it must be quoted.
Other things to note:
setl "locks" the setting, if an admin tries to change this setting when the .config that set it is
loaded, ETPro will spam warnings saying the .config has been messed with. This is a
measure to prevent naughtly clans fiddling the server settings.
sv_cvarempty empties the list of etpro cvar restrictions (sv_cvar) from the server's memory.
setl b_mapscriptdirectory none will stop etpro from using the etpro map scripts. Setting it to
etpromapscripts will have it use all the scripts provided with the ETPro install. If you want to
use only a selection of them, or use some customised scripts, put the scripts you want into a
new folder (parallel to etpromapscripts in the folder structure) and then set
b_mapscriptdirectory to whatever you name that folder, e.g. setl b_mapscriptdirectory
mymapscripts.
Cvars set to "" means it is set to nothing or the setting reverts to default. set nextmap "" for
example is intended to break map rotations for the clanwar setup, while in public setup you re-
exec the map rotation.
Enabling/disabling voting for .config's is done with vote_allow_config, for example:
o vote_allow_config "*" would allow voting for any config,
o vote_allow_config "" would completely disable config voting,
o vote_allow_config "config1 config2 config3" would allows config1 (i.e. a file called
config1.config), config2 or config3 to be voted, but not config4 or clanwar.config or
whatever.
Config voting currently is not available via the GUI menu's, but can be performed by clients
using /callvote config configname in their console.
NB: vote_allow_comp & vote_allow_pub have nothing to do with .config's, although the idea
for them was the same in principle - see next section for what they do.
10

Page 11
To "unload" any .config, the command would be config none. Remember all this does is
"forget" the map-specific settings and unlock settings locked with setl.
Easing the Switch: default_pub.cfg & default_comp.cfg
ET came with a voting option to load settings for competition ("comp") or public play ("pub"). The
settings they load aren't particularily useful however, but ETPro slightly modified them in a way that
provides for a neat little trick [thanks Deej]. With ETPro, when these Comp or Pub settings are loaded,
the game seeks for and tries to load files called default_comp.cfg or default_pub.cfg, respectively.
This can be exploited conveniently to be used for swapping between our personalised Clanwar and
Public settings. Further, you might have noticed the clanwar.config has no line for setting a password,
and that the file cannot be modified if it is to be used in official matches. Also, the clanwar.config
necessarily breaks any map rotation, while public.config does not load another one. We can use
default_pub.cfg and default_comp.cfg to change passwords and load map rotations:
default_pub.cfg
default_comp.cfg
g_password "" // removes password
exec maprotate.cfg
config public
reset_match
g_password "whatever" // applies password
map oasis // or whatever
config clanwar
reset_match
These two files should both be placed in the "ETPro" (or "ETMain") folder, bearing in mind that if you
used "+set fs_homepath 27960" in the startup line (as above), then they should be placed in the
ETPro folder that is within the 27960 folder. This prevents them being loaded if you have another
server running from the same installation.
Now, all you need to do to swap between the configurations is to use the Voting/REF menu's to load
"Pub" or "Comp" settings, and everything will happen automatically:
Comp will set those pre-supplied settings, and automatically execute default_comp.cfg. This in
turn applies your password (likely kicking everyone out if they havent set it), switches map to
oasis and then loads clanwar.config, which applies the required settings for official games.
Pub will set those other pre-supplied settings, then default_pub.cfg loads, which disables the
password requirement, loads your map rotation and then loads public.config which applies
your public server settings.
If you wish to have a third configuration for a second league, it is not quite so straightforward. You
would load Comp in the usual way, then you can load the other league's configuration either with rcon
(/rcon config theotherconfig) or using Vote as REF (callvote_config theotherconfig). To load an
11

Page 12
alternative public server setup, the snag is you are going to need RCON to load a different
maprotation.
It is important to note that Comp and Pub voting should be disabled (vote_allow_comp 0 &
vote_allow_pub 0) on any public server configurations, for obvious reasons (they will still be available
in the REF menu's regardless of these settings). Further, check any other configs for
server_autoconfig at anything other than 0, as a setting of 1 or 2 would load Pub and Comp. Finally,
remember that loading Comp and Pub loads some settings and you will need to reset those settings
that are not as desired.
'Watchdog' Note
If for any reason (i.e. error) there is no map loaded, 'com_watchdog_cmd' is applied and this runs
whatever commands you have specified to it - this stops ET server sitting in a rather undesirable state
of having no map running. I left watchdog out of the server.cfg for simplicity, it's a little fidgety. While in
a standard ET (etmain) server you would simply tell it to exec the map rotation, it seems better to also
tell it to load the .config in ETPro. For example: set com_watchdog_cmd "map oasis;wait
300;config public; wait 300; exec stopwatch.cfg"
This simply reloads a map (note Oasis in the example is the first map in the stopwatch.cfg example!),
reloads the .config and then reloads the map rotation. The 'wait' time is there to allow time for the
.config to load fully. Of course you should change the details - the map to whatever the first map is in
your rotation, config to whatever config you want loaded, and also the name of the appropriate map
rotation. As used in the example, this would set the server back into your 'public server' mode, which
might be a problem if it happened during a clanwar, but if the situation arose where watchdog had to
kick in during a clanwar then the round is ruined already, just reload into clanwar mode as normal.
12

Page 13
Server Startup
Startup & Basics
To launch a server without going through ingame menu's (no proper server should be doing it that
way) you need to run it with a modified Shortcut or batch file (or whatever) to give the initial setup.
Some settings only work when specified on the command line, as below, and of course you need to
tell it to load the server configuration file. An example for both Windows and Linux are below:
Win32
D:\ET\ETDED.exe +set net_port 27961 +set com_hunkmegs 64 +set com_zoneMegs 32 +set
dedicated 2 +set fs_homepath 27961 +set sv_punkbuster 1 +exec ET_server.cfg
Linux
./etded +set vm_game 0 +set net_port 27960 +set com_hunkmegs 64 +set com_zoneMegs 32 +set
fs_basepath /home/ET +set fs_homepath 27960 +set sv_punkbuster 1 +exec ET_server.cfg
Note for Windows servers: the executable is ETDED.exe for a dedicated server since the 2.60 patch.
Of course the above are illustrative examples and you would need to edit to fit your server. You might
also need to adjust for syntax of your chosen method, for example if you're launching it via a windows
shortcut then you need to add quotes around the address of et.exe - e.g. the line in the Target box
would be like "D:\ET\ETDED.exe" +set dedicated 2 +set sv_punkbuster 1 +exec ET_server.cfg
Dont be surprised if the Linux example is fubar, I dont have a free linux server box to play with, nor
any other reason to learn Linux. ./ essentially sets the path as "this folder", ../ would be one folder up
the hierarchy - you can also just put the path in.
"Dedicated" at 2 means it is a dedicated internet server, it will run on the host machine only as a
console, and will send "heatbeats" to the master server (which will include it on server browser lists).
Dedicated 1 does not send the heartbeat, and is mostly intended for LANs. Dedicated 0, i.e. not
dedicated, is for if you want to play at the same time as hosting - this is called a 'listen' server, and
does not send the heartbeat to the master server either.
If you're running a large server, then increase the hunk meg allocation (put simply, the amount of RAM
the game will be allocated). The default of 56 should be fine for up to 20 players, maybe 128mb hunk
for 32 to 64 players, and somewhere in between for player numbers in between. Note that some
custom maps require an increased hunkmeg for players, I dont know if this applies to the servers
hosting it also but I'd assume so.
When you have multiple servers running on the same machine/IP, they must each have unique port
numbers. If all the server's are running from the same .exe (same install) then ET should automatically
start the first server with port 27960 and increment by 1 for each subsequent server. However if you
13

Page 14
use different installs or whatever then you need to apply +set net_port 27960, +set net_port 27961 etc
to the startup line (it cannot be set via .cfg or .config file).
When running multiple servers from the same game install, they should also each have a unique
fs_homepath directory! I find it easiest to set fs_homepath to the port number, as in the example
above, as this gives you a clear and easy connection for what server is using what directory. You do
not need to specify a fs_homepath if you only run a single server, although using it may be easier for
organisation. Just remember ET will then use it's "fs_homepath" folder as it's "working directory" and
will save it's logfiles there, and when seeking files it will check etmain aswell as the fs_homepath
directory. PB will exclusively use the PB subfolder found inside the fs_homepath folder - when you set
a new fs_homepath, you may find it easiest to first create the folder and copy the entire PB folder into
it. A picture helps illustrate: there you can see I have ran three servers, with fs_homepaths of 27960,
27961 and 27962 - note that the server at 27960 has been running ETPro mod, so the mod has
created a subfolder, but ETPro itself is actually installed into the root ET folder (as you can see near
the bottom).
If you find the server is giving the master server the wrong IP for your server, usually due to routers,
then you can specify the correct IP players can use to join "+set net_IP x.x.x.x" - I advise against using
this setting unless necessary however, ET is very good at getting the IP right, at least when there isn't
a NAT router involved.
Punkbuster can be started in the server configuration file, using pb_sv_enable, but Evenbalance
recommend to use "+set sv_punkbuster 1" in the command line where possible (as per the example
above). If you do not wish to have Punkbuster running on your server then set it to 0.
"+exec ET_server.cfg" is where you tell the game to execute the server configuration file, which you
should keep in ETMain folder, but can put elsewhere aslong as you give the path, for example if you
wanted to keep your server scripts in a subfolder of ETMain called "server_configs", and you decided
to call the file "campaign.cfg" then you could use "+exec server_configs/campaign.cfg". Note you
should use the same case as used in the filename - by convention it's best to always have everything
in lowercase.
Extra configuration for running mods
If you are running a modification, for example ETPro, then you should see the documentation provided
with it. Generally however, much remains the same, just with a couple of extras. Normally mods will be
installed to a subfolder, but this subfolder should be located in the root ET folder, not within ETMain -
again this picture illustrates. Using that as an example, to launch a server running ETPro mod you
should add "+set fs_game etpro" to the command line - noting the "etpro" in both the fs_game
command line switch and the actual folder name on the server is in lower case. For example:
14

Page 15
Win32
D:\ET\ETDED.exe +set net_port 27961 +set com_hunkmegs 64 +set com_zoneMegs 32 +set
dedicated 2 +set fs_game etpro +set fs_homepath 27961 +set sv_punkbuster 1 +exec ET_server.cfg
Linux
./etded +set vm_game 0 +set net_port 27960 +set com_hunkmegs 64 +set com_zoneMegs 32 +set
fs_basepath /home/ET +set fs_game etpro +set fs_homepath 27960 +set sv_punkbuster 1 +exec
ET_server.cfg
Any commands or settings that are specific to the mod you can add in the usual way to the server
configuration file (or to the command line if necessary). Bear in mind the mod may also change the
function of some native ET settings, for example ETPro has several commands to provide finely tuned
weapons restrictions, whereas ETMain only has g_heavyweaponrestriction.
Some mods come with some configurations provided, for example in ETPro the scripts required for
certain leagues and tournaments come included, but you still have to set up the basics and then load
them - see the mod documentation.
Useful pages for ETPro specifics include the admin guide, but that has fallen out of date with the rapid
feature creep of the mod. The documentation project forum is often a better help (both in terms of
detail and being more up to date), and can also try ETPro Server Setup or the page on mods.
15

Page 16
Server Configuration - server.cfg
Your server configuration file contains all of the detailed settings for the server. There are some basic
ones provided with ET, which you WILL need to customise (at the very least to change the rcon
password and server name). I have provided an example of a much more heavily customised file,
ET_server.cfg. It is only an example cfg, intended for reference - if you want to use it directly you'll
need to customise at least the following sections: Passwords & Clients, Public Info and MOTD, and
also remove the comments from the PB lines. If you have any problems opening the file, it is basically
a .txt file and any text editor or web-browser should be able to read it (at worst, rename extension to
.txt).
Note the capital letters in ET_server.cfg, and how the same capitals have been used in the shortcut
above. Always use the correct case, although best practice would be to use lower case for everything.
// Example/Reference ET Server Configuration File
// by DaveGOD www.rtcw.co.uk
//
// MUST customise!
set sv_fps "20"
set username "NotForYouToKnow"
// PASSWORDS & CLIENTS
set sv_maxclients "22"
set sv_privateclients "2"
set g_password ""
set g_needpass "0"
set sv_privatepassword "privpass"
set rconpassword "rconpass"
// MASTER SERVERS TO REPORT TO
set sv_master1 "etmaster.idsoftware.com"
set sv_master2 "master.gamespy.com:27900"
set sv_master3 "master0.gamespy.com"
set sv_master4 "clanservers.net"
set sv_master5 ""
// SETS/PUBLIC INFO
// stuff that shows up in server info,
// too many "sets" can crash server, esp large
ones.
sets g_needpass "0"
sets sv_pure "1"
sets .IRC "#yourchannel @ network"
sets .Admin "You're Name"
sets .Email "you@domain.com"
sets .URL "http://www.site.com"
sets .Host "http://www.host.com"
sets "URL" "http://www.site.com"
// MOTD ETC
// max length is "12345678901234567890123456"
set sv_hostname "name of server"
set server_motd0 "^B.........................."
set server_motd1 "^B. ^&welcome ^B."
- leave, ET is NOT Q3, and breaks if sv_fps != 20.
- number of players *including* private slots
- number of reserved slots (e.g. for admin)
- pass required to connect if g_needpass is 1.
- set to 1 to require password to join.
- change this - pass for reserved player slots
- change this - pass for remote console access!
- for showing up on server browsers
- tell's ASE etc wether the server is passworded
- so it shows up in server info (optional)
- your IRC channel + server here (optional)
- Make it your IRC or site nick maybe (optional)
- You're email address (optional)
- your website here (optional)
- host website here (optional)
- your website here (optional)
16

Page 17
set server_motd2 "^B. ^&message ^B."
set server_motd3 "^B. ^&a.k.a. ^B."
set server_motd4 "^B. ^&motd ^B."
set server_motd5 "^B.........................."
// RATE & DOWNLOADS
set sv_maxRate "13000"
set sv_lanforcerate "0"
set sv_allowDownload "1"
set sv_dl_maxRate "25000"
set sv_wwwDownload "0"
set sv_wwwFallbackURL ""
set sv_wwwBaseURL ""
set sv_wwwDlDisconnected "0"
// MISC SETTINGS
set server_autoconfig "0"
set g_antilag "1"
set g_altStopwatchMode "0"
set g_complaintlimit "6"
set g_IPcomplaintLimit "4"
set g_disableComplaints "7"
set g_fastres "0"
set g_friendlyFire "1"
set g_minGameClients "0"
set g_voiceChatsAllowed "5"
set g_warmup "40"
set g_doWarmup "0"
set g_inactivity "300"
set g_spectatorInactivity "600"
set sv_floodProtect "1"
set sv_pure "1"
set sv_minping "0"
set sv_maxping "0"
set match_latejoin "1"
set match_minplayers "0"
set match_mutespecs "0"
set match_readypercent "0"
set match_timeoutcount "0"
set match_warmupDamage "1"
set pmove_fixed "0"
set pmove_msec "8"
set fraglimit "0"
// TEAMS
set g_autofireteams "1"
set g_teamforcebalance "1"
set g_noTeamSwitching "0"
set g_heavyWeaponRestriction "20"
set team_maxplayers "0"
set team_nocontrols "1"
// LMS settings for last man standing mode
set g_lms_currentMatch "0"
set g_lms_roundlimit "3"
set g_lms_matchlimit "2"
set g_lms_lockTeams "0"
set g_lms_followTeamOnly "1"
set g_lms_teamforcebalance "1"
// MAX LIVES settings for limited life servers
set g_maxlives "0"
set g_alliedmaxlives "0"
set g_axismaxlives "0"
- see Hosting Custom Maps & Mods
- Ceiling for client rates (kb/s), ET benefits from more
- 1 forces maximum rate for clients on LAN to server*
- 1 allows players to download missing files
- download rate for players getting your custom files, 25000=cap.
- set to 1 if you set the two below, allows download via web [faster].
- give a webpage URL for info/files or leave blank to DL from server
- e.g. "http://www.yoursite.com" if .pk3 files at yoursite.com/etmain/
- disconnect player whilst DL'ing? Suggest 0 if small, 1 if large files
- off; see osp doc for setting at 1&2 (public & match).
- 1 enables the antilag coding, mostly liked in ET
- 1 means ABAB stopwatch instead of ABBA.
- how many F1 complaints before player kicked (Detail)
- number of different IPs complaining to kick player (Detail)
- disable complaints for teamkills by mines(1), airstrike/ffe(2), mortar(4)
- 1 means no 3 sec invinciblity on medic revive
- players take damage from teammates
- 0 means dont need x players to start game
- prevents voice chat flooding
- 40sec delay until round starts
- 0 means dont have to "ready" to begin warmup
- e.g. 300 will kick players idle for >300 seconds
- e.g. 600 will kick spectators idle for >10 minutes
- prevents flooding (ignore with ETPro mod)
- referenced files must be same as server
- can set a min ping to keep out LPB
- can set a max ping to keep out HPB
- wether players can join match in progess
- minimum # of players per team
- 1 stops players viewing spec global chats
- % of players needed to be "ready" to start
- no. of pauses allowed (for clanwars really)
- 1 means players can be killed during warmup
- 1 stops bunnyhop fps dependency but buggy in ET
- leave
- Q3 relic, maybe can be used for duel/DM servers??
- players auto join "fire teams" (player can change anyway)
- players can't join the larger team
- 1 = cant swap teams; for limited life server really
- restrict heavy weapons, try 20 or so. See Weapons Restrictions.
- maximum players on any team
- 1 prevents "readyteam", "pause" etc by players (not ref)
- set this to limit lives per player
- set this to limit lives for allies team
- set this to limit lives for axis team
17

Page 18
// VOTING
set g_allowVote "0"
set g_voteFlags "0"
set vote_limit "0"
set vote_percent "50"
set vote_allow_comp "0"
set vote_allow_pub "0"
set vote_allow_gametype "0"
set vote_allow_kick "1"
set vote_allow_map "0"
set vote_allow_mutespecs "0"
set vote_allow_muting "1"
set vote_allow_matchreset "0"
set vote_allow_nextmap "0"
set vote_allow_referee "0"
set vote_allow_shuffleteamsxp "1"
set vote_allow_swapteams "0"
set vote_allow_friendlyfire "0"
set vote_allow_timelimit "0"
set vote_allow_warmupdamage "0"
set vote_allow_antilag "0"
set vote_allow_balancedteams "0"
// PUNKBUSTER
// dont use set or quotes with PB.
//pb_sv_enable
pb_sv_autoUpdBan 1
pb_sv_CQC 1
pb_sv_KickLen 2
PB_SV_MaxConDls 4
PB_SV_MaxDlRate 4
Pb_sv_noguidgrace 30
pb_sv_updategrace 300
pb_sv_guidrelax 0
pb_sv_scoreKick -9
pb_sv_specname ETTV
// NAMES
pb_sv_dupNameGrace 20
pb_sv_changePeriod 20
pb_sv_changeMax 5
pb_sv_EmptyName 0
pb_sv_minName 1
pb_sv_extChar 1
pb_sv_badname 20 TEAMMATE
pb_sv_badname 20 teamate
pb_sv_badname 20 disguised
pb_sv_badname 20 disguised
pb_sv_badname 20 disgised
pb_sv_badname 20 desguised
pb_sv_badname 20 desgised
pb_sv_badname 0 teamkill
// PB CVAR RESTRICTION
pb_sv_CvarFreq 6
pb_sv_CvarLogging 2
pb_sv_CvarWalk 1
pb_sv_CvarUserPulse 99
pb_sv_CvarChangedPulse 99
pb_sv_cvarempty
pb_sv_cvar rate IN 2500 25000
pb_sv_cvar snaps IN 20 40
pb_sv_cvar cl_maxpackets IN 15 100
pb_sv_cvar cl_timenudge IN 0
pb_sv_cvar cl_freelook IN 1
- see Voting.
- redundant, use g_voteflags instead
- controls all non-osp voting
- # of votes per map, resets on successful mapvote...
- % of players on server to pass a vote (nonvoters=votes against)
- vote to load rtcw osp competition settings
- vote to load rtcw osp public settings
- vote stopwatch/obj/campaign etc
- vote to kick a player
- vote to change to specific map
- vote to silence spectators
- vote to mute those players who just wont STFU
- vote to reset match (contrast with map_restart)
- vote to skip this map
- vote a player to ref level
- shuffles players by their EXP to even up skills
- swap the teams around
- vote to allow/disallow team damage
- vote to change timelimit
- vote to allow/disallow damage in warmup
- vote to (dis)enable antilag code
- vote to force equal player numbers (or not to)
- Enables PB, using +set sv_punkbuster 1 in startup line is better
- PB bans set by admins are saved & remembered on reset
- Lets clients query server settings, required even for pb_cvarlist
- PB kicks will last 2mins (default)
- max number of updates PB will attempt to download concurrently
- max speed (KB/s) PB updates will download
- kick a player with no guid in seconds (0-300)
- kicks a player with no updated status (300-600)
- 0 kicks for wrong ip, unknown and duplicate guids
- score lower than this and PB will kick player.
- PB relaxed for cameraman spectatator named ETTV-whatever
- sec's allowed to change name if name copying
- Works with pb_sv_changemax
- Kicks for >5 namechanges in 20 seconds.
- player must have a name
- playername must be > 1 character (no "^1" names)
- Allows names using extended ASCII characters
- players cant have any of these words in their name
and have 20 seconds "grace" to change if they do.
- see Cvar Restrictions
18

Page 19
pb_sv_cvar cl_yawspeed IN 0 140
pb_sv_cvar cl_pitchspeed IN 0 140
pb_sv_cvar m_pitch OUT -0.015 0.015
pb_sv_cvar m_yaw IN -0.022 0.022
pb_sv_cvar cg_bobup IN 0 0.005
pb_sv_cvar cg_errordecay IN 100
pb_sv_cvar cg_shadows IN 0 1
pb_sv_cvar cg_fov IN 90 125
pb_sv_cvar r_flares IN 0 1
pb_sv_cvar r_primitives IN 0 2
pb_sv_cvar r_nv_fogdist_mode INCLUDE NV
pb_sv_cvar r_detailTextures IN 0
pb_sv_cvar r_clamptoedge IN 1
// PB SCREENSHOT
pb_sv_AutoSs 0
pb_sv_AutoSsFrom 300
pb_sv_AutoSsTo 1500
pb_sv_SsFloor 1
pb_sv_SsCeiling 900
pb_sv_SsDelay 0
//pb_sv_SsPath
pb_sv_SsWidth 320
pb_sv_SsHeight 240
pb_sv_SsXpct 50
pb_sv_SsYpct 50
pb_sv_SsSrate 1
// BANS
set g_banIPs ""
set g_filterBan "1"
pb_sv_banload
// LOGGING
set g_log "servername.log"
set logfile 2
set g_logsync 0
// WATCHDOG
set com_watchdog_cmd "exec maprotate.cfg"
// MAP ROTATION
exec maprotate.cfg
- Toggle automatically taking screenshots from all players
- Min # of secs between auto Ss (each player!)
- Max # of secs between Ss (each player!)
- Low Ss filename serial number (starting number for filename)
- High Ss filename serial number (high-low= max # of ss files stored)
- max time client waits before taking Ss
- can specify path where screenshots are saved
- width of Ss in pixel
- height of Ss in pixel
- % from top of screen the center of Ss should be
- % from left of screen the center of Ss should be
- sampling rate for Ss (increase reduces quality & filesize)
- can specify IP's to ban, see Banning Players
- toggle allowing those IP's to connect
- loads PB ban list file, (pbbans.dat)
- make logfile the name of server for convenience
- if for any reason (i.e. error) there is no map
loaded, watchdog will kick in and run the specified
command; so set it to re-exec your map rotation file.
- run the map rotation, see Map rotations & campaigns
Note 1: Regarding server names, message of the day, and suchlike:
It really helps if public servers make clear exactly what sort of game they’re offering. Quite
often it’s not clear, and people don’t get the game they expect or want.
Bongoboy - Game Designer, Splash Damage
19

Page 20
Note for LAN Servers Without Internet Access
If you are setting up a server for some LAN gaming and there is no internet access available, make
sure the server does not have dedicated set to 2 on the command line/shortcut, which is only for an
internet dedicated server. +set dedicated 1 will set it as a LAN-only dedicated server.
Also completely disable http redirects:
set sv_wwwDownload "0"
set sv_wwwDlDisconnected "0"
set sv_wwwBaseURL ""
set sv_wwwFallbackURL ""
If you want to force all LAN-connected clients to a high rate and maxpackets (instead of using their
usual configs which are liable to be set with internet play in mind), set sv_lanforcerate to 1.
*Note the game may force clients to ignore their cl_maxpackets setting and send a snapshot per frame
if their IP is similar to the servers', even if sv_lanforcerate is 0.
If you are going to run PB, you may also wish to manually update punkbuster prior to running the
gameserver, and you should probably set PB_SV_LanMask if there are any LAN clients connecting to
your server:
PB_SV_LanMask [IP Subnet Mask]
This setting is used for Internet Servers that also have local LAN game clients connecting; it
should be set to hold the subnet of the LAN; for example, if the LAN IP Addresses are
192.168.1.x, then set pb_sv_lanmask to 192.168.1 (source: PB admin manual).
Note also it might be an idea for clients to disable the game's autoupdate (set cl_autoupdate 0) when
there is no internet access.
20

Page 21
Map rotations & Campaigns
Setting up a rotation for stopwatch, objective and campaign are all similar, the major difference is for a
campign, you first need to make the campaign file before there is any point putting it into the rotation. If
you have any experience with making scripts for a Q3 engine game it should be pretty easy to
understand a map rotation. The basic premise is once a map is completed, it looks to run the cvar
"nextmap". The way a map rotation works is hence to simply set what "nextmap" is.
the "watchdog" is some check Splashdamage coded in, if the game senses a map is not loaded, it
automatically runs watchdog command, so it makes sense to set watchdog to re-load the map
rotation.
You can put the map rotation whereever you like, aslong as it is being "exec'ed". For example, you
can put it straight into the main server configuration file, or have it in a seperate file (say, rotation.cfg)
which is then called at the end of the configuration file (for example, exec rotation.cfg).
Rotations, like any Q3 game script, have lots of lines starting "//". This just denotes a comment for the
human reader, the computer skips these lines completely.
This is an example of a stopwatch rotation:
// STOPWATCH ROTATION
// WATCHDOG
set com_watchdog_cmd "vstr m1r1 ; say watchdog found no map running - restarted mapcycle"
// MAP
set b_mapscriptdirectory etpromapscripts
set m1r1 "g_gametype 3; map oasis; set nextmap vstr m1r2"
set m1r2 "map_restart 0; set nextmap vstr m2r1"
set m2r1 "g_gametype 3; map goldrush; set nextmap vstr m2r2"
set m2r2 "map_restart 0; set nextmap vstr m3r1"
set m3r1 "g_gametype 3; map radar; set nextmap vstr m3r2"
set m3r2 "map_restart 0; set nextmap vstr m4r1"
set m4r1 "g_gametype 3; map railgun; set nextmap vstr m4r2"
set m4r2 "map_restart 0; set nextmap vstr m5r1"
set m5r1 "g_gametype 3; map supplydepot; set nextmap vstr m5r2"
set m5r2 "map_restart 0; set nextmap vstr m6r1"
set m6r1 "g_gametype 3; map caen; set nextmap vstr m6r2"
set m6r2 "map_restart 0; set nextmap vstr m1r1"
vstr m1r1
// END STOPWATCH ROTATION
m1r1 and so on are known as a string library, kind of like a name given to a string of commands - tell
the game to run the 'name' and it runs the string of commands associated with it. What basically
21

Page 22
happens here is the engine stores these lines kind of like "m1r1 command means: set g_gametype to
3, load map oasis and set 'nextmap' to run 'm1r2'". The very last line of the rotation is "vstr m1r1",
which tells the engine to actually execute the line m1r1, which will startup the map rotation. Hence:
g_gametype is set to 3, Oasis is loaded, and once the round of Oasis is finished, it runs "nextmap"
which has been set to run m1r2, whereupon the map is restarted the the map cycle continues.
Note the "set b_mapscriptdirectory etpromapscripts". This should only be used if the server is running
ETPro mod, and you want to make use of the map modification scripts supplied with ETPro - allies can
dynamite the back door on battery, spawn in the CP building on Fueldump and so on. If you dont want
this, or are not running ETPro mod, just remove this line.
For a campaign rotation, it is fairly similar up to this point. Here is an example of a roation that runs
both of the official campaigns, one after the other:
// CAMPAIGN ROTATION - official campaigns
// WATCHDOG
set com_watchdog_cmd "vstr d_initial ; say watchdog found no map running - restarted mapcycle"
// MAP
set d1 "campaign cmpgn_northafrica ; set nextcampaign vstr d2"
set d2 "campaign cmpgn_centraleurope ; set nextcampaign vstr d1"
set d_initial "set g_gametype 4 ; map oasis ; set nextcampaign vstr d2"
vstr d_initial
// END CAMPAIGN ROTATION
Notice the similarity with the stopwatch rotation - really its almost exactly the same. The important
things to notice is that: g_gametype is 4, and the campaign mode version of nextmap is
"nextcampaign". Secondly, also notice the first campaign being loaded is northafrica, which starts with
Oasis, and in the d_initial line the map there (which is first loaded) is also Oasis.
Custom Campaigns
This is the big hassle with campaigns, the ET system isnt exactly optimal.
First you have to make the cmpaign file. To do this you basically make a new .txt document with
notepad, and then rename it so the extension is changed to ".campaign", for example
mycustom.campaign. In that file basically cut & paste the following, and modify to suit what you want.
22

Page 23
{
name "my custom campaign"
shortname "cmpgn_mycustom"
description "www.rtcw.co.uk public:*6 map campaign.**All welcome, have fun. No
greifing, laming or spamming spawns.**ETpro map scripts in use! Can dynamite back
door on battery & spawn in garage on Fueldump.**Maps:*Radar, Oasis, Railgun,
Battery, Goldrush, Fueldump.**Admins: #rtcw.servers on Quakenet IRC, dg@jolt.co.uk
or www.rtcw.co.uk/forums"
maps "radar;oasis;railgun;battery;goldrush;fueldump"
mapTC 374 374
type "wolfmp"
}
"name" and "description" is what appears in the loading screen, also "mapTC" is the co-ordinates for
centering the map there. With the description, a * makes it continue on the next line, a bit like <br>
html tags. See the image, though note there the name was set as "sixmapi".
"shortname" is important, it is what is used to load the map - notice "campaign cmpgn_centraleurope"
on the campaign rotation above. "maps" are of course the maps used in the campaign, note you
cannot use more than 10 maps in a campaign.
You're not done quite yet. Now you have to put the file in a folder called "scripts" (just make it
anywhere) and then zip all this up into a zipfile, which you then rename the .zip extension to .pk3. This
has to be done with "recurse folder names" or similar option ticked - basically if you unzip this file it
should make a folder called scripts that contains the .campaign file.
Since this means there is a customised .pk3 file loaded on the server, clients will have to download it.
Players will need to have ET set to allow downloads, and the server must also have
sv_allowdownloads set to 1 (if you are using http redirect, include the campaign file at the file host). By
the way, campaign files are automatically loaded even if the campaign is not run, so players
connecting to ANY server running from the same ET install will all need the campaign file...
Just for another irritating annoyance, a few custom maps aren't really 100% compatible with
campaigns at all, and some maps (including officials) dont work properly at the start or end of
campaigns... It's not hard to quickly check though, simply load ET and select to host server, selecting
campaign mode and then the map you're thinking of starting off with - you will get a message if the
map isnt setup to start a campaign. Radar and Oasis are both safe maps to start off campaigns, while
Goldrush and Fueldump are safe for ending campaigns on.
Making the campaign .pk3 of course just creates what the campaign is, you still need to tell the server
to run it, so you need a map/campaign rotation. The rotation itself is identical to the one shown
previously, except this time the "campaign" command is set to "cmpgn_mycustom" (which is what we
set shortname to in the example .campaign file). The other difference is there is only one campaign
running, so only the one line for it. Just to repeat myself, notice our custom campaign starts with the
map Radar, so the map being loaded on the campaign rotation (below) is also Radar.
23

Page 24
// CAMPAIGN ROTATION - custom
// WATCHDOG
set com_watchdog_cmd "vstr d_initial ; say watchdog found no map running - restarted mapcycle"
// MAP
set d1 "campaign cmpgn_mycustom ; set nextcampaign vstr d1"
set d_initial "set g_gametype 4 ; map radar ; set nextcampaign vstr d1"
vstr d_initial
// END CAMPAIGN ROTATION
You can find an example 6 map campaign here if you would find it easier to just edit as you like (be
sure to change the actual file name and 'shortname' to something unique to your server, else you may
create havok for any players who already have campaign files with the same names - remember to
then change the campaign rotation so it uses your new names!)
MORE troubles? Please take note of the .PK3 Count Bug!
Highboy's has a webpage script setup to make you a custom campaign nice and simple, but its not too
great if it's lacking a map you wish to use, or arent too keen on the little advert... Update - Highboys is
dead back by popular demand, another such script by someone else can be found here. Alternately, a
downloadable program which appears to be able to make any custom rotation or campign is the Map
Rotation Creator, though I've never tried it myself - I find it's better to be able to do it yourself because
then you can do exactly what you want, and can easily find the problem if something is wrong.
ETPro campaigns note: ETPro added server cvar "b_campaignfile":
new: b_campaignFile allows admin to specify specific campaign file, to prevent server from
referencing every pk3 on the server and forcing players to download every referenced pk3 on
the server
Map Names
oasis
battery
goldrush
radar
railgun
fueldump
For custom maps check their documentation, if there is any. Else, usually it will be the filename,
without the .pk3 extension - however some mappers dont follow this convention and you may have to
open the .pk3 file with winzip or whatever, and find the filename of the .bsp file inside.
24

Page 25
Campaign Names
cmpgn_northafrica (Oasis, Battery, Goldrush)
cmpgn_centraleurope (Radar, Railgun, Fueldump)
Shuffling Teams
If you want to have the server automatically shuffle teams, simply insert the shuffle_teams command it
into the rotation script - in the right place.
25

Page 26
Specifics
Hosting Custom Maps & Mods: Faster Downloads via http Redirect
If your server is running custom campaigns, custom maps or modifications then players will need to
have these files in order to play there. If player's have not already obtained and installed the
necessary files, they can autodownload them directly from the game server if the server has set
sv_allowdownload to 1 (which is default, and you will almost certainly want it so).
sv_dl_maxrate sets the speed clients can download from the server at, in bytes per second. The
actual speed player's can download from the server at is capped by the lower of sv_dl_maxrate, the
overall engine cap of 25kps, and by client's own 'rate' setting (and of course, by their actual connection
speed). In practice, for whatever reason, the fastest clients seem to be able to download is about
13KB/s. The setting was supposed to go to about 42KB/s when it was added via patch for RTCW, but
for whatever reason it doesnt in ET.
13KB/s is adequate for small files, but far too slow for large files such as big custom maps or mods. Of
course, it also takes bandwidth (and some cpu) from the gameserver, maybe none of which you have
going spare - or perhaps you have faster and cheaper from a filehost. If you have a busy server
running brand new custom maps, file downloads can be a LOT of bandwidth!
This is where the web-download feature comes in. If you have a web server that can host files for
download, you can set the game server to redirect the autodownload files to be sent from the web/file
server instead, at the max rate the web server allows! This feature is highly recommended for servers
running custom files of several megabytes.
set sv_wwwDownload "1"
set sv_wwwBaseURL "http://www.yoursite.com/files"
set sv_wwwCheckPath ""
set sv_wwwDLDisconnected "0"
set sv_wwwFallbackURL ""
In the example above the .pk3 files should be at the following
address:
"http://www.yoursite.com/files/etmain/file.pk3"
These must be the exact same .pk3 files as in use on the server, do not zip them or anything. Note
also the BaseURL does not finish with a backslash!
Note the "etmain" subfolder that is in the URL for where the actual file is found, but is NOT specified in
wwwBaseURL; ET will automatically add this folder to the seek path, but if you are running a
modification, it is not always going to be etmain! Consider where the files are kept on the server - they
26

Page 27
will either be somewhere within "etmain" subfolder or within the subfolder of a mod like ETPro. If the
files are kept in etmain, then the url would be:
http://www.yoursite.com/files/etmain/file.pk3
However, if they are kept somewhere within the mod's folder, for example etpro, then the url would be:
http://www.yoursite.com/files/etpro/file.pk3
By the way, I beleive it will sometimes work ok even if you put files that are supposed to go into etpro
folder into the etmain one instead (but not vice-versa), but this would not be good practice and is
definately not recomended. Another caveat is that on the server, folders like etmain and etpro should
really all be kept in lowercase, as should be the respective folders on the http fileserver. If the server
does not use folder names that are all lowercase, you may need to have the folder names on the file
server be in exactly the same case.
Do not point the url to the actual ET install you're running from (e.g. because you're running a FTP
server on the server host machine anyway), or to a complete copy of it - it would be possible for
people to download all files in there that way, including the configuration files that contain passwords.
There are also three further settings related to download redirect:
set sv_wwwCheckPath ""
I beleive when left blank this will make the server look in the default folder for the .pk3 files to send to
clients when downloading with the www method. The default folder is "etmain". When there is e.g.
"serverfiles" here, the server will look for them in "serverfiles" subfolder, instead of "etmain". I suggest
leaving this blank.
set sv_wwwDlDisconnected "0"
When set to 1 player's will download the necessary files before being fully connected to the server -
the benefits is that they do not take up a player slot on the server while downloading (which also
means it's easier to maintain team number balance), and it appears downloading player's dont have
problems when the map changes on the server. The downside for the player is they might spend ages
downloading files, only to complete them and end up facing "server full" and having to queue! This
might be even more annoying if the player had to queue even before starting the downloads. Because
of this I suggest enabling disconnected downloads when there are large files, and disabling it when it's
just a few smallish files that won't take long to download.
set sv_wwwFallbackURL ""
You can put in the URL to a webpage here, and if the download redirect fails then it will exit ET and
open the webpage. The idea is you can have a simple page giving alternative locations to download
27

Page 28
the files from the web in the usual way. If you leave FallbackURL blank it will default back to
downloading from the server instead (thanks Sphere).
Example: set sv_wwwFallbackURL "http://www.rtcw.jolt.co.uk/server"
As a final note, bear in mind that using urls for http redirect without permission makes you a
bandwidth-theiving scumbag, and puts you at the mercy of the filehost owner finding out and doing
nastly things for payback. Since the ET update to 2.60, clients trying to download via redirect now
send a referrer (ET://server.IP.address:port) of the gameserver, so it is possible to trace use - and
skilled network admins can actually prevent or reroute downloads from gameservers that are not their
own.
28

Page 29
Re-Direct Settings Reccomendations
Let's assume you have a http or ftp filehost. That does not mean that it is definately better to use the
download redirect however. This is something open to opinion - here's a few examples to illustrate
mine:
1. Server running a stock campaign of stock maps, no mods, no custom files at all
No need for any download system, though might aswell leave sv_allowdownloads at 1.
2. Server running a custom campaign of stock maps, no mods
Here the only file clients should need to download is going to be a couple of KB, there is no
point with a redirect, it is only going to leave open more possibilities for problems.
3. Server running a custom campaign of stock maps, latest official ETPro mod
Here you're clients are highly likely to already have the sizeable files, since ETPro is very
popular. They wont have the custom campaign, but it's a trivial download anyway. I suggest
either sticking with just the server download system, or use the http redirect but leave
sv_wwwFallbackURL empty so players can default back to downloading from the server.
4. Server running a custom campaign of stock maps, a brand-new or beta ETPro - version (or
some relatively unpopular client-side mod of 2-5mb)
Several players are likely to need to download a couple of megs, so the redirect download is
worth it, but the download isnt really huge so leave sv_wwwFallbackURL empty so players
can default back to downloading from the server, espeically so if you change the campaign
file.
5. Server running custom maps, or some large modification
Several players are very likely to need to download quite large files. Go with the redirected
downloads, and set up a html page for the sv_wwwFallbackURL.
Problems with Download Re-Direct
Since the 2.60 update, Enemy Territory's http download redirect has become much improved with
respect to it's stability. You can still have problems though, but they're probably "your own fault" so to
speak:
when transmitting .pk3 files via FTP to the filehost, make sure they transmit as
binary/application and NOT as ASCII/text/plain/whatever.
if using a FTP server to serve the files, make sure you set it up properly! some arent as
straightforward as they could be. Test it out by removing a file from your client that is needed
on your gameserver and then join it. If files are downloaded over and over, ensure it is set up
to transmit the .pk3 files as binary/application and not ASCII or whatever.
29

Page 30
Aviod having any excess .pk3 files on the gameserver, and beware of older custom maps that
may include campaign files (all campaign files are loaded when a server is run, and all maps
referenced in them will be required for clients to have). Best practice is to remove any non-
official files if they are not intended for use on the gameserver.
When using custom maps/campaigns please have consideration of the .PK3 Count Bug.
Admins using versions of ET prior to ET 2.60
The following section is now obsolite and only applies to admins using older versions of ET, i.e.
1.0, 1.01 or 1.02:
Problem with the HTTP download: it's buggy. Clients will sometimes crash if the game cant find
the files where it thinks they should be, and it's a pain for players even if it doesnt crash if their
web browser suddenly pops up and gives some 404 "cannot be found" message. Also, if the files
get corrupted on the filehost or during download, the client is very likely to crash - or continuously
redownload the files. Make sure the file host is set to send the pk3 files as application, binary or
octet-stream, and NOT as text or plain, which will corrupt the file and end up with the continuously
re-downloading issue. Sometimes the clients continuously download the same files over and over
for no apparent reason.
In short, ET's redirect system isn't very stable for clients, and it seems worst if the redirect points
to an FTP server (especially for Linux users). I would still reccomend use of redirected downloads
for any reasonably large file however: it is at least a practical method to get larger files (and the
slow server download really isn't), it works most of the time and any crashing is of ET itself - I've
not heard of any sort of damage to anything.
There is also an issue that affects any method of autodownload. Copy & paste of the explanation
given by Rippin Kitten in the Splashdamage forums details the issue well:
"Under a pure server, all game elements in use on the server need to be on the client as well.
Since most custom maps bundle a campaign file in with the map pk3 the server loads this
campaign file (and all campaign files while under campaign mode) on startup. So even though a
small 2kb campaign script is being used by the server, it will require that all clients have the big
massive pk3 its located in.
Two things you can do.
One, deal with it. Hopefully all of your clients are willing to sit through the painfully slow download
process and get every missing pk3. You can set up the http redirect which is a much faster
transfer system, and if you can host it on a seperate connection you don't tank the server with file
30

Page 31
requests. You can also post them on your website so your players can get them that way. Finally,
pulling pk3s out of the etmain directory when you don't plan on using them will help as well.
Second, you can run the server as unpure. This does introduce the possibility of clients running
models, sounds, or voice mods that not everyone is running, potentially "unbalancing" the game.
When the custom map gets called clients will download it then. So deciding to lose all your players
from the get-go or weeding them out when the custom map finally comes up is a decision you
need to make."
However, please note that the quote comes from early days in ET, where mappers were including
campaign files inside the map's .pk3 - a practice since stopped, by 99% of mappers anyway (and
if the other 1% pay so little attention to this major problem, their maps are probably not worth
playing anyway). It is still good practice to remove any maps not being used on the server though.
If you wish to run multiple servers, then run any server that uses the problem maps from their own
ET install.
Another possibility might be to open up the .pk3 and remove any campaign files, but this would
mean all players (wether they have the original or not) would have to download your modified
version of the .pk3, and conflicts with the "official" version are likely. Further this would probably
fall foul of the author's terms of use.
When using custom maps/campaigns please have consideration of the .PK3 Count Bug.
31

Page 32
Weapons & Class Restrictions
In vanilla ET (Et with no mods, a.k.a. "etmain"), there is just one setting for restricting heavy weapons
like the Panzerfaust and Field Operative's support fire - g_heavyWeaponRestriction. All the mods I
can think of, however, have significantly expanded the controls for server admins to be able to tune
much more finely. This is one of the best features of these mods.
ETMain
ETPro
Other Options (ETAdmin_Mod)
ETMain: g_heavyWeaponRestriction
As the name suggests this cvar (setting) is used to limit heavy weapons like Panzers and flamers, but
also artillery.
100 (percent) is default. For soldier weapons it refers to the percentage of the team that can select
EACH heavy weapon. e.g., if you set it to 20, and in the game there are up to 10 players on a team,
each side could then have up to two panzerfausts, two flamers, two mg42's and two mortars. If the
team has no flamers, this does not allow them to take any additional Panzers. It is important to note
that the percentage is based on the team size, that is half of g_maxclients, and not the actual number
of players currently playing on the team. Beware, for heavyweapons this setting is always rounded up,
even a tiny fraction is taken to allow one more whole heavy weapon to be taken.
The Field Ops use of Artillery is also restricted, but is on a per-minuite basis and takes into account
the number of players on the team, the limit is irrelevant to the number of Field Ops! The calculation is
something like the following:
2(g_heavyweaponrestriction * teamsize)
= max number of artillery per team per minuite [capped at 6]
so, if g_heavyweaponrestriction is 20, there are 10 on the team, and there are 3 field ops (or however
many), between them they can set off
(0.2*10)= 4 artillery per min
Note that regardless of whatever g_heavyweaponrestriciton is set to, and the number of players, there
is a fixed maximum of 6.
32

Page 33
So we've worked out how many artillery can be set up per minuite, which is all most people need to
know. If you're wondering how this "minuite" is calculated (think about it), read the next paragraph.
The counter starts at 0, and there are 6000msec in a minuite. Every time a player sets off an artillery,
6000/m is added to the counter, and the counter will start counting back down to 0 (m = support fire
restriction per min). Once the counter reaches 6000, no more artillery can be fired until it has counted
down to under 6000. Since of course the counter never goes below 0, this means in any given minuite
there cant be more than m artillery set off, but note fractions do apply - an m of 2.5 will be rounded UP
to 3 in the first minuite, but since the leftover msec is carried over, there will be only 2 allowed in the
next minuite. Hence on average there can only be 2.5 artillery every minuite. It also means that once
the counter has exceeded the cap, you dont have to wait a full minuite for it to count down, in order to
fire artillery again.
However. There are "Oddities" (to be kind) in the system. First of all, the above is all well in theory but
you try and test it on your own PC, combined with g_ltchargetime 10. You will notice that regardless of
setting, you can immediately unleash 3 artillery and then only 1 more every 30seconds after that - two
if you wait 60 seconds instead. Plug that into the formula and you have to assume that either its
completely wrong (and hence so is a SD programmer - probably the one that made it, plus two
eminent ET mod authors) or, that theres a minimum setting of 2 per min, and still the initial 3 is a
gremlin or something. There is also an exception when it is set to 0, and this is what is really annoying.
The most stupid thing is also the most blatantly stupid and annoying thing. One of those things that
make you poke your head up and wonder "wtf did they do that for?". When g_heavyweaponrestriction
is at 0, for some unfathomable reason this means zero restriction for artillery, and zero allowed soldier
heavyweapons. This not only goes against the apparent method of the setting, but also against all
logic - it seems obvious that any server not wanting any heavyweapons is also not wanting any
artillery spammage, much less having it rain down as much as possible. You cant even use something
silly like 0.000001, since there is still this apparent minimum of 2 for arty, and anyway this will be
rounded up to allow one of each heavyweapon class.
Stupid.
An alternative way to reduce the amount of artillery spammage could be to increase the time needed
to recharge the Field Op's bar. This would base it per Field Op rather than per team, but would have a
side-effect of lessening the amount of ammo paks they could distribute. The cvar is g_LTchargeTime,
which defaults to 40000 (40 seconds). Further, using certain mods such as Shrubet and ETPro can be
set to change the recharge behaviour when a player suicides with /kill, so players cannot so easily fire
artillery, /kill to respawn with full bar then repeat the process.
33

Page 34
ETPro
set g_heavyWeaponRestriction 20
set b_stickycharge 2
set b_maxmines "10"
set team_maxriflegrenades "2"
set team_maxFlamers "1"
set team_maxMG42s "2"
set team_maxMortars "1"
set team_maxPanzers "1"
Now we're talkin'! Most of these settings are self-explanatory, team_maxWeapon means teams can
only have that many of that weapon each, and its the same deal for b_maxmines. The above settings
are not default by the way, they are the ones running on my stopwatch server.
In ETPro, g_heavyWeaponRestriction only controls the Field Operative's support fire. Both artillery
and air strikes are controlled with this cvar in the same way as it does in etmain.
b_stickycharge is not a heavyweapon restriction per se, but the effect of it is mostly to tone down the
heavy fire spam. If b_StickyCharge is set to 1, players' power bar is not refilled if the player self-kills,
instead it continues to refill at the normal rate. If set to 2, the same thing happens regardless of how
the player dies. 0 is same as etmain, everytime a player dies their powerbar is completely refilled. The
problem with this is that player's can then self-kill (/kill) every time the spawn clock is low in order to
get a refill, so they can rain down more spam.
Other Options
If you want to have more control to restrict classes (e.g. medics or snipers), you can have a look at the
ETAdmin_Mod, which is actually a server script that can run alongside ETPro or Shrub mods, in
addition to running on vanilla ET. Note ETAdmin_Mod requires a Linux server running Pearl.
I'm not sure what features ShrubET offers with respect to class restrictions, the mod seems to be dead
and it's manual is AWOL.
34

Page 35
Voting Options
There's two portions for this, first the g_voteFlags which mostly come from RTCW, and allow_vote
which comes from the RTCW mod OSP, which was built into ET. As far as I'm aware, at time of writing
neither ETPro nor any other mod has significantly changed any of the voting system.
Two other important settings:
set vote_limit "2"
- This sets the number of times in a round that a vote can be called, note it resets when map it, or a
new map load - including if this was done by vote!
set vote_percent "50"
- percentage of all connected players voting "yes" votes for it to pass (as opposed to, as might be
assumed, percentage of the players who bother to vote either way) .
Note I HAVENT experimented with ET voting much! Really not sure if g_voteflags is the same as
RTCW, or what happens when g_voteflags contradicts vote_allow (vote_allow was implemented by
OSP mod when the vanilla-rtcw vote option was either all or none, g_voteflags was added with a
patch). It appears whichever setting comes last overwrites the one that was set prior - best practise in
your configs is perhaps to first set g_voteFlags and then set the vote_allow_* settings further down the
configuration file.
Update: I'm pretty sure you can just skip g_voteFlags altogether and simply use the vote_allow_*
settings.
g_voteFlags
This allows you to select exactly what votes are allowed, with one setting called a bitflag variable. It
works by giving each option a number, and you add up the numbers of the settings you want to allow
for your preferred settings. Should be familiar to anyone with basic idea of what binary is.
g_voteflags 255
255 = allows all votes. 0 = voting disabled
For fine tuning, add up the value of the votes you want to allow:
1 Restart Map - restarts map
2 Reset Match - restarts match, resets stopwatch rounds.
4 Start Match - vote to skip the /ready shenanigans.
8 Next Map - skips to next map on the rotation
35

Page 36
16 Swap Teams - axis become allies and vice versa.
32 Game Type - vote for game mode: stopwatch, campaign etc
64 Kick Player - callvote to kick a player
128 Change Map - callvote to change map, disrupts map rotations!
Vote_Allow
These can be either 0 for disabled or 1 for enabled.
vote_allow_comp - load OSP RTCW competition settings
vote_allow_pub - load OSP RTCW public settings
vote_allow_gametype - vote for game mode: stopwatch, campaign etc
vote_allow_kick - callvote to kick a player
vote_allow_map - callvote to change map
vote_allow_mutespecs - toggle wether players see spectator's global chats
vote_allow_muting - toggle wether players can silence another player
vote_allow_matchreset - restarts match, resets stopwatch rounds.
vote_allow_nextmap - skips to next map on the rotation
vote_allow_referee - ref can issue several commands normally needing RCON.
vote_allow_shuffleteamsxp - shuffles players by their EXP to even up skills
vote_allow_swapteams - swap the teams around
vote_allow_friendlyfire - vote to allow/disallow team damage
vote_allow_timelimit - vote to change timelimit
vote_allow_warmupdamage - vote to allow/disallow damage in warmup
vote_allow_antilag - vote to (dis)enable antilag code
vote_allow_balancedteams - vote to force equal player numbers (or not to)
36

Page 37
Complaint Limits
Enemy Territory has two seperate complaint limit settings, both based on the "F1 complaint" after a
teamkill. Further, since 1.02 update you can disable complaints for teamkills that result from certain
things. Also PB has a method to autokick likely lamers.
g_complaintlimit 6
Players will be kicked if they receive more than x F1 complaints, regardless of who filed them. Default
is 6.
g_ipcomplaintlimit 4
Players will be kicked when complained against by x number of different IP's, i.e. when x number of
different players file a complaint. Not associated with g_complaintlimit - player will be kicked if either
rule is met. Default is 3.
g_disableComplaint 1
disables the complaint system for certain type of kills, 1 = mines, 2 = airstrike/artillery (a.k.a. 'FFE'), 4
= mortar. This cvar is a bitflag variable, so to disable complaints for more than one type of TK, add
together for multiple types (7 would mean players cannot file if they are TK'ed as a result of running
onto mines, into support fire or a mortar landing on their head). This setting was sdded with 1.02
patch, hence it requires server to be running 1.02 for this to function.
With Punkbuster, there is also a related setting:
pb_sv_scoreKick x
Players will be kicked by Punkbuster if their score goes this low. Obviously, set it to a negative figure.
It doesnt exactly work well in ET since you only lose "score" (experience points) if someone files a
complaint, and anyway are likely to easily rack up sufficient scores to remain in the positive regardless
of teamkilling antics. The scorekick worked a lot better in rtcw though, and does prevent players
rejoining for the duration of whatever you have pb_av_autokicklen set to.
37

Page 38
Cvar Restrictions
Contents
Introduction
38
Tweaking vs. Cheating
39
Cvar Unlockers
39
ETPro Mod
40
Recommended Cvar Restrictions
41
Dubious Cvar Restrictions
50
100% Pointless checks
55
Conclusion
57
Introduction
This page is to outline and explain cvar restrictions recommended for Enemy Territory - why I
recommend them and why other checks frequently used are not useful - or may even cause problems
unnecessarily. Explanation and background is given for common misconceptions regarding cvar
"tweaking", and an attempt is made to address the wide range of attitudes and views on the subject.
Other than the cvars listed here, I'm not aware of any other possible cvar "exploits" - veterans of
RTCW and other games based on the Quake3 engine should bear in mind ET is a different game and
many cvars are either removed or are restricted in the gamecode. Hacking aside, what constitutes
cheating or an unfair advantage is often subjective and open to personal opinion, with a wide scale of
grey area and differing views.
I am not going to go through all the tweaks for improving fps or anything else. This article is only
interested in cvar restrictions which I use on the RTCW.co.uk servers and believe other admins should
consider for their servers or competitions. Naturally this also means explaining why some other
frequently used restrictions are not recommended.
I am not going to explain the PB cvar restriction system, it is already done perfectly well in the
"Punkbuster for Server Admins" help document provided, an (updated) online version of which can be
found on the Evenbalance website.
The settings here are public server orientated, with notes regarding clanwar settings. The only area I
would consider changing for clanwar settings is perhaps to require higher rate and cl_maxpackets
settings, since modem players are uncommon in tournaments and anyway such players are far more
likely to be knowledgeable enough to alter their settings.
38

Page 39
Tweaking vs. Cheating
There is some confusion that if someone is modifying cvars, they must be cheating. You modify cvars
when you set the options in the ingame menu's - most tweaking in ET is actually just setting those
same settings, but using the .cfg file instead. You also change cvar settings when you change team,
change class, change weapon... All these things are settings (variables) and hence use cvars.
The most important thing to remember is no matter how different or ugly the view may be, this is
irrelevant. What other players have to put up with is of absolutely no concern, all that does matter is
wether they actually have a significant unfair advantage. After the first couple of days, for many
people eye-candy ceases to be exciting and gameplay -- smooth and playable FPS -- becomes all that
matters, and this is what most "tweaking" or "cfg" is about. In most games, the various forms of
brightness is the other main reason, but in ET really you can see everything there is to see via ingame
settings. Certain cvars however can be used for what is irrefutably cheating, any argument that "if its
not an external hack it's not cheating" is clearly nonsense from people who are not aware what is
actually possible with game cvars.
Screenshots of various brightness settings can seem quite dramatic, but if you look more carefully
there's rarely anything to see that would go unnoticed when using ingame settings. Further, there are
many ways to change brightness without using ingame cvars: driver settings, monitor settings and
legitimate external programs. Different hardware (particularily video card, driver version and monitor)
result in different screen brightnesses, so even a screenshot from one player may look much more
bright or dark on another computer - and lets not forget about the strong jpeg image compression. The
provided screenshots are all taken with settings somewhat similar to what would likely be used by a
"tweaker", a fairly bright display with close to minimal graphics settings. This usually means they show
something approaching a worst-case scenario.
However, it is important to emphasise that I'm not interested in trying to argue the whole "tweakers vs
cheaters" thing either way. These "dabates" just go on and on forever and rarely gets solved for more
than a day. Even if you care to take a more restrictive approach to settings, the explanations here are
useful as information.
Cvar Unlockers
In ET, some cvars are cheat-protected by the game, meaning clients (players) should not be able to
change them manually, or sometimes only to within a specific range. These differ from hardcoded
cvars, which are restricted in the engine and setting them outside of range has no effect - all that will
happen is the game will use the closest allowed value, for example r_picmip is hardcoded to between
0 and 3, if you try to set a value of 5 the game will simply use it as 3.
39

Page 40
By default Punkbuster restricts certain cvars, but only a few - r_showNormals and cg_thirdperson for
example. They also do detect some unlocker hacks, but not all. Players using hacked ET.exe's can be
picked up using the MD5Tool, but you need to set it to examine the exact place where the hacked file
differs from the genuine one.
ETPro, at time of writing anyway, does not further restrict any locked cvars, with the exception of those
relating to tracers. Until PB, or ETPro, start restricting all locked cvars by default, you'll need to add the
others to PB/ETPro cvar restrictions. recommended ones are included here.
Note you should not ban players who are kicked for cvar violations, and this includes locked cvars
being out of range. As mentioned, it is often possible (without hacks) to set the locked cvars outside of
range but they will actually function only to the nearest allowed value. Both PB and ETPro's methods
of cvar restrictions are highly effective and there is no concern that a player can return with an
undetected unlocker and go cheating. Also, you have to be very cautious setting restrictions on locked
cvars, as often they are changed by the game engine, so you cannot simply go through them all
setting PB to kick if any one is not at the default value.
ETPro Mod & Cvar restrictions
When using ETPro modification (version 3 and later), you can use Punkbuster cvar restrictions as
normal. However ETPro offers an alternative method which may be preffered. Broadly, ETPro's
system has similar functionality but instead of just kicking player's out of the server for having a
restricted cvar at the wrong setting, it will instead change the setting to the nearest "allowed" value.
More information, including explanation of syntax can be found on the ETPro forum.
When using ETPro, an extra precaution to take is to check you are not restricting cvars that are being
'forced' on the client by the server configuration. For example, it is not uncommon for servers to have
set forcecvar r_drawfoliage 0, with this of course you must avoid also restricting the cvar to a different
setting.
Something else that should be considered is ETPro has changed some of the coding, and for example
the connection settings are less easily abused to cause the player to warp. However, none of the
restrictions recommended here will give any problems wether ETPro is used or not, so you can
consider them optional - that is, provided b_antiwarp is set to 1 on the server.
40

Page 41
Recommended Cvar Restrictions
Using Punkbuster:
pb_sv_cvar rate IN 2500 25000
pb_sv_cvar snaps IN 20 40
pb_sv_cvar cl_maxpackets IN 15 100
pb_sv_cvar cl_timenudge IN 0
pb_sv_cvar cl_freelook IN 1
pb_sv_cvar cl_yawspeed IN 0 140
pb_sv_cvar cl_pitchspeed IN 0 140
pb_sv_cvar m_pitch OUT -0.015 0.015
pb_sv_cvar m_yaw IN -0.022 0.022
pb_sv_cvar cg_bobup IN 0 0.005
pb_sv_cvar cg_errordecay IN 100
pb_sv_cvar cg_shadows IN 0 1
pb_sv_cvar cg_fov IN 90 125
pb_sv_cvar r_flares IN 0 1
pb_sv_cvar r_primitives IN 0 2
pb_sv_cvar r_nv_fogdist_mode INCLUDE NV
pb_sv_cvar r_detailTextures IN 0
pb_sv_cvar r_clamptoedge IN 1
// Optionally also:
pb_sv_cvar r_drawworld IN 1
pb_sv_cvar r_drawfoliage IN 1
pb_sv_cvar r_znear IN 3
pb_sv_cvar r_showtris IN 0
pb_sv_cvar r_drawentities IN 1
pb_sv_cvar r_showmodelbounds IN 0
pb_sv_cvar r_lightmap IN 0
pb_sv_cvar cg_tracerlength IN 160
pb_sv_cvar cg_tracerSpeed IN 4500
pb_sV_cvar cg_tracerwidth IN 0.8
pb_sv_cvar cg_tracerchance IN 0.4
Using ETPro cvar restrictions:
sv_cvar rate IN 3200 25000
sv_cvar snaps IN 20 40
sv_cvar cl_maxpackets IN 20 100
sv_cvar cl_timenudge EQ 0
sv_cvar cl_freelook EQ 1
sv_cvar cl_yawspeed IN 0 140
sv_cvar cl_pitchspeed IN 0 140
sv_cvar m_pitch OUT -0.015 0.015
sv_cvar m_yaw IN -0.022 0.022
sv_cvar cg_bobup IN 0 0.005
sv_cvar cg_errordecay EQ 100
sv_cvar cg_shadows IN 0 1
sv_cvar cg_fov IN 90 125
sv_cvar r_flares IN 0 1
sv_cvar r_primitives IN 0 2
sv_cvar r_nv_fogdist_mode INCLUDE NV
GL_EYE_RADIAL_NV
sv_cvar r_detailTextures EQ 0
sv_cvar r_clamptoedge EQ 1
// Optionally also:
sv_cvar r_drawworld EQ 1
sv_cvar r_drawfoliage EQ 1
sv_cvar r_znear EQ 3
sv_cvar r_showtris EQ 0
sv_cvar r_drawentities EQ 1
sv_cvar r_showmodelbounds EQ 0
sv_cvar r_lightmap EQ 0
pb_sv_cvar rate IN 2500 25000
Players using a setting below 2500 will be very jerky and possibly forcing warping or making
themselves very hard to hit. 2500 is the default for 56k modems and really is very low, a 56k modemer
should really try 3000 even on a poor 4kps connection to get better gameplay. Maybe more of an
issue is scripts setup to change between rate settings, using a low setting while reloading to minimise
weakness. 25000 is the upper limit as the Q3 code itself has a cap of 25000. A broad range of rate
settings are therefore allowed to cover all those perfectly reasonable while not allowing those which
are unnecessary.
41

Page 42
Clan-related organisations should consider 3000 at a minimum, or if you would rather have players
who have at least an ISDN-equivalent connection, then 5000 should be the lower value, to allow some
room for low-quality voice comms. 56k players can play fine (better!) with rate 3000, but on a public
you cannot really expect these players to have a clue about changing the default connection settings
by opening the console and typing in commands.
Note another possible misuse of the connection settings is to make ping look very bad, in order to
demand clanwar takes place on a server where they have an advantage, rather than the one best
overall.
Note: connection setting restrictions are possibly unnecessary for servers running ETPro with
b_antiwarp 1. These restrictions should not cause any negative side effects however. Further, a large
portion of players perceive issues with low connection settings, so it's probably a good idea to leave
them on even if just to hedge your bets, satisfy ignorance or whatever.
Revision, 22/4/5: increased the minimum rate to 3200 for ETPro restrictions only. This should be fine
for 56k modem and ETPro's restriction system will automatically correct any lower values, so this
restriction range not allowing for a default value should not be any problem. I'd suggest 7000 for public
servers if you don't care about 56k players or ISDN'ers having voice comms.
pb_sv_cvar snaps IN 20 40
Snaps should only be 20 or 40, nothing else makes any sense to use. If you want to know what snaps
actually does, lets quote reyalP, who is also backed up by Bani and Rain in this convenient thread:
Snaps is how many snapshots you want the server to send you, per second. The server can
only generate a snap each server frame, since a snap is defined by the state generated in the
server frame. So for the server to send you more than sv_fps snaps wouldn't make any sense.
Now, the ET code has bee known to do things that don't make sense, but if it did something
dumb like sending you 2 identical snaps per frame, it should show up in network traffic and
likely weirdness on your client. By observation, it doesn't.
Since sv_fps should definately always be left as 20, it only makes sense for players to use snaps at
20.
[...] there will definitely be problems (some not necessarily visible) if sv_fps is not set to 20. We
definitely now recommend that all servers (especially league servers) run with sv_fps 20 set.
- SD lead game designer Loki
However many players seem to prefer 40 anyway (perhaps due to the placebo effect?) and if it's at 40
it should not be any problem for anybody else, so you imght as well let them use it. At 10 the player
42

Page 43
may be somewhat warpy, but you might want to allow it if your server specifically caters for dialup
users (dialup users should still be able to use 20 without problem, but 10 may play better for them).
I am aware of various supposed literatire on the topic giving various contrasting explanations of snaps,
most of which also contradict each other:
According to the Keen cvar page, which for starters is Quake3, says "server run[s] at 40Hz, so use 40,
20, or 10". Another interpretation which basically amounts to the same thing as far as this article is
concerned is that sv_fps is always set to 20, and the client's snaps should be a multiple of the server's
sv_fps, see Upset Chaps. A further interpretation says client's actual snaps will reduce (but cannot
increase) to server's sv_fps, so players who have the bandwidth should set snaps 40 even if a server
has set sv_fps to 30, for example. I'm yet to see a Wolf server running sv_fps at anything other than
20 however, if you DO change it on your server then consider setting pb_cvar snaps IN 40, maybe, but
expect a lot of players to be getting kicked.
Even if you subscribe to these Quake3 snaps explanations, there is a common denominator which still
results in there being no apparent reason for players to use a snaps setting other than 20 or 40.
Note: connection setting restrictions are possibly unnecessary for servers running ETPro with
b_antiwarp 1. These restrictions should not cause any negative side effects however. Further, a large
portion of players perceive issues with low connection settings, so it's probably a good idea to leave
them on even if just to hedge your bets, satisfy ignorance or whatever.
Note: if you specifically want to target your server towards 56k players, you could consider allowing
the minimum snaps value of 10, which can reduce the strain on their little bandwidth. It's not
something I'd generally recommend, but perhaps useful in specific circumstances.
pb_sv_cvar cl_maxpackets IN 15 100
A third connection setting, and again the reasons are associated with laggy, warping players. the
maxpackets setting, as the name suggests, sets "set the transmission packet size or how many
packets are sent to client" (Keen). The higher your maxpackets, the more is sent and the smaller each
packet of data is - hence, the more frequently they arrive. Each packet however wastes some of your
rate in the form of for example packet headers, so players on a low rate setting (modemers) should
have a fairly low cl_maxpackets setting. Since the packets go both ways, players on low maxpackets
will not only find other players are jerky to them, but all other players will also find this player to have
jerky movements, which can make them hard to shoot. If that sounds reasonably easy to understand,
there's a contradictory explanation of cl_maxpackets on Upset Chaps, but the end result is still
cl_maxpackets IN 15 100: "the default setting for cl_maxpackets is 30, usable range is 15 to 100 on
the Internet", although there is a caveat in what appears to be an edited update "maximum 125 under
43

Page 44
[Q3] point release 1.32 or above", and ET does appear to include the Q3 engine update related to Q3
1.32 point release.
Whichever you buy into, 15 is the default setting for "modem", and there is no good reason for any
players to use a lower setting, infact most modem players should try a higher setting to around 20-30
anyway, and see if it works better for them. In a cup or league environment where good connections
are more important -- and players are much more likely to have them -- cl_maxpackets IN 30 100 is
probably a better setting, although an upper limit of 125 is arguable. Modem players participating in
clan play are also likely to understand how to adjust their settings appropriately.
Note the punkbuster.cfg provided with ET suggests IN -15 100: the -15 can safely be assumed to be a
typo!
Note: connection setting restrictions are possibly unnecessary for servers running ETPro with
b_antiwarp 1. These restrictions should not cause any negative side effects however. Further, a large
portion of players perceive issues with low connection settings, so it's probably a good idea to leave
them on even if just to hedge your bets, satisfy ignorance or whatever.
Revision, 22/4/5: increased minimum to 20, to equal server snapshot frequency. I'd only recommend
this by default when using ETPro's cvar restriction system however, since a default setting is outwith
this range (ETPro will adjust the cvar fo rthe client).
pb_sv_cvar cl_timenudge IN 0
Timenudge can be unpredictable when set positive or too much negative. In theory should not have
any affect upon how they appear on other player's screens or indeed the server, but no reason in any
case to have this cvar set to something outside -50 to 0. See Alternate Fire's Unlagged FAQ to clear
up some misgivings about timenudge, if you want to take their word for it. Upset Chaps also describes
timenudge as "client side prediction", with no hint that this setting can affect other players in any way.
Excessive info (if you're inclined to presume it is remotely accurate) on timenudge can also be found in
this document which at first glance appears to claim to all be written by arQon, but on closer inspection
it seems only the lower part is and that the top part is someone else's interpretation based on that.
Going on the Unlagged FAQ, allowing -30 to 0 actually seems most sensible use for tweakers, but
there doesnt seem to be any real issues with -50 to 0 either.
However, before you get lost in the myrad of conflicting crap about timenudge, be aware that in ET the
norm is for servers to enable antilag coding. This coding compensates for the player's ping, and does
it well. Although the way it works is not particularily significant, only how effective is significant, I am
led to beleive that whereas normally it would assume all actions are taking place at the moment it is
performing the relevant calculations, it instead calculates based upon the assumption that data it
receives is at least "ping" duration late.
44

Page 45
If you bothered to read anything about timenudge, you've probably realised Antilag makes "tn"
somewhat redundant. Players should not use timenudge on antilag servers, as there would be
timenudge prediction on top of the ping compensation of antilag. Combine this with the widespread
perception (prejudice?) that timenudge can be used to cause the player to warp in a matter difficult to
shoot at -- a perception that conveniently ignores the fact that any player is more likely to use
timenudge as a result of a poor 'net connection, rather than to cause one -- and the suggestion is
therefore to restrict this cvar to equalling nil. However, were antilag coding be not used, the
recommendation switches to -50 to 0 (even though players are perhaps best to confine themselves to
between -30 and 0), or just go with whatever results in the least whines like everywhere else.
Note: connection setting restrictions are possibly unnecessary for servers running ETPro with
b_antiwarp 1. These restrictions should not cause any negative side effects however. Further, a large
portion of players perceive issues with low connection settings, so it's probably a good idea to leave
them on even if just to hedge your bets, satisfy ignorance or whatever.
pb_sv_cvar cl_freelook IN 1
Associated with scripts to lock the mouse at headheight, moving only from side to side. This setting is
perhaps overly zealous since some players presumably do still like moving with the mouse DooM I
style, but at least at one time there was much hype about scripts setting the crosshair at headheight,
locked on the vertical axis so aim consists of side-to-side movement.
Update: this cvar could be useful for undesirable scripts (no-recoil, mortar) if allowed 0.
pb_sv_cvar cl_yawspeed IN 0 140
pb_sv_cvar cl_pitchspeed IN 0 140
These restrictions counter some "mortar bot" scripts which have been made to essentially automate
the targeting with the mortar. There are some other suspect uses of the cl_yaw/pitchspeed cvars but
the mortar scripts are of most concern, and anyway the other things seem to be tackled between these
restrictions and cl_freelook IN 0.
cl_pitchspeed sets the speed that the player looks up and down if using the keyboard keys for looking
up and down, while cl_yawspeed sets the speed for looking left and right. However the commands for
these keys, (+lookup, +lookdown, +left & +right) also work in scripts to automatically line up and set
the angle of the mortar weapon. The scripts are not particularily straightforward to use, for example
they only work from set positions and have to start from the correct angle and whatnot, requires the
user to tweak for their FPS settings, plus they are also inflexible in that of course they will only target
the pre-made target locations.
With free reign over cl_pitchspeed and cl_yawspeed, the mortar bots can be fairly reliable, fast to
target and quite deadly. The scripts can be defeated entirely by only allowing these cvars to have the
45

Page 46
value of 0, and this is currently used in European leagues. I've relaxed the reccomendation here to
allow between 0 and the default of 140 because some players do like to play the mortar one-handed
on a ciggy break, for example, and the maximum speed of 140 still makes the mortar scripts less
reliable (and crucially, at least as slow as a human, yet still nowhere near as flexible and skilled as a
talented mortar player).
Further, 140 being in the allowed range means it will not be a problem as a Punkbuster-enforced
restriction: 140 is the default value and so if 140 is not allowed then players would have to manually
change their settings or be kicked from the server. When using ETPro to restrict cvars then going with
the League's restriction of 0-only is more palatable, since ETPro will force cvars into the allowed range
and there's no problems.
pb_sv_cvar m_pitch OUT -0.015 0.015
pb_sv_cvar m_yaw IN -0.022 0.022
These can be used together to lock the mouse at headheight, or at least make the mouse far less
sensitive on the vertical (pitch) axis than the horazontal (yaw) axis. The settings work in relation to
each other so it is necessary to set these to ensure m_pitch is at least 2/3 of what m_yaw is set to.
Default for both is 0.022. If this seems unclear, and especially if you are wondering why it isnt
pb_sv_cvar m_yaw IN 0.022, check this page I scribbled up, has MSPaint illustrations and everything.
pb_sv_cvar cg_bobup IN 0 0.005
Ahaha, the one cvar which really can be used as a clear cheat. When set to 0, a common "tweak", this
cvar simply eliminates the little "bob" you get when walking along, simulating the up-down-up-down
view when walking along. Some players find it more natural with the bob, some find it makes them feel
sick, others just find it that tiny bit easier to aim without any bob. The difference really is subtle though.
Both the default 0.005 and 0 are hence perfectly reasonable, and any setting in the middle is just that,
same thing but a bit less of it.
Problem? When set to negative numbers, it has the effect of bobbing down - down through the floor.
Unfortunately, when looking from under the floor, you can look right through it and into other rooms. A
"floorhack" which although very inconvenient (to say the least, you try it off-line) but you can script it to
a toggle, quite a bonus for clanwar in particular so you can determine other team's tactics. Really is
little to no use for 1v1 (again, try it offline and you'll see it's impossible to aim like that - and no you
cannot shoot through the floor you're looking through) and unlikely to be much benefit for public play
where standing still and listening, waiting or leaning tells you more.
pb_sv_cvar cg_errordecay IN 100
Set very high this can cause a wallhack effect, similar to negative cg_bobup but through walls rather
than floors. Note the setting's effects probably cannot be simulated offline. Although no known exploits
46

Page 47
exist with cg_errordecay between 0 - 100, there is also no known justification for having cg_errordecay
at anything other than it's default value of 100.
Update: According to Bani this cvar isnt necessary when using ETPro, but there doesnt seem to be
any reason to remove it either. Bani also noted no errors noticed until cg_errordecay exceeded 500.
pb_sv_cvar cg_shadows IN 0 1
Having 0 shadows a common tweak, note shadows are only the utterly pointless little round blob under
players, not shadows cast by buildings or whatever. Setting shadows at >1 mixed with r_stencilbits 8
however can be very buggy and they can be drawn through walls, giving the player notice someone is
waiting for them. Actually, r_stencilbits is a very buggy cvar and it is hard to make this work, but there
is no reason to have cg_shadows at anything other than 0 or 1 so a simple cost-free PB cvar
restriction.
pb_sv_cvar cg_fov IN 90 125
FOV below 90 could be used as a zoom function, but is cheat protected anyway. In RTCW, over
approx 125 allows in a couple of specific positions a minor wallhack effect, an example on RTCW is if
you lean in the right place behind the forward bunker door on mp_beach you can see players getting
near and run around to shoot engineers. I'm not actually aware of any such places in ET, but I havent
looked extensively and it does seem a bit silly when players get excessive peripheral vision (at the
expense of long range visability).
A few players actually report better fps with the higher FOV, presumably something to do with the
scaling at distances, since a lot more of what is onscreen appears further away. Most servers seem to
allow either 90-120 fov, or 90 to 125, basically same thing so I suppose the 125 would actually be a
more sensible upper limit. Note all the other screenshots are taken with FOV 107, which I use normally
and much prefer over 90 due to the feel of greater speed that is caused by the perspective it makes
(no, it doesn't actually make you any faster at all).
There is no definite need to restrict this cvar in ET, but a sufficiently large majority of players do
appear to feel it is desirable to have some limit upon the field of view of players, on the basis of the
increased peripheral vision. It seems very few players - if any - prefer a fov greater than 125 anyway,
so while there is little "scientific" justification for the restriction, also there seems to be negligible
negative impact of restricting this cvar to a reasonably flexible range: between 90 and 125.
pb_sv_cvar r_flares IN 0 1
Flares set above the default 1 can show dynamic lights through walls, i.e. can actually see the yellow
of dynamite being put down from very far away and through several walls. Also makes the gunflash of
47

Page 48
shooting players much more noticable. flares at 0 is a tweak but only serves the player a
disadvantage, a tradeoff for a little fps. On older cards dynamic light actually does take a fair bit of
rendering, older cards do not support it in hardware or do not support it very well in hardware - GF2
does it "ok" and GF3 and up really wont notice any detrimental effect on FPS of ET's dynamic lights.
Screenshot shows r_flares at 3 with the flare of dynamite being put down at the fueldump, visble from
inside the building nearby. Hardly a big advantage, but a couple of seconds advance warning just
might be enough to change the outcome of a clanwar, and there is no legitimate reason to have this
setting above 1 anyway.
pb_sv_cvar r_primitives IN 0 2
"r_primitives 3” causes bizarre texture rendering problems in RtCW and ET, which could potentially be
used to make players higher contrast in the distance.
pb_sv_cvar r_nv_fogdist_mode INCLUDE NV
remove: r_ext_NV_fog_dist
this doesnt work the same in ET anymore. see r_nv_fogdist_mode
add: pb_sv_cvar r_nv_fogdist_mode INCLUDE NV'
this is the correct fog check for ET. "
pb_sv_cvar r_detailTextures IN 0
r_detailTextures 1 combined with other settings creates a fullbright affect. Debatable as to the
necessity of this restriction, since in reality very little tweaking is required to be able to see right up to
the fog and into shadows, r_detailTextures 1 makes it rather more retina-burning and player's stand
out more obviously against the plain white background.
Detail textures is an option in the in-game menu, and I think r_detailTextures 1 is also default... Very
debatable restriction, I'm 50:50 on this one - maybe 60:40 against for PB method of restriction (at least
the ETPro method wont kick).
pb_sv_cvar r_clamptoedge IN 1
On ATI cards setting this to 0 removes fog, improving long range visability. The inclreased visability is
not as extreme as might be assumed, as the game still clips away everything just a little further away
than the "wall of fog", however it is further away, and makes players who would otherwise have been
in partial fog much clearer (fogging is partially gradual).
48

Page 49
Arguably this would be a convenient setting for a FPS boost, but since there is a clear and significant
unfair visability advantage -- and worse, it is not available to all players -- then it should not be allowed.
pb_sv_cvar r_drawworld IN 1
pb_sv_cvar r_drawfoliage IN 1
pb_sv_cvar r_znear IN 3
pb_sv_cvar r_showtris IN 0
pb_sv_cvar r_drawentities IN 1
pb_sv_cvar r_showmodelbounds IN 0
pb_sv_cvar r_lightmap IN 0
pb_sv_cvar cg_tracerlength IN 160
pb_sv_cvar cg_tracerSpeed IN 4500
pb_sV_cvar cg_tracerwidth IN 0.8
pb_sv_cvar cg_tracerchance IN 0.4
These are cheat-protected and/or hardcoded cvars, but there are hacks available which can bypass
the cheat protection. Punkbuster does now (by default) check and kick for some cheat protected cvars
being out of the allowed range, but not all of them.
This is not an exhaustive list of cheat-protected cvars that PB does not kick for by default, but these
are the most "interesting" ones that are worth ensuring are enforced. That is, of those I've checked. I
cant say I've done the mammoth task of going through anything like every single cheat-protected cvar
to find out every possible naughty effect and then going testing to see wether or not PB kicks for it.
Further still, some cvars may only be suspect when in combination with another cvar, and some cheat-
protected cvars have different values depending on the setting of certain 100% legit cvars.
There is no good reason why any of these cvars should be at any other setting, so it would be prudent
to include them in the cvar restrictions. Note I advise against banning players for any cvar violations,
and this includes these cheat-protected ones. Without hacks, or any intention of cheating, it is possible
to set some cvars to a different level than "allowed", but the game will only actually use an allowed
setting, so it is possible some players will be kicked who were not intending to cheat. Also, the
pb_sv_cvar enforcement is very strong so there is no concern of a player using any other cvar hack to
bypass the detection.
Evenbalance said they are still working on adding more cheat-protected cvars by default, so hopefully
adding these restrictions is only needed in the short to medium term - although for PB other issues like
compatibility and detecting hacks rightfully take priority.
Note in ETPro mod cg_tracerlength IN 160; cg_tracerSpeed IN 4500; cg_tracerwidth IN 0.8 and
cg_tracerchance IN 0.4 are pointless restrictions, as when playing online in etpro 3.x.x, these cvars
49

Page 50
are hardcoded so it doesnt matter if players hack them or not -- it will have zero effect. so theres no
point to limit them in either pb or etpro.
Update 12th March 2005: At the previous time of writing, cvar hacks ("unlockers") were available and
of concern. More recently however I've not seen any on cheater sites and they are not really of much
concern anymore. The above checks shouldnt cause any issues for any bona-fide players, so I neither
strongly encourage nor discourage admins from including the above restrictions - I'd say I'm mildly in
favour of keeping them.
Dubious Cvar Restrictions
pb_sv_cvar cg_atmosphericeffects IN 1
I beleive this setting should not be used as the rain and snow really makes no difference in visability at
all, yet removing it can have a very significant effect on fps on some systems. The latter screens show
the most snow on screen I could find, and you do not have any advantage from removing the tiny
snowflakes. Called them rain/snow 0/1 for simplicity.
pb_sv_cvar com_maxfps OUT 0.00001 40
In RTCW, FPS affects the sniper rifle recoil, so you would restrict this to limit how much players can
force very little recoil. Anyone is a eejit to set maxfps below 40 anyway (use 43 if you get this low fps),
so there isnt really a reason not to have this - it doesnt prevent anyone actually getting under 40fps,
only forcing it so.
However, in ET sniper recoil is NOT affected by FPS, so there isnt any need for this restriction.
cg_zoomDefaultSniper IN 0 125
In RTCW, cg_zoomdefaultsniper set to very high levels can give a wallhack-like effect when using
binoculars. At the edges of the screen the player can see through the walls at certain points (similar to
cg_fov in that game).
In ET however, the "fisheye" view still happens but it does not allow players to see through walls
(presumably for the same reason cg_fov does not allow wallhack effect in ET). There is no necessity
for this cvar to be restricted in ET, although arguably it is reasonable to restrict it in order to be
consistent with the reasoning behing restricting cg_fov.
pb_sv_cvar r_softwareGL IN 0
Again quoting SCDS_reyalP from a SplashDamage forum thread:
50

Page 51
Curiously, r_softwareGL doesn't seem to be a valid cvar. It may be a typo of r_allowSoftwareGL,
which is. This permits the game to use software rendering if no hardware support is available.
Normally, quake3 games just quit with an error if there is no hardware opengl. I don't know what
exploits are associated with allowing software rendering, aside from single digit frame rates. Probably
some opengl hack, but you can do that without software gl.
Unless anyone has something to add to this, the cvar restriction seems pointless (although it also
appears that using it doesnt cause problems for anyone anyway, so feel free if you want to be uber
prudent).
pb_sv_cvar r_allowextensions IN 0
This cvar is included in the punkbuster cvar restrictions supplied with ET, although they do note in all
the ET server .cfg's they are just examples, and anyway I think these cfg's are simply provided by nice
people from the beta and/or open ET Test, some of it from cfg I uploaded on SD forums, they're not
made and provided by SD programmers.
I have no idea what this setting actually is for, but it does cause problems - especially it seems for
some Radeon (Mobility?) users. A cvar restriction that appears to have no use and yet causes serious
problems is a bad one. If anyone does know of a misuse of this please leave a comment.
Maybe more light on the setting provided by SCDS_reyalP in a vaguely relevant thread on the
SplashDamage forums:
r_allowextensions lets the renderer use opengl extensions. So this config requires users to have
extensions enabled. Normally opengl extensions are a good thing (you can get faster performance,
better eyecandy etc) but some drivers have buggy implementations of the extensions. So requireing
them to be enabled may prevent some people (mostly with older or oddball video cards) from playing.
And from another:
There are cvars to turn on/off most of the extensions individually, and these are mostly not restricted
by PB. [...]
Most of the extenstion cvars will be of the form r_ext_blahblah with 1 being enabled, and 0 being
disabled.
I don't quite understand why servers require gl extensions in the first place. It seems odd that there
would be an exploit based turning extensions OFF.
51

Page 52
It would appear there may be driver hacks that can make use of extensions, or perhaps more likely
fear that their might be.
pb_sv_cvar r_rmse IN 0 75
Update: This cvar no longer does anything, as of the 1.02 patch (thanks Bani), so is no longer
included in the recommended set of cvar restrictions. However, it still works in prior versions of ET,
and the restriction should be included there, either way even on 1.02 servers using the restriction
should not cause any problems - it's just completely pointless.
Increasing RMSE can have a significant FPS increase on some systems, at the expense of textures
being very blurred (quite similar to picmip, although note this affects HUD and console text also). High
RMSE in RTCW had an effect similar to picmip 5, of removing leaves from tree's (specifically on
mp_ice). Checking it on ET and it really doesnt seem to have anything like as significant an effect,
compare the screens - yes it looks a lot uglier, but does it provide any visability advantage? Perhaps
there being less patterns on the screen makes players stand out a little more, by reducing RMSE the
effect is much less pronounced. Having checked this more throughly I think I'm now going to allow low
(e.g. max of 75) use of rmse.
For the screenshots, bear in mind the comment I made earlier, I am already running picmip at it's
highest of 3 so the blurring effect of rmse is shown at it's maximum in these screenshots.
pb_sv_cvar r_picmip IN 0 3
pb_sv_cvar r_gamma IN 0 3
pb_sv_cvar r_intensity IN 0 1.5
pb_sv_cvar r_overbrightbits IN 0 3
pb_sv_cvar r_mapoverbrightbits IN 0 3
These settings are relics of cvar restrictions from RTCW, and are either cheat-protected or hardcoded
within these ranges. There is a case (or more usually a flamewar thread) to be made for setting them
in more restrictive ranges, but this is 100% opinion based; the only objective judgement is that there is
no exploit associated with these cvars.
In my personal opinion, the ranges for these cvars as restricted in the game engine do well to balance
the arguments about tweaking for performance vs. advantage; these cvars are not an issue like they
were in RTCW. It's worth noting that more can be done to tweak brightness using external programs -
ones that are popular for bona fide reasons.
As noted under other cvar restrictions which are recommended on this page, there are hacks which
bypass the game's cvar cheat-protection, but these cvars are hardly of any concern compared to other
52

Page 53
cheat-protected cvars. That said, it should be noted that some of these cvars are arguably more
suspect than others, and it is a call of judgement and personal preference.
Hence, I consider adding these cvars to the PB restriction as pointless unless you want to be more
restrictive, and even then I consider there being dubious merit in doing so.
pb_sv_cvar r_subdivisions IN 1 4
Put simply, r_subdivisions controls how "curvy" curves are. The higher you set this, the more they look
just like a bunch of straight lines - though at least in theory there is a small FPS increase like this.
The problem in Quake3 is high subdivisions can cause portions on map that are normally nice joined
up curves to have big gaps that you can see through.
It seems there are a very few locations where there are some gaps which can allow players to see a
sliver through a wall, notably on Oasis by the arch near the South Gun. This makes it possible to
soundly argue either way wether to restrict this cvar, on the one hand there is at least one location
where it could be exploited with significance, on the other the availability of exploiting it is pretty small
and the cvar is a widely used one as an FPS tweak. Unfortunately, while there seems to be relatively
few settings that result in the textues being pulled apart, they are spread around so really it's a case of
restricting between 1 and 4 or not at all. My opinion on this is that due to the widespread use of the
relevant setting as an FPS tweak, unless major leagues in your area start restricting for this then don't
bother, unless perhaps you already go for a highly restrictive approach towards settings in which case
adding this would also make sense.
Some further discussion on this cvar can be found in, for example, this thread on ETPro forums; if
you're interested in further investigation of r_subdivisions then you might want to experiment with
r_lodcurveerror & r_lodcurvebias at the same time. Note for custom mappers: anywhere it does occur
on a custom map, the mapper should "Patch meshes which touch should have their vertices lined up
exactly, and be func_grouped to they change LOD together. Or compile with -patchmeta." (quote from
ReyalP).
r_subdivisions 4 - default, no see-through
r_subdivisions 8 - small see-through
r_subdivisions 40 - wider see-through
r_subdivisions 80 - no see-through
r_subdivisions 120 - no see-through
pb_sv_cvar cg_autoaction IN x
53

Page 54
This is used in the planetwolfenstein.de ET cup, presumably as a method of ensuring all players take
demo's and no pissing about. Probably works well for them in their specific cup setting, but generally
this cvar restriction is not recommended, and is really bad for a public server. Just as a note to show
how utterly irrelevant they are for public server, this is what the autoaction settings do:
1 - Start a demo at the start of the round
2 - Take a screenshot at the end of the round
4 - Save game stats to a file at the end of the round
3,5,6,7 - Add up the above for multi-function, e.g. "7" will perform 1+2+4.
pb_sv_cvar r_ext_texture_filter_anisotropic in 0
pb_sv_cvar r_ati_fsaa_samples in 0
pb_sv_cvar r_ati_truform_tess in 0
pb_sv_cvar r_ext_ATI_pntriangles in 0
According to the TWL when they adopted them for rtcw: "Disable due to the latest ATI cards can use
values for wallhacking". They later dropped them because they couldnt figure out how this wallhack
was meant to be done. Further, these restrictions caused significant problems because the middle two
are restricted against the default settings (even for players with Nvidia cards).
I dont have a ATi card so cannot have a go at testing myself, although to hazard a guess I would say
r_ext_texture_filter_anisotropic and r_ati_fsaa_samples are listed there because FSAA is known to
stop screen capture working with ATi drivers prior to Catalyst 3.8. Hence use of FSAA would prevent
PB screen captures from working. r_ati_fsaa_samples and r_ati_truform_tess is thought to be involved
with a wallhack effect that can appear with use of a messenger, although since the effect only occurs
when receiving a message and doesnt last for long, the ability to exploit it is somewhat debateable.
I welcome any information how these can be used as a wallhack (plenty of admins seem interested
too), though these cvar restrictions would still have a distinct downside (certainly for public servers)
since they go against the defaults - less of a problem with ETPro method of restrictions than
Punkbuster's.
54

Page 55
100% Pointless checks
These settings are seen often in ET cvar restriction setups, presuambly just copy & pasted over from
RTCW's settings. There is no need for any of the following settings, although they are so pointless
they do not actually restrict players doing anthing they might want to do either, so nobody should really
care if you use these or not.
pb_sv_cvar r_showNormals IN 0
pb_sv_cvar cg_thirdPerson IN 0
pb_sv_cvar r_wolffog IN 1
These are cheat protected cvars, and although there are hacks to bypass the game's cvar cheat
protection, PB itself kicks players when these cheat-protected cvars are outside normal settings
(violation #20005), so there is no point adding them. Earlier versions of PB was not kicking for any
cheat-protected cvar violation, unless it was specified by the admin, but now it seems they have fixed
the problem and PB does indeed now kick for many cheat-protected cvars being outside of the
allowed ranges - but not all of them, hence there being another set of cheat-protected cvars in the
recommended list.
pb_sv_cvar cg_bobpitch IN 0 0.002
pb_sv_cvar cg_bobroll IN 0 0.002
pb_sv_cvar cg_bobyaw IN 0 0.002
These settings do not have any exploit effect, unlike cg_bobup.
pb_sv_cvar r_picmip2 IN 0 3
Cvar does not exist in ET.
pb_sv_cvar r_uifullscreen IN 0
Cvar does not remove fog, or have any other known exploit effect in ET (unlike rtcw).
pb_sv_cvar cg_reticletype IN 1
Cvar does not exist in ET.
NB: The cvar is listed on the server cfg at TWL webpage, but is NOT used in their actual cfg - which
comes with ETPro. It appears to be the latter that is correct, at time of writing, and the cvar restriction
is not necessary. In rtcw the cvar at 0 removes the binoc HUD (which also makes the
cg_zoomDefaultSniper exploit more effective).
55

Page 56
pb_sv_cvar r_ext_NV_fog_dist IN 0
Cvar does not exist in ET. Instead use pb_sv_cvar r_nv_fogdist_mode INCLUDE NV (see above).
pb_sv_task 300 600 "pb_sv_cvarsrch com_maxfps"
pb_sv_task 600 600 "pb_sv_bindsrch com_maxfps"
FPS does not affect the sniper recoil in ET, and many players have little scripts to toggle FPS caps
anyway, usually because some maps are much more friendly to slower systems than others (e.g.
Goldrush is easier on systems than Radar). 99% of admins who copy and paste the (poor)
Evenbalance suggested cvar restrictions would not be checking logs for it, nor would have much clue
about interpreting it. A similar restriction sometimes used on RTCW OSP restrictions involves
"forcefps", which appears not to exist in ET. Setting cvar restrictions on forcefps by the way does not
work even in RTCW, "forcefps" is a command and not a stored cvar.
56

Page 57
Conclusion
I recommend all admins running Punkbuster on their servers to include the cvar checks that are shown
above, for the reasons given.
I suggest admins do not use the "dubious" or "100% pointless" checks, although most of them will not
cause problems so those ones hadly matter. I recommend more strongly however that admins do not
use the couple of dubious/pointless checks that do cause problems for people. It seems these checks
are making life difficult for some players for no good reason whatsoever.
Just how much value and trust you want to place on the articles used as backup (namely the Keen,
Upset Chaps and Unlagged FAQ documents) is up to you, especially since the connection
explanations given in them are sometimes contradictory, but all the suggested cvar restrictions here
are fairly conservative and I beleive are supported by a prudent view of each of these articles.
I hope this article nudges admins towards using a standard punkbuster cvar restriction config, which
comprahensively removes cvar-related exploits yet aviods causing problems for anybody. I have
shown why the Evenbalance and ET suggested restrictions are imperfect, and where many ET cups
have been inefficient - although not actually causing problems. Perhaps equally important, a standard
set of restrictions that are used widely has the best chance of being understood, allowing players to
know what is and is not acceptable by the community in general. Note that the recommended
restrictions are thoroughly pre-tested on a couple of busy public servers.
Any omissions, errors, or any other contructive comments are welcome below by email to dg at jolt dot
co dot uk - or try the enemy territory forum. Already several such feedback has been incorporated -
thanks particularily SCDS_reyalP, Vio, Rain, Bani, shakes.
57

Page 58
Admin Guide
I generally consider there to be five main elements to adminning a server. This guide breifly covers
three of them, since the other two are really outwith the scope of such a guide - general maintenance
of the host machine is a task for your host's support services and anyway has little specific to ET;
while the decisions to be made regarding the approach you wish to take for implementing and
enforcing your chosen 'rules' is something soley up to you.
The other three, which are covered here, are:
1. RCON - Remote CONsole, the most powerful admin function
2. REF - The Referee functions built conveniently into ET
3. Host Access & Software - Applications used for access to the host machine include FTP,
VNC, SSH...
Further, two related items are covered in-depth on other pages:
Banning Players
PB Player Power
(Apologies for the lack of continuity between pages, some are much more recent than others.)
Please note, it may seem convenient to add a line to your client's autoexec.cfg (or other config) so
that rcon or ref passwords are always set when you join, or perhaps you might assign passwords to a
keybind for a button-press login (thanks pH*Deus). However, do not do this, as it would be possible for
miscreant admins of any other server you join to discover the passwords. All Seeing Eye has an option
to input a rcon or general password in the "properties" box of individual servers, use of this should be
fine aslong as you only put it in the properties box of your individual server(s). At a stretch you could
have a bind to exec a .cfg which sets the password, just ensure you do not exec that file while on other
servers.
58

Page 59
Remote Console
RCON is the most powerful control over the running of the server. It allows control over all of the
server settings and functions once the server is running - you can change any setting, ban any player,
even shut it down. That said, in practice it is only really convenient for exercising general control and
making minor adjustments while keeping the server running, but you should be able to figure it out if
you really want to do something more complicated. Obviously, you should only give the RCON
password to most trusted people who you wish to award such control. It's generally a safe bet that
anyone you dont know actually asking for the password is trying it on and should not be given it.
Enemy Territory RCON
Commands & Usage
by DG www.rtcw.co.uk (last updated 7th Jan '05)
Log-in & Passwords
Be very careful with syntax, in particular remember the "/" or you will global-chat the passwords!
/rconpassword <password>
Log in as RCON admin, required for all RCON useage
/rcon rconPassword
<newpassword>
Change the rconpassword
/rcon sv_privatepassword
<newpassword>
Change the private (reserved) slot password
/rcon g_password <newpassword>
Set - and apply! - the password required to connect (set to "" to
disable)
Info, players etc
/rcon status
Shows various info about players, including clientnum
/players (no rcon)
Shows various info about players, incl. <pid> which is used with
REF
/pb_plist (no rcon)
Various PB-related info about players, incl. PB slot number
<PBSlot#>
/cheaters (no rcon)
ETPro AntiCheat status. /cheaters <pid> for detail. Req. ETPro
mod
Kicking & Banning
/rcon say "no spawnkilling allowed"
The specified text will be given as a server message. Useful for
issuing warnings for breaking rules.
/rcon clientkick <clientnum>
Kick specified player, (/rcon status for num) [use PB instead]
/rcon kick <playername>
Kick specified player (use PB instead)
/rcon ban <playername>
Ban specified player (use PB instead)
/rcon pb_sv_kick <playername>
Kick player with PB, by name
/rcon pb_sv_kick <PBSlot#>
Kick player with PB, by PB slot number (/pb_plist)
/rcon pb_sv_ban <playername>
Ban player with PB GUID, by name
59

Page 60
/rcon pb_sv_ban <PBSlot#>
Ban player with PB GUID, by PB slot number (/pb_plist)
/rcon pb_sv_banguid <guid>
Ban a specified GUID (can use first 8 digits)
Managing Bans
/rcon pb_sv_banlist
Shows most recent bans, with a ban slot number (banSlot#)
/rcon pb_sv_unban <banSlot#>
Removes the specified ban, by the ban's number
/rcon pb_sv_unbanguid <guid>
Removes the specified ban, by the GUID
/rcon pb_sv_banempty
Empties all bans from memory (does not delete them from file)
/rcon pb_sv_banload
Loads bans from the pbbans.dat file
/rcon pb_sv_updbanfile
Saves all current PB bans into the pernament pbbans.dat. Only
Req'd if pb_sv_autoUpdBan is set to 0.
Cheater?
/cheaters
Shows if/what ETPro IAC suspects, (ETPro mod only)
/rcon pb_sv_getss <PBSlot#>
Takes a partial screenshot from the player and saves it to the
server's "pbss" folder.
/rcon pb_sv_autoss 1
Regularily takes a partial screenshot from all players and saves
it to the server's "pbss" folder. (0|1)
Maps & Campaigns
/rcon vstr nextmap
Skips to the next map in the mapcycle
/rcon vstr nextcampaign
Skips to the next campaign in the campaign cycle
/rcon map radar
Loads the specified map
/rcon campaign cmpgn_northafrica Loads the specified campaign (“/rcon campaignlist” is useful)
/rcon map_restart 30
Restarts the map. Does not interrupt or reset stopwatch.
Optionally can specify warmup duration.
/rcon match_restart
Restarts the match. Resets stopwatch to round 1
/rcon start_match
Forgoes /ready and gets on with it.
Map Names:
oasis, battery, goldrush, radar, railgun, fueldump.
Campaign Names:
cmpgn_northafrica, cmpgn_centraleurope, (/campaignlist)
Shuffle & Swap
/rcon shuffle_teamsxp
Shuffles players around to balance it up a bit. Supposably.
/rcon swap_teams
Axis become allies and vice-versa
Configurations
/rcon exec filename.cfg
Load the specified ".cfg" file on the server.
/rcon server_autoconfig 0
Load "comp" or "pub" pre-defined settings
[no(0)/comp(1)/pub(2)]
/rcon config clanwar
Loads the specified .config file (ETPro only)
Misc. Settings
/rcon killserver
Exits the server, without quitting other running servers
/rcon g_warmup 30
Specify the warmup duration, in seconds
60

Page 61
/rcon g_gametype 3
Sets gametype: 3=SW, 4=campaign, 5=LMS
/rcon g_friendlyFire 1
Toggle players damaging teammates (1|0)
/rcon g_teamForceBalance 1
Toggle disallowing players from joining larger team (1|0)
/rcon g_inactivity 300
Kicks if player doesnt move within this number of seconds
/rcon g_spectatorInactivity 600
Kicks if spectator doesnt move within this number of seconds
/rcon team_nocontrols 1
Toggle (1|0) player-team commands e.g. Pause.
/rcon g_heavyWeaponRestriction
20
Set restrictions on heavyweapons usage.
/rcon match_mutespecs 0
Toggle spectators ability to global chat
/rcon match_readypercent 100
% of players needed to "ready" for round to start
/rcon match_timeoutcount 0
Number of (non-REF) "pause" allowed per team, per round.
/rcon match_timeoutlength 30
Duration of pauses, in seconds
/rcon match_warmupDamage 1
Toggle wether players can take damage during warmup
/rcon team_maxplayers 0
Can set a upper limit on team player numbers (0=disabled)
/rcon vote_limit 3
Number of player-initiated votes allowed per map
/rcon vote_percent 51
% of ALL players required to vote yes for it to pass
"Fun" Shenanigans
/rcon g_userTimeLimit 0
Set total timelimit for current map (0 defaults)
/rcon g_gravity 100
Modify the strengh of gravity, default = 800.
/rcon g_speed 500
Modify speed, default = 320.
/rcon g_redlimbotime 5
Specify the respawn interval duration for Axis (0 should default)
/rcon g_bluelimbotime 5
Specify the respawn interval duration for Allies (0 should default)
/rcon g_medicChargeTime 45000
Duration for refill of Medic powerbar
/rcon g_LTChargeTime 40000
Duration for refill of FOps powerbar
/rcon g_engineerChargeTime
30000
Duration for refill of Eng powerbar
/rcon g_soldierChargeTime 20000 Duration for refill of Soldier's powerbar
/rcon g_covertopschargetime
30000
Duration for refill of CovOps powerbar
61

Page 62
Referee
The Referee system provides a convenient system for general server admin and match-refereeing.
While a REF can do just about anything normally required to mamage a server on any given day,
giving out Ref is much less of a risk (than rcon) due to it being designed and controlled specifically for
it's function. Ref is also much easier to use since there is the UI menu's, and even using the console it
is much more helpful (try /ref help, for example). Both these factors make Ref ideal for the first steps of
your new admin. While Ref is less risky than rcon, the Ref function is passworded for a reason, don't
give it out unless you trust the person to be a suitable admin for your server.
ET REF Commands
1. LOGIN as ref: /ref refpassword
2. HELP remembering ref commands: /ref help
3. <PID> is left column number beside player in /players output.
Command
Syntax
Description
allready
/ref allready
Forces all players to “ready”, warmup begins
antilag
/ref antilag 0|1
Toggle server antilag. N/A in ETPro (its irrelevant)
balancedteams
/ref balancedteams 0|1
Toggle players being able to join a larger team
campaign
/ref campaign cmpgn_northafrica Load a campaign (HINT: /listcampaigns)
cointoss
/ref cointoss
Randomly chooses which team is axis/allies
comp
/ref comp
Load comp settings
config
/ref config clanwar
Load the specified .config (ETPro only)
friendlyfire
/ref friendlyfire 0|1
Toggle team-damage
gametype
/ref gametype 4
2=objective, 3=stopwatch, 4=campaign, 5=LMS
help
/ref help
Gives a list of REF commands in console
kick
/ref kick <pid>
Kick the specified player
lock
/ref lock
Prevents players joining either team
logout
/ref logout
Remove your own Ref status (ETPro only)
map
/ref map radar
Loads the specified map
maprestart
/ref maprestart
Restarts the map. Does not reset match
matchreset
/ref matchreset
Restarts the match, does reset stopwatch match!
mute
/ref mute <pid>
Silences the loudmouth
mutespecs
/ref mutespecs 0|1
Toggle spectators ability to global chat
nextmap
/ref nextmap
Skips to the next map in rotation
pause
/ref pause
Freezes the game
pub
/ref pub
Load pub settings
putallies
/ref putallies <pid>
Puts the specified player onto allied team
putaxis
/ref putaxis <pid>
Puts the specified player onto the axis team
referee
/ref referee <pid>
Give Ref status to a player
remove
/ref remove <pid>
Remove specified player from a team, into spectator
62

Page 63
restart
/ref restart
Restarts the map (not match)
shuffleteamsxp
/ref shuffleteamsxp
Shuffles teams to balance experience points
shuffleteamsxp_norestart /ref shuffleteamsxp_norestart
Shuffles teams without restarting map (ETPro only)
speclock
/ref speclock
Prevents spectators speccing either team
specunlock
/ref specunlock
Re-allows spectators to view teams
startmatch
/ref startmatch
Skips the requirement for readyup and gets on with it
swapteams
/ref swapteams
Axis become Allies and vice-versa
timelimit
/ref timelimit 10
Specify timelimit for current round (not time remaining)
unlock
/ref unlock
Re-allows players to join teams
unmute
/ref unmute <pid>
Removes the gag
unpause
/ref unpause
Un-freezes the game
unreferee
/ref unreferee <pid>
Remove Ref status from a player
warmup
/ref warmup 30
Sets the warmup duration
warmupdamage
/ref warmupdamage 0|1|2
Damage during warmup (none, enemy, everyone)
Warn
/ref warn <pid> “reason”
Give specified warning message to specified player
SemiAdmin
Semi-Admin is functionality provided with ETPro, and there is similar with ShrubET (shrubbot) and
ETAdminMod, but I generally have the view that either someone is trustable to be either a Ref, a full
RCON admin or nothing. Regardless, the various types of semi-admin are generally documented by
their authors in a way that could not be improved upon here.
Host Access
Your server host/provider will most likely give you some method to access the server host, so you
can upload maps or restart the server. This will vary from host to host, but is usually FTP and VNC or
(most likely) SSH. Occasionally you get some odd web-based interface, hopefully in addition to the
other ones.
FTP (File Transfer Protocol) is something you will find widely documented on many webpages, a
reasonably concise example being on Wikipedia. Put simply, a FTP server runs on the host machine
and allows you to connect to it via an FTP client on your machine, to transfer files between each other.
All you need is a username & password from your host, and a FTP client software. SmartFTP and
FileZilla are popular and free FTP clients. FTP is pretty easy to use as a client, put the username &
password in right and usually you're good to go, if you have problems first thing to try is swapping
Passive/Active, Auth mode (SSL, TSL etc) and more to the point check you dont need to fiddle with
your firewall.
VNC (Virtual Network Computing) is extremely easy to use. Just install, put in IP & password and
control the server machine as a desktop - you do not need to have the same OS as what the server is
running, or anything like that. You will also need FTP in addition to VNC, at least unless your host
63

Page 64
found some fancy VNC that also does file transfer. RealVNC is a well known VNC that is free for basic
use.
Remote Desktop is very similar in use to VNC. To run the remote desktop client put "mtsc" into Start
Menu>Run, or make a shortcut to "%windir%\system32\mstsc.exe". You might want to check the
options to set a fairly low resolution, 16bit colour, do not play remote computer sounds and
'Experience' 28.8k. All these do is turn off the pap and make it much faster to use.
SSH (Secure Shell) "is a program to log into another computer over a network, to execute commands
in a remote machine, and to move files from one machine to another. It provides strong authentication
and secure communications over unsecure channels. It is intended as a replacement for rlogin, rsh,
and rcp." There's loads of good documents and FAQs for this if you search. OpenSSH is just one free
SSH app.
There is a huge variety of other software you may find useful. For example...
RCON: HLSW can make it easier to perform a variety of functions, including rcon. Similarily, RCON
Unlimited can be used to send rcon commands to the server, without bothing to actually load the game
and join it - "the program is designed to be the replacement of RCON Commander, giving you many
more options and abilities". Or, try similar with All Seeing Eye: select your server, press F4 and put in
the rcon pass, then press F8 for a remote console (the options are also there if you right-click on your
server). I dont bother with any of the above except for occasional use of the ASE remote console.
Restart Scripts: FireDaemon or ServerDoc can be ran on windows servers to automatically restart
the server should it go down, or schedule other occurances.
64

Page 65
Banning Players
The easiest way to get rid of problem players is probably to simply be logged in as referee, and go
through the options to kick the player (same as voting, referee's vote always carries any vote). This
results in a 3 minute ban.
Some people have too much time on their hands, and not enough servers as good as yours. Some
people keep coming back.
pb_plist
rcon pb_sv_ban x
rcon pb_sv_banguid
The all-round best method for a pernament ban is to use Punkbuster. This bans the player using what
is basically an encrypted form of their CDKey. To use this method, if the player is still on the server,
simply put pb_plist into the console, and then look at the resulting output table in the console. You
should see the player's name you want to ban, along with other information such as a portion of their
GUID, and a slot number. Plug the slot number into rcon pb_sv_ban x to ban the player pernamently.
Be careful with this, always double check what you put into the console before hitting enter - I have a
nasty habit of letting short GUID age numbers stick in my head instead.
If the player is not currently on the server, you will have to dig through the PB logs (the ones in
PB/logs/ folder) to find his GUID. Then either plug that into rcon pb_sv_banguid
xxxxxxxxxxxxxxxxxxxxxx, or add the GUID into the pb_bans.dat file (open with notepad) with the
following syntax:
[06.18.2003 16:34:31] 0167b1e34e9a3f797083bfdeb103edc7 "newb" "81.105.34.73:27960" teamkilling
[MM.DD.YYYY HH:MM:SS] ------------GUID---------------- "name" "ip.ip.ip.ip:port" reason
All fields are optional except for the GUID, but there should be something in place. Incidentally, this
also means the other fields can be used for some sort of comment - you will find on ban share sites
that the date/time field is used to record the admin that provided the ban. If all I had of the newb was
the guid –
[ ] 0167b1e34e9a3f797083bfdeb103edc7 "" ""
On a final note, if you add a pipe ( | - on British keyboards press Ctrl+\ ) after the reason, you will give
a private reason. This is simply so you can add a private comment that will only show in the server
logs, because the "reason" field will be shown to players when they try to connect to a server that has
banned them. Or at least it should, unfortunately there is a bug in ET which is stopping Punkbuster
65

Page 66
showing the reason properly, same as often happens with a lot of automatic PB kicks. Thus the syntax
would be:
[06.18.2003 16:34:31] 0167b1e34e9a3f797083bfdeb103edc7 "newb" "81.105.34.73:27960" teamkilling | wanker
OK so this isnt nearly as great as it sounds. Since Enemy Territory is a free game, currently it is infact
very easy for players to obtain a new CDKey. At least until Evenbalance roll out hardware-based
GUIDs, or ETPro's fixed-GUID effort comes to fruition. In the mean time, to get some respite from
persistent offenders you can at least try IP banning...
Banning by IP
First ban option is to use PB GUID bans. Most people actually wont acquire themselves a new GUID
and will stay banned. Some people however do, so the second option is to ban by IP, and again
there's a choice - pb_sv_banmask or g_banips. Use the former, although I'll cover the latter. Setting it
up is easy, actually coming out with an effective ban is not.
There is a third option - the Last Resort for when somebody is really keen to screw up games on your
server. Plug IP into a WhoIs and report their abuse to their ISP. You will be surprised how many take it
seriously, all you need is a letter sent to daddy.
The first choice is covered perfectly well in the PB documentation for admins so I'll more or less quote
it:
PB_SV_BanMask "IP.Ad.dr.ess”
Permanently bans players from joining the server from the specified IP Address / Subnet Mask; for
example: issuing PB_SV_BanMask "12.34." will cause PB to deny access to all players trying to join
from an IP Address that begins with "12.34."; These bans are written to the pbbans.dat file just like
bans issued with the PB_SV_Ban command
Second choice is done well at GameAdmins. To sum:
g_filterBan 1
toggle IP banning on and off, set to 1 for g_banips to be effective?
The ET source [g_svcmds.c] says: If 1 (the default), then ip addresses matching the current list will be
prohibited from entering the game. This is the default setting. If 0, then only addresses matching the
list will be allowed. This lets you easily set up a private game, or a game that only allows players from
your local network.
g_banIPs "1.2.3.4 6.4.5.3 "
66

Page 67
variable containing the IP addresses. Note there are two fictional IPs in the example, and there is a
space to seperate them and also a trailing space. To have these bans active everytime the server is
started, you will have to include this somewhere in the configuration file - AFAIK it wont be written
anywhere automatically. Note g_banIPs is limited to around 20 IP's.
reset g_banips
empties the current g_banIPs list of IP's, so there are no IP bans loaded.
status
command to see a list of player's IP's, and other info.
Addip & RemoveIP only can be used when server is running, no good for .cfg - when you're adminning
just use the PB bans.
To obtain IPs, if you and the lamer are on the server you can use "/rcon status" to obtain IP, else IP's
are contained in logfiles, including Punkbuster logs and the pbbans.dat. when using "Status", make
sure you do not include the "lastMsg", "qport" or "rate" numbers, since the table usually isnt aligned
properly.
The hard bit is figuring out what IPs to ban.
If you check your banfiles or whatever, and notice the same IP comes up more than a couple of times,
ban it, the player is resetting his GUID. Players can also reset their IP, but youre starting to cause
more effort. After he has changed IP a few times you'll probably be able to ban the submask and kill all
his options - any player can be banned at least until he either changes ISP or moves house, the
problem is how many other "potential people" you're prepared to be the collateral damage.
Every quartile that you remove from the specified IP is x255 more "potential people". Two quartiles is
banning 255x255 = 65,025 IP addresses! Of course, many of those IP's will not be used by anyone
likely to use your server, but that is a LOT of potential players nonetheless.
I wouldnt go blocking IP ranges as soon as you get a single IP you want to ban, use patience with a
little investigative work. Keep IP's of lamers in a file somewhere, you'll be rid of the pest before long. I
suggest using PB GUID bans and then occasionally going through the pbbans.dat to spot persistent
offenders and ban these players' IP - there is a useul tool which helps with this, PB Ban Manager,
which allows you to sort by IP.
67

Page 68
PB Player Power
This PB feature provides both an alternative to the kick callvote, and an ability to "deputise" trusted
players to enable them to kick players for up to an hour, but not be able to perform RCON or Ref
funtions. PB power was never widely used in RTCW but nevertheless can be useful, but to be frank
anybody I might consider as a "deputy" would have to be someone I'd trust at least as a Referee
anyway. Note Shrub and ETPro mods give other "semi-admin" functionality which may be preferential
if you run those mods, I'm not going to cover them as they are both complcated and often significantly
changed.
Going on the default settings, players can put their "power points" against a specific player, and if 10
other players follow suit, the player will be kicked for 2 minuites. The complexity and lack of awareness
means this is somewhat unusual, and anyway the kick is 2mins more effective than a callvote. Where
admins have specified a longer duration the kick is significantly more effective, but the rarely ever
succeeds. Note players can only apply their points to a single other player at any one time. It is similar
to a vote so maybe easiest to think of it that way.
Players can put their points against a player by putting /pb_plist in the console, and taking the slot
number of the other player for use with “/pb_kick slot#
PB Power is much more useful as a feature to allow specific trusted players to kick other players,
basically a lite-admin or deputy to police your server, with minimal concern about abuse or messing
with server setup. "There are a couple of additional points of interest involving deputies. When at least
one deputy is presently connected to a game server, then only deputies may apply their power points
on that server. Other players must appeal to the judgment of any and all deputies presently
connected. Also, deputy players cannot be removed from the game server using this facility.
To set up deputies, you need an rcon admin on the server at the same time as the player you want to
"deputise", and admin can use the following setting:
/pb_plist
/rcon pb_sv_power slot# points
This gives the specifed player the specified number of points, if you give player 100 he becomes a
deputy. Details of power players is kept on the server in the pbpower.dat file.
Other settings + suggested value:
pb_sv_powermin 10
Number of power points needed to get a player kicked.
pb_sv_powerkicklen 60
68

Page 69
Minutes a power kick lasts for, 0 to 60. 0 disables PB power features.
pb_sv_powerdef 1
The power rating given to any player not specified with pb_sv_power.
pb_sv_writecfg
This saves PB settings. If you dont set this, it will not load any PB settings put in the console when
server is restarted! (Erm, actually I'm not 100% sure if PB Power is the one exception to this).
Remember if you use one ET install to run multiple servers, it will save the settings file and load it for
all servers, unless you have given individual fs_homepath's to each command line - which is
recommended anyway...
Hence, on a 20 player server ten people need to use pb_kick to kick the player for 10mins. Not really
much use, but alternatively any one of your "deputies" can kick anyone for an hour - long enough for
them to cool down and go elsewhere.
Caveat: The PB power system breaks down though because it seems in ET right now that the GUID is
being renewed (or something) for players often, so they'd lose their special powerpoints... Saying that,
I suspect a large chunk of this problem has been due to the admin setting the powerpoints but then
forgetting to run pb_sv_writecfg!
69

Page 70
About Game Modifications & Total Conversions
Loosly, game modifications are mods that add to, fix or enhance the Wolfensein: Enemy Territory
gameplay, rarely if ever having any change upon the fundamentals of the game. Total conversions, on
the other hand, make much more extensive changes, and sometimes it's not so easy to recognise the
original game underneath. Unfortunately that's not a universal distinction so sometimes total
conversion modifications will be reffered to as "mods". A third type of modification is the simple pack
mods which are a simple .pk3 file usually containing alternate media files such as 'skins' (images to
wrap onto the player models), audio files or texture images.
Game Modifications
The main mods for ET are:
ETPro (clan orientated, by Bani & team)
Shrubet (public orientated, by Shrub) - discontinued?
ETPub (shrub replacement)
"Public" and "clan" aren't particularily useful descriptions really, but indicates the sub-communities
their authors are principally aiming towards. ETPro is in fact the heavily dominating ET modification, so
well received is this excellent mod that there are many more public ET servers running ETPro than not
- nevermind practically every single clan server. The respective features of each can be found on their
websites, as can perfectly good documentation - all elements of this guide still apply when using one
of the mods, unless the mod notes changes have been made to that particular element (always
assume the mod overrules).
Generally these types of mods only add features and commands, so you can setup your server as per
this guide and then add the desired mod settings by following it's documentation (most mod
documentation will assume the reader knows what he/she is doing with the "etmain" game). Both the
mods in their default settings actually change very little to gameplay and instead just add configuration
options, features, fix a couple of perceived bugs and so on. The more significant gameplay changes
are optional and may be enabled using various settings, their documentation outlines the options.
While both ETPro and Shrub are significant Enemy Territory mods, I have only commented on
changes ETPro makes to the elements covered in the advanced server guide - this is because I play
on and run ETPro servers, not Shrub ones.
70

Page 71
Total Conversions
Major TC's released:
True Combat: Elite
ET Fortress
Likely major TC's not yet released:
Urban Terror
Price of Peace
Annihilation: Fog Over Europe
As far as installation and running a server with any of these mod's goes though, it will be more or less
the same deal as with any other mod. There is likely to be many different settings for the server
configuration however, and some settings may also have different effects than they do on vanilla ET
servers. Some settings may be missing entirely, for example at time of writing ET:Fortress has no REF
system, presumably because they want ETF to be initially very similar to Q3F (ETF's predecessor)
while ET's extra features are something which can be added later.
The approach or style of play may also be very different using total conversions, and this can impact
the server configuration. For example, while in ET you usually have a fixed map rotation on public
servers, apparently in ETF it is normal to simply load a map to start with, and then at the end of each
map there is an automatic vote for players to decide to next one.
Installing Mods
(thanks Fozzer for helping with detail)
Naturally it is best to follow the modification's documentation, but generally installing mods is fairly
simple and follows the same steps, with the only difference being between the two types of mod:
simple skins/sound pack type "mods", and proper game modifications like ETPro, Shrubet or
ETFortress.
Some mods are "serverside", which means you need to install them on the server but players are not
required to download them. Most mods however are "clientside" and do require both the client (player)
and the server to be running the mod's files. There is an exception in that server's can allow players to
use any minor mod (such as skin or sound packs) by setting the server "unpure" [sv_pure 0], but this
is strongly recommended against due to there being no ability to discriminate between bona-fide mods
and naughty cheat ones. As far as installation is concerned, there is no difference between clientside
and serverside mods.
71

Page 72
When your server is running any type of modification, but particularily the "clientside" ones, naturally it
is a good idea to ensure player's can download any modification file from the server. Hence you
should set sv_allowdownloads to 1 in the server cfg, though if it is several megabytes of files you
might want to provide for the faster http redirect too.
For the basic skins or sound pack mods, installation is usually as simple as uploading (usually using
FTP) the mod's .pk3 file into the "etmain" folder on your server, and then restarting the server to
ensure it is loaded.
For game modifications like ETPro, Shrubet or ETFortress, you need to install the mod's files into a
seperate folder, not within the "etmain" folder but alongside it. Usually the installation is a case of:
1. Download the mod from it's website to your computer
2. If the downloaded file was a compressed (e.g. .zip or .rar) file, extract it
3. Connect to your server via FTP, and create a folder beside the "etmain" one. The folder name
is usually the name of the mod and normally is in lowercase (e.g. "etpro" or "shrubet"), quite
often when you follow step 2 above you will find the files are automatically extracted into a
folder with the correct name.
4. Transfer the mod's files (from step 2) into the mod's folder (created in step 3).
5. The mod is installed! To run the mod on the server you need to edit the
command/shortcut/.bat file, or whatever you use to run the server, to append +set fs_game
thatfoldername - see the server startup page. Note: if you are using a shortcut/.bat/start_et (or
whatever file to run the server) it may be better to FTP that file to your computer, edit it as
required with notepad, and then transfer it back to the server computer overwriting the existing
file instead of deleting then replacing (otherwise you may have to mess with chmod or
permissions).
6. Now just run the server.
I have seen instructions for some game modifications suggest an alternate method of just installing the
mod straight into ETMain. However I suggest you do it properly, as above. If you install straight into
ETMain you wont be able to run a vanilla server from the same game install, and it can be problematic
for clients who will be configured for the proper method.
72

Page 73
Server System Requirements
(This section expands upon the documentation, and is largely opinion.)
There are two types of servers you can create to run Enemy Territory: Listen servers and Dedicated
servers. Listen servers allow you to play the game and host it at the same time, while Dedicated
servers only host the game. Dedicated servers use fewer resources than Listen servers, and are
therefore more stable to play on. Listen servers work well if you’re playing on a LAN.
Comment: Non-dedicated server's arent "proper" servers and should really only be used when, say,
messing about with a few friends, or perhaps on informal LANs. As a general comment with regard to
system requirements (below), always veer on the side of caution, better to have smaller or fewer
servers than problematic or laggy ones. There are plenty of ET servers out there, there is no point
adding another mediocre one, go for quality over quantity.
To run a Dedicated server, we [Splashdamage] suggest you have at least:
1. Intel® Pentium® IV 1.3ghz processor or equivalent
ET needs about 30 MHz dedicated to the ET process per player slot. Here is a table with
suggested server speeds based upon maximum client settings.
For a 32 player dedicated server, ET will need 1ghz.
For a 16 player dedicated server, ET will need 500mhz.
For an 8 player dedicated server, ET will need 250mhz.
Comment: Note weak processors like Celeron or Duron arent so good and should be avoided if
possible, else increase that 30mhz to say 40mhz to be prudent. You can perhaps reduce it a little
for server processors like Opteron or Xeon, but dont get carried away.
When considering increasing player counts or adding a server, check processor usage first.
Remember however, it is only useful to check processor usage when all servers are full of players!
Even still, you should allow for the natural spikes in usage, if you want good servers always try to
allow for all servers using their peak CPU use, plus keep a little in reserve. Servers running out of
CPU get pretty nasty for players: extreme lagginess, dropping or even crashing out, and general
instability for all.
2. 128 MB RAM
This assumes no other applications are running in the background. If other server applications are
running, you should expect to need more system RAM.
73

Page 74
Comment: 128mb will do but is pushing it somewhat, and I'm pretty sure the OS would have to be
Linux. The default com_hunkmegs for clients is 56, for servers apparently it is 72 (this may
actually be error in the documentation), which is fine for normal servers, and small servers should
be able to even go lower - the documentation suggests a value of 32, while suggesting increasing
hunkmegs to 128 for servers of >32 players. I wouldn't suggest going below the default for
com_hunkmegs, but there's no need to go giving the server a huge helping of RAM either.
Often the first sign of insuffucient hunkmegs is lots of players crash out with 9999 pings during
map changes (beware other issues may cause this also), and if the server crashes with the error
"ERROR: Hunk_Alloc failed" (or anything suggestive of a reference to "hunkmegs") this definately
suggests increasing hunkmegs.
There is a question as to wether it's maybe necessary to increase hunkmegs if running mods or
some custom maps, there's little evidence either way, perhaps suggesting probably not, although
it is highly unlikely that most servers are using anything under that default of 72 (or 56) anyway. If
you have ram going spare you might aswell use it, but dont bother going above 128mb unless you
want to run a really big server.
Note there was a line in the RTCW readme.txt stating never to set the total of all *megs setting to
greater than 3/4 of system RAM. Not sure if this was just to allow for the OS and background
processes, in which case rather odd to suggest 3/4 of total rather than say nmb or whatever. I'm
not really sure if com_zonemegs or com_soundmegs apply for a dedicated server, can't see why
they would still be allocated.
3. Excellent connection to the Internet or LAN
We strongly recommend T1 connection speed. Servers on Cable or DSL connections should limit
their games to only to 2-4 players (depending on upstream).
Comment: sv_maxrate multiplied by sv_maxclients will give you the peak bandwidth you should
allow for. Note that would be in bytes while often bandwidth rates etc server hosts will tell you will
be in bits (1/8th of a byte). Also remember for server's it is the upstream that matters, 1mb DSL
does not mean you have 1mb of bandwith to play with, usually *DSL (and cable) is asynchronous
and you will have something like a mere 265k or 128k upstream. Further, a 'proper server' will be
almost right on the "internet backbone", while your DSL connection has to travel to your ISP and
whatnot, meaning players are going to have slightly higher pings and less reliable connections
even if all else was equal.
If you do some rough calculations, sv_maxrate * sv_maxclients etc that adds up to a lot of
bandwith per month. It isnt actually quite so bad however, as most obviously your server probably
will not be at 100% capacity all of the time - few servers are at capacity even half of the time
74

Page 75
(roughly 2pm-2am or so). Less obviously perhaps, even when it is full clients usually dont use all
their rate allocation all of the time.
Firstly, any low-bandwidth players will probably be giving themselves less rate - 4KB/s for
modem, 7KB/s for single-channel ISDN, for example. Player's get the lower of sv_maxrate and
their own 'rate' setting.
Even still, if you have sv_maxrate 25000 and all your players have rate at 25000, your monthly
bandwith usage will not be anything like 25KB/s per player. The engine will only use the rate that it
needs to so when players are in fairly empty areas with little action, they will use very little rate,
regardless of what limit is imposed. The more players on your server, the more data there needs
to be sent to each and so players will use more of their rate allocation more of the time. You
should always have sv_maxrate * sv_maxclients available in per-second bandwidth however, as
usually the occasions when players are using their maxrate, thats because everyone else is
onscreen and there's loads of action, so therefore all other players will be too. The game copes
much better with sv_maxrate limiting the rate allocation than it does when your actual bandwidth is
insufficient to copy with what the server is trying to use of it. In sum, you need to have the
connection (particularily upload speed) that can handle the peak requirements, though monthly
data transfer will work out at a much lower average transfer rate.
Vague suggestions:
Players Good sv_maxrate Great sv_maxrate
Up to 16 13000 is good
Anything over is great
16-20
13000 is OK
start thinking of increasing to say 16000
21-24
16000 is OK
20000
24-32
16000 at least
25000
32+
20000 at least
25000
Of course, it's always "the higher the better" and 25000 is always best if you have the bandwidth
(sv_maxrate is engine limited to 25000 so no point increasing). Bear in mind these suggestions
are very rough guesstimates and are not based on any sort of technical or scientific analysis -
player's perceptions of what they find laggy, acceptable or excellent varies. I also tend to veer on
the side of giving plenty of resources for players to have a great game, rather than try to cram as
many players in as possible - quality over quantity. If you have the bandwidth available, the terms
with your host allow for it, and dont have to pay for bandwidth usage, always set as high as you
can. Even if you do pay for monthly transfer, bear in mind increasing sv_maxrate by 25% (for
example) is very unlikely to increase the monthly total bandwidth used proportionally: increases in
sv_maxrate has an inelastic effect on total bandwidth used.
75

Page 76
76

Page 77
Misc. Notes
For firewalls/routers, open UDP ports from 27950 to 27965, though if you're servers are set to
run on ports outside of that remember to also open those ports, of course. By default ET will
use 27960, and additional servers will increment by 1 provided they are running off the same
.exe. If you run them off seperate installs (but are on the same IP address) you must manually
set the net_port different for each in the startup line. UDP 27950, 27951 & 27960 are required
regardless of what port your server is set to run on, as they are used for the master server list
and Punkbuster. See Enemy Territory FAQ if you're having problems.
To show up on server lists the server must be running as dedicated internet server, i.e.
dedicated 2. also check sv_master1 is set to "etmaster.idsoftware.com" in the server cfg (it
should be by default). Further, check the note above about routers & firewalls, taking extra
note of UDP ports 27950 & 27951. It may take a while for you to see your server on the
ingame server list, sometimes it appears not to "see" servers for an hour or so unless
someone joins it. Plus, it wasnt really designed for nearly as many servers as ET currently has
so sometime's client's server lists can start ignoring servers once it has 2000 (erm, or
something, basically it's not abnormal if it takes a little while for your server to appear).
If you get to choose operating system, probably Linux would be best, but Windows 2000 or XP
would be fine. I'd suggest Linux if you know what you are doing with it, while Win2000 might
otherwise be preferential for ease of use.
77

Page 78
Credits
Probably some explanation lines in the ET_server.cfg are copy&pasted (or reworded a little) from PB
documentation or RTCW OSP documentation. Originally was partially adapted from the GameAdmins
RTCW guide, with some reference to Keen's Quake3 Console Commands guide. IP Banning section
also partially adapted from Quake3 banning guide on GameAdmins. Anyone I've forgotten will
probably be in my RTCW Rcon Guide at GameAdmins (a more updated, but still far from final, version
of which is RTCW Rcon Guide). Thanks also to SD, esp. Digibob, who have been very helpful and an
example on how developers can help the community help the game. Also thanks to various people
who have made suggestions, corrections, hints or help at various points thoughout.
If a rather large chunk of the game's server documentation looks familiar it's because they've done
some editing to a early draft of my example cfg, which I posted on SplashDamage forums. I wouldnt
mind at all except there's no hint that somebody else made it (unlike the .cfg's which come with ET,
which also have the odd bit but say "Thanks to those on the SplashDamage forums for their
contribution.") So if you think I'm "ripping", it'd actually be the other way around.
...Otherwise, all written by and © or whatever to DG, a.k.a. Davegod for www.rtcw.co.uk.
Copying/ripping/stealing/that-type-of-thing is NOT permitted.
78