How Integrations Work#
Multicharacter looks for the resources below when it starts and switches each integration on by itself. There is nothing to enable — start the resource before Multicharacter and it is picked up.
Layer | Supported (detection order) | Without it |
|---|---|---|
Framework | qs-core → es_extended → qb-core → qbx_core | The resource refuses to start. |
Appearance | rcore_clothing first, then one of qs-appearance, illenium-appearance, esx_skin, qb-clothing, qs-clothing | The resource stops with |
Apartments | qb-apartments → qbx_properties → qbx_apartments → qs-apartments | New characters choose from your spawn points. |
Housing | qs-housing; the old qb-houses table on QB | No houses in the spawn selector. |
HUD | qs-interface | The radar is hidden during selection; no HUD setup step. |
Identity (ESX) | esx_identity | The identity is written by Multicharacter itself. |
Spawn (when the built-in selector is off) | qb-spawn, qbx_spawn | The character spawns at its last position or |
Tutorial | qs-tutorial | No tutorial before the spawn selector. |
Weather sync | qb-weathersync, cd_easytime, vSync, av_weather | Nothing to pause. |
Text UI | qs-textui | ox_lib's text UI. |
Inventory (starter items on QB) | qb-inventory → qs-inventory → ox_inventory | The framework's own add-item function. |
Detection happens once, at start. A resource started after Multicharacter is not seen until
restart qs-multicharacter— keep it last inserver.cfg.
Frameworks#
The first started framework in the order above wins. Servers that run compatibility bridges — an ESX server that also exposes qbx_core or qb-core for other scripts — can match more than one; ESX then wins and the console warns you. To decide yourself:
Config.FrameworkOverride = false -- false = auto-detect | 'esx' | 'qb' | 'qs'Framework | Adapter | Notes |
|---|---|---|
ESX (1.9+ and v1) |
| Characters in |
QBCore |
| Characters in |
Qbox |
| Uses qbx_core's exports for login, logout and deletion; works with or without the qb-core bridge. Needs |
qs-core |
| Runs alongside es_extended; characters in qs-core's |
Each adapter is an open file you can edit: custom/esx/, custom/qb/ and custom/qs/, each with a client.lua and a server.lua. Admin checks, logout, character creation and the SQL queries all live there.
Appearance Scripts#
The appearance script dresses the characters in the selection room and opens its creator for new characters. Exactly one must be started — rcore_clothing is the only one allowed next to another, because it always wins.
Script | Frameworks | Notes |
|---|---|---|
| ESX, QB, Qbox, qs-core | Recommended. On ESX, add |
| ESX, QB, Qbox | On QB, |
| ESX | Supports |
| QB, Qbox |
|
| ESX, QB, Qbox | Its creator opens through its own export. |
| ESX, QB, Qbox | Needs a recent version; an old one loops |
On QB, Config.QBFirstCharacterClothing controls the qb-clothing first-character creator:
Config.QBFirstCharacterClothing = 'auto' -- 'auto' = only when no apartment script will open it | true = always once | false = neverThe bridges for each script are open in client/custom/appearance/ and client/custom/framework/; QB skin saving is in server/custom/framework/qb/.
Apartments and Housing#
Starting apartments#
With an apartment script started, a new character picks its first apartment straight from the spawn selector, and the apartment is created for it.
Resource | Where the apartment list comes from |
|---|---|
| Its own export — any framework. |
| Its |
| Qbox's starting apartment settings. |
Owned houses#
With qs-housing, every house the character owns appears in the spawn selector, and choosing one puts the player at the door. On QB, the old houselocations table of qb-houses is loaded too when it exists.
HUD#
With qs-interface, a player joining for the first time configures their HUD before the selection room opens. The HUD is hidden while choosing a character and comes back on spawn. If qs-interface takes too long to start, or the player takes too long in the setup, the menu opens anyway after HudInterfaceWaitMs / HudConfigureTimeoutMs.
Recommended: Loading Screen. For a seamless join from the first second, pair Multicharacter with our Loading Screen script — a separate resource with its own in-game theme designer.
Weather Sync#
The selection room and the spawn selector set their own time and weather. qb-weathersync, cd_easytime, vSync and av_weather are paused while they are open and resumed on spawn. Another weather script can be added in client/custom/main.lua, inside WeatherSyncEvent:
function WeatherSyncEvent(isSyncEnabled)
if isSyncEnabled then
-- menu opened: pause weather sync
TriggerEvent('qb-weathersync:client:DisableSync')
TriggerEvent('my_weather:pause', true) -- add your script here
else
-- player spawned: resume weather sync
TriggerEvent('qb-weathersync:client:EnableSync')
TriggerEvent('my_weather:pause', false)
end
endLanguages#
41 translations are included: ar, bg, bn, ca, cs, da, de, el, en, es, et, fa, fi, fr, he, hi, hr, hu, id, it, ja, ko, lt, lv, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, sw, th, tr, uk, ur, vi and zh. Choose one for every Quasar resource at once in server.cfg:
setr qs:locale "fr"Texts are in locales/<code>.json. Any key missing from your language falls back to English, so a partial translation never shows blank text. To add a language, copy en.json to a new code and translate the values.



