OX Inventory
Go to ox_inventory/modules/items/server.lua and paste the following code just before the last line return Items
local consumeTypes = {
['drink'] = false,
['food'] = false,
['alcohol'] = false,
['joint'] = false,
}
local degradeTypes = {
['drink'] = false,
['food'] = false,
['alcohol'] = false,
['joint'] = false,
}
AddEventHandler('inventory:refresh',function()
local success, items = pcall(MySQL.query.await, 'SELECT * FROM av_items')
if success and items and next(items) then
local resource = GetCurrentResourceName()
local path = GetResourcePath(resource)
local dump = {}
for i = 1, #items do
local item = items[i]
if not ItemList[item.name] then
item.close = true
item.stack = not (consumeTypes[item.type] and consumeTypes[item.type] > 0)
item.description = item.description
item.weight = item.weight or 1000
item.consume = consumeTypes[item.type] or false
item.degrade = degradeTypes[item.type] or false
dump[i] = item
if item.image then
PerformHttpRequest(item.image, function (errorCode, resultData, resultHeaders)
if errorCode >= 200 and errorCode < 300 then
local image = assert(io.open(path..'/web/images/'..item.name..'.png', "wb"))
image:write(resultData)
image:flush()
image:close()
end
end)
end
end
end
if table.type(dump) ~= "empty" then
local file = {string.strtrim(LoadResourceFile(shared.resource, 'data/items.lua'))}
file[1] = file[1]:gsub('}$', '')
local itemFormat = [[
['%s'] = {
label = '%s',
weight = %s,
consume = %s,
degrade = %s,
stack = %s,
close = %s,
description = %s
},
]]
local fileSize = #file
for _, item in pairs(dump) do
local formatName = item.name:gsub("'", "\\'"):lower()
if not ItemList[formatName] then
fileSize += 1
file[fileSize] = (itemFormat):format(formatName, item.label:gsub("'", "\\'"), item.weight, item.consume, item.degrade, item.stack, item.close, item.description and ('"%s"'):format(item.description) or 'nil')
ItemList[formatName] = item
end
end
file[fileSize+1] = '}'
SaveResourceFile(shared.resource, 'data/items.lua', table.concat(file), -1)
end
end
end)
Should look something like this:

Item Consumption
ox_inventory supports item durability and has the ability to remove a % from this durability every time the item is used, when durability reaches 0 it removes the item.
If you wanna take advantage from this feature while using av_business, you need to modify the consumeTypes table from the previous code and define a default consume value for every item type you have in av_business, example:
local consumeTypes = { ['drink'] = 0.5, -- Removes 50% of durability per use ['food'] = 0.5, -- Removes 50% of durability per use ['alcohol'] = 1, -- Removes 100% of durability per use ['joint'] = 0.25, -- Removes 25% of durability per use }
Modify the values based on how much durability u wanna remove from item on use, 1 = 100% meaning item will be removed on first use / 0 will make the item permanent.
Item Degradation
To enable degradation for items generated by av_business, you need to define the expiration time for each item type inside the degradeTypes table.
Values are in minutes. If you want to use hours, you can multiply X * 60, where X is the number of hours the item will last.
local degradeTypes = { ['drink'] = 2 * 60, -- All drinks will last 6 hours ['food'] = 1 * 60, -- All food will last 1 hour ['alcohol'] = 30, -- Alcohol will last 30 minutes ['joint'] = 30, -- Joints will last 30 minutes }
Prevent duplicated item removal
Only do this step if you decided to use either Item Consumption or Item Degradation, if you are NOT using any of those features you can skip this.
To prevent this "bug" you need to go to
av_business/config/events.lua > Config.OnUseEvents
and change all the remove values to false.
Never use both tables for the same item type because ox_inventory will show a notification saying "X item doesn't have enough durability" on use, preventing players from using the item if durability is less than 50%.
Last updated