Rust Custom Event Scheduler
Automated, randomized, and fully customizable premium event scheduling for your Rust server โ with Discord integration and live player visibility.
Features
Randomized Event Queue โ Events fire in a different order every cycle to keep gameplay fresh and unpredictable
Smart Buffer Timing โ Configurable random delay (min/max minutes) between every event keeps spawn timing varied
Auto-Cycling โ When all events have run, the list re-randomizes automatically and starts a new cycle
Max Active Events โ Control how many events can run simultaneously; prevents event stacking
Discord Notifications โ Rich embed messages for every scheduler action (load, queue, start, end, delay, cycle reset)
Console Logging โ Full console output for every scheduler action with local server time
Player Command โ Players type !eventsor/eventsโ both are silent (not shown in chat), and the result broadcasts to all players so everyone benefits from the cooldown
Dynamic Config โ Add your own events by editing the config file โ no code, no reload required on first load
Local Server Time โ All times display in your server's local timezone, auto-detected and abbreviated (e.g. CST, PST, EDT)
Self-Managed Events โ Events without a stop command (convoys, trains, etc.) are tracked by run time with no stop needed
Managed Events โ Events like boss monsters get an automatic stop command fired after their run time expires
Installation
- Download
rCEventScheduler.cs - Place it in your
oxide/plugins/directory - Restart the server or run:
oxide.reload rCEventScheduler - Edit the config at
oxide/config/rCEventScheduler.json - Set your Discord webhook URL for admin notifications (optional)
Configuration
File: oxide/config/rCEventScheduler.json{
"Log Events to Console": true,
"Log Events to Discord": true,
"Admin Discord Webhook URL": "",
"Max Active Events": 1,
"Event Buffer Time Enabled": true,
"Event Min Buffer Time (minutes)": 5,
"Event Max Buffer Time (minutes)": 15,
"Enable Player Events Command": true,
"Show Next Event Scheduled on Event End": true,
"Events": [
{
"Event Name": "Air Event",
"Event Enabled": true,
"Required Plugin": "AirEvent",
"Event Run Time (minutes)": 60,
"Event Start Command": "airstart",
"Event Stop Command": ""
},
{
"Event Name": "Airfield Event",
"Event Enabled": true,
"Required Plugin": "AirfieldEvent",
"Event Run Time (minutes)": 60,
"Event Start Command": "afestart",
"Event Stop Command": ""
},
{
"Event Name": "Arctic Base Event",
"Event Enabled": true,
"Required Plugin": "ArcticBaseEvent",
"Event Run Time (minutes)": 45,
"Event Start Command": "abstart",
"Event Stop Command": ""
},
{
"Event Name": "Armored Train",
"Event Enabled": true,
"Required Plugin": "ArmoredTrain",
"Event Run Time (minutes)": 60,
"Event Start Command": "atrainstart",
"Event Stop Command": ""
},
{
"Event Name": "Boss Monster Clown",
"Event Enabled": true,
"Required Plugin": "BossMonster",
"Event Run Time (minutes)": 60,
"Event Start Command": "SpawnBoss Clown",
"Event Stop Command": "KillBoss Clown"
},
{
"Event Name": "Boss Monster Evil",
"Event Enabled": true,
"Required Plugin": "BossMonster",
"Event Run Time (minutes)": 60,
"Event Start Command": "SpawnBoss Evil",
"Event Stop Command": "KillBoss Evil"
},
{
"Event Name": "Boss Monster Franken",
"Event Enabled": true,
"Required Plugin": "BossMonster",
"Event Run Time (minutes)": 60,
"Event Start Command": "SpawnBoss Franken",
"Event Stop Command": "KillBoss Franken"
},
{
"Event Name": "Boss Monster Frankenstein",
"Event Enabled": true,
"Required Plugin": "BossMonster",
"Event Run Time (minutes)": 60,
"Event Start Command": "SpawnBoss Frankenstein",
"Event Stop Command": "KillBoss Frankenstein"
},
{
"Event Name": "Boss Monster Heavy",
"Event Enabled": true,
"Required Plugin": "BossMonster",
"Event Run Time (minutes)": 60,
"Event Start Command": "SpawnBoss Heavy",
"Event Stop Command": "KillBoss Heavy"
},
{
"Event Name": "Boss Monster Horror",
"Event Enabled": true,
"Required Plugin": "BossMonster",
"Event Run Time (minutes)": 60,
"Event Start Command": "SpawnBoss Horror",
"Event Stop Command": "KillBoss Horror"
},
{
"Event Name": "Boss Monster Jason",
"Event Enabled": true,
"Required Plugin": "BossMonster",
"Event Run Time (minutes)": 60,
"Event Start Command": "SpawnBoss Jason",
"Event Stop Command": "KillBoss Jason"
},
{
"Event Name": "Boss Monster King of the Night",
"Event Enabled": true,
"Required Plugin": "BossMonster",
"Event Run Time (minutes)": 60,
"Event Start Command": "SpawnBoss King of the Night",
"Event Stop Command": "KillBoss King of the Night"
},
{
"Event Name": "Boss Monster Michael Myers",
"Event Enabled": true,
"Required Plugin": "BossMonster",
"Event Run Time (minutes)": 60,
"Event Start Command": "SpawnBoss Michael Myers",
"Event Stop Command": "KillBoss Michael Myers"
},
{
"Event Name": "Boss Monster Oni",
"Event Enabled": true,
"Required Plugin": "BossMonster",
"Event Run Time (minutes)": 60,
"Event Start Command": "SpawnBoss Oni",
"Event Stop Command": "KillBoss Oni"
},
{
"Event Name": "Boss Monster Raptor",
"Event Enabled": true,
"Required Plugin": "BossMonster",
"Event Run Time (minutes)": 60,
"Event Start Command": "SpawnBoss Raptor",
"Event Stop Command": "KillBoss Raptor"
},
{
"Event Name": "Boss Monster Scary",
"Event Enabled": true,
"Required Plugin": "BossMonster",
"Event Run Time (minutes)": 60,
"Event Start Command": "SpawnBoss Scary",
"Event Stop Command": "KillBoss Scary"
},
{
"Event Name": "Celestial Barrage",
"Event Enabled": true,
"Required Plugin": "CelestialBarrage",
"Event Run Time (minutes)": 5,
"Event Start Command": "cb.random",
"Event Stop Command": ""
},
{
"Event Name": "Convoy",
"Event Enabled": true,
"Required Plugin": "Convoy",
"Event Run Time (minutes)": 60,
"Event Start Command": "convoystart",
"Event Stop Command": ""
},
{
"Event Name": "Gas Station Event",
"Event Enabled": true,
"Required Plugin": "GasStationEvent",
"Event Run Time (minutes)": 45,
"Event Start Command": "gsstart",
"Event Stop Command": ""
},
{
"Event Name": "Gun Game",
"Event Enabled": true,
"Required Plugin": "GunGame",
"Event Run Time (minutes)": 45,
"Event Start Command": "ggstart",
"Event Stop Command": ""
},
{
"Event Name": "Harbor Event",
"Event Enabled": true,
"Required Plugin": "HarborEvent",
"Event Run Time (minutes)": 60,
"Event Start Command": "harborstart",
"Event Stop Command": ""
},
{
"Event Name": "Sputnik",
"Event Enabled": false,
"Required Plugin": "Sputnik",
"Event Run Time (minutes)": 60,
"Event Start Command": "sputnikstart",
"Event Stop Command": ""
},
{
"Event Name": "Supermarket Event",
"Event Enabled": true,
"Required Plugin": "SupermarketEvent",
"Event Run Time (minutes)": 45,
"Event Start Command": "supermarketstart",
"Event Stop Command": ""
},
{
"Event Name": "Twister",
"Event Enabled": true,
"Required Plugin": "Tornado",
"Event Run Time (minutes)": 5,
"Event Start Command": "tornado start random",
"Event Stop Command": ""
},
{
"Event Name": "Water Event",
"Event Enabled": true,
"Required Plugin": "WaterEvent",
"Event Run Time (minutes)": 120,
"Event Start Command": "waterstart",
"Event Stop Command": ""
}
]
}
Global Settings
| Option | Default | Description |
|---|---|---|
Log Events to Console | true | Print all scheduler events to the server console |
Log Events to Discord | true | Send Discord embed messages for all scheduler events |
Admin Discord Webhook URL | "" | Private Discord webhook URL for admin-only notifications |
Max Active Events | 1 | Maximum number of events that can run at the same time |
Event Buffer Time Enabled | true | Enable random delay between events |
Event Min Buffer Time (minutes) | 5 | Minimum random delay (minutes) before next event fires |
Event Max Buffer Time (minutes) | 15 | Maximum random delay (minutes) before next event fires |
Enable Player Events Command | true | Allow all players to use !events in chat |
Show Next Event Scheduled on Event End | true | After an event ends, re-send the Next Event Scheduled Discord embed as a reminder |
Per-Event Options
| Option | Type | Description |
|---|---|---|
Event Name | string | Display name of the event |
Event Enabled | bool | Set to false to skip this event without removing it from the config |
Required Plugin | string | Oxide plugin name that must be loaded for this event to be scheduled โ leave "" to always include |
Event Run Time (minutes) | int | How long the event runs before being stopped or expired |
Event Start Command | string | Server console command to start the event |
Event Stop Command | string | Server console command to stop the event โ leave "" if self-managed |
Player Command
| Command | Access | Description |
|---|---|---|
!events | All Players | Silent โ suppressed from chat. Broadcasts active events and next scheduled event to all players |
/events | All Players | Silent โ slash commands are suppressed by Oxide. Same result and same shared cooldown as !events |
Example output in chat:
Code:
[ My Rust Server Event Scheduler ][/FONT][/COLOR][/FONT][/FONT][/COLOR][/FONT]
[FONT=Mona Sans VF][COLOR=rgb(240, 246, 252)][FONT=Monaspace Neon][FONT=Mona Sans VF][COLOR=rgb(240, 246, 252)][FONT=Monaspace Neon]Active Events:
โ Boss Monster Oni
Next Event: Convoy
Starts at: 4:23 PM CST (~38 min)
Discord Notifications
When a webhook URL is configured, the plugin sends Discord embed messages for every scheduler action. All embed titles use your server's name automatically (e.g. My Rust Server Event Scheduler).| Event | Color | Description |
|---|---|---|
| Plugin Loaded | Lists all loaded events by name | |
| Queue Randomized | Shows the new randomized event order | |
| Next Event Scheduled | Event name, scheduled time, countdown, queue position, and events until reshuffle | |
| Event Delayed | Max active events reached โ shows new retry time | |
| Event Started | Event name, run time, expected end time | |
| Event Ended | Event name and how it ended (self-managed or stopped) | |
| Cycle Complete | All events ran โ new randomized cycle starting |
How It Works
Code:
PLUGIN LOADS
โโโ Counts and logs all enabled events (console + Discord)
โโโ Randomizes the event queue and logs the order
โโโ Calculates first buffer time (random between min/max minutes)
โโโ Waits buffer time, then fires first event
BUFFER FIRES
โโโ Active events < Max Active Events?
โ YES โ Fire next event โ run start command
โ โ Schedule stop command after run time (if defined)
โ โ Schedule next buffer โ repeat
โ NO โ Wait: Event Run Time + new buffer calculation โ retry
ALL EVENTS IN QUEUE HAVE RUN
โโโ Log "Cycle Complete" to console + Discord
โโโ Re-randomize the full event list
โโโ Log new randomized order to console + Discord
โโโ Resume scheduling from the top
Adding Custom Events
Edit oxide/config/rCEventScheduler.json and add a new block to the "Events" array:{
"Event Name": "My Custom Event",
"Event Enabled": true,
"Required Plugin": "MyPluginName",
"Event Run Time (minutes)": 45,
"Event Start Command": "myeventstart",
"Event Stop Command": ""
}
Then reload:
oxide.reload rCEventSchedulerThe event will be picked up automatically, mixed into the randomized queue, and scheduled like any other event.
Ftuoil Xelrash
Support & Community
Discord Support - Join our community for help and discussions
Development & Testing Server
Darktidia Solo Only - SeeRust Custom Even Scheduler and other custom plugins in action!All players are welcome to join our development server where plugins are tested and refined in a live environment.
- Server: Darktidia Solo Only | Monthly | 2x | 50% Upkeep | No BP Wipes
- Find Server: View on BattleMetrics