Roaming NPC Vendors

Roaming NPC Vendors 0.1.9

Create roaming NPC vendors (NPC shop keepers) with customizable vending profiles

Vendor view with pagination

Pathing Example (running for the purpose of showing the pathing)

c86f108ef7dbb67560ccbca0400b01d0.jpg



Features
Populate vendors with items defined per vendor in the config
Customize vendor name and clothing
Support for selling skinned items
Vendors support pagination, add as many items as you like and players can cycle through the pages of available goods
NPCs stop to trade when player is within 5m of them. When the player leaves the NPC will continue roaming
Automatic pathing, you will always find vendors travelling down dirt paths and along the side of roads
If the vendor reaches the end of a path, they will switch to a nearby connected path if available, else return the way they come
If the vendor comes across a intersection there is a 50% chance they will take the branch
Comes with 5 pre-defined vendors


Permissions
roamingnpcvendors.admin - Required to use the chat command


Chat Commands
/vendor list - List all active vendor names
/vendor tp "vendor name" - Teleport to the specified vendor
/vendor kill "vendor name" - Kill the specified vendor
/vendor spawn "vendor name" - Spawn a vendor with the specified vendor profile in the config


Stock Refresh and Randomization
There are 2 config options for each vendor profile that can randomize and refresh the items that they have for sale

'Maximum items to sell at a time' - Setting this to a number lower than the amount of items you have set up in the config will create sell orders using randomly selected items from the item list in the config. To disable this and show all items in the config set this value to 0

'Refresh stock rate' - This option is only used when you are not displaying all the items in the config and they have been randomly select. It will refresh the vendors current sell orders using randomly selected items from the item list in the config at the interval provided. This value is in seconds


