> For the complete documentation index, see [llms.txt](https://devix.gitbook.io/devix/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://devix.gitbook.io/devix/devix-appearance/appearance-config/clothing-prices-config.md).

# Clothing  Prices Config

This file is used **only when** `Config.UsePerIdClothingPrices = true` in **config.lua**. It lets you set a **different price for each clothing drawable ID** (and optionally per shop and per ped model). If you don’t need that, leave the option false and ignore this file.

***

## What “per-ID” means

* Each clothing piece has a **drawable ID** (number), e.g. t-shirt 0, 15, 59, 61.
* Normally the script uses one **price per category** (e.g. all t-shirts cost 80).
* With per-ID pricing you can say: t-shirt **0** = 10, t-shirt **59** = 500, etc.
* You can also set **different** prices per **shop type** (e.g. Binco cheaper, Ponsonbys more expensive for the same ID).

***

## Structure

Two main tables (both can be filled in this file; config.lua often leaves them empty):

1. **Config.DefaultClothePrice** — Default price per drawable, used by **all shops** when the shop doesn’t override.
2. **Config.Clothelist** — **Per-shop** override: when the player is at a specific shop type, these prices are used instead of DefaultClothePrice when defined.

***

## DefaultClothePrice

**Shape:** `[pedHash][category] = priceTable`

* **pedHash** = GTA ped model hash: `GetHashKey("mp_m_freemode_01")` (male) or `GetHashKey("mp_f_freemode_01")` (female).
* **category** = string: `"t-shirt"`, `"torso2"`, `"pants"`, `"shoes"`, `"arms"`, `"mask"`, `"vest"`, `"accessory"`, `"hat"`, `"glass"`, `"ear"`, `"watch"`, `"bracelet"`, `"bag"`, `"decals"`.
* **priceTable** = either:
  * `{ [drawableId] = price }` — e.g. `{ [0] = 10, [15] = 10, [59] = 500 }`
  * or `{ { id = drawableId, price = price }, ... }` — e.g. `{ { id = 0, price = 10 }, { id = 59, price = 500 } }`

Example:

{% code title="config\_clothing\_prices.lua" %}

```lua
Config.DefaultClothePrice[maleHash] = {
    ["t-shirt"] = { [0] = 10, [15] = 10, [59] = 500 },
    ["pants"]   = { [0] = 350, [4] = 3500 },
}
```

{% endcode %}

So for male: t-shirt 0 and 15 cost 10, t-shirt 59 costs 500; pants 0 cost 350, pants 4 cost 3500. Any drawable **not** in the table falls back to the **category** price from config.lua (GetClothingPrice).

***

## Clothelist (per-shop override)

**Shape:** `[shopType][pedHash][category] = priceTable`

* **shopType** must match **Config.ClothingShops\[].type** in config.lua (e.g. `"suburban"`, `"binco"`, `"ponsonbys"`, `"discount"`).
* **pedHash** and **category** and **priceTable** are the same as in DefaultClothePrice.

When the player is at a shop, the script first looks in **Clothelist\[shopType]\[pedHash]\[category]** for the drawable ID. If found, that price is used. If not, it uses **DefaultClothePrice\[pedHash]\[category]**. If that also has no entry for the ID, it falls back to the category price from config.lua.

Example:

{% code title="config\_clothing\_prices.lua" %}

```lua
Config.Clothelist["binco"] = Config.Clothelist["binco"] or {}
Config.Clothelist["binco"][maleHash] = {
    ["t-shirt"] = { [0] = 8, [59] = 350 },
    ["pants"]   = { [0] = 200, [4] = 2000 },
}
```

{% endcode %}

So at Binco, for male, t-shirt 0 costs 8 and t-shirt 59 costs 350; at other shops the DefaultClothePrice (or category default) is used.

***

## Lookup order (summary)

1. Clothelist\[shopType]\[pedHash]\[category]\[drawableId] — if shop type and ped and category exist and the drawable ID is in the table.
2. DefaultClothePrice\[pedHash]\[category]\[drawableId] — if the drawable ID is in the table.
3. Config.GetClothingPrice(shopType, category) — category-based price from config.lua (with priceMultiplier).

***

{% hint style="info" %}
Tips

* Use **maleHash** and **femaleHash** (e.g. `GetHashKey("mp_m_freemode_01")` and `GetHashKey("mp_f_freemode_01")`) so male and female can have different prices.
* You don’t have to list every drawable; only list IDs you want to override. Everything else uses the category price.
* Keep config.lua clean: leave **Config.DefaultClothePrice = {}** and **Config.Clothelist = {}** there and fill them in **config\_clothing\_prices.lua** (this file is loaded after config.lua).
  {% endhint %}

***

## Summary

* **config\_clothing\_prices.lua** = per-drawable (and optionally per-shop) prices when **UsePerIdClothingPrices = true**.
* **DefaultClothePrice** = default per-ID prices for each ped and category.
* **Clothelist** = per-shop overrides; shop type must match **Config.ClothingShops\[].type**.
* Price table = `{ [drawableId] = price }` or `{ { id = x, price = y }, ... }`.


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://devix.gitbook.io/devix/devix-appearance/appearance-config/clothing-prices-config.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
