Jump to content

BellaaGaming's Wishlist

  1. More information about "Custom Gather"

    $5.00

    Custom Gather

    Custom Gather allows you to have dynamic gather rates on your server!
    This allows you to assign different gather rates for as many groups of players as you would like.
     
    What this plugin offers that other gather rate plugins don't:
    Create custom gather rates based on oxide permission groups Example: Have a global 2x gather rate, but have VIPs gather at 4x, and Elite VIPs gather at 8x. Modify resources in Unloadable Train Wagons Set separate custom rates for Public and Private quarries Modify Fishing Rate Gather rate modifier includes grubs/worms picked from plants Configuring JSON Files
    This plugin creates two JSON files, one is located in Oxide/Config/CustomGather.json, and the other is in Oxide/Data/CustomGather.json.
    The config file is used to set the global on/off switches, unloadable train wagon settings, the blacklists and the global override list. The data file is used to create and specify custom groups to be assigned via oxide permissions. The 'default' group makes a permission named customgather.default and automatically assigns it to the default oxide group All other groups generate permissions titled customgather.{groupname} that then must be assigned to an oxide group or player. Do NOT delete the data json file during server wipe. It will reset all your custom group settings and need to be reconfigured. Tutorial

    Blacklists & Global Override List
    The Blacklists reverts an item's gather rate to 1x for the specified method of gathering that it is listed under. The Global Override List is similar, but you specify a custom gather rate for specific items that is then applied globally, regardless of permission groups or gather method.
    Items need to be entered in with their short names. Use this reference to find any item's short name. Insert items by their short names inside quotations and separated by commas.
    Chat Commands
    /cg info   -- Displays each custom group and their gather rates  
    Config JSON - Example
    { "Global On/Off Switches. Only set these to false if you use a separate plugin to control specific gather rates.": { "Modify rates for items picked off the terrain (ex: plants, tree stumps, small ore nodes)": true, "Modify rates for items grown in planters": true, "Modify rates for fishing": true, "Modify rates for PUBLIC Quarries and Pumpjacks": true, "Modify rates for PRIVATE Quarries and Pumpjacks": true, "Modify rates for the Giant Excavator": true, "Modify rates for Dispensers (ex: ore nodes, trees, animal corpses)": true, "Modify rates for Resource Train Wagons": true }, "Unloadable Train Wagon Settings": { "Multiplication Rate": 20, "Single Stack of Resources?": true }, "Blacklists (items to gather at vanilla rates)": { "Harvested Items": [ "human.skull", "skull.wolf" ], "Pickup Items": [ "cloth" ], "Planter Box Items": [ "clone.hemp" ], "Fishing": [ "fish.anchovy" ], "Quarries & Pumpjacks": [ "stones" ], "Excavator": [ "stones" ], "Train Resource Wagons": [ "metal.ore" ] }, "Global Override List": { "pumpkin": 20, "hq.metal.ore": 10 } } Data JSON - Example
    { "Custom Permission Group Settings": { "default": { "Gather Rate": 1, "PUBLIC Quarries & Pumpjacks Rate": 1, "PRIVATE Quarries & Pumpjacks Rate": 1, "Giant Excavator Rate": 1, "Fishing Rate": 1 }, "vip": { "Gather Rate": 2, "PUBLIC Quarries & Pumpjacks Rate": 2, "PRIVATE Quarries & Pumpjacks Rate": 2, "Giant Excavator Rate": 2, "Fishing Rate": 2 }, "Elite": { "Gather Rate": 3, "PUBLIC Quarries & Pumpjacks Rate": 3, "PRIVATE Quarries & Pumpjacks Rate": 3, "Giant Excavator Rate": 3, "Fishing Rate": 3 }, "SuperElite": { "Gather Rate": 4, "PUBLIC Quarries & Pumpjacks Rate": 4, "PRIVATE Quarries & Pumpjacks Rate": 4, "Giant Excavator Rate": 4, "Fishing Rate": 4 }, "MegaElite": { "Gather Rate": 5, "PUBLIC Quarries & Pumpjacks Rate": 5, "PRIVATE Quarries & Pumpjacks Rate": 5, "Giant Excavator Rate": 5, "Fishing Rate": 5 } } }
  2. More information about "Stacks"

    $19.95 $15.95

    Stacks

    New plugin for changing item stacks and their multipliers in containers with convenient customization right in the game
     

     
    Commands
    stacks - open an UI stacks  sethandstack [stack size] -  set the stack size for the item in hand stacks setstack [short name] [stack size] - set the stack size for the item  
    Permissions
    stacks.admin - using a plugin  
    Config
    { "Commands": [ "stacks" ], "Work with Notify?": true, "Changing multiplies in containers using a hammer": false, "Default Multiplier for new containers": 1.0 }  
    Containers Data
    { "assets/bundled/prefabs/static/bbq.static.prefab": { "Image": "https://i.imgur.com/L28375p.png", "Multiplier": 1.0 }, "assets/bundled/prefabs/static/hobobarrel_static.prefab": { "Image": "https://i.imgur.com/v8sDTaP.png", "Multiplier": 1.0 }, "assets/bundled/prefabs/static/recycler_static.prefab": { "Image": "https://i.imgur.com/V1smQYs.png", "Multiplier": 1.0 }, "assets/bundled/prefabs/static/repairbench_static.prefab": { "Image": "https://i.imgur.com/8qV6Z10.png", "Multiplier": 1.0 } ...  
    Items Data
    [ { "ShortName": "hat.wolf", "Name": "Wolf Headdress", "Default Stack Size": 10, "Custom Stack Size": 0 }, { "ShortName": "fogmachine", "Name": "Fogger-3000", "Default Stack Size": 2, "Custom Stack Size": 0 }, { "ShortName": "strobelight", "Name": "Strobe Light", "Default Stack Size": 1, "Custom Stack Size": 0 }, { "ShortName": "kayak", "Name": "Kayak", "Default Stack Size": 1, "Custom Stack Size": 0 }, { "ShortName": "minihelicopter.repair", "Name": "MC repair", "Default Stack Size": 1, "Custom Stack Size": 0 }, { "ShortName": "scraptransportheli.repair", "Name": "ScrapTransportHeliRepair", "Default Stack Size": 1, "Custom Stack Size": 0 }, ...  
     
  3. More information about "Advanced Status"

    $1.99

    Advanced Status

    A useful API plugin that mimics in-game status bars and allows the addition of custom ones.
    Note: AdvancedStatus does not display any bars on its own. This is done by other plugins that work with it.
    An example plugin demonstrating interaction with AdvancedStatus.
     

    The ability to specify the frequency of calculating the number of bars; The ability to specify the order of the bar; The ability to change the height of the bar; The abillity to customize the color and transparency of the background; The ability to set a material for the background; The ability to switch between CuiRawImageComponent and CuiImageComponent for the image; The ability to get images from the local folder(*SERVER*\oxide\data\AdvancedStatus\Images); The abillity to set own image and customize the color and transparency of the image; The abillity to set sprite instead of the image; The ability to specify custom text; The ability to customize the color, size and font of the text; No need to pass all parameters; No need to manually delete your bar when unloading your plugin.  

    advancedstatus.admin - Grants access to the chat command(by default /bar).  

    { "Chat command": "bar", "Is it worth enabling console notifications for the successful loading of local images?": false, "Interval(in seconds) for counting in-game status bars": 0.5, "Interval(in seconds) for counting Building Privilege status bars. Note: Calculating Building Privilege is significantly more resource-intensive than other counts": 1.0, "Bar - Display Layer. If you have button bars, it's advisable to use Hud(https://umod.org/guides/rust/basic-concepts-of-gui#layers)": "Under", "Bar - Left to Right": true, "Bar - Offset between status bars": 2, "Bar - Default Height": 26, "Main - Default Color": "#505F75", "Main - Default Transparency": 0.7, "Main - Default Material(empty to disable)": "", "Image - Default Image": "AdvancedStatus_Default", "Image - Default Color": "#6B7E95", "Image - Default Transparency": 1.0, "Image - Outline Default Color": "#000000", "Image - Outline Default Transparency": 1.0, "Image - Outline Default Distance": "0.75 0.75", "Text - Default Size": 12, "Text - Default Color": "#FFFFFF", "Text - Default Transparency": 1.0, "Text - Default Font(https://umod.org/guides/rust/basic-concepts-of-gui#fonts)": "RobotoCondensed-Bold.ttf", "Text - Default Offset Horizontal": 0, "Text - Outline Default Color": "#000000", "Text - Outline Default Transparency": 1.0, "Text - Outline Default Distance": "0.75 0.75", "SubText - Default Size": 12, "SubText - Default Color": "#FFFFFF", "SubText - Default Transparency": 1.0, "SubText - Default Font": "RobotoCondensed-Bold.ttf", "SubText - Outline Default Color": "#000000", "SubText - Outline Default Transparency": 1.0, "SubText - Outline Default Distance": "0.75 0.75", "Progress - Default Color": "#89B840", "Progress - Default Transparency": 0.7, "Progress - Default OffsetMin": "25 2.5", "Progress - Default OffsetMax": "-3.5 -3.5", "Version": { "Major": 0, "Minor": 1, "Patch": 24 } }  

    EN: { "MsgDays": "d", "MsgHours": "h", "MsgMinutes": "m", "MsgSeconds": "s" } RU: { "MsgDays": "д", "MsgHours": "ч", "MsgMinutes": "м", "MsgSeconds": "я" }  

    images reload *ImageName* - Reloads the specified image from the image folder; all - Reloads all local images from the image folder. Example: /bar images reload all
    Note: To access the commands, the player must be an admin(console or owner) or have the advancedstatus.admin permission.
     

    OnAdvancedStatusLoaded: Called after the AdvancedStatus plugin is fully loaded and ready. OnPlayerGainedBuildingPrivilege: Called after the player enters their building privilege. OnPlayerLostBuildingPrivilege: Called after the player exits their building privilege.  
    void OnAdvancedStatusLoaded() { Puts("The AdvancedStatus plugin is loaded and ready to go!"); } void OnPlayerGainedBuildingPrivilege(BasePlayer player) { Puts($"{player.displayName} entered the authorized building privilege zone."); } void OnPlayerLostBuildingPrivilege(BasePlayer player) { Puts($"{player.displayName} exited the authorized building privilege zone."); }  

    [PluginReference] private Plugin AdvancedStatus; There are 15 methods:
    IsReady CreateBar UpdateContent DeleteBar DeleteCategory DeleteAllBars GetTotalClientBars GetTotalPlayerBars LoadImages LoadImage CopyImage DeleteImages DeleteImage BarExists InBuildingPrivilege  
    There are 5 types of bar:
    Default - A simple bar that displays the provided information. Does not update the value of SubText by itself; Timed - Similar to the default bar, but it automatically disappears after the specified time in the TimeStamp parameter; TimeCounter - The SubText shows the remaining time until TimeStamp. Also automatically removed upon expiration of the TimeStamp; TimeProgress - Similar to the Timed bar, but additionally features an automatically filling progress bar; TimeProgressCounter - Similar to the TimeCounter bar, but additionally features an automatically filling progress bar.  
    IsReady:
    Used to check if the AdvancedStatus plugin is loaded and ready to work.
    The IsReady method returns true if it is ready, or null if it is not.
    (bool)AdvancedStatus?.Call("IsReady");//Calling the IsReady method. If the result is not null(bool true), the plugin is ready.  
    CreateBar:
    Used to create a bar or update bar values for a player.
    To call the CreateBar method, you need to pass 2 parameters. The first one is BasePlayer or <ulong>playerID. The second one is a dictionary with the parameters you need.
    In the CreateBar method, all parameters are optional, except for two:
    Id; Plugin. Parameters not specified when creating a new bar will use the values set in the AdvancedStatus plugin's configuration file.
    Parameters not specified during bar update will retain the values they had before the update.
    Note: The plugin does not update values automatically, you need to manually send new values.
    Dictionary<string, object> parameters = new Dictionary<string, object> { { "Id", "AdvancedStatusDemo_1" }, //<string>Unique identifier for the bar in your plugin. ***This is a required field. { "BarType", "Default" }, //<string>Type of the bar. There are 4 types: Default, Timed, TimeCounter and TimeProgress. { "Plugin", "AdvancedStatusDemo" }, //<string>Name of your plugin. ***This is a required field. { "Category", "Default" }, //<string>Internal plugin category of the bar. { "Order", 10 }, //<int>The position of your bar relative to others. Order is determined by increasing values(ASC). { "Height", 26 }, //<int>The height of your bar. A standard bar is 26 pixels. { "Main_Color", "#505F75" }, //<string>HTML Hex color of the bar background. { "Main_Transparency", 0.7f }, //<float>Transparency of the bar background. { "Main_Material", "assets/content/ui/uibackgroundblur.mat" }, //<string>Material of the bar background(empty to disable). { "Image", "scrap" }, //<string>Name of the image saved in the ImageLibrary or a direct link to the image if ImageLibrary is not used. { "Image_Local", "AdvancedStatusDemo_Scrap" }, //<string>The name of the image file(without its extension) located in *SERVER*\data\AdvancedStatus\Images. Leave empty to use Image. { "Image_Sprite", "" }, //<string>Sprite image of the bar. Leave empty to use Image_Local or Image. { "Is_RawImage", true }, //<bool>Which type of image will be used? True - CuiRawImageComponent. False - CuiImageComponent. { "Image_Color", "#6B7E95" }, //<string>HTML Hex color of the bar image. { "Image_Transparency", 1.0f }, //<float>Transparency of the image. { "Text", "Scrap" }, //<string>Main text. { "Text_Size", 12 }, //<int>Size of the main text. { "Text_Color", "#FFFFFF" }, //<string>HTML Hex color of the main text. { "Text_Font", "RobotoCondensed-Bold.ttf" }, //<string>Font of the main text. { "Text_Offset_Horizontal", 0 }, //<int>Horizontal offset for the main text. { "SubText", "35" }, //<string>Sub text. { "SubText_Size", 12 }, //<int>Size of the sub text. { "SubText_Color", "#FFFFFF" }, //<string>HTML Hex color of the sub text. { "SubText_Font", "RobotoCondensed-Bold.ttf" }, //<string>Font of the sub text. { "TimeStampStart", Network.TimeEx.currentTimestamp }, //<double>Responsible for specifying the start point of the time reference and 0% for TimeProgress and TimeProgressCounter bars. Used if the bar type is Timed, TimeCounter, TimeProgress or TimeProgressCounter. { "TimeStamp", Network.TimeEx.currentTimestamp + 6 }, //<double>Specifies the end time point after which the bar will be destroyed and 100% for TimeProgress and TimeProgressCounter bars. Used if the bar type is Timed, TimeCounter, TimeProgress or TimeProgressCounter. { "TimeStampDestroy", Network.TimeEx.currentTimestamp + 3 }, //<double>If TimeStampDestroy is specified and it is less than TimeStamp, the bar will be destroyed by TimeStampDestroy. Used if the bar type is Timed, TimeCounter, TimeProgress or TimeProgressCounter. { "Progress", (float)35 / 100f }, //<float>Progress. From 0.0 to 1.0. { "Progress_Reverse", false }, //<bool>Progress reverse. A value of false means that the progress will increase. Used if the bar type is TimeProgress or TimeProgressCounter. { "Progress_Color", "#89B840" }, //<string>Progress color. { "Progress_Transparency", 1f }, //<float>Progress transparency. { "Progress_OffsetMin", "25 2.5" }, //<string>Progress OffsetMin: "*left* *bottom*". { "Progress_OffsetMax", "-3.5 -3.5" }, //<string>Progress OffsetMax: "*right* *top*". { "Command", "kit" } //<string>If the field is not empty, the bar becomes clickable, and the specified command is executed upon clicking. Note: the command must be covalence. }; AdvancedStatus?.Call("CreateBar", player.userID.Get(), parameters); //Calling the CreateBar method with the passing of BasePlayer/playerID and a dictionary containing the required parameters.  
    UpdateContent:
    Used to update only the content of an existing status bar.
    To call the UpdateContent method, you need to pass 2 parameters. The first one is BasePlayer or <ulong>playerID. The second one is a dictionary with the parameters you need.
    In the UpdateBar method, all parameters are optional, except for two:
    Id; Plugin. var parameters = new Dictionary<string, object> { { "Id", "MyID" }, //<string>Unique identifier for the bar in your plugin. ***This is a required field. { "Plugin", Name }, //<string>Name of your plugin. ***This is a required field. { "Text", "MyText" }, //<string>Main text. { "SubText", "MyText" }, //<string>Sub text. { "Progress", (float)amount / 100f }, //<float>Progress. From 0.0 to 1.0. }; AdvancedStatus?.Call("UpdateContent", player.userID.Get(), parameters); //Calling the UpdateContent method with the passing of BasePlayer/playerID and a dictionary containing the required parameters.  
    DeleteBar:
    Used to remove the bar for a player.
    There are two methods for removing a bar by ID:
    with specifying a particular player; To call this method, you need to pass 3 parameters. The first one is BasePlayer or <ulong>playerID. The second one is Id of your bar and the third one is name of your plugin. without specifying a particular player (which removes it for all players) To call this method, you need to pass 2 parameters. The first one is Id of your bar and the second one is name of your plugin. AdvancedStatus?.Call("DeleteBar", player.userID.Get(), barID, Name); //Calling the DeleteBar method with the passing of BasePlayer/playerID, ID of the bar and the name of your plugin. AdvancedStatus?.Call("DeleteBar", barID, Name); //Calling the DeleteBar method with the passing of ID of the bar and the name of your plugin. If you try to delete a bar that doesn't exist, nothing bad will happen. So feel free to delete the bar without checking its existence.
    P.S. When unloading your plugin, there is no need to manually delete bars for players, AdvancedStatus will handle it automatically.
     
    DeleteCategory:
    Used to remove all bars associated with the plugin's category.
    To call the DeleteCategory method, you need to pass 2 parameters. The first one is category and the second one is name of your plugin.
    AdvancedStatus?.Call("DeleteCategory", "Default", Name);//Calling the DeleteCategory method by passing the category and name of your plugin  
    DeleteAllBars:
    Used to remove all bars associated with the plugin.
    To call the DeleteAllBars method, you need to pass only 1 parameter. It is name of your plugin.
    AdvancedStatus?.Call("DeleteAllBars", Name);//Calling the DeleteAllBars method, passing the name of your plugin  
    GetTotalClientBars:
    Used to get the number of client bars for the player.
    To call the GetTotalClientBars method, you need to pass only 1 parameter. It is BasePlayer or <ulong>playerID.
    (int)AdvancedStatus?.Call("GetTotalClientBars", player.userID.Get());//Calling the GetTotalClientBars method, passing the name of BasePlayer/playerID  
    GetTotalPlayerBars:
    Used to get the number of active custom bars for the player.
    To call the GetTotalPlayerBars method, you need to pass only 1 parameter. It is BasePlayer or <ulong>playerID.
    (int)AdvancedStatus?.Call("GetTotalPlayerBars", player.userID.Get());//Calling the GetTotalPlayerBars method, passing the name of BasePlayer/playerID  
    LoadImages:
    Used to check if the local images specified in the list are loaded.
    If any of the images are not loaded but their files exist in the images folder, the plugin will load them.
    To call the LoadImages method, you need to pass only 2 parameters. The first one is the <List<string>>list of image's name and the second one(optional) is <bool>force, which, if set to true, will force reload the image even if it already exists.
    AdvancedStatus?.Call("LoadImages", list, false);//Calling the LoadImages method, passing a list of image names  
    LoadImage:
    Used to check if the local image is loaded.
    If the file is not loaded and exists in the images folder, the plugin will load it.
    To call the LoadImage method, you need to pass 2 parameters. The first one is the <string>image's name and the second one(optional) is <bool>force, which, if set to true, will force reload the image even if it already exists.
    AdvancedStatus?.Call("LoadImage", imgName, false);//Calling the LoadImage method, passing an image's name  
    CopyImage:
    Used to create and load a copy of an existing image.
    To call the CopyImage method, you need to pass 3 parameters. The first parameter is the <string>source image's name, the second parameter is the <string>new image's name and the third one(optional) is <bool>force, which, if set to true, will force copy and reload the image even if it already exists.
    AdvancedStatus?.Call("CopyImage", "ZoneStatus_Default", "ZoneStatus_NewZone", false);//Calling CopyImage, passing the source image name and the new image name.  
    DeleteImages:
    Used to delete a list of images and their files.
    To call the DeleteImages method, you need to pass 2 parameters. The first one is the <List<string>>list of image's name and the second one(optional) parameter is <bool>deleteFile, which, if set to true, will delete image's file too.
    AdvancedStatus?.Call("DeleteImages", list, true);//Calling DeleteImages, passing a list of image names.  
    DeleteImage:
    Used for removing the image and the image file.
    To call the DeleteImage method, you need to pass 2 parameters. The first parameter is the <string>image's name and the second one(optional) parameter is <bool>deleteFile, which, if set to true, will delete image's file too.
    AdvancedStatus?.Call("DeleteImage", "ZoneStatus_NewZone", true);//Calling DeleteImage, passing the image name.  
    BarExists:
    Used to check if the specified bar exists.
    To call the BarExists method, you need to pass 3 parameters. The first one is BasePlayer or <ulong>playerID. The second one is Id of your bar. And the third one is name of your plugin.
    (bool)AdvancedStatus?.Call("BarExists", player.userID.Get(), barID, Name);//Calling the BarExists method with the passing of BasePlayer/playerID, ID of the bar and name of your plugin.  
    InBuildingPrivilege:
    Used to check if the player has authorized building privileges.
    To call the InBuildingPrivilege method, you need to pass BasePlayer or <ulong>playerID.
    (bool)AdvancedStatus?.Call("InBuildingPrivilege", player.userID.Get());//Checking if the player has Building Privilege.  
  4. More information about "Vehicles"

    $12.00

    Vehicles

    Spawn any type of vehicle prefab with custom commands, permissions, cooldown, starting fuel, fuel consumption, extra seats and extra mounts.
    The default config contains every vehicle that currently exists in Rust.
    Using the default config as an example;
       - The chat command to spawn a Minicopter would be the  SpawnCommandPrefix  followed by the key in the config corresponding to the Minicopter:    /mymini
       - The chat command to fetch the Minicopter would be the  FetchCommandPrefix  followed by the corresponding key:  /gmini
       - The chat command to despawn the Minicopter would be the  DespawnCommandPrefix  followed by the corresponding key:  /nomini
     
    Config
       "SpawnCommandPrefix"                                             Prefix for the spawn chat command.
       "FetchCommandPrefix"                                               Prefix for the fetch chat command.
       "DespawnCommandPrefix"                                         Prefix for the despawn chat command.
       "AllowMultipleIdentical"                                                Allows players to have multiple vehicles of the same type.
       "FetchOldVehicleInsteadOfSpawningIdentical"          Fetches the old vehicle if the player attempts to spawn an identical vehicle.
       "AllowFetchingWhenOccupied"                                   Allows players to fetch their vehicles when there are players mounted on it.
       "DismountOccupantsWhenFetching"                          Dismounts every occupant when the player fetches their vehicle.
       "AllowDespawningWhenOccupied"                             Allows players to despawn their vehicles when there are players mounted on it.
       "RefundFuelOnDespawn"                                             Refunds any fuel left inside the fuel tank when the player despawns their vehicles using the chat command.
       "NotifyWhenVehicleDestroyed"                                   Sends a chat message to the player when their vehicles are destroyed.
       "DestroyVehiclesOnDisconnect"                                 Destroys every vehicle when their owner disconnects.
       "PreventVehiclesDecay"                                              Prevents player spawned vehicles from taking decay damage.
       "ClearCooldownsOnMapWipe"                                    Automatically clear the cooldowns from the data file when map wipes.
       "BlockWhenMountedOrParented"                               Prevents players from spawning or fetching vehicles when they are mounted or parented.
       "BlockWhenBuildingBlocked"                                       Prevents players from spawning or fetching vehicles when they are building blocked.
       "BlockInSafeZone"                                                        Prevents players from spawning or fetching vehicles when they are in a safe zone.
       "BlockWhenCombatBlocked"                                       Prevents players from spawning or fetching vehicles when they are combat blocked.   (Requires NoEscape)
       "BlockWhenRaidBlocked"                                             Prevents players from spawning or fetching vehicles when they are raid blocked.         (Requires NoEscape)
       "RemoveChinookMapMarker"                                      Removes the map marker from Chinooks.
     
    Vehicle settings:
       "Name"                                                                           Name of the vehicle that will be shown in chat messages.
       "Prefab"                                                                          Path of the prefab to spawn.
       "SpawnCooldown"                                                         A dictionary of permissions and their associated spawn cooldown. Permissions from the bottom have priority when player has multiple permission. The player must have at least one of these permissions to be able to spawn the vehicle. A permission without name means no permission needed, or the whole dictionary can be set to null.
       "FetchCooldown"                                                           A dictionary of permissions and their associated fetch cooldown. Permissions from the bottom have priority when player has multiple permission. The player must have at least one of these permissions to be able to fetch the vehicle. A permission without name means no permission needed, or the whole dictionary can be set to null.
       "MaxSpawnDistance"                                                    A dictionary of permissions and their associated max spawn distance. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, if the the whole dictionary is 'null' a maximum of 100.0 is used.
       "FetchDistanceLimit"                                                      A dictionary of permissions and their associated fetch distance limit. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, if the whole dictionary is 'null' there will be no fetch distance limits.
       "DespawnDistanceLimit"                                                A dictionary of permissions and their associated despawn distance limit. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, if the whole dictionary is 'null' there will be no despawn distance limits.
       "StartingFuel"                                                                 A dictionary of permissions and their associated starting fuel. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, the whole dictionary can be 'null'.
       "LockFuelContainer"                                                      A dictionary of permissions and their associated lock fuel container option. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, the whole dictionary can be 'null'.
       "FuelPerSecond"                                                            A dictionary of permissions and their associated fuel per second option. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, the whole dictionary can be 'null'. This options applies to Minicopters, Scrap Helicopters, Row Boats, RHIBs, Tug Boats and Hot Air Balloons.
       "IdleFuelPerSecond"                                                      A dictionary of permissions and their associated idle fuel per second option. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, the whole dictionary can be 'null'. This options applies to Submarines, Snowmobiles, Modular Cars, Magnet Cranes and Trains.
       "MaxFuelPerSecond"                                                     A dictionary of permissions and their associated max fuel per second option. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, the whole dictionary can be 'null'. This options applies to Submarines, Snowmobiles, Modular Cars, Magnet Cranes and Trains.
       "ExtraMounts"                                                                A dictionary of permissions and their associated list of extra mounts. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, the whole dictionary can be 'null'.  Position and rotation are relative to the vehicle (position X, position Y, position Z, rotation X, rotation Y, rotation Z).
       "ExtraSeats"                                                                    A dictionary of permissions and their associated list of extra seats. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, the whole dictionary can be 'null'.  Position and rotation are relative to the vehicle (position X, position Y, position Z, rotation X, rotation Y, rotation Z).
       "YRotationSpawnOffset"                                                Vehicle spawn rotation, relative to the looking direction of the player. (-90 is 90 º left, 90 is 90 º right)
       "CanOnlySpawnOnWater"                                             Blocks vehicle from being spawned or fetched on land.
       "CanNotSpawnOnWater"                                               Blocks vehicle from being spawned or fetched on water.
     
    { "SpawnCommandPrefix": "my", "FetchCommandPrefix": "g", "DespawnCommandPrefix": "no", "AllowMultipleIdentical": false, "FetchOldVehicleInsteadOfSpawningIdentical": true, "AllowFetchingWhenOccupied": false, "DismountOccupantsWhenFetching": true, "AllowDespawningWhenOccupied": false, "RefundFuelOnDespawn": false, "NotifyWhenVehicleDestroyed": false, "DestroyVehiclesOnDisconnect": false, "PreventVehiclesDecay": false, "ClearCooldownsOnMapWipe": true, "BlockWhenMountedOrParented": true, "BlockWhenBuildingBlocked": true, "BlockInSafeZone": true, "BlockWhenCombatBlocked": true, "BlockWhenRaidBlocked": true, "RemoveChinookMapMarker": true, "Vehicles": { "ball": { "Name": "Soccer Ball", "Prefab": "assets/content/vehicles/ball/ball.entity.prefab", "SpawnCooldown": { "": 86400.0, "vehicles.ball": 3600.0, "vehicles.ball.VIP": 300.0 }, "FetchCooldown": { "": 1800.0, "vehicles.ball": 60.0, "vehicles.ball.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.ball": 20.0, "vehicles.ball.VIP": 50.0 }, "FetchDistanceLimit": { "": 0.0 }, "DespawnDistanceLimit": { "": 0.0 }, "StartingFuel": null, "LockFuelContainer": null, "FuelPerSecond": null, "IdleFuelPerSecond": null, "MaxFuelPerSecond": null, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": 0.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "attack": { "Name": "Attack Helicopter", "Prefab": "assets/content/vehicles/attackhelicopter/attackhelicopter.entity.prefab", "SpawnCooldown": { "vehicles.attack": 3600.0, "vehicles.attack.VIP": 300.0 }, "FetchCooldown": { "vehicles.attack": 60.0, "vehicles.attack.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.attack": 5.0, "vehicles.attack.VIP": 15.0 }, "FetchDistanceLimit": { "vehicles.attack": 50.0, "vehicles.attack.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.attack": 50.0, "vehicles.attack.VIP": 0.0 }, "StartingFuel": { "vehicles.attack": 0, "vehicles.attack.VIP": 1 }, "LockFuelContainer": { "vehicles.attack": false, "vehicles.attack.VIP": true }, "FuelPerSecond": { "vehicles.attack": 0.5, "vehicles.attack.VIP": 0.0 }, "IdleFuelPerSecond": null, "MaxFuelPerSecond": null, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "mini": { "Name": "Minicopter", "Prefab": "assets/content/vehicles/minicopter/minicopter.entity.prefab", "SpawnCooldown": { "vehicles.minicopter": 3600.0, "vehicles.minicopter.VIP": 300.0 }, "FetchCooldown": { "vehicles.minicopter": 60.0, "vehicles.minicopter.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.minicopter": 5.0, "vehicles.minicopter.VIP": 15.0 }, "FetchDistanceLimit": { "vehicles.minicopter": 50.0, "vehicles.minicopter.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.minicopter": 50.0, "vehicles.minicopter.VIP": 0.0 }, "StartingFuel": { "vehicles.minicopter": 0, "vehicles.minicopter.VIP": 1 }, "LockFuelContainer": { "vehicles.minicopter": false, "vehicles.minicopter.VIP": true }, "FuelPerSecond": { "vehicles.minicopter": 0.5, "vehicles.minicopter.VIP": 0.0 }, "IdleFuelPerSecond": null, "MaxFuelPerSecond": null, "ExtraMounts": { "vehicles.minicopter1": [ { "pX": 0.0, "pY": 0.35, "pZ": -1.45, "rX": 0.0, "rY": 180.0, "rZ": 0.0 } ], "vehicles.minicopter2": [ { "pX": 0.6, "pY": 0.2, "pZ": -0.2, "rX": 0.0, "rY": 0.0, "rZ": 0.0 }, { "pX": -0.6, "pY": 0.2, "pZ": -0.2, "rX": 0.0, "rY": 0.0, "rZ": 0.0 } ], "vehicles.minicopter3": [ { "pX": 0.0, "pY": 0.35, "pZ": -1.45, "rX": 0.0, "rY": 180.0, "rZ": 0.0 }, { "pX": 0.6, "pY": 0.2, "pZ": -0.2, "rX": 0.0, "rY": 0.0, "rZ": 0.0 }, { "pX": -0.6, "pY": 0.2, "pZ": -0.2, "rX": 0.0, "rY": 0.0, "rZ": 0.0 } ] }, "ExtraSeats": { "vehicles.minicopter1": [ { "pX": 0.0, "pY": 0.4, "pZ": -1.1, "rX": 0.0, "rY": 180.0, "rZ": 0.0 } ], "vehicles.minicopter2": [ { "pX": 0.6, "pY": 0.2, "pZ": -0.5, "rX": 0.0, "rY": 0.0, "rZ": 0.0 }, { "pX": -0.6, "pY": 0.2, "pZ": -0.5, "rX": 0.0, "rY": 0.0, "rZ": 0.0 } ], "vehicles.minicopter3": [ { "pX": 0.0, "pY": 0.4, "pZ": -1.1, "rX": 0.0, "rY": 180.0, "rZ": 0.0 }, { "pX": 0.6, "pY": 0.2, "pZ": -0.5, "rX": 0.0, "rY": 0.0, "rZ": 0.0 }, { "pX": -0.6, "pY": 0.2, "pZ": -0.5, "rX": 0.0, "rY": 0.0, "rZ": 0.0 } ] }, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "heli": { "Name": "Scrap Transport Helicopter", "Prefab": "assets/content/vehicles/scrap heli carrier/scraptransporthelicopter.prefab", "SpawnCooldown": { "vehicles.scraphelicopter": 3600.0, "vehicles.scraphelicopter.VIP": 300.0 }, "FetchCooldown": { "vehicles.scraphelicopter": 60.0, "vehicles.scraphelicopter.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.scraphelicopter": 5.0, "vehicles.scraphelicopter.VIP": 15.0 }, "FetchDistanceLimit": { "vehicles.scraphelicopter": 50.0, "vehicles.scraphelicopter.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.scraphelicopter": 50.0, "vehicles.scraphelicopter.VIP": 0.0 }, "StartingFuel": { "vehicles.scraphelicopter": 0, "vehicles.scraphelicopter.VIP": 1 }, "LockFuelContainer": { "vehicles.scraphelicopter": false, "vehicles.scraphelicopter.VIP": true }, "FuelPerSecond": { "vehicles.scraphelicopter": 0.5, "vehicles.scraphelicopter.VIP": 0.0 }, "IdleFuelPerSecond": null, "MaxFuelPerSecond": null, "ExtraMounts": { "vehicles.scraphelicopter2": [ { "pX": -1.235, "pY": 1.0, "pZ": -2.75, "rX": 0.0, "rY": 180.0, "rZ": 0.0 }, { "pX": 1.2, "pY": 1.0, "pZ": -2.75, "rX": 0.0, "rY": 180.0, "rZ": 0.0 } ] }, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "boat": { "Name": "Row Boat", "Prefab": "assets/content/vehicles/boats/rowboat/rowboat.prefab", "SpawnCooldown": { "vehicles.rowboat": 3600.0, "vehicles.rowboat.VIP": 300.0 }, "FetchCooldown": { "vehicles.rowboat": 60.0, "vehicles.rowboat.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.rowboat": 3.0, "vehicles.rowboat.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.rowboat": 50.0, "vehicles.rowboat.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.rowboat": 50.0, "vehicles.rowboat.VIP": 0.0 }, "StartingFuel": { "vehicles.rowboat": 0, "vehicles.rowboat.VIP": 1 }, "LockFuelContainer": { "vehicles.rowboat": false, "vehicles.rowboat.VIP": true }, "FuelPerSecond": { "vehicles.rowboat": 0.1, "vehicles.rowboat.VIP": 0.0 }, "IdleFuelPerSecond": null, "MaxFuelPerSecond": null, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": true, "CanNotSpawnOnWater": false }, "rhib": { "Name": "RHIB", "Prefab": "assets/content/vehicles/boats/rhib/rhib.prefab", "SpawnCooldown": { "vehicles.rhib": 3600.0, "vehicles.rhib.VIP": 300.0 }, "FetchCooldown": { "vehicles.rhib": 60.0, "vehicles.rhib.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.rhib": 5.0, "vehicles.rhib.VIP": 15.0 }, "FetchDistanceLimit": { "vehicles.rhib": 50.0, "vehicles.rhib.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.rhib": 50.0, "vehicles.rhib.VIP": 0.0 }, "StartingFuel": { "vehicles.rhib": 0, "vehicles.rhib.VIP": 1 }, "LockFuelContainer": { "vehicles.rhib": false, "vehicles.rhib.VIP": true }, "FuelPerSecond": { "vehicles.rhib": 0.25, "vehicles.rhib.VIP": 0.0 }, "IdleFuelPerSecond": null, "MaxFuelPerSecond": null, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": true, "CanNotSpawnOnWater": false }, "kayak": { "Name": "Kayak", "Prefab": "assets/content/vehicles/boats/kayak/kayak.prefab", "SpawnCooldown": { "vehicles.kayak": 3600.0, "vehicles.kayak.VIP": 300.0 }, "FetchCooldown": { "vehicles.kayak": 60.0, "vehicles.kayak.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.kayak": 3.0, "vehicles.kayak.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.kayak": 50.0, "vehicles.kayak.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.kayak": 50.0, "vehicles.kayak.VIP": 0.0 }, "StartingFuel": null, "LockFuelContainer": null, "FuelPerSecond": null, "IdleFuelPerSecond": null, "MaxFuelPerSecond": null, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": true, "CanNotSpawnOnWater": false }, "sub1": { "Name": "Solo Submarine", "Prefab": "assets/content/vehicles/submarine/submarinesolo.entity.prefab", "SpawnCooldown": { "vehicles.submarinesolo": 3600.0, "vehicles.submarinesolo.VIP": 300.0 }, "FetchCooldown": { "vehicles.submarinesolo": 60.0, "vehicles.submarinesolo.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.submarinesolo": 3.0, "vehicles.submarinesolo.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.submarinesolo": 50.0, "vehicles.submarinesolo.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.submarinesolo": 50.0, "vehicles.submarinesolo.VIP": 0.0 }, "StartingFuel": { "vehicles.submarinesolo": 0, "vehicles.submarinesolo.VIP": 1 }, "LockFuelContainer": { "vehicles.submarinesolo": false, "vehicles.submarinesolo.VIP": true }, "FuelPerSecond": null, "IdleFuelPerSecond": { "vehicles.submarinesolo": 0.025, "vehicles.submarinesolo.VIP": 0.0 }, "MaxFuelPerSecond": { "vehicles.submarinesolo": 0.13, "vehicles.submarinesolo.VIP": 0.0 }, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": true, "CanNotSpawnOnWater": false }, "sub2": { "Name": "Duo Submarine", "Prefab": "assets/content/vehicles/submarine/submarineduo.entity.prefab", "SpawnCooldown": { "vehicles.submarineduo": 3600.0, "vehicles.submarineduo.VIP": 300.0 }, "FetchCooldown": { "vehicles.submarineduo": 60.0, "vehicles.submarineduo.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.submarineduo": 3.0, "vehicles.submarineduo.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.submarineduo": 50.0, "vehicles.submarineduo.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.submarineduo": 50.0, "vehicles.submarineduo.VIP": 0.0 }, "StartingFuel": { "vehicles.submarineduo": 0, "vehicles.submarineduo.VIP": 1 }, "LockFuelContainer": { "vehicles.submarineduo": false, "vehicles.submarineduo.VIP": true }, "FuelPerSecond": null, "IdleFuelPerSecond": { "vehicles.submarineduo": 0.03, "vehicles.submarineduo.VIP": 0.0 }, "MaxFuelPerSecond": { "vehicles.submarineduo": 0.15, "vehicles.submarineduo.VIP": 0.0 }, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": true, "CanNotSpawnOnWater": false }, "tug": { "Name": "Tugboat", "Prefab": "assets/content/vehicles/boats/tugboat/tugboat.prefab", "SpawnCooldown": { "vehicles.tugboat": 3600.0, "vehicles.tugboat.VIP": 300.0 }, "FetchCooldown": { "vehicles.tugboat": 60.0, "vehicles.tugboat.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.tugboat": 10.0, "vehicles.tugboat.VIP": 25.0 }, "FetchDistanceLimit": { "vehicles.tugboat": 50.0, "vehicles.tugboat.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.tugboat": 50.0, "vehicles.tugboat.VIP": 0.0 }, "StartingFuel": { "vehicles.tugboat": 0, "vehicles.tugboat.VIP": 1 }, "LockFuelContainer": { "vehicles.tugboat": false, "vehicles.tugboat.VIP": true }, "FuelPerSecond": { "vehicles.tugboat": 0.33, "vehicles.tugboat.VIP": 0.0 }, "IdleFuelPerSecond": null, "MaxFuelPerSecond": null, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": true, "CanNotSpawnOnWater": false }, "hab": { "Name": "Hot Air Balloon", "Prefab": "assets/prefabs/deployable/hot air balloon/hotairballoon.prefab", "SpawnCooldown": { "vehicles.hotairballoon": 3600.0, "vehicles.hotairballoon.VIP": 300.0 }, "FetchCooldown": { "vehicles.hotairballoon": 60.0, "vehicles.hotairballoon.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.hotairballoon": 3.0, "vehicles.hotairballoon.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.hotairballoon": 50.0, "vehicles.hotairballoon.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.hotairballoon": 50.0, "vehicles.hotairballoon.VIP": 0.0 }, "StartingFuel": { "vehicles.hotairballoon": 0, "vehicles.hotairballoon.VIP": 1 }, "LockFuelContainer": { "vehicles.hotairballoon": false, "vehicles.hotairballoon.VIP": true }, "FuelPerSecond": { "vehicles.hotairballoon": 0.25, "vehicles.hotairballoon.VIP": 0.0 }, "IdleFuelPerSecond": null, "MaxFuelPerSecond": null, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": 180.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "horse": { "Name": "Ridable Horse", "Prefab": "assets/rust.ai/nextai/testridablehorse.prefab", "SpawnCooldown": { "vehicles.ridablehorse": 3600.0, "vehicles.ridablehorse.VIP": 300.0 }, "FetchCooldown": { "vehicles.ridablehorse": 60.0, "vehicles.ridablehorse.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.ridablehorse": 3.0, "vehicles.ridablehorse.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.ridablehorse": 50.0, "vehicles.ridablehorse.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.ridablehorse": 50.0, "vehicles.ridablehorse.VIP": 0.0 }, "StartingFuel": null, "LockFuelContainer": null, "FuelPerSecond": null, "IdleFuelPerSecond": null, "MaxFuelPerSecond": null, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": true }, "sled": { "Name": "Sled", "Prefab": "assets/prefabs/misc/xmas/sled/sled.deployed.prefab", "SpawnCooldown": { "vehicles.sled": 3600.0, "vehicles.sled.VIP": 300.0 }, "FetchCooldown": { "vehicles.sled": 60.0, "vehicles.sled.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.sled": 3.0, "vehicles.sled.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.sled": 50.0, "vehicles.sled.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.sled": 50.0, "vehicles.sled.VIP": 0.0 }, "StartingFuel": null, "LockFuelContainer": null, "FuelPerSecond": null, "IdleFuelPerSecond": null, "MaxFuelPerSecond": null, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "snow": { "Name": "Snowmobile", "Prefab": "assets/content/vehicles/snowmobiles/snowmobile.prefab", "SpawnCooldown": { "vehicles.snowmobile": 3600.0, "vehicles.snowmobile.VIP": 300.0 }, "FetchCooldown": { "vehicles.snowmobile": 60.0, "vehicles.snowmobile.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.snowmobile": 3.0, "vehicles.snowmobile.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.snowmobile": 50.0, "vehicles.snowmobile.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.snowmobile": 50.0, "vehicles.snowmobile.VIP": 0.0 }, "StartingFuel": { "vehicles.snowmobile": 0, "vehicles.snowmobile.VIP": 1 }, "LockFuelContainer": { "vehicles.snowmobile": false, "vehicles.snowmobile.VIP": true }, "FuelPerSecond": null, "IdleFuelPerSecond": { "vehicles.snowmobile": 0.03, "vehicles.snowmobile.VIP": 0.0 }, "MaxFuelPerSecond": { "vehicles.snowmobile": 0.15, "vehicles.snowmobile.VIP": 0.0 }, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "tomaha": { "Name": "Tomaha Snowmobile", "Prefab": "assets/content/vehicles/snowmobiles/tomahasnowmobile.prefab", "SpawnCooldown": { "vehicles.tomaha": 3600.0, "vehicles.tomaha.VIP": 300.0 }, "FetchCooldown": { "vehicles.tomaha": 60.0, "vehicles.tomaha.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.tomaha": 3.0, "vehicles.tomaha.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.tomaha": 50.0, "vehicles.tomaha.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.tomaha": 50.0, "vehicles.tomaha.VIP": 0.0 }, "StartingFuel": { "vehicles.tomaha": 0, "vehicles.tomaha.VIP": 1 }, "LockFuelContainer": { "vehicles.tomaha": false, "vehicles.tomaha.VIP": true }, "FuelPerSecond": null, "IdleFuelPerSecond": { "vehicles.tomaha": 0.03, "vehicles.tomaha.VIP": 0.0 }, "MaxFuelPerSecond": { "vehicles.tomaha": 0.15, "vehicles.tomaha.VIP": 0.0 }, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "motorbike": { "Name": "Motorbike", "Prefab": "assets/content/vehicles/bikes/motorbike.prefab", "SpawnCooldown": { "vehicles.motorbike": 3600.0, "vehicles.motorbike.VIP": 300.0 }, "FetchCooldown": { "vehicles.motorbike": 60.0, "vehicles.motorbike.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.motorbike": 3.0, "vehicles.motorbike.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.motorbike": 50.0, "vehicles.motorbike.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.motorbike": 50.0, "vehicles.motorbike.VIP": 0.0 }, "StartingFuel": { "vehicles.motorbike": 0, "vehicles.motorbike.VIP": 1 }, "LockFuelContainer": { "vehicles.motorbike": false, "vehicles.motorbike.VIP": true }, "FuelPerSecond": null, "IdleFuelPerSecond": { "vehicles.motorbike": 0.03, "vehicles.motorbike.VIP": 0.0 }, "MaxFuelPerSecond": { "vehicles.motorbike": 0.15, "vehicles.motorbike.VIP": 0.0 }, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "motorbike2": { "Name": "Motorbike Sidecar", "Prefab": "assets/content/vehicles/bikes/motorbike_sidecar.prefab", "SpawnCooldown": { "vehicles.motorbike2": 3600.0, "vehicles.motorbike2.VIP": 300.0 }, "FetchCooldown": { "vehicles.motorbike2": 60.0, "vehicles.motorbike2.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.motorbike2": 3.0, "vehicles.motorbike2.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.motorbike2": 50.0, "vehicles.motorbike2.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.motorbike2": 50.0, "vehicles.motorbike2.VIP": 0.0 }, "StartingFuel": { "vehicles.motorbike2": 0, "vehicles.motorbike2.VIP": 1 }, "LockFuelContainer": { "vehicles.motorbike2": false, "vehicles.motorbike2.VIP": true }, "FuelPerSecond": null, "IdleFuelPerSecond": { "vehicles.motorbike2": 0.03, "vehicles.motorbike2.VIP": 0.0 }, "MaxFuelPerSecond": { "vehicles.motorbike2": 0.15, "vehicles.motorbike2.VIP": 0.0 }, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "bike": { "Name": "Pedal Bike", "Prefab": "assets/content/vehicles/bikes/pedalbike.prefab", "SpawnCooldown": { "vehicles.bike": 3600.0, "vehicles.bike.VIP": 300.0 }, "FetchCooldown": { "vehicles.bike": 60.0, "vehicles.bike.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.bike": 3.0, "vehicles.bike.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.bike": 50.0, "vehicles.bike.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.bike": 50.0, "vehicles.bike.VIP": 0.0 }, "StartingFuel": null, "LockFuelContainer": null, "FuelPerSecond": null, "IdleFuelPerSecond": null, "MaxFuelPerSecond": null, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "trike": { "Name": "Pedal Trike", "Prefab": "assets/content/vehicles/bikes/pedaltrike.prefab", "SpawnCooldown": { "vehicles.trike": 3600.0, "vehicles.trike.VIP": 300.0 }, "FetchCooldown": { "vehicles.trike": 60.0, "vehicles.trike.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.trike": 3.0, "vehicles.trike.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.trike": 50.0, "vehicles.trike.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.trike": 50.0, "vehicles.trike.VIP": 0.0 }, "StartingFuel": null, "LockFuelContainer": null, "FuelPerSecond": null, "IdleFuelPerSecond": null, "MaxFuelPerSecond": null, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "ch47": { "Name": "Chinook", "Prefab": "assets/prefabs/npc/ch47/ch47.entity.prefab", "SpawnCooldown": { "vehicles.chinook": 3600.0, "vehicles.chinook.VIP": 300.0 }, "FetchCooldown": { "vehicles.chinook": 60.0, "vehicles.chinook.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.chinook": 3.0, "vehicles.chinook.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.chinook": 50.0, "vehicles.chinook.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.chinook": 50.0, "vehicles.chinook.VIP": 0.0 }, "StartingFuel": null, "LockFuelContainer": null, "FuelPerSecond": null, "IdleFuelPerSecond": null, "MaxFuelPerSecond": null, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "sedan": { "Name": "Sedan", "Prefab": "assets/content/vehicles/sedan_a/sedantest.entity.prefab", "SpawnCooldown": { "vehicles.sedan": 3600.0, "vehicles.sedan.VIP": 300.0 }, "FetchCooldown": { "vehicles.sedan": 60.0, "vehicles.sedan.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.sedan": 3.0, "vehicles.sedan.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.sedan": 50.0, "vehicles.sedan.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.sedan": 50.0, "vehicles.sedan.VIP": 0.0 }, "StartingFuel": null, "LockFuelContainer": null, "FuelPerSecond": null, "IdleFuelPerSecond": null, "MaxFuelPerSecond": null, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "4mod": { "Name": "4 Module Car", "Prefab": "assets/content/vehicles/modularcar/4module_car_spawned.entity.prefab", "SpawnCooldown": { "vehicles.4modulecar": 3600.0, "vehicles.4modulecar.VIP": 300.0 }, "FetchCooldown": { "vehicles.4modulecar": 60.0, "vehicles.4modulecar.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.4modulecar": 3.0, "vehicles.4modulecar.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.4modulecar": 50.0, "vehicles.4modulecar.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.4modulecar": 50.0, "vehicles.4modulecar.VIP": 0.0 }, "StartingFuel": { "vehicles.4modulecar": 0, "vehicles.4modulecar.VIP": 1 }, "LockFuelContainer": { "vehicles.4modulecar": false, "vehicles.4modulecar.VIP": true }, "FuelPerSecond": null, "IdleFuelPerSecond": { "vehicles.4modulecar": 0.025, "vehicles.4modulecar.VIP": 0.0 }, "MaxFuelPerSecond": { "vehicles.4modulecar": 0.08, "vehicles.4modulecar.VIP": 0.0 }, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "3mod": { "Name": "3 Module Car", "Prefab": "assets/content/vehicles/modularcar/3module_car_spawned.entity.prefab", "SpawnCooldown": { "vehicles.3modulecar": 3600.0, "vehicles.3modulecar.VIP": 300.0 }, "FetchCooldown": { "vehicles.3modulecar": 60.0, "vehicles.3modulecar.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.3modulecar": 3.0, "vehicles.3modulecar.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.3modulecar": 50.0, "vehicles.3modulecar.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.3modulecar": 50.0, "vehicles.3modulecar.VIP": 0.0 }, "StartingFuel": { "vehicles.3modulecar": 0, "vehicles.3modulecar.VIP": 1 }, "LockFuelContainer": { "vehicles.3modulecar": false, "vehicles.3modulecar.VIP": true }, "FuelPerSecond": null, "IdleFuelPerSecond": { "vehicles.3modulecar": 0.025, "vehicles.3modulecar.VIP": 0.0 }, "MaxFuelPerSecond": { "vehicles.3modulecar": 0.08, "vehicles.3modulecar.VIP": 0.0 }, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "2mod": { "Name": "2 Module Car", "Prefab": "assets/content/vehicles/modularcar/2module_car_spawned.entity.prefab", "SpawnCooldown": { "vehicles.2modulecar": 3600.0, "vehicles.2modulecar.VIP": 300.0 }, "FetchCooldown": { "vehicles.2modulecar": 60.0, "vehicles.2modulecar.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.2modulecar": 3.0, "vehicles.2modulecar.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.2modulecar": 50.0, "vehicles.2modulecar.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.2modulecar": 50.0, "vehicles.2modulecar.VIP": 0.0 }, "StartingFuel": { "vehicles.2modulecar": 0, "vehicles.2modulecar.VIP": 1 }, "LockFuelContainer": { "vehicles.2modulecar": false, "vehicles.2modulecar.VIP": true }, "FuelPerSecond": null, "IdleFuelPerSecond": { "vehicles.2modulecar": 0.025, "vehicles.2modulecar.VIP": 0.0 }, "MaxFuelPerSecond": { "vehicles.2modulecar": 0.08, "vehicles.2modulecar.VIP": 0.0 }, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "crane": { "Name": "Magnet Crane", "Prefab": "assets/content/vehicles/crane_magnet/magnetcrane.entity.prefab", "SpawnCooldown": { "vehicles.magnetcrane": 3600.0, "vehicles.magnetcrane.VIP": 300.0 }, "FetchCooldown": { "vehicles.magnetcrane": 60.0, "vehicles.magnetcrane.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.magnetcrane": 3.0, "vehicles.magnetcrane.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.magnetcrane": 50.0, "vehicles.magnetcrane.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.magnetcrane": 50.0, "vehicles.magnetcrane.VIP": 0.0 }, "StartingFuel": { "vehicles.magnetcrane": 0, "vehicles.magnetcrane.VIP": 1 }, "LockFuelContainer": { "vehicles.magnetcrane": false, "vehicles.magnetcrane.VIP": true }, "FuelPerSecond": null, "IdleFuelPerSecond": { "vehicles.magnetcrane": 0.06668, "vehicles.magnetcrane.VIP": 0.0 }, "MaxFuelPerSecond": { "vehicles.magnetcrane": 0.3334, "vehicles.magnetcrane.VIP": 0.0 }, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": false }, "cart": { "Name": "Workcart", "Prefab": "assets/content/vehicles/trains/workcart/workcart.entity.prefab", "SpawnCooldown": { "vehicles.workcart": 3600.0, "vehicles.workcart.VIP": 300.0 }, "FetchCooldown": { "vehicles.workcart": 60.0, "vehicles.workcart.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.workcart": 3.0, "vehicles.workcart.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.workcart": 50.0, "vehicles.workcart.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.workcart": 50.0, "vehicles.workcart.VIP": 0.0 }, "StartingFuel": { "vehicles.workcart": 0, "vehicles.workcart.VIP": 1 }, "LockFuelContainer": { "vehicles.workcart": false, "vehicles.workcart.VIP": true }, "FuelPerSecond": null, "IdleFuelPerSecond": { "vehicles.workcart": 0.025, "vehicles.workcart.VIP": 0.0 }, "MaxFuelPerSecond": { "vehicles.workcart": 0.075, "vehicles.workcart.VIP": 0.0 }, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": true }, "agcart": { "Name": "Above Ground Workcart", "Prefab": "assets/content/vehicles/trains/workcart/workcart_aboveground.entity.prefab", "SpawnCooldown": { "vehicles.abovegroundworkcart": 3600.0, "vehicles.abovegroundworkcart.VIP": 300.0 }, "FetchCooldown": { "vehicles.abovegroundworkcart": 60.0, "vehicles.abovegroundworkcart.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.abovegroundworkcart": 3.0, "vehicles.abovegroundworkcart.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.abovegroundworkcart": 50.0, "vehicles.abovegroundworkcart.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.abovegroundworkcart": 50.0, "vehicles.abovegroundworkcart.VIP": 0.0 }, "StartingFuel": { "vehicles.abovegroundworkcart": 0, "vehicles.abovegroundworkcart.VIP": 1 }, "LockFuelContainer": { "vehicles.abovegroundworkcart": false, "vehicles.abovegroundworkcart.VIP": true }, "FuelPerSecond": null, "IdleFuelPerSecond": { "vehicles.abovegroundworkcart": 0.025, "vehicles.abovegroundworkcart.VIP": 0.0 }, "MaxFuelPerSecond": { "vehicles.abovegroundworkcart": 0.075, "vehicles.abovegroundworkcart.VIP": 0.0 }, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": true }, "agcart2": { "Name": "Above Ground Workcart 2", "Prefab": "assets/content/vehicles/trains/workcart/workcart_aboveground2.entity.prefab", "SpawnCooldown": { "vehicles.abovegroundworkcart2": 3600.0, "vehicles.abovegroundworkcart2.VIP": 300.0 }, "FetchCooldown": { "vehicles.abovegroundworkcart2": 60.0, "vehicles.abovegroundworkcart2.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.abovegroundworkcart2": 3.0, "vehicles.abovegroundworkcart2.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.abovegroundworkcart2": 50.0, "vehicles.abovegroundworkcart2.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.abovegroundworkcart2": 50.0, "vehicles.abovegroundworkcart2.VIP": 0.0 }, "StartingFuel": { "vehicles.abovegroundworkcart2": 0, "vehicles.abovegroundworkcart2.VIP": 1 }, "LockFuelContainer": { "vehicles.abovegroundworkcart2": false, "vehicles.abovegroundworkcart2.VIP": true }, "FuelPerSecond": null, "IdleFuelPerSecond": { "vehicles.abovegroundworkcart2": 0.025, "vehicles.abovegroundworkcart2.VIP": 0.0 }, "MaxFuelPerSecond": { "vehicles.abovegroundworkcart2": 0.075, "vehicles.abovegroundworkcart2.VIP": 0.0 }, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": true }, "locomotive": { "Name": "Locomotive", "Prefab": "assets/content/vehicles/trains/locomotive/locomotive.entity.prefab", "SpawnCooldown": { "vehicles.locomotive": 3600.0, "vehicles.locomotive.VIP": 300.0 }, "FetchCooldown": { "vehicles.locomotive": 60.0, "vehicles.locomotive.VIP": 5.0 }, "MaxSpawnDistance": { "vehicles.locomotive": 3.0, "vehicles.locomotive.VIP": 10.0 }, "FetchDistanceLimit": { "vehicles.locomotive": 50.0, "vehicles.locomotive.VIP": 0.0 }, "DespawnDistanceLimit": { "vehicles.locomotive": 50.0, "vehicles.locomotive.VIP": 0.0 }, "StartingFuel": { "vehicles.locomotive": 0, "vehicles.locomotive.VIP": 1 }, "LockFuelContainer": { "vehicles.locomotive": false, "vehicles.locomotive.VIP": true }, "FuelPerSecond": null, "IdleFuelPerSecond": { "vehicles.locomotive": 0.035, "vehicles.locomotive.VIP": 0.0 }, "MaxFuelPerSecond": { "vehicles.locomotive": 0.1, "vehicles.locomotive.VIP": 0.0 }, "ExtraMounts": null, "ExtraSeats": null, "YRotationSpawnOffset": -90.0, "CanOnlySpawnOnWater": false, "CanNotSpawnOnWater": true } }, "Version": { "Major": 0, "Minor": 1, "Patch": 8 } }  
     
     
     
     
    Lang:
    { "NoPermissionSpawn": "You do not have permission to spawn {0}s.", "NoPermissionFetch": "You do not have permission to fetch {0}s.", "MountedOrParented": "You cannot spawn or fetch vehicles while mounted or parented.", "BuildingBlocked": "You cannot spawn or fetch vehicles while building blocked.", "InSafeZone": "You cannot spawn or fetch vehicles in a safe zone.", "CombatBlocked": "You cannot spawn or fetch vehicles while combat blocked.", "RaidBlocked": "You cannot spawn or fetch vehicles while raid blocked.", "NotOnWater": "You can only spawn or fetch {0}s on water.", "OnWater": "You can not spawn or fetch {0}s on water.", "TracksNotFound": "You can only spawn or fetch {0}s on train tracks.", "LookingTooFar": "You must be looking at a position closer to you to be able to spawn or fetch {0}s.", "Destroyed": "Your {0} has been destroyed.", "AlreadySpawned": "You already own a {0}.\nUse '/{1}' to fetch it or '/{2}' to despawn it.", "SpawnCooldown": "You must wait {0} before spawning another {1}.", "FetchCooldown": "You must wait {0} before fetching your {1}.", "Spawned": "Your {0} has spawned.", "NotFound": "You do not have a {0}.", "TooFarFetch": "Your {0} is too far away to be fetched.", "TooFarDespawn": "Your {0} is too far away to be despawned.", "BeingUsedFetch": "Cannot fetch your {0} as it is currently being used by another player", "BeingUsedDespawn": "Cannot despawn your {0} as it is currently being used by another player", "Fetched": "You have fetched your {0}.", "Despawned": "You have despawned your {0}.{1}", "Refunded": "\nRefunded {0} low grade fuel." }  
     
     
     
     
    API
    List<Tuple<string, string, string>> GetConfig()
    Returns the suffix and its name and prefab for every vehicle in the config file.
    Example:
    List<Tuple<string, string, string>> suffixes = Vehicles.Call<List<Tuple<string, string, string>>>("GetConfig"); if (suffixes == null) return; for (int i = 0; i < suffixes.Count; i++) { string suffix = suffixes[i].Item1; string name = suffixes[i].Item2; string prefab = suffixes[i].Item3; }  
     
     
    List<ulong> GetEntities(ulong playerID, string suffix)
    Returns a `List<ulong>` with the network ID of all available entities spawned by the player with this suffix, returns `null` if none found.
    Example:
    List<ulong> minis = Vehicles.Call<List<ulong>>("GetEntities", player.userID, "mini"); if (minis == null) return; BaseEntity newestMini = BaseNetworkable.serverEntities.Find(new NetworkableId(minis[minis.Count - 1])) as BaseEntity; BaseEntity oldestMini = BaseNetworkable.serverEntities.Find(new NetworkableId(minis[0])) as BaseEntity;  
     
     
    Dictionary<string, List<ulong>> GetAllEntities(ulong playerID)
    Returns a `Dictionary<string, List<ulong>>` with the Key as the suffix and the Value as the network ID of all available entities spawned by the player, returns `null` if none found.
    Example:
    Dictionary<string, List<ulong>> entities = Vehicles.Call<Dictionary<string, List<ulong>>>("GetAllEntities", player.userID); if (entities == null) return; List<ulong> minis; if (entities.TryGetValue("mini", out minis)) { BaseEntity newestMini = BaseNetworkable.serverEntities.Find(new NetworkableId(minis[minis.Count - 1])) as BaseEntity; BaseEntity oldestMini = BaseNetworkable.serverEntities.Find(new NetworkableId(minis[0])) as BaseEntity; } List<ulong> boats; if (entities.TryGetValue("boat", out boats)) { BaseEntity newestBoat = BaseNetworkable.serverEntities.Find(new NetworkableId(boats[boats.Count - 1])) as BaseEntity; BaseEntity oldestBoat = BaseNetworkable.serverEntities.Find(new NetworkableId(boats[0])) as BaseEntity; }  
     
     
    bool IsPlayerEntity(ulong entityID)
    Checks if the entity belongs to `Vehicles`.
    Example:
    bool isPlayerEntity = Vehicles.Call<bool>("IsPlayerEntity", entity.net.ID.Value);  
     
     
    string GetSuffix(ulong entityID)
    Returns the suffix of the entity, returns `null` if the entity does not belong to `Vehicles`.
    Example:
    string suffix = Vehicles.Call<string>("GetSuffix", entity.net.ID.Value); if (string.IsNullOrWhiteSpace(suffix)) return;  
     
     
    ulong GetOwnerUserID(ulong entityID)
    Returns the userID of the player who spawned the entity (**not the entity's OwnerID**), returns `0uL` if the entity does not belong to `Vehicles`.
    Example:
    ulong playerID = Vehicles.Call<ulong>("GetOwnerUserID", entity.net.ID.Value); if (playerID == 0uL) return;  
     
     
    bool DespawnNewestEntity(ulong playerID, string suffix, bool refundFuel = false, bool notify = false)
    Despawns the newest available entity spawned by the player with this suffix, returns `false` if not found.
    Examples:
    bool success = Vehicles.Call<bool>("DespawnNewestEntity", player.userID, "mini"); bool success = Vehicles.Call<bool>("DespawnNewestEntity", player.userID, "mini", true, true);  
     
     
    int DespawnAllEntities(ulong playerID, string suffix = "", bool refundFuel = false, bool notify = false)
    Despawns all the entities (optionally by suffix) spawned by the player, returns the amount of entities despawned.
    Examples:
    int despawnedAmount = Vehicles.Call<int>("DespawnAllEntities", player.userID); int despawnedAmount = Vehicles.Call<int>("DespawnAllEntities", player.userID, "", true, true); int despawnedAmount = Vehicles.Call<int>("DespawnAllEntities", player.userID, "mini"); int despawnedAmount = Vehicles.Call<int>("DespawnAllEntities", player.userID, "mini", true, true);  
     
     
    bool AddEntity(ulong playerID, string suffix, ulong entityID)
    Adds the entity as the player's last spawned entity with this suffix, returns `false` if suffix does not exist.
    Example:
    bool success = Vehicles.Call<bool>("AddEntity", player.userID, "mini", entity.net.ID.Value);  
     
     
    bool RemoveEntity(ulong entityID, string suffix = "", ulong playerID = 0uL)
    Removes the entity so that it no longer belongs to `Vehicles`, faster if the two optional arguments are provided, returns `false` if entity does not belong to `Vehicles` or to the player's list of entities for this suffix.
    Examples:
    bool success = RemoveEntity(entity.net.ID.Value); bool isPlayerEntity = Vehicles.Call<bool>("IsPlayerEntity", entity.net.ID.Value); if (!isPlayerEntity) return; string suffix = Vehicles.Call<string>("GetSuffix", entity.net.ID.Value); ulong playerID = Vehicles.Call<ulong>("GetOwnerUserID", entity.net.ID.Value); bool success = Vehicles.Call<bool>("RemoveEntity", entity.net.ID.Value, suffix, playerID);  
     
     
    double GetCooldownLeft(ulong playerID, string suffix, bool fetch = false)
    Returns how many seconds are left for the player's cooldown to expire for this suffix, returns a negative number if the player's cooldown has expired,   returns `0.0` if suffix does not exist, returns `0.0` if the player's permissions do not have a cooldown for this suffix, or returns `-1.0` if the player does not yet contain a cooldown for this suffix.
    Examples:
    double left = Vehicles.Call<double>("GetCooldownLeft", player.userID, "mini"); bool canSpawn = (left <= 0 && left != -1); bool onSpawnCooldown = (left > 0.0); bool notFound = (left == -1); double left = Vehicles.Call<double>("GetCooldownLeft", player.userID, "mini", true); bool canFetch = (left <= 0 && left != -1); bool onFetchCooldown = (left > 0.0); bool notFound = (left == -1);  
     
     
    bool AddCooldown(ulong playerID, string suffix, bool fetch = false)
    Adds a cooldown to the player with the current timestamp for this suffix, returns `false` if the suffix does not exist.
    Examples:
    bool success = Vehicles.Call<bool>("AddCooldown", player.userID, "mini"); bool success = Vehicles.Call<bool>("AddCooldown", player.userID, "mini", true);  
     
     
    bool ClearCooldowns(ulong playerID, string suffix = "", bool fetch = false)
    Clears the spawn or the fetch cooldowns for the player, clears for every suffix unless one is provided, returns `false` if the player does not have any cooldowns or if the player does not have a cooldown for the provided suffix.
    Examples:
    bool success = Vehicles.Call<bool>("ClearCooldowns", player.userID, "mini"); bool success = Vehicles.Call<bool>("ClearCooldowns", player.userID, "mini", true); bool success = Vehicles.Call<bool>("ClearCooldowns", player.userID); bool success = Vehicles.Call<bool>("ClearCooldowns", player.userID, "", true);  
     
    string CooldownToString(double cooldown)
    Returns a formatted `string` with the span of time.
    Example:
    double left = Vehicles.Call<double>("GetCooldownLeft", player.userID, "mini"); if (left == -1.0 || left > 0.0) return; string duration = Vehicles.Call<string>("CooldownToString", left);  
     
     
    bool HasPermission(string playerId, string suffix, bool fetch = false)
    Checks if the player has permission to spawn or fetch this suffix, returns `false` if suffix does not exist.
    Examples:
    bool canSpawn = Vehicles.Call<bool>("HasPermission", player.UserIDString, "mini"); bool canFetch = Vehicles.Call<bool>("HasPermission", player.UserIDString, "mini", true);  
     
     
    bool CanSpawn(BasePlayer player)
    Checks if the player can spawn or fetch according to the config options.
    Example:
    bool canspawn = Vehicles.Call<bool>("CanSpawn", player);  
     
     
    bool CheckSurface(string suffix, Vector3 position, out bool water)
    Checks if this suffix may be spawned or fetched on the surface at this position, returns `false` if suffix does not exist, `out` parameter returns `true` if checked surface is water.
    Example:
    //bool water; //bool allowedSurface = CheckSurface("mini", position, out water); //if (!allowedSurface) //{ //     if (water) player.ChatMessage("Can't spawn on water."); //     else player.ChatMessage("Can't spawn on land."); //}  
     
     
    bool TryMoveToTrainTrack(TrainCar train, Vector3 position)
    Moves the `TrainCar` to the nearest train track at this position, returns `false` if no train tracks are found.
    Example:
    bool moved = Vehicles.Call<bool>("TryMoveToTrainTrack", train, position);  
     
     
    Vector3 GetGroundPositionLookingAt(BasePlayer player, float maxDistance)
    Returns the position of the surface at up to this maximum distance at the point that the player is looking at, returns `Vector3.zero` if the distance between the position of the surface and the player's position is higher than the maximum distance.
    Example:
    Vector3 position = Vehicles.Call<Vector3>("GetGroundPositionLookingAt", player, 15.0f); if (position == Vector3.zero) return;  
     
     
    void RemoveMapMarker(BaseEntity entity)
    Removes the map marker from chinooks.
    Example:
    Vehicles.Call("RemoveMapMarker", entity);  
     
     
    bool SetFuelConsumption(BaseEntity entity)
    Sets the entity's fuel consumption and/or locks the fuel container as is configured for its suffix, returns `false` if entity does not belong to `Vehicles`.
    Example:
    bool success = Vehicles.Call<bool>("SetFuelConsumption", entity);  
     
     
    bool SetModuleEngineFuelConsumption(VehicleModuleEngine moduleEngine)
    Sets the module engine's fuel consumption as is configured for the suffix that the engine is mounted on, returns `false` if the entity that the engine is mounted on does not belong to `Vehicles`.
    Example:
    bool success = Vehicles.Call<bool>("SetModuleEngineFuelConsumption", moduleEngine);  
     
     
    int AddFuel(EntityFuelSystem fuelSystem)
    Adds starting fuel to the entity's fuel system as is configured for its suffix, returns the amount of fuel added or returns `0` if config is set to 0 or returns `-1` if entity does not belong to `Vehicles`.
    Example:
    int addedFuel = Vehicles.Call<int>("AddFuel", vehicle.GetFuelSystem()); bool success = (addedFuel >= 1); bool configNoFuel = (addedFuel == 0); bool failed = (addedFuel == -1);  
     
     
    int RefundFuel(EntityFuelSystem fuelSystem, BasePlayer player)
    Refunds the player of any fuel left in the entity's fuel tank, returns the amount of fuel refunded or returns `0` if no fuel left.
    Example:
    int returnedFuel = Vehicles.Call<int>("RefundFuel", vehicle.GetFuelSystem(), player); bool success = (returnedFuel >= 1); bool empty = (returnedFuel == 0);  
     
     
    List<BaseVehicle.MountPointInfo> AddMounts(string playerId, string suffix, BaseVehicle vehicle)
    Adds mount points to the vehicle according to the permissions the player has for this suffix, must be called before  spawning the entity, returns a `List<BaseVehicle.MountPointInfo>` of the mount points that were added to the vehicle.
    Example:
    BaseEntity entity = Vehicles.Call("CreateEntity", player.userID, "mini", position) as BaseEntity; if (entity == null) return; BaseVehicle vehicle = entity as BaseVehicle; if (vehicle != null) { List<BaseVehicle.MountPointInfo> mounts = Vehicles.Call<List<BaseVehicle.MountPointInfo>>("AddMounts", player.UserIDString, "mini", vehicle); int mountsAdded = mounts.Count; } entity.Spawn();  
     
     
    List<BaseEntity> AddSeats(string playerId, string suffix, BaseEntity entity)
    Adds seats to the vehicle according to the permissions the player has for this suffix, returns a `List<BaseEntity>` of the seats that were added to the vehicle.
    Example:
    List<BaseEntity> seats = Vehicles.Call<List<BaseEntity>>("AddSeats", player.UserIDString, "mini", entity); int seatsAdded = seats.Count;  
     
     
    List<BasePlayer> GetMountedOccupants(BaseEntity entity)
    Returns a `List<BasePlayer>` of mounted players.
    Example:
    List<BasePlayer> mounted = Vehicles.Call<List<BasePlayer>>("GetMountedOccupants", entity); int numMounted = mounted.Count;  
     
     
    List<BasePlayer> GetParentedOccupants(BaseEntity entity)
    Returns a `List<BasePlayer>` of parented players.
    Example:
    List<BasePlayer> parented = Vehicles.Call<List<BasePlayer>>("GetParentedOccupants", entity); int numParented = parented.Count;  
     
     
    void DismountOccupants(List<BasePlayer> mounted)
    Dismounts every player on this List from the vehicle.
    Example:
    List<BasePlayer> mounted = Vehicles.Call<List<BasePlayer>>("GetMountedOccupants", entity); Vehicles.Call("DismountOccupants", mounted);  
     
     
    void UnparentOccupants(List<BasePlayer> parented)
    Unparents every player on this List from the entity.
    Example:
    List<BasePlayer> parented = Vehicles.Call<List<BasePlayer>>("GetParentedOccupants", entity); Vehicles.Call("UnparentOccupants", parented);  
     
     
    string GetMapGrid(Vector3 position)
    Returns the map grid from this position.
    Examples:
    string mapGrid = Vehicles.Call<string>("GetMapGrid", entity.transform.position); string mapGrid = Vehicles.Call<string>("GetMapGrid", player.transform.position);  
     
     
    BaseEntity CreateEntity(ulong playerID, string suffix, Vector3 position, float YrotationOffset = -90.0f)
    Spawns a suffix for this userID, returns the `BaseEntity` or returns `null` if suffix does not exist.
    Example:
    bool hasSpawnPerm = Vehicles.Call<bool>("HasPermission", player.UserIDString, "mini"); if (!hasSpawnPerm) return; double left = Vehicles.Call<double>("GetCooldownLeft", player.userID, "mini"); if (left > 0.0) return; bool canSpawn = Vehicles.Call<bool>("CanSpawn", player); if (!canSpawn) return; Vector3 position = Vehicles.Call<Vector3>("GetGroundPositionLookingAt", player, 15.0f); if (position == Vector3.zero) return; BaseEntity entity = Vehicles.Call("CreateEntity", player.userID, "mini", position) as BaseEntity; if (entity == null) return; entity.Spawn(); Vehicles.Call("AddEntity", player.userID, "mini", entity.net.ID.Value); BaseVehicle vehicle = entity as BaseVehicle; if (vehicle != null) { Vehicles.Call("SetFuelConsumption", entity); Vehicles.Call("AddFuel", vehicle.GetFuelSystem()); } Vehicles.Call("AddCooldown", player.userID, "mini");  
     
     
    BaseEntity FetchEntity(ulong playerID, string suffix, Vector3 position, float YrotationOffset = -90.0f)
    Fetches the last available entity spawned by the player with this suffix, returns the `BaseEntity` or returns `null` if not found.
    Example:
    bool hasFetchPerm = Vehicles.Call<bool>("HasPermission", player.UserIDString, "mini", true); if (!hasFetchPerm) return; List<ulong> minis = Vehicles.Call<List<ulong>>("GetEntities", player.userID, "mini"); if (minis == null) return; BaseEntity entity = BaseNetworkable.serverEntities.Find(new NetworkableId(minis[minis.Count - 1])) as BaseEntity; double left = Vehicles.Call<double>("GetCooldownLeft", player.userID, "mini", true); if (left > 0.0) return; bool canSpawn = Vehicles.Call<bool>("CanSpawn", player); if (!canSpawn) return; Vector3 position = Vehicles.Call<Vector3>("GetGroundPositionLookingAt", player, 15.0f); if (position == Vector3.zero) return; List<BasePlayer> mounted = Vehicles.Call<List<BasePlayer>>("GetMountedOccupants", entity); List<BasePlayer> parented = Vehicles.Call<List<BasePlayer>>("GetParentedOccupants", entity); if (!config.AllowFetchingWhenOccupied && (mounted.Count > 0 || parented.Count > 0)) return; if (config.DismountOccupantsWhenFetching) { Vehicles.Call("DismountOccupants", mounted); Vehicles.Call("UnparentOccupants", parented); } object obj = Vehicles.Call("FetchEntity", player.userID, "mini", position); .
  5. More information about "Activity Rewards"

    $3.99

    Activity Rewards

    Plugin rewarding players for their in-game activity.
    P.S. Don't forget to assign the permission to players, otherwise rewards won't be granted.
    o.grant group default activityrewards.default  

    The ability to receive rewards for a prefix or suffix in the username; The ability to receive rewards for gathering resources; The ability to receive rewards for: killing players and NPCs; destroying barrels, road signs and dead logs; The ability to receive rewards for the researching blueprints; The ability to receive rewards for the first opening of loot crates; The ability to receive rewards for collecting resources; The ability to receive rewards for planting plants; The ability to receive rewards for catching fishes; The ability to receive rewards for the first daily visit to monuments; The ability to grant permissions for the duration of a player's stay inside monuments; The ability to reward with in-game items; The ability to set reward multiplier for each permission; The ability to add a night reward multiplier on top of the base multiplier; The ability to use AdvancedStatus to display a status bar with highly flexible settings.  

    { "List of language keys for creating language files": [ "en" ], "Is it worth using the AdvancedStatus plugin?": true, "Advanced Status display method: 0 - single bar, 1 - single cumulative bar, 2 - new bar for each": 2, "Is it worth enabling the Gather Rewards?": true, "Is it worth enabling the Kill Rewards?": true, "Is it worth enabling the Research Rewards?": true, "Is it worth enabling the Loot Open Rewards?": true, "Is it worth enabling the Pickup Rewards?": true, "Is it worth enabling the Planting Rewards?": true, "Is it worth enabling the Fishing Rewards?": true, "Is it worth enabling the Monument Rewards?": true, "A prefix or suffix required in the player's nickname to receive the permission reward. An empty string disables the reward": "#RealPVE", "List of permissions granted when the player's nickname contains the required prefix or suffix": [ "kits.loyalty" ], "List of reward multipliers for each permission": { "activityrewards.default": 1.0, "realpve.default": 1.0, "realpve.vip": 1.1 }, "Night bonus multiplier. Will be added to the base reward multiplier. A value of 0 disables this": 0.1, "The list of economy plugins for rewards": { "Economics": { "Is it worth enabling the plugin for rewards?": true, "Reward Type: true - int, false - double": false, "Language key for the text": "MsgEconomics", "API method name for deposit": "Deposit", "API method name for withdraw": "Withdraw", "BarSettings": { "Order": 40, "Height": 26, "Main_Color(Hex or RGBA)": "#84AB49", "Main_Transparency": 0.8, "Main_Material(empty to disable)": "", "Image_Url": "https://i.imgur.com/k8jq7yY.png", "Image_Local(Leave empty to use Image_Url)": "ActivityRewards_Default", "Image_Sprite(Leave empty to use Image_Local or Image_Url)": "", "Image_IsRawImage": false, "Image_Color(Hex or RGBA)": "#B9D134", "Image_Transparency": 1.0, "Is it worth enabling an outline for the image?": false, "Image_Outline_Color(Hex or RGBA)": "0.1 0.3 0.8 0.9", "Image_Outline_Transparency": 1.0, "Image_Outline_Distance": "0.75 0.75", "Text_Size": 12, "Text_Color(Hex or RGBA)": "#DAEBAD", "Text_Font(https://umod.org/guides/rust/basic-concepts-of-gui#fonts)": "RobotoCondensed-Bold.ttf", "Text_Offset_Horizontal": 0, "Is it worth enabling an outline for the text?": false, "Text_Outline_Color(Hex or RGBA)": "#000000", "Text_Outline_Transparency": 1.0, "Text_Outline_Distance": "0.75 0.75", "SubText_Size": 12, "SubText_Color(Hex or RGBA)": "#DAEBAD", "SubText_Font": "RobotoCondensed-Bold.ttf", "Is it worth enabling an outline for the sub text?": false, "SubText_Outline_Color(Hex or RGBA)": "0.5 0.6 0.7 0.5", "SubText_Outline_Transparency": 1.0, "SubText_Outline_Distance": "0.75 0.75" } }, "ServerRewards": { "Is it worth enabling the plugin for rewards?": true, "Reward Type: true - int, false - double": true, "Language key for the text": "MsgServerRewards", "API method name for deposit": "AddPoints", "API method name for withdraw": "TakePoints", "BarSettings": { "Order": 40, "Height": 26, "Main_Color(Hex or RGBA)": "#84AB49", "Main_Transparency": 0.8, "Main_Material(empty to disable)": "", "Image_Url": "https://i.imgur.com/k8jq7yY.png", "Image_Local(Leave empty to use Image_Url)": "ActivityRewards_Default", "Image_Sprite(Leave empty to use Image_Local or Image_Url)": "", "Image_IsRawImage": false, "Image_Color(Hex or RGBA)": "#B9D134", "Image_Transparency": 1.0, "Is it worth enabling an outline for the image?": false, "Image_Outline_Color(Hex or RGBA)": "0.1 0.3 0.8 0.9", "Image_Outline_Transparency": 1.0, "Image_Outline_Distance": "0.75 0.75", "Text_Size": 12, "Text_Color(Hex or RGBA)": "#DAEBAD", "Text_Font(https://umod.org/guides/rust/basic-concepts-of-gui#fonts)": "RobotoCondensed-Bold.ttf", "Text_Offset_Horizontal": 0, "Is it worth enabling an outline for the text?": false, "Text_Outline_Color(Hex or RGBA)": "#000000", "Text_Outline_Transparency": 1.0, "Text_Outline_Distance": "0.75 0.75", "SubText_Size": 12, "SubText_Color(Hex or RGBA)": "#DAEBAD", "SubText_Font": "RobotoCondensed-Bold.ttf", "Is it worth enabling an outline for the sub text?": false, "SubText_Outline_Color(Hex or RGBA)": "0.5 0.6 0.7 0.5", "SubText_Outline_Transparency": 1.0, "SubText_Outline_Distance": "0.75 0.75" } }, "BankSystem": { "Is it worth enabling the plugin for rewards?": true, "Reward Type: true - int, false - double": true, "Language key for the text": "MsgBankSystem", "API method name for deposit": "Deposit", "API method name for withdraw": "Withdraw", "BarSettings": { "Order": 40, "Height": 26, "Main_Color(Hex or RGBA)": "#84AB49", "Main_Transparency": 0.8, "Main_Material(empty to disable)": "", "Image_Url": "https://i.imgur.com/k8jq7yY.png", "Image_Local(Leave empty to use Image_Url)": "ActivityRewards_Default", "Image_Sprite(Leave empty to use Image_Local or Image_Url)": "", "Image_IsRawImage": false, "Image_Color(Hex or RGBA)": "#B9D134", "Image_Transparency": 1.0, "Is it worth enabling an outline for the image?": false, "Image_Outline_Color(Hex or RGBA)": "0.1 0.3 0.8 0.9", "Image_Outline_Transparency": 1.0, "Image_Outline_Distance": "0.75 0.75", "Text_Size": 12, "Text_Color(Hex or RGBA)": "#DAEBAD", "Text_Font(https://umod.org/guides/rust/basic-concepts-of-gui#fonts)": "RobotoCondensed-Bold.ttf", "Text_Offset_Horizontal": 0, "Is it worth enabling an outline for the text?": false, "Text_Outline_Color(Hex or RGBA)": "#000000", "Text_Outline_Transparency": 1.0, "Text_Outline_Distance": "0.75 0.75", "SubText_Size": 12, "SubText_Color(Hex or RGBA)": "#DAEBAD", "SubText_Font": "RobotoCondensed-Bold.ttf", "Is it worth enabling an outline for the sub text?": false, "SubText_Outline_Color(Hex or RGBA)": "0.5 0.6 0.7 0.5", "SubText_Outline_Transparency": 1.0, "SubText_Outline_Distance": "0.75 0.75" } }, "IQEconomic": { "Is it worth enabling the plugin for rewards?": true, "Reward Type: true - int, false - double": true, "Language key for the text": "MsgIQEconomic", "API method name for deposit": "API_SET_BALANCE", "API method name for withdraw": "API_REMOVE_BALANCE", "BarSettings": { "Order": 40, "Height": 26, "Main_Color(Hex or RGBA)": "#84AB49", "Main_Transparency": 0.8, "Main_Material(empty to disable)": "", "Image_Url": "https://i.imgur.com/k8jq7yY.png", "Image_Local(Leave empty to use Image_Url)": "ActivityRewards_Default", "Image_Sprite(Leave empty to use Image_Local or Image_Url)": "", "Image_IsRawImage": false, "Image_Color(Hex or RGBA)": "#B9D134", "Image_Transparency": 1.0, "Is it worth enabling an outline for the image?": false, "Image_Outline_Color(Hex or RGBA)": "0.1 0.3 0.8 0.9", "Image_Outline_Transparency": 1.0, "Image_Outline_Distance": "0.75 0.75", "Text_Size": 12, "Text_Color(Hex or RGBA)": "#DAEBAD", "Text_Font(https://umod.org/guides/rust/basic-concepts-of-gui#fonts)": "RobotoCondensed-Bold.ttf", "Text_Offset_Horizontal": 0, "Is it worth enabling an outline for the text?": false, "Text_Outline_Color(Hex or RGBA)": "#000000", "Text_Outline_Transparency": 1.0, "Text_Outline_Distance": "0.75 0.75", "SubText_Size": 12, "SubText_Color(Hex or RGBA)": "#DAEBAD", "SubText_Font": "RobotoCondensed-Bold.ttf", "Is it worth enabling an outline for the sub text?": false, "SubText_Outline_Color(Hex or RGBA)": "0.5 0.6 0.7 0.5", "SubText_Outline_Transparency": 1.0, "SubText_Outline_Distance": "0.75 0.75" } } }, "LastClearDay": 9, "Version": { "Major": 0, "Minor": 1, "Patch": 8 } }  
    Setting up rewards for each action occurs in the respective files within this folder *SERVER*\oxide\data\ActivityRewards
     
    PluginInt for: BankSystem and ServerRewards; PluginDouble for: Economics. You can also set the reward to 0 to disable the reward.
     
    "fish.smallshark": { "PluginInt": 50, "PluginDouble": 5.0, "ItemsList": [ { "ShortName": "scrap", "Amount": 10, "SkinId": 0 } ] }  

    EN: { "MsgEconomics": "Bonus", "MsgServerRewards": "Bonus", "MsgBankSystem": "Bonus", "MsgIQEconomic": "Bonus" } RU: { "MsgEconomics": "Бонус", "MsgServerRewards": "Бонус", "MsgBankSystem": "Бонус", "MsgIQEconomic": "Бонус" }  
2.2m

Downloads

Total number of downloads.

10.4k

Customers

Total customers served.

150.8k

Files Sold

Total number of files sold.

3.2m

Payments Processed

Total payments processed.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.