Features
Character Creator
The full character creator includes:
Heritage
- Parent Selection — Choose mother and father models (46 options each)
- Resemblance — Slider to blend between parents
- Skin Tone — Slider to blend skin color between parents
Face Features
- 20 face feature sliders — Nose width, chin shape, cheek bones, jaw width, etc.
- All features use -1.0 to 1.0 range with real-time preview
Overlays
- Eyebrows — Style + opacity
- Facial Hair — Style + opacity (male)
- Blush — Style + color + opacity
- Lipstick — Style + color + opacity
- Aging — Style + opacity
- Complexion — Style + opacity
- Moles/Freckles — Style + opacity
- Sun Damage — Style + opacity
Eye Color
- 32 eye colors available
Clothing System
12 clothing component slots with real-time preview:
Each component supports texture variants (colors/patterns).
Props System
5 prop slots:
Accessory props (watches, bracelets, earrings) line up exactly with their UI cards — the same index handling as hats and glasses.
Outfits System
A dedicated Outfits tab inside the clothing shop lets players manage saved looks:
- Save the current look as a named outfit
- Wear / apply a saved outfit
- Rename and delete outfits
- Share with another online player — pick from a player list sorted by proximity (or enter a server ID manually); the recipient gets an accept/decline prompt and the outfit is saved under their outfits with the same name
- Configurable cost — charge to save and/or apply (
Config.Outfits.saveCost/applyCost) - Configurable cap — limit saved outfits per player (
Config.Outfits.maxPerPlayer)
An outfit captures clothing + props + accessories with textures. It does not touch face, heritage, body, or hair. Saving an outfit also persists the look so it survives a relog.
Tattoo System
- Zone-based application — Select zone (head, torso, left arm, right arm, left leg, right leg)
- Live search / filter — Find tattoos by name as you type
- Active-count badge — Shows how many tattoos are currently applied
- Preview thumbnails — Real CDN images for hundreds of tattoos (body tattoos resolved by GTA overlay hash; hair/micropigmentation overlays by index map), with a clean no-results state when a search has no matches
- Automatic clothing stripping — Clothing auto-hides per zone for visibility
- Add/remove individual tattoos — No all-or-nothing
- Clear all tattoos option
- Real-time preview before saving
Camera System
- Auto-positioned per store type (clothing = full body, barber = face close-up, tattoo = zone-focused)
- Mouse rotation — Rotate the character with mouse drag
- Smooth transitions between customization categories
Snapshot / Restore
When a player opens customization, a complete snapshot of their appearance is saved. If they press ESC or cancel, the snapshot is restored — no partial saves or broken appearances.
Skin Mirroring
After saving, the appearance is automatically synced to the framework's character select table:
- QBCore/QBox — Syncs to
playerskinstable - ESX — Syncs to
skintable
This ensures the character select preview always matches the in-game appearance.
Routing Bucket Isolation
Each player customizing is placed in a private routing bucket. This prevents:
- Other players seeing the customization process
- NPCs and vehicles interfering
- Players seeing each other in underwear during clothing changes
Image Previews (CDN)
Clothing and tattoo thumbnails stream from a public jsDelivr CDN (cdn.jsdelivr.net/gh/TheOrb-FiveM/images-cdn@main/clothing/…) so there is no resource-start hitch and no large image download bundled with the script. You can point the UI at your own host or use a local image folder by editing html/config_ui.js (cdnBase). Add-on clothing packs supply their own image URLs via Config.CustomClothing.
Localization (English / Spanish)
Every user-facing string — in-game notifications, TextUI prompts, the entire NUI, and the static admin panel — is routed through a locale system with full English and Spanish parity. Pick the language with Config.Language ('en' / 'es'); missing keys fall back to English. Add a new locales/.lua (all locale files are in escrow_ignore) to support more languages.