Tweaking and scripts

Enemy Territory offers tons of ways for you to customize and tweak it. These tweaks aren't necessary to play the game, but they are extremely handy and can help you get more frames per second, better aim, more convenient communication with teammates, etc.

The Options Menu

ET allows you to make some very useful tweaks from the options menu.

Game options:

View options



Hardware tweaks

There are a few things you should tweak in your hardware to get good performance.

Find out how to overclock your CPU if you don't already know. This allows you to, for example, make a 1.8 Ghz CPU be as fast as a 2.1 Ghz CPU. It's risky though because overclocking wears down your parts, so your computer won't last as long.

Also, this is very important: if you notice ET crashing frequently, it may because your CPU is overheating. In this case, you need to reduce your overclocking or even "underclock". You might also be able to solve the problem by getting a better cooling solution for your case.

Video card drivers
Sometimes you might have a wonderful video card but you get a crappy FPS. Download the latest drivers from your card vendor's website, this often helps.

Mouse acceleration
I strongly recommend turning this off. It just makes it harder to aim. To turn it off, the first thing you should do is go into the console and type:

/cl_mouseaccel 0

Or, you can put "cl_mouseaccel 0" in your autoexec.cfg (If you don't already know about autoexec.cfg, you'll find out more in this section).

The other thing is, if you have Windows XP, you need to apply a registry patch to disable mouse acceleration in Windows (because that affects your game mouse acceleration). To do this, download this .reg file and then double click on it to add the patch into your registry:

Download mousefix.reg

Note: This patch was created by RaZiel. If you haven't already done so, I recommend downloading "Aiming by RaZiel", search for it on google to find it.

ET Minimizer

ET minimizer is a program to uh, minimize the game! Actually it doesn't work for me on my computer, but I've heard it's a very handy program in case you need to leave a fullscreen game in the middle some time:

Download ET Minimizer

Heron Spawntimer

This is one of the best things out there that can help improve your game. It will notify you when the enemy spawns, as well as give you warnings 10 and 5 seconds prior to spawn. This is useful not only for spawncamping, but just being able to know when it's safest to run around near the enemy's spawn area.

Note that many people consider spawntimers lame or even cheating. The ClanBase Euro RtCW cup in fact prohibits Heron (although, technically it is difficult to determine whether someone is using it).

Download Heron spawntimer

Creating a config file

Create a file called:
C:\Program Files\Wolfenstein - Enemy Territory\etmain\autoexec.cfg

Just make an empty file in notepad or whatever text editor you want, and save it in this path. Right now just leave it empty. The rest of this section is basically about what to put in that file.

How to bind keys

In some of the scripts I'll show you, you'll bind a particular action to a key. To do this, you insert a line in your config file that looks like this:

bind <key> <action>

For example, bind "K" "kill". This line in your config file will make it so you can press "K" to commit suicide.

Here is a list of things you can put for <key>:

As for <action>, it is basically any valid command. (Keep reading to learn more commands)

Graphics tweaks

Here are some useful tweaks you can make to change your graphics.

set com_maxfps <n>
Use this to set the maximum FPS you want your game to run at. Why limit your FPS? Firstly, because if your FPS is constantly changing, it can throw off your aim and generally disorient you. Personally I would rather have a constant FPS of 76 than an FPS which keeps fluctuating between 76 and 100. Also, trickjumps work best when you have a steady FPS of 43 (good), 76 (great), 125 (best), or 333 (supercomputer!). I know this sounds weird, but trust me, it is true ;) Due to numerical errors in the Quake 3 engine, you actually jump a little higher if your FPS is say, 125, than if your FPS is 100 or 150. Try to set your com_maxfps to one of these magic numbers.

Personally I have my config set up so I can toggle between FPS depending on the situation. For example, if I'm playing Goldrush I can usually get a constant 125 FPS so I set com_maxfps to 125. If I'm playing Radar where there's lots of grass on the map, I set it down to 76 FPS.

set com_maxfps 76

set cg_wolfparticles <n>
This is 1 by default. If you set it to 0, then it will hide many particle effects. For example, when a grenade blows up, you won't see a blast. Or when airstrikes are going off, you'll only see smoke, but no explosions. Also, the smoke that comes out of the tank when it's disabled will not be shown.

This is good because you get a little performance boost, and also airstrikes or tank smoke don't block your vision, so you can fire at people who are standing on the other side of the airstrike. The problem is obviously then you might accidentally run into more airstrikes. That's why personally I have a key to toggle this setting on and off. (An example of how to write such a toggle script is below).

Ex: bind "K" toggle cg_wolfparticles

Note: If you don't want a toggle, but just want it to be some fixed value, I would recommend just leaving it on, otherwise you might die more due to running into artillery.

set r_gamma <n>
Higher values of n make your screen brighter. Default is 1.0, allowed values are from 0 to 3. I recommend making your screen brighter because it lets you see targets more easily. Be careful you don't set it too high, otherwise levels like fueldump or radar with lots of snow will be way too bright.
Ex: set r_gamma 2.2

set r_intensity <n>
Higher values of n make your screen brighter. Default is 1.0, allowed values are from 0 to 1.5
Ex: set r_intensity 1.2