Config
JSON:
{
  "Vendors": [
    {
      "Vendor Enabled": true,
      "Vendor Name": "Weapons Vendor",
      "Movement Speed (Slowest, Slow, Normal, Fast)": "Slow",
      "Clothing Items": [
        {
          "Shortname": "hazmatsuit.nomadsuit",
          "SkinID": 0
        }
      ],
      "Vending Sell Orders": [
        {
          "Sell Item - Shortname": "pistol.nailgun",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 150,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 600.0
        },
        {
          "Sell Item - Shortname": "pistol.revolver",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 200,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 600.0
        },
        {
          "Sell Item - Shortname": "shotgun.double",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 250,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 600.0
        },
        {
          "Sell Item - Shortname": "smg.thompson",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 300,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 600.0
        },
        {
          "Sell Item - Shortname": "rifle.ak",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 400,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 600.0
        },
        {
          "Sell Item - Shortname": "rocket.launcher",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 800,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 600.0
        },
        {
          "Sell Item - Shortname": "weapon.mod.silencer",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 150,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 600.0
        },
        {
          "Sell Item - Shortname": "weapon.mod.extendedmags",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 150,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 600.0
        },
        {
          "Sell Item - Shortname": "weapon.mod.muzzlebrake",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 150,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 600.0
        },
        {
          "Sell Item - Shortname": "weapon.mod.muzzleboost",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 150,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 600.0
        },
        {
          "Sell Item - Shortname": "weapon.mod.holosight",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 150,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 600.0
        },
        {
          "Sell Item - Shortname": "weapon.mod.small.scope",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 200,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 600.0
        },
        {
          "Sell Item - Shortname": "weapon.mod.8x.scope",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 250,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 600.0
        }
      ]
    },
    {
      "Vendor Enabled": true,
      "Vendor Name": "Building Trader",
      "Movement Speed (Slowest, Slow, Normal, Fast)": "Slow",
      "Clothing Items": [
        {
          "Shortname": "hazmatsuit.nomadsuit",
          "SkinID": 0
        }
      ],
      "Vending Sell Orders": [
        {
          "Sell Item - Shortname": "small.oil.refinery",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 125,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "furnace.large",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 350,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "computerstation",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 300,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "electric.fuelgenerator.small",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 125,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "electric.teslacoil",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 75,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "electric.solarpanel.large",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 75,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "electric.igniter",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 50,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        }
      ]
    },
    {
      "Vendor Enabled": true,
      "Vendor Name": "Farming Vendor",
      "Movement Speed (Slowest, Slow, Normal, Fast)": "Slow",
      "Clothing Items": [
        {
          "Shortname": "hazmatsuit.nomadsuit",
          "SkinID": 0
        }
      ],
      "Vending Sell Orders": [
        {
          "Sell Item - Shortname": "composter",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 30,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "scrap",
          "Sell Item - Amount": 3,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "fertilizer",
          "Currency Item - Amount": 2,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 60.0
        },
        {
          "Sell Item - Shortname": "planter.large",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 30,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "water.barrel",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 30,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "electric.sprinkler",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 15,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "fluid.switch",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 30,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "fluid.splitter",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 30,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "ceilinglight",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 30,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        }
      ]
    },
    {
      "Vendor Enabled": true,
      "Vendor Name": "Vehicle Vendor",
      "Movement Speed (Slowest, Slow, Normal, Fast)": "Slow",
      "Clothing Items": [
        {
          "Shortname": "hazmatsuit.nomadsuit",
          "SkinID": 0
        }
      ],
      "Vending Sell Orders": [
        {
          "Sell Item - Shortname": "piston2",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 40,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "crankshaft2",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 65,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "valve2",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 40,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "sparkplug2",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 40,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "carburetor2",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 65,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "modularcarlift",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "scrap",
          "Currency Item - Amount": 150,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        }
      ]
    },
    {
      "Vendor Enabled": true,
      "Vendor Name": "Scrap Vendor",
      "Movement Speed (Slowest, Slow, Normal, Fast)": "Slow",
      "Clothing Items": [
        {
          "Shortname": "hazmatsuit.nomadsuit",
          "SkinID": 0
        }
      ],
      "Vending Sell Orders": [
        {
          "Sell Item - Shortname": "scrap",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "crude.oil",
          "Currency Item - Amount": 6,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "scrap",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "metal.fragments",
          "Currency Item - Amount": 20,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "scrap",
          "Sell Item - Amount": 2,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "metal.refined",
          "Currency Item - Amount": 1,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "scrap",
          "Sell Item - Amount": 1,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "antiradpills",
          "Currency Item - Amount": 1,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "scrap",
          "Sell Item - Amount": 15,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "keycard_green",
          "Currency Item - Amount": 1,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "scrap",
          "Sell Item - Amount": 40,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "keycard_blue",
          "Currency Item - Amount": 1,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        },
        {
          "Sell Item - Shortname": "scrap",
          "Sell Item - Amount": 80,
          "Sell Item - As Blueprint": false,
          "Sell Item - Skin ID": 0,
          "Currency Item - Shortname": "keycard_red",
          "Currency Item - Amount": 1,
          "Currency Item - As Blueprint": false,
          "Refill Amount": 1,
          "Refill Delay (seconds)": 10.0
        }
      ]
    }
  ],
  "Version": {
    "Major": 0,
    "Minor": 1,
    "Patch": 0
  }
}

Information

Author
k1lly0u
First release
Last update
Rating
5.00 star(s) 4 ratings

Latest Release v0.1.9

Released
Apr 4, 2024 at 12:56 PM
Rating
0.00 star(s) 0 ratings


More resources from k1lly0u

  • TeleportGUI
    TeleportGUI
    Teleport, home and warp with a easy to use UI
  • UberTool - Admin's new Friend
    UberTool - Admin's new Friend
    The ultimative build'n'place solution without any borders or other known limits
  • TrainHeist
    TrainHeist
    A event where a train with scientists drives around the above or below rail ring
  • StacksExtended
    StacksExtended
    Advanded stacking system with modular permission based container sizing
  • Loadouts
    Loadouts
    Allow players to create custom loadouts which they can later claim

Roaming NPC Vendors by k1lly0u
© chaoscode.io Jun 29, 2022

Latest reviews

Works great and my players love it!

I always enjoy hearing my players' reactions to meeting the vendor for the first time! k1lly0u did great work with this plugin and it works exactly as described.

10/10
This mod is a creative way to add diversity to the standard static vendors. You can customize what they sell in the configs. The Dev is quick in responding to inquiries. A must have plugin. 5 out 5. Highly Recommend!
Great plugin, offers a lot customization for npc vendors! Thanks :)
Working Great and easy to Setup!
Greate Work!