This is a collection of plugins for minqlxtended.
The Python dependencies are included in requirements.txt. Make sure you run python3 -m pip install -r requirements.txt first.
This repository contains original plugins from the minqlx-plugins repository which have been improved or further documented.
These need minqlxtended v1.0.0 or later, and won't run on minqlx. If you're porting a plugin of your own, see the upgrade guide.
This is a list of plugins and their CVARs. Set the CVARs by passing them as a command line argument or using server.cfg
like you would with any other QLDS CVAR.
- aliases: Adds
!alias <id>to look up the other names a player has used, matched on the IP addresses recorded against their Steam ID. Also adds!clearaliases(owner only) to wipe every stored alias.qlx_aliasLimitOutputLines: The maximum number of alias lines to print before the remainder of the output is truncated.- Default:
15
- Default:
- balance: Adds commands and CVARs to help balance teams in team games using ratings provided by third-party services (like QLStats).
qlx_balanceAuto: A boolean determining whether or not we should automatically try to balance teams if a shuffle vote passes.- Default:
1
- Default:
qlx_balanceUseLocal: A boolean determining whether or not it should use local ratings set by the!setratingcommand.- Default:
1
- Default:
qlx_balanceLocalExpires: Time in seconds before a locally-set rating value is removed from the database. Use"0"to disable expiration of locally-set ratings.- Default:
0
- Default:
qlx_balanceMinimumSuggestionDiff: The minimum rating difference before it suggests a switch when!teamsis executed.- Default:
25
- Default:
qlx_balanceMinimumSuggestionActionDiff: The minimum rating difference before the balancer automatically performs the suggested switch instead of merely suggesting it and waiting for the affected players to agree (with!a). If the game is in progress, the switch is applied at the start of the next round; otherwise it is applied immediately.- Default:
50
- Default:
qlx_balanceUrl: The address to the site hosting an instance of PredatH0r's XonStat fork, which is currently the only supported rating service.- Default:
qlstats.net, which is hosted by PredatH0r himself.
- Default:
qlx_balanceApi: The endpoint to use for ratings calls.- Default:
elo - Alternative:
elo_b
- Default:
- ban: Adds commands to ban people for a set amount of time (
!ban,!unban,!checkban). Leaver tracking now lives in leaverban, and!checkbanasks it for the leaver half when it's loaded. No CVARs. - branding: Overrides the map loading screen text and prints your own messages on connect, load, countdown and game end. Set only the CVARs you want; anything left unset isn't shown at all.
qlx_serverBrandName: Text shown in place of the map name on the loading screen.- Default: unset
qlx_serverBrandTopField: Text appended after the map author credit (line 1).- Default: unset
qlx_serverBrandBottomField: Text appended after the map author credit (line 2).- Default: unset
qlx_connectMessage: Text shown on the awaiting-challenge screen when a player first connects.- Default: unset
qlx_loadedMessage: Centre-print shown to a player once they finish loading and click Join or Spectate.- Default: unset
qlx_countdownMessage: Centre-print shown when the game countdown begins.- Default: unset
qlx_endOfGameMessage: Message printed when the game ends.- Default: unset
qlx_brandingPrependMapName: A boolean determining whether the actual map name is prepended beforeqlx_serverBrandName.- Default:
0
- Default:
qlx_brandingAppendGameType: A boolean determining whether the game type is appended afterqlx_serverBrandName.- Default:
0
- Default:
qlx_rainbowBrandName: A boolean determining whetherqlx_serverBrandNameis rendered in rotating rainbow colours.- Default:
0
- Default:
- clan: Adds commands to let players have persistent clan tags without having to change the name on Steam.
- custom_votes: Adds a large set of
/cvcall-votes. See!listcvin-game for the full list.qlx_disablePlayerRemoval: Prevents non-privileged players from using/cv kickor/cv tempban.- Default:
0
- Default:
qlx_disableCvarVoting: Prevents anyone from calling a/cv cvarvote.- Default:
1
- Default:
qlx_disableServerRebootVote: Prevents/cv reboot.- Default:
0
- Default:
qlx_cvarVotePermissionRequired: The permission level required to call a CVAR vote.- Default:
4
- Default:
qlx_glasshouse: Kicks the caller of akick,clientkickortempbanvote that fails, which discourages frivolous ones. Permission level 1 and above are exempt. This was the standalone glasshouse plugin.- Default:
1
- Default:
- dictionary: Adds
!define <term>to look up Urban Dictionary definitions in-game. - docs: A plugin that generates a command list of all the plugins currently loaded, in the form of a Markdown file.
- essentials: Adds commands for the regular QLDS commands and some more. Adds functionality to restrict teamsize voting and to pass votes before it fails if the majority votes yes.
qlx_votepass: A boolean deciding whether or not it should automatically pass votes before they fail if the majority voted yes.- Default:
1
- Default:
qlx_votepassThreshold: Ifqlx_votepassis1, determines the percentage (in decimal) of in-game players required to vote before it automatically passes any votes.- Default:
0.33
- Default:
qlx_teamsizeMinimum: The minimum teamsize allowed to vote for.!teamsizecan override this.- Default:
1
- Default:
qlx_teamsizeMaximum: The maximum teamsize allowed to vote for.!teamsizecan override this.- Default:
8(if teams are full and teamsize is above 8, players will not be visible on the scoreboard)
- Default:
qlx_enforceMappool: A boolean determining whether or not map votes are restricted to the maps and factories in the server's map pool file (sv_mappoolfile).- Default:
0
- Default:
- fun: Plays voice-over and taunt sounds in response to certain chat phrases (e.g.
gl hf,haha yeah,impressive). Also adds!cookies. Respects the per-player sound toggle from essentials.qlx_funSoundDelay: The minimum number of seconds between fun sounds, to prevent spam.- Default:
3
- Default:
- infectedmm: Recreates the classic "Infected Mastermind" game mode, spawning a special "mastermind" bot with bonus health and a plasma gun. Needs a Red Rover (
rr) game withg_rrInfectedset to2.g_rrInfectedMastermindHealthBonus: The bonus health the mastermind gains, per uninfected player, each time it spawns.- Default:
50
- Default:
g_rrInfectedMastermindFragBonus: The bonus score awarded to a player who kills the mastermind.- Default:
3
- Default:
- lan: Tells LAN players when they've reached the server the long way round, through the router and back, and asks them to reconnect on the LAN hostname. Adds
!lanto show how each connected player is getting to the server. The LAN is worked out from the kernel routing table, so on an ordinary install you won't need any of the CVARs below. Set them when that guess comes out wrong, most likely inside a container. If it can't work your network out, everybody gets in.qlx_lanPlayersOnly: A boolean determining whether or not players from outside the LAN are refused. Ignored if no LAN subnet was found.- Default:
0
- Default:
qlx_lanAllowIndirectConnections: A boolean determining whether or not players coming in via the router are left alone instead of being asked to reconnect.- Default:
0
- Default:
qlx_lanSubnets: A comma-separated list of CIDR networks to treat as the LAN, e.g.192.168.1.0/24, 10.0.0.0/8. You'll need this if your LAN uses public address space, since detection only accepts private ranges.- Default: empty, which detects the directly-connected subnets from the routing table.
qlx_lanRouter: The LAN-side address of the router, used to spot players coming back in through NAT. The check is off while this is unknown.- Default: empty, which uses the default gateway from the routing table.
qlx_lanHostname: The hostname LAN players should connect to instead, e.g.lan.example.com. The port is appended for you fromnet_port. No reconnect message is sent while this is unset.- Default: empty
qlx_lanInterface: Restrict detection to a single interface, e.g.eth0. Useful on a multi-homed machine, or to point past a container's virtual interface.- Default: empty, which considers every interface except loopback.
- last_in: Tracks and reports the last player to join each team. Adds
!lastin, plus!c/!countto count the players on each team. - leaverban: Tracks players who leave games in progress and bans repeat offenders. Adds
!forgive,!gamestats/!leaves,!trackedand!checkleaver.qlx_leaverBan: A boolean deciding whether or not it should automatically ban players for leaving.- Default:
0
- Default:
qlx_leaverBanRollingWindowDays: The number of days a leave counts against a player.- Default:
30
- Default:
qlx_leaverBanMaxLeaves: How many leaves within the rolling window trigger a ban. The ban is 24 hours for the first leave over the threshold, plus another 24 for each one after that.- Default:
3
- Default:
qlx_leaverBanDiscordWebhook: A Discord webhook URL to post leave and ban notifications to. Leave it empty for no notifications.- Default: unset
qlx_statOtherPlayersPermission: The permission level required for players to use the!leavescommand to obtain other player statistics.- Default:
1
- Default:
- log: A plugin that logs chat and commands. All logs go to
fs_homepath/chatlogs.qlx_chatlogs: The maximum number of logs to keep around. If set to0, no maximum is enforced.- Default:
10
- Default:
qlx_chatlogsSize: The maximum size of a log in bytes before it starts with a new one.- Default:
3000000(3 MB)
- Default:
- maptools: Adds
!mapinfo [map]to show a map's gametypes and title,!factories [map]to list the factories it declares, and!spawnvis(permission level 5) to drop a temporary marker on every spawn point. No CVARs. - motd: Adds commands to set a message of the day.
qlx_motdSound: The path to a sounds that is played when players connect and have the MOTD printed to them.- Default:
sound/vo/crash_new/37b_07_alt.wav
- Default:
qlx_motdHeader: The header printed right before the MOTD itself.- Default:
^6======= ^7Message of the Day ^6=======^7
- Default:
- names: Adds a command to change names without relying on Steam.
qlx_enforceSteamName: A boolean deciding whether or not it should force players to use Steam names, but allowing colors, or to allow the player to set any name.- Default:
1
- Default:
- permission: Adds commands to set player permissions.
- plugin_manager: Adds commands to load, reload and unload plugins at run-time.
- pummel: Tracks gauntlet ("pummel") kills between players and announces a running head-to-head tally. Adds
!pummelto list the connected players you've pummelled. - queue: Adds a play queue so players join in order when the teams are full, plus AFK handling. Adds
!q/!queue,!afk,!hereand!teamsize/!ts.qlx_queueSetAfkPermission: The permission level required to mark other players as AFK.- Default:
2
- Default:
qlx_queueAFKTag: The clan-tag-style marker shown next to players who are AFK.- Default:
^3AFK
- Default:
- raw: Adds commands to interact with the Python interpreter directly. Useful for debugging.
- scores: Puts the calling player's own score, K/D, damage and ping in the scoreboard title when they press TAB. Only that player sees it, and it stays until they press TAB again or the map changes. No CVARs.
- silence: Adds commands to mute a player for an extended period of time. This persists across player reconnections, as opposed to the default mute behavior of
qzeroded. Silencing a player has additional effects, such as preventing name changes and vote calling. - solorace: A plugin that starts the game and keeps it running on a race server without requiring a minimum of two players, like you usually do with race.
- stats: Reports per-round damage statistics, announcing the player who dealt the most damage at the end of each round.
- sv_fps: Allows the otherwise read-only
sv_fpsCVAR to be changed at run-time. Adds!sv_fps/!svfps <integer>(the value must be a positive multiple of the base value,40).qlx_svfps: Thesv_fpsvalue to apply on startup. Must be a positive multiple of40.- Default:
40
- Default:
- untracked: Detects players who aren't trackable by QLStats and can stop them playing. Needs balance loaded for its
qlx_balanceUrlendpoint.qlx_untrackedPlayerAction: What to do with untrackable players.0= do nothing (only announce),1= prevent them from joining a team,2= block their connection entirely.- Default:
0
- Default:
- votecommands: Adds
/passand/vetoclient commands (and!pass/!veto) so moderators (permission level 3) can force the current vote to pass or fail. - votestats: Shows who voted yes or no on the current vote and announces the final tally. Adds
!votesto turn the per-vote messages on or off for the calling player.qlx_privatiseVotes: A boolean determining whether individual "x voted y" messages are hidden (i.e. votes are private again).- Default:
0
- Default:
- vpnblock: Blocks connections from known VPN/datacentre IP ranges (sourced from the X4BNet datacentre list). Adds
!vpn <id>to check whether a player is on a known VPN/datacentre IP, and!bypassvpn <id>to whitelist a player.qlx_blockVpnConnections: A boolean determining whether connections from known VPN/datacentre IP ranges are blocked.- Default:
1
- Default:
qlx_vpnBlockRefreshHours: How often, in hours, the block list is re-downloaded. The request is conditional on itsETag, so a refresh usually costs nothing.- Default:
12
- Default:
- workshop: A plugin that allows the use of custom workshop items that the server might not reference by default, and thus not have the client download them automatically.
qlx_workshopReferences: A comma-separated list of workshop IDs for items you want to force the client to download. Use this for custom resources; the referenced PK3's filesystem will be superimposed upon thepak00.pk3filesystem.