Timed chat and radio gags that survive a reconnect, stored in a Trie and persisted with nVault.
CSB Gag silences a player's say, say_team and radio commands by hooking client_command() and returning PLUGIN_HANDLED_MAIN while the gag is active — the message never reaches the engine, so no other plugin can leak it back into chat.
Gags are keyed by SteamID in a Trie for O(1) lookups and mirrored into nVault, so reconnecting does not clear the punishment. A gag of 0 minutes lasts until the map changes; anything else is a real timestamp and expires on its own.
Inspired by the well-known Gag/Ungag plugin by ConnorMcLeod. Independent GPL re-implementation; no original code is reused.
Features
amx_gag <target> <minutes> [reason]— 0 minutes = until map change.amx_ungag <target>andamx_gaglist(console table of who is gagged, for how long and why).- Blocks radio spam too (
csb_gag_radio 1), which is what most gagged players fall back on. - Persists across reconnects via nVault; expired entries are removed on the next authorization.
- The gagged player is told, in chat, how long is left and why — so they stop spamming
say. - Respects
ADMIN_IMMUNITYthroughcmd_target()and caps the duration withcsb_gag_max.
Installation
- Make sure the
nvaultmodule is enabled inaddons/amxmodx/configs/modules.ini. - Compile, copy
csb_gag.amxxintoaddons/amxmodx/plugins/and add it toplugins.ini. - Change the map. The vault file
csb_gag.vaultappears inaddons/amxmodx/data/vault/on the first gag.









