A powerful command-line tool to manage and track GTA 5 FiveM clothing items across multiple addon packs. Automatically scans your clothing packs and calculates ID ranges for each item category.
Currently, this tool only supports gamebuild 3095. Support for additional gamebuilds can be added by configuring their base_counts in packs.yaml.
CRITICAL: You must enable the option "Create sub folders for cloth drawable types" when exporting/creating your clothing files. This ensures the correct folder structure that the tool expects:
pack_name/
stream/
mp_m_freemode_01_mp_m_some_pack_*/ (or mp_f_...)
jbib/ (top)
lowr/ (legs)
accs/ (undershirt)
...
Folder Naming Pattern: The tool expects folders to follow the FiveM standard naming pattern:
- Components (male):
mp_m_freemode_01_mp_m_*(e.g.,mp_m_freemode_01_mp_m_some_pack_*) - Components (female):
mp_f_freemode_01_mp_f_*(e.g.,mp_f_freemode_01_mp_f_some_pack_*) - Props (male):
mp_m_freemode_01_p_mp_m_*(contains_p_in the name) - Props (female):
mp_f_freemode_01_p_mp_f_*(contains_p_in the name)
The * can be any suffix (your pack name, identifier, etc.). The tool will automatically detect folders matching this pattern.
Without this folder structure and naming pattern, the tool will not be able to scan your packs correctly.
- Download the latest release from GitHub Releases
- Extract
clothes-cli-windows.zip - Edit
packs.yamlto configure your paths - Run
clothes-cli.exe
-
Install Python 3.7+ (if not already installed)
-
Install dependencies:
pip install -r requirements.txt
-
Configure
packs.yaml:- Set
base_pathto your clothing packs directory - Verify
current_gamebuildis set to"3095"(or your target gamebuild) - Configure
load_orderto match your server'sfxmanifest.lua
- Set
-
Run the CLI:
python clothes_cli.py
In FiveM, clothing items are assigned sequential drawable IDs. When you have multiple addon packs, you need to know:
- Which pack contains a specific drawable ID
- What file corresponds to that ID
- The range of IDs for each pack and category
Clothes CLI automatically:
- Scans your packs - Detects all
.yddfiles in each pack - Calculates ranges - Determines ID ranges based on base game counts + addon counts
- Tracks gaps - Identifies "dummy" files (missing numbers in sequences)
- Maps IDs to files - Shows exactly which file corresponds to each drawable ID
base_path: "path/to/your/clothing/packs"
current_gamebuild: "3095" # Currently only 3095 is supported
load_order: # Global, applies to all gamebuilds
- sl_clothes_service
- sl_clothes_civil_1
# ... more packs
gamebuilds:
"3095":
base_counts: # Base game clothing counts
MP_M_FREEMODE:
components: { top: 524, legs: 193, ... }
props: { hats: 215, glasses: 57, ... }
MP_F_FREEMODE:
# ... female countsclothes> f 914
# or
clothes> find MP_M_FREEMODE components top 914Output:
MP_M_FREEMODE / components / top / #914
Pack: sl_clothes_civil_3
Range: 846-973
Index: #68
File: jbib_068_u.ydd
clothes> t
# or
clothes> table MP_M_FREEMODE components topOutput:
Ranges for MP_M_FREEMODE / components / top
Pack Start End Count
sl_clothes_service 524 589 66
sl_clothes_civil_1 590 717 128
...
clothes> count sl_clothes_civil_1clothes> dummy sl_clothes_civil_1| Command | Description | Example |
|---|---|---|
find <gender> <kind> <category> <id> |
Find pack and file for a drawable ID | find MP_M_FREEMODE components top 914 |
table <gender> <kind> <category> |
Display ranges table | table MP_M_FREEMODE components top |
count [pack] |
Count .ydd files by pack/category | count sl_clothes_civil_1 |
dummy [pack] |
List dummy (gaps in numbering) | dummy sl_clothes_civil_1 |
reload |
Reload configuration | reload |
clear |
Clear screen | clear |
help |
Show help | help |
quit |
Exit program | quit |
-
f [M\|F] <id>β Find (default: M/male)f 914β Find for MP_M_FREEMODEf F 914β Find for MP_F_FREEMODE
-
t [M\|F]β Table (default: M/male)tβ Table for MP_M_FREEMODEt Fβ Table for MP_F_FREEMODE
The root directory containing all your clothing packs. Each pack should be a subdirectory with a stream/ folder.
The order in which packs are loaded (must match your fxmanifest.lua). This determines the ID ranges:
- First pack starts after base game counts
- Each subsequent pack starts where the previous one ended
The number of clothing items in the base game for each category. These values are gamebuild-specific:
- 3095: Currently configured
- Other gamebuilds: Can be added by adding entries to
gamebuildssection
The tool maps folder names to categories:
jbibβtoplowrβlegsaccsβundershirtupprβbodyhairβhairfeetβshoeshandβbagstaskβarmorberdβmaskteefβaccessoriesdeclβdecalsp_earsβears(prop)p_eyesβglasses(prop)p_headβhats(prop)p_lwristβwatches(prop)p_rwristβbracelets(prop)
- Verify
base_pathis correct inpacks.yaml - Ensure each pack has a
stream/subdirectory - Check that folder names match entries in
load_order
- Some packs in
load_orderdon't exist inbase_path - Remove missing packs from
load_orderor add them to your directory
- Verify
base_countsmatch your gamebuild (currently 3095) - Check that
load_ordermatches your server'sfxmanifest.lua - Ensure files are properly numbered (e.g.,
jbib_000_u.ydd,jbib_001_u.ydd)
- CRITICAL: Ensure "Create sub folders for cloth drawable types" is enabled
- Verify folder structure matches expected pattern
- Check folder naming follows the pattern:
mp_m_freemode_01_mp_m_*ormp_f_freemode_01_mp_f_* - Check file naming convention (must contain
_XXX_pattern, e.g.,jbib_000_u.ydd)
Copyright (c) 2026 Convicts - All Rights Reserved
See LICENSE file for full terms and conditions.
This is a proprietary tool. Unauthorized modification or distribution is prohibited.
For licensing inquiries, please contact the copyright holder.