# Interaction Locations



{% hint style="success" %}
Adding More **`INTERACTION LOCATIONS`**
{% endhint %}

* Adding more **`interaction locations`** is very simple via the **`config.lua`** file
* Some target events require args being passed usually the **`ShopName`** and the **`StorageType`** (for stash targets only)
* To add another target zone simply add your **`ShopName`** as they **`key`** and then customize the **`values`** to suit your server needs in **`Config.InteractionLocations`**
* To disable a specific boxzone just set **`Enabled`** to false

***

```lua
Config.InteractionLocations = {
    ['Example Shop'] = { --Example Bar
        { 
            Enabled = true,
            Name = "example_crafting",
            Location = vector3(-1400.09, -598.18, 30.5),
            Size = vec3(0.8,1.5,0.5),
            Width = 0.8,
            Height = 0.4,
            Heading = 30.00,
            MinZ = 30.25,
            MaxZ = 30.75,
            Distance = 2.0,
            Icon = 'fa-solid fa-glass-martini',
            Label = 'Open Crafting Menu',
            Job = Config.CoreSettings.Jobs['Example Shop'].name, 
            Event = 'lusty94_weedshops:client:OpenCrafting',
            BarName = 'Example Bar', --[[ ✅ Make Sure To Pass shopName ]]
        },
        {
            Enabled = true,
            Name = "example_drinksFridge",
            Location = vector3(-1404.13, -598.71, 29.85),
            Size = vec3(1.2,0.8,0.75),
            Width = 0.8,
            Height = 1.2,
            Heading = 32.86,
            MinZ = 29.50,
            MaxZ = 30.5,
            Distance = 2.0,
            Icon = 'fa-solid fa-briefcase',
            Label = 'Open Storage Fridge',
            Job = Config.CoreSettings.Jobs['Example Shop'].name,
            Event = 'lusty94_weedshops:client:OpenStorage',
            args = { barName = "Example Bar", storageType = "StorageFridge" }, --[[ ✅ Make Sure To Pass shopName and the storageType you define in Config.CoreSettings.Stashes ]]
        },                
        { --this event doesnt need any args passing
            Enabled = true,
            Name = "example_bossMenu",
            Location = vector3(-1370.25, -625.7, 30.12),
            Size = vec3(0.8,0.8,0.5),
            Width = 0.8,
            Height = 0.8,
            Heading = 30.68,
            MinZ = 30.25,
            MaxZ = 30.75,
            Distance = 2.0,
            Icon = 'fa-solid fa-briefcase',
            Label = 'Open Management Menu',
            Job = Config.CoreSettings.Jobs['Example Shop'].name,
            Event = Config.CoreSettings.EventNames.BossMenu, -- this doesnt need any args passing as it directly triggers the event you set
        },
        { 
            Enabled = true,
            Name = "example_bossStash",     
            Location = vector3(-1366.22, -624.67, 30.5),    
            Size = vec3(1.6,0.8,1),    
            Width = 0.8, 
            Height = 0.8, 
            Heading = 302.35,  
            MinZ = 30.25,   
            MaxZ = 30.75,  
            Distance = 2.0,   
            Icon = 'fa-solid fa-briefcase',         
            Label = 'Open Boss Storage',      
            Job = Config.CoreSettings.Jobs['Example Shop'].name,
            Event = 'lusty94_weedshops:client:OpenStorage',
            args = { barName = "Example Bar", storageType = "BossStash" },  --[[ ✅ Make Sure To Pass shopName For storage system  THIS MUST MATCH THE KEY AND THE STORAGE TYPE YOU DEFINE IN CONFIG.CORESETTINGS.STASHES!]]
        },
    },
}
```

***

{% hint style="warning" %}
Some Events Require Arguments Passed With Them
{% endhint %}

* The target events below require arguments passed through the target to the event for various features and security measures.
* It is vital you understand what zone events requires arguments passed. Without these arguments the features may not work as intended leading to script issues or errors
* The same logic above with arguments being passed also applies to some props in [**`Config.Props`**](../bars/props)

***

{% hint style="info" %}
**`Crafting`**
{% endhint %}

* Requires **`ShopName`** being passed&#x20;

