will007's Wishlist
-
Loot Table & Stacksize GUI
By The_Kiiiing in Plugins
Say goodbye to configuration and data files. This plugin lets yo edit the loot of (almost) every lootable object directly over a custom UI. It also includes a graphical stack size editor thus making it ideal for anyone who is not familiar with editing config files.
Do not use in combination with any other stack size controller or loot plugin.
NEW with version 2.1.7: Direct Loot Refresh
Players with the permission loottable.test can use a button to directly refresh the loot in the crate they are currently looting.
Features:
User friendly GUI - no need to edit config files Loot configuration for every prefab in the game Stack size controller supports individual stack sizes for every prefab Support for custom items Support for third party plugins Fully backwards compatible with version 1.x.x Default config included for every prefab Configuration for Smelting Speed, Recycler Speed and Efficiency Supply Drop configuration
Supported prefabs:
Crates, Barrels NPCs Trees, Ores, Animal corpses Excavator, Quarries Christmas Presents, Eggs, Loot Bags Collectables like Hemp, Corn, etc.
Additional Configuration:
Smelting Speed Supply Drop Recycler Speed / Efficiency
Commands:
loottable - Open the Loottable UI loottable reload - Manually refresh loot
Permission:
loottable.edit - Required to use the Loottable UI
Required Dependencies (Oxide only):
Image Library: https://umod.org/plugins/image-library
Translations:
This plugin fully supports translation. Out of the box only english is included. For item names to be translated, the plugin https://umod.org/plugins/rust-translation-api is required. English translations are located in /oxide/lang/en/Loottable.json
For Developers:
Loot Api:
Developers can use the Loot Api to register loot profiles for custom NPCs or other plugin related loot.
It is highly recommended to use the provided wrapper to access the API. Documentation is also included:
https://gist.github.com/TheKiiiing/53a37e8bbb48d8a24c8e8b21b9da37ac
Loot Api Example:
// This example uses the non-static version of the Loot Api private LoottableApi loottableApi; void OnServerInitialized() { loottableApi = new LoottableApi(this); timer.In(5f, () => { loottableApi.ClearPresets(); loottableApi.CreatePresetCategory("Crates"); loottableApi.CreatePreset("c_locked", "Locked Crate", "crate_hackable"); loottableApi.CreatePreset("c_elite", "Elite Crate", "crate_elite"); loottableApi.CreatePreset("c_military", "Military Crate", "crate_military"); loottableApi.CreatePreset("c_normal", "Normal Crate", "crate_normal"); loottableApi.CreatePresetCategory("NPCs"); loottableApi.CreatePreset(true, "npc_cargo", "Cargo Ship NPC", "npc_militunnel"); loottableApi.CreatePreset(true, "npc_control", "Control Center NPC", "npc_militunnel"); }); } void SpawnNpc() { // Spawn NPC here ScientistNPC npc; // Assign a loot preset to the NPC loottableApi.AssignPreset(scientist, "npc_control"); } void SpawnCrate() { // Spawn crate here LootContainer crate; // Assign a preset to the crate if (loottableApi.AssignPreset(container, "c_locked")) { // The container has been filled with loot return; } else { // The container is not handled by Loottable // Default loot logic goes here } } The resulting configuration page would look like this:
Custom Items API:
Developers can use the Custom Items Api to add a custom item to the Loottable item list. If an item is marked as persistent it will remain in the custom item list until it is removed by ClearCustomItems. All non-persistent items will be removed after the plugin that registered them has been unloaded.
(void) AddCustomItem(Plugin plugin, int itemId, ulong skinId) (void) AddCustomItem(Plugin plugin, int itemId, ulong skinId, bool persistent) //(v1.0.27 or higher) (void) AddCustomItem(Plugin plugin, int itemId, ulong skinId, string customName) (void) AddCustomItem(Plugin plugin, int itemId, ulong skinId, string customName, bool persistent) //(v1.0.27 or higher) (void) ClearCustomItems(Plugin plugin) //(v1.0.27 or higher)
Hooks:
(object) OnContainerPopulate(LootContainer container) This hook is called every time a loot container is about to be populated with loot. Returning a non-null value prevents the plugin from spawning loot into that crate.
(object) OnCorpsePopulate(LootableCorpse corpse) This hook is called every time an npc corpse is about to be populated with loot. Returning a non-null value prevents the plugin from spawning loot into that corpse.
(object) OnCustomAirdrop(SupplySignal signal) This hook is called every time a custom supply drop is about to be delivered. Returning a non-null value will cancel the custom supply drop.
Outdated documentation for Version 1:
New with version 1.0.27:
Custom Items can now be created and edited directly in the GUI. They can be created from any existing item and modified in the Item Select menu
You can now create and load backups of your configuration. Commands (F1 or Server Console):
loottable.backup load <name> - Load backup with the given name from the backups folder (will wipe your current configuration) loottable.backup create <name> - Create backup of everything with the given name Backups will be created in the data/Loottable/backups folder. To load a backup, the backup file needs to be present in that folder. When creating backups in the in-game console, the permission loottable.debug is required.
IMPORTANT: DO NOT LOAD BACKUPS FORM SOURCES YOU DO NOT TRUST, they might cause harm to your server
New with version 1.0.16:
Custom Items:
Now you can add custom items used by other plugins directly to your loot table. Other plugins can can register these items using the api (documentation below).
Screenshots:
Overview of crates and their current loot table
Stacksize Editor
Commands:
loottable - Open the editor loottable refresh - Manually refresh crate loot loottable flags - List available flags (explained below) loottable flags <name> <1|0> - Enable / disable a certain flag loottable reload_vanilla_profiles - Manually re-download vanilla loot profiles (only for debuging)
Permission:
loottable.edit - Required to use the editor
Flags:
There are flags to disable some limits in the editor. Only enable these flags if you really need to as they might cause unexpected behavior of the editor. There are currently 3 flags available:
Debug If enabled, the Debug flag provides more detailed information about errors and other actions in the editor. Don't enable this flag unless you want your console full of spam.
UnlockGatherMultiplier allows you to use gahter multipliers less than one and higher than 1000. Note that multipliers less than one might lead to unexpected results in some cases.
DisableItemLimit Probably the safest flag to use is DisableItemLimit as it simply lets you set stack sizes and every other item amount in the editor as high as 2,147,483,647 which is the biggest possible value of a 32-bit integer.
UnlockFurnaceMultiplier lets you use any value as the furnace speed multiplier. Don't enable this flag unless you know what you are doing, since the default value range from 0.1 to 100 should cover most use cases and larger values might impact server performance.
UnlockItemMultiplier unlocks the multiplier when multiplying a loot table.
DisableStackingHooks will disable all stacking related hooks. Enable if you encounter problems when stacking items.
RefreshLootOnExit controls if all crates get refreshed after closing the editor or when reloading the plugin. Enable this only for testing, there might be an increase in entities.
Refer to the Commands section for more information about enableing flags.
Vanilla Configurations:
Since version 1.0.7 there are vanilla loot profiles available for most crates and NPCs. These profiles can be loaded using the "Load default loot table" button at the top center of the editor.
DISCLAIMER:
The vanilla loot profiles in the editor might not exactly match the vanilla loot distribution of the game as it uses a completely different loot distribution system than Rust. These profiles rather serve as a reference point for custom loot profiles.
Important for Carbon users:
In order for this plugin to work with carbon, Harmony references need to be enabled. This can be done with the following command:
c.harmonyreference 1
Required Dependencies (Oxide only):
Image Library: https://umod.org/plugins/image-library
Custom Items API:
Add a custom item to the item list. If an item is marked as persistent it will remain in the custom item list until it is removed by ClearCustomItems. All non-persistent items will be removed after the plugin that registered them has been unloaded.
(void) AddCustomItem(Plugin plugin, int itemId, ulong skinId) (void) AddCustomItem(Plugin plugin, int itemId, ulong skinId, bool persistent) //(v1.0.27 or higher) (void) AddCustomItem(Plugin plugin, int itemId, ulong skinId, string customName) (void) AddCustomItem(Plugin plugin, int itemId, ulong skinId, string customName, bool persistent) //(v1.0.27 or higher) (void) ClearCustomItems(Plugin plugin) //(v1.0.27 or higher) Example:
Its recommended to delay the call a little bit to make sure Loottable is loaded
private void Init() { timer.In(1f, () => { Loottable?.Call("AddCustomItem", this, -946369541, 2664651800, "High Quality Fuel"); }); }
Hooks:
(object) OnContainerPopulate(LootContainer container) This hook is called every time a loot container is about to be populated with loot. Returning a non-null value prevents the plugin from spawning loot into that crate.
(object) OnCorpsePopulate(LootableCorpse corpse) This hook is called every time an npc corpse is about to be populated with loot. Returning a non-null value prevents the plugin from spawning loot into that corpse.
(object) OnCustomAirdrop(SupplySignal signal) This hook is called every time a custom supply drop is about to be delivered. Returning a non-null value will cancel the custom supply drop.
- #loot
- #customloot
- (and 13 more)
-
Caravan
This plugin will add Caravans to your server that will attempt to transport valuable loot along the roads. Carriages are used to transport goods along the roads as configured, pulled by Horses. These convoys are accompanied by NPCs, Riders, and Balloons! By default, the plugin comes with 3 different caravan presets.
The easiest caravan will be fun for early wipe and allows some basic loot for low effort Caravan raids. In order to rob the most difficult caravan, players will need to be tactical about their ambush and it will be much more challenging! The road selection system can make the Caravan less predictable as the NPCs try to find a safe route.
The Caravan can traverse any road type, including good old country dirty roads. You can set up timers for each preset in the config file, to keep the more difficult Caravan from showing up until later in a wipe!
Riders
These can be very dangerous opponents! Unlike regular NPCs, they will quickly close the gap continually shooting at the players as they ride! Riders can be especially effective using short ranged weapons, they are deadly with a shotgun!
Balloons
These are mobile sniper towers on which several NPCs can be placed. In the config, armor can be added to the balloon, greatly increasing the protection for the Caravan snipers.When the caravan stops, Balloons will start moving around randomly, making it more difficult for players to hide! After defeating all of the snipers, Balloons will fall to the ground and explode.
Required Dependency (must install this free plugin)
NpcSpawn – link is included and can be found in the ReadMe file included with download
Chat commands (admin only)
/caravanstart - launches the event using a random preset based on your configuration /caravanstart PresetName - add the name of a preset from the configuration to launch a specific preset /caravanstop - stops the event /caravanroadblock - the event will not be held on the road where you are standing (clear the Blocked roads section of config when you change maps) /caravanpathstart - stand at starting point and enter command to start recording a custom route /caravanpathsave RoutePresetName - to save a custom route (enter anything you'd like in place of RoutePresetName) /caravanpathcancel - to reset the route
Console commands (RCON only)
caravanstart - launches the event using a random preset based on your configuration caravanstart PresetName - add the name of a preset from the configuration to launch a specific preset caravanstop - stops the event
Plugin Config
en – example of plugin configuration in English ru – example of plugin configuration in Russian
Hooks
void OnCaravanStart() - Сalled when a caravan appears void OnCaravanStop() -Сalled when a caravan disappears void OnCaravanEventWin(ulong userId)
Check out the rest of my work: Adem's Codefling Library
You can reach out to me in Discord: Adem's Discord Profile
Thanks to Jbird for writing, translation, & support: Jbird's Discord Profile
Join the Mad Mappers Discord!
-
IQTurret
IQTurrets is a plugin that adds turrets to your server without electricity!
There will be an additional "switch" on the turrets, which will start and turn it off without electricity.
It also supports the ability to connect electricity to the turret without electricity, the plugin is synchronized and everything will work according to the mechanics of the game
Opportunities :
- Support SAM-Site
- There are limits on the cabinet and specifically for the player
- It is possible to set limits on privileges
- IQChat support is available
- There are console and chat commands for controlling turrets with the ability to bind them
- The ability to use 2 types of switches: Buttons and tublers
API :
Object OnSetupTurret(BaseEntity entityTurret) /// - return null to ignore and continue the installation, otherwise nothing will be installed on the turret
-
IQSorter
IQSorter - an item sorter for your players! A simple and compact UI designed in the style and colors of RUST. A special UI layout that won't interfere with the standard UI functions in RUST and won't obscure any important information!
Supports a large list of storage options
No configuration needed - the plugin is fully automated and will work immediately after being uploaded to the server!
With the introduction of new items into the game, the plugin will not require updates. If they have storage capabilities, they will automatically work with the sorter, such as the cabinet and new cabinet with a skin.
Permissions :
iqsorter.use - permission to use sorter functions
Supports functions in :
Red Also supports functions in vehicles (boats, minicopters, etc.)
API :
OnStartSortedContainer(BasePlayer player, ItemContainer container) // Called when the player starts sorting the container OnSortedContainer(BasePlayer player, ItemContainer container) // Called when the player has sorted the container OnStartMoveAllItems(BasePlayer player, ItemContainer fromContainer, ItemContainer toContainer) // Called when the player starts moving all items from one container to another OnMovedAllItems(BasePlayer player, ItemContainer fromContainer, ItemContainer toContainer) // Called when the player has moved all items from one container to another OnStartMoveSimilarItems(BasePlayer player, ItemContainer fromContainer, ItemContainer toContainer) // Called when the player starts moving "similar" items from one container to another OnMovedSimilarItems(BasePlayer player, ItemContainer fromContainer, ItemContainer toContainer) // Called when the player has moved "similar" items from one container to another
-
Airfield Event
Adds an airfield event to your server! A cargo plane lands on the airfield and drops airdrops, boxes. Strong NPCs, Bradley and a patrol helicopter will protect the crates
You can also set up custom loot using the "SimpleLootTable" plugin
Features:
Easy to set up. Excellent customization options in the config
Commands(admin only):
afestart - force the event to start
afestop - cause the event to end
afefast - quick landing of a cargo plane, for testing settings
afe_addcustom - adds a custom landing place for a cargo plane. You must stand on level ground and look in the direction where the cargo plane will move(do not forget to set in the config file "Use a custom place to land a cargo plane": true)
Hooks:
void AirfieldEventStarted() // called when the event starts
{
}
void AirfieldEventEnded() // called when the event has ended
{
}
AirfieldEvent config:
{ "PVE mode (crates can only be looted by the player who first dealt damage to the NPC)": false, "Time after which the owner of the event will be deleted if he left the dome or left the server (for PVE mode)": 300, "Give event ownership to the owner's teammates if he is no longer the owner. Only if teammates are within the event radius (for PVE mode)": true, "Radius for event(for PVE mode)": 380, "Create a dome for PVE mode": false, "Dome transparency (the higher the value, the darker the dome, recommended 4)": 4, "Dome offset": { "x": 0.0, "y": 0.0, "z": 30.0 }, "Message when a player enters the event dome(only for PVE mode if there is a dome)": "You have entered the Airfield Event", "Message when the event owner leaves the event dome (only for PVE mode if there is a dome)": "Return to the event dome, otherwise after 300 seconds you will no longer be the owner of this event", "Do not allow other players into the event(only for PVE mode if there is a dome)": false, "Message when a player is ejected from the event dome(only for PVE mode if there is a dome)": "You cannot be here, you are not the owner of this event", "Allow admin to be in event dome (only for PVE mode if there is a dome)": true, "Triggering an event by timer (disable if you want to trigger the event only manually)": true, "Time to event start(in seconds, minimum 900)": 3900, "Random time to event start": false, "Minimum time to event start(in seconds, minimum 900)": 900, "Maximum time to event start(in seconds)": 10800, "Minimum number of online players to trigger an event": 1, "Drops amount(number of cargo spawns after plane landing, maximum 10)": 3, "Crates amount(spawn every cargo drop)": 1, "Crate simple loot table name(plugin SimpleLootTable is required)": "", "Minimum number of items in a crate(plugin SimpleLootTable is required)": 0, "Maximum number of items in a crate(plugin SimpleLootTable is required)": 0, "Remove crates after being looted by a player(in seconds)": 300, "Extend the duration of the event if the NPCs were attacked(if there is less time left, then increase to the set time(in seconds))": 600, "Crates lifetime(in seconds). The crate will not be destroyed if it has been activated": 3600, "Crates timer(in seconds)": 900, "Airdrops amount(spawn every cargo drop)": 1, "Airdrop simple loot table name(plugin SimpleLootTable is required)": "", "Minimum number of items in an airdrop(plugin SimpleLootTable is required)": 0, "Maximum number of items in an airdrop(plugin SimpleLootTable is required)": 0, "Airdrops lifetime(in seconds)": 3600, "NPCs amount(spawn every cargo drop)": 0, "NPCs lifetime(in seconds)": 3600, "NPCs type(NPCs prefab, experimental setting, it is not known how the NPCs will behave) 0 - tunneldweller; 1 - underwaterdweller; 2 - excavator; 3 - full_any; 4 - lr300; 5 - mp5; 6 - pistol; 7 - shotgun; 8 - heavy; 9 - junkpile_pistol; 10 - oilrig; 11 - patrol; 12 - peacekeeper; 13 - roam; 14 - roamtethered; 15 - bandit_guard; 16 - cargo; 17 - cargo_turret_any; 18 - cargo_turret_lr300; 19 - ch47_gunner": 8, "NPCs health(0 - default)": 0, "NPCs damage multiplier": 1.0, "NPCs accuracy(the lower the value, the more accurate, 0 - maximum accuracy)": 2.0, "NPCs attack range": 75.0, "Radius of chasing the player(NPCs will chase the player as soon as he comes closer than the specified radius, must be no greater than the attack range)": 60.0, "Minimum distance to NPC damage": 75.0, "Message if the player attacks far away NPCs": "NPC is too far away, he doesn't take damage", "Forcibly immobilize an NPC": false, "Method of distribution of kits for NPCs(1 - sequentially, 2 - repeating, 3 - randomly)": 1, "List of kits for NPC(requires Kits plugin)": [ "kit1", "kit2", "kit3" ], "Default displayName for NPC(for SimpleKillFeed/DeathNotes plugin)": "Airfield NPC", "List of displayNames for each NPC(for SimpleKillFeed/DeathNotes plugin)": [ "Airfield NPC1", "Airfield NPC2", "Airfield NPC3" ], "Event message(if empty, no message will be displayed)": "Airfield event started", "Event end message(if empty, no message will be displayed)": "Airfield event ended", "Landing message(displayed when the cargo plane has landed)": "Cargoplane landed at Airfield", "Patrol helicopter spawn chance (0 - 100%)": 50, "Call the helicopter only after activating the hackable crate": false, "How long the helicopter will patrol the airfield (in minutes)": 5, "Helicopter damage multiplier": 1.0, "Helicopter health": 10000.0, "Helicopter main rotor health": 900.0, "Helicopter tail rotor health": 500.0, "The patrol helicopter will not patrol the airfield if it has found a target": true, "Make helicopter fly away after end of patrol time": false, "Spawns a helicopter right on the airfield(if false, then the helicopter will arrive from afar in a few seconds)": false, "Helicopter patrol range": 150, "Event marker on the map(will spawn a marker immediately after the start of the event)": false, "If true, spawn the marker only after the plane lands": false, "Event marker name": "Airfield event", "Event marker lifetime(in seconds)": 3600, "Event marker transparency(0-1)": 0.75, "Event marker radius": 0.5, "Event marker color.R(0-1)": 1.0, "Event marker color.G(0-1)": 0.0, "Event marker color.B(0-1)": 0.0, "Use a custom place to land a cargo plane": false, "Custom place position": { "x": 0.0, "y": 0.0, "z": 0.0 }, "Custom place rotation": { "x": 0.0, "y": 0.0, "z": 0.0 }, "Use custom navmesh (enable if using custom airfield and getting NPC navmesh error)": false, "BradleyAPC spawn chance (0 - 100%)": 0, "BradleyAPC lifetime(in seconds)": 3600, "BradleyAPC bullet damage": 7.0, "BradleyAPC health": 1000.0, "Use Notify plugin for messages": false, "Type notify for 'Message when a player enters the event dome'(only for Notify plugin)": 0, "Type notify for 'Message when the event owner leaves the event dome'(only for Notify plugin)": 0, "Type notify for 'Message when a player is ejected from the event dome'(only for Notify plugin)": 0, "Type notify for 'Message if the player attacks far away NPCs'(only for Notify plugin)": 0, "Type notify for 'Event message'(only for Notify plugin)": 0, "Type notify for 'Event end message'(only for Notify plugin)": 0, "Type notify for 'Landing message'(only for Notify plugin)": 0 }