Character selection, character creation and arrival points in one resource for ESX Legacy, QBCore and Qbox — framework detected automatically. It replaces your multicharacter screen, your identity form and your creator, and it sells character slots for you.
ESX LegacyQBCoreQboxNo ox_libNo bridgeConfig open under escrow

▶ The full nuggs_multicharacter showcase — watch on YouTube
| Frameworks | ESX Legacy, QBCore and Qbox — one resource, detected automatically at startup |
| Replaces | esx_multicharacter, qb-multicharacter or Qbox's built-in screen — plus the identity and appearance steps esx_identity, esx_skin and the QB creators normally handle |
| Server artifact | 10188 or newer |
| OneSync | Infinity |
| Database | oxmysql |
| Other dependencies | None. No ox_lib, no target resource, no bridge or compatibility lib. skinchanger on ESX only |
| Escrow | Escrow protected. config.lua, config.lua.example, locales/*.lua, customer_client.lua, customer_server.lua, html/fonts/ and html/images/ stay open and editable |
| Size | ~18,200 lines of code (Lua and JavaScript) plus ~3,500 lines of documentation |
| Delivery | FiveM asset grant to your Cfx.re account |
| Documentation | nuggscripts.com/nuggs-multicharacter |
| Support | Discord ticket after purchase |
esx_multicharacter, qb-multicharacter or Qbox are not migrated and not lost — they work on day one. This drops in over the top rather than asking you to start your server's population again.The line-up
Your characters stand side by side as real peds, not renders. The camera never moves — picking a card slides the whole row through it, so slot 1 and slot 20 are framed identically however many slots you sell. No zooming out, no shrinking peds, no re-tuning the scene when you add a tier.
- Each card carries name, job and grade, cash and bank, playtime and last seen.
- 8 configurable line-up poses, so the row does not read as clones.
- Membership rank, colour and crest painted onto the sidebar.
- A still-image backdrop behind the peds (two ship) or the live world — your call.
- Characters over a lapsed membership limit stay in the line-up marked ABOVE YOUR LIMIT — not hidden, not deleted, still deletable, and the card links to your store.
The creator
A nine-step editor driving the live ped, framed by a per-step camera: IDENTITY → HERITAGE → APPEARANCE → HAIR → FACE → CLOTHING → DETAILS → TATTOOS → FINISH.
- On ESX it drives
skinchanger, so the result is an ordinary ESX skin. - On QBCore and Qbox it drives the ped directly — no appearance resource required — and writes to
playerskinsso your barbers and clothes shops read it correctly. - Heritage blending with 6 named parent-face presets, resemblance and skin tone.
- Every face slider, overlay, opacity and colour swatch GTA V exposes.
- Per-control camera framing — SHOES pulls to the feet, WATCH to the wrist, MASK to the head.
- Real tattoos — ped decorations across 6 body zones, 47 configured out of the box, stored in their own column so no barber can wipe them.
- RANDOMIZE with a config-controlled whitelist of what it may touch.
- Four starter outfit slots the player saves themselves — and they are written into your server's own wardrobe store, so a player can wear one without a script of yours in between.
![]() The creator driving the live ped | ![]() Starter outfit slots |
Arrival points
A rail of illustrated spawn cards with the game camera flying out to the highlighted location as you scroll it.
- 8 locations ship — Legion, Vespucci, Del Perro, Mirror Park, Vinewood Hills, Sandy Shores, Paleto Bay and LSIA. Add your own with
/ccspawn, which prints the complete config block for wherever you are standing, camera framing included. - Each card draws built-in vector artwork tinted to the location's accent colour. Want real screenshots instead? Drop
legion.jpgintohtml/images/spawns/— the file name is the wiring, and a missing file just leaves the artwork showing. - Last Known Location as the first card, optional.
- Characters who own a property get a card for their own front door — and choosing it asks the housing script to let them in, so interior, stash, wardrobe and routing bucket are all set up by the resource that owns them.
- Housing read with zero configuration:
qbx_properties,ps-housing,qb-apartments,qb-houses,esx_property,vms_housing. Anything else is four lines. Nothing here ever creates, buys, sells or writes to a property.
![]() The arrival rail | ![]() Last known location as the first card |
It sells slots for you
This is the part most multicharacter scripts do not have. Membership tiers and slot counts are resolved per account from four sources — Tebex purchases, Discord roles, ACE and staff grants — with the highest rank winning.
| Tebex | A webstore purchase. Survives losing it — a database row, with optional expiry |
| Discord | Holding a role. Read live, so it goes when the role goes |
| ACE | add_ace group.premium nuggs.premium allow |
| Staff | An admin running mcperks. Permanent |
- Tebex auto-delivery. Recent payments are read off the Tebex Plugin API and matched against each player as they reach the character screen — so a purchase lands whether or not your webstore ever ran a command, including purchases made before you installed this. Buyers are matched on every identifier they have: licence, Cfx.re, Steam hex and decimal, Discord.
- Reading payments does not drain the Tebex command queue, so it cannot double up with the official
tebexresource or txAdmin. - Transaction references are stored UNIQUE — a retried delivery pays out once, not twice. A negative amount claws slots back, which is how you handle a chargeback without unpicking the original row.
- Price sync. Turn on the Plugin API key and package names and prices are pulled from your store, so a card can never advertise a price the checkout disagrees with.
- Discord roles. Bot token plus guild id, or any permanent invite link — it resolves the id for you. The startup banner prints every role in your guild next to what it grants. Discord being down, rate-limited or misconfigured never blocks the character screen.
- Selling nothing?
Config.Store.enabled = falseand the STORE button shows an info panel instead. Tiers still work off Discord and ACE.
It integrates instead of fighting
Clothing, tattoo and housing resources are detected at startup and named in the console banner.
illenium-appearance, fivem-appearance, qb-clothing, skinchanger / esx_skin, bl_appearance, rcore_clothing, tgiann-clothing, crm-appearance. Yours not listed? A getter and a saver is the whole integration.rcore_tattoos, vms_tattooshop, crm-tattoos, qb-tattooshop, esx_tattooshop.qbx_properties, ps-housing, qb-apartments, qb-houses, esx_property, vms_housing — read with zero configuration for the "start at your own front door" card. On vms_housing that includes rented properties, and a character who logged out inside one is left for vms_housing to put back there.profile_name is UNIQUE — so a name still held by a badly-deleted character leaves a live player with a phone that will not open. The handle is now written as the character loads, before npwd goes looking. Nothing in npwd is edited. Turns itself off on a server without npwd.Theme it without opening html/
39 font families ship. Naming one is the whole job. Set one hex and every shade built on it — borders, glows, gradients, and the dark text printed on top — is recalculated. Colours must be hex, so a typo cannot break the screen; a bad font name falls back and is named in the console.
- Six colour presets: gold, ice, crimson, emerald, neon, mono.
- Your own font goes in
html/fonts/and is declared from the config — no manifest edit. - Backdrop is any PNG or JPG in
html/images— nothing to stream, no.ytdto build. - Brand crest, monogram shield, tagline, watermark, region line and the four sidebar info panels are all config.
![]() Your own backdrop on the selection screen | ![]() Your own backdrop in the creator |
Built to be supported
mcdiagreprints the full startup report — framework, clothing, housing and tattoo resources resolved, database, Discord and store wiring, and every problem found in your config.lua. That block answers most of a support conversation in one message.- 16 commands, all plain
RegisterCommands, so every one works from the console — which is how Tebex delivers a purchase. - In-game authoring tools:
/ccpos,/ccspawn,/ccdebug,/cctattoo,/ccpose,/ccblend,/ccbackdrop— every one prints config you paste straight back in. - Repair tools:
/mctattoosreports both copies of a character's ink and puts them back in step;/mcorphans cleansweeps rows belonging to characters that no longer exist. - Admin:
/setslots,/remslots,/lockchar,/unlockchar,/relog. - ~3,500 lines of documentation across README, CONFIG, INTEGRATION and CHANGELOG — and it is public before you buy.
For developers
27 server exports, 10 client exports, 8 events. customer_client.lua and customer_server.lua ship as readable, editable source.
GetMembership(src)returns tier, premium flag, expiry, sources and the full slot breakdown.GrantSlots(identifier, 1, 0, "my-ref")— idempotent on the reference.GetCharacterOutfits,GetCharacterProperties,ReturnToCharacterScreen.- Server events:
characterLoaded,characterSelected,characterCreated,characterDeleted,membershipChanged. Client:screenOpened,screenClosed,characterSpawned.
Security
- Only a location id crosses the wire for spawns — the server rejects anything not in the config.
- Appearance is validated by whitelist and range clamp; identity fields including slot ownership are fully validated server-side.
- Slot counts are resolved server-side per account every time the screen opens — a client cannot ask for a slot it does not own.
- Every secret reads a convar, never
config.lua(which every client downloads):nuggs_tebex_secret,nuggs_discord_token,nuggs_discord_server. - Grant references are UNIQUE — a replayed delivery cannot pay out twice.
What it does not do
- It is not a housing script. It reads your housing resource for the "start at home" card and asks it to let the player in — it never creates, buys, sells or writes to a property.
- It is not a clothing shop or a tattoo shop. It hands appearance to the resource that owns it, and stands down entirely where a dedicated tattoo script is installed.
- It does not migrate characters between frameworks.
- On ESX it needs
skinchanger. On QBCore and Qbox it needs no appearance resource at all.
Install
- Buy it. The resource appears in your Cfx.re granted assets, under the account you were logged in with at checkout.
- Download it and drop the folder into your
resourcesdirectory. - Its database tables are created on first start. Set your convars for any Tebex or Discord features you want.
- Add
ensure nuggs_multicharacterto yourserver.cfg, after your framework andoxmysql. - Start the server and read the banner — it names every resource it resolved and every problem it found in your config. Full steps at nuggscripts.com.
Documentation nuggscripts.comInstall steps, gamebuild notes and the fixes for what usually goes wrong. | Support discord.gg/x4yKq6UATVOpen a ticket after purchase. Include your server artifact and gamebuild. |








