Jump to content

13 Screenshots

  • 39.4k
  • 599
  • 480.73 kB

About Shoppy Stock


Shoppy Stock introduces a plethora of innovative features to the RUST server economy that were previously unavailable.
This plugin enables the creation of multiple shops with diverse currencies, stock markets with item listing, a highly customizable server selling center, and numerous other functionalities.

Video Preview (Version 1.0.0)



  • Over 12 detailed RUST-Themed GUI windows.
  • Wrote with performance in mind. All plugin actions are lightweight for server.
  • Highly expandable plugin. All that limits you is your imagination!
  • Fully customizable PopUp message through PopUp API.
  • Command and API currency management.
  • Full language support for any displayed message and item.
  • NoEscape support.
  • Full UI color change support.
  • NPC interact shop and stock market support.


  • Create multiple shops with different currencies.
  • Easily transfer your old currency to the plugin with other economy plugins support.
  • Split your shop items into categories with custom icons for easier navigation.
  • Search though all categories with one search bar.
  • Buy exact amount of items that you need.
  • Full custom item support.
  • You can configure which currencies should be available to transfer.
  • Transfer currency to online/offline players.
  • When currency is an item, you can make it available for deposit into the shop as virtual currency.
  • The page is saved when you close the shop, so you can get easily back where you were.
  • Full permission system configurable for each action.
  • Limits for daily/wipe purchases.
  • Set cooldown to your purchases.
  • Discount system.

Stock Market

  • Create multiple different markets with different currencies.
  • Mark your favorite items and have them in Favorite tab.
  • Automatically adds all vanilla RUST items with ability to blacklist unwanted.
  • Few options to sort all listings for better economy management.
  • Create sell and buy requests for the items.
  • Configurable server sell price history.
  • Permission based system on how many listings can one player create.
  • Listings can be canceled and refunded or placed back to the market without any costs.
  • Configurable tax on each market action.
  • Additional info support for things such as durability and plant genes.
  • Price rolls can be configured to run on specific hours.
  • Demand system which will increase/decrease price of item on the market based on their demand. Messages requires DiscordCore.
  • Selling center with the price calculator with over 15 variables based on amount sold, players online and more.
  • Stock Market Broker. You can give permission for access to bank, where players can store and optionally refund items that are available in the server's sell list. You can also set the alert price and insta-sell price, which will execute an PopUp or will insta-sell your bank resources even if you are offline.
  • Custom category and full custom item support.
  • Configurable Web API for your server developers or for checking the item price if you are offline. Requires Web Server.
  • Statistics module for server technicians for easier economy setup.

The permissions listed below are static and cannot be altered. The configuration files offer hundreds of possible permissions.

  • shoppystock.admin - Gives access to the currency management command.

All commands can be fully customized. Here is a list of the default commands.

  • /market /shop /s /m - Opens Shoppy Stock UI.
  • /list - Open's window to create Sell Request in RP stock market.
  • /sell - Open's window to sell items in RP stock market.
  • curr - Admin command. Full usage description is available when you run this command. (Chat and console command)
  • updateprices <shopName> - Forcefully update stock prices of the shop. (Chat and console command)


Optional Supported Currency Plugins

  • Economics
  • ServerRewards
  • BankSystem
  • IQEconomic

Help Page

Due to the extensive features offered by this plugin, it may be challenging for some users to configure certain aspects without guidance. Therefore, we have provided a brief walkthrough below.

Configuration Files
The plugin is extensive, resulting in the configuration files being split into three distinct ones, with two of them varying for each shop.
Firstly, in your oxide/config folder, you will find the default configuration file, which contains all the fundamental configuration lines to add or remove more shops and stock markets.
Secondly, in the oxide/data/ShoppyStock folder, you will find three folders.
The first is Shops, which contains all the configurations for each shop created in the primary configuration file.
The second is StockMarket, which includes several folders with all the stock-related content. More information on this is provided later.
Lastly, UserData contains data on each shop player's currency, username, and daily/wipe purchases.

