# OX Inventory

Go to **ox\_inventory/modules/items/server.lua** and paste the following code just before the last line `return Items`

```lua
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:

<figure><img src="https://1688068901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9bCwnajAqpi3Viykb5Wi%2Fuploads%2F93AGqMKlSvwxGoIgrzAU%2Fimage.png?alt=media&#x26;token=3c08f1b5-ce88-403d-8fa3-ec23f391c6dd" alt=""><figcaption></figcaption></figure>

### 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:
>
> ```lua
> 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.
>
> ```lua
> 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.

{% hint style="warning" %}
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%.
{% endhint %}