set r_mapoverbrightbits <n>
Higher values of n make the shadowy parts of a map lighter. Default is 2, allowed from 1 to 3. Setting it to 3 may help see targets that are hiding in shadows
Ex: set r_mapoverbrightbits 3

set r_picmip <n>
The bigger n is, the crappier your textures look, but it may improve performance on older video cards. Default value for n is 1. Allowed values are from 0 to 3.
Ex: set r_picmip 3

set r_picmip2 <n>
Similar to r_picmip- just set it to whatever you set r_picmip to :)

set r_dynamiclight <n>
Turns on (n=1) or off (n=0) dynamic light. Dynamic light is used very little in the game. I suggest you leave it on, because it is what makes the "glow" around dynamite, which is very useful to know when dyno has been planted.
Ex: set r_dynamiclight 0

set cg_shadows <n>
Turns on (n=1) or off (n=0) shadows. Doesn't help a whole lot, but if you have a slow computer, try it...
Ex: set cg_shadows 0

set r_finish <n>
Just set it to 0, it's not important. Trust me :)
Ex: set r_finish 0

set r_detailtextures <n>
When detail textures are enabled (n=1), it means that basically every object is textured twice to make it look more detailed. Obviously this is slower, so try disabling this (n=0) if you want to get more FPS.
Ex: set r_detailtextures 0

set r_subdivisions <n>
If you want a little performance boost, set this to 999. Otherwise, set it to 4.
Ex: set r_subdivisions 999

set r_texturemode <n>
This lets you set texture filtering. The most common values are:
  (low quality):   GL_NEAREST
  (good quality):  GL_LINEAR_MIPMAP_NEAREST
  (great quality): GL_LINEAR_MIPMAP_LINEAR

On older video cards, choosing lower quality may increase performance. If you set this to GL_NEAREST, then everything on your screen will look really blocky because textures aren't being "smoothed". Personally I use GL_NEAREST simply because it makes my crosshair look sharper. This is useful since I use a "tiny" crosshair size.

Ex: set r_texturemode GL_NEAREST

set r_fastsky <n>
If you set this to 1, it will just draw a solid color for your sky. This may give you a slight improvement in your FPS. It's not much, but then again, who cares how pretty the sky looks?

Ex: set r_fastsky 1

Networking tweaks

If you're having trouble with laggy/slow connections... Well, honestly there's not much you can do! You're pretty much fucked! But, tweaking these settings might help a little:

set rate <n>
Can be from 2500 to 25000. The faster your connection is, the higher you should set your rate. So for example, a modem might use a rate of 5000, whereas for LAN you would use 25000.
Ex: set rate 15000

set snaps <n>
Can be from 20-40. Determines how many times the server sends you updates of the game state. I would suggest leaving it at 20 or so if you have a slow connection. If you have a good connection, set it to 30-40.
set snaps 30

set cl_timenudge <n>
This is a very odd tweak: if you have a lot of lag, then setting this to a negative number will cause some crazy calculations to occur to take your lag into account when determining stuff like where your bullet went. Most people should leave this at 0. If you have serious ping problems, try setting this lower, but no lower than -50. (-50 is the lowest allowed value on most servers). In fact though, in most competitions, cl_timenudge must be zero. So if you play in a clan, don't tweak this...
Ex: set cl_timenudge -25

set cl_maxpackets <n>
The bigger n is, the more information your computer sends to the server, so basically your actions will be more accurate. I think the default for this is 20, you can raise it higher if you want but no higher than 100 since this is the max allowed value. Be careful when tweaking this setting, if you set it to high, it may actually make your connection worse.
Ex: set cl_maxpackets 50


Easy artillery strike script

This script lets you call an artillery strike without having to go into binocular mode. You simply look at the piece of ground (without binoculars) where you want to call the strike and then press a key. So, suppose you want to bind this ability to your "K" key. Then you should add this line of text to your autoexec.cfg:

bind "K" "+zoom;+attack;-attack;-zoom"

Notice that we're actually binding the K key to not just 1 command, but a list of commands. The semicolons (;) separate each command. You'll learn more about this when we get into some of the more advanced scripts.

Suicide script

It's very handy to have a key that lets you kill yourself instantly. Lots of people use this if they're worried they might die soon and they don't want to miss the respawn time. Another reason to kill yourself is if you run out of ammo and there's no field ops nearby. Add this line to your autoexec.cfg, and replace "K" with whatever key you want:

bind "K" "kill"

Note, it's also possible to kill yourself during a firefight if you're about to lose, so your enemy doesn't get XP for killing you. This is kind of mean though, so it is discouraged on many servers.

Field of view script

Field of view is more or less a zoom factor. A very low FOV would be like using binoculars, while a high FOV would give you a very wide angle so you could see more of your surroundings. The default FOV is 90 degrees, meaning that basically you can see 45 degrees to the left of you and 45 degrees to the right of you.

To set your FOV to some number, you just say:

set cg_fov <number>

The number should be from 90 to 120. If you try to go higher or lower, you might not be allowed to depending on the server, because having a ridiculously low or high FOV is almost like cheating. An FOV lower than 90 will never have any effect, no matter what server you are on.

Here's an example of a 90 degree FOV:

Now, here is 120 degrees. Notice that you can see more, although the edges of the screen are very subtly distorted.

Just for fun, I tried raising the FOV to 180 degrees. Pretty crazy, huh? It's like a fish-eye view; things that you are looking directly at appear fine, but as you move to the edges of the screen, everything gets stretched.

Colored names

Some players like to have colors in their name like: Sideshow Bob. To make your name look like this, you would say:

set name "^1Side^pshow ^2Bob"

The "^1" means "Make all the letters after this look red". The "^p" means "black", and the "^2" means "green". Here's a complete listing of the color codes:

Quickchat hotkeys

You can assign keys to quickchat commands, which can be useful if you want to be able to just tap a key to say "thanks" or "sorry" and things like that. You can do it like this:

bind "K" "vsay_team PathCleared"

"vsay_team" will say "Path cleared" to your team only. If you want the message to be public, just use "vsay".

Here is a list of all the things you can use with vsay:

PathCleared "Path cleared."
EnemyWeak "The enemy is weakened."
AllClear "All clear."
Incoming "Incoming!"
FireInTheHole "Fire in the hole!"
OnDefense "I'm on defense."
OnOffense "I'm attacking."
TakingFire "Taking fire!"
MinesCleared "Mines cleared."
NeedBackup "I need backup!"
CoverMe "Cover me!"
NeedEngineer "We need an engineer!"
NeedOps "We need Covert Ops!"
Medic "Medic!"
NeedAmmo "I need ammo!"
NeedTarget "I need a target!"
WhereTo "Where to?"
FollowMe "Follow me!"
LetsGo "Let's go!"
Move "Move!"
ClearPath "Clear the path!"
HoldFire "Hold fire!"
DefendObjective "Defend our objective!"
DisarmDynamite "Disarm the dynamite!"
ClearMines "Clear the mines!"
ReinforceDefense "Reinforce the defense!"
ReinforceOffense "Reinforce the offense!"
DestroyPrimary "Destroy the primary objective!"
DestroySecondary "Destroy the secondary objective!"
DestroyConstruction "Destroy the construction!"
ObjectiveDestroyed "Objective destroyed!"
RepairVehicle "Repair the vehicle!"
DestroyVehicle "Destroy the vehicle!"
EscortVehicle "Escort the vehicle!"
FireOnTarget "Fire on my target!"
CommandAcknowledged "Command acknowledged!"
CommandDeclined "Command declined!"
CommandCompleted "Command completed!"
ConstructionCommencing "Construction underway!"
ConstructionCompleted "Construction completed!"
ConstructionDestroyed "Construction destroyed!"
ObjectiveFailed "Objective failed!"
ObjectiveCompleted "Objective completed!"
Affirmative "Yes!"
Negative "No!"
Thanks "Thanks a lot!"
Welcome "You're welcome."
Oops "Oops!"
Sorry "Sorry!"
Hi "Hi!"
Bye "Bye."
Cheer "Yeah!"
GreatShot "Great shot!"
GoodGame "Good game!"
IamSoldier "I'm a soldier."
IamMedic "I'm a medic."
IamEngineer "I'm an engineer."
IamFieldOps "I'm a field ops."
IamCovertOps "I'm a covert ops."
FTMeetWaypoint "Meet at waypoint!"
FTAttackWaypoint "Attack waypoint!"
FTDefendWaypoint "Defend waypoint"
FTAttack "Attack!"
FTFallBack "Fall back!"
FTCoverMe "Cover me!"
FTCoveringFire "Soldier, covering fire!"
FTMortar "Deploy mortar!"
FTHealSquad "Heal the squad!"
FTHealMe "Heal me!"
FTReviveTeamMate "Revive team mate!"
FTReviveMe "Revive me!"
FTDestroyObjective "Destroy objective!"
FTRepairObjective "Repair objective!"
FTConstructObjective "Construct the objective!"
FTDisarmDynamite "Disarm the dynamite!"
FTDeployLandmines "Deploy landmines!"
FTDisarmLandmines "Disarm landmines!"
FTCallAirStrike "Call airstrike!"
FTCallArtillery "Call artillery!"
FTMortarBarrage "Call mortar barrage!"
FTResupplySquad "Resupply squad!"
FTResupplyMe "Resupply me!"
FTExploreArea "Explore area!"
FTExploreAtCoordinates "Explore at co-ordinates!"
FTSatchelObjective "Destroy satchel objective!"
FTInfiltrate "Infiltrate!"
FTGoUndercover "Go undercover!"
FTProvideSniperCover "Provide sniper cover!"

Text message hotkeys

You can assign keys to text messages. I really really recommend doing this for common messages that you may need to say to your team, like, "Don't go out the fucking backdoor!" To do this, you do:

bind "K" "say_team Don't go out the fucking backdoor!"

"say_team" puts the message in team chat. If you want to say something in public, just use "say".

Advanced scripting

