Skip to content

Installation — lumo-clothing ​

Pick your framework below and follow only that section, then do the common steps and the test checklist.

Back up first. Copy your database and the clothing resource you are replacing somewhere safe. Rolling back is then just moving a folder back.


QBCore ​

  1. Copy lumo-clothing into resources/ (any category, e.g. [lumo]).
  2. Stop qb-clothing (and illenium-appearance / fivem-appearance if you run one). If your cfg says ensure [qb], move the folder out of the category (see Disabling a resource).
  3. server.cfg:
    cfg
    ensure oxmysql
    ensure ox_lib
    ensure qb-core
    ensure [qb]                # qb-inventory, qb-target … (without qb-clothing)
    ensure lumo-clothing
    ensure qb-multicharacter   # or lumo-multicharacter: after lumo-clothing
  4. Restart. Console: [lumo-clothing] ready — framework: qb.

lumo-clothing reads and writes the same playerskins table as qb-clothing, in the same format, so existing characters keep their look.

Qbox (qbx_core) ​

  1. Copy lumo-clothing into resources/.
  2. Stop illenium-appearance (Qbox's default). It sits in [standalone] or [qbx] on most recipes: move it to a disabled category.
  3. server.cfg:
    cfg
    ensure ox_lib
    ensure [qbx]
    ensure lumo-clothing
  4. Restart. Console: [lumo-clothing] ready — framework: qbx.

Notes:

  • Qbox's own character creation calls qb-clothes:client:CreateFirstCharacter, which lumo-clothing answers, so new characters get the Lumo creator.
  • illenium-appearance also stores skins in playerskins, but in its own format. Those are not converted: existing characters start in the default outfit once and save a new look at a shop. New characters are unaffected.
  • ox_inventory: add install/ox_inventory_items.lua (see Items).

ESX (es_extended) ​

  1. Copy lumo-clothing into resources/.
  2. Stop esx_skin and skinchanger. On ESX Legacy they sit in [core], so move both into a category nothing ensures. lumo-clothing answers their events (skinchanger:getSkin, skinchanger:loadSkin, skinchanger:loadClothes, esx_skin:openSaveableMenu, esx_skin:getPlayerSkin) and provides both names, so ESX job cloakrooms and resources that list esx_skin as a dependency (esx_ambulancejob …) keep working.
  3. server.cfg, with lumo-clothing before any resource that depends on esx_skin:
    cfg
    ensure oxmysql
    ensure ox_lib
    ensure es_extended
    ensure lumo-clothing
    ensure lumo-multicharacter # or your ESX character selector, after lumo-clothing
  4. Restart. Console: [lumo-clothing] ready — framework: esx.

Notes:

  • Skins are stored in playerskins under the ESX character identifier (char1:…). ESX's own users.skin column is left untouched, so going back to esx_skin later is possible. Existing esx_skin looks are not converted: players save a new look at a shop once.
  • New characters: lumo-multicharacter opens the Lumo creator itself. Other selectors that open esx_skin:openSaveableMenu get the Lumo creator too.
  • No target script needed. ESX ships without one, so shops, barbers, tattoo shops, job lockers and the laundromat show an [E] prompt when you walk up. If you install ox_target (free, works on ESX), lumo-clothing uses it automatically for the laundromat.
  • Clothes as inventory items need an inventory that stores item metadata. ESX's own inventory cannot, so use ox_inventory for that feature or switch Lumo.ClothingItems.enabled off. Everything else works with ESX's inventory.

Standalone (no framework) ​

For servers without QBCore, Qbox or ESX. Details: Standalone.

  1. Copy lumo-clothing into resources/.
  2. server.cfg:
    cfg
    ensure oxmysql
    ensure ox_lib
    ensure lumo-clothing
    ensure lumo-multicharacter  # optional: characters; without it, one look per licence
    ensure lumo-spawn           # optional
    
    add_ace group.admin lumo.clothing.admin allow
    add_principal identifier.license:YOUR_LICENSE group.admin
  3. Restart. Console: [lumo-clothing] ready — framework: standalone.

There is no money without a framework, so shopping is free by default. To charge, plug your economy into Standalone.Money in bridge/config.lua.

Common steps (every framework) ​

Database ​

Nothing to import: on first start lumo-clothing creates its tables (playerskins, player_outfits, lumo_shops, lumo_items, lumo_shop_items, lumo_shop_owners, lumo_tattoos, lumo_wardrobe, lumo_clothing_evidence) and adds 7 default shops if there are none. Works on MariaDB and MySQL 8.

If your database user cannot create tables, import sql/lumo_appearance.sql, sql/rp_features.sql and sql/framework_identifiers.sql in that order. sql/seed_data.sql is optional demo data.

Items ​

Only needed for clothes as inventory items, the hair tie and laundry detergent. Merge (do not replace your file):

InventoryFile
ox_inventoryinstall/ox_inventory_items.lua → ox_inventory/data/items.lua
qb-inventory / lumo-inventory / ps / qsinstall/qb_items.lua → qb-core/shared/items.lua

Restart the inventory after changing items.

Thumbnails (optional): lumo-greenscreener ​

The shop's catalog pictures are taken in game by lumo-greenscreener, which is included with your download as its own zip (lumo-greenscreener-1.0.0.zip, free, GPL-3.0). It is only needed while you take pictures; without it the shop shows a placeholder. You can start it, make your pictures, and stop it again.

  1. Unzip lumo-greenscreener into resources/ next to lumo-clothing.
  2. Have yarn (part of every FXServer) and screencapture (or screenshot-basic; only one of them) installed.
  3. server.cfg, in this order, greenscreener before lumo-clothing:
    cfg
    add_ace group.admin lumo.greenscreener allow
    add_filesystem_permission screencapture      write lumo-clothing
    add_filesystem_permission lumo-greenscreener write lumo-clothing
    add_unsafe_child_process_permission "lumo-greenscreener"
    
    ensure yarn
    ensure screencapture        # or screenshot-basic
    ensure lumo-greenscreener
    ensure lumo-clothing
    With screenshot-basic, the first permission line names screenshot-basic.
  4. Restart. The first start installs greenscreener's packages (needs internet, about a minute).
  5. In game: /lumo_admin → item editor → capture (one item, or bulk for a whole category). /cancelcapture stops a run. Pictures are saved to lumo-clothing/web/images/catalog/ and show in the shop straight away.

Details and troubleshooting: the README inside the greenscreener zip.

Laundromat (optional) ​

The laundry feature's default location is the free Jerry's Laundromat MLO (lev_laundromat). Without it the laundromat prompt and blip simply stay hidden. See Laundry.

Disabling a resource inside a category ​

ensure [qb] starts everything in that folder, so deleting a line does nothing. Make a disabled category and move the old resource there:

resources/
  [qb]/
  [disabled]/              <- create this
    qb-clothing/           <- move it here

Moving from the lumo-bridge edition ​

This edition carries its own copy of the framework layer in bridge/, so it no longer needs the separate lumo-bridge resource.

  1. Replace the whole lumo-clothing folder (do not merge). Copy your shared.lua changes and web/images/catalog thumbnails across.
  2. Move any changes you made in lumo-bridge/config.lua into lumo-clothing/bridge/config.lua.
  3. Remove ensure lumo-bridge unless other Lumo resources still list it.
  4. No database changes; the tables are checked on start.

Test checklist ​

  • [ ] New character: the creator opens, saving keeps the look after a relog
  • [ ] Clothing shop: preview, buy with cash and with bank; not enough money changes nothing
  • [ ] Barber and tattoo shop: changes stay after a relog
  • [ ] Outfits: save, wear, rename, delete; a second character has its own
  • [ ] Job locker as the right job, and refused for others
  • [ ] /lumo_admin works for an admin and is refused for a player
  • [ ] ESX: a job cloakroom (e.g. police) puts the uniform on and takes it off