Skip to content

Customization

Two files hold everything you set, and the split between them comes down to one question: would it hurt if a player read it? shared/config.lua is sent to every client. shared/keys.lua is loaded as a server script only and never leaves the server.


All paths are inside mic_cloth_designer unless they say otherwise.

WhereWhat it decidesOpen to edit
shared/config.luaCommand, keybind, permission, language, shared or per-player library, resolution, the item, debugYes
shared/keys.luaYour keys and tokens, the AI settings, photo hosting, the list of designable components — server onlyYes
locales/*.luaEvery string in the studio and its notifications; locales/locale.lua is the resolverYes
items/ox.lua, items/qb.luaThe cloth_design item definition for ox_inventory and QBCoreYes
html/The studio’s interface; html/patterns/ holds the prints, html/previews/ the cached garment thumbnailsNot escrowed, but the scripts ship obfuscated
base/addon_templates/Templates the studio uses to build new garments. Leave it aloneYes
client/, server/, bridge/The logic, the file writer, the bridgesEscrowed
mic_cloth_addons/import/Where you drop your own .ydd garmentsYes
mic_cloth_addons/stream/, metas/, fxmanifest.luaThe generated garments. Rewritten by the studio — do not edit by handGenerated

The open files are the ones in escrow_ignore in fxmanifest.lua.


OptionWhat it doesDefault
Config.Framework'esx' or 'qb'. Set it to match your server; the item bridge also detects the framework by itself. Use 'qb' on QBCore, on QBox (through its QBCore compatibility) and on a standalone server'qb'
Config.LocaleLanguage of the studio and its notifications'en'
Config.CommandCommand that opens the studioclothdesigner
Config.KeybindA key that opens it, such as 'F7'. false for none. Players can rebind it in their FiveM key settingsfalse
Config.OpenPermissionThe ACE a player needs to open the studio. false lets everybody inmic_clothdesigner
Config.GlobalContenttrue: everybody allowed in shares one library of designs, items and outfits. false: each designer sees only their owntrue
Config.TextureResolutionDefault texture size: 256, 512 or 1024. The editor’s dropdown changes it per design, and the AI follows it512
Config.MaxDesignsPerPlayerA cap on saved designs. Present in the file but not enforced by the current version50
Config.Items.EnabledWearable items, outfits and shop items on or offtrue
Config.Items.NameThe generic item that carries a designcloth_design
Config.Items.LabelKept for reference. Each item is shown with its own design’s nameClothing Design
Config.DebugPrints what the studio is doing to the console. Ships on — turn it off for a live servertrue

KeyWhat it does
GeminiAPIKeyTurns the AI generator on. Empty = no AI
FivemanageTokenUploads design and item photos to Fivemanage and stores only the link. Empty = photos are kept in the database, which grows faster
DiscordWebhookPosts every AI generation with the prompt and an estimated cost. Empty = off
ClothNetworkKeyLeave empty. Sharing to the Cloth Network works out of the box

Pre-tuned. The one worth knowing about is Model, which trades cost against quality.

OptionWhat it doesDefault
EnabledAI on or off, whatever the keytrue
Provider'gemini', or 'openai' for DALL·E (the key in GeminiAPIKey is then used for OpenAI)'gemini'
Modelgemini-3.1-flash-lite-image is the cheapest, gemini-3.1-flash-image the balanced one, gemini-3-pro-image the most expensivegemini-3.1-flash-image
GeminiImageSizeFallback output size. Normally unused: the editor’s resolution drives it512px
ImageSizeOutput size for OpenAI only1024x1024
AspectRatioTextures are square1:1
PricingUSD per million input and output tokens, used only for the cost estimate in the Discord log0.50 / 60.00

One generation runs at a time per player, with a short cooldown between them.

Enabled and the token from above. Photos are the 3D render of each design, used in the library, on items (ox_inventory shows it as the item’s image) and on network cards.

Designable components — Config.Components

Section titled “Designable components — Config.Components”

The twelve GTA clothing slots the studio can design for — head, mask, hair, arms, legs, gloves, shoes, accessory, bags, vest, decals and tops — each with the file prefix its garments use. It lives server-side so it cannot be changed from a client. Leave it as shipped.


PermissionWhereWhat it allows
The ACE in Config.OpenPermission (mic_clothdesigner)server.cfg — to a group or one identifierOpening the studio and every action inside it. Checked on the server each time
command.refresh, command.ensure, command.start, command.stop for resource.mic_cloth_designerTop of server.cfgLets the studio reload mic_cloth_addons after an export
Filesystem write from mic_cloth_designer to mic_cloth_addonsTop of server.cfgLets it save garments at all
importaddonsServer consoleRestricted command: the console, or an admin with the ACE for it

CommandWhoWhat it does
/clothdesignerPlayers with the ACEOpens the studio. The name is Config.Command
importaddonsServer consoleTurns the .ydd files waiting in mic_cloth_addons/import/ into designable garments. See 👕 Garments

Eleven ship in locales/: en, es, fr, de, it, pt, pl, ru, tr, nl, cs. Set Config.Locale and restart. A string missing from a language shows in English.

To add one:

  1. Copy locales/en.lua to locales/<code>.lua and change Locales['en'] to your code.
  2. Translate the values, never the keys, and keep every %s.
  3. Add the file to shared_scripts in fxmanifest.lua before locales/locale.lua — the resolver has to load after every language. Then refresh.
  4. Set Config.Locale to the new code.

The interface is translated by swapping its English text for yours, so the English values in en.lua have to stay exactly as they are.


Both bridge files are escrowed; this is what they do, so you know what to expect.

FileWhat it is for
bridge/server_bridge.luaDetects qb-core or es_extended, registers the usable items (ESX RegisterUsableItem / QBCore CreateUseableItem, which ox_inventory honours), and gives items with their design attached — through ox_inventory when it is running, otherwise the framework
client/bridge.luaNotifications. Inside the studio they are its own toasts; outside it, ox_lib’s notify when it is running, then ESX or QBCore, then the GTA feed

Players are identified by their license: identifier, whatever the framework.