Rust-Cases / SkinCases

Required: ImageLibrary from umod.
RustCases
RustCases lets players collect and open cases through an in-game UI. Cases are stored as a player balance, so they do not take up inventory space. Players can browse a case’s possible rewards, then watch a five-item reel scroll to the winning item. The reward goes into their inventory; if it will not fit, it drops beside them.
Features
- Create cases with item or server-command rewards, including item skins and quantity ranges.
- Set reward weights by rarity tier. The plugin picks a tier first, then an item from that tier.
- Configure optional case purchases using a specific item, ServerRewards points, or Economics currency. Item prices can require an exact skin ID and custom name.
- Schedule free cases by permission, with a configurable interval and limit on unopened cases.
- Edit cases, rewards, prices, and automatic drops in the in-game configuration editor.
- Save unfinished reward delivery so it can be retried when a player reconnects.
Custom case and reward images use ImageLibrary. ServerRewards and Economics are only needed if you choose those payment types.
Permissions
| Permission | What it does |
|---|---|
| rustcases.use | Allows a player to open the case UI, open cases, and buy cases when a price is configured. |
| rustcases.admin | Allows access to the in-game configuration editor. Rust admins can also access it. |
| rustcases.default | Makes a player eligible for the default automatic drop: one Tools case every hour, up to five unopened. |
| rustcases.vip | Makes a player eligible for the default VIP drop: one Explosion case every four hours, up to three unopened. |
Automatic-drop permissions, intervals, cases, amounts, and limits can be changed in the config editor. A player who receives cases still needs rustcases.use to open them.
Commands
The default chat command is /case. You can change Chat command (without /) in the config; if you change it to cases, use /cases and /cases config instead.
| Command | What it does |
|---|---|
| /case | Opens the case collection. Requires rustcases.use. |
| /case config | Opens the configuration editor. Requires rustcases.admin or Rust admin status. |
| case <SteamID> "<case name>" <amount> | Gives a specific case to a player. |
| caseall "<case name>" <amount> | Gives a specific case to every online player. |
| allcase <SteamID> <amount> | Gives the player that amount of each configured case. |
| caseinfo | Shows the number of unopened cases currently loaded by the plugin. |
The last four commands are console commands. They can be run from the server console or by a Rust admin in the in-game console. Case names containing spaces should be placed in quotes.
RustCases.json
{
"Case settings": {
"List of available cases": [
{
"Display name": "Tools case",
"ImageURL": "https://i.ibb.co/Y2ktKCT/TOOLS.png",
"Price": {
"Payment type (None/Item/ServerRewards/Economics)": "None",
"Amount": 0.0,
"Item short name": "scrap",
"Item skin ID": 0,
"Item custom name (optional)": ""
},
"Possible items": [
{
"Rarity type (0/1/2/3)": 0,
"Minimal amount": 500,
"Maximum amount": 1500,
"ShortName": "wood",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 0,
"Minimal amount": 500,
"Maximum amount": 1500,
"ShortName": "stones",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 0,
"Minimal amount": 100,
"Maximum amount": 250,
"ShortName": "leather",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 0,
"Minimal amount": 100,
"Maximum amount": 300,
"ShortName": "cloth",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 1,
"Minimal amount": 50,
"Maximum amount": 125,
"ShortName": "lowgradefuel",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 1,
"Minimal amount": 150,
"Maximum amount": 400,
"ShortName": "metal.fragments",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 2,
"Minimal amount": 150,
"Maximum amount": 400,
"ShortName": "sulfur",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 2,
"Minimal amount": 50,
"Maximum amount": 150,
"ShortName": "gunpowder",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 3,
"Minimal amount": 5,
"Maximum amount": 15,
"ShortName": "metal.refined",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 3,
"Minimal amount": 10,
"Maximum amount": 25,
"ShortName": "hq.metal.ore",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
}
]
},
{
"Display name": "Component case",
"ImageURL": "https://i.ibb.co/zX8j2nd/COMPONENTS.png",
"Price": {
"Payment type (None/Item/ServerRewards/Economics)": "None",
"Amount": 0.0,
"Item short name": "scrap",
"Item skin ID": 0,
"Item custom name (optional)": ""
},
"Possible items": [
{
"Rarity type (0/1/2/3)": 0,
"Minimal amount": 2,
"Maximum amount": 5,
"ShortName": "metalblade",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 0,
"Minimal amount": 2,
"Maximum amount": 4,
"ShortName": "sewingkit",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 0,
"Minimal amount": 2,
"Maximum amount": 5,
"ShortName": "roadsigns",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 0,
"Minimal amount": 2,
"Maximum amount": 5,
"ShortName": "metalpipe",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 1,
"Minimal amount": 2,
"Maximum amount": 4,
"ShortName": "gears",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 1,
"Minimal amount": 1,
"Maximum amount": 3,
"ShortName": "metalspring",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 1,
"Minimal amount": 1,
"Maximum amount": 1,
"ShortName": "smgbody",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 2,
"Minimal amount": 1,
"Maximum amount": 1,
"ShortName": "semibody",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 2,
"Minimal amount": 1,
"Maximum amount": 3,
"ShortName": "techparts",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 3,
"Minimal amount": 1,
"Maximum amount": 1,
"ShortName": "riflebody",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
}
]
},
{
"Display name": "Resource case",
"ImageURL": "https://i.ibb.co/MnXMfv1/RESOURCE.png",
"Price": {
"Payment type (None/Item/ServerRewards/Economics)": "None",
"Amount": 0.0,
"Item short name": "scrap",
"Item skin ID": 0,
"Item custom name (optional)": ""
},
"Possible items": [
{
"Rarity type (0/1/2/3)": 0,
"Minimal amount": 1500,
"Maximum amount": 3000,
"ShortName": "wood",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 0,
"Minimal amount": 1500,
"Maximum amount": 3000,
"ShortName": "stones",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 0,
"Minimal amount": 200,
"Maximum amount": 400,
"ShortName": "leather",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 0,
"Minimal amount": 250,
"Maximum amount": 500,
"ShortName": "cloth",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 1,
"Minimal amount": 100,
"Maximum amount": 200,
"ShortName": "lowgradefuel",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 1,
"Minimal amount": 500,
"Maximum amount": 1000,
"ShortName": "metal.fragments",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 1,
"Minimal amount": 10,
"Maximum amount": 25,
"ShortName": "metal.refined",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 2,
"Minimal amount": 400,
"Maximum amount": 800,
"ShortName": "sulfur",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 2,
"Minimal amount": 150,
"Maximum amount": 300,
"ShortName": "gunpowder",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 3,
"Minimal amount": 50,
"Maximum amount": 100,
"ShortName": "scrap",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
}
]
},
{
"Display name": "Weapons case",
"ImageURL": "https://i.ibb.co/6gHN8XV/WEAPONS.png",
"Price": {
"Payment type (None/Item/ServerRewards/Economics)": "None",
"Amount": 0.0,
"Item short name": "scrap",
"Item skin ID": 0,
"Item custom name (optional)": ""
},
"Possible items": [
{
"Rarity type (0/1/2/3)": 0,
"Minimal amount": 1,
"Maximum amount": 1,
"ShortName": "pistol.semiauto",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 0,
"Minimal amount": 1,
"Maximum amount": 1,
"ShortName": "pistol.python",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 1,
"Minimal amount": 1,
"Maximum amount": 1,
"ShortName": "rifle.semiauto",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 1,
"Minimal amount": 1,
"Maximum amount": 1,
"ShortName": "smg.2",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 1,
"Minimal amount": 1,
"Maximum amount": 1,
"ShortName": "smg.thompson",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 2,
"Minimal amount": 1,
"Maximum amount": 1,
"ShortName": "pistol.m92",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 2,
"Minimal amount": 1,
"Maximum amount": 1,
"ShortName": "rifle.m39",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 2,
"Minimal amount": 1,
"Maximum amount": 1,
"ShortName": "rifle.lr300",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 3,
"Minimal amount": 1,
"Maximum amount": 1,
"ShortName": "rifle.bolt",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 3,
"Minimal amount": 1,
"Maximum amount": 1,
"ShortName": "rifle.ak",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
}
]
},
{
"Display name": "Mystery case",
"ImageURL": "https://i.ibb.co/yndY1QK/MYSTERY.png",
"Price": {
"Payment type (None/Item/ServerRewards/Economics)": "None",
"Amount": 0.0,
"Item short name": "scrap",
"Item skin ID": 0,
"Item custom name (optional)": ""
},
"Possible items": [
{
"Rarity type (0/1/2/3)": 0,
"Minimal amount": 40,
"Maximum amount": 80,
"ShortName": "scrap",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 0,
"Minimal amount": 300,
"Maximum amount": 600,
"ShortName": "metal.fragments",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 0,
"Minimal amount": 100,
"Maximum amount": 250,
"ShortName": "gunpowder",
"SkinID": 0,
"Amount": 0,
"External command (%STEAMID% support)": "",
"Image URL (64x64 png!!!)": ""
},
{
"Rarity type (0/1/2/3)": 1,
"Minimal amount": 40,
"Maximum amount": 80,
"ShortName": "ammo.rifle",
"SkinID": 0,
"Amount": 0,
…

Trusted hosting partner. Affordable game servers with solid support and panels.
Visit site ↗