# 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 open the **Admin Panel > Items > Types** and change all the remove on use 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.av-scripts.com/laptop-pack-v3/business/installation/inventories/ox-inventory.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
