Running a match
There are three ways to run a match, from quick pug to fully scripted tournament.
- Admin types
.match. - Players join any team and type
.ready. - When
matchzy_minimum_ready_requiredplayers are ready, the knife round starts. - Knife winners type
.stayor.switch, and the match goes live.
Teams are not locked; anyone can join either side.
Admin types .matchsetup (needs CS2MenuManager).
The wizard walks through series length (BO1, BO2, BO3, BO5), maps, veto and teams, then loads
the match exactly like a match config. See Admin menus.
Write a match config JSON and load it from the console, RCON or a panel:
matchzy_loadmatch cfg/MatchZy/match.jsonmatchzy_loadmatch_url "https://example.com/match.json" "Authorization" "Bearer <token>"Players can only join their own team from the team menu, anyone not in the match is moved
to Spectator, substitutes wait while their side has players_per_team players,
the veto runs if configured, and events go to your remote log URL.
Series and veto
Section titled “Series and veto”num_mapssets the series length.maplistis the map pool.- A pool of exactly
num_mapsmaps, or"skip_veto": true, plays the maps in order. - Otherwise teams
.banand.pickin chat (Get5 default). Set the order withveto_mode, or let MatchZy generate one (veto_firstpicks the starting team). If a captain leaves, a teammate takes over. map_sidessets the starting side per map (team1_ct,team2_t,knife, …).clinch_seriesends a BO3 at 2-0.
Workshop maps work everywhere a map name does: workshop/<id>, ws/<id> or ws:<name> (hosted collection).
Tournament timeouts
Section titled “Tournament timeouts”| Setting | What it does |
|---|---|
matchzy_forfeit_ready_timeout 600 |
A team not ready 10 minutes after the ready phase began loses by forfeit. |
matchzy_forfeit_join_grace_seconds 60 |
A registered player who joins in the last minute still gets up to 60 seconds to ready up before their team forfeits (default 60). |
matchzy_forfeit_veto_ready_timeout 300 |
The same for the ready-up before the map veto (-1 = same as above, 0 = no limit). |
matchzy_forfeit_leave_timeout 300 |
A team with nobody on the server for 5 minutes during a live map loses by forfeit. |
matchzy_veto_step_timeout 60 |
A captain who does not ban, pick or choose a side within 60 seconds gets a random choice. |
If neither team is ready in time, the series ends in a tie. Admins can add time with .addreadytime <seconds>. Get5 names: get5_time_to_start and get5_time_to_start_veto.
All three are off (0) by default. A forfeit ends the series with the other team as winner (series_end), like get5_endmatch team1|team2.
Locking the server to the match
Section titled “Locking the server to the match”| Setting | Effect |
|---|---|
matchzy_kick_when_no_match_loaded true |
Players not on the loaded roster are kicked on join. Everyone is kicked when no match is loaded, also the players still on the server when a series ends (for example after a forfeit). Admins are exempt. |
matchzy_whitelist_enabled_default true |
Only SteamIDs in whitelist.cfg may join. |
Players vs bots
Section titled “Players vs bots”One team can be "players": "any" (any human) and the other "bots": true. Bots are filled to players_per_team, stay on their side through halftime and overtime, always count as ready, and are recorded in stats. The map list must be fixed. Example in the match config reference.
After the match
Section titled “After the match”- Stats are written to the database and a CSV. See Stats.
- The demo stops and is uploaded if configured. See Demos.
- With
matchzy_match_end_auto_changelevelthe server changes to the next map by itself. Panel-loaded matches (matchzy_loadmatch_url) leave the map change to the panel. - Cvars from the match config’s
cvarsblock and the hostname from before the match are restored (matchzy_reset_cvars_on_series_end).
Stopping a match
Section titled “Stopping a match”.stopmatch (or the Stop Match button in .ma) stops the match in any state, from setup to live, and resets to warmup. The database gets an end time and no winner, so stopped matches are easy to tell apart.