Skip to content

Clothing System

Core Inventory treats clothing as items — every hat, jacket, pair of shoes, and accessory is a real inventory item with metadata. Players equip and unequip clothes by dragging them in the inventory, and their outfit persists across sessions through the clothing holder system.

QB-CLOTHINGqb-clothing
ILLENIUM APPEARANCEillenium-appearance
CORE CLOTHINGcore_clothing

How It Works

Each clothing component (torso, pants, shoes, hats, glasses, etc.) is mapped to a GTA drawable/texture ID and stored as item metadata. When a player equips a clothing item, the system applies the correct drawable to their ped. When they unequip it, the default skin component is restored.

The system supports:

  • Clothing holders — dedicated wardrobe slots separate from the main inventory
  • Gender-aware items — each piece stores both male and female drawable IDs
  • Outfit persistence — clothing loads automatically on spawn and character selection
  • Locking — scripts can lock/unlock the clothing system during animations or events

Don't Want Clothes as Items?

Not every server needs clothing as inventory items. If you prefer a traditional clothing system, set this in your config.lua:

lua
DisableClothing = true

This completely disables the clothing-as-items system — no clothing holders, no clothing items, no wardrobe slots. Players will use whatever standalone clothing script you have installed without any Core Inventory integration.

Compatible Clothing Scripts

We provide ready-to-go forks of popular clothing scripts that work with Core Inventory's clothing system out of the box. Just download the fork, drop it in your resources, and enable Core Inventory in the script's config — that's it.

qb-clothing

Our fork of qb-clothing has been converted to work with Core Inventory. Enable it by setting UsingCoreInventory = true in the qb-clothing config. When enabled, clothing purchases become inventory items and the standard clothing database storage is bypassed entirely.

qb-clothing
QB Clothing fork — converted for Core Inventory clothing system

illenium-appearance

Our fork of illenium-appearance is also converted. Enable UsingCoreInventory = true in the config and all appearance changes will flow through the inventory item system.

illenium-appearance
Illenium Appearance fork — converted for Core Inventory clothing system

Core Clothing

Core Clothing is our own standalone clothing shop script. It works with both QB and ESX and has a built-in UsingCoreInventory config toggle. When enabled, purchases are saved as inventory items with full metadata.

Heads Up

Core Clothing is functional but outdated — it was one of our earliest scripts and the UI and feature set reflect that. It still works fine as a basic clothing shop, but we're not actively updating it.

We're currently building a brand new appearance script from the ground up. It will feature automatic image generation for clothing items (no more placeholder icons), a modern UI, and the best clothes-as-items experience ever made. Stay tuned.

Clothing Exports

These client exports let any script interact with the clothing system — read what a player is wearing, save outfits to inventory, or save them to the dedicated clothing holders.

clientexports['core_inventory']:getClothingItemFromPedSkin(ped, notIncludeDefaultSkin)

Extracts clothing data from a ped's current appearance. Returns a table of clothing components (torso, legs, shoes, hats, etc.) with their drawable/texture values. Supports both male and female models.

ParameterTypeDescription
pednumberPed handle (nil for local player)
notIncludeDefaultSkinbooleanIf true, only returns clothing that differs from the default skin
Returns: table
Example
lua
-- Get all clothing the player is currently wearing
local clothes = exports['core_inventory']:getClothingItemFromPedSkin()

-- Get only non-default clothing (what the player actually changed)
local clothes = exports['core_inventory']:getClothingItemFromPedSkin(nil, true)
clientexports['core_inventory']:addClothingItemFromPedSkinInInventory(ped, addAlreadyOwnCloth, notIncludeDefaultSkin, notCheckSpace)

Reads the ped's current clothing and adds it as items to the player's main inventory. Useful for saving an outfit as inventory items after a clothing purchase.

ParameterTypeDescription
pednumberPed handle (nil for local player)
addAlreadyOwnClothbooleanAdd even if player already owns this clothing piece
notIncludeDefaultSkinbooleanSkip default skin components
notCheckSpacebooleanSkip inventory space check
Returns: void
Example
lua
-- Save current outfit to player's inventory
exports['core_inventory']:addClothingItemFromPedSkinInInventory(nil, false, true, false)
clientexports['core_inventory']:addClothingItemFromPedSkinInClothHolder(ped, addAlreadyOwnCloth, notIncludeDefaultSkin, notCheckSpace)

Reads the ped's current clothing and adds it to the player's clothing holder inventory — the dedicated wardrobe slots, not the main inventory.

ParameterTypeDescription
pednumberPed handle (nil for local player)
addAlreadyOwnClothbooleanAdd even if player already owns this clothing piece
notIncludeDefaultSkinbooleanSkip default skin components
notCheckSpacebooleanSkip inventory space check
Returns: void
Example
lua
-- Save current outfit to clothing holder (wardrobe)
exports['core_inventory']:addClothingItemFromPedSkinInClothHolder(nil, false, true, false)
clientexports['core_inventory']:lockCloth()

Locks the clothing system, preventing the player from changing clothes. Useful during animations, minigames, or restricted zones.

Returns: void
Example
lua
exports['core_inventory']:lockCloth()
clientexports['core_inventory']:unlockCloth()

Unlocks the clothing system, allowing the player to change clothes again.

Returns: void
Example
lua
exports['core_inventory']:unlockCloth()

Connecting Your Own Clothing Script

If you're using a clothing script we don't have a fork for, you can integrate it yourself using the exports above. The basic flow is:

  1. Player finishes customizing their appearance in your clothing script
  2. Call addClothingItemFromPedSkinInClothHolder() to save the new clothing as items
  3. Core Inventory handles persistence, equipping, and unequipping from there
lua
-- After player confirms their outfit in your clothing script:
exports['core_inventory']:addClothingItemFromPedSkinInClothHolder(
    nil,   -- nil = local player ped
    false, -- don't add duplicates
    true,  -- skip default skin pieces
    false  -- respect inventory space
)

This is exactly what our qb-clothing and illenium-appearance forks do under the hood.