Now that you know a couple of basic commands, you're ready to learn more about scripting. These "advanced" topics will help you write really cool scripts that go beyond just spitting some text to the screen. Don't worry, it's not hard.

Running multiple commands at once
You can string together multiple commands on one line using semicolons. So for example, you can do something like:

bind "K" "say We won!; say We really kicked your ass!; say Man, you guys really suck!"

I call this the "obnoxious cheering script". You just press one key and it says all this stuff :) I also call it the "get banned really quickly" script.

Using multiple config files
You can have other config files besides your autoexec.cfg, although they may not be run automatically on startup. However, there's a command to run a config file called "exec". So, for example, if you want to be really organized, then you could have 3 different config files: "graphics.cfg" which would contain all your graphics settings, "chat.cfg" which would contain shortcuts for teamchat messages, and "misc.cfg" which would contain everything else.

Then, just stick these cfg files in your etmain folder (where the autoexec.cfg is). And, then in your autoexec.cfg, add these 3 lines:

exec "graphics.cfg"
exec "chat.cfg"
exec "misc.cfg"

Then whenever your game starts up, all the scripts in those files will be executed.

Running a script from a script
What you can do is create a variable that holds a script. Then you can run that script using a command called vstr. Here's an example of how that would work:

set SuicideScript "kill"
bind "K" "vstr SuicideScript"

So, I just made up some variable called SuicideScript and set its text to "kill". This is just like setting your name to something, except instead of 'name', I just made up some variable called "SuicideScript". Then, we bind the K key to the action "vstr SuicideScript". vstr is a command which runs some script stored in a variable.

This example's pretty trivial but soon I'll show you how to use vstr to do some cool things.

The echo command writes some text on your screen. For example:

echo "Autoexec.cfg has been loaded!"

Writing a toggle script
Here's a short example showing you how to toggle between an FOV of 90 and 120:

set fov90 "echo FOV set to 90 degrees!; set cg_fov 90; set switch_fov vstr fov120;"
set fov120 "echo FOV set to 120 degrees!; set cg_fov 120; set switch_fov vstr fov90;"
set switch_fov "vstr fov90"
bind "n" "vstr switch_fov"

Just read it and hopefully it will make sense :) Basically we are just using vstr in a very clever way that lets us press the "n" key to toggle between running the fov90

If you just want to toggle a value between 1 and 0. Doing this is really simple. So, for example if you want to toggle atmospheric effects (like rain) on and off by hitting F5, you can say:

bind F5 toggle cg_atmosphericeffects

This "toggle" command is built into the way scripts work, so you can feel free to use it for any value you want to toggle between 0 and 1.

Writing a cycle script

To write a script to cycle between several values of some variable, you could do it using set and vstr, similar to the FOV script above. There's also a handy command to cycle through values. For example:

bind "K" "cycle sensitivity 3 7 2"

This will change the mouse sensitivity every time you press K, going from 3 to 7 in steps of 2. (So, 3,5,7,3,5,7,3,5,7,etc).

Personally I don't like cycle scripts because they don't echo the value to the screen. I usually just use set and vstr so I can use echo.

The +vstr command

You can bind a key to do one thing when you press it, and something else when you release it. Here's a really dumb example:

set script1 "cg_drawgun 0"
set script2 "cg_drawgun 1"
bind "K" "+vstr script1 script2"

So, hopefully this is pretty obvious. After +vstr, you write the name of 2 scripts that should be run. The first script will be executed on the key press, and the other will be executed on the key release. This particular script hides the gun while the key is pressed, and makes it reappear after the key is released.

You might think that when you press a key, script1 is executed once, and then when you release a key, script2 is executed once. This isn't true. Although the "release" script is always guaranteed to run only once, script1 will keep running again and again while the key is pressed. So, make sure you don't put anything in script1 that can't be run multiple times. For example, putting an echo statement in script1 would be really stupid because then that message might get echo'ed hundreds of times.

And now for a real-life example that uses all this scripting crap!
Say you're playing on Seawall Battery and you're an engineer. Suppose you're the kind of guy who likes to play defense, so you usually either guard the backdoor or guard the gun controls. You often find yourself having to type out messages like "Allies are planting at the gun controls!". That's a lot of typing, so it would be nice to just bind that to a key.

What you can do is create a config file for Battery, call it battery.cfg. You can do this for every map, and then in your autoexec, just have some lines like this:

bind "F5" "echo loading battery.cfg!; exec battery.cfg"
bind "F6" "echo loading radar.cfg!; exec radar.cfg"
bind "F7" "echo loading oasis.cfg!; exec oasis.cfg"

This is probably how I would do it: just bind each map config to a function key. I think if you're playing on a server with ETPro though, you can just create files called autoexec_battery.cfg, autoexec_radar.cfg, etc. And it will automatically read those those and apply those settings. As far as I know, that only works on ETPro though, so I'd just do it with the function keys like I've shown here.

Now, let's say that you're a guy who only likes to play defense. The two things you defend are the gun controls or the backdoor. So, to safe yourself some typing, you decide to bind two keys: A and B. A will be the key you hit if everything's ok. B will be the key you hit if there's trouble.

