# How To Use

### Setup a new shop

* Everything needed is in `config.lua` and its essentially the same as qb-shop's config.
* `Limit` Enable this to add Stash features, This adds limits to items in stores and gets refilled at each restart
* `MaxSlots` Set this to your player inventory slot count, this is default "41"
* `BlackMarket` Enable to add blackmarket locations (defined at the bottom of this file)
* `Measurement` Custom Weight measurement, default "kg"
* `Gabz247` Enable if using gabz 247 stores
* `GabzAmmu` Enable if using gabz Ammunation stores
* `VendOverride` -- Enable this if you want all the vending machines to use this script
* `RandomAmount` -- Sets wether a stash should have a "random" amount of stock or full.

### Examples and Explanations

<div align="center"><img src="https://user-images.githubusercontent.com/1885302/161044087-c9eb8f8d-a4a5-4174-a048-73a610231abe.jpg" alt=""></div>

* Example of a `shop`

{% code fullWidth="true" %}
```lua
Locations = {
	["digitalden"] = { -- general name of the shops
		["label"] = "Digital Den", -- The label of the shop that will be seen by players
		["targetIcon"] = "fab fa-galactic-republic", -- Custom qb-target icon (default: "fas fa-cash-register")
		["targetLabel"] = "Open Digital Den", -- Custom qb-target label (default: "Browse Shop")
		--["requiredItem"] = "phone", specify if this shop requires a certain item to be accessed (for examle:  a huntinglicense)
		--["scenario"] = "PROP_HUMAN_SEAT_CHAIR_FOOD", -- Support for specifiying specific scenarios
		["type"] = "items", -- What kind of items are in the shop
		--["job"] = "mechanic", -- Supports locking the shops to jobs's only
		--["gang"] = "lostmc", -- Supports locking the shops to gang's only
		["killable"] = true, -- Makes it so you can kill the ped (maybe if you can rob that store)
		["model"] = { -- A list of possible PED models for the shop to spawn
			`sf_prop_sf_vend_drink_01a`, -- You can specfiy props and it will load these instead of a ped model
			`S_M_M_LifeInvad_01`,
			`IG_Ramp_Hipster`,
			`A_M_Y_Hipster_02`,
			`A_F_Y_Hipster_01`,
			`IG_LifeInvad_01`,
			`IG_LifeInvad_02`,
			`CS_LifeInvad_01`,
		},
		["logo"] = "https://static.wikia.nocookie.net/gtawiki/images/b/b5/DigitalDen-GTAV-Logo.png", -- customisable html link to a shop logo png
		["coords"] = { -- All the locations these shops will spawn
			vector4(391.76, -832.79, 29.29, 223.77), -- vector4 is a vector3 with the heading as the last nubmer
			vector4(1136.99, -473.13, 66.53, 254.85),
			vector4(-509.55, 278.63, 83.31, 176.65),
			vector4(-656.27, -854.73, 24.5, 359.39),
			vector4(-1088.29, -254.3, 37.76, 252.7),
		},
		["products"] = Config.Products["electronics"], -- The list of products will appear in the shop
		["blipsprite"] = 619, -- The blip that will appear on the map for this shop
		["blipcolour"] = 7, -- https://docs.fivem.net/docs/game-references/blips/
		["hideblip"] = false, -- set to true if you want this shop to be hidden on the map (good for illegal shops)
	},
}
```
{% endcode %}

* Example of a `product` table in `jim-shops/products.lua`

{% code fullWidth="true" %}
```lua
Products = {
    ["electronics"] = { -- The name of the table to be called by a shop
        { name = "phone", price = 850, amount = 50 }, -- spawn name of item, cost of item, amount in the shop
        { name = "radio", price = 250, amount = 50, requiredJob = { ["mechanic"] = 0 } }, -- Supports job + grade lock of specifc items
        { name = "screwdriverset", price = 350, amount = 50, requiredGang = { "lostmc" } },
        { name = "binoculars", price = 50, amount = 50, },
        { name = "fitbit", price = 400, amount = 150, },
    },
}
```
{% endcode %}

***

### Support for external shops

* You can easily change shops created in other scripts by swapping out the inventory event with my custom event
  * If you have a script that opens a shop, you can swap out the event `inventory:server:OpenInventory` for `jim-shops:ShopOpen` and it will open in my shop layout instead of the default inventory layout
  * All my scripts have an option to toggle this in the config
  * But it's very unlikely someone elses script won't
* For example:
* in `qb-ambulancejob > client > job.lua` there is the event

{% code fullWidth="true" %}
```lua
RegisterNetEvent('qb-ambulancejob:armory', function()
    if onDuty then
        TriggerServerEvent("inventory:server:OpenInventory", "shop", "hospital", Config.Items)
    end
end)
```
{% endcode %}

* Simply changing the event name from `inventory:server:OpenInventory` to `jim-shops:ShopOpen` will make it use my script instead

{% code fullWidth="true" %}
```lua
RegisterNetEvent('qb-ambulancejob:armory', function()
    if onDuty then
        TriggerServerEvent("jim-shops:ShopOpen", "shop", "hospital", Config.Items)
    end
end)
```
{% endcode %}

### Support for Selling Locations

In `Jim-Shops Version 3.0.04+` theres now support for Ped Seller Shops (eg. Pawn Shops)\
Inside `jim-shops/shopSell.lua` you can add a new location anywhere you want

#### Example of a shop:

{% code fullWidth="true" %}
```lua

["casinoSell"] = {					-- Table key, these need to be unique
	label = "Diamond Casino",			-- Shop name/label
	targetLabel = "Trade Chips",			-- target text
	targetIcon = "fab fa-galactic-republic",	-- target icon
	model = {
		"S_M_Y_CASINO_01",			-- Table of possible ped models, randomly picked at script start
	},
	coords = {
		vec4(950.37, 34.72, 71.87, 33.82),	-- table of coords they will spawn
	},
	products = SellingProducts["casinoSell"],	-- The product table to be used
	blipsprite = 617,				-- Blip sprite (https://docs.fivem.net/docs/game-references/blips)
	blipcolour = 0,					-- Blip colour (https://docs.fivem.net/docs/game-references/blips)
},
```
{% endcode %}

#### Example of the product table:

{% code fullWidth="true" %}
```lua
["casinoSell"] = {					-- This is the product table name, this needs to match
	Items = {
		casinochips = 1,			-- You can add multiple items in this list and set their price
	},
},
```
{% endcode %}

This creates a NPC in the casino that players can sell casino chips to for $1 a chip.
