Server
The inventory system triggers various events when items are added, removed, or transferred. You can listen to these events to implement custom logic
onInventoryItemAdded
Triggered when an item is successfully added to an inventory
Parameters
inventoryId
string
The inventory identifier. For players, this is the character identifier
itemName
string
The name of the item added
amount
number
The quantity added
metadata
table
The item's metadata
slotId
number/nil
The slot where the item was added (can be nil a slot wasn't specified when adding item)
Example
AddEventHandler('jaksam_inventory:onInventoryItemAdded', function(inventoryId, itemName, amount, metadata, slotId)
local inventoryType = exports['jaksam_inventory']:getInventoryType(inventoryId)
if inventoryType ~= 'player' then return end -- Only handle player inventories
print(string.format("Item %s (x%d) added to inventory %s", itemName, amount, inventoryId))
-- For QBCore: Get player by character identifier
local Player = exports['qb-core']:GetPlayerByCitizenId(inventoryId)
if Player then
local playerId = Player.PlayerData.source
print(string.format("Player %d added item %s", playerId, itemName))
end
-- For ESX: Get player by character identifier
-- local xPlayer = ESX.GetPlayerFromIdentifier(inventoryId)
-- if xPlayer then
-- local playerId = xPlayer.source
-- print(string.format("Player %d added item %s", playerId, itemName))
-- end
end)onInventoryItemRemoved
Triggered when an item is successfully removed from an inventory
Parameters
inventoryId
string
The inventory identifier. For players, this is the character identifier
itemName
string
The name of the item removed
amount
number
The quantity removed
metadata
table
The item's metadata
slotId
number/nil
The slot from which the item was removed (can be nil a slot wasn't specified when removing item)
Example
AddEventHandler('jaksam_inventory:onInventoryItemRemoved', function(inventoryId, itemName, amount, metadata, slotId)
local inventoryType = exports['jaksam_inventory']:getInventoryType(inventoryId)
if inventoryType ~= 'player' then return end -- Only handle player inventories
print(string.format("Item %s (x%d) removed from inventory %s", itemName, amount, inventoryId))
-- For QBCore: Get player by character identifier
local Player = exports['qb-core']:GetPlayerByCitizenId(inventoryId)
if Player then
local playerId = Player.PlayerData.source
print(string.format("Player %d removed item %s", playerId, itemName))
-- Example: Log to Discord or database
-- exports['your_logs']:log({
-- event = "item_removed",
-- playerId = playerId,
-- item = itemName,
-- amount = amount
-- })
end
-- For ESX: Get player by character identifier
-- local xPlayer = ESX.GetPlayerFromIdentifier(inventoryId)
-- if xPlayer then
-- local playerId = xPlayer.source
-- print(string.format("Player %d removed item %s", playerId, itemName))
-- end
end)onInventoryItemTransferred
Triggered when an item is successfully transferred from one inventory to another.
Parameters
inventoryIdFrom
string
The source inventory identifier. For players, this is the character identifier
inventoryIdTo
string
The destination inventory identifier. For players, this is the character identifier
itemName
string
The name of the item transferred
amount
number
The quantity transferred
metadata
table
The item's metadata
slotIdFrom
number/nil
The slot from which the item was transferred
slotIdTo
number/nil
The slot to which the item was transferred
Example
AddEventHandler('jaksam_inventory:onInventoryItemTransferred', function(inventoryIdFrom, inventoryIdTo, itemName, amount, metadata, slotIdFrom, slotIdTo)
local inventoryTypeFrom = exports['jaksam_inventory']:getInventoryType(inventoryIdFrom)
local inventoryTypeTo = exports['jaksam_inventory']:getInventoryType(inventoryIdTo)
if inventoryTypeFrom ~= 'player' or inventoryTypeTo ~= 'player' then return end -- Only handle player inventories
print(string.format("Item %s (x%d) transferred from %s to %s", itemName, amount, inventoryIdFrom, inventoryIdTo))
-- For QBCore
local Player = exports['qb-core']:GetPlayerByCitizenId(inventoryId)
if Player then
local playerId = Player.PlayerData.source
print(string.format("Player %d transferred item %s (x%d) to player %d", playerId, itemName, amount, playerIdTo))
end
end
print(string.format("Item %s (x%d) transferred from %s to %s", itemName, amount, inventoryIdFrom, inventoryIdTo))
end)Last updated
Was this helpful?