Configuration
All the configuration files related to MatchZy can be found in csgo/cfg/MatchZy
(If you have extracted the contents properly, MatchZy
folder should be there inside the cfg folder).
Creating Admins
There are two ways to create an admin for MatchZy; you can choose the most convenient one according to your preference.
-
Using CSSharp's Admin system:
You can create a new entry in the
/addons/counterstrikesharp/configs/admins.json
file with appropirate flags like mentioned in the below example:{ "WD-": { "identity": "76561198154367261", "flags": [ "@css/root" ] }, "Another admin": { "identity": "SteamID 2", "flags": [ "@css/config", "@css/rcon" ] } }
Flag-wise permissions:
@css/root
: Grants access to all admin commands@css/config
: Grants access to config related admin commands@custom/prac
: Grants access to practice related admin commands@css/map
: Grants access to change map and toggle practice mode@css/rcon
: Grants access to trigger RCON commands using!rcon <command>
@css/chat
: Grants access to send admin chat messages using!asay <message>
-
Using MatchZy's Admin system:
Inside
csgo/cfg/MatchZy
, a file namedadmins.json
should be present. If it is not there, it will be automatically created when the plugin is loaded. You can add Steam64 id of admins in that JSON file like mentioned in the below example:
Configuring MatchZy Settings (ConVars)
Again, inside csgo/cfg/MatchZy
, a file named config.cfg
should be present. This file is executed whenever the plugin is loaded. If you make any changes in this file and want to reload the config, simply execute exec MatchZy/config.cfg
command on the server.
matchzy_knife_enabled_default
- Whether knife round is enabled by default or not. This is the default value, but knife can be toggled by admins using .roundknife command.
Default: true
matchzy_minimum_ready_required
- Minimum ready players required to start the match. If set to 0, all connected players have to ready-up to start the match.
Default: 2
matchzy_stop_command_available
- Whether !stop/.stop command to restore the backup of the current round is enabled by default or not.
Default: false
matchzy_stop_command_no_damage
- Whether the stop command becomes unavailable if a player damages a player from the opposing team.
Default: false
matchzy_pause_after_restore
- Whether to pause the match after round restore or not. Players can unpause the match using !unpause/.unpause. (Both the teams will have to use unpause command) or admins can use
.fup
to force-unpause the gameDefault: true
matchzy_whitelist_enabled_default
- Whether whitelist is enabled by default or not. This is the default value, but whitelist can be toggled by admin using
.whitelist
commandDefault: false
matchzy_kick_when_no_match_loaded
- Whether to kick all clients and prevent anyone from joining the server if no match is loaded. This means if server is in match mode, a match needs to be set-up using
matchzy_loadmatch
/matchzy_loadmatch_url
to load and configure a match.Default: false
matchzy_demo_path
- Path of folder in which demos will be saved. If defined, it must not start with a slash and must end with a slash. Set to empty string to use the csgo root. Example:
matchzy_demo_path MatchZy/
Default: MatchZy/
matchzy_demo_name_format
- Format of demo filname. You may use {TIME}, {MATCH_ID}, {MAP}, {MAPNUMBER}, {TEAM1} and {TEAM2}. Demo files will be named according to the format specified. Do not include .dem format, it will be added automatically. Make sure to keep {TIME} in the format to create a unique demo file everytime.
Default: "{TIME}_{MATCH_ID}_{MAP}_{TEAM1}_vs_{TEAM2}"
matchzy_demo_upload_url
- If defined, recorded demo will be uploaded to this URL once the map ends. Make sure that the URL is wrapped in double quotes ("").
Example:
matchzy_demo_upload_url "https://your-website.com/upload-endpoint"
Default: ""
matchzy_kick_when_no_match_loaded
- Whether to kick all clients and prevent anyone from joining the server if no match is loaded. This means if server is in match mode, a match needs to be set-up using
matchzy_loadmatch
/matchzy_loadmatch_url
to load and configure a match.Default: false
matchzy_chat_prefix
- Chat prefix to show whenever a MatchZy message is sent to players. Available Colors: {Default}, {Darkred}, {Green}, {LightYellow}, {LightBlue}, {Olive}, {Lime}, {Red}, {Purple}, {Grey}, {Yellow}, {Gold}, {Silver}, {Blue}, {DarkBlue}, {BlueGrey}, {Magenta} and {LightRed}. Make sure to end your prefix with {Default} to avoid coloring the messages in your prefix color.
Default: [{Green}MatchZy{Default}]
matchzy_admin_chat_prefix
- Chat prefix to show whenever an admin sends message using
.asay <message>
. Avaiable Colors are mentioned above.Default: [{Red}ADMIN{Default}]
matchzy_chat_messages_timer_delay
- Number of seconds of delay before sending reminder messages from MatchZy (like unready message, paused message, etc). Note: Changing this timer wont affect the active timer, so if you change this setting in warmup, you will have to restart warmup to make the change effective.
Default: 13[{Red}ADMIN{Default}]
matchzy_playout_enabled_default
- Whether playout (play max rounds) is enabled. This is the default value, but playout can be toggled by admin using
.playout
command.Default: false
matchzy_reset_cvars_on_series_end
- Whether parameters from the cvars section of a match configuration are restored to their original values when a series ends.
Default: true
matchzy_use_pause_command_for_tactical_pause
- Whether to use !pause/.pause command for tactical pause or normal pause (unpauses only when both teams use unpause command, for admin force-unpauses the game).
Default: false
matchzy_autostart_mode
- Whether the plugin will load the match mode, the practice moder or neither by startup. 0 for neither, 1 for match mode, 2 for practice mode.
Default: 1
matchzy_save_nades_as_global_enabled
- Whether nades should be saved globally instead of being privated to players by default or not.
Default: false
matchzy_allow_force_ready
- Whether force ready using !forceready is enabled or not (Currently works in Match Setup only).
Default: true
matchzy_max_saved_last_grenades
- Maximum number of grenade history that may be saved per-map, per-client. Set to 0 to disable the limit and allow unlimited grenades to be stored.
Default: 512
matchzy_smoke_color_enabled
- If enabled, the smoke's color will be changed to player's team color (player's color seen in the radar) .
Default: false
matchzy_everyone_is_admin
- If set to true, everyone will be granted admin permissions for MatchZy.
Default: false
matchzy_show_credits_on_match_start
- Whether to show 'MatchZy Plugin by WD-' message on match start.
Default: true
matchzy_hostname_format
- The server hostname to use. Set to "" to disable/use existing. Available variables: {TIME}, {MATCH_ID}, {MAP}, {MAPNUMBER}, {TEAM1}, {TEAM2}, {TEAM1_SCORE}, {TEAM2_SCORE}
Default: MatchZy | {TEAM1} vs {TEAM2}
matchzy_match_start_message
- Message to show when the match starts. Use $$$ to break message into multiple lines. Set to "" to disable. Available Colors: {Default}, {Darkred}, {Green}, {LightYellow}, {LightBlue}, {Olive}, {Lime}, {Red}, {Purple}, {Grey}, {Yellow}, {Gold}, {Silver}, {Blue}, {DarkBlue}. Example usage: matchzy_match_start_message {Green} Welcome to the server! {Default} $$$ Agent models are not allowed and may lead to {Red}disqualification!{Default}
Default: ""
matchzy_loadbackup
- Loads a match backup from the given file. Relative to
csgo/MatchZyDataBackup/
.
matchzy_loadbackup_url
- Loads a match backup from a remote host by sending an HTTP(S) GET to the given URL. You may optionally provide an HTTP header and value pair using the header name and header value arguments. You should put all arguments inside quotation marks ("").
matchzy_remote_backup_url
- If defined, MatchZy will automatically send backups to this URL in an HTTP POST request. If no protocol is provided, http:// will be prepended to this value. Requires the SteamWorks extension.
matchzy_remote_backup_header_key
- If this and matchzy_remote_backup_header_value are defined, this header name and value will be used for your backup upload HTTP request.
Default: "Authorization"
matchzy_remote_backup_header_value
- If this and matchzy_remote_backup_header_key are defined, this header name and value will be used for your backup upload HTTP request.
Default: ""
matchzy_enable_damage_report
- Whether to show damage report after each round or not.
Default: "true"
matchzy_addplayer <steam64> <team1|team2|spec> [name]
- Adds a Steam64 to the provided team. The name parameter locks the player's name.
matchzy_removeplayer <steam64>
- Removes a Steam64 from all teams
Configuring Warmup/Knife/Live/Prac CFGs
Again, inside csgo/cfg/MatchZy
, files named warmup.cfg
, knife.cfg
, live.cfg
and prac.cfg
should be present. These configs are executed when Warmup, Knife, Live and Practice Mode is started respectively.
You can modify these files according to your requirements, or add live_override.cfg / live_wingman_override.cfg to make "overriding" config.
If these configs are not found in the expected location, MatchZy executes the default configs which are present in the code.
Whitelisting players
Again, inside csgo/cfg/MatchZy
, there will be a file called whitelist.cfg
. You can add Steam64 id of whitelisted players like mentioned in the below example:
Match/Players Stats and Data
Database Stats
MatchZy comes with a default database (SQLite), which configures itself automatically. MySQL Database can also be used with MatchZy!
Currently we are using 2 tables, matchzy_stats_matches
and matchzy_stats_players
. As their names suggest, matchzy_stats_matches
holds the data of every match, like matchid, team names, scores, etc.
Whereas, matchzy_stats_players
stores data/stats of every player who played in that match. It stores data like matchid, kills, deaths, assists, and other important stats!
Using MySQL Database with MatchZy
To use MySQL Database with MatchZy, open csgo/cfg/MatchZy/database.json
file. It's content will be like this:
{
"DatabaseType": "SQLite",
"MySqlHost": "your_mysql_host",
"MySqlDatabase": "your_mysql_database",
"MySqlUsername": "your_mysql_username",
"MySqlPassword": "your_mysql_password",
"MySqlPort": 3306
}
DatabaseType
from SQLite
to MySQL
and then fill-up all the other details like host, database, username, etc.
MySQL Database is useful for those who wants to use a common database across multiple servers!
CSV Stats
Once a match is over, data is pulled from the database and a CSV file is written in the folder:
csgo/MatchZy_Stats
. This folder will contain CSV file for each match (file name pattern: match_data_map{mapNumber}_{matchId}.csv
) and it will have the same data which is present in matchzy_stats_players
.
There is a scope of improvement here, like having the match score in the CSV file or atleast in the file name patter. I'll make this change soon!
Events and HTTP Logging
matchzy_remote_log_url
- The URL to send all events to (POST request). Set to empty string to disable. OpenAPI Doc for the events
Default: ""
Usage:matchzy_remote_log_url "url"
Alias:get5_remote_log_url
matchzy_remote_log_header_key
- If this and matchzy_remote_log_header_value are defined, this header name and value will be added in your HTTP Post requests' header.
Default: ""
Usage:matchzy_remote_log_header_key "Authorization"
Alias:get5_remote_log_header_key
matchzy_remote_log_header_value
- If this and matchzy_remote_log_header_key are defined, this header name and value will be added in your HTTP Post requests' header.
Default: ""
Usage:matchzy_remote_log_header_value "header_value"
Alias:get5_remote_log_header_value