Overview
RARX Multicharacter is an advanced character selection system for FiveM servers featuring a built-in loading screen, main menu, spawn selector, starter vehicle system, and a full admin panel. The framework is auto-detected at runtime — no manual configuration needed.Features
Character Management
Loading Screen
Main Menu
Spawn Selector
Starter Vehicle
Admin Panel
Appearance Integration
Housing Integration
Requirements
- Framework: ESX, QBCore, or QBox (auto-detected)
- ox_lib
- oxmysql
- rarx_lib
qbx_core -> qb-core -> es_extended. No manual framework configuration is needed.Installation
Download & extract
rarx_multicharacter from your Keymaster and extract it into your resources/ folder (e.g. resources/[core]/rarx_multicharacter/).Import the database
install/ folder contains framework-specific SQL files. For ESX, run them in this order:install/qb.sql or install/qbox.sql.CREATE TABLE statements use IF NOT EXISTS, so re-running them on an existing install is safe.Edit server.cfg
es_extended initializes its multichar handlers. Recommended layout:Apply framework-specific setup
es_extended; if you skip it the selector will never open.Configure & restart
config.lua to set your branding, slot counts, spawn locations and admin permissions, then perform a full server restart (not just restart rarx_multicharacter). Some settings — especially Config.Multichar in es_extended — are only read at script load.Framework-Specific Setup
- QBox (qbx_core)
- QBCore
- ESX
- Open
qbx_core/config/client.lua - Find
useExternalCharacters = false - Change to
useExternalCharacters = true
Verifying the install
After restarting the server, connect once and check both consoles for these signals. They confirm each stage of the boot completed correctly.Server console (txAdmin live or `fxserver.log`)
es_extended never prints “initialized!” something is wrong with oxmysql or your jobs table.Client (F8)
Config.Debug = true in rarx_multicharacter/config.lua for extra [rarx_multicharacter] lines that trace every step.Database
users row:identifier prefixed char1:, char2:, etc., a populated skin (illenium appearance JSON) and a saved position. If skin_len = 0, illenium’s save callback didn’t fire — see the troubleshooting section.Clean reset (re-test from scratch)
If you need to wipe a test player and start over (for example after fixing a half-broken install):Configuration
Language
The language is set via therarx-lang convar in your server.cfg, shared across all RARX resources:
en (English) and es (Spanish). To add another, copy translates/en.lua and translate the strings inside it.
UI Appearance
Color Scheme
Character Info Display
Spawn System
Starter Vehicle
Loading Screen
Main Menu
Apartment Integration
Commands
Slot Management
Character Management (ESX)
Character Management (QBCore / QBox)
Other Commands
Admin Panel
The admin panel provides full character management capabilities with Discord webhook logging.Access Control
discord:123456789) or without (123456789). Both will match correctly on every framework.Features
- Slot Management — Grant or remove character slots per player
- Character Activation/Deactivation — Disable or re-enable character profiles with required reasons
- Character Kill (CK) — Permanently remove characters with automatic backup creation
- Discord Webhooks — Log all admin actions to separate Discord channels
Webhook Configuration
Appearance Systems
The script integrates with these appearance resources for character display during selection:- rarx_clothing (recommended)
- illenium-appearance
- fivem-appearance
- bl_appearance
- origen_clothing
- qb-clothing
Anticheat Compatibility
This resource uses natives during character selection and spawn that may trigger false positives in anticheats. Below are the exact events and the natives they execute, so you can whitelist them.Character Selection
Event:rarx_multicharacter:client:openMenu
Spawn
Events:rarx_multicharacter:client:spawnDefaultrarx_multicharacter:client:spawnInApartmentrarx_multicharacter:client:spawnInFirstApartment
Summary
Troubleshooting
Characters not loading
Characters not loading
oxmysql is started before this resource.Blank/invisible characters
Blank/invisible characters
Admin panel not accessible
Admin panel not accessible
Config.AdminSystem.adminIdentifiers or that you have the correct ACE permission.Spawn selector not showing
Spawn selector not showing
Config.SpawnSystem.enabled = true and that character positions are configured in Config.chars.QBox characters not working
QBox characters not working
useExternalCharacters = true is set in qbx_core/config/client.lua.Starter vehicles not appearing
Starter vehicles not appearing
Config.StarterVehicle.enabled = true and that the vehicle models exist in your server.Loading screen shows wrong logo
Loading screen shows wrong logo
ui/loadingConfig.js instead of config.lua. Edit both files with the same logo URL. You must restart the server (not just ensure) for loading screen changes to take effect.Admin panel not detecting ACE permissions
Admin panel not detecting ACE permissions
server.cfg and make sure it matches Config.AdminSystem.acePermission:qbcore.god ACE doesn’t exist on ESX. Add the admin to Config.AdminSystem.adminIdentifiers, or point acePermission at an ACE you actually grant (e.g. group.admin). Both ACE and identifier-based access work in parallel.[ESX] Loadscreen ends but the selector never appears
[ESX] Loadscreen ends but the selector never appears
NetworkIsSessionStarted, triggering server:openMenu followed by silence on the server console.Cause: Config.Multichar is false on the server side, so es_extended skips registering the esx:onPlayerJoined handler and the default spawnmanager auto-spawn handler stays active and races the multichar flow.Fix: apply both edits in the ESX install Step 2 (Config.Multichar = true + unconditional ESX.DisableSpawnManager()), then do a full server restart.[ESX] Server console shows `ESX present but ESX.Jobs empty` and the selector never returns chars
[ESX] Server console shows `ESX present but ESX.Jobs empty` and the selector never returns chars
OpenMenu(N) entering GetAllChars... and then hangs. Eventually oxmysql may print Duplicate entry 'char1:...' for key 'PRIMARY' when the player tries to create.Cause: the script reads ESX.Jobs directly from the cross-VM snapshot returned by getSharedObject — that snapshot is stale and never reflects the table populated later by RefreshJobs(). The init loop spins forever.Fix (in rarx_multicharacter/server/framework.lua, inside the if isESX then MySQL.ready(function() ... end) block):Replace the repeat ... until ESX and next(ESX.Jobs) ... isDatabaseConnected = true block with:ESX.GetJobs() is a cross-VM call that internally waits for Core.JobsLoaded and returns the live jobs table.[ESX] After saving in illenium the world doesn't render / player stuck underground
[ESX] After saving in illenium the world doesn't render / player stuck underground
z = -90) and forgot to teleport it to a real spawn location after illenium completes.Fix: in rarx_multicharacter/client/framework.lua, in the post-illenium block (where isUsingIlleniumAppearance or isUsingFivemAppearance is true), always set coords on new characters and stream the destination:[ESX] Returning character logs in but stays on a black screen
[ESX] Returning character logs in but stays on a black screen
esx:playerLoaded with isNew=false and a saved skin) calls DoScreenFadeOut(0) and esxSpawnPlayer(skin, spawn) but never calls DoScreenFadeIn, so the screen stays black after the spawn completes.Fix: at the end of the fallback (just before PostSpawnPlayer()), add a fade-in and clear the leftover rarx NUI overlay:
