> ## Documentation Index
> Fetch the complete documentation index at: https://rust-co.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# API & events

> Integrações públicas do RCO Appearance para editor, aparência, roupas, dress/undress, wardrobe e Quick Clothing.

A regra principal é simples:

> **Estar visível no ped não significa automaticamente estar salvo no personagem.**

Use APIs client para estado visual/gameplay. Para editor ou aparência persistente, use as APIs autorizadas no server.

## Abrir editor persistente

### Server: `OpenEditor(source, options)`

```lua theme={"dark"}
local ok = exports['rco-appearance']:OpenEditor(source, {
    mode = 'barber', -- creator | clothing | barber | tattoo | wardrobe
})
```

Use a partir de código **server-side confiável**.

### Server: `OpenWardrobe(source, options?)`

```lua theme={"dark"}
local ok = exports['rco-appearance']:OpenWardrobe(source)
```

Integração indicada para houses, hotels, camps e properties. Veja [Wardrobe integrations](/pt-BR/rco-appearance/wardrobe-integration).

### Client: `OpenEditor` / `OpenWardrobe` persistente

O client não pode conceder a própria autorização de save. Chamadas client persistentes retornam:

```text theme={"dark"}
false, 'server_authorization_required'
```

Para um editor propositalmente local/visual:

```lua theme={"dark"}
local ok = exports['rco-appearance']:OpenEditorLocal({ mode = 'clothing' })
```

## Aparência visual

```lua theme={"dark"}
exports['rco-appearance']:ApplyAppearance(snapshot)
exports['rco-appearance']:ApplyAppearance(ped, snapshot)

local snapshot = exports['rco-appearance']:GetAppearance(ped)
```

`ApplyAppearance` aplica visualmente. **Não é save de banco.**

`GetAppearance` captura o visual atual, que pode estar em preview ou estado transitório.

### Reload

Client:

```lua theme={"dark"}
exports['rco-appearance']:ReloadAppearance()
```

Server:

```lua theme={"dark"}
exports['rco-appearance']:ReloadAppearance(source)
```

Os dois caminhos pedem a aparência RCO salva do personagem.

## Helpers diretos de roupa

```lua theme={"dark"}
local item = exports['rco-appearance']:GetEquipped('hats')

local ok, reason = exports['rco-appearance']:EquipCategory('hats', itemData)
local ok, reason = exports['rco-appearance']:UnequipCategory('hats')
```

São helpers do ped live. Para toggle temporário com sync/reapply, prefira [Quick Clothing](/pt-BR/rco-appearance/quick-clothing).

## Dress / Undress

Para medical, bathing, prison, hotel ou outro gameplay que precisa tirar a roupa inteira:

```lua theme={"dark"}
local ok, reason = exports['rco-appearance']:Undress()
local ok, reason = exports['rco-appearance']:Dress()
```

Ou:

```lua theme={"dark"}
exports['rco-appearance']:SetUndressed(true)
exports['rco-appearance']:SetUndressed(false)
```

Comportamento:

* `Undress()` remove as roupas do ped visualmente;
* `Dress()` pede novamente a aparência salva ao server;
* ficar temporariamente sem roupa **não sobrescreve** o snapshot salvo;
* um estado Quick Clothing compatível pode ser reaplicado depois que a aparência base voltar.

<Note>
  Para tirar só hat, coat, gunbelt, holsters etc., use Quick Clothing. Para remover a roupa do personagem como um todo, use `Undress` / `Dress`.
</Note>

## Estado do editor

```lua theme={"dark"}
local open = exports['rco-appearance']:IsEditorOpen()
```

## Persistência por personagem

```lua theme={"dark"}
exports['rco-appearance']:GetAppearanceForCharacter(charId, function(snapshot, err)
    -- snapshot canônico salvo
end)
```

```lua theme={"dark"}
exports['rco-appearance']:SetAppearanceForCharacter(charId, snapshot, function(ok, err)
    -- espere o callback antes de assumir que salvou
end)
```

`charId` deve ser tratado como identificador opaco do framework.

## Outfits

```lua theme={"dark"}
exports['rco-appearance']:ListOutfits(source, function(outfits, err)
    -- outfits salvos do personagem ativo
end)
```

Para houses/hotels, normalmente é mais simples abrir o wardrobe nativo do RCO.

## Quick Clothing

```lua theme={"dark"}
exports['rco-appearance']:ToggleClothing('hat')
exports['rco-appearance']:ToggleClothing('holsters')
exports['rco-appearance']:SetClothingVisible('coat', false)

exports['rco-appearance']:ToggleSleeves()
exports['rco-appearance']:SetSleeves('rolled')
exports['rco-appearance']:ToggleCollar()
exports['rco-appearance']:SetCollar('open')
exports['rco-appearance']:TogglePantsTuck()
exports['rco-appearance']:SetPantsTucked(true)

exports['rco-appearance']:ToggleGunBelt()
exports['rco-appearance']:ToggleClosedCoat()
```

`ToggleGunBelt()` é um helper para `gunbelt`.

Para gun holsters use a categoria genérica:

```lua theme={"dark"}
exports['rco-appearance']:ToggleClothing('holsters')
```

`ToggleClosedCoat()` é alias do grupo lógico `coat`, que inclui as variações open/closed e acessórios de coat controlados pelo RCO.

Server:

```lua theme={"dark"}
exports['rco-appearance']:SetPlayerClothingVisible(source, 'hat', false)
exports['rco-appearance']:TogglePlayerClothing(source, 'holsters')
exports['rco-appearance']:SetPlayerClothingTransform(source, 'sleeves', 'rolled')
exports['rco-appearance']:ResetPlayerClothingToggles(source)
```

Contrato completo: [Quick Clothing](/pt-BR/rco-appearance/quick-clothing).

## Compatibilidade framework

O RCO mantém aliases/shims conhecidos onde existe equivalente seguro, mas resources novos devem preferir:

```lua theme={"dark"}
exports['rco-appearance']:...
```

para manter o mesmo contrato entre RSG e VORP.
