> For the complete documentation index, see [llms.txt](https://visionstore.gitbook.io/visionstore-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://visionstore.gitbook.io/visionstore-docs/scripts/advanced-clothing/configuration/general.md).

# General

Debug, language, interaction, camera, keys, player state, commands, UI and theme.

All settings on this page are in `config/config.lua`, except the theme colours (`html/css/variables.css`).

## Basics

```lua
Config.Debug = false
Config.Locale = "en"          -- key in shared/locales/*.lua ("en", "ar") ; convar "Chapo_advanced_clothing:locale" overrides
Config.Currency = "$"
Config.AllowPlayerLocale = true    -- players may pick a locale with /appearancelang <code>
```

| Option                     | Default | What it does                                                                                                                                              |
| -------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Config.Debug`             | `false` | Prints debug lines prefixed `[Chapo_advanced_clothing]` to F8 and the server console, draws zone / target outlines and logs every purchase on the server. |
| `Config.Locale`            | `"en"`  | Interface language. `en` and `ar` are included.                                                                                                           |
| `Config.Currency`          | `"$"`   | Prefix of every price (`$1,234`).                                                                                                                         |
| `Config.AllowPlayerLocale` | `true`  | Players can switch language with `/appearancelang` or the language button. `false` removes both.                                                          |

## World interaction

```lua
Config.Interaction = {
    useTarget = "auto",          -- "auto" (ox_target > qb-target > zones), "ox", "qb", "none"
    drawText = true,             -- ox_lib text UI when using zones
    key = 38,                    -- E (control id)
    keyLabel = "E",              -- label shown in the "[E] Clothing Store" prompt
    textUIPosition = "left-center",
    blips = true,
    peds = false,                -- spawn shopkeeper peds at shops (uses shop.ped or Config.DefaultShopPed)
}
Config.DefaultShopPed = { model = "s_f_m_shop_high", scenario = "WORLD_HUMAN_STAND_MOBILE" }
Config.ShopDistanceTolerance = 15.0   -- server side distance check for checkout (metres)
```

| Option                         | What it does                                                                                                      |
| ------------------------------ | ----------------------------------------------------------------------------------------------------------------- |
| `useTarget`                    | `"auto"` picks ox\_target, then qb-target, then ox\_lib zones. Force one with `"ox"`, `"qb"` or `"none"` (zones). |
| `drawText`                     | Show the ox\_lib text UI prompt when using zones.                                                                 |
| `key` / `keyLabel`             | The control checked in zones (38 = **E**) and the label in the prompt.                                            |
| `textUIPosition`               | Where the ox\_lib text UI appears.                                                                                |
| `blips`                        | Create map blips for shops and wardrobes that define a `blip`.                                                    |
| `peds`                         | Spawn shopkeeper peds. The target option is then attached to the ped.                                             |
| `Config.DefaultShopPed`        | The shopkeeper used when a shop has no `ped` of its own.                                                          |
| `Config.ShopDistanceTolerance` | Metres added to a shop's `radius` when the server checks the distance, on open and again at checkout.             |

{% hint style="info" %}
Wardrobes with restrictions (job, gang, grade...) hide their prompt for players who don't qualify. Shops always show it and the server decides when the player opens it.
{% endhint %}

## Player state while the menu is open

```lua
Config.PlayerState = {
    freezePed = true,
    invincible = true,
    hideRadar = true,
    hideHud = false,             -- hides all HUD components while open
    closeOnDeath = true,
    closeOnDistance = 25.0,      -- close if the player gets this far from where the menu was opened (teleports)
}
```

| Option                  | What it does                                                                                                 |
| ----------------------- | ------------------------------------------------------------------------------------------------------------ |
| `freezePed`             | Freeze the player while the menu is open.                                                                    |
| `invincible`            | Make the player invincible while the menu is open.                                                           |
| `hideRadar` / `hideHud` | Hide the minimap / every HUD component.                                                                      |
| `closeOnDeath`          | Close the menu (as a cancel) when the player dies.                                                           |
| `closeOnDistance`       | Close the menu (as a cancel) when the player ends up this many metres from where it opened. `0` disables it. |

Attacking, weapons, entering vehicles, melee and the phone are disabled while the menu is open.

## Camera

```lua
Config.Camera = {
    fov = 45.0,
    transitionMs = 260,                 -- focus preset interpolation
    rotateSensitivity = 0.35,           -- degrees per pixel of mouse drag
    moveSensitivity = 0.0035,           -- metres per pixel of vertical drag / W-S
    zoom = { min = 0.55, max = 3.2, step = 0.18 },
    presets = {
        default   = { distance = 2.20, height = 0.20,  focus = -0.05 },
        full      = { distance = 2.40, height = 0.10,  focus = -0.10 },
        torso     = { distance = 1.30, height = 0.30,  focus = 0.22 },
        legs      = { distance = 1.35, height = -0.35, focus = -0.50 },
        feet      = { distance = 1.10, height = -0.70, focus = -0.90 },
        head      = { distance = 0.85, height = 0.65,  focus = 0.62 },
        face      = { distance = 0.55, height = 0.66,  focus = 0.64 },
        hands     = { distance = 1.25, height = -0.05, focus = -0.20 },
        arm_left  = { distance = 1.15, height = 0.20,  focus = 0.05,  side = 0.42 },
        arm_right = { distance = 1.15, height = 0.20,  focus = 0.05,  side = -0.42 },
        leg_left  = { distance = 1.30, height = -0.35, focus = -0.50, side = 0.18 },
        leg_right = { distance = 1.30, height = -0.35, focus = -0.50, side = -0.18 },
    },
}
```

The camera stays fixed in front of the ped; the ped rotates. Each preset is relative to the ped (metres): `distance` in front, `height` of the camera, `focus` height of the point it looks at, and optional `side` to shift the framing left or right (used to centre an arm or a leg for tattoos).

Categories and sections pick their own preset with a `camera` field. Add your own preset here and reference it by name. Unknown names fall back to `default`.

## Keys

```lua
Config.Keys = {
    back = "ESC",
    select = "ENTER",
    checkout = "TAB",
    rotateLeft = "A",
    rotateRight = "D",
    camUp = "W",
    camDown = "S",
    tabPrev = "Q",
    tabNext = "E",
    favorite = "F",
    search = "/",
}
```

These labels are shown in the hint bar **and** are the keys the interface really listens to, so changing `favorite = "G"` rebinds it. `ESC`, `ENTER`, `TAB` and the arrow keys always work too. Every key is listed in [Commands and keys](/visionstore-docs/scripts/advanced-clothing/guides/commands-and-keys.md).

## Navigation and UI

```lua
Config.Navigation = {
    showSingleTab = true,          -- a single-section context still shows its one tab as a heading anchor (e.g. [ APPAREL ])
    showSectionKeys = true,        -- Q / E keycaps around the tabs when more than one section exists
}

Config.UISounds = true
Config.Animations = true
Config.UltrawideMaxWidth = 2200           -- px at 1080p scale; the UI never spreads wider than this
Config.DefaultView = "root"               -- first view when a shop opens: "root" | "grid"
```

| Option                     | What it does                                                                                                        |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| `showSingleTab`            | A place with one section (a barber shows only HAIR) still shows that tab as a heading. `false` hides the bar there. |
| `showSectionKeys`          | Show the **Q** / **E** keycaps around the section tabs (only when there is more than one section).                  |
| `Config.UISounds`          | GTA frontend sounds for navigate, select, back, confirm, purchase, error, open and close.                           |
| `Config.Animations`        | Interface transitions. `false` for lower-end clients.                                                               |
| `Config.UltrawideMaxWidth` | The interface never spreads wider than this on ultrawide monitors.                                                  |
| `Config.DefaultView`       | First view when a store opens: `"root"` (category rows) or `"grid"`. Wardrobes always start in the wardrobe.        |

## Commands

```lua
Config.Commands = {
    adminShop = { name = "clothingshop", aliases = { "pedmenu" }, enabled = true, group = "group.admin" },
    givePed   = { name = "giveped", enabled = true, group = "group.admin" },
    wardrobe  = { name = "wardrobe", enabled = false },     -- opens the personal wardrobe anywhere
    outfits   = { name = "outfits", enabled = false },      -- alias of wardrobe
}
```

| Command                | What it does                                                                                                                                              |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `adminShop`            | `/clothingshop [playerId]`: the free admin menu with every section, for you or a player. Every name in `aliases` is the same command.                     |
| `givePed`              | `/giveped <playerId> <model>` / `/giveped <playerId> reset`. See [Custom peds](/visionstore-docs/scripts/advanced-clothing/configuration/custom-peds.md). |
| `wardrobe` / `outfits` | `/wardrobe` (and `/outfits`) opens the personal wardrobe anywhere. **Off by default.**                                                                    |

`group` is the ace group allowed to use the command. Both admin commands also work from the server console with a player id.

{% hint style="warning" %}
Keep illenium's `Config.EnablePedMenu = false` while `pedmenu` is in `aliases`, or the two `/pedmenu` commands compete (see [illenium-appearance setup](/visionstore-docs/scripts/advanced-clothing/illenium-setup.md)).
{% endhint %}

Two admin tools have their own settings: `/clothingmap` (`Config.ThumbnailMap`, see [Clothing catalog](/visionstore-docs/scripts/advanced-clothing/configuration/clothing-catalog.md#thumbnails)) and `/clothingcolors` (`config/colors.lua`, see [Colour filter](/visionstore-docs/scripts/advanced-clothing/guides/colour-filter.md)).

## illenium-appearance integration

```lua
Config.IlleniumIntercept = {
    enabled = true,   -- false hands every intercepted request straight back to illenium's own UI
    shops = {
        clothing = "illenium_clothing",
        barber   = "illenium_barber",
        tattoo   = "illenium_tattoo",
        surgeon  = "illenium_surgeon",
    },
}

Config.AutoCreateTables = true            -- create Chapo_advanced_clothing_* tables on start (needs oxmysql)
Config.ResetIlleniumOutfitCache = true    -- keep illenium's ox_lib outfit menu in sync after we change player_outfits
Config.SyncUniformsWithIllenium = true    -- call illenium's syncUniform when equipping job/gang outfits (PersistUniforms support)
Config.UseIlleniumManagementOutfits = true -- merge boss-managed outfits (illenium Config.BossManagedOutfits) into job/gang wardrobes
```

| Option                         | What it does                                                                                                                                                                                                                                                                                                         |
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `IlleniumIntercept.enabled`    | `false` sends every menu request that reached Vision Clothing through illenium (see [illenium-appearance setup](/visionstore-docs/scripts/advanced-clothing/illenium-setup.md)) back to illenium's own UI.                                                                                                           |
| `IlleniumIntercept.shops`      | Which `Config.Shops` entry prices a shop that another script opened through illenium. By default these are the four fallback entries at the end of `config/shops.lua` ([Fallback entries](/visionstore-docs/scripts/advanced-clothing/configuration/shops-and-locations.md#fallback-entries-for-illenium-requests)). |
| `AutoCreateTables`             | Create the database tables on start. `false` = import `install/chapo_advanced_clothing.sql` yourself.                                                                                                                                                                                                                |
| `ResetIlleniumOutfitCache`     | Keep illenium's own outfit menu in sync when Vision Clothing changes saved outfits.                                                                                                                                                                                                                                  |
| `SyncUniformsWithIllenium`     | Tell illenium when a job / gang uniform is equipped (for illenium's `Config.PersistUniforms`).                                                                                                                                                                                                                       |
| `UseIlleniumManagementOutfits` | Show outfits created by bosses in illenium (`Config.BossManagedOutfits`) in job and gang lockers.                                                                                                                                                                                                                    |

How illenium requests are mapped: a clothing / barber / tattoo / surgeon shop opens the matching Vision Clothing shop; the combined menu (`/pedmenu`, the qb-clothing menu) opens the free admin menu, which the server only allows for admins; outfit rooms open the personal wardrobe; job / gang rooms open the job locker.

## Theme

The palette lives in `html/css/variables.css`. Only the **brand palette** block at the top needs to change:

```css
:root {
    --ui-ink: #0b0b0c;      /* ground of every panel, row and card */
    --ui-cream: #e7dbbe;    /* primary text, active rows and tabs */
    --ui-crimson: #c4122f;  /* prices, TOTAL COST, selection, focus, bank box */
}
```

Every other colour (accents, surfaces, borders, the TOTAL COST gradient...) is derived from these three, so the whole interface follows. Players see the change after `restart Chapo_advanced_clothing`.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://visionstore.gitbook.io/visionstore-docs/scripts/advanced-clothing/configuration/general.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
