Event Manager for Rust

A versitile arena event plugin

Total Downloads: 7,159 - First Release: Dec 16, 2014 - Last Update: May 7, 2017

4.92593/5, 54 likes
  1. k1lly0u
    Current Event Plugins
    Event - Deathmatch for Rust | Oxide
    Event - Headquarters for Rust | Oxide
    Team Deathmatch for Rust | Oxide
    GunGame for Rust | Oxide
    Chopper Survival for Rust | Oxide
    Capture The Flag for Rust | Oxide
    Last Man Standing Event for Rust | Oxide
    Slasher for Rust | Oxide

    Event Manager is just a part of a much larger puzzle. This is the core functionality of the arena system however it requires other plugins to run.
    It requires EMInterface which is the control system for all events!

    Features
    Automated events
    Customizable event setup and saving
    Custom death screens
    Class selection
    Rewards/prizes
    Multiple Event games
    Changeable game modes (turn any game into battlefield)
    Fully automated process for player
    Too much to list here!

    Chat commands
    --- Player Commands ---
    /event join - Join an open event
    /event leave - Leave the current event

    --- Event Commands ---
    /event start - Starts the currently selected event config (providing it has already been opened)
    /event end - Ends the game currently being played

    Console Commands
    event - Displays the help menu with a list of available commands
    event open - Open a event
    event cancel - Cancel a open event
    event start - Starts the currently opened event
    event end - Ends the currently playing event
    event launch - Launches auto events

    event battlefield - Toggles battlefield mode
    event classselector - Toggles the ability to use the class selector
    event config "name" - Load the settings from a previously created event config
    event config list - List all available event configs
    event enemies <amount> - Set the amount of enemies in the event (if applicable to the event)
    event game "game name" - Select the event type (tdm, gungame etc)
    event kit "kit name" - Select the kit for the event (if applicable to the event)
    event minplayers <amount> - Set the minimum players required for the event
    event maxplayers <amount> - Set the maximum players allowed in the event
    event rounds <amount> - Set the amount of rounds for this event (if applicable to the event)
    event spawnfile "spawnfile name" - Set the main spawnfile for the event
    event spawnfile2 "spawnfile name" - Set the secondary spawnfile for the event
    event scorelimit <amount> - Set the scorelimit for the event (if applicable to the event)
    event weaponset "weaponset name" - Set the weapon set for the event (if applicable to the event)
    event zone <zoneid> - Set the event zone

    Event Setup
    There is a setup process you must follow prior to running an event.
    1. Download EventManager and EMInterface and any event plugins you wish to run.
    2. Create the spawnfile(s) for the event you wish to run using => Spawns Database for Rust | Oxide (See below for more information)
    3. Create a zone around your arena => Zones Manager for Rust | Oxide (See below for more information)
    4. Create atleast 1 kit for your arena. (See below for more information)
    5. Optional: Prepare a event config using EMInterface. This is easiest done ingame via the GUI menu (further instructions in the EMInterface menu)
    6. Otherwise you may run events using just the console commands
    7. You are now ready to run an event
    What is a event config?
    A event config is a premade set of game options/rules for a event. You can create as many as you wish and they will be saved for use at a later time. You can do this via the GUI menu and this is the easiest option for running any event. More information will be in the EMInterface overview

    Creating Zones:
    Zones are an important part of moderating events. You can find more detailed information on creating zones on the ZoneManager overview. Here I will give a brief example.
    1. Find the area in which you want to create an arena
    2. Use the command '/zone_add'. This will create a zone on your position.
    3. Change the size of the zone using '/zone radius XX' replacing XX with the radius of the zone (eg 30)
    4. Further edit the zone to manage what happens in the zone. A common zone setup for an arena would include; "/zone undestr true nobuild true notp true nocorpse true nodeploy true no kits true nobleed true". You can find out more about the various flags and what they do in ZoneManagers overview
    5. Take note of the ZoneID and add it to your event config/auto event config
    Creating Spawnfiles
    Spawnfiles are a necessary part of events. They determine where the player will respawn after death and at the beginning of a event. Here is a brief example on how to create a spawnfile
    1. Type /spawns_new
    2. Walk to a location where you would like a spawnpoint and type '/spawns_add'
    3. Repeat this to create as many spawn locations as you want
    4. When done type '/spawns_save <filename>' be sure to remember this file name as you will need to to configure events
    Creating Kits
    Kits are needed in one way or another. Use the Kits plugin to create kits for your event players to use in combat. As stated above you can use 1 kit for all, or create multiple and use the class selector. Here is a brief example on creating a kit and more information can be found on the Kits overview
    1. Spawn the items you want in the kits and have them in your inventory
    2. Type '/kit add <kitname>' This will create the base kit.
    3. You must then select the options for the kit. Some common options for an arena kit are '/kit hide true authlevel 2 items'
    Running the Event
    You can run a event in a few different ways.

    Running a event via EMInterface
    The easiest and most appealing is the use the GUI menu provided by EMInterface (more instructions in its overview)

    Running a event via console commands
    While it is possible to create events via console commands I highly recommend you use the GUI menu to create event configs, then use those event configs via console commands

    Running Auto-Events (requires premade event configs)
    Using the GUI menu provided by EMInterface you can set up a list of premade event configs to run on a continous loop (more information in the EMInterface overview)

    Rewards and prizes
    The old reward system has been removed and replaced with ServerRewards for Rust | Oxide which was made to handle the reward points (default). If you do not use server rewards there is also the option to issue coins using Economics for Rust | Oxide .
    You can change between the 2 in the config, with reward amounts being changed in the individual event plugin configs

    What happens to players when they join the arena?
    When a player is teleported to the arena their health, hunger, thirst, location and inventory are saved. Once the event is over all players will have their stats and inventory restored and they will be teleported back to the location they were at prior to the arena

    What is all this console spam about event configs when the plugin loads !?!?!
    When EventManager loads it will attempt to automatically create temporary event configs using the information provided in each events config file. If the information specified is incorrect or invalid it will display what needs to be changed in order for this process to complete.
    This is NOT a necessary step, it just makes it a little easier

    Custom death screens
    In EventManager players never actually "die", they are put in a fake death state. There are a few options regarding this.

    The first and most popular is the spectate-death screen. What this does is drops a fake corpse where the player "died" and forces the player into spectate mode on the corpse whilst they are awaiting respawn. Once the player respawns the corpse is destroyed.
    This mode is the default death mode, however the corpse can be de-activated if you wish, in which case the user will specatate nothing

    Alternatively, you can disable those features and use the option of un-networking the player from the other players. This is the faster of the 2 methods performance wise - however - this give the player the ability to continue walking around while they wait to respawn. Other players will not see the dead players and the cannot interact with each other.

    In conclusion:
    DropCorpseOnDeath - Enabled will drop a corpse on the players position
    UseSpectateMode - Enabled will force the player to spectate their corpse, disabled will put them in the un-networked state

    Config
    Code (C#):

    {
      "Messaging": {
        "AnnounceEvent": true, // Announce when a event has been opened
        "AnnounceEvent_During": true, // Announce the event to non-event players during a event (providing entry is not closed)
        "AnnounceEvent_Interval": 120, // Annoucement interval (seconds)
        "MainColor": "#FF8C00",
        "MsgColor": "#939393"
      },
      "Options": {
        "AllowClassSelectionOnDeath": true, // Allows users to switch class when the death screen appears (requires a respawn type other then NONE)
        "Battlefield_Timer": 1200, // Time (seconds) a battlefield game will run
        "DropCorpseOnDeath": true, // More information above
        "EventPrestartTimer": 30, // The time in seconds from when players are moved to the arena before it starts (requires UseEventPrestart set to true)
        "LaunchAutoEventsOnStartup": false, // Automatically launch auto-events when the plugin has loaded (requires auto-events to be setup)
        "Required_AuthLevel": 1,
        "UseEconomicsAsTokens": false, // Give rewards via Economics, otherwise it defaults to giving RP for ServerRewards
        "UseEventPrestart": true, // Activates a pre-start timer before the event starts to allow players to spawn in properly
        "UseSpectateMode": true // More information above
      }
    }
     
    API
    Code (C#):

    (void) JoinedEvent(BasePlayer player) // Called when a user joins a event
    (void) LeftEvent(BasePlayer player) // Called when a user leave a event
    (bool) isPlaying(BasePlayer player) // Returns true if user is in a event

    (string) GetUserClass(BasePlayer player) // Returns a string with the users current class name

    (JObject) GetUserStats(string userId) // Returns a JObject containing the users statistics.
    //Available stats: "ChoppersKilled", "Deaths", "FlagsCaptured", "GamesLost", "GamesPlayed", "GamesWon", "Kills", "Name", "Rank", "Score", "ShotsFired"

    (JObject) GetAllStats() // Returns a JObject of all user ID's as keys, with another JObject as the value containing the users statistics

    (JObject) GetGameStats() // Returns a JObject containing global game statistics
    //Available Stats: "ChoppersKilled", "FlagsCaptured", "TotalDeaths", "TotalGamesPlayed", "TotalKills", "TotalPlayers", "TotalShotsFired"

    (JObject) GetGamesPlayed() // Returns a JObject containing event types as keys, and the amount of time's that game has been played as the value

     
    Credits:
    @Reneb - He is the genius who created the original EventManager, with out him none of this would even exist!
    -> Donate to Reneb <-

    If you like what I have done with the plugin you can buy me a beer by hitting that 'Support The Developer' button!