There are a number of things you can tweak on your end that will allow you to game a bit better.
First off,
your fps. Counter strike has a cap at 100, but if you can get to 100 it'll help out your gaming a lot.
Set fps_max 101 in your console.
I found that even after setting fps_max 101, I will still capped at about 60 fps. The next thing I had to do was adjust my video card settings. I was using a nVidia card, so I went to the nVidia control panel (right click on your desktop and it should be one of the choices). Turn off vertical sync. (Change it to "Force off" instead of "on" or "Let programs decide".) If it still doesn't work, change around some of the other settings as well - turn off anti-aliasing, change any possible settings to "Performance" rather than "Quality", etc. Counter Strike doesn't need to be a really pretty-looking game. Turning off some of these features will greatly improve your fps (especially if you're running a lower-end machine) without really sacrificing much in terms of picture quality.
Now for your
client-side rates. As I mentioned in
this thread, there are a number of rates that a server operator sets in order to maximize the performance of his or her server. Based on these rates, a client needs to set their rates appropriately or they will experience choke on the server. All of these settings are adjusted in your console.
rate: I like to keep my rate around 25000, adjusting it down to 20000 or up to 30000 as needed. If you have a good internet connection, there is really no reason to set it below 25000, but slower internet people might find 20000 to be more beneficial.
cl_updaterate: This is the client-side version of sv_maxupdaterate on the server. The highest sv_maxupdaterate there is is 100, so setting your cl_updaterate to 101 should be good. If the sv_maxupdaterate is lower than 100, your cl_updaterate will automatically be lowered to compensate. But, if you're running on a crappy internet connection, you may have to lower your cl_updaterate. If your updaterate is too high, you'll tend to have a jumpy ping and you'll get Flush Entity Packet errors.
cl_cmdrate: This should be set to about the average number of fps you're getting. So if you have a computer that gets about 100 fps all the time, set it to 101. If your computer generally only pulls about 40 fps, set it lower. If your cl_cmdrate is too high, you'll tend to get Flush Entity Packet errors.
choke: Choke is caused when you're sending out too much information for the server to receive. That is to say, your rates are set too high for the server's rates. You can check your choke by typing "net_grap 3" into your console. If you're getting a lot of choke, trying lowering your rates. Try lowering your rate and your cl_updaterate to fix the problem. I've even found a couple servers where I get choke unless I lower my fps_max, as well.
It is also important to
adjust your mouse sensitivity while playing as well.
Probably the most important aspect is to turn off mouse acceleration. Mouse acceleration is the feature that makes it so that if you move your mouse faster, the mouse pointer will go further with the same distance. It makes it extremely difficult to develop any sort of muscle memory in the game.
With mouse acceleration off, the only thing you need to learn is that moving the mouse this
far turns my character this much. If your mouse acceleration is on, however, you need to learn that moving your mouse this
far and this
fast will move my character this much, but if I move the mouse slower he won't turn as far. That gives so much variation to your gameplay that it becomes very hard to develop consistency.
There are two things you need to do to turn off mouse acceleration. First off, go to your mouse properties in windows. (Probably something like Control Panel > Hardware > Mouse.) Once there, go to the "Pointer Options" tab and uncheck "Enhance Pointer Precision". That will turn off mouse acceleration in windows, but the game will still try to force mouce acceleration. So now, go your "Library" in steam. Right click on Counter Strike (or Condition Zero) in the game list, and choose Properties. Click on Set Launch Options and enter "-noforcemaccel -noforcemparms -noforcemspd" into the box. This will force the game to honour the no mouse acceleration setting.
Second off is your mouse sensitivity. Generally speaking, a good mouse sensitivity is one swipe of the mouse should turn your character 180 degrees. A higher mouse sensitivity will make it very difficult to switch accurately between enemies that are very close together, and will also make it difficult to be accurate when zoomed in with an awp or scout. A lower mouse sensitivity will make it very difficult to turn around if you start to get shot in the back. For most people, the 180-degree-per-swipe setting is around 3-5 in the mouse sensitivity options, but you should pay more attention to getting that rotation rather than making sure that your sensitivity is "normal" or something.
Zoom Sensitivity Ratio - this is a setting that will allow you to move faster when scoped in than normal. When scoped in with an awp, you will notice it seems like you run really slowly, and that you need to move your mouse a LOT further to get a full rotation. Setting zoom_sensitivity_ratio in the console will help that out a lot. (You will have to set zoom_sensitivity_ratio in a userconfig.cfg file if you want it to automatically set each time you load the game - otherwise it will reset to the default every time.) I found zoom_sensitivity_ratio 1.5 to be pretty darned good.
ex_interp - ex_interp is a setting that helps compensate for the lag caused by having to send information from my computer, to the server, to the enemy's computer when I shoot at an enemy. ex_interp 0.1 is the default setting, and it basically causes the hitboxes to lag a bit behind the enemy's actual position. ex_interp 0.01 helps correct that lag a bit and causes the hit boxes to be more accurately displayed. It makes the enemy look like they jump around a bit, but the hit boxes are more accurate. Some people say to use .1 if you're just pubbing but to switch it to .01 if you're in a match (for accuracy), but I really don't know.
ex_interp represents the number of real frames your computer renders vs the number of guessed frames. A higher ex_interp represents a higher number of guessed frames (making the gameplay look smoother, but causing the hitboxes to be out of sync with the character). A lower ex_interp represents a lower number of guessed frames, which makes the characters look jumpy, but makes the hit boxes more aligned with the actual position of the character. If you have a crappy computer or a crappy connection, having a higher ex_interp will make your gameplay a lot smoother, and you'll also probably end up registering more hits. If you have a better computer and a better connection, consider setting it to ex_interp .01 - there won't be very much lag between your game and what the server is registering, so your hits will register more accurately.
Here's
a video that shows what ex_interp 0.1 looks like if anybody is curious.