Overview
SmartStage lets a player talk to every single person on the server through the normal in game voice chat. No Discord, no external tools, no client mod. The player presses their voice key like always, everyone hears them.
It was built for the moments where the whole server needs to listen at once. Event hosts explaining the rules, auctions, staff announcements, giveaways, community nights, or just letting a winner say something to everybody.
The stage is not a free for all. You decide who can use it, how long they get, how often they can come back, and you can pull anyone off the stage instantly.
Features
- Server wide voice for anyone you allow, through the game's own voice chat
- Permission based, so VIP ranks or staff only if you want
- Time limit per stage session, released automatically when it runs out
- Cooldown between sessions so nobody camps the stage
- Admins can put any player on stage, remove them, or clear the stage with one command
- Live badge on screen while broadcasting, shows listener count and remaining time
- Badge can be placed in any of nine screen positions and resized
- Players who do not want to hear the stage can mute it for themselves
- Chat announcements when someone goes live, fully configurable
- Sound effect when the stage opens and closes
- Console and file logging of every stage change
- English and Russian included, every message editable in the lang file
- API for other plugins
Permissions
| Permission | What it does |
|---|---|
smartstage.use |
Lets the player open and close their own stage |
smartstage.admin |
Everything above, plus putting other players on stage, clearing the stage, and bypassing the time limit and cooldown |
Commands
| Command | Who | What it does |
|---|---|---|
/stage |
use | Turn your own stage on or off |
/stage <player> |
admin | Put a player on stage or take them off |
/stage all |
admin | Remove everyone from the stage |
/stage list |
use | Show who is currently on stage |
/stage help |
use | Show the command list |
/smute |
everyone | Mute or unmute the stage for yourself |
Configuration
{"Stage Command (without /)": "stage","Stage Mute Command (without /)": "smute","Max Players On Stage (0 = unlimited)": 0,"Max Stage Duration In Seconds (0 = unlimited)": 300.0,"Cooldown Between Stage Uses In Seconds (0 = none)": 60.0,"Admins Bypass Duration And Cooldown": true,"Chat Prefix": "[SmartStage]","Chat Prefix Color": "#2CA1F2","Chat Icon (SteamID of the avatar shown in chat, 0 = none)": 0,"Enable Stage Sound Effect": true,"Stage Enable Sound": "assets/prefabs/locks/keypad/effects/lock.code.lock.prefab","Stage Disable Sound": "assets/prefabs/locks/keypad/effects/lock.code.unlock.prefab","Show Live Badge While On Stage": true,"Live Badge Position": "TopLeft","Live Badge Margin From Screen Edge": 16.0,"Live Badge Extra Offset X": 0.0,"Live Badge Extra Offset Y": 0.0,"Live Badge Width": 216.0,"Live Badge Height": 44.0,"Announce In Chat When Stage Is Enabled": true,"Announce In Chat When Stage Is Disabled": false,"Skip Listeners Already In Normal Voice Range": true,"Normal Voice Range (meters)": 40.0,"Log Stage Changes To Console": true,"Log Stage Changes To File": true}
DEV API
[PluginReference] private Plugin SmartStage;bool onStage = SmartStage?.Call<bool>("IsOnStage", player.userID) ?? false;bool muted = SmartStage?.Call<bool>("IsStageMuted", player.userID) ?? false;SmartStage?.Call<bool>("AddToStage", player);SmartStage?.Call<bool>("RemoveFromStage", player);ulong[] speakers = SmartStage?.Call<ulong[]>("GetStagePlayers");Support
Discord: ivan.cs
Requirements & compatibility
Oxide / uMod for Rust (latest), Carbon supported.
No updates yet.