A Balanced Public Server Config (Fun but Fair)
A public CS 1.6 server lives or dies on feel. Too strict and it plays like a scrim nobody asked for; too loose and it is a team-killing free-for-all. The sweet spot is a config that keeps rounds moving, gives players enough money to have fun, and quietly stops the behaviors that drive people away. This is a complete, commented starting point you can paste and tune.
1. The philosophy
Every value below leans toward pace and forgiveness over realism: shorter freezetime, a touch more starting money, generous but not silly buy time, and team-balance plus grief punishment turned on so one bad actor cannot wreck a round. It is not a competitive ruleset — for that you would tighten timing and disable the conveniences. This is tuned for a busy public box where players come and go.
2. Identity and networking
// --- identity ---
hostname "My CS 1.6 Server | Fun Public"
sv_contact "[email protected]"
rcon_password "USE-A-LONG-RANDOM-STRING"
sv_password "" // public
// --- visibility / net ---
sv_lan 0 // MUST be 0 to show in the master list
sv_region 255 // 255 = world; set your real region
sv_maxrate 25000
sv_minrate 15000
sv_maxupdaterate 101
sv_minupdaterate 30
sv_timeout 60
sv_lan 0 and a long rcon_password are the two non-negotiables; the rest of the server-level cvars are explained in the essential server cvars list.
3. Round timing and economy
// --- timing (minutes unless noted) ---
mp_freezetime 3 // seconds; short so nobody waits
mp_roundtime 3
mp_buytime 0.5 // 30 seconds
mp_c4timer 35
mp_timelimit 30 // map ends every 30 min, drives the vote
// --- economy ---
mp_startmoney 800
mp_maxrounds 0
mp_winlimit 0
Remember mp_buytime and mp_roundtime are in minutes while mp_freezetime and mp_c4timer are in seconds — mixing them up is the classic mistake covered in the mp_ cvars reference. A 30-minute mp_timelimit is what feeds the end-of-map vote; set it before you configure MapChooser.
4. Fair play and anti-grief
// --- teams / fairness ---
mp_friendlyfire 0 // off for casual public; 1 needs tkpunish
mp_tkpunish 1
mp_autoteambalance 1
mp_limitteams 1 // block stacking beyond 1-player difference
mp_hostagepenalty 5 // kick after 5 hostage kills
mp_forcechasecam 0
mp_fadetoblack 0 // 0 keeps freecam for dead players
Friendly fire off is the friendliest default for a mixed-skill public; if you turn it on for realism, keep mp_tkpunish 1 so team-killers pay for it. mp_limitteams 1 and mp_autoteambalance 1 together stop the five-friends-stack-CT problem that empties a server.
5. Downloads, logging and spam control
// --- downloads ---
sv_allowdownload 1
sv_allowupload 1
sv_downloadurl "http://dl.example.com/cs" // see FastDL guide
// --- logging ---
log on
mp_logmessages 1
mp_logdetail 3
// --- spam / griefing ---
decalfrequency 30 // seconds between sprays
sv_cheats 0
pausable 0
FastDL keeps map changes fast — wire it up with the FastDL setup guide. Logging on from day one is what lets you answer "who did that?" later; see parsing server logs.
6. Load your admin and map settings last
// at the end of server.cfg
exec mapcycle-note.cfg // optional reminders / comments
// AMXX executes amxx.cfg on its own, after this file
Gameplay cvars belong here in server.cfg; AMXX-specific settings belong in amxx.cfg, which runs later and will override duplicates. Keep admin power tight per the admin-abuse guide, and add a chat-based adverts plugin for rules reminders rather than a noisy HUD.
Troubleshooting
- Server invisible online —
sv_lan 1. The single most common cause; it must be 0. - Rounds feel sluggish — freezetime or roundtime too high, or you set
mp_roundtimethinking it was seconds. It is minutes. - Team stacking —
mp_autoteambalanceormp_limitteamsoff. Turn both on. - Team-kill grief — friendly fire on without
mp_tkpunish 1, or off but players griefing another way. Adjust to taste. - A value keeps reverting —
amxx.cfg, a per-map config, or ReGameDLL'sgame.cfgre-sets it after server.cfg. Trace the order.
Verification
Change the map to reload the config, then read back the values that most affect feel:
sv_lan
mp_freezetime
mp_buytime
mp_friendlyfire
Confirm each echoes what you set, then play a round or two — a stopwatch on freezetime and buy time settles any doubt about the minutes-versus-seconds cvars. Once it feels right, layer voting with MapChooser and lock down admin access before you invite the public in.









