Skip to main content

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

Make sure 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

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

  1. Run the management command (default: /clothing)
  2. Use the Store Wizard to create a new store
  3. Set the store name, type (clothes, barber, masks), and location
  4. Configure which categories are available in the store
  5. 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 the translates/ folder. Supported languages:
  • English (en)
  • Spanish (es)
Set the language via server convar:

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 items
  • componentId — 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 (-1 for props = cleared slot)
  • textureId — texture variation index (0-based)
Examples: "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.
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 interior
  • gender (0|1) — male or female freemode preset
  • ped (entity) — optional existing ped to edit (skips model load)
  • noTeleport (bool) — don’t teleport the ped to Config.SpawnPoint
export → —
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

event → menuType
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

Verify that Config.ShopTypes has the correct blip configuration and that the store was created through the admin panel.
Ensure rarx_clothing_screenshot is started. The screenshot resource generates thumbnails for the photo grid.
Check that your admin role matches one of the entries in Config.Permissions. An empty table means unrestricted access.
Verify that oxmysql is running and the database tables were imported correctly.
Run the /fixpj command (or your configured fixSkin command) to reapply stored appearance. Check that your appearance system is saving correctly.
If using Config.Access.system = 'auto', ensure either ox_target or qb-target is started. Otherwise, set it explicitly.

Compatibility

The script provides an illenium-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.