-- ItemsBuilder = ItemsBuilder or {} -- ItemsBuilder = {} -- ---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 -- ItemsBuilder.Generate = function(invoking, outputPrefix, itemsTable, useQB) -- if not itemsTable then return end -- invoking = invoking or GetInvokingResource() or GetCurrentResourceName() or "community_bridge" -- local resourcePath = string.format("%s/%s/", GetResourcePath(invoking), outputPrefix or "generated_items") -- -- remove any doubles slashes after initial double slash -- -- resourcePath = resourcePath:gsub("//", "/") -- -- check if directory exists -- local folder = io.open(resourcePath, "r") -- if not folder then -- local createDirectoryCMD = string.format("if not exist \"%s\" mkdir \"%s\"", resourcePath, resourcePath) -- local returned, err = io.popen(createDirectoryCMD) -- if not returned then -- print("🌮 Failed to create directory: ", err) -- return -- end -- returned:close() -- print("🌮 Created Directory: ", resourcePath) -- else -- folder:close() -- end -- local qbOld = {} -- local qbNew = {} -- local oxInventory = {} -- if useQB then -- for key, item in pairs(itemsTable) do -- qbOld[key] = string.format( -- "['%s'] = {name = '%s', label = '%s', weight = %s, type = 'item', image = '%s', unique = %s, useable = %s, shouldClose = %s, description = '%s'},", -- key, key, item.label, item.weight, item.image or key .. 'png', item.unique, item.useable, item.shouldClose, item.description -- ) -- qbNew[key] = string.format( -- "['%s'] = {['name'] = '%s', ['label'] = '%s', ['weight'] = %s, ['type'] = 'item',['image'] = '%s', ['unique'] = %s, ['useable'] = %s, ['shouldClose'] = %s, ['description'] = '%s'},", -- key, key, item.label, item.weight, item.image or key .. 'png', item.unique, item.useable, item.shouldClose, item.description -- ) -- imagewithoutpng = item?.image and item.image:gsub(".png", "") -- shouldRenderImage = imagewithoutpng and imagewithoutpng ~= key -- oxInventory[key] = string.format( -- [[ -- ["%s"] = { -- label = "%s", -- description = "%s", -- weight = %s, -- stack = %s, -- close = %s, -- %s -- }, ]], -- key, item.label, item.description, item.weight, not item.unique, item.shouldClose, -- shouldRenderImage and item.image and string.format([[client = { -- image = '%s' -- }]], item.image) or "" -- ) -- end -- else -- for key, item in pairs(itemsTable) do -- -- ['peanut_butter'] = {['name'] = 'peanut_butter',['label'] = 'Peanut Butter',['weight'] = 1000,['type'] = 'item',['image'] = 'peanut_butter.png',['unique'] = false,['useable'] = false,['shouldClose'] = true,['combinable'] = nil,['description'] = 'A cooking ingredient'}, -- qbOld[key] = string.format( -- "['%s'] = {name = '%s', label = '%s', weight = %s, type = 'item', image = '%s', unique = %s, useable = %s, shouldClose = %s, description = '%s'},", -- key, key, item.label, item.weight, item?.client?.image or key .. 'png', not item.stack, true, item.close, item.description -- ) -- qbNew[key] = string.format( -- "['%s'] = {['name'] = '%s', ['label'] = '%s', ['weight'] = %s, ['type'] = 'item', ['image'] = '%s', ['unique'] = %s, ['useable'] = %s, ['shouldClose'] = %s, ['description'] = '%s'},", -- key, key, item.label, item.weight, item?.client?.image or key .. 'png', not item.stack, true, item.close, item.description -- ) -- imagewithoutpng = item?.client?.image and item.client.image:gsub(".png", "") -- shouldRenderImage = imagewithoutpng and imagewithoutpng ~= key -- oxInventory[key] = string.format( -- [[ -- ["%s"] = { -- label = "%s", -- description = "%s", -- weight = %s, -- stack = %s, -- close = %s, -- %s -- }, ]], -- key, item.label, item.description, item.weight, item.stack, item.close, -- shouldRenderImage and item?.client?.image and string.format( [[client = { -- image = '%s' -- }]], item.client.image) or "" -- ) -- end -- end -- local function write(fileName, content) -- local filePath = resourcePath .. fileName -- local file = io.open(filePath, "w") -- if file then -- for key, value in pairs(content) do -- file:write(string.format("%s\n", value)) -- end -- file:close() -- print("🌮 Items File Created: " .. filePath) -- else -- print("🌮 Something Broke for: " .. filePath) -- end -- end -- write(invoking.."(".."qb_core_old).lua", qbOld) -- write(invoking.."(".."qb_core_new).lua", qbNew) -- write(invoking.."(".."ox_inventory).lua", oxInventory) -- end -- exports('ItemsBuilder', ItemsBuilder) -- return ItemsBuilder