> For the complete documentation index, see [llms.txt](https://docs.otherplanet.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.otherplanet.dev/scripts/op-clothing/exports-events/server-side.md).

# Server Side

## Exports & Events

{% hint style="warning" %}
If you're looking for other data than listed here - feel free to contact us on our [Discord Server](https://discord.gg/otherplanet)!
{% endhint %}

### GetAppearance (server)

Returns the player's saved appearance from the database.

```lua
local appearance = exports['op-clothing']:GetAppearance(src)
```

***

### SetAppearance (server)

Saves and applies a full appearance to the player. Pass a `pedNetId` to target a specific ped.

```lua
exports['op-clothing']:SetAppearance(src, appearance, pedNetId)
```

***

### SetClothing (server)

Applies only the clothing part of an appearance to the player.

```lua
exports['op-clothing']:SetClothing(src, appearance, pedNetId)
```

***

### SaveAppearance (server)

Persists an appearance for the player without re-applying it.

```lua
exports['op-clothing']:SaveAppearance(src, appearance)
```

***

### GetOutfits

Returns the player's saved outfits.

```lua
local outfits = exports['op-clothing']:GetOutfits(src)
```

***

### OpenShop

Opens a clothing shop on the player's client (aliases: `OpenClothingShop`, `OpenBarberShop`, `OpenTattooShop`).

```lua
exports['op-clothing']:OpenShop(src, shopId)
```

***

### OpenCharacterCreator (server)

Opens the character creator on the player's client.

```lua
exports['op-clothing']:OpenCharacterCreator(src, opts)
```

***

### OpenJobLocker (server)

Opens a job locker on the player's client.

```lua
exports['op-clothing']:OpenJobLocker(src, lockerId)
```

***

### CanOpenJobLocker

Returns a `boolean` - whether the player may open the given locker.

```lua
local canOpen = exports['op-clothing']:CanOpenJobLocker(src, lockerId)
```

***

### GetShop / GetAllShops

Returns a single shop config, or all shops.

```lua
local shop = exports['op-clothing']:GetShop(shopId)
local shops = exports['op-clothing']:GetAllShops()
```

***

### GetJobLocker / GetAllJobLockers

Returns a single locker config, or all lockers.

```lua
local locker = exports['op-clothing']:GetJobLocker(lockerId)
local lockers = exports['op-clothing']:GetAllJobLockers()
```

***

### Custom ped permissions

Grant, revoke or check a player's permission to use custom peds.

```lua
exports['op-clothing']:GrantCustomPedPermission(src)
exports['op-clothing']:RevokeCustomPedPermission(src)
local has = exports['op-clothing']:HasCustomPedPermission(src)
```

## Server Events

### op-clothing:server:characterCreated

Fired server-side when a player finishes the character creator.

```lua
AddEventHandler('op-clothing:server:characterCreated', function(src, appearance)
    -- Your Code
end)
```

***

### op-clothing:server:purchased

Fired server-side after a successful purchase.

```lua
AddEventHandler('op-clothing:server:purchased', function(src, shopId, price)
    -- Your Code
end)
```
