144 lines
4.5 KiB
Lua
144 lines
4.5 KiB
Lua
--- Order is important, the first one that is found will be used
|
|
--- ox_inventory, esx_addoninventory and qb-inventory must be last to avoid conflicts
|
|
local images = {
|
|
{ name = "tgiann-inventory", path = "https://cfx-nui-inventory_images/images/%s.png" },
|
|
{ name = "ak47_inventory", path = "https://cfx-nui-ak47_inventory/web/build/images/%s.png" },
|
|
{ name = "ak47_qb_inventory", path = "https://cfx-nui-ak47_qb_inventory/web/build/images/%s.png" },
|
|
{ name = "qs-inventory", path = "https://cfx-nui-qs-inventory/html/images/%s.png" },
|
|
{ name = "core_inventory", path = "https://cfx-nui-core_inventory/html/img/%s.png" },
|
|
{ name = "inventory", path = "https://cfx-nui-inventory/web/dist/assets/items/%s.png" },
|
|
--[[ Standard Inventorys ]]
|
|
{ name = "ox_inventory", path = "https://cfx-nui-ox_inventory/web/images/%s.png" },
|
|
{ name = "qb-inventory", path = "https://cfx-nui-qb-inventory/html/images/%s.png" },
|
|
{ name = "esx_addoninventory", path = "https://cfx-nui-esx_addoninventory/web/images/%s.png" },
|
|
}
|
|
|
|
if Config.inventory.auto_detect then
|
|
for _, inv in ipairs(images) do
|
|
if (GetResourceState(inv.name) == 'started') then
|
|
Config.inventory.name = inv.name
|
|
Config.inventory.images_url = inv.path
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
exports("getInventoryConfig", function()
|
|
return Config.inventory
|
|
end)
|
|
|
|
---@class SharedInventoryUtils
|
|
local inventory = {}
|
|
|
|
---@return {name:string, label:string, image:string}[]
|
|
function inventory.getItems()
|
|
if Config.inventory.name == "ox_inventory" then
|
|
local result = exports.ox_inventory:Items()
|
|
local list = {}
|
|
for _, v in pairs(result) do
|
|
if v.name then
|
|
list[#list + 1] = {
|
|
name = v.name,
|
|
label = v.label or v.name,
|
|
image = v.client?.image or v.image or nil
|
|
}
|
|
end
|
|
end
|
|
return list
|
|
end
|
|
|
|
if Config.inventory.name == "ak47_inventory" then
|
|
local result = exports.ak47_inventory:Items()
|
|
local list = {}
|
|
for _, v in pairs(result) do
|
|
list[#list + 1] = {
|
|
name = v.name,
|
|
label = v.label or v.name,
|
|
image = v.image
|
|
}
|
|
end
|
|
return list
|
|
end
|
|
|
|
if Config.inventory.name == "ak47_qb_inventory" then
|
|
local result = exports.ak47_qb_inventory:Items()
|
|
local list = {}
|
|
for _, v in pairs(result) do
|
|
list[#list + 1] = {
|
|
name = v.name,
|
|
label = v.label,
|
|
image = v.image
|
|
}
|
|
end
|
|
return list
|
|
end
|
|
|
|
if Config.inventory.name == "tgiann-inventory" then
|
|
local result = exports["tgiann-inventory"]:Items()
|
|
local list = {}
|
|
for _, v in pairs(result) do
|
|
list[#list + 1] = {
|
|
name = v.name,
|
|
label = v.label,
|
|
image = v.image
|
|
}
|
|
end
|
|
return list
|
|
end
|
|
|
|
if Framework.name == 'qb' or Framework.name == 'qbx' then
|
|
local items = Framework.object.Shared.Items or {}
|
|
local list = {}
|
|
for _, v in pairs(items) do
|
|
list[#list + 1] = {
|
|
name = v.name,
|
|
label = v.label,
|
|
image = v.image
|
|
}
|
|
end
|
|
return list
|
|
end
|
|
|
|
if Framework.name == 'esx' then
|
|
if IsDuplicityVersion() then
|
|
return CachedESXItems
|
|
else
|
|
local result = Luxu.callbackSync("esx:getItems")
|
|
return result or {}
|
|
end
|
|
end
|
|
|
|
return {}
|
|
end
|
|
|
|
if IsDuplicityVersion() then
|
|
if Framework.name == "esx" then
|
|
CachedESXItems = {}
|
|
Luxu.registerServerCallback("esx:getItems", function()
|
|
return CachedESXItems
|
|
end)
|
|
|
|
MySQL.ready(function()
|
|
if ESX and ESX.GetItems then
|
|
local rawItems = ESX.GetItems() -- Not available in all versions
|
|
|
|
local list = {}
|
|
for name, v in pairs(rawItems) do
|
|
list[#list + 1] = {
|
|
name = v.name or name,
|
|
label = v.label
|
|
}
|
|
end
|
|
CachedESXItems = list
|
|
else
|
|
local result = MySQL.query.await("SELECT name, label FROM items")
|
|
if result then
|
|
CachedESXItems = result
|
|
end
|
|
end
|
|
end)
|
|
end
|
|
end
|
|
|
|
return inventory
|