```lua
{ 
    Enabled = true,
    Name = "example_crafting",
    Location = vector3(-1400.09, -598.18, 30.5),
    Size = vec3(0.8,1.5,0.5),
    Width = 0.8,
    Height = 0.4,
    Heading = 30.00,
    MinZ = 30.25,
    MaxZ = 30.75,
    Distance = 2.0,
    Icon = 'fa-solid fa-glass-martini',
    Label = 'Open Crafting Menu',
    Job = Config.CoreSettings.Jobs['Example Shop'].name, 
    Event = 'lusty94_weedshops:client:OpenCrafting',
    BarName = 'Example Shop',
     --[[ ✅ Make Sure To Pass ShopName ]]
},
```

***

{% hint style="info" %}
**`Storages`**
{% endhint %}

* Requires args **`shopName`** and **`storageType`** being passed
* **`storageType`** is the storage type you define in [**`Config.CoreSettings.Stashes`**](../bars/stashes)
* This applies to both storages and boss storages

```lua
{
    Enabled = true,
    Name = "example_storageshelf",
    Location = vector3(381.89, -819.82, 29.25),
    Size = vec3(2.0,1.0,2),
    Width = 1.0, Height = 2.0, Heading = 271,
    MinZ = 28.5, MaxZ = 30.5, Distance = 2.0,
    Icon = 'fa-solid fa-hand-point-up', Label = 'Open Storage Shelf',
    Job = Config.CoreSettings.Jobs['Example Shop'].name,
    Event = 'lusty94_weedshops:client:OpenStorage',
    args = { shopName = "Example Shop", storageType = "StorageShelf" }, --[[ ✅ Make Sure To Pass shopName For storage and the storageType you define in Config.CoreSettings.Stashes]]
},  
```

***

{% hint style="info" %}
**`Supplies`**
{% endhint %}

* Requires args **`shopName`** being passed

```lua
{
    Enabled = true,
    Name = "example_supplies",
    Location = vector3(383.46, -827.29, 29.29),
    Size = vec3(2.5,0.5,2),
    Width = 0.5, Height = 2.5, Heading = 270,
    MinZ = 28.5, MaxZ = 30.5, Distance = 2.0,
    Icon = 'fa-solid fa-hand-point-up', Label = 'Get Supplies',
    Job = Config.CoreSettings.Jobs['Example Shop'].name,
    Event = 'lusty94_weedshops:client:GetSupplies',
    args = { shopName = 'Example Shop' }, --[[ ✅ Make Sure To Pass shopName For supplies menu ]]
},  

```

***

{% hint style="info" %}
**`Payment`**
{% endhint %}

* Requires args **`shopName`** passed

```lua
{ 
    Enabled = true,
    Name = "example_payment",
    Location = vector3(380.31, -827.39, 29.3),
    Size = vec3(0.4,0.4,0.5),
    Width = 0.4, Height = 0.4, Heading = 0.0,
    MinZ = 29.3, MaxZ = 29.7, Distance = 2.0,
    Icon = 'fa-solid fa-hand-point-up', Label = 'Charge Customer',
    Job = Config.CoreSettings.Jobs['Example Shop'].name,
    Event = 'lusty94_weedshops:client:BillPlayer',
    args = { shopName = "Example Shop" },  --[[ ✅ Make Sure To Pass shopName For billing menu ]]
},
```

***

{% hint style="info" %}
**`CCTV`**
{% endhint %}

* Requires args **`shopName`** passed - this particular example showcases a prop using the cctv menu but you can set this to a static target zone if you wish, just make sure to pass the correct shopName

```lua
{ 
    Enabled = true,
    Model = 'prop_cctv_cont_02',
    Coords = vector4(376.87, -824.59, 30.15, 180.0),
    Icon = 'fa-solid fa-box',
    Label = 'View CCTV',
    Job = Config.CoreSettings.Jobs['Example Shop'].name, 
    Distance = 3.0,
    Event = 'lusty94_weedshops:client:OpenCCTVMenu',
    args = { shopName = "Example Shop" }, --[[ ✅ Make Sure To Pass shopName For CCTV MENU]]
},
```
