Ox Inventory Install
Step 1: Locate the OX Inventory Folder
Navigate to your FiveM server directory.
Open the
resources
folder.Find and open the ox_inventory resource folder.
Step 2: Open the data/items.lua
File
data/items.lua
FileInside the ox_inventory folder, go to:
ox_inventory/data/items.lua
Open
items.lua
using Notepad++, VS Code, or another code editor.
Step 3: Add Your New Item
Add a new entry for your item inside the
items.lua
file.Use the following format:
Items Config
['djs_bowl_calamari'] = { --checked
label = 'calamari bowl',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_bowl_calamari',
bone = 18905,
pos = vec3(0.12, 0.02, 0.03),
rot = vec3(-20.0, -1.0, -26.0) },
propTwo = { model = 'djs_prop_piececalamari',
bone = 57005,
pos = vec3(0.15, 0.03, -0.02),
rot = vec3(-20.0, -1.0, -24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_bowl_chickengnoccisoup'] = { --checked
label = 'bowl_chicken gnocci soup',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_bowl_chickengnoccisoup',
bone = 18905,
pos = vec3(0.13, 0.02, 0.01),
rot = vec3(-19.0, 0.0, 1.0) },
propTwo = { model = 'djs_spoon',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_bowl_fivecheeseziti'] = { -- to fix textures
label = 'five cheese ziti',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_bowl_fivecheeseziti',
bone = 18905,
pos = vec3(0.12, 0.02, 0.03),
rot = vec3(-20.0, -1.0, -26.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_bowl_friedmozzarella'] = { --checked
label = 'fried mozzarella',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_bowl_friedmozzarella',
bone = 18905,
pos = vec3(0.12, 0.02, 0.03),
rot = vec3(-20.0, -1.0, -26.0) },
propTwo = { model = 'djs_prop_piecefriedmozzarella',
bone = 57005,
pos = vec3(0.13, 0.04, -0.01),
rot = vec3(-195.0, 0.0, -47.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_bowl_housesalad'] = { --checked
label = 'house salad',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_bowl_housesalad',
bone = 18905,
pos = vec3(0.13, 0.04, 0.01),
rot = vec3(-20.0, 0.0, -1.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_bowl_minestrone'] = { --checked
label = 'minestrone',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_bowl_minestrone',
bone = 18905,
pos = vec3(0.12, 0.02, 0.03),
rot = vec3(-20.0, -1.0, -26.0) },
propTwo = { model = 'djs_spoon',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_bowl_pastafagioli'] = { --checked
label = 'pasta fagioli',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_bowl_pastafagioli',
bone = 18905,
pos = vec3(0.12, 0.02, 0.03),
rot = vec3(-20.0, -1.0, -26.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_bowl_shrimpalfredo'] = { -- checked
label = 'shrimp alfredo',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_bowl_shrimpalfredo',
bone = 18905,
pos = vec3(0.12, 0.02, 0.03),
rot = vec3(-20.0, -1.0, -26.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_bowl_shrimpscampi'] = { --checked
label = 'shrimp scampi',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_bowl_shrimpscampi',
bone = 18905,
pos = vec3(0.12, 0.02, 0.03),
rot = vec3(-20.0, -1.0, -26.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_bowl_toastedravioli'] = { -- checked
label = 'toasted ravioli',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_bowl_toastedravioli',
bone = 18905,
pos = vec3(0.12, 0.02, 0.03),
rot = vec3(-20.0, -1.0, -26.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_bowl_tomatosoup'] = { --checked
label = 'tomato soup',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_bowl_tomatosoup',
bone = 18905,
pos = vec3(0.12, 0.00, 0.01),
rot = vec3(-20.0, -1.0, -26.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_bowl_zuppatoscana'] = { --checked
label = 'zuppa toscana',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_bowl_zuppatoscana',
bone = 18905,
pos = vec3(0.12, 0.00, 0.01),
rot = vec3(-20.0, -1.0, -26.0) },
propTwo = { model = 'djs_spoon',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_cake_blacktiemouse'] = { --checked
label = 'black tie mousse',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_cake_blacktiemouse',
bone = 18905,
pos = vec3(0.12, 0.00, 0.02),
rot = vec3(-20.0, -1.0, -1.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_plate_cheeseravioli'] = { --checked
label = 'cheese ravioli',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_plate_cheeseravioli',
bone = 18905,
pos = vec3(0.12, 0.00, 0.02),
rot = vec3(-20.0, -1.0, -1.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_plate_chickenfettucine'] = { --checked
label = 'chicken fettucine',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_plate_chickenfettucine',
bone = 18905,
pos = vec3(0.12, 0.00, 0.02),
rot = vec3(-20.0, -1.0, -1.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_plate_chickenlinguini'] = { --checked
label = 'chicken linguini',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_plate_chickenlinguini',
bone = 18905,
pos = vec3(0.12, 0.00, 0.02),
rot = vec3(-20.0, -1.0, -1.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_plate_chickenmarsala'] = { --checked
label = 'chicken marsala',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_plate_chickenmarsala',
bone = 18905,
pos = vec3(0.12, 0.00, 0.02),
rot = vec3(-20.0, -1.0, -1.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_plate_chickenparm'] = { --checked
label = 'chicken parm',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_plate_chickenparm',
bone = 18905,
pos = vec3(0.12, 0.00, 0.02),
rot = vec3(-20.0, -1.0, -1.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_plate_choclasagna'] = { --checked
label = 'choc lasagna',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_plate_choclasagna',
bone = 18905,
pos = vec3(0.12, 0.00, 0.02),
rot = vec3(-20.0, -1.0, -1.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_plate_crablinguini'] = { --checked
label = 'crab linguini',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_plate_crablinguini',
bone = 18905,
pos = vec3(0.12, 0.00, 0.02),
rot = vec3(-20.0, -1.0, -1.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_plate_eggplantparm'] = { --checked
label = 'eggplant parm',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_plate_eggplantparm',
bone = 18905,
pos = vec3(0.12, 0.00, 0.02),
rot = vec3(-20.0, -1.0, -1.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_plate_fettuccine'] = { --checked
label = 'fettuccine',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_plate_fettuccine',
bone = 18905,
pos = vec3(0.12, 0.00, 0.02),
rot = vec3(-20.0, -1.0, -1.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_plate_lasagnaclassico'] = { --checked
label = 'lasagna classic',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_plate_lasagnaclassico',
bone = 18905,
pos = vec3(0.12, 0.00, 0.02),
rot = vec3(-20.0, -1.0, -1.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_plate_lobsterlinguini'] = { --checked
label = 'lobster linguini.',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_plate_lobsterlinguini',
bone = 18905,
pos = vec3(0.12, 0.00, 0.02),
rot = vec3(-20.0, -1.0, -1.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_plate_ratatouille'] = { --checked
label = 'ratatouille',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_plate_ratatouille',
bone = 18905,
pos = vec3(0.12, 0.00, 0.02),
rot = vec3(-20.0, -1.0, -1.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_plate_spaghettiandmeatballs'] = { --checked
label = 'spaghetti and meatballs',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_plate_spaghettiandmeatballs',
bone = 18905,
pos = vec3(0.12, 0.00, 0.02),
rot = vec3(-20.0, -1.0, -1.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
['djs_plate_tiramisu'] = { --checked
label = 'tiramisu',
stack = true,
close = false,
weight = 10,
client = {
status = { hunger = 2000000 },
anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' },
prop = { model = 'djs_plate_tiramisu',
bone = 18905,
pos = vec3(0.12, 0.00, 0.02),
rot = vec3(-20.0, -1.0, -1.0) },
propTwo = { model = 'djs_fork',
bone = 57005,
pos = vec3(0.14, 0.02, 0.01),
rot = vec3(-118.0, 192.0, 24.00) },
usetime = 17500,
cancel = true,
notification = 'You have satisfied your hunger'
},
},
Adjust label, weight, stack, animations, and props as needed.
Step 4: Add Item Image
OX Inventory allows you to display custom images for items in the inventory.
Where to Place Item Images
Navigate to:
ox_inventory/web/images/
Place your item image inside the
images/
folder.
Step 5: Save the File & Restart Server
Save the
items.lua
file.Restart your FiveM server using one of the following methods:
Console Command:
restart ox_inventory
Full Server Restart: Stop and start the server manually.
Step 6: Test the Item
Spawn the item using an admin command:
/giveitem yourID prop_name 1
(Replace
yourID
with your actual player ID andburger
with your item name.)Open OX Inventory (
F2
default key).Verify the item appears and functions correctly.
Step 6: Debugging & Adjustments
If the item does not show, check the server console for errors.
Verify spelling and commas in
items.lua
.Ensure
ox_inventory
is running properly.Look at the FiveM forums or Discord for troubleshooting help.
Last updated