No Way!
How many times have we typed this in response to a seemingly impossible event such as emptying our guns at close range into the enemy's back only to watch them turn around, maybe even reload and take us out with 4 shots (or less!). Or, for those of us with DSL or Cable, how many times have we scratched our heads wondering how that guy on dialup with nearly 300 ping always has the best score? Cheater! is what comes out of our keyboard next, right? Granted, there are more and more people cheating in CS and I've no doubt we've all been the victim of real cheating in varying degrees, but; there's another possible explanation: your settings are still/always at the defaults and that guy's settings are tuned to this particular server. "yeah, right" you say? read on and try it for yourself.
Get your settings right!
I can't emphasize enough the importance of these settings to the way Counter-Strike plays, or doesn't... Once you've tuned them to a particular server these settings can make your online multiplayer experience very similar to the single player game experience: ie you actually hit what you're shooting at! So much so that you will absolutely get accused of cheating, instead of getting mad, say "thank you" and direct the poor soul who's sure you're cheating right here to this page so that they too might partake of the experience. It's possibly the best way to demonstrate that indeed you were not cheating.
Warning: Even with correct settings, there are many servers that will show you packet-loss in your net_graph (more on both of these later). This game is about both of you, their server, your client. A server which is too busy doing other things to properly service the clients, or perhaps too slow either in it's cpu, disk, connection to the internet, etc. will not provide a great experience no matter what your settings are, tuned settings will help quite a bit, but the loss will always be there.
To view a setting in-game you'll need to bring down the console, the default key for this is the ~ (tilde) key located to the left of the numeric "1" key on your keyboard, if nothing happens on-screen when you hit that key go here and follow the instructions to get your console back, you're gonna need it. Once the console has come down, type in the setting you're trying to view, if nothing happens check your spelling otherwise the setting will appear on the next line with it's current value following it on the same line. To change a setting type the setting followed by the desired value on the same line. Remember, the up/down arrows allow you to scroll through some of the history of what you've typed as well as all the messages from the server and the chat messages that have occurred throughout the game.
One last thing before we get to the actual settings, these settings aren't static, meaning you'll probably have to change them during a game even if you stay on the same server for map after map. Why? a few reasons: many server admins also play on their servers, and it just won't do to have somebody else constantly beating them out. So, they tend to twiddle and toggle things like "lag-compensation", or change the max cl_cmdrate/updaterates, etc. depending on how they are doing at the time. Sadly, it won't get printed on your screen that the admin has changed one of these 5 settings, they aren't like friendly-fire, gravity, bomb timers or the like, they can and are changed in secret, get over it and adjust and most of all be aware that they can and will be changed during the game, especially if the Admin or his friends/clanmates are playing. Second, the internet is a far-from-static entity itself, meaning loads change and connections vary in between your client and the server, so too will your settings have to change to compensate. Third, many of the servers you'll be playing on are located at colleges, and are by nature "shared" by other students/processes, this will affect the ability of the server to service clients, and it's bandwidth/connection to the internet. Now, let's get to the settings in question, as I said there are only 5.
Rate
Determine the range of this setting before joining the server. How? select a server and click "server info" and look for SV_MAXRATE in the listing of server variables. Set your rate at or just below this number, never higher. Also take note of the SV_MINRATE setting and don't set your rate below it. If this setting is zero (0) then the sky's the limit, use your own judgement based on your type of connection and it's past capabilities, this is a thing you've got to get a feel for and so no hard-fast rules apply but: on dialup I generally don't go beyond 6000 and on my cable (128K up/512K down) i go anywhere from 12000 to 25000 depending on what the net_graph tells me and whether I'm hitting anything I'm shooting at, generally speaking exhorbitant rate values make you a better target for the enemy and don't do much for you, avoid the obscenely high numbers guys.
CL_Cmdrate/CL_Updaterate
Ok, what do these settings mean? They are *almost* self-explanatory, except for the defaults which are: 30 for cl_cmdrate and 20 for cl_updaterate. What does it all mean to you? The defaults are for dial-up. Sooo, if you got a phat connection, jack 'em up! I usually go for a cl_cmdrate of 60 and a cl_updaterate of 40 when I can get away with it. These settings fall totally into the category of "get a feel for it", the main thing to know is the server sets the min/max on these and it can be changed in secret.
CL_LC/CL_LW
These 2 default to "1" or on. They go together. The first is lag-comp(LC) and the second represents firing-feedback in the form of bullet-puffs and blood splats, and together they represent the infamous lag-compensation that you may have heard about. Lag-comp is the "new" way the game "compensates" for the players with high-ping (ie: dialup). Some of you may remember the days when whoever was "winning" the game was also the player with the lowest ping, no more. How does it work? Glad you asked, heh. When player A, "the shooter" who has 90 ping fires a round at player B, "the target" who has 250 ping, the server determines the difference between the pings, in this case 160, and "compensates" the shooter's bullet with the target's movement accordingly, kinda like time-travel, thus effectively equalizing the aiming/shooting/hitting aspect of the game for players at all pings.
Get it? The idea, (and it works well) is to equalize things between all of the players' radically different pings, from the wired-in admin's 20 ping to the worst-nightmare-dialup's 360 ping. The problem is, and especially if you've got a phat connection, lag-comp only seems to help the high-ping players, while your phat connection seems to make you a really, really excellent target for them. On server's without any really high ping players it almost doesn't matter (unless of course, the admin's playing) Additionally, there are "ping-cheaters" who have been able to fake their real ping to the server, thus fooling the lag-comp code and making themselves almost "un-hittable". So; If you're pinging below 175 or so and can't seem to *buy* a kill no matter what, try turning these both to off(0) and see if you hit what you shoot at, otherwise leave 'em on(1). As with the other settings here, the admin can (and will!) change this value at any time in secret, Doh! I know this because I've run my own dedicated linux server from time to time, and let me tell you when you're wired to the server on a lan and you turn off the lag-comp when everybody else has it "on", boy, you can almost run around knifing and win the game, sad, but true.