What is a userconfig?
Before we can delve into what a userconfig is, we have to understand what a config is. In Counter-Strike, this is the file in which all your key binds and commands are stored. If you were to bind “x” to make you jump, and exit CS, “x” would be in your config file as a bind for jumping. The config file itself is labeled “config.cfg”, cfg standing for configuration.
A user config is very similar to a config in that it is a location in which commands and binds can be stored. It is a separate entity to config.cfg, labeled as userconfig.cfg.
Why do I need one?
The difference between a userconfig and a config is that a userconfig is executed separately and can not be modified by the server. Many players make a habit of putting all of their controls (movement binds) into a userconfig and taking it with them to LAN events.
How do I make one?
Making one is pretty simple; it’s merely a 7 step process.
1) Go to Start -> All Programs -> Accessories -> Notepad.
2) Enter in your desired commands and binds one line at a time.
3) Save the file as “userconfig.cfg” without the quotations.
4) Move the file to your default cstrike folder. Your folder may vary, but for most people the folder can be found here (C:\Program Files\Steam\SteamApps\YOUR-EMAIL\counter-strike\cstrike).
5) Go into your config.cfg, which is located in your cstrike folder. Right click the file and select “open with”. From the list provided, choose Notepad.
6) Your config.cfg should now be open and your in-game binds should be visible. From here, navigate to the bottom of the document and add the following line without the quotations.
This forces your game to automatically execute your userconfig file upon game launch (You can also do this manually by opening the console and typing “exec userconfig.cfg”).
7) Save and exit the config file. You’re now ready to launch CS with your newly created userconfig set to automatically launch.
I don't see the .cfg extension! What's going on?
If you can't see the .cfg extension, don't worry! This is a common issue, and in fact it's not a problem at all; it's just a difference in folder view types. Three steps should solve this little qualm.
1) Open up your cstrike folder and select "Tools" from the top navigation bar.
2) Once you select "Tools" a drop down box should appear. Select "Folder Options" from that drop down list.
3) Select the "View" TAB on the top, scroll down to "Hidden files and folders" and uncheck the box that says "Hide extensions for known file types".
You should now be able to see not only the userconfig and config extensions, but extensions in general as well, such as .jpg or .bmp for picture files or .mp3 for music.
Can you start me off?
Every config can be different. And it's not wrong to see other configs different than yours, whatever works for you
ex_interp 0|1 learn more in NetGraph
hud_fastswitch 0|1 is a variable which determines whether or not hitting the number keys switches to a weapon, or merely highlights the weapon on the weapon HUD. I would recommend turning this on (setting it to 1).
voice_enable 0|1 is whether or not you can hear in-game voices via user microphones. I have this turned on because my team often speaks in-game, though many online players prefer to use Ventrilo.
hisound 0|1 is a sound quality command that can be toggled. Users with a very poor processor can benefit from setting sound quality to low, but in the present day the performance gain is negligible while the quality difference is very apparent.
precache 0|1 determines whether or not your game caches certain information while connecting to the server instead of letting the information load while in-game. Turn this on if you’re having performance issues and are willing to sacrifice some server join speed for a slightly less cumbersome experience (on lower-end machines).
rate 1-25000 can be learned more about in NetGraph.
net_graph 0-3 can be learned more about in NetGraph.
max_shells 1-400 is the amount of shells (bullet holes) your game renders. If you’re having sluggish performance in firefights, try toning this number down a bit. A good number to use lies anywhere between 20 & 30, as it still allows you to see where you’re shooting while not bogging you down as much.
fps_max 20-101 is the maximum FPS your game can show. By default this number is set at 72, and with Vertical Sync turned on you will only see an fps equivalent to that of your monitor refresh rate. The best thing you can do is go into your monitor options and set your Hz as high as it can safely perform. From there, go and download ReForce (a refresh rate locking program) to ensure that your Hz do not reset to 60 upon entering CS. Set your fps_max to a number equal to what your monitor can display if you're receiving visual tearing in-game. Example: fps_max 85 when my monitor can only show 85Hz.
r_mmx 0|1 can improve performance on a lower-end CPU. By turning it on (if your CPU supports it), it will take some load off the CPU and put it on the GPU, which is good news for those having performance issues. In general, setting this on couldn’t really hurt, but it may not help some people either.
r_mirroralpha 0|1 removes reflective lights when turned on, such as the glare on Leet Kr3w model sunglasses, or water.
cl_download_ingame 0|1 disallows the downloading of user sprays in-game when turned off.
cl_allowdownload 0|1 determines whether or not your game will download files from the server, such as sound files. If you’re looking to keep your CS stock-friendly and are a space hog, setting this off (0) would do you good.
cl_corpsestay 1-? determines the length of time a defeated opponent’s body rests on the ground. Putting this number lower means the body will appear for a shorter time, and may in fact improve performance. Unfortunately such a change comes at a cost, and you can lose valuable information when you can’t see a body on the ground, what position he was facing when he was shot, and where he was when he went down.
cl_minmodels 0|1 is the definitive performance booster in Counter-Strike. By setting this value on (1), you will only see one model for Offense and one model for Defense. This can increase performance greatly when several players are on your screen, because your game doesn’t have to load so many different types of models.
cl_cmdbackup 0|2 is a command that really shouldn’t be toyed with too much. The default is 2, and it’s the amount of command backups your game buffers and creates. Setting this any higher could cause severe performance issues and anything lower than one could do the same.
cl_cmdrate can be learned more about in NetGraph
cl_updaterate can be learned more about in NetGraph
cl_weather 0|1 is only really applicable on maps such as Aztec. By setting this value to 0, you can turn off the weather effects (such as rain) on certain maps.
cl_showfps 0|1 is a watered down and less informative version of viewing your frames per second as opposed to net_graph. By turning this on, your fps will be displayed on the upper left hand corner of your screen.
cl_himodels 0|1 dictates the quality of your models. Turning it to one will try and enforce a slight level of cell-shading, and can hurt performance. Keep this off and you won’t notice a visual difference, but you may experience a performance boost on very low-end systems.
cl_autowepswitch 0|1 (when set to 1) ensures that once you pick up a stronger weapon your game will automatically switch to that weapon for you. I would highly advise you turn this off, because there are many scenarios in which you may accidentally walk over a stronger weapon in mid firefight and end up losing the battle.
bind key action determines the key bound to an action. A good example would be “bind space +jump” without the quotations.
Now that you know how to make a userconfig, and have a decent platform for experimentation, go ahead and get at it! Oh, and remember – keep it LEGAL!
Deciphering the Netgraph