This page is based on qb-inventory one, since we support almost all their exports to maximize the compatibility between us, qbcore and custom scripts from any developers.
All exports listed are SERVER only unless specified
Item Info
You can use SetItemData to achieve this
Items support additional information that can be added to them via an info attribute. This information will display on the item when the player hovers over it in a key,value pair format
Example:
Copy
RegisterCommand('addItemWithInfo', function(source, args)
local itemName = args[1]
if not itemName then return end
local info = {
uniqueData1 = 'uniqueData1',
uniqueData2 = 'uniqueData2',
uniqueData3 = 'uniqueData3',
uniqueData4 = 'uniqueData4',
}
exports['jpr-inventory']:AddItem(source, itemName, 1, false, info, 'jpr-inventory:testAdd')
end, true)
RegisterCommand('editItemWithInfo', function(source)
local Player = QBCore.Functions.GetPlayer(source)
if not Player then return end
local items = Player.PlayerData.items
local itemInfo = items[1]
print(json.encode(itemInfo, { indent = true }))
itemInfo.info = {
newInfo = 'New Info'
}
print(json.encode(itemInfo, { indent = true }))
items[1] = itemInfo
Player.Functions.SetPlayerData('items', items)
end, true)
LoadInventory
This function will retrieve the players inventory from the database via their unique identifier aka citizenid
RegisterCommand('clearInventoryExcludeItem', function(source, args)
local filterItem = args[1]
if not filterItem then return end
exports['jpr-inventory']:ClearInventory(source, filterItem)
print('Inventory cleared for player '..source..', excluding item: '..filterItem)
end, true)
RegisterCommand('clearInventoryExcludeItems', function(source)
local filterItems = {'item1', 'item2'}
exports['jpr-inventory']:ClearInventory(source, filterItems)
print('Inventory cleared for player '..source..', excluding items: '..table.concat(filterItems, ', '))
end, true)
RegisterCommand('closeInventory', function(source)
exports['jpr-inventory']:CloseInventory(source)
print('Inventory closed for player '..source)
end, true)
RegisterCommand('closeInventoryByName', function(source, identifier)
exports['jpr-inventory']:CloseInventory(source, identifier)
print('Inventory closed for player '..source..' and inventory '..identifier..' set to closed')
end, true)
RegisterCommand('addItem', function(source, args)
local itemName = args[1]
if not itemName then return end
exports['jpr-inventory']:AddItem(source, itemName, 1, false, false, 'jpr-inventory:testAdd')
end, true)
RegisterCommand('removeItem', function(source, args)
local itemName = args[1]
if not itemName then return end
exports['jpr-inventory']:RemoveItem(source, itemName, 1, false, 'jpr-inventory:testRemove')
end, true)
RegisterCommand('setItemData', function(source, args)
local itemName = args[1]
local key = args[2]
local val = args[3]
if not itemName or not key or not val then return end
local success = exports['jpr-inventory']:SetItemData(source, itemName, key, val)
if success then
print('Set data for item '..itemName..': '..key..' = '..val)
else
print('Failed to set data for item '..itemName)
end
end, true)
Item Info Example:
Copy
RegisterCommand('setItemData', function(source)
local itemName = 'markedbills'
local key = 'info'
local val = { worth = 1000 }
if not itemName or not key or not val then return end
local success = exports['jpr-inventory']:SetItemData(source, itemName, key, val)
if success then
print('Set data for item '..itemName..': '..key..' = '..json.encode(val, { indent = true }))
else
print('Failed to set data for item '..itemName)
end
end, true)
UseItem
Copy
exports['jpr-inventory']:UseItem(itemName, ...)
itemName: string
. . . : function
Example:
Copy
RegisterCommand('useItem', function(source, args)
local itemName = args[1]
if not itemName then return end
exports['jpr-inventory']:Useitem(itemName, function()
print('Used item with the name of '..itemName)
end)
end, true)
HasItem
This export is also available to use on the client
RegisterCommand('hasSingleItem', function(source)
local item = 'item1'
local amount = 5
local hasItem = exports['jpr-inventory']:HasItem(source, item, amount)
if hasItem then
print('Player '..source..' has '..amount..' of '..item)
else
print('Player '..source..' does not have '..amount..' of '..item)
end
end, true)
RegisterCommand('hasMultipleItems', function(source)
local items = {'item1', 'item2'}
local amount = 5
local hasItems = exports['jpr-inventory']:HasItem(source, items, amount)
if hasItems then
print('Player '..source..' has '..amount..' of each item: '..table.concat(items, ', '))
else
print('Player '..source..' does not have '..amount..' of each item: '..table.concat(items, ', '))
end
end, true)
RegisterCommand('hasMultipleItemsWithAmounts', function(source)
local itemsWithAmounts = {item1 = 5, item2 = 10}
local hasItemsWithAmounts = exports['jpr-inventory']:HasItem(source, itemsWithAmounts)
if hasItemsWithAmounts then
print('Player '..source..' has the specified items with their amounts')
else
print('Player '..source..' does not have the specified items with their amounts')
end
end, true)
RegisterCommand('getSlots', function(source, args)
local itemName = args[1]
if not itemName then return end
local Player = QBCore.Functions.GetPlayer(source)
local items = Player.PlayerData.Items
local slots = exports['jpr-inventory']:GetSlotsByItem(items, itemName)
for _, slot in ipairs(slots) do
print(slot)
end
end, true)
RegisterCommand('getFirstSlot', function(source, args)
local itemName = args[1]
if not itemName then return end
local Player = QBCore.Functions.GetPlayer(source)
local items = Player.PlayerData.Items
local slot = exports['jpr-inventory']:GetFirstSlotByItem(items, itemName)
if slot then
print('First slot containing item '..itemName..' is: '..slot)
else
print('No slot found containing item '..itemName)
end
end, true)
RegisterCommand('getItem', function(source, args)
local slot = tonumber(args[1])
if not slot then return end
local item = exports['jpr-inventory']:GetItemBySlot(source, slot)
if item then
print('Item in slot '..slot..' is: '..item.name)
else
print('No item found in slot '..slot)
end
end, true)
RegisterCommand('getItemByName', function(source, args)
local itemName = args[1]
if not itemName then return end
local item = exports['jpr-inventory']:GetItemByName(source, itemName)
if item then
print('First occurrence of item '..itemName..' is in slot: '..item.slot)
else
print('No item found with name '..itemName)
end
end, true)
RegisterCommand('getItemsByName', function(source, args)
local itemName = args[1]
if not itemName then return end
local items = exports['jpr-inventory']:GetItemsByName(source, itemName)
if #items > 0 then
print('Items named '..itemName..' found in slots:')
for _, item in ipairs(items) do
print(item.slot)
end
else
print('No items found with name '..itemName)
end
end, true)