🎒Ox Inventory Install

Step 1: Locate the OX Inventory Folder

  1. Navigate to your FiveM server directory.

  2. Open the resources folder.

  3. Find and open the ox_inventory resource folder.


Step 2: Open the data/items.lua File

  1. Inside the ox_inventory folder, go to:

    ox_inventory/data/items.lua
  2. 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_box_wings'] = { --checked
		label = 'Box Wings',
		weight = 50,
		client = {
			status = { hunger = 150000 },
			anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' }, 
			prop = { 
				model = 'djs_box_wings', 
				bone = 18905, -- R ForeArm 
				pos = vec3(0.13, 0.02, 0.02), 
				rot = vec3(0.0, 0.0, 0.0) 
			},
	
			propTwo = {
				model = 'djs_fork',
				bone = 58868,
				pos = vec3(0.046000, -0.003000, 0.000000),
				rot = vec3(2.850003, 0.000000, 112.500748),
			},
			
			usetime = 17500,
			cancel = true,
			notification = 'You have satistfied your hunger'
		},
	},  
	['djs_chips_nacho'] = { --checked
		label = 'Chips Nacho',
		weight = 50,
		client = {
			status = { hunger = 400000 },
			anim = { dict = 'anim@djs@food@chips', clip = 'djs_food_chips_bite_loop' },
            prop = { model = `djs_chips_nacho`, bone = 58868, pos = vec3(0.062000, 0.062000, 0.000000), rot = vec3(13.649989, 0.000000, 0.000000) },
			usetime = 2500,
			cancel = true,
		},
	}, 
	
	['djs_chips_original'] = { --checked
		label = 'Chips Original',
		weight = 50,
		client = {
			status = { hunger = 400000 },
			anim = { dict = 'anim@djs@food@chips', clip = 'djs_food_chips_bite_loop' },
            prop = { model = `djs_chips_original`, bone = 58868, pos = vec3(0.062000, 0.062000, 0.000000), rot = vec3(13.649989, 0.000000, 0.000000) },
			usetime = 2500,
			cancel = true,
		},
	}, 
	['djs_coffeecup_blackwhite'] = { --checked
		label = 'Coffee Cup Black White',
		weight = 500,
		client = {
			status = { thirst = 400000 },
			anim = { dict = 'anim@djs@drink@coffee', clip = 'djs_drink_coffee_sip_long' },
			prop = { model = `djs_coffeecup_blackwhite`, bone = 57005, pos = vec3(0.112000, 0.078000, 0.000000), rot = vec3(-47.250099, 0.000000, -21.749966) },
			usetime = 2500,
		},
	},
	['djs_coffeecup_brownwhite'] = { --checked
		label = 'Coffee Cup Brown White',
		weight = 500,
		client = {
			status = { thirst = 400000 },
			anim = { dict = 'anim@djs@drink@coffee', clip = 'djs_drink_coffee_sip_long' },
			prop = { model = `djs_coffeecup_brownwhite`, bone = 57005, pos = vec3(0.112000, 0.078000, 0.000000), rot = vec3(-47.250099, 0.000000, -21.749966) },
			usetime = 2500,
		},
	},
	['djs_cup_noodles'] = { --checked
		label = 'Cup Noodles',
		weight = 50,
		client = {
			status = { hunger = 400000 },
			anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' }, 
			prop = { 
				model = 'djs_cup_noodles', 
				bone = 26612,
				pos = vec3(0.044000, -0.112000, 0.000000), 
				rot = vec3(85.650490, 0.000000, 14.849986) 
			},
	
			propTwo = {
				model = 'djs_fork',
				bone = 58868,
				pos = vec3(0.046000, -0.003000, 0.000000),
				rot = vec3(2.850003, 0.000000, 112.500748),
			},
			
			usetime = 17500,
			cancel = true,
			notification = 'You have satistfied your hunger'
		},
	}, 
	['djs_cup_rednoodles'] = {
		label = 'Cup Red Noodles',
		weight = 50,
		client = {
			status = { hunger = 400000 },
			anim = { dict = 'anim@djs@food@plated', clip = 'djs_food_plate_bite_loop' }, 
			prop = { 
				model = 'djs_cup_rednoodles', 
				bone = 26612,
				pos = vec3(0.044000, -0.112000, 0.000000), 
				rot = vec3(85.650490, 0.000000, 14.849986) 
			},
	
			propTwo = {
				model = 'djs_fork',
				bone = 58868,
				pos = vec3(0.046000, -0.003000, 0.000000),
				rot = vec3(2.850003, 0.000000, 112.500748),
			},
			
			usetime = 17500,
			cancel = true,
			notification = 'You have satistfied your hunger'
		},
	}, 
	['djs_glass_lemonade'] = { --checked
		label = 'Glass Lemonade',
		weight = 500,
		client = {
			status = { thirst = 400000 },
			anim = { dict = 'mp_player_intdrink', clip = 'loop_bottle' },
			prop = { model = `djs_glass_lemonade`, pos = vec3(0.02, 0.01, 0.02), rot = vec3(5.0, 5.0, -180.5) },
			usetime = 2500,
		},
	},
	['djs_glass_ogalmondmilk'] = { --checked
		label = 'Glass Galmond Milk',
		weight = 500,
		client = {
			status = { thirst = 400000 },
			anim = { dict = 'mp_player_intdrink', clip = 'loop_bottle' },
			prop = { model = `djs_glass_ogalmondmilk`, pos = vec3(0.02, 0.01, 0.02), rot = vec3(5.0, 5.0, -180.5) },
			usetime = 2500,
		},
	},
	['djs_glass_orangejuice'] = { --checked
		label = 'Glass Orange Juice',
		weight = 500,
		client = {
			status = { thirst = 400000 },
			anim = { dict = 'mp_player_intdrink', clip = 'loop_bottle' },
			prop = { model = `djs_glass_orangejuice`, pos = vec3(0.02, 0.01, 0.02), rot = vec3(5.0, 5.0, -180.5) },
			usetime = 2500,
		},
	},
	['djs_glass_strawberryjuice'] = { --checked
		label = 'Glass Strawberry Juice',
		weight = 500,
		client = {
			status = { thirst = 400000 },
			anim = { dict = 'mp_player_intdrink', clip = 'loop_bottle' },
			prop = { model = `djs_glass_strawberryjuice`, pos = vec3(0.02, 0.01, 0.02), rot = vec3(5.0, 5.0, -180.5) },
			usetime = 2500,
		},
	},
	['djs_glass_usvanillaalmondmilk'] = { --checked
		label = 'Glass Vanilla Almond Milk',
		weight = 500,
		client = {
			status = { thirst = 400000 },
			anim = { dict = 'mp_player_intdrink', clip = 'loop_bottle' },
			prop = { model = `djs_glass_usvanillaalmondmilk`, pos = vec3(0.02, 0.01, 0.02), rot = vec3(5.0, 5.0, -180.5) },
			usetime = 2500,
		},
	},
	['djs_ham_sandwich'] = { --checked
		label = 'Ham Sandwich',
		weight = 50,
		client = {
			status = { hunger = 400000 },
			anim = { dict = 'mp_player_inteat@burger', clip = 'mp_player_int_eat_burger' },
			prop = { model = `djs_ham_sandwich`, bone = 18905, pos = vec3(0.115000, 0.079000, 0.000000), rot = vec3(-193.442108, 0.000000, 4.080024) },
			usetime = 2500,
		},
	},
	['djs_hotdog_mustard'] = { --checked
		label = 'Hotdog Mustard',
		weight = 50,
		client = {
			status = { hunger = 400000 },
			anim = { dict = 'mp_player_inteat@burger', clip = 'mp_player_int_eat_burger' },
			prop = { model = `djs_hotdog_mustard`, bone = 18905, pos = vec3(0.142000, 0.107000, 0.000000), rot = vec3(154.739975, 0.000000, 83.340034) },
			usetime = 2500,
		},
	},
	['djs_icecreambar_chocolate'] = { --checked
		label = 'Ice Cream Chocolate Bar',
		weight = 50,
		client = {
			status = { hunger = 400000 },
			anim = { dict = 'anim@djs@food@cone', clip = 'djs_food_cone_lick_loop' },
			prop = { model = `djs_icecreambar_chocolate`, bone = 57005, pos = vec3(0.118000, 0.085000, 0.000000), rot = vec3(-60.720169, 0.000000, -32.879974) },
			usetime = 2500,
		},
	},
	['djs_icecreamcone_strawberry'] = { --checked
		label = 'Icecream Cone Strawberry',
		weight = 50,
		client = {
			status = { hunger = 400000 },
			anim = { dict = 'anim@djs@food@cone', clip = 'djs_food_cone_lick_loop' },
			prop = { model = `djs_icecreamcone_strawberry`, bone = 57005, pos = vec3(0.118000, 0.085000, 0.000000), rot = vec3(-60.720169, 0.000000, -32.879974) },
			usetime = 2500,
		},
	},
	['djs_icecreamcone_vanilla'] = { --checked
		label = 'Icecream Cone Vanilla',
		weight = 50,
		client = {
			status = { hunger = 400000 },
			anim = { dict = 'anim@djs@food@cone', clip = 'djs_food_cone_lick_loop' },
			prop = { model = `djs_icecreamcone_vanilla`, bone = 57005, pos = vec3(0.118000, 0.085000, 0.000000), rot = vec3(-60.720169, 0.000000, -32.879974) },
			usetime = 2500,
		},
	},
	['djs_juice_juicy'] = { --checked
		label = 'Juice Juicy',
		weight = 500,
		client = {
			status = { thirst = 400000 },
			anim = { dict = 'mp_player_intdrink', clip = 'loop_bottle' },
			prop = { model = `djs_juice_juicy`, pos = vec3(0.02, 0.01, 0.02), rot = vec3(5.0, 5.0, -180.5) },
			usetime = 2500,
		},
	},
	['djs_largesoda'] = { --checked
		label = 'Large Soda',
		weight = 500,
		client = {
			status = { thirst = 400000 },
			anim = { dict = 'mp_player_intdrink', clip = 'loop_bottle' },
			prop = { model = `djs_largesoda`, pos = vec3(0.02, 0.01, 0.02), rot = vec3(5.0, 5.0, -180.5) },
			usetime = 2500,
		},
	},
	['djs_poptart_carmelcookie'] = { --checked
		label = 'Poptart Carmel Cookie',
		weight = 50,
		client = {
			status = { hunger = 400000 },
			anim = { dict = 'mp_player_inteat@burger', clip = 'mp_player_int_eat_burger' },
			prop = { model = `djs_poptart_carmelcookie`, bone = 18905, pos = vec3(0.137000, 0.068000, 0.000000), rot = vec3(-23.999981, 0.000000, 0.480000) },
			usetime = 2500,
		},
	},
	['djs_poptart_cottoncandy'] = { --checked
		label = 'Poptart Cotton Candy',
		weight = 50,
		client = {
			status = { hunger = 400000 },
			anim = { dict = 'mp_player_inteat@burger', clip = 'mp_player_int_eat_burger' },
			prop = { model = `djs_poptart_cottoncandy`, bone = 18905, pos = vec3(0.137000, 0.068000, 0.000000), rot = vec3(-23.999981, 0.000000, 0.480000) },
			usetime = 2500,
		},
	},
	['djs_poptart_redvelvet'] = { --checked
		label = 'Poptart Redvelvet',
		weight = 50,
		client = {
			status = { hunger = 400000 },
			anim = { dict = 'mp_player_inteat@burger', clip = 'mp_player_int_eat_burger' },
			prop = { model = `djs_poptart_redvelvet`, bone = 18905, pos = vec3(0.137000, 0.068000, 0.000000), rot = vec3(-23.999981, 0.000000, 0.480000) },
			usetime = 2500,
		},
	},
	['djs_poptart_sprinkles'] = { --checked
		label = 'Poptart Sprinkles',
		weight = 50,
		client = {
			status = { hunger = 400000 },
			anim = { dict = 'mp_player_inteat@burger', clip = 'mp_player_int_eat_burger' },
			prop = { model = `djs_poptart_sprinkles`, bone = 18905, pos = vec3(0.137000, 0.068000, 0.000000), rot = vec3(-23.999981, 0.000000, 0.480000) },
			usetime = 2500,
		},
	},
	['djs_poptart_strawberry'] = { --checked
		label = 'Poptart Strawberry',
		weight = 50,
		client = {
			status = { hunger = 400000 },
			anim = { dict = 'mp_player_inteat@burger', clip = 'mp_player_int_eat_burger' },
			prop = { model = `djs_poptart_strawberry`, bone = 18905, pos = vec3(0.137000, 0.068000, 0.000000), rot = vec3(-23.999981, 0.000000, 0.480000) },
			usetime = 2500,
		},
	},
	['djs_poptart_strawberrymilkshake'] = { --checked
		label = 'Poptart Strawberry Milkshake',
		weight = 50,
		client = {
			status = { hunger = 400000 },
			anim = { dict = 'mp_player_inteat@burger', clip = 'mp_player_int_eat_burger' },
			prop = { model = `djs_poptart_strawberrymilkshake`, bone = 18905, pos = vec3(0.137000, 0.068000, 0.000000), rot = vec3(-23.999981, 0.000000, 0.480000) },
			usetime = 2500,
		},
	},
	['djs_smallsoda'] = { --checked
		label = 'Small Soda',
		weight = 500,
		client = {
			status = { thirst = 400000 },
			anim = { dict = 'mp_player_intdrink', clip = 'loop_bottle' },
			prop = { model = `djs_smallsoda`, pos = vec3(0.02, 0.01, 0.02), rot = vec3(5.0, 5.0, -180.5) },
			usetime = 2500,
		},
	},
	['djs_snackwrap_chicken'] = { --checked
		label = 'Snackwrap Chicken',
		weight = 50,
		client = {
			status = { hunger = 400000 },
			anim = { dict = 'mp_player_inteat@burger', clip = 'mp_player_int_eat_burger' },
			prop = { model = `djs_snackwrap_chicken`, bone = 18905, pos = vec3(0.153000, 0.098000, 0.000000), rot = vec3(-36.480003, 0.000000, 71.040131) },
			usetime = 2500,
		},
	},
	['djs_sodaice'] = {
		label = 'Soda Ice',
		weight = 500,
		client = {
			status = { thirst = 400000 },
			anim = { dict = 'mp_player_intdrink', clip = 'loop_bottle' },
			prop = { model = `djs_sodaice`, pos = vec3(0.02, 0.01, 0.02), rot = vec3(5.0, 5.0, -180.5) },
			usetime = 2500,
		},
	},
	['djs_sodajuicy'] = { --checked
		label = 'Soda Juicy',
		weight = 500,
		client = {
			status = { thirst = 400000 },
			anim = { dict = 'mp_player_intdrink', clip = 'loop_bottle' },
			prop = { model = `djs_sodajuicy`, pos = vec3(0.02, 0.01, 0.02), rot = vec3(5.0, 5.0, -180.5) },
			usetime = 2500,
		},
	},
	['djs_turkey_halfsandwich'] = { --checked
		label = 'Turkey Half Sandwich',
		weight = 50,
		client = {
			status = { hunger = 400000 },
			anim = { dict = 'mp_player_inteat@burger', clip = 'mp_player_int_eat_burger' },
			prop = { model = `djs_turkey_halfsandwich`, bone = 18905, pos = vec3(0.171000, 0.064000, 0.000000), rot = vec3(0.000000, 0.000000, -219.601715) },
			usetime = 2500,
		},
	},
	['djs_vape_bluepink'] = { -- social item that causes slight damage to health
        label = 'Vape WaterMelon',
        weight = 115,
        description = "",
        consume = 0,
        degrade = 60,
        client = {
            anim = { dict = 'amb@world_human_smoking@male@male_b@base', clip = 'base', flag = 49 },
            prop = { model = `djs_vape_bluepink`, 
            pos = vec3(0.080000, 0.037000, 0.000000), 
            rot = vec3(0.000000, 0.000000, 0.000000), bone = 58868 },

            disable = { move = false, car = false, combat = false },
            usetime = 7000,
        }
    },
	['djs_vape_orangeblue'] = { -- social item that causes slight damage to health
        label = 'Vape Pineapple Blueberry',
        weight = 115,
        description = "",
        consume = 0,
        degrade = 60,
        client = {
            anim = { dict = 'amb@world_human_smoking@male@male_b@base', clip = 'base', flag = 49 },
            prop = { model = `djs_vape_orangeblue`, 
            pos = vec3(0.080000, 0.037000, 0.000000), 
            rot = vec3(0.000000, 0.000000, 0.000000), bone = 58868 },

            disable = { move = false, car = false, combat = false },
            usetime = 7000,
        }
    },
	['djs_vape_orangepurple'] = { -- social item that causes slight damage to health
        label = 'Vape Grape Sunset',
        weight = 115,
        description = "",
        consume = 0,
        degrade = 60,
        client = {
            anim = { dict = 'amb@world_human_smoking@male@male_b@base', clip = 'base', flag = 49 },
            prop = { model = `djs_vape_orangepurple`, 
            pos = vec3(0.080000, 0.037000, 0.000000), 
            rot = vec3(0.000000, 0.000000, 0.000000), bone = 58868 },

            disable = { move = false, car = false, combat = false },
            usetime = 7000,
        }
    },
	['djs_vape_pink'] = { -- social item that causes slight damage to health
        label = 'Vape Pink Lemonade',
        weight = 115,
        description = "",
        consume = 0,
        degrade = 60,
        client = {
            anim = { dict = 'amb@world_human_smoking@male@male_b@base', clip = 'base', flag = 49 },
            prop = { model = `djs_vape_pink`, 
            pos = vec3(0.080000, 0.037000, 0.000000), 
            rot = vec3(0.000000, 0.000000, 0.000000), bone = 58868 },

            disable = { move = false, car = false, combat = false },
            usetime = 7000,
        }
    },
	['djs_vape_pinkpurple'] = { -- social item that causes slight damage to health
        label = 'Vape Pink Lavender',
        weight = 115,
        description = "",
        consume = 0,
        degrade = 60,
        client = {
            anim = { dict = 'amb@world_human_smoking@male@male_b@base', clip = 'base', flag = 49 },
            prop = { model = `djs_vape_pinkpurple`, 
            pos = vec3(0.080000, 0.037000, 0.000000), 
            rot = vec3(0.000000, 0.000000, 0.000000), bone = 58868 },

            disable = { move = false, car = false, combat = false },
            usetime = 7000,
        }
    },
	['djs_vape_redblue'] = { -- social item that causes slight damage to health
        label = 'Vape Strawberry Ice',
        weight = 115,
        description = "",
        consume = 0,
        degrade = 60,
        client = {
            anim = { dict = 'amb@world_human_smoking@male@male_b@base', clip = 'base', flag = 49 },
            prop = { model = `djs_vape_redblue`, 
            pos = vec3(0.080000, 0.037000, 0.000000), 
            rot = vec3(0.000000, 0.000000, 0.000000), bone = 58868 },

            disable = { move = false, car = false, combat = false },
            usetime = 7000,
        }
    },
	['djs_vape_redpink'] = { -- social item that causes slight damage to health
        label = 'Vape Strawberry Grapefruit',
        weight = 115,
        description = "",
        consume = 0,
        degrade = 60,
        client = {
            anim = { dict = 'amb@world_human_smoking@male@male_b@base', clip = 'base', flag = 49 },
            prop = { model = `djs_vape_redblue`, 
            pos = vec3(0.080000, 0.037000, 0.000000), 
            rot = vec3(0.000000, 0.000000, 0.000000), bone = 58868 },

            disable = { move = false, car = false, combat = false },
            usetime = 7000,
        }
    },
	['djs_vape_yellowred'] = { -- social item that causes slight damage to health
        label = 'Vape Strawberry Pineapple Watermelon',
        weight = 115,
        description = "",
        consume = 0,
        degrade = 60,
        client = {
            anim = { dict = 'amb@world_human_smoking@male@male_b@base', clip = 'base', flag = 49 },
            prop = { model = `djs_vape_redblue`, 
            pos = vec3(0.080000, 0.037000, 0.000000), 
            rot = vec3(0.000000, 0.000000, 0.000000), bone = 58868 },

            disable = { move = false, car = false, combat = false },
            usetime = 7000,
        }
    },
  • Adjust label, weight, stack, animations, and props as needed.


