> For the complete documentation index, see [llms.txt](https://docs.kojascripts.eu/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kojascripts.eu/new/shops/configuration/adding-a-shop.md).

# Adding a Shop

**How to Add New Shops**

To add new shops, you need to create a new entry in the `Config.Shops` table with a unique identifier for each shop. The general steps are:

1. **Create a Unique Shop ID**:\
   Each shop should have a unique key to identify it. For example, if you’re adding a new shop called "Clothing Store", you might use `'clothing_store'` as the key.
2. **Configure Shop Settings**:\
   Under the unique key (e.g., `'clothing_store'`), configure the settings for that shop, such as titles, colors, currency, and more.

**Detailed Breakdown of the Shop Configuration**

* **`titles`**:
  * `main`: The main name of the shop (displayed in the UI).
  * `secondary`: A secondary title, often used for additional description or categorization (e.g., "MARKET", "SUPPLY").
  * `description`: A short description of what the shop offers.
* **`colors`**:
  * `accent`: The color used for accent details (e.g., button highlights).
  * `background`: The background color for the shop’s UI.
  * `text`: The color of the text used in the shop interface.
* **`currency`**:
  * This is the currency used in the shop. It could be `money`, `bank`, or any custom currency that your server uses.
* **`blip`**:
  * **`sprite`**: The icon displayed on the map for the shop.
  * **`color`**: The color of the icon on the map.
  * **`scale`**: The size of the icon.
  * **`display`**: The type of map display (e.g., whether the blip is displayed on the radar).
  * **`label`**: The label that appears when the player hovers over the blip on the map.
  * **`visible`**: Whether the blip is visible on the map (`true` or `false`).
* **`npc`**:
  * **`name`**: The name of the NPC who will interact with players in the shop.
  * **`hash`**: The hash value of the NPC model (used to spawn the NPC).
  * **`scenario`**: The scenario or animation the NPC will perform (e.g., standing with a clipboard).
  * **`target`**: The interaction information for the NPC, such as the icon and label displayed when interacting with the NPC.
    * `icon`: The icon to display above the NPC's head.
    * `label`: The text displayed when interacting with the NPC (e.g., "Talk to the Shopkeeper").
    * `distance`: The interaction distance.
* **`categories`**:
  * Each shop can have multiple categories of products. Each category contains settings such as:
    * `name`: The name of the category (e.g., "Food & Drinks", "Electronics").
    * `type`: Type of the category (usually "Products").
    * `icon`: An icon that represents the category in the shop UI.
    * **`specialOffers`**: Optional settings for offering discounts in night:
      * `percentage`: A random discount percentage applied to the category.
      * `maxProducts`: The maximum number of products eligible for special offers.
* **`products`**:
  * Each product in the shop is defined with the following settings:
    * `category`: The category the product belongs to (e.g., "food", "electronics").
    * `item`: The unique identifier of the item.
    * `label`: The product’s name shown in the shop.
    * `description`: Descriptions about the product, such as rarity or count.
    * `count`: The quantity of the product available.
    * `weight`: The weight of the item (useful for inventory systems).
    * `price`: The price of the product in the shop's currency.
    * `image`: The URL for the image of the product.
    * **`salePercentage`**: Optional sale percentage for a product, if it's on sale.
* **`locations`**:
  * Each shop can have one or more locations defined using coordinates in `vec4` format. These coordinates specify the shop’s position in the world.
    * Example: `vec4(-47.5092, -1758.8894, 28.4210, 47.3490)` represents a specific location in the game world where the shop can be found.

**Example: Adding a New Shop**

Here’s how you would add a new shop named "Clothing Store":

{% code title="shared/config.lua" %}

```lua
Config.Shops['clothing_store'] = {
    titles = {
        main = 'Clothing Store',
        secondary = 'Fashion Hub',
        description = 'Shop for the latest in fashion and clothing!'
    },
    colors = {
        accent = '#ff4500',  -- Orange accent color
        background = '#ffffff',  -- White background
        text = '#000000',  -- Black text
    },
    currency = 'money',
    blip = {
        sprite = 73,  -- Icon for a clothing store
        color = 5,    -- Blip color
        scale = 0.8,
        display = 4,
        label = 'Clothing Store',
        visible = true,
    },
    npc = {
        name = 'Anna',
        hash = 0xE79782E2,  -- NPC model hash for Anna
        scenario = 'WORLD_HUMAN_STAND_IMPATIENT',
        target = {
            icon = 'fas fa-tshirt',
            label = 'Clothing Store',
            distance = 2.0,
        }
    },
    categories = {
        ['clothing'] = {
            name = "Clothing",
            type = "Products",
            icon = "Tshirt",
            specialOffers = {
                percentage = math.random(5, 10),
                maxProducts = 5
            }
        },
    },
    products = {
        {
            category = "clothing",
            item = "jacket",
            label = "Leather Jacket",
            description = {
                {title = "Rarity", value = "Rare"},
                {title = "Count", value = "1"}
            },
            count = 1,
            weight = 1200.00,
            price = 500,
            image = "nui://clothing-shop/images/jacket.png"
        }
    },
    locations = {
        vec4(100.0, -200.0, 29.0, 90.0)  -- Example location for the clothing store
    },
}
```

{% endcode %}

**Summary**

* **`Config.Shops`** is where you define all the shops on your server.
* Each shop has a unique identifier (e.g., `'shop_1'`, `'clothing_store'`), and you can set various properties like titles, colors, products, NPCs, categories, and locations.
* Adding a new shop involves creating a new entry in `Config.Shops` with a unique key and configuring all the desired settings.
