> 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/custom-peds.md).

# Custom peds

Give a character any ped model with /giveped, and set names, prices and uniforms per ped model.

`/giveped <playerId> <model>` gives a player's **character** any ped model. The assignment is saved per character in `player_custom_peds`, so it comes back after a relog, a reconnect, a server restart or a character switch. The clothing menus keep working on the ped with its own drawables, and nothing switches it back to a freemode model.

`/giveped <playerId> reset` removes it and puts the character's own skin back.

How admins use it: [Admin guide](/visionstore-docs/scripts/advanced-clothing/guides/admin-guide.md#custom-peds).

## Settings

`config/config.lua`:

```lua
Config.CustomPeds = {
    enforce = true,           -- when the character loads, put the assigned ped back if illenium / the spawn selector did not
    loadGraceMs = 6000,       -- ms illenium and the spawn selector get to restore the saved skin before we apply it ourselves
    modelTimeoutMs = 15000,   -- ms to wait for a ped model to stream in (add-on peds can be large)
    repairOnStart = true,     -- on resource start, point every assigned character's active skin row at its ped again
}
```

| Option           | Default | What it does                                                                                                                                                   |
| ---------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `enforce`        | `true`  | When the character loads, make sure the assigned ped is worn, and keep the character's active skin pointed at it (so the multicharacter preview shows it too). |
| `loadGraceMs`    | `6000`  | Time illenium and the spawn selector get to put the ped back before Vision Clothing does it itself. It never swaps the ped while a menu is open.               |
| `modelTimeoutMs` | `15000` | Time a ped model may take to load. Add-on peds can be large.                                                                                                   |
| `repairOnStart`  | `true`  | On resource start, fix the active skin row of every assigned character. Needs `enforce`.                                                                       |

{% hint style="warning" %}
For **add-on** peds, also apply step 4 of [illenium-appearance setup](/visionstore-docs/scripts/advanced-clothing/illenium-setup.md) so saves that go through illenium keep the real model name. Without it, a custom ped may come back as a freemode character.
{% endhint %}

## Per-model data

Freemode data never applies to another model: drawable 15 of tops is "no top" on `mp_m_freemode_01`, but it can be anything on another ped. A custom ped only reads tables written for **its own model name** (lower-case):

| Data                           | Freemode ped                                             | Custom ped                                                                      |
| ------------------------------ | -------------------------------------------------------- | ------------------------------------------------------------------------------- |
| Item names                     | `Config.ItemNames.male` / `.female`, then `shared`       | `Config.ItemNames.<model>`                                                      |
| Item prices                    | `Config.ItemPrices` flat entries, then `male` / `female` | `Config.ItemPrices.<model>`                                                     |
| Clipping rules                 | `Config.Compatibility.male` / `.female`                  | `Config.Compatibility.<model>`                                                  |
| Job / gang uniforms            | `Config.JobOutfits[job].male` / `.female`                | `Config.JobOutfits[job].<model>`                                                |
| Thumbnails                     | The shipped pack                                         | `Config.Thumbnails.customPattern` / `customPropPattern`, otherwise placeholders |
| "Nothing" items (CLEAR action) | Per gender                                               | None (props can still be removed)                                               |

Examples (add them after the existing tables in each file):

```lua
Config.ItemNames.a_m_m_business_01     = { ["c:11:0"] = "Grey Suit" }                               -- config/names.lua
Config.ItemPrices.a_m_m_business_01    = { ["c:11:3"] = 250 }                                       -- config/prices.lua
Config.Compatibility.a_m_m_business_01 = { tops = { [1] = { pin = { torso = 0 } } } }               -- config/compatibility.lua
Config.JobOutfits.police.s_m_y_cop_01  = { { name = "Cop Uniform", components = { [11] = { 0, 0 } } } } -- config/shops.lua
```

## Good to know

* While a character has a custom ped, the MALE / FEMALE selector is hidden in the admin menu and the character creator doesn't force a freemode model.
* Outfits saved on a custom ped only fit that ped.
* Many peds have only a few variations, or none, in some slots, so some categories can be short or empty.
* If a ped model disappears from the game (an add-on pack removed, a typo), the character gets their own skin back and sees **Your ped could not be loaded - ask an admin**. The assignment stays until an admin gives another ped or resets it.
* On Qbox, deleting a character doesn't delete its `player_custom_peds` row unless you add `{ 'player_custom_peds', 'citizenid' }` to `characterDataTables` in `qbx_core/config/server.lua`.


---

# 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/custom-peds.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.
