


Was this page helpful?
| Dependency | Notes |
|---|---|
| ox_lib | Required — shared init |
| ox_inventory | Required — all clothing items are stored here |
| oxmysql | Required — used for ESX skin saving |
| OX Core / ESX / QBCore | One framework required |
ox_appearance / fivem-appearance / illenium-appearance / qb-clothing | One appearance resource required for saving outfit changes |
Download mbt_meta_clothes from the MBT Store.
Place it keeping the exact resource name:
resources/
└── [mbt]/
└── mbt_meta_clothes/
├── client/
├── server/
├── html/
├── item_image/
├── config.lua
└── fxmanifest.luaAdd the following items to your ox_inventory items file:
Put on a non-default outfit on your character (via your clothing menu), then press J. The NUI grid should appear. Click a slot — an animation should play, the clothing should revert to the default, and the item should appear in your inventory via /inv.
['trousers'] = { label = 'Trousers', weight = 500, stack = false, close = true },
['shoes'] = { label = 'Shoes', weight = 500, stack = false, close = true },
['chain'] = { label = 'Torso Accessory', weight = 200, stack = false, close = true },
['topdress'] = { label = 'Top Outfit', weight = 800, stack = false, close = true },
['jacket'] = { label = 'Jacket', weight = 600, stack = false, close = true },
['hat'] = { label = 'Hat', weight = 300, stack = false, close = true },
['glasses'] = { label = 'Glasses', weight = 100, stack = false, close = true },
['earaccess'] = { label = 'Ear Accessories', weight = 50, stack = false, close = true },
['watch'] = { label = 'Watch', weight = 100, stack = false, close = true },Copy the item images from item_image/ into your ox_inventory image folder so each item has its icon.
For each item you want players to be able to re-wear, register a useItem callback in your inventory. The callback should read the metadata and trigger the appropriate client event:
Drawables (legs, shoes, chain, jacket):
exports.ox_inventory:registerHook('useItem', function(payload)
if payload.item.name == 'trousers' then
local meta = payload.item.metadata
TriggerClientEvent('mbt_metaclothes:applyDress', payload.source, {
index = meta.index,
drawable = meta.drawable,
texture = meta.texture,
palette = meta.palette,
})
end
end)Top outfit kit (topdress):
exports.ox_inventory:registerHook('useItem', function(payload)
if payload.item.name == 'topdress' then
local meta = payload.item.metadata
local kit = {}
for _, part in ipairs({'Arms', 'Tshirt', 'Jacket'}) do
kit[#kit+1] = {
index = meta[part].index,
drawable = meta[part].drawable,
texture = meta[part].texture,
palette
Props (hat, glasses, earaccess, watch):
exports.ox_inventory:registerHook('useItem', function(payload)
if payload.item.name == 'hat' then
local meta = payload.item.metadata
TriggerClientEvent('mbt_metaclothes:applyProps', payload.source, {
index = meta.index,
drawable = meta.drawable,
texture = meta.texture,
})
end
end)The item is automatically removed from the player's inventory once applied. Handle removal inside your useItem callback or use ox_inventory's built-in consume logic.
Open config.lua:
MBT.Framework = "OX" -- "OX" / "ESX" / "QB"ensure ox_lib
ensure oxmysql
ensure ox_inventory
ensure es_extended # or qb-core / ox_core
ensure ox_appearance # or your appearance resource
ensure mbt_meta_clothes