Overview
RARX Clothing is a comprehensive clothing store system for FiveM featuring photo-grid item browsing, stock management, outfit saving, a full appearance editor, cart-based purchasing, job outfits, and an admin panel. The framework is auto-detected at runtime.Features
Clothing Stores
Configurable store locations with per-category pricing, multiple payment methods, and blip markers
Photo Grid
Visual item browsing with rendered thumbnails instead of numeric selectors
Outfit System
Save, load, and manage outfits per character with quick-equip support
Appearance Editor
Full face, hair, makeup, and body customization with bone-relative camera zones
Cart System
Add multiple items to cart and purchase them all at once with bank or cash
Admin Panel
Create and manage stores, import stock, configure global items and per-store inventory
Job Outfits
Faction-specific outfit stations where bosses can manage work attire for their employees
Ped Selector
Browse and select ped models during character creation with optional freemode-only restriction
Requirements
- Framework: ESX, QBCore, or QBox (auto-detected)
- ox_lib
- oxmysql
- rarx_lib
- rarx_clothing_screenshot (optional, for photo grid thumbnails)
The framework is detected automatically at startup in this order:
qbx_core -> qb-core -> es_extended. No manual framework configuration is needed.Installation
1
Download & Extract
Download the latest version from your Keymaster and extract it to your server’s resources folder.
2
Import Database
Import the included SQL file to create the required tables for stores, stock, and outfits.
3
Add to server.cfg
ox_lib, oxmysql, and rarx_lib are started before this resource.4
Optional: Photo Grid Screenshots
If you want the photo grid feature, also start the screenshot helper:
5
Configure
Edit
config/_general.lua to customize settings. Store locations are managed through the in-game admin panel.Framework-Specific Notes
- QBox (qbx_core)
- QBCore
- ESX
No additional setup required. QBox is detected automatically and uses the same QBCore-compatible API via
GetCoreObject().Configuration
General Settings
Commands
Admin Permissions
Payment & Pricing
Interaction Method
3D Store Markers
Store Types & Blips
Character Creation
Job Outfit Stations
Store Management
Stores are created and managed through the in-game admin panel, accessible via the/clothing command (or your configured command).
Creating a Store
- Run the management command (default:
/clothing) - Use the Store Wizard to create a new store
- Set the store name, type (clothes, barber, masks), and location
- Configure which categories are available in the store
- Import stock items using the import tool
Store Types
Stock Management
- Global Items — Items available across all stores of the same type
- Store Items — Items specific to a single store location
- Import Tool — Bulk import items with progress tracking
Admin Features
Access the admin panel with the configured command (default:/clothing). Requires one of the roles defined in Config.Permissions.
- Create, edit, and delete store locations
- Manage global and per-store stock
- Bulk import items with the import wizard
- Configure store categories and pricing
Localization
Translation files are available in thetranslates/ folder. Supported languages:
- English (
en) - Spanish (
es)
Exports & Events API
All exports and events are listed with their real signatures (as defined in the resource), parameter types, return values, and a usage example. Events are split by direction (who triggers vs who listens).Hash format — All clothing items are identified by a hash string:
"collection--componentId--drawableId--textureId"collection— DLC/collection name, or"none"for base-game itemscomponentId— raw index for drawables (1= masks,3= torsos,4= legs,6= shoes,8= shirts,11= jackets), or index + 1000 for props (1000= hats,1001= glasses,1006= watches,1007= bracelets)drawableId— model index within the collection (-1for props = cleared slot)textureId— texture variation index (0-based)
"none--1--5--0" (mask drawable 5), "mp_m_freemode_01--8--15--3" (DLC shirt, texture 3), "none--1006---1--0" (watch cleared).Client Exports
Appearance
export → table
Returns the full appearance of a ped:
{ model, headBlendData, faceFeatures, headOverlays, hairTint, eyeColor, drawables, props, pedScale }. If ped is nil, defaults to PlayerPedId().export → —
Applies an appearance table (same shape as
GetAppearanceData returns) to a ped. If skipModelLoad = true, the caller is responsible for having already loaded data.model.export → —
Resets face blend data, features, and overlays on the current ped to neutral defaults. Does not touch clothing.
export → —
Fetches the player’s saved appearance from the server and applies it. Optional
model string forces a specific ped model before applying.export → —
Reapplies the most recently cached appearance without querying the server. Falls back to
ReloadAppearanceData() if nothing is cached.export → table
Client-side callback wrapper that fetches another player’s appearance by citizenid (used by the QB multicharacter preview flow).
Clothing & Props
export → table
Returns a keyed table of drawable/texture pairs for every clothing category on the ped:
{ masks = { drawable = 0, texture = 0 }, shirts = { ... }, ... }.export → —
Applies a single drawable (mask, shirt, jacket, etc.) via its hash. If
save = true, calls SaveAppearance() after applying so the change persists.export → —
Same as above but for props (hats, glasses, watches, etc.). A prop hash with
drawable_id = -1 clears the slot.export → —
Resets a specific category to its model’s default “remove” hash (from
Config.RemoveItem[pedModel][category]). Useful for “strip” commands.export → string|nil
Returns the default “remove” hash for the given model + category, or
nil if none is configured.Menus & Creation
export → —
Opens the character creation flow.
gender is optional (0 = male, 1 = female); if omitted, uses the player’s current framework gender. Forces the correct freemode model, clears components, and puts the player in a routing bucket.export → table
Low-level creation entrypoint. Blocks the current thread and returns the final
GetAppearanceData table when the player finishes creation.skipInterior(bool) — skip loading the dedicated creation interiorgender(0|1) — male or female freemode presetped(entity) — optional existing ped to edit (skips model load)noTeleport(bool) — don’t teleport the ped toConfig.SpawnPoint
Opens the outfit menu.
isJobMenu = true shows job outfits; isBossOverride lets you force boss (manager) mode on — pass nil to auto-detect from Config.WorkAttire.bossGrade.export → table|nil
Returns the currently equipped outfit object (or
nil if none). jobOnly = true only matches job outfits.export → —
Shows the NUI keybinding hints overlay (bottom of the screen). Use from another resource that needs to reserve keys while its own UI is active.
export → —
Hides the NUI keybinding hints overlay.
Server Exports
export → table
Fetches a player’s stored appearance from the database by
citizenid. Optional model filters to a specific ped model. Returns { model, skin, drawables, props, label, hairslots } or an empty table if nothing is stored.export → bool
Verifies whether a player is allowed to wear a specific item. Returns
true if no permission row exists or the player matches an allowed identifier/job/grade.Client Events
Listen — fired by rarx_clothing
event → { drawables, props }
Fires whenever
SaveAppearance() runs (end of creation, commit clothes, etc.). Use this to sync your own appearance cache.Trigger — send to rarx_clothing
Opens the main clothing NUI in a given mode. Valid values:
"creation", "clothes", "stock", "barber", "ped", "outfit", "outfitCreator", "admin".event → —
Manually trigger the player-load flow (appearance reload + outfit rehydration). Normally fired automatically on framework load.
Server → Client (listen on your client, fired by rarx_clothing server)
Server Events
event → outfitData
Creates a new outfit row. Required fields:
label (string, max 50 chars), model (ped hash or name), drawables (hash table keyed by category), props (hash table keyed by category), jobOutfit (bool). For jobOutfit = true, the player must be admin or a boss (matching Config.WorkAttire.bossGrade[jobName]).event → { id, label, drawables, props }
Updates an existing outfit’s clothing (not its identifier/job). Server verifies ownership before writing.
Usage Examples
Save a new outfit from outside rarx_clothing
Reproduce another player’s look on an NPC
Gate a custom item behind rarx_clothing permissions
Troubleshooting
Store not appearing on map
Store not appearing on map
Verify that
Config.ShopTypes has the correct blip configuration and that the store was created through the admin panel.Photo grid shows blank images
Photo grid shows blank images
Ensure
rarx_clothing_screenshot is started. The screenshot resource generates thumbnails for the photo grid.Cannot open management panel
Cannot open management panel
Check that your admin role matches one of the entries in
Config.Permissions. An empty table means unrestricted access.Items not saving after purchase
Items not saving after purchase
Verify that
oxmysql is running and the database tables were imported correctly.Appearance resets on relog
Appearance resets on relog
Run the
/fixpj command (or your configured fixSkin command) to reapply stored appearance. Check that your appearance system is saving correctly.Target interaction not working
Target interaction not working
If using
Config.Access.system = 'auto', ensure either ox_target or qb-target is started. Otherwise, set it explicitly.Compatibility
The script provides anillenium-appearance compatibility layer that can be enabled by uncommenting the provide 'illenium-appearance' line in fxmanifest.lua. This allows other resources that depend on illenium-appearance to work with rarx_clothing instead.
