Before You Begin#
Before installing Multicharacter, make sure your server has the four things it cannot run without. Everything else is optional and detected on its own.
Requirement | Status | Notes |
|---|---|---|
| Required | Database access. The database name is read from your |
| Required | Callbacks, model loading and text UI. |
Framework | Required |
|
Appearance script | Required (exactly one) |
|
Apartments | Optional |
|
Housing | Optional |
|
HUD | Optional |
|
How each optional resource is detected, and what happens without it, is on Integrations.
github.comReleases · overextended/oxmysqlMySQL resource for FXServer.github.comReleases · overextended/ox_libA FiveM resource and script library for Lua and JS.Downloading Multicharacter#
Everything bought on the Quasar Store is delivered through the Cfx.re portal. Open Granted Assets, sign in with the same Cfx.re account you used at checkout, and download Multicharacter. With a different account the asset does not appear.
Inside the archive you will find the resource folder:
qs-multicharacter/
├── client/ -- client logic (client/custom/ is editable)
├── config/main.lua -- every setting
├── custom/ -- framework bridges for esx, qb and qs (editable)
├── locales/ -- 41 languages
├── server/ -- server logic (server/custom/ is editable)
├── shared/
├── web/ -- the interface, images and sounds
└── fxmanifest.luaThe folder must be named
qs-multicharacter. The interface path, the exports and the ESX detection all use that name, so a renamed copy loads a blank menu.
Removing the Old Character Menu#
Two character menus cannot run at once. Remove or disable the one your framework shipped with before starting Multicharacter.
Delete esx_multicharacter and remove its ensure line. Multicharacter declares provide 'esx_multicharacter', so ESX 1.9 and newer switch to multicharacter mode automatically — the qs-multicharacter folder only has to exist when es_extended starts.
On old ESX v1, set this in es_extended/config.lua:
Config.Multichar = trueKeep esx_identity if you use it: Multicharacter registers new identities through it. On older versions of esx_identity set Config.UseDeferrals = false so its registration callback exists.
Delete qb-multicharacter and remove its ensure line. Remove qb-spawn as well when you use the built-in spawn selector (Config.EnableDefaultSpawnSelector = true, the default).
qb-apartments is supported and its config is read straight from the manifest.
Qbox has its own character menu built into qbx_core. Hand it over to Multicharacter in qbx_core/config/client.lua:
characters = {
useExternalCharacters = true,
-- ...
}If you use qbx_spawn or qbx_properties, comment out their CreateFirstCharacter trigger so the clothing creator does not open twice.
Nothing to remove. qs-core runs on top of es_extended; Multicharacter recognises the pair and uses the qs adapter without a warning.
Installing the Resource#
Place the folder inside your resources directory, for example:
resources/[qs]/qs-multicharacter/Then add it to server.cfg after the framework and the appearance script, and after any apartments, housing or HUD resource you use:
ensure oxmysql
ensure ox_lib
# framework
ensure es_extended # or qb-core / qbx_core / qs-core
# appearance (exactly one)
ensure qs-appearance
# optional integrations
ensure qs-interface
ensure qs-apartments
ensure qs-housing
ensure qs-multicharacterOrder matters: Multicharacter looks for your framework, appearance, apartments, housing and HUD when it starts. A resource started after it is not seen until the next restart.
The Database#
There is no SQL file to import. One second after the resource starts it creates its two tables, and on an update it adds any column an older version is missing. Your characters stay in your framework's own tables.
Table | Holds |
|---|---|
| One row per license with the locked slots that player has unlocked, e.g. |
| Every unlock: Tebex transaction ID, slot, payment type ( |
| Characters, keyed |
| Characters; the |
Coming from esx_multicharacter? Old rows saved with a bare license are renamed to the first free
char<slot>:identifier the first time the player joins. Coming from qb-multicharacter? It numbers slots from 1, Multicharacter from 0 — see Common Errors if a character is missing.
Configuring the Resource#
Every setting lives in config/main.lua. Each line is tagged so you know what is safe to touch:
Tag | Meaning |
|---|---|
| Safe to change. |
| Advanced — change only if you understand the effect. |
| Core logic — leave it alone. |
| Filled in by detection — never edit by hand. |
The first values most servers change:
Config.ServerName = 'QUASAR ROLEPLAY' -- shown on the landing page
Config.LogoFile = 'logo.webp' -- file in web/images/ or a full URL (512px webp/png)
Config.Spawn = vec4(-284.2856, 562.4627, 172.9182, 19.9895) -- fallback spawn
Config.StarterItems = {
{ item = 'phone', amount = 1 },
}
Config.DiscordUrl = 'https://discord.gg/your-server'
Config.TebexUrl = 'https://your-store.tebex.io'
Config.Debug = falseThe language is shared by every Quasar resource and set once in server.cfg:
setr qs:locale "es"Every other option — spawn points, slots, cameras, scenarios, the landing page, theme colours and timeouts — is explained on Usage.
Verifying the Installation#
Start the server and read the console. A healthy start prints the appearance script it found and, with Config.Debug off, nothing in red:
MULTICHARACTER INFO: Appearance: qs-appearance
You are using the latest version of qs-multicharacter!Then join the server:
Reach the landing page
Once the game has loaded you see your logo and server name. Press Ready to start; a short scenario plays and the selection room opens.
Create a character
Pick an empty slot, fill in the identity form, and your appearance script's creator opens. Save the outfit.
Spawn
Watch (or skip with
E) the plane arrival, pick a location in the spawn selector and you are in the world with your starter items. Type/qs:logoutto return to the selection room.
Something red in the console? Every message the resource prints is listed with its fix on Common Errors.



