Guide · Updated 19 Sep 2026
How to add items to a RedM server on VORP, RSG Core and QBCore RedM
Almost every RedM script needs items: a fishing rod, a shop deed, a campfire, a crafted knife. The script can only hand out items your framework already knows about, and each framework keeps that list somewhere different. This guide shows where the item list and the icons live on VORP, RSG Core and QBCore RedM, how to add an item to each, and the mistakes behind most "item does not exist" errors.
Where items live
| Framework | Item list | Icons | Icon file name |
|---|---|---|---|
| VORP Core | The items table in your database | vorp_inventory/html/img/items/ | Always the item name: bread.png |
| RSG Core | rsg-core/shared/items.lua | rsg-inventory/html/images/ | Whatever the item's image field says; usually the name |
| QBCore RedM | qbr-core/shared/items.lua | qbr-inventory/html/images/ | Whatever the image field says; often not the name |
The difference that catches people: on VORP the list is data in the database, so a script can add its own items with SQL. On RSG Core and QBCore RedM it is a Lua file inside the framework, so a script cannot add to it and you add the entries by hand.
Adding an item on VORP
Insert a row into the items table. The columns that matter:
item: the internal name scripts use. Lowercase, no spaces.label: the name players see.limit: how many one player can carry.can_remove: 1 lets players drop or give it.type:item_standardfor ordinary items.usable: 1 if a script registers a use for it (see below).descandweight: the tooltip text and the weight.
INSERT IGNORE INTO `items` (`item`, `label`, `limit`, `can_remove`, `type`, `usable`, `desc`, `weight`)
VALUES ('campfire', 'Campfire', 5, 1, 'item_standard', 1, 'A fire pit for cooking and warmth.', 0.25);
Use INSERT IGNORE, not a plain insert: if the item already exists it is left alone instead of erroring, and your own label or limit is not overwritten. Then put a PNG named exactly after the item (campfire.png) in vorp_inventory/html/img/items/, the same size as the icons already there, and restart the server.
Weapons are not rows in this table on VORP; they are handled separately by the inventory's weapon system, so a weapon script or shop gives them through that.
Adding an item on RSG Core
Open rsg-core/shared/items.lua and add an entry inside RSGShared.Items, following the entries around it:
campfire = { name = 'campfire', label = 'Campfire', weight = 500, type = 'item',
image = 'campfire.png', unique = false, useable = true, shouldClose = true,
description = 'A fire pit for cooking and warmth' },
Put campfire.png in rsg-inventory/html/images/, matching the image field, and restart the server. On RSG Core weapons are items too, with type = 'weapon' and lowercase names such as weapon_revolver_cattleman.
Two habits save an evening: keep the key and the name identical, and check the commas. A missing comma is a Lua syntax error in the framework's own shared file, and that stops the framework, not just one item.
Adding an item on QBCore RedM
The same idea in qbr-core/shared/items.lua, inside QBShared.Items, in the quoted-key style the file already uses:
['campfire'] = {
['name'] = 'campfire', ['label'] = 'Campfire', ['weight'] = 500, ['type'] = 'item',
['image'] = 'campfire.png', ['unique'] = false, ['useable'] = true,
['shouldClose'] = true, ['description'] = 'A fire pit for cooking and warmth'
},
The icon goes in qbr-inventory/html/images/. Watch the image field on existing items: QBR often uses a different file name from the item name (its bread uses consumable_bread_roll.png), so do not assume <name>.png when you look for an icon.
Usable items
Marking an item usable does not make it do anything. A script has to register what happens on use: the fishing script equips the rod, the crafting script lights the campfire. An item flagged usable with nothing registered does nothing when used. An item a script registers but the list marks unusable may not show a Use option, depending on the inventory. If a use does nothing, check that the script that owns the item is started.
How scripts should handle their own items
A well-made script tells you exactly which items it needs and does not overwrite yours. What the Poggy scripts do, as an example of what to look for:
- On VORP, each script's install SQL adds its items with
INSERT IGNOREon the first start, through Poggy Core (Free). Items you already have are never changed. - On RSG Core and QBCore RedM, there is no items table, so that step is skipped and the script prints one yellow line at start naming every item your list is missing. Poggy Fishing ($69.99) lists its rods, baits, fish and loot; Poggy Markets ($99) lists catalogue items it cannot buy or sell.
- Icons ship with the script where it adds new items, in a folder you copy into your inventory's image folder.
Poggy Crafting (Free) goes one step further: with Config.HideRecipesWithoutIcons on, it checks every item's icon at start on VORP, RSG Core and QBCore RedM, hides recipes it cannot draw, and names the missing file in /poggy.
The mistakes behind most item errors
- "Item does not exist"
- The name in the script's config and the name in the list differ.
Bread,breadandbread_rollare three different items. Copy names, do not type them. - The item works but shows a blank or question-mark icon
- The PNG is missing or misnamed. VORP wants
<item>.png; RSG and QBR want the file named inimage. - A player cannot receive an item
- On VORP, the
limitis reached or the satchel is full. Raise the limit for things players stack, such as fish and ammunition. - The whole framework stopped after an edit
- A syntax error in
items.lua, usually a missing comma or brace. Check the console for the line number. - A new item is ignored
- The server was not restarted. Frameworks read the list at start.
A checklist for every new script
- Read the script's README for its item list.
- On VORP, let its SQL run (or import it) and restart. On RSG Core or QBCore RedM, add the entries to
items.luaby hand. - Copy its icons into your inventory's image folder.
- Restart and read the console. No missing-item lines means you are done.
If you are still installing, how to install a RedM script covers start order and dependencies, the other two causes of a script that does nothing.






















