VORP Core Inventory System Documentation
This documentation covers the complete VORP Core Framework inventory system for developers creating scripts and integrations.
Table of Contents
Inventory Management > Basic Inventory Operations > Get All User Inventory Items
local result = exports.vorp_inventory:getInventoryItems()
Inventory Management > Basic Inventory Operations > Close Inventory
exports.vorp_inventory:closeInventory()
Item Management > Item Getters > Check if Player Can Carry Item
Checks if a player can carry the specified item before adding it to inventory.
exports.vorp_inventory:canCarryItem(source, item, amount, callback)
Parameters:
source- Player source IDitem- The item nameamount- The amount of itemscallback- The callback function (synchronous or asynchronous)
Returns: true if the player can carry the item
Item Management > Item Getters > Get Item Count
Gets the amount of a specific item from player inventory.
exports.vorp_inventory:getItemCount(source, callback, item, metadata, percentage)
Parameters:
source- Player source IDcallback- Callback function for synchronous or asynchronous operationitem- Item namemetadata- Item metadata filterpercentage- Controls what items to get:0- Gets all items with no metadata if meta was not passed, or gets expired items>0- Returns items with that count or above
Returns: The amount of items in the inventory
Item Management > Item Getters > Get Item by ID
exports.vorp_inventory:getItemById(source, id, callback)
Parameters:
source- Player source IDid- Item ID
Returns: Item object:
{
id = number,
label = string,
name = string,
metadata = table,
group = number,
type = string,
count = number,
limit = number,
canUse = boolean,
percentage = integer,
description = string,
weight = number
}
Item Management > Item Getters > Get Item Data
exports.vorp_inventory:getItem(source, item, callback, metadata, percentage)
Parameters:
source- Player source IDitem- Item namecallback- Callback functionmetadata- Item metadatapercentage- Item percentage filter:0- Gets expired itemsnil- Gets any item>0- Gets items equal to or above this percentage
Returns: Item object:
{
id = number,
label = string,
name = string,
metadata = table,
group = number,
type = string,
count = number,
limit = number,
canUse = boolean,
weight = number,
desc = string,
percentage = integer
}
Item Management > Item Setters > Add Item to User
exports.vorp_inventory:addItem(source, item, amount, metadata, callback, event)
Parameters:
source- Player source IDitem- Item nameamount- Amount of itemmetadata- Item metadatacallback- Callback functionevent- Iftrue, will not trigger theOnItemCreatedevent
Returns: true if the item was successfully added
Item Management > Item Setters > Remove Item from User Inventory
exports.vorp_inventory:subItem(source, item, amount, metadata, callback, event, percentage)
Parameters:
source- Player source IDitem- Item nameamount- Amount of itemmetadata- Item metadatacallback- Callback functionevent-OnItemRemovedevent control:truewon't fire event,false/nilwill firepercentage- Controls which items to remove:nil- Removes any0- Removes expired items only>0- Removes items above or equal to this percentage
Item Management > Item Setters > Remove Item by ID
exports.vorp_inventory:subItemById(source, itemId, callback, event, amount)
Parameters:
source- Player source IDitemId- Item IDcallback- Callback functionevent-OnItemRemovedevent controlamount- Amount to remove
Note: Available on version 3.9 and up. Lower versions use subItemID
Item Management > Item Setters > Set Item Metadata
Modifies item metadata with three possible behaviors:
- Split a stack and modify only some items (amount must be less than current stack)
- Merge with existing stack that has matching metadata (amount must be more or equal than current stack)
- Modify entire stack's metadata (amount must be more or equal than current stack, only applies if metadata matches current stack)
exports.vorp_inventory:setItemMetadata(source, itemId, metadata, amount, callback)
Parameters:
source- Player source IDitemId- Item IDmetadata- Metadata object with reserved keys:{ description = string?, -- Optional description image = string?, -- Optional image name to apply label = string?, -- Optional label weight = number? -- Optional weight }amount- Amount of items to modifycallback- Callback function
Returns: true if the metadata was successfully set
Item Management > Item Setters > Register Usable Item
exports.vorp_inventory:registerUsableItem(item, callback, resourceName)
Parameters:
item- Item namecallback- Callback function with item data:{ source = int, id = number, label = string, name = string, metadata = table, group = number, type = string, count = number, limit = number, canUse = boolean, mainid = integer, percentage = integer }resourceName- Resource name for debug purposes
Item Management > Item Setters > Unregister Usable Item
exports.vorp_inventory:unRegisterUsableItem(item)
Parameters:
item- Item name
Weapon Management > Weapon Getters > Check if Player Can Carry Weapons
exports.vorp_inventory:canCarryWeapons(source, amount, callback, weaponName)
Parameters:
source- Player source IDamount- Amount of weaponscallback- Callback functionweaponName- Weapon name or hash (needed to check weight since v3.6)
Returns: true if the player can carry the weapons
Weapon Management > Weapon Getters > Get User Inventory Weapon
exports.vorp_inventory:getUserWeapon(source, callback, weaponId)
Parameters:
source- Player source IDcallback- Callback functionweaponId- Weapon ID
Returns: Weapon object:
{
id = number,
name = string,
propietary = string,
used = boolean,
desc = string,
group = number,
source = number,
label = string,
serial_number = string,
custom_label = string,
custom_desc = string
}
Weapon Management > Weapon Getters > Get User Inventory Weapons
exports.vorp_inventory:getUserInventoryWeapons(source, callback)
Parameters:
source- Player source IDcallback- Callback function
Returns: Array of weapon objects with same structure as above
Weapon Management > Weapon Setters > Give Weapon to User
exports.vorp_inventory:giveWeapon(source, weaponId, target, callback)
Parameters:
source- Player source IDweaponId- Weapon IDtarget- Target player IDcallback- Callback function
Returns: true if the weapon was successfully given
Weapon Management > Weapon Setters > Create Weapon
exports.vorp_inventory:createWeapon(source, weaponName, ammo, components, comps, callback, serial, label, desc)
Parameters:
source- Player source IDweaponName- Weapon nameammo- Amount of ammocomponents- Weapon componentscomps- Weapon components (leave asnil, used internally only)callback- Callback functionserial- Custom serial number for weaponlabel- Custom label for weapondesc- Custom description for weapon
Weapon Management > Weapon Setters > Add Bullets
exports.vorp_inventory:addBullets(source, bulletType, amount, callback)
Parameters:
source- Player source IDbulletType- Bullet typeamount- Amount of bulletscallback- Callback function
Returns: true if the bullets were successfully added
Weapon Management > Weapon Setters > Remove Bullets from Weapon
exports.vorp_inventory:subBullets(weaponId, bulletType, amount, callback)
Parameters:
weaponId- Weapon IDbulletType- Bullet typeamount- Amount of bulletscallback- Callback function
Returns: true if the bullets were successfully removed
Custom Inventory Management > Custom Inventory Registration > Register Custom Inventory
exports.vorp_inventory:registerInventory(data)
Parameters:
data- Inventory configuration:{ id = string, -- Inventory ID name = string, -- Inventory name limit = number, -- Item limit acceptWeapons = boolean, -- Whether to accept weapons shared = boolean, -- Whether inventory is shared ignoreItemStackLimit = boolean, -- Ignore item stack limits whitelistItems = boolean, -- Use item whitelist UsePermissions = boolean, -- Use permissions UseBlackList = boolean, -- Use blacklist whitelistWeapons = boolean, -- Use weapon whitelist webhook = string -- Webhook URL }
Custom Inventory Management > Custom Inventory Registration > Remove Inventory from Session
exports.vorp_inventory:removeInventory(invId)
Parameters:
invId- Inventory ID
Custom Inventory Management > Custom Inventory Items > Add Items to Custom Inventory
exports.vorp_inventory:addItemsToCustomInventory(invid, items, charid, callback)
Parameters:
invid- Inventory IDitems- Items to addcharid- Character identifier of the owner (if not shared)callback- Callback function
Returns: true if the items were successfully added
Custom Inventory Management > Custom Inventory Items > Update Item in Custom Inventory
exports.vorp_inventory:updateCustomInventoryItem(invId, item_id, metadata, amount, callback)
Parameters:
invId- Inventory IDitem_id- Item IDmetadata- Metadata to updateamount- Amount of itemcallback- Callback function
Returns: true if the item was successfully updated
Custom Inventory Management > Custom Inventory Items > Remove Item from Custom Inventory by ID
exports.vorp_inventory:removeCustomInventoryItemById(invId, item_id, callback)
Parameters:
invId- Inventory IDitem_id- Item IDcallback- Callback function
Custom Inventory Management > Custom Inventory Items > Set Custom Inventory Item Limit
exports.vorp_inventory:setCustomInventoryItemLimit(invId, item, limit, callback)
Parameters:
invId- Inventory IDitem- Item namelimit- Item limitcallback- Callback function
Returns: true if the limit was successfully set
Note: Use this export when whitelistItems is set to true in registerCustomInventory
Custom Inventory Management > Custom Inventory Weapons > Add Weapons to Custom Inventory
exports.vorp_inventory:addWeaponsToCustomInventory(invid, weapons, charid, callback)
Parameters:
invid- Inventory IDweapons- Weapons array:{ { name = string, -- Weapon name serial_number = string?, -- Optional serial number custom_label = string?, -- Optional custom label custom_desc = string?, -- Optional custom description components = table? -- Optional components } }charid- Character identifier of the owner (if not shared)callback- Callback function
Returns: true if the weapons were successfully added
Custom Inventory Management > Custom Inventory Weapons > Remove Weapon from Custom Inventory
exports.vorp_inventory:removeWeaponFromCustomInventory(invid, weaponName, callback)
Parameters:
invid- Inventory IDweaponName- Weapon namecallback- Callback function
Custom Inventory Management > Custom Inventory Weapons > Remove Weapon from Custom Inventory by ID
exports.vorp_inventory:removeCustomInventoryWeaponById(invId, weapon_id, callback)
Parameters:
invId- Inventory IDweapon_id- Weapon IDcallback- Callback function
Custom Inventory Management > Custom Inventory Weapons > Set Custom Inventory Weapon Limit
exports.vorp_inventory:setCustomInventoryWeaponLimit(invId, weapon, limit, callback)
Parameters:
invId- Inventory IDweapon- Weapon namelimit- Weapon limitcallback- Callback function
Returns: true if the limit was successfully set
Note: Use this export when whitelistWeapons is set to true in registerCustomInventory
Custom Inventory Management > Player Inventory Access > Open Player Inventory
exports.vorp_inventory:openPlayerInventory(data)
Parameters:
data- Configuration object:{ source = int, -- Source player target = int, -- Target player title = string, -- Inventory title blacklist = table, -- Optional blacklisted items itemsLimit = table, -- Optional item limits timeout = number -- Optional timeout in seconds }
Example:
local data = {
source = source,
target = target,
title = "Search inventory",
blacklist = { -- OPTIONAL
water = true, -- item name or weapon name
},
itemsLimit = { -- OPTIONAL
weapons = { itemType = "item_weapon", limit = 1 }, -- how many weapons user is allowed to take
items = { itemType = "item_standard", limit = 2 }, -- how many items user is allowed to take
},
timeout = 60, -- OPTIONAL in seconds, timeout applied when user reaches limits
}
exports.vorp_inventory:openPlayerInventory(data)
Events > Server Events > Item Use Event
Triggered when an item is used.
AddEventHandler("vorp_inventory:Server:OnItemUse", function(data)
local source = data.source
local itemName = data.item.name
local itemMetadata = data.item.metadata
end)
Events > Server Events > Item Created Event
Triggered when an item is created in player inventory.
AddEventHandler("vorp_inventory:Server:OnItemCreated", function(data, source)
-- data.count, data.name, data.metadata
end)
Events > Server Events > Item Removed Event
Triggered when an item is removed from player inventory.
AddEventHandler("vorp_inventory:Server:OnItemRemoved", function(data, source)
-- data.count, data.name (no metadata is passed here)
end)
Events > Client Events > Inventory State Change Event
Triggered when inventory opens or closes (including custom inventories).
AddEventHandler("vorp_inventory:Client:OnInvStateChange", function(boolean)
print(boolean) -- true if opened, false if closed
end)
Statebags > Player State > Equipped Weapon Data
Contains data from the current weapon used in the inventory or last weapon used.
Client Side:
local key = string.format("GetEquippedWeaponData_%d", weaponHash)
local data = LocalPlayer.state[key]
local serial = data.serialNumber
local id = data.weaponId
Server Side:
local key = string.format("GetEquippedWeaponData_%d", weaponHash)
local data = Player(source).state[key]
local serial = data.serialNumber
local id = data.weaponId
Statebags > Player State > Inventory Active State
Check if inventory is active (open or closed) including custom inventories.
Client Side:
LocalPlayer.state.IsInvActive
Server Side:
Player(source).state.IsInvActive
Statebags > Global Statebags > Server Timestamp
Returns timestamp from server to be used in client.
local timestamp = GlobalState.TimeNow
-- Get hours, minutes and seconds from timestamp
local seconds = GlobalState.TimeNow % 60
local minutes = math.floor(GlobalState.TimeNow / 60) % 60
local hours = math.floor(GlobalState.TimeNow / 3600) % 24
Notes
- This documentation is for developers creating scripts for the VORP Core Framework
- Version 3.6+ requires weapon name or hash for weight checking in
canCarryWeapons - Version 3.9+ uses
subItemByIdinstead ofsubItemIDfor lower versions - Custom inventories support both shared and individual ownership models
- All callback functions can be synchronous or asynchronous
- Metadata operations include reserved keys:
description,image,label, andweight