Skip to content

Configuration

shmitzas edited this page Jun 29, 2026 · 21 revisions

Config file location: csgo/addons/swiftlys2/plugins/MixScrims/config.jsonc

Main Configuration

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

Maps Configuration

Config file location: csgo/addons/swiftlys2/plugins/MixScrims/maps.jsonc

The map pool is configured in a separate file under the MapsConfig section.

{
  "MapsConfig": {
    "Maps": [
      { "MapName": "de_mirage", "DisplayName": "Mirage", "WorkshopId": "", "CanBeVoted": true, "IsWorkshopMap": false },
      { "MapName": "de_dust2", "DisplayName": "Dust2", "WorkshopId": "", "CanBeVoted": true, "IsWorkshopMap": false }
    ]
  }
}

MapDetails Object

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

Default Map Pool

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

Discord Configuration

DiscordInvite Object

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

Embed Object

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

EmbedField Object

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

AnnouncementTimers Object

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

LeavePunishment Object

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

AutoResetOnLeaveConfig Object

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

VoteKickConfig Object

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.

RtvConfig Object

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: !rtv is 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 standard StartMapVotingPhase flow. 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.

Commands Object

Dictionary of command configurations. Each command has a key (command name) and a CommandInfo object:

CommandInfo Properties

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

Default Commands

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)

Clone this wiki locally