2025-03-24 14:09:19 -04:00
ItemsBuilder = ItemsBuilder or {}
ItemsBuilder = {}
2025-04-02 07:27:13 -04:00
---This will generate the items in the formats of qb_core, qb_core_old and ox_inventory. It will then build a lua file in the generateditems folder of the community_bridge.
---@param invoking string
---@param itemsTable table
2025-03-24 14:09:19 -04:00
ItemsBuilder.Generate = function ( invoking , itemsTable )
if not invoking or not itemsTable then return end
local resourcePath = GetResourcePath ( GetCurrentResourceName ()) .. "/generateditems/"
local function fileExists ( path )
local file = io.open ( path , "r" )
if file then
file : close ()
return true
else
return false
end
end
local qbOldFilePath = resourcePath .. invoking .. "_qb_core_old.lua"
local qbNewFilePath = resourcePath .. invoking .. "_qb_core_new.lua"
local oxInventoryFilePath = resourcePath .. invoking .. "_ox_inventory.lua"
if fileExists ( qbOldFilePath ) or fileExists ( qbNewFilePath ) or fileExists ( oxInventoryFilePath ) then return end
local qbOld = {}
for key , item in pairs ( itemsTable ) do
qbOld [ key ] = string.format (
"['%s'] = {label = '%s', weight = %d, stack = %s, close = %s, description = '%s'}" ,
key , item.label , item.weight , tostring ( item.stack ), tostring ( item.close ), item.description
)
end
local qbNew = {}
for key , item in pairs ( itemsTable ) do
qbNew [ key ] = string.format (
"%s = {label = '%s', weight = %d, stack = %s, close = %s, description = '%s'}" ,
key , item.label , item.weight , tostring ( item.stack ), tostring ( item.close ), item.description
)
end
local oxInventory = {}
for key , item in pairs ( itemsTable ) do
oxInventory [ key ] = {
label = item.label ,
weight = item.weight ,
stack = item.stack ,
close = item.close
}
end
local function writeInlineFile ( fileName , content , useBrackets )
local filePath = resourcePath .. fileName
local file = io.open ( filePath , "w" )
if file then
for key , value in pairs ( content ) do
if useBrackets then
-- For qb_core_old with brackets
file : write ( string.format ( "['%s'] = %s, \n " , key , value ))
else
-- For qb_core_new without brackets
file : write ( string.format ( "%s = %s, \n " , key , value ))
end
end
file : close ()
print ( "🌮 Items File Created: " .. filePath )
else
print ( "🌮 Something Broke for: " .. filePath )
end
end
local function writeSimplifiedFile ( fileName , content )
local filePath = resourcePath .. fileName
local file = io.open ( filePath , "w" )
if file then
for key , item in pairs ( content ) do
file : write ( string.format ( '["%s"] = { \n ' , key ))
for k , v in pairs ( item ) do
local formattedValue = type ( v ) == "string" and string.format ( '"%s"' , v ) or tostring ( v )
file : write ( string.format ( " %s = %s, \n " , k , formattedValue ))
end
file : write ( "}, \n " )
end
file : close ()
print ( "🌮 Items File Created: " .. filePath )
else
print ( "🌮 Something Broke for: " .. filePath )
end
end
writeInlineFile ( invoking .. "_" .. "qb_core_old.lua" , qbOld , true )
writeInlineFile ( invoking .. "_" .. "qb_core_new.lua" , qbNew , false )
writeSimplifiedFile ( invoking .. "_" .. "ox_inventory.lua" , oxInventory )
end
exports ( 'ItemsBuilder' , ItemsBuilder )
return ItemsBuilder