Step 4: Add Your Vapes As Usable Items

  • Add a new entry for your item inside the ox_inventory/modules/items/client.lua.

  • Use the following format:

client.lua

make sure to install before "exports('Items', function(item) return getItem(nil, item) end)"

Item('djs_vape_bluepink', function(data, slot) -- 
    ox_inventory:useItem(data, function(data)
        if data then
            lib.notify({ description = 'You feel relaxed...' }) -- Updated message
        end
    end)
end)

Item('djs_vape_orangeblue', function(data, slot) -- 
    ox_inventory:useItem(data, function(data)
        if data then
            lib.notify({ description = 'You feel relaxed...' }) -- Updated message
        end
    end)
end)

Item('djs_vape_orangepurple', function(data, slot) 
    ox_inventory:useItem(data, function(data)
        if data then
            lib.notify({ description = 'You feel relaxed...' }) 
        end
    end)
end)


Item('djs_vape_pink', function(data, slot) -- 
    ox_inventory:useItem(data, function(data)
        if data then
            lib.notify({ description = 'You feel relaxed...' }) 
        end
    end)
end)

Item('djs_vape_pinkpurple', function(data, slot) -- 
    ox_inventory:useItem(data, function(data)
        if data then
            lib.notify({ description = 'You feel relaxed...' }) 
        end
    end)
end)

