Multicharacter
Integrations
Appearance resources, custom clothing adapters, inventories, and screenshot-basic.
On this page3 sections
Appearance resources
Appearance is always applied by your clothing resource, through its own function. SC Multicharacter never sets components by hand, because only the clothing resource knows its outfits, overlays, and extras.
| Key | Resource | Format | Editor on creation |
|---|---|---|---|
illenium | illenium-appearance | appearance | Yes |
fivem_appearance | fivem-appearance | appearance | Yes |
qb_clothing | qb-clothing | qb | No |
op_clothing | op-clothing | qb | Yes |
um_clothing | um-clothing | qb | No |
rcore | rcore_clothing | appearance | Yes |
esx_skin | skinchanger + esx_skin | skinchanger | Yes |
Config.Appearance = 'auto''auto'tries resources in theOrderfrombridge/client/appearance.luaand uses the first running one that understands the saved appearance.- A key such as
'illenium'forces one adapter. falsedisables appearance handling.
The resource detects the saved format: nested components and headBlend, or a flat skinchanger table. Adapters that do not understand it are skipped. When nothing matches, skinchanger builds a full appearance from scratch with the right gender.
Custom clothing resource
bridge/client/appearance.lua is editable. Add an entry to Adapters:
SC.Bridge.Appearance.Adapters.my_clothing = { resource = 'my-clothing', format = 'appearance', apply = 'export', applyName = 'setPedAppearance', editor = 'export', editorName = 'openCreator',}Then add 'my_clothing' to Order, first if it should win, or set Config.Appearance = 'my_clothing'.
| Field | Description |
|---|---|
resource | Resource that must be running for the adapter to be used. Without it, the adapter is always used. |
format | 'appearance', 'skinchanger', or 'qb'. A saved appearance in another format skips the adapter. |
apply, applyName | Applies the saved appearance. 'export' calls exports[resource][applyName](appearance), 'event' calls TriggerEvent(applyName, appearance). |
editor, editorName | Opens the editor for a new character. Same kinds as apply. Gets a callback to call when editing ends. Optional. |
load, loadName | For systems that store appearance in their own table. Called with { citizenid, gender, source } instead of apply. Optional. |
editorResource | When the editor lives in another resource than resource, such as esx_skin next to skinchanger. |
shape | 'skinchanger' only. Builds a full appearance from scratch, which makes the adapter a fallback. |
apply, editor, and load can also be functions when the resource API is more than one export:
SC.Bridge.Appearance.Adapters.my_clothing = { resource = 'my-clothing', format = 'appearance', apply = function(appearance) exports['my-clothing']:setModel(appearance.model) exports['my-clothing']:setAppearance(PlayerPedId(), appearance) end, editor = function(done) exports['my-clothing']:openCreator({ onClose = done }) end,}Inventory
Config.Inventory = 'auto'After selection, the resource tells the inventory the character is ready, then grants starting items.
| Value | Resource |
|---|---|
'auto' | First running one of ox_inventory, qb-inventory, qs-inventory |
'ox_inventory' | ox_inventory |
'qb_inventory' | qb-inventory |
'qs_inventory' | qs-inventory |
false | No inventory notification |
On ox_core, this step is skipped because ox_core creates the inventory itself.
When the inventory is ready
Once the inventory exists, the resource:
- grants the picked starting items from
Config.StartingItems - calls the
GiveStartingItemshook - fires
sc_multicharacter:inventoryReadyon the server and client
Grant your own items in GiveStartingItems or on inventoryReady, not on characterCreated. The inventory does not exist yet at that point.
Starting item images
With Config.StartingItems.itemImages = 'auto', images come from the inventory:
| Inventory | Path |
|---|---|
| ox_inventory | nui://ox_inventory/web/images/<item>.png |
| qb-inventory | nui://qb-inventory/html/images/<item>.png |
| qs-inventory | nui://qs-inventory/html/images/<item>.png |
screenshot-basic
screenshot-basic (opens in a new tab) is the official Cfx.re screenshot resource. SC Multicharacter uses it only for automatic spawn location photos.
- Download screenshot-basic from GitHub releases.
- Upload it to
resources. - Add
ensure screenshot-basicbeforesc_multicharacter. - Make sure
Config.SpawnSelector.photos = true.
Photos are stored locally for each player. They never reach the server or the internet.
Without screenshot-basic, everything works and locations show a monogram badge. See Spawn Selector.