> For the complete documentation index, see [llms.txt](https://code-after-sex.gitbook.io/script-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://code-after-sex.gitbook.io/script-documentation/character-creator-and-select-and-apppearance/configuration.md).

# Configuration

This page documents every server-tunable option in `config.lua` for the CAS RedM character creator. All options live on the global `CCConfig` table and cover multicharacter selection, the appearance creator, barber and clothing shops, spawn points, and framework setup for both VORP and RSGCore. Use it together with [installation.md](/script-documentation/character-creator-and-select-and-apppearance/installation.md) for first-time setup and [troubleshooting.md](/script-documentation/character-creator-and-select-and-apppearance/troubleshooting.md) when something does not behave as expected.

`cas-charcreator` is a both-framework resource: it auto-detects VORP versus RSGCore at runtime (`shared/framework.lua` probes `GetResourceState rsg-core` / `vorp_core`). There is **no** hard framework dependency in `fxmanifest`. Options flagged **RSG-only** are read only when RSGCore is detected; VORP reads the equivalent values from `vorp_core` instead.

> Defaults below are the literal values shipped in `config.lua`. Edit `config.lua` and restart the resource (or `/ccreload` while `DevMode` is on) to apply changes.

***

## General behaviour

| Key                | Type    | Default | Description                                                                                                                                                                                                                                                                                                                                         |
| ------------------ | ------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CCConfig.DevMode` | boolean | `false` | Gates ALL developer tooling. **KEEP `false` IN PRODUCTION.** When `true`, registers unrestricted player commands (`/ccreload`, `/cclangreset`, `/tpclothes`, `/tpbarber`, `/ccdebug`, `/ccshot`, `/ccraw`, `/cchead`, `/cctest`, `/wardrobe`, `/swatch*`) and the `devReopen`/`devLangReset` server events, so any connected player could run them. |

***

## Language and localization (i18n)

The creator UI ships 8 fully-translated locales (`locales/*.lua`): **`en`, `es`, `de`, `fr`, `it`, `pt`, `pt-BR`, `ro`** (English, Spanish, German, French, Italian, Portuguese, Brazilian Portuguese, Romanian). Both keys below must use one of these codes. Each player's pick is saved per account in the auto-created `cas_player_locale` table, so it follows them across characters and PCs and lets the server localize notifications.

| Key                        | Type         | Default | Description                                                                                                                                                                                                           |
| -------------------------- | ------------ | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CCConfig.DefaultLanguage` | string       | `"en"`  | Default and fallback locale used before a player picks one, and for any missing translation key. Must be one of the 8 supported codes.                                                                                |
| `CCConfig.ForceLanguage`   | string / nil | `nil`   | Force a single locale server-wide. When set to a supported code, the first-run language picker is **skipped** and every player uses this locale (single-language communities). Leave `nil` to let each player choose. |

***

## Framework detection (VORP vs RSGCore)

These only apply on **RSGCore** servers. On RSG, cas-charcreator OWNS the appearance stack: disable `rsg-multicharacter` and `rsg-barbers`, REPLACE the stock `rsg-appearance` resource folder with the CAS `rsg-appearance` stub shipped in this package (same resource name), and DELETE the stock `rsg-wardrobe` folder. Do not `stop` `rsg-appearance`: `rsg-bathing` hard-depends on it, so stopping it cascade-stops rsg-bathing and rsg-hud spams `No such export IsBathingActive`. The same-named stub keeps the `rsg-appearance` name present so that dependency resolves, declares `provide 'rsg-wardrobe'` to cover `rsg-bathing`'s wardrobe dependency once the stock folder is gone, and answers the read-only `rsg-hud` / `rsg-essentials` exports with safe values.

| Key                                   | Type                    | Default                                    | Description                                                                                                                                                              |
| ------------------------------------- | ----------------------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `CCConfig.RsgMoney`                   | table (index to string) | `{ [0]="cash", [1]="cash", [2]="cash" }`   | **RSG-only.** VORP has 3 currencies (0 money / 1 gold / 2 rol); RSG has only cash-style accounts. Maps each VORP shop/second-chance currency index to an RSG money type. |
| `CCConfig.RsgMaxCharacters`           | number                  | `5`                                        | **RSG-only.** Per-account character slots on RSG. (On VORP this comes from `vorp_core`.)                                                                                 |
| `CCConfig.MinAge`                     | number                  | `18`                                       | Minimum character age (mirrors `vorp_character`). On RSG, age is derived from `charinfo.birthdate`.                                                                      |
| `CCConfig.MaxAge`                     | number                  | `80`                                       | Maximum character age.                                                                                                                                                   |
| `CCConfig.BannedNames`                | string\[]               | `{ "Arthur", "Marshton", "Shit", "Dick" }` | Names rejected at character creation.                                                                                                                                    |
| `CCConfig.AllowPlayerDeleteCharacter` | boolean                 | `true`                                     | Whether players may delete their own characters from the select screen.                                                                                                  |

***

## Spawn selector

| Key                      | Type            | Default    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ------------------------ | --------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CCConfig.SpawnSelector` | string          | `"never"`  | Spawn-picker mode. `"always"` shows the picker on every login; `"new_only"` shows it only after creating a character (existing characters spawn straight to their saved position); `"never"` disables the picker, so picking a character spawns at its last saved position, and a brand-new character (with no saved position) spawns at `CCConfig.SpawnPoints[1]`. After creating a character the flow returns to the SELECT screen (the new character shows in the roster) rather than spawning directly. |
| `CCConfig.SelectScene`   | string / number | `"random"` | Which showcase scene from `data/scenes.lua` (`CCData.SpawnPosition`) backs the character-select screen. `"random"` or a numeric index.                                                                                                                                                                                                                                                                                                                                                                      |

***

## Creator (character-creation stage)

`CCConfig.Creator` configures the creation scene above Valentine (eastern Heartlands). Most fields are cinematic tuning; the table below documents the top-level keys a server owner would tune.

| Key                                        | Type       | Default                                                                      | Description                                                                                                                                                             |
| ------------------------------------------ | ---------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CCConfig.Creator.roomCoords`              | vector4    | `vector4(2701.96, -1349.34, 47.87, 135.35)`                                  | Stage position and heading where the creator ped stands (same spot as the select scene, with no cross-map teleport).                                                    |
| `CCConfig.Creator.teleportCoords`          | vector3    | `vector3(2701.96, -1349.34, 48.6)`                                           | Where the player is teleported on entry; `BuildPed`/`SettleOnGround` plants the ped exactly.                                                                            |
| `CCConfig.Creator.camera.body`             | table      | `{ dist=4.6, side=0.45, height=0.05, target=-0.03, fov=34.0, zoomDist=2.5 }` | Subject-relative body rig: `dist` forward distance, `side` lateral 3/4 offset, `height` cam height above feet, `target` look-at height, `fov`, `zoomDist` zoom pull-in. |
| `CCConfig.Creator.camera.face`             | table      | `{ dist=1.5, side=0.12, height=0.63, target=0.68, fov=26.0, zoomDist=0.4 }`  | Face-shot rig (same fields).                                                                                                                                            |
| `CCConfig.Creator.camera.barberFace`       | table      | `{ dist=1.15, side=0.15, height=0.65, target=0.62, fov=28.0, zoomDist=0.3 }` | Barber portrait rig, anchored on the HEAD bone (offsets small and head-relative).                                                                                       |
| `CCConfig.Creator.camera.vertRange`        | number     | `0.95`                                                                       | Metres each way the up/down control pans the rig.                                                                                                                       |
| `CCConfig.Creator.scene.hour`              | number     | `18`                                                                         | Locked scene hour (golden hour).                                                                                                                                        |
| `CCConfig.Creator.scene.minute`            | number     | `35`                                                                         | Locked scene minute.                                                                                                                                                    |
| `CCConfig.Creator.scene.weather`           | string     | `"SUNNY"`                                                                    | Weather type (see rdr3\_discoveries `weather_types.lua`).                                                                                                               |
| `CCConfig.Creator.scene.weatherTransition` | number     | `4.0`                                                                        | Weather transition seconds.                                                                                                                                             |
| `CCConfig.Creator.scene.rainLevel`         | number     | `0`                                                                          | `SET_RAIN` override; `0` disables.                                                                                                                                      |
| `CCConfig.Creator.scene.lightning.enabled` | boolean    | `false`                                                                      | Lightning strikes in the scene.                                                                                                                                         |
| `CCConfig.Creator.scene.dof`               | table      | `{ nearStart=0.0, nearEnd=0.0, farStart=6.5, farEnd=42.0 }`                  | `SET_HIDOF_OVERRIDE` depth-of-field planes (ped sharp, world blurred).                                                                                                  |
| `CCConfig.Creator.scene.idleScenario`      | string     | `"MP_COOP_LOBBY_STANDING_A"`                                                 | Subtle idle scenario (male and female).                                                                                                                                 |
| `CCConfig.Creator.teethMood`               | hash / nil | `0x6530A4D3`                                                                 | Facial mood hash held while in the Teeth category so teeth show (use the enum HASH, not the name). `nil` = zoom only.                                                   |
| `CCConfig.Creator.mouseCamera`             | boolean    | `false`                                                                      | **EXPERIMENTAL.** Hold RMB to drag-rotate the ped and pan the camera. Build-dependent control hashes; leave OFF unless testing.                                         |

***

## Select (character-select showcase)

`CCConfig.Select` controls the character-select stage and its per-character cinematics.

| Key                                       | Type         | Default                                                                                                                                                                                   | Description                                                                                                                                                                                                                                                   |
| ----------------------------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CCConfig.Select.pedCoords`               | vector4      | `vector4(-2319.29, -476.02, 144.08, 267.20)`                                                                                                                                              | Fallback "home" mark and facing for the hidden preview ped (Horseshoe Overlook).                                                                                                                                                                              |
| `CCConfig.Select.showcases`               | table\[]     | 4 entries                                                                                                                                                                                 | Per-character showcases (horseback, campfire, mesa lean, telephoto lean). Slot N uses `((N-1) % #showcases)+1`, cycling if there are more characters than showcases. Each has `startCoord`, `walkTo`, `cam` (`offsetX/Y/Z`, `fov`), plus a `horse` or `anim`. |
| `CCConfig.Select.camera`                  | table        | `dist=4.6, side=0.45, height=0.05, target=-0.03, fov=34.0`, `screenShift=0.0`, `orbit=0.0`, `orbitSpeed=0.16`, `introPos=vector3(-2308.3,-476.6,145.1)`, `introFov=50.0`, `introTime=3.4` | Subject-relative select rig (mirrors the creator body rig) plus cinematic intro push-in. `screenShift` offsets the ped if it overlaps the list; `orbit`/`orbitSpeed` add sway; `introPos`/`introFov`/`introTime` define the opening push-in.                  |
| `CCConfig.Select.scene.hour`              | number       | `18`                                                                                                                                                                                      | Locked scene hour.                                                                                                                                                                                                                                            |
| `CCConfig.Select.scene.minute`            | number       | `20`                                                                                                                                                                                      | Locked scene minute.                                                                                                                                                                                                                                          |
| `CCConfig.Select.scene.weather`           | string       | `"SUNNY"`                                                                                                                                                                                 | Weather type.                                                                                                                                                                                                                                                 |
| `CCConfig.Select.scene.weatherTransition` | number       | `6.0`                                                                                                                                                                                     | Weather transition seconds.                                                                                                                                                                                                                                   |
| `CCConfig.Select.scene.rainLevel`         | number       | `0`                                                                                                                                                                                       | Rain override; `0` disables.                                                                                                                                                                                                                                  |
| `CCConfig.Select.scene.timecycle`         | string / nil | `nil`                                                                                                                                                                                     | Optional named timecycle modifier.                                                                                                                                                                                                                            |
| `CCConfig.Select.scene.dof`               | table        | `{ nearStart=0.0, nearEnd=0.0, farStart=7.0, farEnd=55.0 }`                                                                                                                               | Depth-of-field planes.                                                                                                                                                                                                                                        |
| `CCConfig.Select.scene.lightning.enabled` | boolean      | `false`                                                                                                                                                                                   | Lightning toggle.                                                                                                                                                                                                                                             |
| `CCConfig.Select.scene.idleScenarios`     | table        | `mp_male`/`mp_female` lists                                                                                                                                                               | Gender-aware in-place idle scenarios picked at random per character.                                                                                                                                                                                          |
| `CCConfig.Select.scene.light`             | table        | `on=true, toneIndex=0, intensityIndex=1, range=6.5, forward=1.3, height=1.25`, 5 `tones`, `intensities={9.0,17.0,30.0}`                                                                   | Portrait key light (`DRAW_LIGHT_WITH_RANGE`). The atmosphere panel toggles it and cycles tone and intensity; scene time/weather stay fixed so all players keep sync.                                                                                          |

***

## Mugshot capture

Live mugshots ship **disabled by default**. With them off, the character-select screen shows a clean gendered demo portrait per character. When enabled (and `screenshot-basic` is present), captured mugshots are stored in the auto-created `cas_mugshots` table (`charidentifier VARCHAR(60)`, `image LONGTEXT`), with no `.sql` to import.

| Key                               | Type    | Default | Description                                                                                                                                                                |
| --------------------------------- | ------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CCConfig.Mugshot.enabled`        | boolean | `false` | Master switch for live mugshot capture. Ships `false`; set `true` (with `screenshot-basic` installed) to render real per-character portraits instead of the demo portrait. |
| `CCConfig.Mugshot.quality`        | number  | `0.8`   | JPEG quality, `0..1`.                                                                                                                                                      |
| `CCConfig.Mugshot.refreshOnSpawn` | boolean | `true`  | Retake on login if the character has no mugshot.                                                                                                                           |

***

## Map calibration

| Key                               | Type   | Default     | Description                                      |
| --------------------------------- | ------ | ----------- | ------------------------------------------------ |
| `CCConfig.MapCalibration.xScale`  | number | `0.001931`  | Game-X to z5 tile-unit scale for the UI minimap. |
| `CCConfig.MapCalibration.xOffset` | number | `13.64`     | Game-X to tile offset.                           |
| `CCConfig.MapCalibration.yScale`  | number | `-0.001842` | Game-Y to z5 tile-unit scale.                    |
| `CCConfig.MapCalibration.yOffset` | number | `8.055`     | Game-Y to tile offset.                           |

Affine fit against the RDR2CollectorsMap z5 tile grid, accurate to \~0.3 tile.

***

## Spawn points

`CCConfig.SpawnPoints` is an array of spawn presets offered by the spawn selector. The shipped list has **16 entries** across three `tab`s: `regions` (Valentine, Rhodes, Saint Denis, Strawberry, Blackwater, Lagras, Annesburg, Tumbleweed), `camps` (Horseshoe Overlook, Clemens Point, Shady Belle, Colter), and `landmarks` (Braithwaite Manor, Fort Wallace, Manzanita Post, Emerald Ranch). `CCConfig.SpawnPoints[1]` (Valentine) is the fallback spawn for a brand-new first-time character.

| Field     | Type    | Description                                       |
| --------- | ------- | ------------------------------------------------- |
| `id`      | string  | Unique key.                                       |
| `label`   | string  | Display name in the UI.                           |
| `region`  | string  | Region grouping shown under the label.            |
| `tab`     | string  | `"regions"` \| `"camps"` \| `"landmarks"`.        |
| `coords`  | vector3 | World spawn position.                             |
| `heading` | number  | Spawn heading.                                    |
| `map`     | table   | `{ x, y }` z5 tile coords for the UI minimap pin. |

***

## Hooks

| Key                            | Type                  | Default                                  | Description                                                                                                                                                             |
| ------------------------------ | --------------------- | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CCConfig.Hooks.spawnSettings` | string (server event) | `"cas-charcreator:server:spawnSettings"` | Fired on spawn so other systems (weathersync, stables, and others) can react to the player's spawn-settings choices. Payload: `(source, { time, weather, withHorse })`. |

***

## Second Chance

| Key                              | Type   | Default | Description                                                                   |
| -------------------------------- | ------ | ------- | ----------------------------------------------------------------------------- |
| `CCConfig.SecondChance.price`    | number | `100`   | Price of the "second chance" re-customise (vorp\_character compat callbacks). |
| `CCConfig.SecondChance.currency` | number | `0`     | Currency index: `0` money, `1` gold, `2` rol (mapped via `RsgMoney` on RSG).  |

***

## Shops (clothing and barber)

`CCConfig.Shops` builds clothing/barber shops on the existing creator engine: the player walks onto a marker, presses the interact key, and live-edits their CURRENT character in a filtered creator. Confirming charges the configured price and saves; cancelling reverts the look. Disable either shop if another script already handles it.

### Master switch

| Key                               | Type    | Default | Description                                                      |
| --------------------------------- | ------- | ------- | ---------------------------------------------------------------- |
| `CCConfig.Shops.enabled`          | boolean | `true`  | Master switch for the whole shop system.                         |
| `CCConfig.Shops.drawDistance`     | number  | `10.0`  | Metres at which the shop interaction loop wakes up.              |
| `CCConfig.Shops.interactDistance` | number  | `2.0`   | Metres at which the on-screen prompt appears and opens the shop. |

### Clothing store: `CCConfig.Shops.clothing`

| Key           | Type       | Default                                                                     | Description                                                                                                                                                     |
| ------------- | ---------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `enabled`     | boolean    | `true`                                                                      | Toggle the tailor/clothing shop.                                                                                                                                |
| `label`       | string     | `"Clothing Store"`                                                          | Creator title and prompt header (literal fallback).                                                                                                             |
| `subtitle`    | string     | `"FITTING ROOM"`                                                            | Subheader.                                                                                                                                                      |
| `labelKey`    | string     | `"shop.clothing.label"`                                                     | i18n key (remove to use the literal `label`).                                                                                                                   |
| `subtitleKey` | string     | `"shop.clothing.subtitle"`                                                  | i18n key for the subtitle.                                                                                                                                      |
| `price`       | number     | `25`                                                                        | Cost to confirm a change.                                                                                                                                       |
| `currency`    | number     | `0`                                                                         | `0` money, `1` gold, `2` rol.                                                                                                                                   |
| `focus`       | string     | `"body"`                                                                    | Starting camera framing.                                                                                                                                        |
| `bodyCam`     | table      | `{ dist=3.0, side=0.35, height=0.55, target=0.62, fov=44.0, zoomDist=1.5 }` | Tighter interior body rig so the whole character fits in the room.                                                                                              |
| `tilt`        | number     | `-1`                                                                        | Default vertical pan when the store opens.                                                                                                                      |
| `input`       | hash       | `0xC7B5340A`                                                                | Prompt control (ENTER).                                                                                                                                         |
| `blipSprite`  | string     | `"blip_shop_tailor"`                                                        | Map blip sprite.                                                                                                                                                |
| `categories`  | string\[]  | 31 clothing categories                                                      | Allowed editor categories (hats, masks, eyewear, shirts, coats, pants, boots, holsters, rings, and more). Each id must match a category emitted by the creator. |
| `locations`   | vector3\[] | Valentine, Rhodes, Blackwater, Strawberry                                   | Real VORP clothing-store spots where the shop opens.                                                                                                            |

### Barber: `CCConfig.Shops.barber`

> **`CCConfig.Shops.barber.enabled` is the VORP barber on/off switch.** On VORP, cas OWNS the barber: either `stop vorp_barbershop` in `server.cfg` **or** set this to `false`. Pick exactly ONE, never both running (double blips/prompts/UI at the same chairs). On RSG, `rsg-barbers` should be stopped.

| Key            | Type      | Default                                                                                 | Description                                                                                                                              |
| -------------- | --------- | --------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `enabled`      | boolean   | `true`                                                                                  | **VORP barber on/off switch** (cas's barber). Set `false` to let another barber script own the chairs.                                   |
| `label`        | string    | `"Barber"`                                                                              | Creator title and prompt header.                                                                                                         |
| `subtitle`     | string    | `"BARBER SHOP"`                                                                         | Subheader.                                                                                                                               |
| `labelKey`     | string    | `"shop.barber.label"`                                                                   | i18n key.                                                                                                                                |
| `subtitleKey`  | string    | `"shop.barber.subtitle"`                                                                | i18n key for the subtitle.                                                                                                               |
| `price`        | number    | `15`                                                                                    | Cost to confirm a change.                                                                                                                |
| `currency`     | number    | `0`                                                                                     | `0` money, `1` gold, `2` rol.                                                                                                            |
| `focus`        | string    | `"face"`                                                                                | Starting camera framing.                                                                                                                 |
| `input`        | hash      | `0xD9D0E1C0`                                                                            | Prompt control (SPACE).                                                                                                                  |
| `seatScenario` | string    | `"PROP_PLAYER_BARBER_SEAT"`                                                             | Scenario that seats the ped (brings its own chair logic). `nil` = stand instead.                                                         |
| `blipSprite`   | string    | `"blip_shop_barber"`                                                                    | Map blip sprite.                                                                                                                         |
| `intro`        | table     | `{ enabled=true, sitMs=2000, moveMs=1300, sideAngle=38.0, lift=0.18, headOffset=0.55 }` | Cinematic intro: open wide 3/4, drift inward while the ped sits, ease to the face shot. `enabled=false` = hard cut.                      |
| `categories`   | string\[] | 11 grooming categories                                                                  | hair, beard, brows, complexion, foundation, blush, lipstick, eyeliner, eyeshadow, warpaint, scars.                                       |
| `locations`    | table\[]  | Valentine, Saint Denis, Blackwater                                                      | Real in-game barber chairs. Each entry: `coords` (prompt), `seat` (vector4 chair x/y/z/heading), `camPos`, `camRot` (fixed static shot). |

***

## Wardrobe and outfits

Saved outfits live in the auto-created MySQL `outfits` table, so they survive script updates. Open at the configured locations (prompt) or with `/wardrobe` while `DevMode` is on.

| Key                                  | Type       | Default                            | Description                                        |
| ------------------------------------ | ---------- | ---------------------------------- | -------------------------------------------------- |
| `CCConfig.Wardrobe.enabled`          | boolean    | `true`                             | Master switch for the wardrobe system.             |
| `CCConfig.Wardrobe.maxOutfits`       | number     | `12`                               | Saved outfits per character.                       |
| `CCConfig.Wardrobe.drawDistance`     | number     | `10.0`                             | Metres at which the interaction loop wakes.        |
| `CCConfig.Wardrobe.interactDistance` | number     | `2.0`                              | Metres at which the prompt shows and opens.        |
| `CCConfig.Wardrobe.label`            | string     | `"Wardrobe"`                       | Prompt header and UI title.                        |
| `CCConfig.Wardrobe.subtitle`         | string     | `"YOUR SAVED LOOKS"`               | Subheader.                                         |
| `CCConfig.Wardrobe.labelKey`         | string     | `"shop.wardrobe.label"`            | i18n key.                                          |
| `CCConfig.Wardrobe.subtitleKey`      | string     | `"shop.wardrobe.subtitle"`         | i18n key for the subtitle.                         |
| `CCConfig.Wardrobe.input`            | hash       | `0xC7B5340A`                       | Prompt control (ENTER, same as the clothing shop). |
| `CCConfig.Wardrobe.blipSprite`       | string     | `"blip_shop_tailor"`               | Map blip sprite.                                   |
| `CCConfig.Wardrobe.showBlip`         | boolean    | `true`                             | Whether to draw a map blip at each location.       |
| `CCConfig.Wardrobe.locations`        | vector3\[] | Valentine, Saint Denis, Strawberry | Plain `vector3` points; add as many as you want.   |

***

## Color swatches and colorways (UI palettes)

These drive the colour chips in the UI for the unlimited-colorway system: clothing, hair, and beard all tint through RDR2's metaped engine (a palette plus three independent channels, Color 1/2/3), and the swatch lists below are what players pick from. Order matters where noted.

| Key                       | Type                     | Default                                                                               | Description                                                                                                                                                                                                                                                                                                  |
| ------------------------- | ------------------------ | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `CCConfig.SkinToneColors` | string\[] (hex)          | `{ "#e9c9ac", "#6b4a33", "#b07a4e", "#d6a878", "#8a5836", "#4e3320" }`                | Skin-tone swatches. **MUST stay in `CCData.DefaultChar` order** (White, Native Dark, Mexican, Asian, Native, African) so each chip applies the correct head variant; a plain light-to-dark ramp mismatches them.                                                                                             |
| `CCConfig.HairColors`     | table\[] (`{name, hex}`) | 17 named tints (JET\_BLACK to UNCLE\_GREY)                                            | Master hair/beard/brow palette keyed by tint **NAME** (`JET_BLACK`, `BROWN`, `BLONDE`, `GINGER`, `GREY`, and more), ordered dark to light. The creator matches the chosen swatch to the tint whose hashname carries that name, so swatches stay correct regardless of the data's alphabetical storage order. |
| `CCConfig.HairColorHints` | string\[] (hex)          | derived from `HairColors`                                                             | Flat hex list (gradient order) for UI swatches and RGB overlays (brows/stubble). Auto-built from `HairColors`; index matches `HairColors`; do not hand-edit.                                                                                                                                                 |
| `CCConfig.EyeColorHints`  | string\[] (hex)          | 14 hexes                                                                              | Cosmetic eye-colour swatches; index = `CCData.Eyes` tint.                                                                                                                                                                                                                                                    |
| `CCConfig.MakeupColors`   | string\[] (hex)          | `{ "#1a1208","#3b2a1a","#5b3a22","#7a3b3b","#9c4a4a","#c2566b","#7a4a6a","#2b2b2b" }` | Makeup and face-paint swatches (packed to RGBA in the creator).                                                                                                                                                                                                                                              |
| `CCConfig.LipColors`      | string\[] (hex)          | `{ "#7a3b3b","#9c4a4a","#b5556b","#c2566b","#8a3a52","#6e2a3a","#a86a6a","#5b2a2a" }` | Lipstick swatches.                                                                                                                                                                                                                                                                                           |
| `CCConfig.BlushColors`    | string\[] (hex)          | `{ "#c98a7a","#c2566b","#b5556b","#9c4a4a","#a86a6a","#d39a8a" }`                     | Blush swatches.                                                                                                                                                                                                                                                                                              |
| `CCConfig.PaintColors`    | string\[] (hex)          | `{ "#1a1a1a","#7a1f1f","#1f3a7a","#1f7a3a","#e8d3a0","#5b3a22","#2b2b2b","#7a4a6a" }` | War-paint / face-paint swatches.                                                                                                                                                                                                                                                                             |

***

## Framework setup notes

### RSGCore (RSG) servers

In `server.cfg` use `stop rsg-multicharacter` and `stop rsg-barbers` only, then `ensure cas-charcreator`. There are no `stop rsg-appearance` or `stop rsg-wardrobe` lines. Instead, REPLACE the stock `rsg-appearance` resource folder with the CAS `rsg-appearance` stub shipped in this package (same resource name) so it holds that name and `ensure`s normally, and DELETE the stock `rsg-wardrobe` folder (the stub declares `provide 'rsg-wardrobe'`, so it supplies that name). cas owns the spawn (replaces rsg-spawn) and fires `RSGCore:Server:OnPlayerLoaded` and `RSGCore:Client:OnPlayerLoaded` itself. Hybrid storage: `playerskins.skin` holds the cas-format JSON, `playerskins.clothes` holds the RSG hash format. Money is forced to cash via `CCConfig.RsgMoney`.

### VORP servers

There are no framework-swap stop lines on VORP. FXServer must load exactly ONE resource named `vorp_character`, and it must be the cas compat shim that depends on cas-charcreator. Place the shim in your resources folder under a bracketed category folder, for example `resources/[CAS]/vorp_character`.

The original stock `vorp_character` must NOT be loaded by FXServer. Either delete it, or keep it out of any folder the server scans or explicitly ensures. FXServer only loads resources that live under a `[bracketed]` category folder or that you `ensure` by path, so moving the stock copy outside those locations is enough to keep it unloaded. Never leave both the stock resource and the shim where the server can load them, because two resources named `vorp_character` will collide.

Load order: `vorp_core -> cas-charcreator -> vorp_character(shim) -> vorp_inventory`. For the barber, in `server.cfg` use `stop vorp_barbershop` **or** set `CCConfig.Shops.barber.enabled = false` (exactly one). Never hot-stop cas-charcreator alone on a live VORP server; it kills the shim and breaks vorp\_inventory clothing. Restart the chain in order instead.

***

## Related pages

* [installation.md](/script-documentation/character-creator-and-select-and-apppearance/installation.md): full install, database, and `server.cfg` setup for VORP and RSGCore.
* [troubleshooting.md](/script-documentation/character-creator-and-select-and-apppearance/troubleshooting.md): fixes for common multicharacter, appearance, and barber issues.

***

## More resources and support

* [Buy CAS Character Creator (escrow)](https://codeaftersex.com/script/character-creator?v=escrow)
* [Preview video (YouTube)](https://youtu.be/U8ZZdky3a0I)
* [Open-source companions (GitHub)](https://github.com/codeaftersex/cas-charcreator-companions)
* [Support Discord](https://discord.gg/codeaftersex)
* [All CodeAfterSex scripts](https://www.codeaftersex.com)

***

*Part of the* [*CodeAfterSex*](https://codeaftersex.com/) *RedM and FiveM script catalogue. Buy CAS Character Creator:* [*purchase with escrow on CodeAfterSex*](https://codeaftersex.com/script/character-creator?v=escrow)*.*
