Our BlackMarket system already includes several default inventories: QB-Inventory for QB-Core, OX Inventory, and Quasar Inventory. You can easily add your own inventory via exports.
Here is the configuration of the Quasar inventory system integrated into our BlackMarket.
To integrate your inventory, go to editable/inv/default/main.lua and modify the code.
If you need help, feel free to join our Discord.
Here is the code from default/main.lua.
print("^2[PBlackMarket] Inventory DEFAULT (ESX) loaded ✓^0")
InventoryBridge = {}
local function IsWeapon(itemName)
return string.sub(string.upper(itemName), 1, 7) == "WEAPON_"
end
function InventoryBridge.AddItem(source, itemName, count)
if Config.Framework == 'ESX' then
local xPlayer = ESX.GetPlayerFromId(source)
if not xPlayer then return false end
if IsWeapon(itemName) then
xPlayer.addWeapon(string.upper(itemName), count or 0)
else
xPlayer.addInventoryItem(itemName, count)
end
return true
elseif Config.Framework == 'QBCore' then
local Player = QBCore.Functions.GetPlayer(source)
if not Player then return false end
return Player.Functions.AddItem(itemName, count)
end
return false
end
function InventoryBridge.CanCarryItem(source, itemName, count)
if Config.Framework == 'ESX' then
local xPlayer = ESX.GetPlayerFromId(source)
if not xPlayer then return false end
if IsWeapon(itemName) then
if xPlayer.hasWeapon(string.upper(itemName)) then
return false
end
return true
end
local item = xPlayer.getInventoryItem(itemName)
if not item then return false end
if item.limit ~= -1 and (item.count + count) > item.limit then
return false
end
return xPlayer.canCarryItem(itemName, count)
elseif Config.Framework == 'QBCore' then
local Player = QBCore.Functions.GetPlayer(source)
if not Player then return false end
local totalWeight = QBCore.Player.GetTotalWeight(Player.PlayerData.items)
local itemInfo = QBCore.Shared.Items[itemName:lower()]
if itemInfo then
local itemWeight = itemInfo.weight * count
return (totalWeight + itemWeight) <= QBCore.Config.Player.MaxWeight
end
return true
end
return true
end
function InventoryBridge.RemoveItem(source, itemName, count)
if Config.Framework == 'ESX' then
local xPlayer = ESX.GetPlayerFromId(source)
if not xPlayer then return false end
if IsWeapon(itemName) then
xPlayer.removeWeapon(string.upper(itemName))
else
xPlayer.removeInventoryItem(itemName, count)
end
return true
elseif Config.Framework == 'QBCore' then
local Player = QBCore.Functions.GetPlayer(source)
if not Player then return false end
return Player.Functions.RemoveItem(itemName, count)
end
return false
end
function InventoryBridge.HasItem(source, itemName, count)
if Config.Framework == 'ESX' then
local xPlayer = ESX.GetPlayerFromId(source)
if not xPlayer then return false end
if IsWeapon(itemName) then
return xPlayer.hasWeapon(string.upper(itemName))
end
local item = xPlayer.getInventoryItem(itemName)
if not item then return false end
return item.count >= count
elseif Config.Framework == 'QBCore' then
local Player = QBCore.Functions.GetPlayer(source)
if not Player then return false end
local item = Player.Functions.GetItemByName(itemName)
if not item then return false end
return item.amount >= count
end
return false
end
function InventoryBridge.GetPlayerItems(source, itemList)
local items = {}
if Config.Framework == 'ESX' then
local xPlayer = ESX.GetPlayerFromId(source)
if not xPlayer then return items end
for _, itemName in ipairs(itemList) do
local item = xPlayer.getInventoryItem(itemName)
if item and item.count > 0 then
table.insert(items, {
name = itemName,
label = item.label,
count = item.count,
image = itemName .. '.png'
})
end
end
elseif Config.Framework == 'QBCore' then
local Player = QBCore.Functions.GetPlayer(source)
if not Player then return items end
for _, itemName in ipairs(itemList) do
local item = Player.Functions.GetItemByName(itemName)
if item and item.amount > 0 then
table.insert(items, {
name = itemName,
label = item.label or itemName,
count = item.amount,
image = itemName .. '.png'
})
end
end
end
return items
end