# Installing the Resource

**Dependencies**\
fivem-freecam - [Download Here](https://github.com/Deltanic/fivem-freecam)\
ox\_lib - [Download Here](https://github.com/overextended/ox_lib)

**Building the resource**

The resource needs to be built for the UI to work as it is made in Svelte and Typescript. Follow these instructions to do so.

Prerequisites: `Node JS`

* Open the resource in VS Code
* In the terminal navigate to the `src` folder, this can be done using these commands. `cd web` `cd src`
* In this directory run these commands: `npm i` `npm install vite` `npm run build`
* If the process executes without errors, then you are finished.
* If you encounter any issues with this process, feel free to contact us VIA our discord<br>

**Territory Overlay Position**\
This resource has it's own overlay to show what territory you are in, etc.\
To set this up you need to add a player metadata variable\
\
**New QBCore**\
Go to `qb-core/config.lua` and add this to the `QBConfig.Player.PlayerDefaults`

```lua
territory_hud_position = "bottom-right",
```

\
**Old QBCore**\
Go to `qb-core/server/player.lua` and add this line

```lua
PlayerData.metadata['territory_hud_position'] = PlayerData.metadata['territory_hud_position'] or "bottom-right"
```

And that is it\
\
**Files**\
This Resource comes with 2 additional resources\
`veil-sprays` and `veil-gangshells`\
veil-gangshells is required if you are planning to use the Trap House System\
You WILL need to purchase the gang shells from [here](https://www.k4mb1maps.com/package/4672293)\
\
veil-sprays is required if you are planning to use the Spray System\
See [here](/veil-development-documentation/paid-resources/gang-system/creating-gang-sprays.md) for instructions\
\
**Items**\
**OX Inventory**\
Add these items to **ox\_inventory/data/items.lua**

```lua
['gang_laptop'] = {
	label = 'Gang Laptop',
	weight = 115,
	client = {
		image = "laptop_prog.png"
	},
},
['empty_plastic_bags'] = {
        label = "Empty Plastic Bags",
		description = "A box of empty plastic bags",
        weight = 115,
		stack = true,
        client = {
            image = "empty_plastic_bag.png"
        }
},
['scale'] = {
    label = "Scale",
		description = "A Scale used for weighing items",
    weight = 115,
		stack = true,
    client = {
        image = "scale.png"
    }
},
['shrink_wrap'] = {
    label = "Shrink Wrap",
		description = "A roll of shrink wrap",
    weight = 115,
		stack = true,
    client = {
        image = "shrinkwrap.png"
    }
},
['coca_plant'] = {
    label = "Coca Plant",
    weight = 115,
		stack = true,
    client = {
        image = "coca_plant.png"
    }
},
['baking_soda'] = {
    label = "Baking Soda",
		description = "A box of baking soda",
		stack = true,
    weight = 115,
    client = {
        image = "baking_soda.png"
    }
},
['bleach'] = {
    label = "Bleach",
		description = "A bottle of bleach",
		stack = true,
    weight = 115,
    client = {
        image = "bleach.png"
    }
},
['rat_poison'] = {
    label = "Rat Poison",
		description = "A bottle of rat poison",
		stack = true,
    weight = 115,
    client = {
        image = "rat_poison.png"
    }
},
['raw_cocaine'] = {
    label = "Raw Cocaine",
		stack = true,
    weight = 115,
    client = {
        image = "raw_cocaine.png"
    }
},
['processed_cocaine_high'] = {
    label = "Processed Coke [High]",
		description = "A bag of processed coke of high quality",
		stack = true,
    weight = 115,
    client = {
        image = "processed_coke_high.png"
    }
},
['processed_cocaine_med'] = {
    label = "Processed Coke [Medium]",
		description = "A bag of processed coke of medium quality",
		stack = true,
    weight = 115,
    client = {
        image = "processed_cocaine_med.png"
    }
},
['processed_coke_low'] = {
    label = "Processed Coke [Low]",
		description = "A bag of processed coke of low quality",
		stack = true,
    weight = 115,
    client = {
        image = "processed_coke_low.png"
    }
},
['bagged_coke_high'] = {
    label = "Bagged Coke [High]",
		description = "A bag of coke of high quality",
		stack = true,
    weight = 115,
    client = {
        image = "bagged_coke_high.png"
    }
},
['bagged_coke_med'] = {
    label = "Bagged Coke [Medium]",
		description = "A bag of coke of medium quality",
		stack = true,
    weight = 115,
    client = {
        image = "bagged_coke_med.png"
    }
},
['bagged_coke_low'] = {
    label = "Bagged Coke [Low]",
		description = "A bag of coke of low quality",
		stack = true,
    weight = 115,
    client = {
        image = "bagged_coke_low.png"
    }
},
['coke_brick_high'] = {
    label = "Coke Brick [High]",
		description = "A brick of coke of high quality",
		stack = true,
    weight = 115,
    client = {
        image = ""
    }
},
['coke_brick_med'] = {
    label = "Coke Brick [Medium]",
		description = "A brick of coke of medium quality",
		stack = true,
    weight = 115,
    client = {
        image = ""
    }
},
['coke_brick_low'] = {
    label = "Coke Brick [Low]",
		description = "A brick of coke of low quality",
		stack = true,
    weight = 115,
    client = {
        image = "coke_brick_low.png"
    }
},
['acetone'] = {
    label = "Acetone",
		description = "A bottle of acetone, used for making certain items",
		stack = true,
    weight = 115,
    client = {
        image = "acetone.png"
    }
},
['aluminium_oxide'] = {
    label = "Aluminium Oxide",
		description = "A box of aluminium oxide, used for making certain items",
		stack = true,
    weight = 115,
    client = {
        image = "aluminium_oxide.png"
    }
},
['mercury_fulninate'] = {
    label = "Mercury Fulninate",
		description = "A box of mercury fulninate, used for making certain items",
		stack = true,
    weight = 115,
    client = {
        image = "mercury_fulninate.png"
    }
},
['pseudoephedrine'] = {
    label = "Pseudoephedrine",
    description = "A bottle of Pseudoephedrine, used for making certain items",
    stack = true,
    weight = 115,
    client = {
        image = "pseudoephedrine.png"
    }
},
['tray'] = {
    label = "Tray",
		description = "A tray",
		stack = true,
    weight = 115,
    client = {
        image = "tray.png"
    }
},
['chemical_mix'] = {
    label = "Chemical Mix",
		description = "A chemical mix used for making certain items",
		stack = true,
    weight = 115,
    client = {
        image = "chemical_mix.png"
    }
},
['meth_crystals'] = {
    label = "Meth Crystals",
		description = "A bag of meth crystals",
		stack = true,
    weight = 115,
    client = {
        image = "meth_crystals.png"
    }
},
['meth_brick'] = {
    label = "Meth Brick",
		description = "A brick of meth",
		stack = true,
    client = {
        image = "meth_brick.png"
    }
},
['bagged_meth'] = {
    label = "Bagged Meth",
    description = "A bag of meth",
    stack = true,
    client = {
        image = "bagged_meth.png"
    }
},
```

**QB | PS | LJ | Quasar Inventories**\
Add these to qb-core/shared/items.lua

```lua
gang_spray_can = { name = 'gang_spray_can', label = 'Spray Can', weight = 5000, type = 'item', image = 'gang_spray_can.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A spray can for gangs...' },
gang_laptop = { name = "gang_laptop", label = "Gang Laptop", weight = 5000, type = "item", image = "laptop_prog.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A Gang Laptop..." },
empty_plastic_bags = { name = "empty_plastic_bags", label = "Empty Plastic Bags", weight = 115, type = "item", image = "empty_plastic_bag.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A box of empty plastic bags" },
scale = { name = "scale", label = "Scale", weight = 115, type = "item", image = "scale.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A Scale used for weighing items" },
shrink_wrap = { name = "shrink_wrap", label = "Shrink Wrap", weight = 115, type = "item", image = "shrinkwrap.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A roll of shrink wrap" },
coca_plant = { name = "coca_plant", label = "Coca Plant", weight = 115, type = "item", image = "coca_plant.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "" },
baking_soda = { name = "baking_soda", label = "Baking Soda", weight = 115, type = "item", image = "baking_soda.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A box of baking soda" },
bleach = { name = "bleach", label = "Bleach", weight = 115, type = "item", image = "bleach.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A bottle of bleach" },
rat_poison = { name = "rat_poison", label = "Rat Poison", weight = 115, type = "item", image = "rat_poison.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A bottle of rat poison" },
raw_cocaine = { name = "raw_cocaine", label = "Raw Cocaine", weight = 115, type = "item", image = "raw_cocaine.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "" },
processed_cocaine_high = { name = "processed_cocaine_high", label = "Processed Coke [High]", weight = 115, type = "item", image = "processed_coke_high.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A bag of processed coke of high quality" },
processed_cocaine_med = { name = "processed_cocaine_med", label = "Processed Coke [Medium]", weight = 115, type = "item", image = "processed_cocaine_med.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A bag of processed coke of medium quality" },
processed_coke_low = { name = "processed_coke_low", label = "Processed Coke [Low]", weight = 115, type = "item", image = "processed_coke_low.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A bag of processed coke of low quality" },
bagged_coke_high = { name = "bagged_coke_high", label = "Bagged Coke [High]", weight = 115, type = "item", image = "bagged_coke_high.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A bag of coke of high quality" },
bagged_coke_med = { name = "bagged_coke_med", label = "Bagged Coke [Medium]", weight = 115, type = "item", image = "bagged_coke_med.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A bag of coke of medium quality" },
bagged_coke_low = { name = "bagged_coke_low", label = "Bagged Coke [Low]", weight = 115, type = "item", image = "bagged_coke_low.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A bag of coke of low quality" },
coke_brick_high = { name = "coke_brick_high", label = "Coke Brick [High]", weight = 115, type = "item", image = "", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A brick of coke of high quality" },
coke_brick_med = { name = "coke_brick_med", label = "Coke Brick [Medium]", weight = 115, type = "item", image = "", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A brick of coke of medium quality" },
coke_brick_low = { name = "coke_brick_low", label = "Coke Brick [Low]", weight = 115, type = "item", image = "coke_brick_low.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A brick of coke of low quality" },
acetone = { name = "acetone", label = "Acetone", weight = 115, type = "item", image = "acetone.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A bottle of acetone, used for making certain items" },
aluminium_oxide = { name = "aluminium_oxide", label = "Aluminium Oxide", weight = 115, type = "item", image = "aluminium_oxide.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A box of aluminium oxide, used for making certain items" },
mercury_fulninate = { name = "mercury_fulninate", label = "Mercury Fulninate", weight = 115, type = "item", image = "mercury_fulninate.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A box of mercury fulninate, used for making certain items" },
pseudoephedrine = { name = "pseudoephedrine", label = "Pseudoephedrine", weight = 115, type = "item", image = "pseudoephedrine.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A bottle of Pseudoephedrine, used for making certain items" },
tray = { name = "tray", label = "Tray", weight = 115, type = "item", image = "tray.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A tray" },
chemical_mix = { name = "chemical_mix", label = "Chemical Mix", weight = 115, type = "item", image = "chemical_mix.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A chemical mix used for making certain items" },
meth_crystals = { name = "meth_crystals", label = "Meth Crystals", weight = 115, type = "item", image = "meth_crystals.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A bag of meth crystals" },
meth_brick = { name = "meth_brick", label = "Meth Brick", weight = 115, type = "item", image = "meth_brick.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A brick of meth" },
bagged_meth = { name = "bagged_meth", label = "Bagged Meth", weight = 115, type = "item", image = "bagged_meth.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A bag of meth" },
```


---

# 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://veil-development.gitbook.io/veil-development-documentation/paid-resources/gang-system/installing-the-resource.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.
