> For the complete documentation index, see [llms.txt](https://docs.cuxial.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cuxial.com/scripts/core/cuxial-appearance/features.md).

# Features guide

How Cuxial Appearance is used in game: shops, creator, outfits, wardrobe, second hand, trimmer, photo studio and the staff panel.

What players and staff can do with Cuxial Appearance, and the rules behind each part.

## Shops

A shop is a polygon on the map. Inside it the player sees a prompt and presses <kbd>E</kbd> to open the menu of that shop.

| Type         | Tabs                                                          | Blip |
| ------------ | ------------------------------------------------------------- | ---- |
| `clothing`   | Clothes, accessories, outfits                                 | Yes  |
| `barber`     | Hair, makeup                                                  | Yes  |
| `surgeon`    | Heritage, face                                                | Yes  |
| `appearance` | Everything, plus tattoos when the built-in tattoos are active | No   |
| `resale`     | Second-hand counter                                           | Yes  |

* **Price.** Each shop has one price. It is charged once when the player confirms, whatever the number of changes. The player picks cash or bank.
* **Jobs.** A shop with jobs is only usable by players with one of them. The prompt does not show for anyone else.
* **Restricted pieces.** A shop can refuse to sell some pieces, for example masks.
* **Overlap.** Where two shops overlap, the one the player opened is used; if that cannot be told, the most expensive one.

Shops are created and edited in game from the [staff panel](#staff-panel). The tabs of each type are set in `data/menus.lua`.

## Character creator

A new character goes through the creator: the full menu, with no price and no way to leave without saving. The player is alone in their own instance while it is open. If saving the chosen look fails, a default look is saved so the character is never left without one.

The creator is launched by your multicharacter resource. See [Exports & events](/scripts/core/cuxial-appearance/developers.md#initialcreation).

## Catalogue and photos

With photos taken, the catalogue shows each garment with its picture. Photos exist per gender and are taken by staff in the [photo studio](#photo-studio). Garments with no photo still appear, without a picture.

With `cuxial_emotes` running, the menu also offers poses to check the look.

## Outfits

The outfits tab lists the personal outfits of the character and the job outfits their rank allows.

| Action         | What it does                                                                                                                                                      |
| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Add outfit     | Saves the clothes being worn under a name. Inside a shop it costs the price of that shop; outside, `prices.outfitPrice`. Up to `prices.maxOutfits` per character. |
| Add job outfit | Only for the boss of a job. Saved with a minimum rank; every member with that rank or higher sees it.                                                             |
| Use            | Wears the outfit.                                                                                                                                                 |
| Update         | Overwrites the outfit with the current clothes.                                                                                                                   |
| Rename, delete | Manage the list.                                                                                                                                                  |
| Share          | Offers the outfit to a player within 5 metres who uses the same model. They accept or decline.                                                                    |
| Code           | Creates a code other players can import into their own list.                                                                                                      |
| Set            | Packs the outfit into an outfit item for `prices.outfitBagPrice`. Using the item wears it; it only fits the model it was made with.                               |

## Outfit bag

The outfit bag is an item. Using it places a bag on the ground in front of the player.

* The bag holds `outfits.bagSlots` outfits. From the bag the player saves the current outfit into a slot, renames it, removes it, or wears it whole or in part: only the mask, the torso, the trousers or the shoes.
* The owner can make the bag public, so other players can open it and wear its outfits, or keep it private.
* Only the owner picks the bag up. A bag left on the ground is returned on the next login.
* With `outfits.bagStorage = 'citizenid'` the outfits belong to the character. With `'item'` they travel inside the item.

Opening and picking up a placed bag needs a target resource.

## Wardrobe

`/vestuario` opens a panel with the pieces of the character grouped by head, torso and legs.

* Taking a piece off turns it into a garment item in the inventory. Putting it on consumes the item.
* A garment item remembers its piece, drawable, texture and collection, and shows the catalogue photo when there is one.
* Using a garment item from the inventory wears it and returns, as an item, whatever was worn in that place.
* Garments reserved in the whitelist cannot be worn by players without the grant.

### Inventory mode

With the convar `cuxial_appearance:inventory` at `1`, clothing moves into the inventory:

* The wardrobe command opens the clothing panel of the inventory instead of its own panel.
* **Garment bags** hold loose garments. Garments can be stored and worn in bulk from a bag.
* **Purchase returns.** When a purchase replaces garments, the old ones are handed back as items: to a garment bag with room or to the inventory, in the order set in `wardrobe.purchase.destination`. If nothing fits, the player can add a new garment bag to the purchase for `wardrobe.bag.price`, or the purchase is refused.
* **Body search.** Another resource can list what a player wears and take pieces from them. Only the pieces in `wardrobe.search.pieces` can be taken. Every piece taken is logged.
* A worn garment can be handed to a nearby player.

## Second hand

A `resale` shop buys loose garment items.

* The counter lists the garments the player carries with the price offered for each.
* The price is the base price of the piece × `secondHand.payout`, × `secondHand.collectionFactor` for collection garments.
* Garments reserved in the whitelist and pieces with a base price of `0` are not bought.
* Up to `secondHand.maxPerSale` garments per sale. The money goes to cash or bank, as set in `secondHand.account`.
* Every sale is logged and shown in the staff panel.

## Trimmer

Using the trimmer shaves the nearest player within `trimmer.range`.

* Both players play a paired animation for `trimmer.duration`. If they are apart when it ends, nothing is applied.
* The target ends up with the bald style of `trimmer.bald`, or with the custom haircut of a trimmer given by `/givetrimmer`.
* The target cannot change hair for `trimmer.hairLockMinutes`, not even at a barber.
* Neither player can be in a vehicle, and the target must use one of the models in `trimmer.models`.

The trimmer needs `cuxial_emotes`.

## Restrictions

Three ways to keep garments or models out of reach, from the most general to the most specific:

| Tool      | Where                         | Use it for                                                                                                  |
| --------- | ----------------------------- | ----------------------------------------------------------------------------------------------------------- |
| Blacklist | `data/blacklist.lua`          | Hiding garments or models from everyone, from everyone outside a job shop, or from everyone outside a gang. |
| ACE       | `aces` in `shared/config.lua` | Garments or models for players with an ACE permission: donors, staff.                                       |
| Whitelist | Staff panel                   | A garment, or one texture of it, reserved to the characters you list.                                       |

Every restriction is checked again on the server when an appearance, clothes or an outfit is saved, and when a garment is used as an item: a restricted garment is discarded, and a model that is not allowed is refused. A gang group of the blacklist applies to everyone outside that gang; its members keep those garments. Staff are exempt.

## Staff panel

`/adminclothing` opens the panel. It has five sections.

| Section   | What you do there                                                                                                                                                                                                                                      |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Shops     | Create, edit, disable and delete shops. Draw the zone with a free camera by marking its corners on the ground. Set type, price, jobs, restricted pieces and the blip (on or off, sprite, colour, position). Import the default shops that are missing. |
| Whitelist | Reserve a garment to a list of characters. The piece number can be captured from the garment you are wearing.                                                                                                                                          |
| Players   | See what an online player wears and the loose garments they carry. Take a piece off them, give them a garment item, or reload their look.                                                                                                              |
| Logs      | The latest second-hand sales and body searches.                                                                                                                                                                                                        |
| Settings  | Prices, wardrobe, second hand, trimmer and menu opacity. Changes apply at once to everyone, with no restart. Settings can be exported, imported and reset.                                                                                             |

Shop and whitelist changes also reach every player at once. Staff actions are stored in an audit table and sent to the Discord webhook when one is set.

## Photo studio

`/fotosropa male` or `/fotosropa female` opens the studio.

1. The staff member is moved to an empty spot in a separate instance, on the freemode model of that gender.
2. They choose the categories to shoot and start. Each garment is put on, framed, captured and uploaded.
3. The session can be paused, resumed and cancelled. Cameras can be adjusted per category and saved.
4. On finish, the photos are published: the photos resource restarts and every player's catalogue updates.

A session can be limited to the garments that have no photo yet, so a new clothing pack only costs its own garments. A photo can be flagged to be taken again.

{% hint style="info" %}
Run a session for each gender. A full first session takes a while: it goes through every garment of the game and of your clothing packs.
{% endhint %}

## Logs

With a webhook set, these go to Discord: shop changes, body searches, second-hand sales and staff actions on players. The same actions are stored in the database; audit rows older than 60 days are removed every day.


---

# 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://docs.cuxial.com/scripts/core/cuxial-appearance/features.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.
