OX Inventory Installation
This guide covers adding all weapons, attachments, and items to ox_inventory for ARS VVS Guns V2.
Important: This guide only covers the inventory setup. You must also complete the framework installation first:
- ESX users: Follow the ESX Installation Steps 1-2 first
- QB-Core users: Follow the QBCore Installation Steps 1-5 first
Prerequisites
Section titled “Prerequisites”- ox_inventory installed and running
- The weapon asset pack (VVSGUNV2) installed
Step 1 - Weapons
Section titled “Step 1 - Weapons”Open ox_inventory/data/weapons.lua and add the following entries to the Weapons table:
['WEAPON_APCVVR'] = { label = 'APC Custom', weight = 1400, durability = 0.02, ammoname = 'ammo-9' }, ['WEAPON_AR15CVVR'] = { label = 'AR15C Custom', weight = 1400, durability = 0.02, ammoname = 'ammo-rifle' }, ['WEAPON_AR15TVVR'] = { label = 'AR15T Custom', weight = 1400, durability = 0.02, ammoname = 'ammo-rifle' }, ['WEAPON_ARP9VVR'] = { label = 'ARP9 Custom', weight = 1400, durability = 0.02, ammoname = 'ammo-rifle' }, ['WEAPON_ARPVVR'] = { label = 'ARP Custom', weight = 1400, durability = 0.02, ammoname = 'ammo-rifle' }, ['WEAPON_BRUENVVR'] = { label = 'Bruen Custom', weight = 1400, durability = 0.02, ammoname = 'ammo-rifle' }, ['WEAPON_DEAGLEVVR'] = { label = 'Deagle Custom', weight = 1100, durability = 0.2, ammoname = 'ammo-9' }, ['WEAPON_DRACOVVR'] = { label = 'Draco Custom', weight = 1400, durability = 0.02, ammoname = 'ammo-rifle' }, ['WEAPON_G17SVVR'] = { label = 'G17S Custom', weight = 1100, durability = 0.2, ammoname = 'ammo-9' }, ['WEAPON_G17VVR'] = { label = 'G17 Custom', weight = 1100, durability = 0.2, ammoname = 'ammo-9' }, ['WEAPON_G40VVR'] = { label = 'G40 Custom', weight = 1100, durability = 0.2, ammoname = 'ammo-9' }, ['WEAPON_G45VVR'] = { label = 'G45 Custom', weight = 1100, durability = 0.2, ammoname = 'ammo-9' }, ['WEAPON_MP7VVR'] = { label = 'MP7 Custom', weight = 1400, durability = 0.02, ammoname = 'ammo-9' }, ['WEAPON_SPAS12VVR'] = { label = 'SPAS12 Custom', weight = 1400, durability = 0.02, ammoname = 'ammo-shotgun' }, ['WEAPON_THOMPSONVVR'] = { label = 'Thompson Custom', weight = 1400, durability = 0.02, ammoname = 'ammo-rifle' }, ['WEAPON_SM17VVR'] = { label = 'SM17 Custom', weight = 1400, durability = 0.02, ammoname = 'ammo-pistol' }, ['WEAPON_M45VVR'] = { label = 'M45 Custom', weight = 1400, durability = 0.02, ammoname = 'ammo-pistol' }, ['WEAPON_FN5VVR'] = { label = 'FN5 Custom', weight = 1400, durability = 0.02, ammoname = 'ammo-pistol' }, ['WEAPON_P90VVR'] = { label = 'P90 Custom', weight = 1400, durability = 0.02, ammoname = 'ammo-pistol' }, ['WEAPON_AK102VVR'] = { label = 'AK102 Custom', weight = 1400, durability = 0.02, ammoname = 'ammo-rifle2' },
['WEAPON_BOWIEVVR'] = { label = 'Bowie Knife Custom', weight = 1000, durability = 0.03 }, ['WEAPON_BUTTERFLYVVR'] = { label = 'Butterfly Knife Custom', weight = 1000, durability = 0.03 }, ['WEAPON_DRAGONKATANAVVR'] = { label = 'Katana Dragon Custom', weight = 1200, durability = 0.03 }, ['WEAPON_KARAMBITVVR'] = { label = 'Karambit Custom', weight = 900, durability = 0.03 }, ['WEAPON_TACTICALAXEVVR'] = { label = 'Tactical Axe Custom', weight = 1600, durability = 0.03 },Step 2 - Components (Attachments)
Section titled “Step 2 - Components (Attachments)”In the same ox_inventory/data/weapons.lua file, add the following entries to the Components table:
['extendedmag1'] = { label = 'Extended Magazine I', type = 'magazine', weight = 1, client = { component = { `COMPONENT_APCVVR_MAG2`, `COMPONENT_G17VVR_MAG2`, `COMPONENT_G17SVVR_MAG2`, `COMPONENT_ARPVVR_MAG2`, `COMPONENT_AR15TVVR_MAG2`, `COMPONENT_AR15CVVR_MAG2`, `COMPONENT_G45VVR_MAG2`, `COMPONENT_G40VVR_MAG2`, `COMPONENT_DRACOVVR_MAG2`, `COMPONENT_DEAGLEVVR_MAG2`, `COMPONENT_ARP9VVR_MAG2`, `COMPONENT_MP7VVR_MAG2`, `COMPONENT_THOMPSONVVR_MAG2`, `COMPONENT_SM17VVR_MAG2`, `COMPONENT_M45VVR_MAG2`, `COMPONENT_FN5VVR_MAG2`, `COMPONENT_AK102VVR_MAG2`, }, usetime = 2500 } },
['extendedmag2'] = { label = 'Extended Magazine II', type = 'magazine', weight = 1, client = { component = { `COMPONENT_APCVVR_MAG3`, `COMPONENT_G17VVR_MAG3`, `COMPONENT_G17SVVR_MAG3`, `COMPONENT_ARPVVR_MAG3`, `COMPONENT_AR15TVVR_MAG3`, `COMPONENT_AR15CVVR_MAG3`, `COMPONENT_G45VVR_MAG3`, `COMPONENT_G40VVR_MAG3`, `COMPONENT_DRACOVVR_MAG3`, `COMPONENT_DEAGLEVVR_MAG3`, `COMPONENT_ARP9VVR_MAG3`, `COMPONENT_MP7VVR_MAG3`, `COMPONENT_THOMPSONVVR_MAG3`, `COMPONENT_SM17VVR_MAG3`, `COMPONENT_M45VVR_MAG3`, `COMPONENT_FN5VVR_MAG3`, `COMPONENT_AK102VVR_MAG3`, }, usetime = 2500 } },
['extendedmag3'] = { label = 'Extended Magazine III', type = 'magazine', weight = 1, client = { component = { `COMPONENT_APCVVR_MAG4`, `COMPONENT_G17VVR_MAG4`, `COMPONENT_G17SVVR_MAG4`, `COMPONENT_ARPVVR_MAG4`, `COMPONENT_AR15TVVR_MAG4`, `COMPONENT_AR15CVVR_MAG4`, `COMPONENT_G45VVR_MAG4`, `COMPONENT_G40VVR_MAG4`, `COMPONENT_DRACOVVR_MAG4`, `COMPONENT_DEAGLEVVR_MAG4`, `COMPONENT_ARP9VVR_MAG4`, `COMPONENT_SM17VVR_MAG4`, `COMPONENT_M45VVR_MAG4`, `COMPONENT_FN5VVR_MAG4`, }, usetime = 2500 } },
['grip'] = { label = 'Angled Foregrip', type = 'grip', weight = 1, client = { component = { `COMPONENT_AR15CVVR_GRIP`, `COMPONENT_AR15TVVR_GRIP`, `COMPONENT_APCVVR_GRIP`, }, usetime = 2500 } },
['laser'] = { label = 'Laser', type = 'flashlight', weight = 1, client = { component = { `COMPONENT_APCVVR_LASER`, `COMPONENT_G17VVR_LASER`, `COMPONENT_G17SVVR_LASER`, `COMPONENT_AR15TVVR_LASER`, `COMPONENT_AR15CVVR_LASER`, `COMPONENT_ARPVVR_LASER`, `COMPONENT_G45VVR_LASER`, `COMPONENT_G40VVR_LASER`, `COMPONENT_DRACOVVR_LASER`, `COMPONENT_DEAGLEVVR_LASER`, `COMPONENT_ARP9VVR_LASER`, `COMPONENT_MP7VVR_LASER`, `COMPONENT_BRUENVVR_LASER`, `COMPONENT_SPAS12VVR_LASER`, `COMPONENT_SM17VVR_LASER`, `COMPONENT_M45VVR_LASER`, `COMPONENT_FN5VVR_LASER`, `COMPONENT_P90VVR_LASER`, `COMPONENT_AK102VVR_LASER`, }, usetime = 2500 } },
['scope'] = { label = 'Small Scope', type = 'sight', weight = 1, client = { component = { `COMPONENT_APCVVR_SCOPE`, `COMPONENT_G17VVR_SCOPE`, `COMPONENT_G17SVVR_SCOPE`, `COMPONENT_AR15TVVR_SCOPE`, `COMPONENT_AR15CVVR_SCOPE`, `COMPONENT_ARPVVR_SCOPE`, `COMPONENT_G45VVR_SCOPE`, `COMPONENT_G40VVR_SCOPE`, `COMPONENT_DRACOVVR_SCOPE`, `COMPONENT_DEAGLEVVR_SCOPE`, `COMPONENT_ARP9VVR_SCOPE`, `COMPONENT_MP7VVR_SCOPE`, `COMPONENT_BRUENVVR_SCOPE`, `COMPONENT_SM17VVR_SCOPE`, `COMPONENT_M45VVR_SCOPE`, `COMPONENT_FN5VVR_SCOPE`, `COMPONENT_P90VVR_SCOPE`, `COMPONENT_AK102VVR_SCOPE`, }, usetime = 2500 } },
['suppressor'] = { label = 'Suppressor', type = 'muzzle', weight = 1, client = { component = { `COMPONENT_APCVVR_SUPP`, `COMPONENT_G17VVR_SUPP`, `COMPONENT_G17SVVR_SUPP`, `COMPONENT_AR15TVVR_SUPP`, `COMPONENT_AR15CVVR_SUPP`, `COMPONENT_ARPVVR_SUPP`, `COMPONENT_G45VVR_SUPP`, `COMPONENT_G40VVR_SUPP`, `COMPONENT_DRACOVVR_SUPP`, `COMPONENT_DEAGLEVVR_SUPP`, `COMPONENT_ARP9VVR_SUPP`, `COMPONENT_MP7VVR_SUPP`, `COMPONENT_THOMPSONVVR_SUPP`, `COMPONENT_BRUENVVR_SUPP`, `COMPONENT_SPAS12VVR_SUPP`, `COMPONENT_SM17VVR_SUPP`, `COMPONENT_M45VVR_SUPP`, `COMPONENT_FN5VVR_SUPP`, `COMPONENT_P90VVR_SUPP`, `COMPONENT_AK102VVR_SUPP`, }, usetime = 2500 } },
['goldcamo'] = { label = 'Gold Camo', type = 'skin', weight = 1, client = { component = { `COMPONENT_APCVVR_GOLD`, `COMPONENT_G17VVR_GOLD`, `COMPONENT_G17SVVR_GOLD`, `COMPONENT_ARPVVR_GOLD`, `COMPONENT_AR15TVVR_GOLD`, `COMPONENT_AR15CVVR_GOLD`, `COMPONENT_G45VVR_GOLD`, `COMPONENT_G40VVR_GOLD`, `COMPONENT_DRACOVVR_GOLD`, `COMPONENT_DEAGLEVVR_GOLD`, `COMPONENT_ARP9VVR_GOLD`, `COMPONENT_MP7VVR_GOLD`, `COMPONENT_THOMPSONVVR_GOLD`, `COMPONENT_BRUENVVR_GOLD`, `COMPONENT_SPAS12VVR_GOLD`, `COMPONENT_SM17VVR_GOLD`, `COMPONENT_M45VVR_GOLD`, `COMPONENT_FN5VVR_GOLD`, `COMPONENT_P90VVR_GOLD`, `COMPONENT_AK102VVR_GOLD`, `COMPONENT_BOWIEVVR_GOLD`, `COMPONENT_BUTTERFLYVVR_GOLD`, `COMPONENT_DRAGONKATANAVVR_GOLD`, `COMPONENT_KARAMBITVVR_GOLD`, `COMPONENT_TACTICALAXEVVR_GOLD`, }, usetime = 2500 } },
['diamondcamo'] = { label = 'Diamond Camo', type = 'skin', weight = 1, client = { component = { `COMPONENT_APCVVR_DIAMOND`, `COMPONENT_G17VVR_DIAMOND`, `COMPONENT_G17SVVR_DIAMOND`, `COMPONENT_ARPVVR_DIAMOND`, `COMPONENT_AR15TVVR_DIAMOND`, `COMPONENT_AR15CVVR_DIAMOND`, `COMPONENT_G45VVR_DIAMOND`, `COMPONENT_G40VVR_DIAMOND`, `COMPONENT_DRACOVVR_DIAMOND`, `COMPONENT_DEAGLEVVR_DIAMOND`, `COMPONENT_ARP9VVR_DIAMOND`, `COMPONENT_MP7VVR_DIAMOND`, `COMPONENT_THOMPSONVVR_DIAMOND`, `COMPONENT_BRUENVVR_DIAMOND`, `COMPONENT_SPAS12VVR_DIAMOND`, `COMPONENT_SM17VVR_DIAMOND`, `COMPONENT_M45VVR_DIAMOND`, `COMPONENT_FN5VVR_DIAMOND`, `COMPONENT_P90VVR_DIAMOND`, `COMPONENT_AK102VVR_DIAMOND`, }, usetime = 2500 } },Step 3 - Items
Section titled “Step 3 - Items”Open ox_inventory/data/items.lua and add the following entries:
['extendedmag1'] = { label = 'Extended Magazine I', weight = 100, stack = true, close = true, description = 'An extended magazine attachment.',},
['extendedmag2'] = { label = 'Extended Magazine II', weight = 100, stack = true, close = true, description = 'An upgraded magazine attachment.',},
['extendedmag3'] = { label = 'Extended Magazine III', weight = 100, stack = true, close = true, description = 'A high-capacity magazine attachment.',},
['scope'] = { label = 'Scope', weight = 100, stack = true, close = true, description = 'A scope attachment.',},
['suppressor'] = { label = 'Suppressor', weight = 100, stack = true, close = true, description = 'A suppressor attachment.',},
['laser'] = { label = 'Laser', weight = 100, stack = true, close = true, description = 'A laser attachment.',},
['grip'] = { label = 'Angled Foregrip', weight = 100, stack = true, close = true, description = 'A foregrip attachment.',},
['goldcamo'] = { label = 'Gold Camo', weight = 100, stack = true, close = true, description = 'A gold weapon camo skin.',},
['diamondcamo'] = { label = 'Diamond Camo', weight = 100, stack = true, close = true, description = 'A diamond weapon camo skin.',},
['partspistol'] = { label = 'Pistol Parts', weight = 100, stack = true, close = true, description = 'Parts used for crafting pistols.',},
['partsrifle'] = { label = 'Rifle Parts', weight = 100, stack = true, close = true, description = 'Parts used for crafting rifles.',},
['partsrifle2'] = { label = 'Advanced Rifle Parts', weight = 100, stack = true, close = true, description = 'Advanced rifle crafting parts.',},
['partsshotgun'] = { label = 'Shotgun Parts', weight = 100, stack = true, close = true, description = 'Parts used for crafting shotguns.',},
['partssmg'] = { label = 'SMG Parts', weight = 100, stack = true, close = true, description = 'Parts used for crafting SMGs.',},
['switch'] = { label = 'Weapon Switch', weight = 100, stack = true, close = true, description = 'A weapon conversion switch.',},
['weaponblack'] = { label = 'Weapon Black Finish', weight = 100, stack = true, close = true, description = 'A black weapon finish.',},
['diamond'] = { label = 'Diamond', weight = 100, stack = true, close = true, description = 'A valuable diamond.',},
['gold_bar'] = { label = 'Gold Bar', weight = 100, stack = true, close = true, description = 'A solid bar of gold.',},Step 4 - Images
Section titled “Step 4 - Images”Copy all PNG files from the INSTALL_ME/images/ folder to:
ox_inventory/web/images/Also make sure Config.Images in the ars_vvsguns_v2 config points to the correct path:
Config.Images = 'nui://ox_inventory/web/images/'Check the ox_inventory documentation for the latest framework compatibility options.
Troubleshooting
Section titled “Troubleshooting”- Weapons show as unknown items: The weapon name in
Weaponstable must match exactly (case-sensitive). Make sureWEAPON_APCVVRis not misspelled. - Attachments won’t attach: Each component entry maps attachment items to weapon component hashes. Make sure both the
WeaponsandComponentstables have been updated. - Ammo type not working: Verify
ammonamein the weapon entry matches a valid ammo item initems.lua(e.g.'ammo-9','ammo-rifle'). - Durability draining too fast: Adjust the
durabilityvalue in theWeaponstable (lower = slower drain). - Images not showing: Confirm PNG filenames match exactly (case-sensitive on Linux servers).
Note: This guide is written by a third party. If you find any incorrect or outdated information, please contact us on Discord so we can update it for you.