> ## Documentation Index
> Fetch the complete documentation index at: https://docs.awokenlabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Stores & Locations

> Define shop zones, map blips, target interaction, and job clothing rooms.

All shop and room locations live in `shared/config.lua`. Each is a **zone** the player walks into (or targets) to open the matching menu. Edit, save, `ensure illenium-appearance`.

## Stores

`Config.Stores` is a list of shop zones. Each entry:

```lua shared/config.lua theme={"dark"}
{
    type     = "clothing",                              -- "clothing" | "barber" | "tattoo" | "surgeon"
    coords   = vector4(1693.2, 4828.11, 42.07, 188.66), -- x, y, z, heading (heading aims the clerk ped)
    size     = vector3(4, 4, 4),                        -- box size when usePoly = false
    rotation = 45,                                      -- box rotation when usePoly = false
    usePoly  = true,                                    -- true = use points[] polygon; false = use size + rotation
    showBlip = true,                                    -- optional: override the per-type blip visibility
    -- targetModel    = "s_m_m_doctor_01",              -- optional: override the clerk ped for this store
    -- targetScenario = "WORLD_HUMAN_STAND_MOBILE",     -- optional: override the clerk scenario
    points   = {                                        -- polygon corners (only used when usePoly = true)
        vector3(1686.90, 4829.83, 42.07),
        vector3(1698.85, 4831.46, 42.07),
        vector3(1700.24, 4817.77, 42.07),
        vector3(1688.36, 4816.29, 42.07),
    },
}
```

| Field                            | Effect                                                                                                |
| -------------------------------- | ----------------------------------------------------------------------------------------------------- |
| `type`                           | Which shop opens: `clothing`, `barber`, `tattoo`, or `surgeon`. Drives the blip, target ped and cost. |
| `coords`                         | `vector4` - position + heading. The clerk ped (if enabled) spawns here facing `heading`.              |
| `usePoly`                        | `true` builds the zone from `points`; `false` builds a box from `size` + `rotation`.                  |
| `size` / `rotation`              | Box dimensions, used only when `usePoly = false`.                                                     |
| `points`                         | Polygon corners (`vector3`), used only when `usePoly = true`.                                         |
| `showBlip`                       | Per-store override of the `Config.Blips` visibility for this `type`.                                  |
| `targetModel` / `targetScenario` | Per-store override of the clerk ped model/scenario from `Config.TargetConfig`.                        |

<Tip>
  To add a store, copy an existing block of the same `type` and change `coords` (and `points`, if `usePoly`). The fastest way to get `points` is an in-game polyzone builder.
</Tip>

## Blips

`Config.Blips` sets the map blip for each shop `type`:

```lua shared/config.lua theme={"dark"}
Config.Blips = {
    ["clothing"] = { Show = true, Sprite = 73,  Color = 3, Scale = 0.7, Name = "Clothing Store" },
    ["barber"]   = { Show = true, Sprite = 71,  Color = 0, Scale = 0.7, Name = "Barber" },
    ["tattoo"]   = { Show = true, Sprite = 75,  Color = 4, Scale = 0.7, Name = "Tattoo Shop" },
    ["surgeon"]  = { Show = true, Sprite = 102, Color = 4, Scale = 0.7, Name = "Plastic Surgeon" },
}
```

| Field                        | Effect                                                                                  |
| ---------------------------- | --------------------------------------------------------------------------------------- |
| `Show`                       | Whether the blip is drawn at all (a store's `showBlip` can override this per-location). |
| `Sprite` / `Color` / `Scale` | Standard FiveM blip sprite id, colour id, and size.                                     |
| `Name`                       | Label shown on the map legend.                                                          |

Related toggles: `Config.ShowNearestShopOnly` (only blip the closest store) and `Config.NearestShopBlipUpdateDelay` (ms between recalculations).

## Target interaction

When `Config.UseTarget = true`, shops and rooms open via a targeting resource instead of walking into the zone. `Config.TargetConfig` defines the clerk ped and prompt per `type` - including the `clothingroom` and `playeroutfitroom` types:

```lua shared/config.lua theme={"dark"}
["clothing"] = {
    model    = "s_f_m_shop_high",
    scenario = "WORLD_HUMAN_STAND_MOBILE",
    icon     = "fas fa-tshirt",
    label    = "Open Clothing Store",
    distance = 3,
},
```

| Field            | Effect                               |
| ---------------- | ------------------------------------ |
| `model`          | Clerk ped model spawned at the zone. |
| `scenario`       | Idle animation the clerk plays.      |
| `icon` / `label` | Target eye icon and prompt text.     |
| `distance`       | Interaction range in metres.         |

Ped spawning is gated by `Config.EnablePedsForShops`, `Config.EnablePedsForClothingRooms`, and `Config.EnablePedsForPlayerOutfitRooms`.

## Clothing rooms

`Config.ClothingRooms` are job-locked zones that open the job/gang outfit menu (see [Job & Gang Outfits](/resources/awoken-appearance/configuration/outfits)). Same zone shape as a store, plus a `job`:

```lua shared/config.lua theme={"dark"}
Config.ClothingRooms = {
    {
        job     = "police",
        coords  = vector4(454.91, -990.89, 30.69, 193.4),
        size    = vector3(4, 4, 4),
        rotation = 45,
        usePoly = true,
        points  = { vector3(460.41, -993.11, 30.69), --[[ … ]] },
    },
}
```

Set `Config.OnDutyOnlyClothingRooms = true` to restrict rooms to on-duty players.

## Player outfit rooms

`Config.PlayerOutfitRooms` are personal outfit rooms restricted to specific citizen IDs - same shape as a clothing room, with `citizenIDs` instead of (or alongside) `job`:

```lua shared/config.lua theme={"dark"}
{
    job        = "police",
    coords     = vector4(287.28, -573.41, 43.16, 79.61),
    size       = vector3(4, 4, 4),
    rotation   = 45,
    usePoly    = true,
    points     = { vector3(284.83, -574.01, 43.16), --[[ … ]] },
    citizenIDs = { "BHH65156" },
}
```

The shipped config leaves this list empty (a commented sample is included).
