
Staff Alerts
by Base Inspector · v1.2.3 · updated Nov 8, 2026
No dependencies: works on its own.
$5 · single server
Buy now · $5Installs itself with Oxide Sync. Pick your servers at checkout and it's live within a minute. Every future update included. How it works
- Full C# source
- Free updates
- Signed releases
- Oxide / uMod compatible
📢 StaffAlerts
Author: Base Inspector
Version: 1.2.2
Staff → Player acknowledgment alerts with:
- ✅ Clean centered UI
- 📬 Message queueing
- 🕒 Staff cooldown protection
- 📝 Custom & template messages
- 💾 Offline delivery support
- 📂 Optional file logging
- ⚙️ Fully configurable UI & behavior
🎯 What This Plugin Does
StaffAlerts allows staff members to send forced acknowledgment
pop-up notices to players.
When a message is sent:
- The player receives a full-screen overlay UI
- They must click “I Accept” to close it
- Multiple messages are automatically queued
- Alerts can be delivered to offline players
- Sends can be logged to a file
Ideal for:
- Chat violations
- Mic abuse
- Racism/discrimination
- Toxic behavior
- Spam
- Inappropriate names
- General rule reminders
🔐 Permissions
| Permission | Description |
|---|---|
staffalerts.send | Allows sending alerts via chat command |
staffalerts.admin | Allows console/F1 admin usage and toggling plugin |
💬 Chat Command
Send Custom Alert
/alert <playername or steamid> <message>
Example:
/alert John Please stop mic spamming.
Send Template Alert
/alert <playername> template <key>
Example:
/alert John template toxicity
🖥 Console / RCON Commands
Send Alert
staffalerts.send <playername/steamid> <message>
Toggle Plugin On/Off
staffalerts.toggle
Accept UI (Internal Button Command)
staffalerts.accept
📦 Built-In Templates
Default templates included:
| Key | Message |
|---|---|
chat | Please keep general chat in English so everyone can participate. |
mic | Racist or discriminatory language in voice chat is not allowed. |
name | Please update your in-game name and/or clan tag to something appropriate. |
spam | Please stop spamming chat. |
toxicity | Harassment or toxic behavior is not allowed. |
Templates are fully configurable in the config file.
⚙️ How It Functions
📨 Message Queue System
- If a player already has an alert open, new messages are queued.
- When they click I Accept, the next message displays automatically.
💾 Offline Delivery
- If enabled in config, staff can send alerts to offline SteamIDs.
- Messages are stored in data file.
- Delivered automatically when player reconnects.
🕒 Staff Cooldown Protection
- Prevents staff from spamming alerts.
- Default cooldown: 8 seconds
- Configurable in config.
📂 Logging
If enabled: - All alerts are logged to
oxide/logs/StaffAlerts/send.txt - Includes: - Timestamp (UTC) - Staff
name + SteamID - Target name + SteamID - Template/custom meta tag - Full
message
🎨 UI Behavior
- Full screen dark overlay
- Centered panel
- Configurable:
- Colors
- Text
- Font sizes
- Panel size
- Title text
- Accept button text
Player must manually acknowledge the alert.
🧠 Target Resolution
Supports:
- Exact SteamID
- Partial player name (case insensitive)
- If multiple name matches → no alert is sent (must be unique match)
🗂 Data Storage
Stored in: oxide/data/StaffAlertsData.json
Used for: - Offline pending alerts
🔧 Config Options Overview
Enabled: true
LogToFile: true
StaffCooldownSeconds: 8
MaxMessageLength: 512
AllowOfflineBySteamID: true
UI:
OverlayColor
PanelColor
TitleBarColor
AccentColor
TextColor
TitleText
AcceptText
FontSizes
AnchorMin / AnchorMax
Templates:
chat
mic
name
spam
toxicity
✅ Summary
StaffAlerts provides:
✔ Clean professional UI
✔ Reliable queue system
✔ Offline support
✔ Template system
✔ Anti-spam cooldown
✔ Console + RCON support
✔ Fully configurable behavior
✔ Lightweight + safe
/alert <playername or steamid> <message>Send Custom Alert/alert <playername> template <key>Send Template Alert
v1.2.3Feb 26, 2026Latest
OnPlayerDisconnected — added _lastUse.Remove(player.userID) so cooldown entries are cleaned up immediately when a player leaves rather than sitting in memory forever. OnPlayerInit — added _data.Pending.Remove(player.userID) after processing their offline queue so the key is fully cleared from the dictionary, not just its list contents. StartPruneTimer() — new method called on server init that runs on a configurable interval (default 1 hour). It sweeps _lastUse and removes any entries whose timestamp is older than the cooldown window, acting as a safety net for any entries that slip past the disconnect handler. Send() — added a MaxPendingPerPlayer cap check before appending to _data.Pending. Drops and logs a warning if the cap is hit. Enqueue() — same cap applied to the in-memory PlayerState.Queue so online players can't have unlimited messages queued either. Config — two new fields exposed so you can tune them without recompiling: MaxPendingPerPlayer (default 10) and LastUsePruneIntervalSeconds (default 3600).
v1.0.0Feb 23, 2026
Initial release



