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.json
matchzy_loadmatch_url "https://example.com/match.json" "Authorization" "Bearer <token>"
Teams are locked to their rosters, the veto runs if configured, and events go to your remote log URL.
Series and veto¶
num_mapssets the series length.maplistis the map pool.- With
"skip_veto": true(default) the firstnum_mapsmaps are played in order. - With
"skip_veto": falseteams.banand.pickin chat. Set the order withveto_mode, or let MatchZy generate one. 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).
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. Admins are exempt. |
matchzy_whitelist_enabled_default true |
Only SteamIDs in whitelist.cfg may join. |
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¶
- 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 are restored (matchzy_reset_cvars_on_series_end).
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.