You could set up the following script... Note I'm abbreviating backdoor with BD and gun controls with GC:

set BDBinds "bind A say_team All clear @ BD!; bind B say_team Allies are in @ BD!"
set GCBinds "bind A say_team All clear @ GC!; bind B say_team Allies are in @ GC!"

Then you could write a toggle script to switch between these two "modes". So let's write a script that lets you press "C" to toggle between them:

set BD "echo Backdoor mode!;vstr BDBinds; set switch vstr GC"
set GC "echo Gun controls mode!;vstr GCBinds; set switch vstr BD"
set switch "vstr BD"
bind "C" "vstr switch"

Sorry for the confusing names like BD and GC! Normally you should keep your names longer and more descriptive, but I'm trying to make all these long scripts fit the width of your browser. Anyways, hopefully what this script does is clear enough. If you press "C" then it will run switch. Switch will run either BD or GC. Say it runs BD. Then it will echo the text "Backdoor mode!", and then run BDBinds, which sets up all the binds for defending the backdoor, and then it makes it so the next time you run switch, it will call GC instead of BD.

Pretty crazy, huh :)

Sprint toggle

This is one of my favorite scripts. It lets you toggle between running and sprinting by pressing a key. In firefights, I almost always want to be sprinting the whole time, so it's a real pain to hold down SHIFT all the time. Kind of like, IF I WANTED TO TYPE IN ALL CAPS, I'D RATHER PRESS CAPS LOCK THAN HOLD DOWN SHIFT.

Here's the script:

set beginsprinting "echo Sprinting ON; +sprint; set sprinttoggle vstr endsprinting"
set endsprinting "echo Sprinting OFF; -sprint; set sprinttoggle vstr beginsprinting"
set sprinttoggle "vstr beginsprinting"
bind MOUSE3 "vstr sprinttoggle"

Note that for this script to be useful, it has to be bound to an easily accessible key so that you can quickly press the key without interrupting what you're doing. So personally I bind it to MOUSE3 (the mousewheel button).

Personally, I used to have a hard time sprinting during fights because my finger arrangement on the keyboard was really awkward and it was hard to hold SHIFT all the time. With this script, it's a lot easier and I tend to win more fights.

Playing dead

This is a command you can run from the console, but ONLY on certain shrubet servers. To find out what kind of server you're on, go to "SERVER INFO" from the menu. If it says "etpro" then you can't play dead. If it says "shrubet", then you're probably in luck.

Anyways, to do it, just type "/playdead" at the console or bind "playdead" to a key. It can be pretty useful if you're sneaking around. Just be careful though! Even if you convince your enemy that you are dead, they might shoot at you anyways to make sure you are gibbed.

Another good place to use this is if you're getting shot up by multiple enemies. If you are getting shot by ONE enemy, playdead probably won't fool him because he'll wonder how come he didn't score a kill, but if you do it when there are multiple guys, they'll just assume that the kill was made by someone else.

Hiding your gun

In some cases it's really useful to hide the gun. For one thing, when you display the gun, you also get the unfortunate effect of muzzle flash. So, every time you fire a bullet, there's a bright flash that can be distracting. Also, sometimes the gun itself can get in your way, which is annoying.

To turn your gun off, use the command "cg_drawgun 0". And to turn it back on, use "cg_drawgun 1". If you like, you can set up a toggle to turn your gun on and off. This is done with this command:

bind "K" toggle cg_drawgun

Personally, I like seeing when I have a syringe out, because then if I'm reviving someone I won't accidentally shoot them because I actually had a gun out. The only thing I really like to hide are weapon banks 2 and 3- i.e. pistols, SMGs, panzers, MGs, etc. So to do this, I came up with the following script:

bind 0 "cg_drawgun 1; weaponbank 10"
bind 1 "cg_drawgun 1; weaponbank 1"
bind 2 "cg_drawgun 0; weaponbank 2"
bind 3 "cg_drawgun 0; weaponbank 3"
bind 4 "cg_drawgun 1; weaponbank 4"
bind 5 "cg_drawgun 1; weaponbank 5"
bind 6 "cg_drawgun 1; weaponbank 6"
bind 7 "cg_drawgun 1; weaponbank 7"
bind 8 "cg_drawgun 1; weaponbank 8"
bind 9 "cg_drawgun 1; weaponbank 9"

Hopefully this isn't too confusing! Basically, this way I can be selective about which weapons get hidden and which ones get shown. Note the semicolons (the ; symbol) between the cg_drawgun command and weaponbank command. This is necessary to separate one command from another.

Rapid akimbos script

This is one of the best scripts, IMO. You just hold down a key (cannot be a mouse button, must be bound to a key) and your akimbos will fire at 16 rounds per second. This is about double as fast as I could fire akimbos if I press the mouse button as fast as I can. It's nearly as fast as an MG, which is 18 rounds per second.

The only limitation is that while you're holding down the key, you can't change what direction you're moving, although you can still turn around with the mouse. Since the fire is so rapid, you will run out of ammo in about 1 second. So, don't waste it- don't use this against people who are far away, or who are moving very fast. It's best used at close range, either if you sneak up on someone from behind, or if you trap them in a small hallway.

NOTE: This script will not produce good results if the server you play on limits the akimbo rate.

Here is the script (note: I split it up into several lines, but it should all be written on 1 line in the text file):

bind "K" "+attack; -attack; +attack; -attack;
+attack; -attack; +attack; -attack;
+attack; -attack; +attack; -attack;
+attack; -attack; +attack; -attack;
+attack; -attack; +attack; -attack;
wait 1;"

Class / Spawnpoint selector

This is another very useful script. It lets you change your team, class, or spawnpoint just by hitting one key. This way you don't have to waste time going into limbo. I used to think a script like this sounded like overkill, but now that I have it, I love it.

The best script I know for this is the "Super Selector", written by "Cowboy" Ben Alman, and is posted on his site:


Text shortcuts

There are some very cool text shortcuts you can use on shrub servers. They are:

[a] - last person who gave you ammo
[d] - last person who killed you
[h] - last person who gave you health
[k] - last person you killed
[l] - your current location
[n] - your name
[r] - last person who revived you
[p] - teammate you are pointing at
[s] - your health
[w] - weapon you are currently holding
[t] - ammo for current weapon

I find this very useful. So for example, you could bind a message to a key like this:
bind K say_Team "Medic! I am located at [l], I have [s] health!"

Here's my favorite example- check this out... In my class selector script (which I modified for my own use), I added some lines that look like this:

set covert_config  "bind MOUSE3 say_team Hey [p], come with me. I have a uni!"
set soldier_config "bind MOUSE3 say_team Hey [p], please move out of my line of fire!"
set fdops_config   "bind MOUSE3 say_team Hey [p], hold up so I can give you ammo!"
set engy_config    "bind MOUSE3 say_team Hey [p], give me some backup! (I'm an engy)"
set medic_config   "bind MOUSE3 say_team Hey [p], hold up so I can heal you!"

So for example, if I change my class to medic, it will automatically do a vstr on my medic_config script. Then, whenever I press MOUSE3 (the mousewheel), then say my cursor is currently pointing to a teammate named Jack. Then it will say, "Hey Jack, hold up so I can heal you!"

Remember, these only work on shrub servers though :(

Using the console

Sometimes you might want to change your settings while you're in the middle of the game. Luckily, you can do this through the console (that window that pops up when you press the tilde (~) key). You can enter any command in the console, including set, bind, exec, etc. For example, let's say that I am playing on my computer and then my little brother Nick wants a turn. Then, I can bring up the console and type:

   /set name "Nick"

This way, Nick can play like a total noob, and people will know it's not ME tking them with a panzer!

Note you must include the slash (/) before the command, otherwise it'll just display the command in the team chat and not actually do anything. If you enter this into your autoexec.cfg, then no slash is needed.

Fixing your config (if something goes wrong!)

If you accidentally change some settings in your config file, there's no easy way to reset them back to defaults. For example, say you bind your "L" key to suicide... Then every time you try to go into Limbo, you die! You can't just remove the bind from your config, because once you change a setting, it gets permanently registered into your master config.

So, one way to fix the problem is to reset your config to all the defaults, and then apply the settings you DO actually want.

  1) Remove all offending lines from the autoexec.cfg
  2) In console, type "/exec etconfig.cfg". Now all your settings are reset
  3) In console, type "/exec autoexec.cfg". Now your config settings are set.
  4) Go to the options menu and re-enter your options (got wiped out in step 2)

Another way to fix your config is to edit the master config directly, as you'll learn below in the "How config files work" section.

Note that if you just set one variable to the wrong thing, like say you change the cg_crosshairsize to something you don't like, you can reset it to the default by doing:

/reset cg_crosshairsize

How config files work

Every time you enter a command into your autoexec.cfg or into the console, it registers a permanent change into your "master config". Unfortunately, the way that configs work in ET are kind of confusing, and there isn't really one "master config" file! In fact, there are several config files and to make matters worse, all those files have the same name! (They're just in different directories).

Here are some of the config files I have:

C:\Program files\Wolfenstein - Enemy Territory\etmain\etconfig.cfg
C:\Program files\Wolfenstein - Enemy Territory\etmain\profiles\Raj\etconfig.cfg
C:\Program files\Wolfenstein - Enemy Territory\etpro\profiles\Raj\etconfig.cfg
C:\Program files\Wolfenstein - Enemy Territory\shrubet\profiles\Raj\etconfig.cfg

The first one, in the "etmain" directory is not really ever used. It's simply a backup copy of the original config, and contains all the default settings. So, if you ever mess up your config, what you can do is copy lines from this backup config into your "active" config files-- basically every "etconfig.cfg" except the backup one is an "active" config file.

The next config file on the list is in "etmain\profiles\Raj\". That config basically stores whatever changes you make on the options menu.

The last couple of config files hold whatever settings you change during an actual game. They are in the "etpro" and "shrubet" folders. etpro and shrubet are two of the most popular variations of ET. Depending on what server you play on, the version of ET it's running might be different. In that case, you might have additional directories. You can find out what type of game a server is running by going to the options menu and clicking on "Server Info".