Item('djs_vape_redblue', function(data, slot) -- 
    ox_inventory:useItem(data, function(data)
        if data then
            lib.notify({ description = 'You feel relaxed...' }) 
        end
    end)
end)

Item('djs_vape_redpink', function(data, slot) -- 
    ox_inventory:useItem(data, function(data)
        if data then
            lib.notify({ description = 'You feel relaxed...' }) 
        end
    end)
end)

Item('djs_vape_yellowred', function(data, slot) -- 
    ox_inventory:useItem(data, function(data)
        if data then
            lib.notify({ description = 'You feel relaxed...' }) 
        end
    end)
end)

Item('djs_vape_yellowred', function(data, slot) -- 
    ox_inventory:useItem(data, function(data)
        if data then
            lib.notify({ description = 'You feel relaxed...' }) 
        end
    end)
end)

Step 5: Add Item Image

OX Inventory allows you to display custom images for items in the inventory.

Where to Place Item Images

  1. Navigate to:

    ox_inventory/web/images/
  2. Place your item image inside the images/ folder.


Step 6: Save the File & Restart Server

  1. Save the items.lua file.

  2. 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 7: Test the Item

  1. Spawn the item using an admin command:

    /giveitem yourID prop_name 1

    (Replace yourID with your actual player ID and burger with your item name.)

  2. Open OX Inventory (F2 default key).

  3. Verify the item appears and functions correctly.


Step 8: 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