Installation
Requirements
| Resource | Notes |
|---|---|
| koja-lib | Required |
| oxmysql | Required |
| es_extended (Legacy), qb-core or qbx_core | Detected automatically |
| Koja Appearance or illenium-appearance | Recommended. fivem-appearance, qb-clothing and esx_skin also work |
| koja-spawnselector | Optional. Its map replaces the built-in spawn screen |
-
Add the resource
Putkoja-multicharacterin yourresourcesfolder. -
Set up your framework
Remove
ensure esx_multicharacterandensure esx_identityfromserver.cfg.ESX only loads characters in multicharacter mode when
Config.Multicharis true. es_extended sets it to true when theesx_multicharacterfolder exists, so either keep that folder inresourceswithout ensuring it, or set it yourself ines_extended/shared/config/main.lua:es_extended/shared/config/main.luaConfig.Multichar = trueThe resource prints a red warning on start when
Config.Multicharis false.Remove
ensure qb-multicharacterandensure qb-spawnfromserver.cfg.Disable the built-in character menu in
qbx_core/config/client.lua:qbx_core/config/client.luacharacters = { useExternalCharacters = true, }Stop
qbx_spawnif you use it. -
Start it after its dependencies
server.cfgensure oxmysql ensure es_extended # or qb-core / qbx_core ensure koja-lib ensure illenium-appearance ensure koja-spawnselector # optional ensure koja-multicharacter -
Start the server
The tables are created on the first start.sql/koja_multicharacter.sqlis only there for reference. On ESX the resource also widens theidentifierandownercolumns so the character prefix (char1:) fits. Turn this off withConfig.Esx.AutoResizeColumns = false.
Discord logs (optional)
set kmc_webhook_created "https://discord.com/api/webhooks/..."
set kmc_webhook_deleted "https://discord.com/api/webhooks/..."
set kmc_webhook_selected "https://discord.com/api/webhooks/..."
set kmc_webhook_admin "https://discord.com/api/webhooks/..."Character selection is only logged when ServerConfig.LogSelected = true in server/config.lua.
Slot tiers and admin access (optional)
add_ace group.vip koja.multicharacter.slots.vip allow
add_ace group.admin koja.multicharacter.slots.staff allow
add_ace group.admin koja.multicharacter.admin allowThe tier ACEs and slot counts are set in Config.Slots.Tiers. Framework groups listed in Config.Admin.Groups can use the admin commands without the ACE.
Building the UI (only if you change it)
cd web
pnpm install
pnpm build # outputs web/build
pnpm dev # browser preview with mock data on http://localhost:5201