Jump to content

Vinni_TV_'s Wishlist

  1. More information about "Armed Deployment Event"

    $19.99

    Armed Deployment Event

    Bring Rust monuments to life with cinematic, high-intensity combat events. Armed Deployment dynamically delivers a Bradley APC, heavy scientists, and a hackable locked crate to any location you choose, all inserted by an immersive Chinook deployment sequence.
    Watch as a Chinook approaches the target zone, descends, deploys hostile forces, and extracts — creating a truly memorable server event that feels built into the game rather than scripted. Players must eliminate all threats and destroy the Bradley APC before they can claim the locked crate and its rewards.
    Features
    • Spawn deployments anywhere on the map
    • Cinematic Chinook delivery and extraction
    • Heavy Scientists with controlled roaming
    • Bradley APC with movement blocking
    • Hackable Locked Crate rewards
    • Dynamic deployment radius and map marker
    • Server-side UI progress tracking
    • Automatic cleanup and despawn timers
    • Admin-controlled start and cancellation
    • Automated deployments with configurable intervals
    • Fully configurable values
    Chat Commands (Admin Only)
    /adpanel
    Toggles the Armed Deployment admin UI panel
    Permissions
    ArmedDeployment.admin
    Required to start, cancel, or automate Armed Deployments
    Configuration
    { "Auto": false, "AutoMin": 60, "RandMon": true, "ManLoc": { "X": 0, "Y": 0, "Z": 0 }, "Mons": { "airfield": true, "trainyard": true, "powerplant": true, "military_tunnel": true, "launch_site": true, "water_treatment": true, "dome": true, "satellite": true, "junkyard": true, "excavator": false, "harbor": true, "arctic_base": true, "lighthouse": false, "gas_station": false, "supermarket": false, "mining_outpost": false, "sewer_branch": false, "oil_rig_small": false, "oil_rig_large": false }, "SciCnt": 12, "BradCnt": 1, "EvtRad": 150, "MaxAttempts": 10, "ChApproachH": 80, "ChApproachD": 400, "ChSpeed": 25, "ChHoverH": 15, "ChDescentH": 50, "ChExitD": 500, "MinClearH": 40, "ObstacleRad": 30, "MonSearchRad": 80 } Default values are optimized for performance and cinematic impact.
    Notes
    This plugin is designed to feel vanilla-friendly, cinematic, and performance-aware. It works especially well on servers that want high-risk, high-reward PvP encounters without relying on random world events.
    Feedback, suggestions, and feature requests are always welcome.
    Created by CodeBrothers
    Check out our other work on Codefling
  2. More information about "Excavator Event"

    $19.99 $14.99

    Excavator Event

    Transform the Giant Excavator monument into a high-risk, high-reward dynamic hotspot, without replacing or disrupting vanilla gameplay.
    When the excavator is fueled or activated, resource-rich ore nodes spawn around the monument and hostile scientists roam the area to secure it. Players must push through NPC resistance while competing with others, naturally encouraging PvP, counter-play, and contested control of the site.
    Rather than turning Excavator into a scripted event, this plugin reacts directly to existing excavator usage, making the monument feel alive, volatile, and worth fighting over.
    Designed to feel fully integrated with Rust’s systems, Excavator Event automatically starts and stops with the excavator itself and cleans up when activity ends.
    Features
    • Automatic activation when the excavator starts
    • Enhances (does not replace) vanilla excavator behavior
    • Resource-rich ore node spawns (metal, sulfur, stone)
    • Hostile scientist NPCs with controlled roaming
    • Configurable spawn radius and density
    • Periodic node respawning while active
    • Clean despawn when the excavator shuts down
    • Modern in-game admin control panel
    • Server-wide event alerts and UI notifications
    • Performance-aware spawning logic
    • Fully configurable values
    Chat Commands (Admin Only)
    /excavator
    Opens the Excavator Event control panel
    Permissions
    excavatorevent.admin

    Required to start, stop, or configure the Excavator Event
    Configuration
    { "NodeCount": 30, "NPCCount": 50, "EventRadius": 80, "MinNodeDistance": 5, "NodeRespawnTime": 300, "NodeSpawnDelay": 0.15, "NodeRiseTime": 1.5, "NPCSpawnDelay": 0.2, "NPCRiseTime": 2 } Default values are tuned for balanced risk, server performance, and rewarding gameplay.
    Notes
    Excavator Event is built to enhance vanilla Rust, not override it.
    The monument functions exactly as expected — this plugin simply raises the tension, increases contesting, and makes excavator runs more meaningful.
    Ideal for PvP-focused servers, progression-based gameplay loops, and servers looking to make monuments feel more alive without immersion-breaking mechanics.
    Created by CodeBrothers

    Check out our other work on Codefling
  3. More information about "BotReSpawn"

    $40.00

    BotReSpawn

    Spawns set numbers of customised npcs at monuments,
    various  events, supply drops, biomes, custom locations, and 'toplayer'.
     
    Plugin Description.
    Highly customisable and intuitive npc plugin, setup exclusively via UI.
    See images for an overview of the available options globally, and per npc profile.
    Every option in the UI is clickable, showing a detailed description of its use.
     
    Optional dependencies -
    Kits (free at uMod.org) CustomLoot
      Permissions.
    botrespawn.allowed  - Required for non-admin use
      Chat commands.
    /botrespawn - Opens UI. /botrespawn add *profilename* - Adds a custom profile then opens UI. (please don't use  spaces or hyphens) /botrespawn remove *profilename* - Removes a custom profile. /botrespawn info - Tells you about the npc you're looking at. Console commands.
    bot.count - Gives total number of spawned npcs. bots.count - Gives a breakdown of spawned npcs per profile. botrespawn toplayer NameOrId ProfileName amount(optional) botrespawn enable/disable "Profile name here" botrespawn tempspawn "Profile name here" - Spawns npcs from a profile at random points around that profile's location addspawn - Enabled via UI, in Edit Spawnpoints menu - for keybinding. botrespawn showspawns - Added for binding convenience. botrespawn checknav - Added for binding convenience. * Note = addspawn and showspawns commands require the user to select "Edit with console commands" first, from a profile's spawnpoints menu.
     
    Default locations.
    All major monuments are automatically included, plus profiles for the four biomes.
    The following events also have default profiles
    Airdrop (supply grenade optional) Locked Crate Spawn Locked Crate Hack Start APC Kill PatrolHeli Kill CH47 Kill  
    Configurable via json, per profile.
    BotNames BotNamePrefix Announcement_Text Instant_Death_From_Headshot_Allowed_Weapons (accepts item shortnames) See note at end for weapon list formatting.
    Everything else is configurable via UI - All options have a description in UI, accessible by clicking the name/label.
     
    Kits.
    Kits are managed, per profile, in UI.
    As with BotSpawn, kit probability can be balanced by assigning a number to a kit.
    When selecting multiple kits, increasing a kit's number increases its chances of being picked.
    Only kits with weapons in the belt are shown in UI.
    Most weapons are supported for npc use, including normal bullet and melee weapons,
    rocket launchers, bows, crossbows, MGLs, nailguns, flamethrowers, etc.
    Throwable explosives can be used but throwable melee (like spears) can be used but will not be thrown.
     
    Spawnpoints.
    Adding and managing spawnpoints is done, per profile, in UI,
    or by enabling 'add by command' in spawnpoints menu, then using 'addspawn' console command.
    You can bind this command for your convenience.
    When opting to use the 'addspawn' command, a button will show in UI main page, allowing you to quickly return to the profile you were editing.
    A new feature is that each spawn point can have overrides, forcing that specific npc to have different values to the rest of the profile's npcs.
    At present you can override
    Stationary Kits Health RoamRange  
    If you choose to use Parent_Monument, you can select it via UI, but do so before you add custom spawn points (if applicable).
    Parent_Monument ensures that your profile and its spawn points will relocate after a map change,
    so that they are in the same place, relative to that chosen monument.

    If a profile uses custom spawn points, but does not have enough custom spawn points to cover the whole population,
    it will spawn randomly placed npcs to make up the numbers, in accordance with the profile "Radius" setting.
    EG :
    Day_Time_Spawn_Amount 10
    Number of custom spawn points 5
    Result : 5 npcs on custom spawn points, and 5 randomly placed around the area, within the specified radius.
     
    Murderer
    Murderer true/false is no longer an option.
    Instead, the AI will respond differently based on the weapons you give it.
    If you want the AI to run directly at victims and attack, give it melee weapons only.
    I believe you can still make murderer-style kits, although you also have Frankenstein clothing options built into the the UI options now.
     
    Peacekeeper
    Peacekeeper is now based on  whether or not players are marked hostile.

    An additional option 'Peacekeeper_Uses_Damage' restores the old behaviour,
    where peacekeeper npcs will completely ignore players until attacked by them.
     
    Configuration.
    "DataPrefix": "default", (tells BotReSpawn which data files to load),
      Allow_Parented_HackedCrates Allow_HackableCrates_With_OwnerID Allow_HackableCrates_From_CH47 Allow_HackableCrates_At_Oilrig Allow_All_Other_HackedCrates
      Disable_WaterWells Disable_Substations Disable_UndergroundCaves Disable_UnderwaterLabs
      "UseServerTime": Uses server IsNight check, instead of manual day/hour settings, "Show_Profiles_Seconds": 10, "DayStartHour": 8, "NightStartHour": 20, "SuicideBoom": true, (toggles explosion sound for suicide npcs), "Animal_Safe": true, "Supply_Enabled": false, (spawn 'airdrop' bots for user-called supplys), "Ignore_Skinned_Supply_Grenades": true, "Remove_BackPacks_Percent": 100 is always : 0 is never, "Remove_KeyCard": true, (any keycards in bot default loot will be destroyed), "Remove_Frankenstein_Parts": true, (any frankenstein parts in bot default loot will be destroyed), "Ignore_Sleepers": true/false, "Pve_Safe": true, (bots will not be injured by fire/barbs, etc.), "Max_Chute_Fall_Speed": 100, "Chute_Speed_Variation": 100, "Staggered_Despawn": false, "Disable_Non_Parented_Custom_Profiles_After_Wipe": false "Announce_Toplayer": false "RustRewards_Whole_Numbers": true "XPerience_Whole_Numbers: true "NPCs_Damage_Armour": true "Limit_ShortRange_Weapon_Use": false "Allow_Ai_Dormant": false "Prevent_Biome_Ai_Dormant": false "Scale_Meds_To_Health": false (increases npc heal amount relative to npc's max health. "Ignore_Factions": false - Makes all profiles fight all profiles if true. "Reduce_Damage_Over_Distance: false "Deaggro_Memory_Duration: 20 - Number of seconds it takes an npc to forget you outside deaggro range/line of sight. "Ignore_HackableCrates_With_OwnerID" - Makes hackable crate profiles only respond to crates with OwnerID 0 (server spawned) "NPCs_Assist_NPCs" - true/false. When a botrespawn npc is attacked, nearby botrespawn npcs will also respond and defend. "Enable_Targeting_Hook": false "Allow_AlphaLoot": true Can be used to prevent AlphaLoot from giving loot to BotReSpawn npcs. "Parachute_From_Height": 200 "Smooth_Damage_Scale": false "Allow_Oilrigs": false - NPCs here must be custom spawn point and stationary true. "Show_Spawns_Duration": 20, These values are adjustable and described in detail in in-game UI, with the exception of DataPrefix.
     
    Profile values.
    Each profile value and description is not listed here, but all (apart from text strings) are now configurable via UI,
    and have sensible default values.
    Every option has a full in-game description, accessible by clicking an option's name/label.
    If any specific setting/value is unclear, please just ask in CF discord, my discord, or the support section here.
     
    Notes :  
    Durations which used to be in seconds are now in minutes.
    "Type" is an internal use variable - Users should not change this option.
    Profile copy/paste does not include location, Parent_Monument, or custom spawnpoints.
     
    BotNames, and Headshot weapons  should be formatted as follows:
    ["name1"],  for single or  ["name1", "name2", "name3"],  for many.
    ["rifle.lr300"], for single or [ "rifle.lr300", "pistol.m92" ], for many.
     
    Faction and Subfaction of 0 means this profile will not fight any other, and will not be attacked by any other.
    Faction and Subfaction settings greater than 1 are used for configuring which profiles should be allies / enemies.
     
    API :
    string[] AddGroupSpawn(Vector3 location, string profileName, string group, int quantity) string[] RemoveGroupSpawn(string group) string NPCProfile(NPCPlayer npc) (returns "No Name" for non BotReSpawn npcs) object OnBotReSpawnNPCTarget(ScientistNPC npc, BasePlayer player) void OnBotReSpawnNPCSpawned(ScientistNPC npc, string profilename, string group) void OnBotReSpawnNPCKilled(ScientistNPC npc, string profilename, string group, HitInfo info) bool IsBotReSpawn(NPCPlayer npc) bool IsBotReSpawn(ulong id)  
    For preventing BotReSpawn npc spawns for event profiles.
    object OnBotReSpawnCrateDropped(HackableLockedCrate crate) object OnBotReSpawnCrateHackBegin(HackableLockedCrate crate) object OnBotReSpawnAPCKill(BradleyAPC apc) object OnBotReSpawnPatrolHeliKill(PatrolHelicopterAI heli) object OnBotReSpawnCH47Kill(CH47HelicopterAIController ch) object OnBotReSpawnAirdrop(SupplyDrop drop)  
    Example usage.
    [PluginReference] private Plugin BotReSpawn; Vector3 location = new Vector3(0,0,0); string[] Spawn = BotReSpawn?.Call("AddGroupSpawn", location, "The Dome 0", "MadeUpNameHere", 5) as string[]; Puts($"{Spawn[0]}"); Puts($"{Spawn[1]}"); Passing 0 for quantity will spawn the appropriate amount of npcs for the time of day, according to the profile.
     
     
    Method call OnBotReSpawnNPCSpawned(ScientistNPC npc, string profile, string group, notifies of spawned npcs.
    Example.
    void OnBotReSpawnNPCSpawned(ScientistNPC npc, string profile, string group) { if (String.IsNullOrEmpty(group)) Puts($"BotReSpawn spawned an npc from profile {profile}"); else Puts($"BotReSpawn spawned an npc from profile {profile} - API group name {group}"); }  
     
    FAQ.
     
    Q: My npcs don't move and/or won't attack
    A: If you have any PVE plugins or settings please try disabling those temporarily to test.
    A: Make sure the server has the following settings.
    nav_wait true nav_disable false ai.think true A: If you use Rust Admin, please ensure that the animal AI option is enabled.
    A: If you have Vanish installed please try unloading it. If this worked, check you don't have the permission for permanent Vanish.

    Q:  There's a million options. Where do I start?
    A: Open the UI with /botrespawn and set AutoSpawn to true for at least one monument, then click the button to reload that profile.
    A:  Everything else is preference/user customisation.
    A: If the monument has a building/structure near the middle, like Dome, you may need to increase the spawn radius option to get going.

    Q:  My bots won't die / my bots take damage when attacking people.
    A:  Make sure Godmode permissions allow you to do damage.
    A:  Same for vanish ^.
    A:  Ensure you don't have a PVE plugin which is causing this damage behaviour.

    Q:  I take damage when attacking my bots.
    A:  This can also be caused by server, or plugin, PVE settings.

    Q:  Will X kill my bots?
    A:  Radiation, drowning, falling, and helicopters should not kill your bots.
    A:  Turrets targeting bots can be toggled. Bradleys targeting bots can be toggled.
    A:  Fire (campfires etc) will kill your bots. Damage from barbs, cacti etc will kill your bots, but can be prevented with the 'Pve_Safe' config option set to true.

    Q:  What weapons can my bots use?
    A: As far as I know they should use all weapons except for throwable melee (eg. spears).
    A: Flamethrowers, nail guns, rocket launchers, bows, grenade launchers, etc were added in a recent update.
    A: Throwable explosives can be used as 'backup' weapons and are thrown when line-of-sight is temporarily broken.
    A: All npcs, even those with throwables, must have at least one valid held weapon to use.

    Q:  Can I have custom profile locations?
    A:  Yes. Your custom locations are stored in data with a filename of *YourPrefix*-CustomProfiles.json.
    Use chat command '/botrespawn add NewNameHere' to create a profile at your present location.
    A: Doing so will open the UI, at the page for your new profile's settings.

    Q:  Can I spawn bots at events.
    A:  Yes. There are event profiles for aidrop, hackable crate spawn and hack start, and the destruction of CH47, Patrol Heli, and APC.
    For the airdrop profile, spawn at user-supply call is an additional option, found in the global config.
    Q:  Can I have specific custom spawn points? (underground, etc)
    A:  Yes. Use the built in UI to create custom spawn points and set UseCustomSpawns to true, for some profile..
    A:  That BotReSpawn profile will now ignore radius settings and use the precise spawn points from your file.
    A: Event profiles which can occur underground should work automatically now (crate spawn/crate hack).
    A: Even if parachutes are enabled, these profiles should still work with underground-spawning npcs, if the event takes place under ground.

    Q:  My bot kits aren't working.
    A: Kits which don't have a valid weapon in the belt will not be made available in the UI.
    A:  Please redeem the kit yourself to an empty inventory, to ensure that the expected items are definitely in it.

    Q:  How can I prove that bots have spawned? I can't find them.
    A:  Type bot.count into console for a total number, or bots.count for a per-profile breakdown.
    A:  Respawn timer is taken into account so if you spawn one and kill him, bot.count will show 0 until respawn.

    Q:  bot.count console command shows that there are 0 bots.
    A:  Double check that at least one monument is set "AutoSpawn": true in your config, and reload the plugin.
    A:  Also, don't forget their respawn timer. If they're all dead when you do bot.count, it will show 0.
  4. More information about "Abandoned Bases"

    $30.00 $20.00

    Abandoned Bases

    Allows bases to become raidable when all players in a base become inactive.
     
    Compatible with TruePVE and NextGenPVE servers. This plugin is not compatible with servers that have server.pve set true. It is possible to implement this, but I see no reason to do so as TruePVE provides the same protection and more.
    Abandoned Bases checks each building on the server in order to determine which bases are inactive. Bases become inactive when all players authorized on the tool cupboard have been offline for the configured amount of days. When a base becomes inactive there are one of two outcomes.
    1.) It will be immediately destroyed if it does not meet the configured minimum requirements.
    2) It will become raidable for a configurable period of time, and when the time expires the base will be destroyed.
    Each zone has a map marker, allows PVP and is surrounded by a dome that protects it from being attacked from the outside. Players who zone hop will be flagged with a PVP delay where they can still be attacked for a configurable amount of time.
    Command /sar - requires abandonedbases.convert permission and converts a base into an abandoned base - this can be used on any base that you are authorized to and will cause the base to be destroyed when the timer expires
    Command /sab - starts a manual check for each building on the server in order to determine which bases are inactive (requires abandonedbases.admin permission)
    Command /sar radius - requires abandonedbases.convert permission and converts a base into an abandoned base and uses the specified radius for the dome / zone radius. Min and max radius are configurable.
    Command /sar cancel - requires abandonedbases.convert and abandonedbases.convert.cancel permissions - completely cancels an event (destroys map marker and dome, disables PVP and prevents base from being despawned) effectively allowing the base to be taken over
    Command /sar claim - requires abandonedbases.convert and abandonedbases.convert.claim permissions and converts a finished abandoned base into a claimed base that can be taken over by players
    "Loot Required (SAR)"
    "Foundations Required (SAR)"
    "Walls Required (SAR)"
    These options should be set realistically so that players cannot exploit the /sar command. I recommend Loot Required 100, Foundations Required 10, Walls Required 10 at minimum Command /sar purge - converts all bases on the server into abandoned bases for purge day (requires abandonedbases.convert, abandonedbases.admin and abandonedbases.purgeday permissions)
    This is a two part command that requires you type /sab afterwards to begin. Requires abandonedbases.purgeday, abandonedbases.convert, and abandonedbases.admin permissions. Announcements are muted during purge to prevent spam. Time To Wait Between Spawns (15) will delay how quickly every base is converted Permissions (ADMINS REQUIRE PERMISSIONS TOO)
    abandonedbases.convert - required to use /sar command
    abandonedbases.convert.free - converting is free for users that have this permission
    abandonedbases.convert.claim - required to use /sar claim command
    abandonedbases.purgeday - required to use /sar purge command
    abandonedbases.admin - required to use /sab and purge commands
    abandonedbases.notices - users with this command can see event-opened notices from the plugin
    abandonedbases.attack - lets players hunt bases and convert them by attacking if they're abandoned
    abandonedbases.attack.time - shows players how much time is left before a base becomes abandoned when they attack it
    abandonedbases.attack.lastseen - required to see the last time the player was online when attacking a base
    Auto-add abandonedbases.immune to configuration if one does not exist already (lifetime set to "none")
    - abandonedbases.immune will not be automatically added if the configuration contains a different immunity permission already
    - abandonedbases.immune will give the user immunity to any base they've built at or are authed at from becoming abandoned
    - abandonedbases.exclude does not provide immunity and is explicitly intended for the plugin to ignore the player only
    - abandonedbases.exclude is intended for admins, mods, staff or helpers to be able to freely make repairs or auth at bases without interfering with the abandoned timer
    abandonedbases.exclude:
    excludes the user from being checked as an authorized user to a TC this permission should not be used to exempt users - exempt users with immunity by assigning them a permission from a role that has the lifetime set to "none" example roles that includes permission abandonedbases.immune and lifetime set to "none" to properly exempt a user or group by granting abandonedbases.immune to a user or group:
    "Purge Settings": [ { "Permission": "abandonedbases.immune", "Lifetime (Days)": "none" }, { "Permission": "abandonedbases.vip", "Lifetime (Days)": "7" }, { "Permission": "abandonedbases.veteran", "Lifetime (Days)": "5" }, { "Permission": "abandonedbases.basic", "Lifetime (Days)": "3" } ], Purge Settings
    Permission - The permission to use with this setting Lifetime (Days) - The amount of time in days before a base is considered abandoned. Set to none to not consider players with this permission as inactive. Conversions Before Destroying Base (1) - The amount of times a base can become abandoned before it is finally destroyed when the Despawn Timer expires. Comes with 3 configured permissions and lifetime days by default Abandoned Settings
    Blacklisted Commands (command1, command2, command3) - Commands players are not allowed using at a raid or marked with PVP delay Marker Name (Minutes) (Abandoned Player Base [{time}m]) - Text shown on map marker for minutes Marker Name (Seconds) (Abandoned Player Base [{time}s]) - Text shown on map marker for seconds Foundations Required (4) - Minimum amount of foundations required to become raidable Walls Required (3)  - Minimum amount of walls required to become raidable Sphere Amount (10)  - Increase to darken the dome, or decrease to brighten it Sphere Radius (50)  - How big the dome is in meters Use Dynamic Sphere Radius (false)  - Allow the dome to detect the best dome size Max Dynamic Radius (75.0)  - How maximum size of the dynamic radius Min Custom Sphere Radius - The minimum radius allowed when using /sar <radius> Max Custom Sphere Radius - The maximum radius allowed when using /sar <radius> PVP Delay (15.0)  - The amount of time in seconds that players can take damage after leaving the dome Despawn Timer (1800.0)  - The amount of time in seconds that players have to finish the raid Reset Despawn Timer When Base Is Attacked (true)  - When enabled this will reset the above despawn timer back to 1800 seconds by default Do Not Destroy Base When Despawn Timer Expires (false) - Use this to override and prevent a base from being destroyed when Despawn Timer expires Backpacks Can Be Opened (true)  - When enabled players will be allowed to open their backpacks while inside of the dome Backpacks Can Be Looted By Anyone (false) - Bypass PreventLooting plugin and allow backpacks to be lootable if enabled Corpses Can Be Looted By Anyone (true) - Bypass PreventLooting plugin and allow backpacks to be lootable if enabled Allow PVP (true) - Allows PVP while inside of the dome, and when flagged with a PVP delay Seconds Until Despawn After Looting (600) Seconds Until Despawn After Looting Resets When Damaged (true) Cancel Automated Events If Abandoned Owner Comes Online (false) Message Raiders When Event Ends During Automated Cancellation (true) Change Marker Color On First Entity Destroyed (true) Cooldown Between Conversions (3600) - Time required between each manual conversion of a base using /sar Cooldown Between Events (3600) - Time between each event - prevents looting, damage and using /sar claim Cooldown Between Cancel (3600) - Time the player must wait to use /sar cancel Cooldown Between Conversions Ignored During Purge (true) Cooldown Between Cancel Ignored During Purge (true) Cooldown Between Events Ignored During Purge (true) Prevent Hogging Ignored During Purge (false) Run Once On Server Startup (false)  - Check for abandoned bases immediately after server startup is complete Run Every X Seconds (0.0)  - The time in seconds to check for each building on the server in order to determine which bases are inactive Kill Inactive Sleepers (false)  - When enabled players with a permission from purge settings will be executed when they are offline for the configured amount of lifetime days Let Players Kill Abandoned Sleepers (false) - Allows players to kill anyone sleeping inside of an abandoned base rather than the server killing them automatically Economics/ServerRewards Cost To Manually Convert (0 = disabled) - Used with /sar command to convert any base into an abandoned base Use Map Marker (true) Require Event Be Finished Before It Can Be Canceled (true) Various auto turret settings
    Hooks (implemented in 2.1.4, updated in 2.2.5)

    participants - anyone that has actively participated  (excludes admin if configured, and those in noclip or vanish) - this should not contain null elements
    participantIds - contains the userid of all participants - this list is better as anyone offline and dead will be included in this but not in the  participants list because they would be null!
    intruders - anyone currently inside of the event (does not exclude anyone) - this should not contain null elements
    intruderIds - contains the userid of everyone inside of the event (does not exclude anyone) - this list is better as anyone offline and dead will be included in the list but not in the  intruders list because they would be null!
    void OnBaseSkipped(Vector3 v, ulong userid, HashSet<ulong> owners, string reason, BuildingManager.Building building) { } void OnTugboatSkipped(Vector3 v, ulong userid, HashSet<ulong> owners, string reason, BaseEntity entity) { } void OnShelterSkipped(Vector3 v, ulong userid, HashSet<ulong> owners, string reason, BaseEntity entity) { } void OnAbandonedBaseStarted(Vector3 center, float radius, bool AllowPVP, List<BasePlayer> intruders, List<ulong> intruderIds, List<BaseEntity> entities, List<BuildingPrivlidge> privs, bool canDropBackpack, bool automatedEvent, bool attackEvent, Guid guid) { } void OnAbandonedBaseEnded(Vector3 center, float radius, bool AllowPVP, List<BasePlayer> participants, List<ulong> participantIds, List<BaseEntity> entities, List<BuildingPrivlidge> privs, bool canDropBackpack, bool automatedEvent, bool attackEvent, Guid guid) { } void OnAbandonedBaseTurretsInitialized(List<AutoTurret> turrets,Vector3 center, float radius, bool AllowPVP, ulong raiderId, bool CanDropBackpack, List<BaseEntity> entities, List<BuildingPrivlidge> privs, bool canDropBackpack, bool automatedEvent, bool attackEvent, Guid guid) { } void OnRaidableDespawnUpdate(Vector3 center, float radius, bool AllowPVP, ulong raiderId, DateTime DespawnDateTime, List<BasePlayer> intruders, List<ulong> intruderIds, List<BaseEntity> entities, List<BuildingPrivlidge> privs, bool canDropBackpack, bool automatedEvent, bool attackEvent, Guid guid) { } void OnPlayerEnteredAbandonedBase(BasePlayer player, Vector3 center, float radius, bool AllowPVP, List<BasePlayer> intruders, List<ulong> intruderIds, List<BaseEntity> entities, List<BuildingPrivlidge> privs, bool canDropBackpack, bool automatedEvent, bool attackEvent, Guid guid) { } void OnPlayerExitAbandonedBase(BasePlayer player, Vector3 center, float radius, bool AllowPVP, List<BasePlayer> intruders, List<ulong> intruderIds, List<BaseEntity> entities, List<BuildingPrivlidge> privs, bool canDropBackpack, bool automatedEvent, bool attackEvent, Guid guid) { } void OnAbandonedBaseCompleted(Vector3 center, float radius, bool AllowPVP, List<BasePlayer> intruders, List<ulong> intruderIds, List<BaseEntity> entities, List<BuildingPrivlidge> privs, bool canDropBackpack, bool automatedEvent, bool attackEvent, Guid guid) { } void OnAbandonedBaseClaimed(BasePlayer player, Vector3 center, float radius, bool AllowPVP, List<BasePlayer> participants, List<ulong> participantIds, List<BaseEntity> entities, List<BuildingPrivlidge> privs, bool canDropBackpack, bool automatedEvent, bool attackEvent, Guid guid) { } void OnAbandonedBaseClaimFailed(BasePlayer player, Vector3 center, float radius, bool AllowPVP, List<BasePlayer> participants, List<ulong> participantIds, List<BaseEntity> entities, List<BuildingPrivlidge> privs, bool canDropBackpack, bool automatedEvent, bool attackEvent, Guid guid) { } object OnBlockRaidableBasesTeleport(BasePlayer player, Vector3 to) => null; // return true to allow the blocked teleport, return a string to block with your message instead void OnAbandonedBasePrivilegeDestroyed(Vector3 center, float radius, bool AllowPVP, List<BasePlayer> intruders, List<ulong> intruderIds, List<BaseEntity> entities, List<BuildingPrivlidge> privs, bool canDropBackpack, bool automatedEvent, bool attackEvent, BuildingPrivlidge priv, bool areCupboardsTaken, Guid guid) { } void OnPlayerPvpDelayStart(BasePlayer player, ulong userid, Vector3 eventPos, float radius, List<BasePlayer> intruders, List<ulong> intruderIds, List<BaseEntity> entities, List<BuildingPrivlidge> privs, bool canDropBackpack, bool automatedEvent, bool attackEvent, Guid guid) { } void OnPlayerPvpDelayExpiredII(BasePlayer player, ulong userid, Vector3 eventPos, float radius, List<BasePlayer> intruders, List<ulong> intruderIds, List<BaseEntity> entities, List<BuildingPrivlidge> privs, bool canDropBackpack, bool automatedEvent, bool attackEvent, Guid guid) { } void OnPlayerPvpDelayReset(BasePlayer player, ulong userid, Vector3 eventPos, float radius, List<BasePlayer> intruders, List<ulong> intruderIds, List<BaseEntity> entities, List<BuildingPrivlidge> privs, bool canDropBackpack, bool automatedEvent, bool attackEvent, Guid guid) { } void OnAbandonedBaseDespawned(Vector3 eventPos, float radius, bool allowPVP, List<BasePlayer> intruders, List<ulong> intruderIds, List<BaseEntity> entities, Guid guid) { } object OnProcessPlayerEntity(BaseEntity entity, HitInfo info) => null; // cancel to prevent the plugin from handling this entity, though it can still be an event entity already in some cases void OnAbandonedBaseDespawn(List<BaseEntity> entities) { } // only called when a base is not eligible to convert void OnAbandonedBaseDespawn(Vector3 center, float radius, bool AllowPVP, List<BasePlayer> intruders, List<ulong> intruderIds, List<BaseEntity> entities, List<BuildingPrivlidge> privs, bool canDropBackpack, bool automatedEvent, bool attackEvent, Guid guid) { } void OnAbandonedBaseStart(Vector3 center, float radius, bool allowPVP, List<BasePlayer> intruders, List<ulong> intruders, List<ulong> intruderIds, List<BaseEntity> entities, bool canDropBackpack, bool automatedEvent, bool attackEvent, Guid guid) Added OnEntityEnteredAbandonedBase(BaseEntity entity, Vector3 center, float radius, bool allowPVP, List<BasePlayer> intruders, List<ulong> intruderIds, List<BaseEntity> entities, List<BuildingPrivlidge> privs, bool canDropBackpack, bool automatedEvent, Guid guid) Convert Bases and/or Claim Bases
    Credits:
    misticos for giving permission to use some of his code 🙂
  5. More information about "Shoppy Stock"

    $49.99

    Shoppy Stock

    RUST Plugin Test Server
    TEST MY PLUGINS THERE!
    connect play.thepitereq.ovh:28050
     
    Shoppy Stock is a powerful and versatile economy system designed to enrich your Rust server with shops, stock markets, transfers, exchanges, and deposit features.
    This plugin makes it easy to create multiple shops with unique currencies, set up dynamic stock markets with item listings, and manage a fully customizable server selling center—plus many more advanced options.
    Plugin package (zip) contains:
    ShoppyStock plugin ShoppyConverter plugin (Converts 1.x config to 2.0 config)  

     

    Global
    Includes over 17 detailed Rust-themed GUI windows. Optimized for performance—actions are lightweight and won’t burden your server. Highly expandable, limited only by your imagination. Fully customizable popup messages through the PopUp API. Comprehensive command and API support for currency management. Full language support for all messages and items. Supports NoEscape integration. Complete UI color customization. NPC interaction support for shops and stock markets. Page memory feature remembers your position in the shop when reopened. Deposit and withdraw currencies to and from items. Currency exchange between different types. Built-in currency leaderboard. Shops
    Create multiple shops, each using different currencies. Easily import your old currency from other economy plugins. Organize items into categories with custom icons for seamless browsing. Unified search bar across all categories. Buy exactly the amount of items you need. Full custom item support. If currency is item-based, allow deposits into the shop as virtual currency and withdrawals back to items. Granular permission system configurable for each action. Daily or wipe purchase limits. Purchase cooldowns. Configurable discount system. Random offer rotations with customizable listings. Progressive pricing — prices can increase by set values or multipliers on each purchase. Stock Market
    Create multiple markets with different currencies. Favorite items tab for quick access. Automatic listing of all vanilla Rust items with blacklist support. Multiple sorting options for better market management. Buy and sell request creation. Configurable server sell price history. Permission-based limits on how many listings each player can create. Listings can be canceled, refunded, or returned to the market at no cost. Customizable taxes on market actions. Support for extra item info like durability and plant genes. Timed price rolls to adjust prices at set hours. Demand-based pricing that adjusts based on item popularity (DiscordCore required for messages). Advanced selling center with a price calculator using over 15 variables (e.g., amount sold, online player count). Stock Market Broker system—players can store or refund items, set alert prices, and even auto-sell resources while offline. Custom categories and full custom item support. Web API support for price checks or integration into server tools (requires web server). Statistics module for fine-tuning your economy. Timed listings with configurable availability durations. Ability to buy back resources sold to the market. Listing taxes based on listing time. Dynamic price history graphs. Individual configuration for server buy/sell offers per item. Generation of historical price data. Transfer
    Send currencies to other players, whether they’re online or offline. Configurable transfer limits and taxes.  

    The following core permission is static and cannot be changed. However, the configuration files include hundreds of customizable permissions covering nearly every action.
    shoppystock.admin - Grants full access to admin commands and management tools.  

    All commands can be fully customized in the configuration. Below are the default commands included with the plugin:
    /shop or /s — Opens the main Shoppy Stock interface. /adminshop — Opens the admin shop management panel. (Available in version 2.1) /deposit — Opens the currency deposit inventory. /mshop or /goldshop — Opens a specific shop. /market — Opens the stock market interface for a specific currency (defaults to “money”). /sell — Opens the sell inventory to sell items directly to the server (defaults to “money”). /list — Opens the interface to list a new item on the stock market (defaults to “money”). /bank — Opens the bank interface for a specific stock market (defaults to “money”). /stockcode <code> — Displays a private listing using a code shared by the listing owner. updateprices — Console command showing details on rolling or updating item prices in the stock market.  

    Shoppy Stock is packed with powerful features, and configuring everything the first time can feel overwhelming. 
    This guide provides a quick walkthrough to help you get started and understand key parts of the plugin.
    Optional Supported Currency Plugins
    Economics ServerRewards BankSystem IQEconomic  
    Moving from V1 to V2.
    Shoppy Stock V2 has been almost completely rewritten from scratch, reusing less than 10% of the old code.
    The new configuration is redesigned to be more intuitive and feature-rich.
    To help you migrate, use the provided ShoppyConverter, which can convert about 95% of your old configs and data files to the new format.
    After converting, always review your new configs carefully — V2 includes dozens of new options that won’t automatically adjust to your preferred settings.
    How to convert:
    Place ShoppyConverter.cs in your plugins folder. Follow console instructions to move files to the required location. Run the conversion command as instructed. Once converted, place the new files in the correct folders as indicated.  
    Configuration Files
    The plugin’s extensive features are divided across several files and folders:
    /config/ShoppyStock.json
    Main config containing default settings for currencies, shops, stock markets, and global options. /data/ShoppyStock/playersData.json
    Stores global plugin data and player currencies. /data/ShoppyStock/Shops/Configs/<shopName>.json
    Shop configs, including available categories and items. /data/ShoppyStock/Shops/Statistics/
    Data on daily limits, unique purchases, and more. /data/ShoppyStock/StockMarkets/Configs/<stockName>.json
    Stock market configs. /data/ShoppyStock/StockMarkets/Listings/
    Player buy and sell offers. /data/ShoppyStock/StockMarkets/PlayerData/
    Alert data, favorites, banked items, etc. /data/ShoppyStock/StockMarkets/PriceCache/
    Historical price data and current server sell prices. /data/ShoppyStock/StockMarkets/Statistics/
    Data on items sold to the server and total currency earned.  
    Main Config Highlights
    Web API
    You can use the Web API to show market prices on your website.
    Requires web hosting with PHP support.
    Download apiupdate.php by CLICKING HERE.
    Place it in the directory set by your “Web Price API - Link” config.
    Make sure it has permission to create api.html.
    The generated file will be accessible at <Web Price API - Link>/api.html.
     
    Server-Selling Items → Default Sell Amount Calculation (DSAC)
    DSAC helps define the average number of items sold in a period, based on your server’s player activity. The period is an one price roll time.
    Example: a PvE x10 server with ~20–30 players might set wood’s DSAC to 1,800,000 — based on my some calculations, but adjust based on your own stats and server needs.
     
    Always Run Timer on Hour Minute
    Controls when the plugin rolls stock prices.
    For example:
    Values: 0, 30, 60 → rolls at x:00 or x:30. Values: 0, 20, 40, 60 → rolls at x:00, x:20, or x:40.  
    Stock Market - Default Categories
    By default, the stock market includes these categories:
    Favourites MyListings Bank AllItems Use these codenames in your configs to customize display order.
     
    Items - Custom Detail Info (skinId: languageKey)
    You can add custom info tags in listings (similar to showing tool condition or clone genes).
    For example, tag certain items as “Upgrade Ingredients.”
     
    Redeem Inventory Name
    Make sure to create a storage with this name in RedeemStorageAPI — otherwise, items from certain actions could disappear, and errors may occur.
     
    Generating Shop Config With All Vanilla Items
    To automatically add all vanilla RUST items to a shop:
    In /config/ShoppyStock.json, set Generate Config With All Default RUST Items to true in the desired shop section. Delete the existing shop config file in /data/ShoppyStock/Shops/Configs/. Reload the plugin—this will generate a new config containing all default items.  
    Shop Data Config Highlights
    Shop Items - Commands
    Supports few types of dynamic variables in commands:
    {userId} → buyer’s Steam ID {userName} → buyer’s nickname {userPosX}, {userPosY}, {userPosZ} → buyer’s coordinates  

    A collection of answers to common questions about demand systems, price multipliers, stock market trends, and developer API.
     
    Multiplier Events & Demand System
    Q: How does the demand system work? What is “weight”?
    A: The demand system uses “Multiplier Events” defined in the main config. Each event has a weight that determines its chance to be chosen during a price roll. How often demands appear is configured in your stock market file at: /data/ShoppyStock/StockMarket/Configs/<shopName>.json. Make sure names in the main config and stock market config match exactly.
    Q: How do “minimal” and “maximal” work?
    A: These define a range for random price multipliers.
    Example: if minimal is 1.4 and maximal is 1.8, and the original price is 1.4, the final rolled multiplier might be ~1.685 → final price becomes ≈ 2.359.
    If the random roll goes above max or below min, it’s clamped to min/max.
     
    Stock Market - Timestamps & Trends
    Q: What are timestamps used for?
    A: The plugin stores historical price data which appears in charts for players with the correct permission.
    Tip: set a reasonable timestamp retention value even if you don't plan to show players now—this lets you start collecting useful data early.
     
    Data Folder, Stock Market Config
    Q: Blocked Multiplier Listing Keys
    A: Certain items you want excluded from permission price multipliers.
     
    Price Calculator
    Q: Price Change - Price Fluctuation Percentage
    A: Adds random small price changes to keep the market realistic when no other events run.
    Q: Price Change - Same Price Actions Min/Max
    A: Controls how many rolls prices must go up or down in sequence, making trends look more natural.
    Q: Price Change - Chances To Increment Based On Current Price Percentage
    A: It's the chance to run the action listed above. It's made in "<price percentage>": <price increase chance (percentage)> format. It's made to make prices go higher more easily when they are low and harder when they are high.
    Q: Price Drop - Amount Sell Values Penalty Multiplier
    A: When many items are sold fast, price roll becomes negative × penalty multiplier, making it drop quicker.
    Q: Price Drop - Amount Sold Max Price Penalty
    A: If a huge amount of an item (e.g., 10000% of DSAC) is sold, price is locked to e.g., 25% of original value for a period (e.g., 24 price rolls).
    Q: Price Increase - DSAC Not Achieved
    A: When item demand is too low (<100% DSAC sold), price increases faster to encourage farming, e.g., by x1.5.
    Q: Default Sell Amount Calculation - Players Online Multiplier
    A: Automatically scales DSAC based on current player count (checked each price roll). Useful if online population varies greatly.
    Q: Price Multipliers - Minimal Time Distance Between Events
    A: Sets a cooldown between multiplier events to avoid price spikes.
    Q: Price Multipliers - Chance To Appear Based On Sold Amount
    A: Lets multipliers trigger more often when few or many items are sold.
    Q: Price Multiplier Events
    A: Defines how many price rolls the price-increase/decrease event should last.
     
    Server Sell Items
    Q: What is the price parent system?
    A: Lets you set base items (e.g., Metal Ore) and refined items (e.g., Metal Fragments) so that fragments always stay more valuable than ore by a set difference, encouraging refining.
     

    int GetCurrencyAmount(string shopName, BasePlayer player) - Returns player's balance rounded down to integeer. If not found returns 0. int GetCurrencyAmount(string shopName, ulong userId) - Returns player's balance rounded down to integeer. If not found returns 0. float GetCurrencyAmountFloat(string shopName, BasePlayer player) - Returns player's balance. If not found returns 0. float GetCurrencyAmountFloat(string shopName, ulong userId) - Returns player's balance. If not found returns 0. bool TakeCurrency(string shopName, BasePlayer player, int amount) - Takes player currency. Returns true if taken and false if not. bool TakeCurrency(string shopName, BasePlayer player, float amount) - Takes player currency. Returns true if taken and false if not. bool TakeCurrency(string shopName, ulong userId, int amount) - Takes player currency. Returns true if taken and false if not. bool TakeCurrency(string shopName, ulong userId, float amount) - Takes player currency. Returns true if taken and false if not. void GiveCurrency(string shopName, ulong sellerId, int amount) - Gives player currency. void GiveCurrency(string shopName, ulong sellerId, float amount) - Gives player currency. string FormatCurrency(string shopName, BasePlayer player) - Returns player's formatted balance.  

    Video Configuration
    Contains all configuration files shown on video.
    My private configuration created for my purposes.
    Note: many custom item features won’t work directly on your server—they're specific to the author’s private setup.
    Example Configuration.zip
     

    Default Main Config
    CLICK HERE!
    Default Shop Data Config
    CLICK HERE!
    Default Stock Market Data Config
    CLICK HERE!
2.3m

Downloads

Total number of downloads.

10.6k

Customers

Total customers served.

153.9k

Files Sold

Total number of files sold.

3.3m

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.