Match Setup
What is it?
A match configuration file contains everything that MatchZy and your server needs to host a series. This includes locking players to their correct team and side, setting the map(s) and configuring the game rules.
Note: MatchZy can still be used for pug/scrim/practice without setting up matches (if matchzy_kick_when_no_match_loaded if set to false). Match setup is only required when you want to host a series and lock players in their correct team and side.
In this documentation, we'll see how we can setup a match in MatchZy using a JSON file (structure of the JSON file is given below). There are 2 commands available which can be used to load a match:
matchzy_loadmatch <filepath>: Loads a JSON match configuration file relative to thecsgodirectory.matchzy_loadmatch_url <url> [header name] [header value]: Loads a remote (JSON-formatted) match configuration by sending an HTTP(S)GETto the given URL. You may optionally provide an HTTP header and value pair using theheader nameandheader valuearguments. You should put all arguments inside quotation marks (""). ("").
Example
Example only
Required fields: "maplist", "team1", "team2" and "num_maps"``. If"matchid"` is left empty, it will be auto-generated by the server.
{
"matchid": 27,
"team1": {
"name": "Astralis",
"players": {
"76561197990682262": "Xyp9x",
"76561198010511021": "gla1ve",
"76561197979669175": "K0nfig",
"76561198028458803": "BlameF",
"76561198024248129": "farlig"
}
},
"team2": {
"name": "NaVi",
"players": {
"76561198034202275": "s1mple",
"76561198044045107": "electronic",
"76561198246607476": "b1t",
"76561198121220486": "Perfecto",
"76561198040577200": "sdy"
}
},
"num_maps": 3,
"maplist": [
"de_mirage",
"de_overpass",
"de_inferno"
],
"map_sides": [
"team1_ct",
"team2_ct",
"knife"
],
"spectators": {
"players": {
"76561198264582285": "Anders Blume"
}
},
"clinch_series": true,
"players_per_team": 5,
"cvars": {
"hostname": "MatchZy: Astralis vs NaVi #27",
"mp_friendlyfire": "0"
}
}
This file can be loaded using :
matchzy_loadmatch astralis_vs_navi_27.json(if you haveastralis_vs_navi_27.jsonin yourcsgodirectory)matchzy_loadmatch_url "https://<url>/astralis_vs_navi_27.json"
Other optional fields (Get5 compatible):
"skip_veto":falseby default, so amaplistwith more maps thannum_mapsis vetoed. Set it totrueto play the firstnum_mapsmaps of the list in order. Amaplistwith exactlynum_mapsmaps is always played in order."veto_first":team1(default),team2orrandom: the team that starts the default veto. Whenveto_modeis given, it is used exactly as written."side_type":standard(default),always_knife,never_knifeorrandom: how sides are chosen for maps without an entry inmap_sides."players"can also be an array of SteamID64s, e.g."players": ["76561198264582285", "76561197960265728"].true/falsefields also accept1/0.
Entries in "cvars" must be a real convar (like mp_friendlyfire) or a MatchZy/Get5 setting (like matchzy_remote_log_url), and the value cannot contain ", ; or line breaks. Console commands (e.g. quit, exec), MatchZy/Get5 commands that perform an action (such as matchzy_loadmatch_url or get5_endmatch), rcon_password and matchzy_everyone_is_admin are ignored and logged. matchzy_demo_path and matchzy_demo_name_format must be relative paths without ...
Current Limitations?
- Coaches cannot be added directly via this match configuration, hence to add a coach, add them to
"players"key of the team and then use.coach <teamside>command in the server to start coaching. - Only Steam64id is supported currently.
These limitations will be resolved ASAP in the next updates! :D