So, say you're on a shrubet server, and you go to the console and say "/set name Bob". Then, when you play on a shrub server, your name will be Bob. However, when you play on something else, you will have some other name, because it uses a different config file for each kind of ET variation!

Obviously this can get really confusing having all these config files. Especially for things like your name, you don't want that changing depending on what server you're playing on! So, what I'd recommend is store important settings like your name in your autoexec.cfg (use "set name ...."), and then just create a key bind for "exec autoexec.cfg". Then when you join a server, you can just run your autoexec and be done with it.

So, how does ET decide which config file to run at which time? There are so many of them! Well, when you start up the game, the config file at "\etmain\profiles\Raj\" is applied. Immediately after that, your autoexec.cfg is applied. Then when you join a server (say it's an etpro server), then the server-specific config file is applied (like the one for shrubet or etpro). So as you can see it's really a messy process- that's why I recommend just sticking all the important stuff in autoexec and having a keybind to easily execute your autoexec after you join a game.

*phew* I hope I didn't confuse you too much! Config files in ET are really weird, it took me a while to figure them out so don't worry if you don't understand every single detail... As long as you can write your own scripts and change settings, that's good!

Fixing the resolution resetting problem

There's a really annoying bug in ET that happens for some people. Say you set your resolution to 1600x1200 in the options menu. Then you go and play on a shrub or etpro server. Then, you exit the game. Then, you run the game again. When the game loads up, it will be reset to 800x600 resolution!

If you are a victim of this bug, just add these three lines into your autoexec.cfg:

set r_mode -1
set r_customwidth  1600
set r_customheight 1200

Example autoexec.cfg

Here's what my autoexec.cfg file looks like in case you want to see it. It's a bit messy and has some stuff in there that doesn't really serve any purpose, but oh well :)

// automatically kill myself by pressing K
bind "K" "kill"

// my name
set name "^pv^1e^plocity"

// make screen bright so you can see better
r_gamma 1.8; r_intensity 1.3; r_mapoverbrightbits 3

// get rid of annoying graphics effects
// NOTE: I'm not even sure if some of these actually do anything
//       but hey it can't hurt...
set cg_drawdamagekick "0"
set cg_drawfallkick "0"
set cg_fallkick "0"
set cg_damagekick "0"
set cg_bloodflash "0"
set cg_blooddamageblend "0"
set cg_showblood "1"
set cg_bloodtime "0.0000"
set cg_blinktime "100.0"
set cg_crosshairpulse "0.0000"

// make sure game loads in 1152x864
set r_mode -1
set r_customwidth "1152"
set r_customheight "864"
set r_fullscreen 1

// make screen bright so you can see better
r_gamma 2.6; r_intensity 1.7; r_mapoverbrightbits 3

// performance tweaks
set r_picmip 0
set r_picmip2 0
set r_texturebits 32
set r_colorbits 32
set r_depthbits 0
set r_dynamiclight 1
set cg_shadows 1
set r_finish 0
set r_lodcurveerror 250
set r_primitives 0
set r_drawsun 0
set r_faceplanecull 1
set r_ext_texture_filter_anisotropic 0
set r_ext_compiled_vertex_array 1
set cg_gibs 0
set cg_coronas 0
set cg_showblood 0
set cg_blooddamageblend 0
set cg_wolfparticles 0
set cg_brasstime 0
set r_detailtextures 1
set r_ext_multitexture 1
set r_lodbias 0
set r_subdivisions 4
set r_flares 1
set r_roundimagesdown 1
set cg_coronafardist 0
set r_fastsky 0
set r_drawfoliage 1
set r_ext_NV_fog_dist 0
set r_glIgnoreWicked3D 1
set r_simplemipmaps 0
set r_vertexlight 1
set r_textureMode "GL_NEAREST"  // makes my crosshair sharper
set r_ati_fsaa_samples 0
set r_ati_truform_tess 1
set r_allowextensions 1
set r_highQualityVideo 0
set r_trisColor "1.0 1.0 1.0 1.0"
set r_dlightBacks 1

set cl_maxpackets 80 // more packets sent to the server means more accuracy

set cg_weaponCycleDelay 0
set cg_noammoautoswitch 1

set com_hunkMegs 256 // give ET a nice BIG chunk of memory so it can perform well
set com_soundMegs 32
set com_zoneMegs 32

// allow demo recording to start/stop w/ F12
bind "F12" "vstr demotoggle"
set demostop "set demotoggle vstr demostart; stoprecord"
set demostart "set demotoggle vstr demostop; autorecord"
set demotoggle "vstr demostart"

set cg_atmosphericeffects "0"

set m_pitch 0.018  // make looking up & down slower, to help w/ headshots
set cg_bobpitch "0"
set cg_bobroll "0"
set cg_bobup "0"
set cg_bobyaw "0.002"

