Skip to main content
Rarx Multicharacter Preview

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

Create, select, and delete characters with configurable slot limits and name validation

Loading Screen

Built-in loading screen with video/image/YouTube backgrounds, music, and rotating tips

Main Menu

Customizable main menu with server branding, rules, controls, stats bar, and video embed

Spawn Selector

Choose spawn location from configurable default spawns, last location, apartments, or housing

Starter Vehicle

Give new characters a starter vehicle from a configurable selection list

Admin Panel

Manage character slots, activate/deactivate characters, perform character kills with backups

Appearance Integration

Works with rarx_clothing, fivem-appearance, illenium-appearance, and bl_appearance

Housing Integration

Supports QB-Apartments, rarx_apartments, 0r_motels, and origen_housing for spawn selection

Requirements

  • Framework: ESX, QBCore, or QBox (auto-detected)
  • ox_lib
  • oxmysql
  • rarx_lib
The framework is detected automatically at startup in this order: qbx_core -> qb-core -> es_extended. No manual framework configuration is needed.

Installation

1

Install dependencies

Make sure these resources are installed and running before rarx_multicharacter:
  • oxmysql — database driver
  • ox_lib — runtime library
  • rarx_lib — provided in your Keymaster bundle
  • An appearance system: illenium-appearance, fivem-appearance, rarx_clothing, or bl_appearance
Drop them into resources/[core]/ (or wherever your other dependencies live). The umbrella ensure [core] will pick them up, but for order-sensitive dependencies (like ESX) you should ensure them explicitly before the umbrella line in server.cfg.
2

Download & extract

Download the latest rarx_multicharacter from your Keymaster and extract it into your resources/ folder (e.g. resources/[core]/rarx_multicharacter/).
3

Import the database

The install/ folder contains framework-specific SQL files. For ESX, run them in this order:
For QBCore/QBox use the matching install/qb.sql or install/qbox.sql.
All CREATE TABLE statements use IF NOT EXISTS, so re-running them on an existing install is safe.
4

Edit server.cfg

On ESX servers, ordering matters. The dependencies must start before es_extended initializes its multichar handlers. Recommended layout:
Set the locale convar for your appearance system, e.g.:
5

Apply framework-specific setup

Open the matching tab below — ESX, QBCore or QBox — and follow its steps. The ESX path requires patching es_extended; if you skip it the selector will never open.
6

Configure & restart

Edit 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

Disable QBox’s built-in character system:
  1. Open qbx_core/config/client.lua
  2. Find useExternalCharacters = false
  3. Change to useExternalCharacters = true
This disables QBX Core’s built-in character system, allowing Rarx Multicharacter to take over.

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.
1

Server console (txAdmin live or `fxserver.log`)

You should see, in this order:
On player connect:
If es_extended never prints “initialized!” something is wrong with oxmysql or your jobs table.
2

Client (F8)

On connect, you should see the rarx loadscreen, then the character selector with your existing characters (or a “Create character” slot if none exist). No black-screen-with-floating-menu, no infinite loadscreen.Enable Config.Debug = true in rarx_multicharacter/config.lua for extra [rarx_multicharacter] lines that trace every step.
3

Database

Pick an existing test character and inspect its users row:
You should see one row per character, with 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):
Reconnect — you’ll be back at the “Create character” prompt.

Configuration

Language

The language is set via the rarx-lang convar in your server.cfg, shared across all RARX resources:
Available languages: 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

Important: You must also edit ui/loadingConfig.js with the same loading screen values (logo, background URL, music URL, tips). This file is used by the FiveM loading screen which runs before Lua scripts load, so it cannot read from config.lua.
To fully disable the custom loading screen, you must also comment out the loadscreen lines in fxmanifest.lua:
Setting Config.Loading.enabled = false disables the loading content but the loadscreen directive in the manifest must be removed for FiveM to use the default loading screen.

Apartment Integration

Commands

Slot Management

Example:

Character Management (ESX)

Character Management (QBCore / QBox)

Other Commands

The identifier parameter supports license, Discord ID, Steam HEX, or any unique identifier used by your server.

Admin Panel

The admin panel provides full character management capabilities with Discord webhook logging.

Access Control

Both ACE permissions and identifier-based access work in parallel — if either matches, access is granted.
Admin access depends on your framework:
  • QBCore / QBox — the default acePermission = 'qbcore.god' works out of the box (QBox resolves it through its qb-core export). Grant it with add_ace ... qbcore.god allow, or simply list the admin in adminIdentifiers.
  • ESX — the qbcore.god ACE does not exist on ESX, so it will never match. Use adminIdentifiers for panel access, or set acePermission to an ACE you actually grant (e.g. group.admin). The in-game admin commands are registered through ESX.RegisterCommand(..., "admin"), so they already require the ESX admin group regardless of this setting.
Admin identifiers support both formats: with prefix (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
The system auto-detects which appearance resource is running and uses it automatically. No manual configuration needed.

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:spawnDefault
  • rarx_multicharacter:client:spawnInApartment
  • rarx_multicharacter:client:spawnInFirstApartment

Summary

All flags are always removed before the player enters gameplay. A 15-second safety watchdog automatically unfreezes the player if something goes wrong during spawn.

Troubleshooting

Verify the database was imported correctly and that oxmysql is started before this resource.
Ensure your appearance system (rarx_clothing, illenium-appearance, etc.) is started and working correctly.
Check that your identifier is correctly added to Config.AdminSystem.adminIdentifiers or that you have the correct ACE permission.
Verify Config.SpawnSystem.enabled = true and that character positions are configured in Config.chars.
Ensure useExternalCharacters = true is set in qbx_core/config/client.lua.
Check that Config.StarterVehicle.enabled = true and that the vehicle models exist in your server.
The loading screen runs before Lua scripts load, so it reads from 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.
QBCore / QBox: grant the ACE in server.cfg and make sure it matches Config.AdminSystem.acePermission:
ESX: the 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.
Symptoms: the loadscreen closes to a black screen and nothing happens, or F8 shows 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.
Symptoms: server console prints 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.
Cause: the multichar NUI is still loaded with its black overlay behind the illenium menu; illenium’s NUI clicks are not reaching the customization callbacks because rarx never hid its own NUI.Fix: in rarx_multicharacter/client/framework.lua, inside the isUsingIlleniumAppearance branch of the new-character flow, hide rarx NUI before opening illenium and load the default skin first (matches the native esx_multicharacter order):
Cause: for new characters the script spawned the ped at the secret creator-studio interior (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:
Cause: the fallback path for existing ESX characters (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: