# Adding new 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.


---

# 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://docs.kojascripts.eu/new/shops/configuration/adding-new-shop.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.
