CS

CS2-AdminPlusMYSQL

CounterStrikeSharp plugin for CS2: moderation data in MySQL, admins & Discord in JSON. Features menus, votes, fun commands, and reports - Built for CS2WebPlus, the advanced web panel using one shared database.

by debr1sj17MITcounterstrikesharp

AdminPlusMYSQL - CounterStrikeSharp Admin Plugin

CounterStrikeSharp Version .NET

⚠️ Important: Other admin or report/calladmin plugins can conflict. Avoid duplicate !report / !calladmin stacks. Bans, mutes, gags, and silences require MySQL — without it those features will not load.

Admin plugin for Counter-Strike 2 with bans, menus, votes, fun commands, communication control, and optional reservation. Steam / IP bans and mute / gag / silence are stored in MySQL; admins, Discord, chat tags, and languages use JSON files (same style as classic AdminPlus, with a database backend). Built to pair with an advanced web panel (coming later) on the same MySQL database.

✨ Features

  • 🔨 Ban system: SteamID & IP bans (temporary / permanent) in MySQL
  • 💬 Communication: Mute, gag, silence in MySQL (ap_communication)
  • 👥 Admin management: admins.json / groups, immunity, reload
  • 🗳️ Voting: Map, kick, ban, mute, gag, silence, custom votes
  • 🎮 Menus: Built-in admin menu
  • 🎯 Fun commands: Teleport, freeze, blind, drug, etc.
  • 📢 Chat commands: asay, csay, hsay, psay
  • 📊 Reports: Menu-driven report / calladmin flow + Discord
  • 🌍 Languages: lang/*.json (e.g. en, tr, fr, de, ru, pl, pt-BR)
  • 🔗 Discord: Direct webhooks (ban, admin actions, comms, status, connections, chat, reports)
  • 📝 Logging: Daily files under counterstrikesharp/logs/ (log-AdminPlus-*.log)

📋 Requirements

🚀 Installation

  1. Copy the AdminPlusMYSQL folder to csgo/addons/counterstrikesharp/plugins/AdminPlusMYSQL/
  2. Ensure lang/ and tags.json sit beside AdminPlusMYSQL.dll
  3. Add adminplus-mysql.json — see Configuration
  4. Optionally add adminplus-discord.json for Discord
  5. Restart the server or reload plugins

On first successful DB connection, tables ap_bans, ap_communication, and ap_settings are created if missing.

⚙️ Configuration

MySQL (required for bans & communication punishments):

  • csgo/addons/counterstrikesharp/plugins/AdminPlusMYSQL/adminplus-mysql.json
    or csgo/addons/counterstrikesharp/configs/adminplus-mysql.json
{
  "host": "127.0.0.1",
  "port": 3306,
  "database": "your_database",
  "username": "your_user",
  "password": "your_password"
}

Other files:

  • csgo/addons/counterstrikesharp/configs/admins.json — admin permissions (CounterStrikeSharp)
  • csgo/addons/counterstrikesharp/configs/admin_groups.json — groups / flags
  • csgo/addons/counterstrikesharp/plugins/AdminPlusMYSQL/adminplus-discord.json — Discord webhooks
  • csgo/addons/counterstrikesharp/plugins/AdminPlusMYSQL/tags.json — chat tags / clan tags

📖 Commands

In-game chat uses the same commands with a chat trigger (e.g. !ban, !mute). Console / RCON use the css_ names below.

🔨 Ban system

css_ban <target> [duration] [reason]          # Ban player; duration in minutes, 0 = permanent [@css/ban]
css_ipban <target> [minutes] [reason]         # IP ban [@css/ban]
css_unban <steamid/ip>                        # Remove ban [@css/unban]
css_lastban                                   # Recently disconnected players (for ban) [@css/ban]
css_baninfo <steamid/ip>                      # Ban info [@css/ban]
css_cleanbans                                 # Clear all bans [@css/root]
css_cleanipbans                               # Clear all IP bans [@css/root]
css_cleansteambans                            # Clear all SteamID bans [@css/root]
css_banlist                                   # Ban list menu [@css/ban]

👥 Admin management

css_addadmin <steamid64> <group> <immunity>   # Add admin [@css/root]
css_removeadmin <steamid64>                   # Remove admin [@css/root]
css_adminlist                                 # List admins from file [@css/root]
css_admins                                    # Online admins [All players]
css_version                                   # Plugin version [All players]

📊 Report & calladmin

css_report                                    # Open report menu (pick player + reason) [All players]
css_calladmin                                 # Same flow / call admin [All players]

💬 Communication (MySQL)

css_mute <target> [duration] [reason]           # Mute voice [@css/chat]
css_unmute <target>                           # Unmute [@css/chat]
css_gag <target> [duration] [reason]          # Gag chat [@css/chat]
css_ungag <target>                            # Ungag [@css/chat]
css_silence <target> [duration] [reason]      # Mute + gag [@css/chat]
css_unsilence <target>                        # Remove mute + gag [@css/chat]
css_mutelist                                  # Active mutes [@css/chat]
css_gaglist                                   # Active gags [@css/chat]
css_cleanall                                  # Clear all comm punishments [@css/root]
css_cleanmute                                 # Clear all mutes [@css/root]
css_cleangag                                  # Clear all gags [@css/root]

🎮 Player commands

css_kick <target> [reason]                    # Kick [@css/generic]
css_slay <target>                             # Slay [@css/slay]
css_slap <target> [damage]                    # Slap [@css/slay]
css_rename <target> <new_name>                # Rename [@css/slay]
css_money <target> <amount>                   # Set money [@css/slay]
css_armor <target> <amount>                   # Set armor [@css/slay]
css_team <target> <t/ct/spec>                 # Change team [@css/kick]
css_swap <target>                             # Swap to opposite team [@css/kick]

🎯 Fun commands

css_freeze <target> [seconds]                 # Freeze [@css/slay]
css_unfreeze <target>                         # Unfreeze [@css/slay]
css_beacon <target> <0|1>                     # Beacon [@css/slay]
css_blind <target> <seconds>                  # Blind [@css/slay]
css_unblind <target>                          # Unblind [@css/slay]
css_drug <target> <seconds>                   # Drug effect [@css/slay]
css_undrug <target>                           # Remove drug [@css/slay]
css_shake <target> <seconds>                  # Shake [@css/slay]
css_unshake <target>                          # Stop shake [@css/slay]
css_glow <target> <color>                     # Glow [@css/slay]
css_color <target> <color>                    # Player color [@css/slay]
css_bury <target>                             # Bury [@css/slay]
css_unbury <target>                           # Unbury [@css/slay]
css_gravity <value>                           # Server gravity [@css/slay]
css_clean                                     # Clean weapons on ground [@css/slay]

🎮 Player control

css_goto <target>                             # Teleport to player [@css/slay]
css_bring <target>                            # Bring player [@css/slay]
css_hrespawn <target>                         # Respawn at last death pos [@css/slay]
css_respawn <target>                          # Respawn [@css/cheats]
css_noclip <target> <0|1>                     # Noclip [@css/cheats]
css_god <target> <0|1>                        # God mode [@css/cheats]
css_speed <target> <multiplier>               # Speed [@css/cheats]
css_unspeed <target>                          # Reset speed [@css/cheats]
css_hp <target> <health>                      # Health [@css/cheats]
css_sethp <team> <health>                     # Team default HP [@css/cheats]

🔫 Weapon commands

css_weapon <target> <weapon>                  # Give weapon [@css/cheats]
css_strip <target> [filter]                   # Strip weapons [@css/cheats]

🌍 Server commands

css_map <map>                                 # Change map [@css/generic]
css_wsmap <workshop_id>                       # Workshop map [@css/generic]
css_rcon <command>                            # RCON [@css/root]
css_cvar <cvar> [value]                       # Get/set cvar [@css/generic]
css_who <nick/steamid>                        # Player info [@css/generic]
css_rr                                        # Restart round [@css/generic]
css_players                                   # List players (console) [@css/root]
css_discord_status                            # Push server status to Discord [@css/root]

📢 Chat commands

css_asay <message>                            # Admin-only chat [@css/chat]
css_csay <message>                            # Center message [@css/chat]
css_hsay <message>                            # HUD message [@css/chat]
css_psay <target> <message>                   # Private message [@css/chat]
css_say <message>                             # Say to all [@css/chat]

🗳️ Voting

css_vote <question> <option1> <option2> [options...]   # Custom vote [@css/generic]
css_votemap <map1> <map2> [maps...]             # Map vote [@css/generic]
css_votekick <target>                           # Kick vote [@css/generic]
css_voteban <target>                            # Ban vote [@css/generic]
css_votemute <target>                           # Mute vote [@css/generic]
css_votegag <target>                            # Gag vote [@css/generic]
css_votesilence <target>                        # Silence vote [@css/generic]
css_rvote                                       # Revote [players]
css_cancelvote                                  # Cancel vote [@css/generic]

🎮 Menu & tags

css_admin                                     # Admin menu [@css/ban]
css_adminmenu                                  # Same [@css/ban]

📚 Help

css_adminhelp                                 # Detailed command help [@css/generic]

🔗 Discord configuration

Create csgo/addons/counterstrikesharp/plugins/AdminPlusMYSQL/adminplus-discord.json:

{
  "discordWebhooks": {
    "banWebhook": "https://discord.com/api/webhooks/...",
    "adminActionsWebhook": "https://discord.com/api/webhooks/...",
    "communicationWebhook": "https://discord.com/api/webhooks/...",
    "serverStatusWebhook": "https://discord.com/api/webhooks/...",
    "connectionLogsWebhook": "https://discord.com/api/webhooks/...",
    "chatLogsWebhook": "https://discord.com/api/webhooks/...",
    "reportAndCalladminWebhook": "https://discord.com/api/webhooks/...",
    "reportAndCalladminWebhookMentionUserId": "@everyone",
    "serverAddress": "your-ip:port"
  }
}

Webhooks are created in Discord under Channel settings → Integrations → Webhooks.

🔒 Permission system

Uses CounterStrikeSharp groups and flags, for example:

  • @css/root — full access
  • @css/ban — ban commands
  • @css/chat — mute / gag / silence
  • @css/generic — kick, map, votes, etc.
  • @css/slay — slap, slay, fun commands
  • @css/kick — team / swap
  • @css/cheats — noclip, god, weapons, hp, speed
  • @css/unban — unban
  • @css/reservation — reservation features (if enabled)

📝 Logging

Admin actions are written to daily files: csgo/addons/counterstrikesharp/logs/log-AdminPlus-*.log

📋 Changelog

v1.0.0

  • Initial AdminPlusMYSQL release: bans and communication data in MySQL (ap_bans, ap_communication, ap_settings)
  • Discord: direct webhook HTTPS posts
  • Targets .NET 8 and CounterStrikeSharp API 78+

AdminPlusMYSQL — CS2 administration with MySQL-backed moderation data.