// hide weapon bank 2 and 3 (pistols, SMG, panzer, etc), but show anything else
bind 0 "cg_drawgun 1;weaponbank 10"
bind 1 "cg_drawgun 1;weaponbank 1"
bind 2 "cg_drawgun 0;weaponbank 2"
bind 3 "cg_drawgun 0;weaponbank 3"
bind 4 "cg_drawgun 1;weaponbank 4"
bind 5 "cg_drawgun 1;weaponbank 5"
bind 6 "cg_drawgun 1;weaponbank 6"
bind 7 "cg_drawgun 1;weaponbank 7"
bind 8 "cg_drawgun 1;weaponbank 8"
bind 9 "cg_drawgun 1;weaponbank 9"

// switch between 90 and 120 for my FOV every time I press "N"
set fov90 "set cg_fov 90; set switch_fov vstr fov120;"
set fov120 "set cg_fov 120; set switch_fov vstr fov90;"
set switch_fov "vstr fov90"
bind "n" "vstr switch_fov"

set fps43 "echo FPS set to 43!; seta com_maxfps 43; set switch_fps vstr fps76"
set fps76 "echo FPS set to 76!; seta com_maxfps 76; set switch_fps vstr fps125"
set fps125 "echo FPS set to 125!; seta com_maxfps 125; set switch_fps vstr fps43"

set switch_fps "vstr fps125"
bind "H" "vstr switch_fps"        //pressing "H" lets me cycle thru com_maxfps

set com_maxfps 76                 // default com_maxfps set to 76

bind "P" toggle cg_wolfparticles  // turn particles on and off by pressing P

//shrub-specific things

bind "M" "playdead"

// run the class selector script by "Cowboy"
exec "selector.cfg"

// supa fast akeembo fiah
bind "Z" "+attack;-attack;+attack;-attack;
wait 1;"


Enabling cheats

Cheats are very useful if you just want to play a map by yourself. For example, if you are practicing your jumping skills and you want to be able to sprint forever without running out of stamina, there's actually a cheat that lets you do that.

The first thing you have to do is start your own server, so go to "Host Game" and start up a server on some map (doesn't matter which map). Then once it loads, go to the console and type:

/devmap <mapname>

For <mapname>, it's whatever map you want to play. For example if the name of the map you want to play is goldrush, then you will say:

/devmap goldrush

This loads the goldrush map, with cheats enabled. If you get some error message saying it can't load the map because of g_gametype or something like that, then try running these 2 commands before you run the devmap command:

/sv_pure 0
/g_gametype 2

So once the map is loaded with devmap, you can start going into the console and enabling some cheats. Here is a list of some cheats you can do:

I suppose another thing you could do for circle-strafing practice is launch 2 instances of ET, then make 2 players join- 1 axis, 1 ally. Make one of them go into /god mode (so he can't get hurt). Then practice circle-strafing around him and shooting him in the face and see how good of an accuracy you can get.

Bah. Or you could just strafe around a point on the wall :p

Here are some other commands which can be run on any server so aren't exactly cheat commands, but still pretty cool:


Punkbuster is software that prevents people from cheating in ET. It runs on practically all servers. Each server may tailor exactly what punkbuster allows and doesn't allow, so I can't tell you exactly what settings are allowed, but here is one possible config showing the bounds of all the variables:

; Affect brightness and level of detail
pb_sv_cvar r_picmip in 0 2
pb_sv_cvar r_picmip2 in 0 3
pb_sv_cvar r_rmse in 0.0
pb_sv_cvar r_subdivisions in 4 20
pb_sv_cvar r_lodbias in 0 2
pb_sv_cvar r_lodcurveerror in 250
pb_sv_cvar r_gamma in 0.500000 2.000000
pb_sv_cvar r_ignorehwgamma in 1
pb_sv_cvar r_ext_gamma_control in 1
pb_sv_cvar r_intensity in 1
pb_sv_cvar r_overbrightbits in 1
pb_sv_cvar r_mapoverbrightbits in 2
pb_sv_cvar r_ext_NV_fog_dist in 0
pb_sv_cvar cg_shadows in 0 1
pb_sv_cvar r_shownormals in 0

; Affect fog effects
pb_sv_cvar r_uifullscreen in 0
pb_sv_cvar r_wolffog in 1

; Affect field of view
pb_sv_cvar cg_fov in 90 110
pb_sv_cvar cg_zoomfov in 22.5

; Affect view perspective
pb_sv_cvar cg_thirdperson in 0

; Affect aim movement
pb_sv_cvar cg_bobroll in 0.002
pb_sv_cvar cg_bobpitch in 0.002
pb_sv_cvar cg_bobup in 0.005
pb_sv_cvar cg_runpitch in 0.002
pb_sv_cvar cg_runroll in 0.005
pb_sv_cvar cl_freelook in 1

; Affect mouse sensitivity
pb_sv_cvar m_pitch out -0.011 0.011
pb_sv_cvar m_yaw in 0.022

; Affect weapon knockback
pb_sv_cvar com_maxfps out 0.000001 40
pb_sv_cvar forcefps out 0.00001 40

; Affect ping and lag
pb_sv_cvar cl_maxpackets in 30 100
pb_sv_cvar cl_timenudge in -50 0
pb_sv_cvar rate in 2500 25000
pb_sv_cvar snaps in 20 40

Here are some links where you can get further information: