MP Multichar
A next-generation ESX Legacy character management system featuring a sleek NUI interface, multi-slot allowances, in-depth character creation, relog safeguards, and a comprehensive in-game admin management panel.
Key Features
- Modern character selection interface built with React & custom dark-first styling.
- Multi-slot character support with customizable default allowances and individual player overrides.
- Seamless character creation flow with identity validation (DOB ranges, character lore, name checks).
- Built-in /relog command with configurable cooldowns and optional location-based restrictions.
- Dedicated Admin NUI (/multichar) to view active players, set slot limits, and delete inactive characters with required audit reasons.
- Automatic database column widening for identifier and owner columns on first boot.
- Full preview integration with skinchanger, esx_skin, or illenium-appearance.
Asset Escrow & File Access
Editable Files (Full Access)
You have full access to view, edit, and extend these files:
Locales, UI brand text, theme colors, spawn coords, relog settings, canDelete toggle.
Default character slots, identifier prefixes, identity regex/age rules, Discord logs.
Custom command registrations and staff permission handlers.
Client-side utility functions and animation/camera overrides.
All language translation files (en, cs, etc.).
Escrow Protected Files
Encrypted via FiveM Asset Escrow; customization is handled via editable files:
Core player session orchestration, license checks, and MySQL transactions.
Internal Discord webhook formatting and avatar queries.
NUI message synchronization, scene transitions, and ped spawning.
Compiled React NUI frontend bundle.
Requirements & Installation
Dependencies
ESX Legacy framework (player management, accounts, jobs, identities).
Shared helper library for locales, callbacks, notifications, and UI components.
High-performance MySQL adapter for persistent resource data.
Native GTA spawn helper (auto-spawn is disabled during character selection).
Preview and first-time appearance customization.
Supported modern appearance alternative for character creation.
Installation Steps
- 1Extract the mp_multichar folder into your server's resources directory.
- 2Configure your preferred settings in config/shared.lua (locale, spawn coords, relog rules).
- 3Configure slot limits and Discord webhook URLs in config/server.lua.
- 4Set Config.Multichar = true inside your es_extended configuration.
- 5Ensure start order in server.cfg (dependencies first, then mp_multichar).
- 6Restart the server and inspect console for any database column width adjustments.
Suggested server.cfg Start Order
ensure oxmysql
ensure ox_lib
ensure es_extended
ensure spawnmanager
ensure skinchanger
ensure esx_skin
ensure mp_multicharDatabase Setup (manual)
Characters live in standard ESX users table. Create the multicharacter_slots table if your base does not already have it:
CREATE TABLE IF NOT EXISTS `multicharacter_slots` (
`identifier` VARCHAR(60) NOT NULL,
`slots` INT(11) NOT NULL,
PRIMARY KEY (`identifier`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;Configuration & Setup
- mp.config.locale: Choose interface language ('en', 'cs', etc.).
- mp.config.canDelete: Set to true if players are allowed to delete their own characters.
- mp.config.relog.enabled & cooldown: Enable /relog command and set cooldown in seconds (default: 600s).
- mp.config.relog.anywhere: Set to false to restrict /relog only to designated safe zones (e.g. Legion Square, Pillbox).
- mp.config.client.positions: Set camera and ped coordinates for each character slot.
- mp.config.UI: Customize primary colors, surfaces, brand accent text, and server logo URL.
Commands & Permissions
| Command | Arguments | Permission | Description |
|---|---|---|---|
| /relog | — | Everyone | Return to character selection (respects cooldown & safe zone restrictions). |
| /multichar | — | admin / senior | Opens the admin NUI to inspect players, manage slots, and delete characters. |
| /setslots | <identifier> <slots> | admin / senior | Assigns a custom slot limit to a player license (base license without char prefix). |
| /remslots | <identifier> | admin / senior | Removes the custom slot row, reverting the player to the default slot limit. |
Events & Exports
Triggers initial character selection sequence for the player.
Sends loaded character list and maximum slots to the NUI frontend.
Opens the administrative multichar control panel.
Usage & In-Game Workflow
- 1When connecting, players are placed into character selection with cinematic cameras.
- 2Select an existing character to spawn or choose an empty slot to create a new citizen.
- 3If allowed by config, players can delete unneeded characters with a confirmation dialogue.
- 4Administrators use /multichar to search citizens, inspect loaded characters, or wipe inactive peds.
Resource Integrations
ESX Legacy
Full integration with ESX identity, jobs, licenses, and accounts.
oxmysql
Fast character fetching and column width compatibility management.
illenium-appearance
Seamless transition into modern character customizers on character creation.
Troubleshooting & Solutions
No character UI appears upon connecting.
Make sure Config.Multichar = true is set in es_extended/config.lua and verify mp_multichar starts AFTER es_extended in server.cfg.
Players are kicked with OneSync error.
mp_multichar requires OneSync Infinity. Ensure set onesync on is present in your server.cfg launch arguments.
Database connection kick or queries failing.
Ensure your mysql_connection_string is set before oxmysql starts in server.cfg and includes the database name.
Kick: Duplicate identifier detected.
Another active session or stale server ped is holding that charN:license identifier. Restart the player session or server.
Identity form rejected with invalid format.
Ensure name contains only letters, DOB year falls within lowestYear and highestYear, and lore matches allowed options in config/server.lua.
Custom slots set with /setslots are ignored.
Confirm you provided the base Cfx license identifier (e.g. license:abc...), NOT the prefixed character identifier (char1:license:...).