Competitive 5v5 Config (ESL Style) for CS 1.6

November 5, 2025 Daemon666 9 min read 259 vistas

A competitive 5v5 config is not just \"public server with friendly fire on.\" It is a specific, deliberately austere ruleset — fixed economy timings, no auto-balancing, restricted spectating, friendly fire enabled with team-kill punishment removed — loaded on demand for a match and unloaded afterward. This walks through the cvars that matter, what belongs in the config versus a match plugin, and how to keep it from bleeding into your public settings.

1. Keep the match config separate

Do not put competitive values in server.cfg. Create a dedicated file, cstrike/match.cfg, that you exec when a match starts and that a public config overwrites when it ends. That way your public server.cfg is the resting state and the match settings are a temporary overlay:

// in-game / rcon
exec match.cfg      // switch to competitive rules
// ... play the match ...
exec public.cfg     // restore public rules

2. The core round and economy cvars

These are the values ESL-style 5on5 has used for years. Units matter — roundtime and buytime are in minutes (see the mp_ cvars reference):

// match.cfg -- round & economy
mp_freezetime 6
mp_roundtime 1.75          // 1:45, standard for de_ maps
mp_startmoney 800
mp_buytime 0.25            // 15 seconds
mp_c4timer 35              // classic competitive fuse
mp_maxrounds 0             // the match plugin controls score, not this
mp_timelimit 0             // no time-based map change during a match

3. Fair-play and team cvars

Competitive turns off the conveniences a public server wants. Friendly fire is on, but automatic team-kill punishment is off because the referee/admin handles it; teams are never auto-shuffled:

// match.cfg -- fair play
mp_friendlyfire 1
mp_tkpunish 0              // FF on, but no auto-punish -- admins decide
mp_autoteambalance 0       // never move players between teams
mp_limitteams 0            // 5v5 is set by the players, not the engine
mp_hostagepenalty 0        // irrelevant on de_ maps; avoid accidental kicks
mp_forcecamera 2           // dead players locked -- anti-ghosting
mp_fadetoblack 0           // most leagues play with this off; agree beforehand

mp_forcecamera 2 (also seen as mp_forcechasecam on some builds) is the anti-ghosting rule: a dead player cannot free-fly the map and call positions. Confirm the exact cvar name on your build — type it in console with no argument and see if it echoes a value.

4. Movement, sound and rates

Competitive play wants full information and headroom on the network. Keep footsteps and flashlight on, standard movement speed, and generous rates so nobody is rate-limited during a clutch:

// match.cfg -- feel & network
mp_footsteps 1
mp_flashlight 1
sv_maxspeed 320
sv_maxrate 25000
sv_minrate 20000
sv_maxupdaterate 101
sv_minupdaterate 60
sv_cheats 0
mp_logdetail 3             // log attacks + kills for review
mp_logmessages 1

The update rate ceiling is only real if your server FPS can sustain it — promising 101 on a 60 FPS box just produces choke. See the sys_ticrate truth and the essential cvars list.

5. Let a match plugin run the actual match

The config sets the rules; it does not run the match. The score, the MR15 half-switch, the knife round for side selection, the ready-up (.ready/.live), warmup, and the score printout are all the job of a match/PUG plugin. Do not try to reproduce that with mp_maxrounds alone — you will get a map change mid-match at the worst moment. Install a maintained match plugin and let it own the flow; the CSB Match Manager handles ready-up, knife round, half-switch and score for a standard 5v5. On ReGameDLL these plugins are more reliable because round-end and money hooks are exposed cleanly through ReAPI.

Common errors

  • Map changes in the middle of a match — you left mp_maxrounds or mp_timelimit non-zero and it fired. Zero both and let the match plugin end the map.
  • Buytime is way too longmp_buytime 15 is 15 minutes. Use 0.25 for 15 seconds.
  • Dead players calling positionsmp_forcecamera is 0. Set it to lock spectating; confirm the cvar name your build uses.
  • Teams get shuffled at halftimemp_autoteambalance 1 is still on from the public config. The match overlay must set it to 0.
  • Public settings never came back — you execed match.cfg but never restored the public config. Keep a public.cfg and exec it (or change the map) after the match.
  • A cvar \"does not exist\" — it is a ReGameDLL-only cvar and you are on stock CS. Install ReGameDLL or drop that line.

Verification

Load the config and read the key values back before anyone joins:

exec match.cfg
mp_freezetime
mp_roundtime
mp_friendlyfire
mp_autoteambalance

Each should echo the competitive value. Then run a knife round through your match plugin and confirm the side switch and score are correct at MR15. Finally, exec public.cfg and verify friendly fire and auto-balance return to your public defaults — the overlay is only safe if it cleanly reverts.

Colaboradores: Daemon666 ✦
Compartir: