-
-
Notifications
You must be signed in to change notification settings - Fork 3
Configuration
Config file location: csgo/addons/swiftlys2/plugins/MixScrims/config.jsonc
| Variable | Type | Default | Description |
|---|---|---|---|
TestMode |
bool |
false |
Enables test mode with staging overrides and bot support for development |
DetailedLogging |
bool |
true |
Enables verbose logging for debugging purposes |
GlobalServerPrefix |
string |
"[ [darkred]MixScrims [default]]" |
Global prefix for server messages |
MinimumReadyPlayers |
int |
10 |
Minimum number of players required to be ready before a match can start |
RequireAllConnectedPlayersToBeReady |
bool |
true |
If true, all connected players must be ready. If false, only minimum required |
AdminCommandsBypassPlayerLimit |
bool |
false |
If true, admin commands (!forceready, !forceunready, !mix_start) bypass the MinimumReadyPlayers check |
FaceitLikeDamageControl |
bool |
true |
Reflects friendly fire damage back to the attacker (FACEIT-style) |
MoveOverflowPlayersToSpec |
bool |
true |
Automatically moves extra players (beyond 10) to spectator |
DisallowVotePreviousMaps |
int |
2 |
Number of recently played maps to exclude from voting |
DefaultVoteTimeSeconds |
int |
30 |
Duration of the map voting phase in seconds |
TimeoutDurationSeconds |
int |
60 |
Duration of team timeouts in seconds |
Timeouts |
int |
3 |
Number of timeouts available per team |
PreventNotPickedPlayersFromJoiningOngoingMatch |
bool |
false |
Prevents players who weren't picked from joining an ongoing match |
KickPlayersNotInMatch |
bool |
false |
Automatically kicks players who are not participating in the match (not picked or spectating) |
SkipTeamPicking |
bool |
false |
Skips the team picking phase and assigns teams randomly |
AllowVolunteerCaptains |
bool |
false |
Allows players to volunteer themselves as captains |
SkipMapVoting |
bool |
false |
Skips map voting and uses the first configured map |
DisableCaptains |
bool |
false |
Completely disables the captain system |
ShowReadyStatusInChat |
bool |
true |
Displays player ready status in the chat |
ShowReadyStatusInScoreboard |
bool |
true |
Displays player ready status in the scoreboard |
ShowReadyStatusInCenterHtml |
bool |
true |
Displays player ready status in center HTML panel |
HideReadyStatusInCenterWhenReady |
bool |
false |
Hides CenterHTML display of ready/not ready players when a player is already ready |
MovePlayersToSpecDuringTeamPicking |
bool |
true |
Moves unpicked players to spectator during the team picking phase |
ChatAnnouncementTimers |
object |
See AnnouncementTimers | Configuration for automated chat announcement intervals |
CommandRemindersLocalization |
array |
["timeout", "ready", "invite"] |
List of localization keys for commands to remind players about |
VoteKick |
object |
See VoteKickConfig | Configuration for the in-game teammate vote kick system |
Rtv |
object |
See RtvConfig | Configuration for the warmup !rtv (rock the vote) command |
AutoResetOnLeave |
object |
See AutoResetOnLeaveConfig | Configuration for automatically resetting the match when players leave |
PunishPlayerLeaves |
bool |
false |
Enables the player leave punishment system |
PlayerLeavePunishment |
object |
See LeavePunishment | Configuration for player leave punishment settings |
Commands |
object |
See Commands | Dictionary of command configurations with permissions and aliases |
Config file location: csgo/addons/swiftlys2/plugins/MixScrims/maps.jsonc
The map pool is configured in a separate file under the MapsConfig section.
Each entry in the Maps array uses the following properties:
| Variable | Type | Default | Description |
|---|---|---|---|
MapName |
string |
"" |
Technical CS2 map name (e.g., de_mirage) |
DisplayName |
string |
"" |
Friendly name displayed to players in menus (e.g. Mirage) |
WorkshopId |
string |
"" |
Workshop map ID (leave empty for official maps) |
CanBeVoted |
bool |
true |
Whether this map appears in the voting menu |
IsWorkshopMap |
bool |
false |
Set to true for workshop maps. If true, WorkshopId must be provided |
The default configuration includes the following maps:
- Mirage, Dust2, Inferno, Anubis, Overpass, Ancient, Ancient Night, Nuke, Vertigo
Config file location: csgo/addons/swiftlys2/plugins/MixScrims/discord_config.jsonc
Discord invites are configured in a separate file with support for rich embeds.
| Variable | Type | Default | Description |
|---|---|---|---|
EnableDiscordInvites |
bool |
true |
Enables or disables the Discord invite feature |
DiscordInviteDelayMinutes |
int |
5 |
Cooldown period (in minutes) between Discord invite command uses |
Invites |
array |
See DiscordInvite | List of Discord webhook configurations |
Array of Discord webhook configurations with embed support. Each invite object contains:
| Variable | Type | Default | Description |
|---|---|---|---|
WebhookUrl |
string |
"https://discord.com/api/webhooks/YOUR_WEBHOOK_ID/YOUR_WEBHOOK_TOKEN" |
Discord webhook URL |
Username |
string |
"MixScrims Bot" |
Bot username displayed in Discord |
AvatarUrl |
string |
"https://i.imgur.com/SXwCE1e.png" |
Bot avatar URL |
Content |
string |
"@here **We need more players!**" |
Message content with role mentions |
Embed |
object |
See Embed | Rich embed configuration |
Rich embed configuration for Discord invites:
| Variable | Type | Default | Description |
|---|---|---|---|
Title |
string |
"Players Needed for Mix" |
Embed title |
Description |
string |
"We're looking for **{0} more player(s)**..." |
Embed description. {0} = players needed |
Color |
string |
"29F24B" |
Embed color in hex format (without #) |
Footer |
string |
"React quickly - match starts..." |
Embed footer text |
Fields |
array |
See EmbedField | Array of embed fields |
Embed field configuration:
| Variable | Type | Default | Description |
|---|---|---|---|
Name |
string |
":bar_chart: Status" |
Field name with emoji support |
Value |
string |
"**{0}** player(s) needed" |
Field value. {0} = players needed |
Inline |
bool |
true |
Whether the field should be inline |
| Variable | Type | Default | Description |
|---|---|---|---|
PlayersReadyStatus |
int |
30 |
Interval (in seconds) for announcing player ready status in chat |
CaptainsAnnouncements |
int |
30 |
Interval (in seconds) for announcing captain-related information |
CommandReminders |
int |
320 |
Interval (in seconds) for sending command reminders to players |
| Variable | Type | Default | Description |
|---|---|---|---|
ServerCommand |
string |
"sw_ban {steamId} {duration} {reason}" |
Command to execute when punishing a player. Variables: {steamId}, {duration}, {reason}
|
BanDurationMinutes |
int |
15 |
Duration of the ban in minutes |
BanReason |
string |
"Leaving during a MixScrims match" |
Reason displayed for the ban |
Sensitivity |
int |
2 |
Determines which states trigger punishment. 0 = Match/Timeout only, 1 = +Knife/Side Pick, 2 = +Team Pick (all states) |
WaitBeforePunishmentSeconds |
int |
300 |
Time to wait (in seconds) before punishing a disconnected player |
| Variable | Type | Default | Description |
|---|---|---|---|
Enabled |
bool |
false |
Enables automatic match reset when too many players leave during a match |
MinimumPlayersRequired |
int |
0 |
Minimum number of players that must remain connected to avoid an auto-reset. 0 disables the player count check |
GracePeriodSeconds |
int |
10 |
Time to wait (in seconds) after a player leaves before checking whether to reset |
| Variable | Type | Default | Description |
|---|---|---|---|
Enabled |
bool |
true |
Enables or disables the !votekick command entirely |
VoteKickTime |
int |
30 |
Time in seconds before an active vote kick expires if not all eligible players have voted |
How it works: The initiating player automatically votes YES. All other teammates (excluding the target) must unanimously vote YES within the time limit for the kick to pass. Any NO vote immediately fails the vote. Bots automatically vote YES. Only one active vote per team is allowed at a time, but CT and T teams may each run a vote simultaneously.
| Variable | Type | Default | Description |
|---|---|---|---|
Enabled |
bool |
true |
Enables or disables the !rtv (and !rockthevote alias) command entirely. When false the alias is not registered and the primary command silently no-ops. |
MinimumPlayersRequired |
int |
2 |
Minimum number of non-bot players that must be connected before any RTV vote will be accepted. |
MinimumVotesRequired |
int |
2 |
Floor on the YES-vote threshold. The effective threshold is max(MinimumVotesRequired, ceil(humans * VoteThresholdRatio)). |
VoteThresholdRatio |
double |
0.5 |
Fraction of connected non-bot players whose YES votes are required to pass. With the default 0.5 and 5 humans the threshold is 3; with 6 humans it stays 3; with 7 humans it is 4. |
How it works:
!rtvis only usable during Warmup. Each player can vote YES at most once; re-running the command yields an "already voted" message. Bots are excluded from both the voter set and the human count. When the threshold is reached the match transitions to the Map Voting phase via the standardStartMapVotingPhaseflow. If a voter disconnects their vote is dropped and the threshold is re-checked against the new human count, which can immediately pass the RTV if enough humans left. The voter set is cleared on plugin reset, on Warmup map load, and after a successful RTV.
Dictionary of command configurations. Each command has a key (command name) and a CommandInfo object:
| Variable | Type | Description |
|---|---|---|
Permission |
string |
Required permission to use the command (empty string = no permission required) |
Aliases |
array |
List of alternative command names that trigger the same command |
| Command | Permission | Aliases | Description |
|---|---|---|---|
mix_reset |
managemix |
reset |
Resets the match state |
mix_start |
managemix |
start |
Manually starts the match |
forceready |
managemix |
fr |
Forces a player to ready status |
forceunready |
managemix |
fur |
Forces a player to unready status |
captain |
managemix |
cap, capt
|
Sets a player as captain |
map |
managemix |
changemap |
Changes the map |
maps |
managemix |
maplist |
Shows the available maps |
maplist_all |
managemix |
allmaps, maps_all
|
Shows all maps including non-votable |
ready |
(none) | r |
Marks player as ready |
unready |
(none) |
u, ur
|
Marks player as unready |
revote |
(none) | rv |
Allows player to change their map vote |
rtv |
(none) | rockthevote |
Votes during warmup to restart the map vote (rock the vote, gated by Rtv.Enabled) |
timeout |
(none) | pause |
Calls a team timeout |
surrender |
(none) | gg |
Initiates team surrender vote |
invite |
(none) | inv |
Sends Discord invite for more players |
stay |
(none) | st |
Votes to stay on the same side after knife round |
switch |
(none) | swap |
Votes to switch sides after knife round |
volunteer_captain |
(none) |
volcap, selfcapt
|
Volunteers to be a captain (if AllowVolunteerCaptains is enabled) |
votekick |
(none) | vk |
Initiates a team vote to kick a teammate (if VoteKick.Enabled is true) |
{ "MapsConfig": { "Maps": [ { "MapName": "de_mirage", "DisplayName": "Mirage", "WorkshopId": "", "CanBeVoted": true, "IsWorkshopMap": false }, { "MapName": "de_dust2", "DisplayName": "Dust2", "WorkshopId": "", "CanBeVoted": true, "IsWorkshopMap": false } ] } }