StockMarket Folder
In the StockMarket folder, you will find up to six folders, namely AlertData, Config, FavouriteData, PlayerData, PriceCache, and Statistics.\
The AlertData folder contains data on the alert and insta-sell prices set by players.
The Config folder contains all the configuration files for each available stock market.
The FavouriteData folder holds data on favorite items marked by players.
The PlayerData folder includes data on all buy/sell requests and their banks.
The PriceCache folder contains cache on all the necessary data of current item prices and their price/sell history for the graph to function. The size of this file depends on how long your timeline goes.
Lastly, the Statistics folder includes all the statistics collected in the market by all players, split into global/player values, which are further divided into all time/daily actions. These values should help you understand how many resources are being sold on the server and justify your Default Sell Amount Calculation or Price Calculator.

Server-Selling Items → Default Sell Amount Calculation (DSAC)
The Default Sell Amount Calculation (DSAC) is a critical component that determines the amount of items sold during a given period.
It serves as a reflection of the average item sales by all players during that period.
For instance, in a PvE x10 server with an average of 20-30 players online, the wood amount sold could be set to 1800000.
However, this value is only an example, and it is not recommended to base your configuration solely on it.
A good stock market requires time and effort.

The plugin offers a Web API feature that enables you to check your market prices through your website.
To activate this feature, you need website hosting with PHP support and to download the provided PHP file named apiupdate.php.
It should be placed in the same directory as the "Web Price API - Link" points to.
While experienced users can change the file name for security reasons, they should remember to modify the plugin code as well.
Ensure the file has sufficient permissions to create an output api.html file (the file's directory can be altered in the PHP file).
If configured correctly, the output should be available at <Web Price API - Link>/api.html.

Always Run Timer on Hour Minute
The Always Run Timer on Hour Minute feature sets the time when the timer will commence rolling the prices of your stock market.
For example, if the values are set to 0, 30, and 60, the timer will start rolling prices on the hour or half-hour (x:00 or x:30).
Similarly, if the values were 0, 20, 40, and 60, the timer would start rolling prices on the hour or at intervals of 20 minutes (x:00, x:20, or x:40).

Stock Market - Default Categories
The stock market contains 4 default categories.
Sometimes you want to display them as first when opening the stock market. here are their codenames for config usage:

  • my_listings
  • bank_management
  • favourites
  • all_items

Stock Market - Category Icons
These options are formatted as follows: "config/rust default category name": "URL".

Stock Market - Custom Item Info Lang Key
For custom items, it's possible to create custom info tags in listings, similar to the tool condition or genetic information for clones.
You can add your own tag for certain types of items, such as "Upgrade Ingredients".

Stock Market - Refund Storage Name
A storage with this name needs to be created in the RedeemStorageAPI.
Otherwise, items from certain actions may disappear and the plugin will generate errors.

Custom Item Listings
All items configured in the stock market must have the exact format of the keys.
The correct format is: <shortname>-<skinId>.
For instance, the key for a Metal Chestplate with skinId 2497693972 will be "metal.plate.torso-2497693972".

Generating Shop Config With All Vanilla Items
Go to main plugin config in oxide/config/ folder and in the shop section you want to add all vanilla items search for Config Generation - Generate With All Default Items and set it to true.
After all, go to oxide/data/ShoppyStock/Shops/ and delete your desired shop JSON file and reload the plugin.
The plugin should generate a new config with all vanilla RUST items.

Shop Items - Commands
Commands support 2 types of variables.

  • {userId} - Will be replaced with steamId of buyer.
  • {userName} - Will be replaced with nickname of buyer.
  • {userPosX} - Coordinate X of buyer.
  • {userPosY} - Coordinate Y of buyer.
  • {userPosZ} - Coordinate Z of buyer.

Community Q&A

Multiplier Events
Q: How does the demand system work? How does weight come into play?
A: Demands works based on "Multiplier Events" in the main config. Each event has its own "Weight" which represents their chance to be rolled on a demand roll. Values for how often demands should appear can be found in your stock market configuration in /data/ShoppyStock/StockMarket/Config/<shopName>.json. Names from the main configuration must be equal to these in the data file in order to make them work.
Q: How do minimal and maximal work?
A: It's a randomized value by which the price will be multiplied/divided. So if the price is 1.4 and the rolled demand is between 1.4 and 1.8, the random value would be, for example, 1.685, and the price would be 2.359. If the price is larger or less than the max value, it will get locked to the value near min/max.

Stock Market - Timestamps
Q: What is it used for? Is it a historical trend?
A: If you run your stock market for a while, the plugin will store the price data, and it will be available in a chart for all players with permission. The amount of data saved is equivalent to the highest timestamp, so if you want to start collecting data, I recommend making this a real value even without giving permission to players for high timestamp values.

Data Folder, Stock Market Config
Q: Blocked Multiplier Listing Keys
A: These are listings that shouldn't be multiplied with the price multiplier bonus, which is implemented, but the items that give the price bonus aren't available yet.

Item Price Calculator
Q: Price Change - Regular Curve
A: It's a randomization value of the stock prices. Each time the price is rolled, it adds or subtracts a certain percentage from the price to make it more "realistic" and not stay in one place if none of the other events are run.
Q: Price Change - Same Price Actions Min/Max
A: Actions on the market aren't random if they go up or down every time. You can specify how long the price should go up or down (not including other events). You can make it so that prices will go up for five rolls in a row and then go down for the next two rolls.
Q: Price Change - Chances to Increment
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. As far as I remember, the basic configuration has a 2% price increase if the price is below 50%, 4% below 47%, etc.
Q: Price Drop - Amount Sell Values Penalty Multiplier
A: If any of the listed values are exceeded, the price roll is always negative, plus it's multiplied by the configured value to make prices go realistically lower faster when there are a lot of items sold on the market in a short period of time.
Q: Price Drop - Amount Sold Max Price Penalty
A: If your players sell too much of any item, you can set that price to be locked at a certain percentage for a certain period of time. If they sell, 10000% of DSAC of wood, the price is locked at a maximum of 25% for 24 price rolls.
Q: Price Increase - Goal Not Achieved (Which goal is this referring to here?)
A: If there is a low demand for some items and there is less than 100% of the DSAC amount sold, you can encourage players to farm and sell them by increasing the price by a certain multiplier every time the price is rolled. Like making the price increase x1.5 times faster when there are less than 10% of items sold.
Q: Default Sell Amount Calculation - Players Online Multiplier (What does the set value with respect to players online do?)
A: If your server population varies from 20 to 150, you can easily manage the DSAC values by just multiplying or dividing them based on the current player count. The player count is checked on every price roll.
Q: Price Multipliers - Minimal Time Distance Between Events (The event here refers to what? (Is it a player buying or selling listings?)
A: It refers to the price multipliers that I described above in Multiplier Events.
Q: Price Multipliers - Chance Based On Sell Amount (0-100) (What does this configuration do?)
A: You can make the price multipliers run more often if there are not enough or too many items sold.
Q: Price multipliers [minimal actions vs. maximal actions] 
A: It's how long in price rolls the price increase or decrease event runs.

Server Sell Items
Q: How does price parent impact the server sell price?
A: Parent items are useful when you want to add item like Metal Fragments and Metal Ore, but encourage players to smelt them, because Metal Fragments price will be always higher than Metal Ore by an certain amount configured there.

API for Developers

  • int GetCurrencyAmount(string shopName, BasePlayer player) - Returns player's balance. If not found returns 0.
  • int GetCurrencyAmount(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, ulong userId, int amount) - Takes player currency. Returns true if taken and false if not.
  • void GiveCurrency(string shopName, ulong sellerId, int amount) - Gives player currency.
  • string FormatCurrency(string shopName, BasePlayer player) - Returns player's formatted balance.

Example Files (Version 1.0.0)
Contains all configuration files from the video, without most of the custom items. It's not recommended to run this files,

Default Main Config (Version 1.0.6)

Default Shop Config (Version 1.0.6)

Default Stock Market Config (Version 1.0.6)

  • Like 1
  • Love 6

User Feedback



Total number of downloads.



Total customers served.


Files Sold

Total number of files sold.


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.