Installation
Install RW Fashion and its dependencies, and give your staff access.
Download it from your CFX portal
Extract the rw_fashion folder into your server's resources directory. The interface ships already built — there's nothing to compile.
Install the dependencies
| Framework | qbx_core, qb-core, ESX, ox_core or ND_Core — picked automatically. Anything else works through the bridge, see Other frameworks |
| Libraries | ox_lib, oxmysql |
| Targeting | ox_target — optional, falls back to an ox_lib marker prompt |
| Photos | A Fivemanage token — optional |
The server needs OneSync and artifact 7290 or newer.
No appearance resource is required — clothing is applied with natives. To save what players walk out in, listen for rw_fashion:outfitApplied.
Add it to server.cfg
Start it after its dependencies:
ensure oxmysql
ensure ox_lib
ensure qbx_core # or qb-core, es_extended, ox_core, ND_Core
ensure ox_target # optional
ensure rw_fashionGive your staff access
Everything staff-only — the /fashionAdmin editor, free and uncapped listings — is gated by one ace, rw_fashion.admin (set in config/config.lua as Config.Catalog.adminAce):
add_ace group.admin rw_fashion.admin allowThe command itself is registered through ox_lib as a restricted command (command.fashionAdmin). Groups that already have add_ace group.admin command allow — the default in most server.cfg files — can run it straight away. If your staff group doesn't have that, allow the command too:
add_ace group.admin command.fashionAdmin allowEvery editor action is checked against rw_fashion.admin on the server again, so the panel can't be abused from the client.
Set up photos (optional)
Put your Fivemanage token in config/sv_config.lua. This file is a server script only, so the token never reaches a client, and the editor can never read or change it.
Config.Server = {
fivemanage = 'YOUR_FIVEMANAGE_TOKEN',
}Without a token, outfits still save — the card just shows a placeholder. The startup line in the server console tells you which it is: photos: nui when a token is set, photos: NO TOKEN when it isn't, photos: off when photos are turned off in the editor.
Start the server
The database tables are created on first boot:
| Table | Holds |
|---|---|
rw_fashion_catalog | Every outfit |
rw_fashion_wardrobe | Who owns what |
rw_fashion_transactions | Every sale and grant |
rw_fashion_earnings | Seller earnings waiting to be collected |
rw_fashion_settings | Everything changed in /fashionAdmin |
rw_fashion_daily | The per-day totals behind the Home dashboard |
If you'd rather create them up front, run sql/install.sql.
On start the console prints the version, the framework and target adapter it picked, and the photo status. If a newer version is out, it says so there too.
The shop ships with one store, Ponsonbys in Rockford Hills. Go there, use the target on the clerk, and the shop opens.
Configuration
Almost everything is set in game with /fashionAdmin — stores, collections, outfit slots, recurring sales and every setting — and saved to the database. See the Settings reference for the full list.
The config files only hold what the editor can't change:
| File | Option | What it does |
|---|---|---|
config/config.lua | Config.Bridge.framework | 'auto', 'qbx', 'qb', 'esx', 'ox', 'nd' or 'custom'. auto picks the highest-priority framework that's running. |
config/config.lua | Config.Bridge.target | 'auto', 'ox' or 'marker'. auto uses ox_target if it's running, otherwise the marker prompt. |
config/config.lua | Config.Catalog.adminAce | The ace for /fashionAdmin. Default rw_fashion.admin. Staff with it also list outfits for free and uncapped. |
config/config.lua | Config.Privacy.bucketOffset | Shoppers get their own routing bucket: this number plus their server id. Default 50000. Pick a range nothing else on your server uses. |
config/sv_config.lua | Config.Server.fivemanage | Your Fivemanage token. Server only. |
The resource is escrowed. The files you can edit are config/*.lua, shared/bridge/framework/*.lua, shared/bridge/target/*.lua, hooks/client.lua, hooks/server.lua and locales/*.json — everything else is encrypted.
Languages
The interface, notifications and editor are translated in locales/:
en.json— Englishel.json— Greek
Pick the language in /fashionAdmin under Settings → General → Language; it changes live. To change wording, edit the file for your language — the locale files stay readable under escrow. The keys are also what hooks return as refusal codes.
Other frameworks
RW Fashion never talks to a framework directly, only through the bridge in shared/bridge/framework/. qbx_core, qb-core, ESX, ox_core and ND_Core work out of the box. For any other framework:
- Open
shared/bridge/framework/custom.lua. - Set
ENABLED = trueand pointRESOURCEat your core resource. - Fill in every function: on the server, the player, their character identifier, name, job, gang, balance and adding or taking money; on the client, whether they are logged in, their job and gang, and the load and unload events.
- Leave
framework = 'auto'inconfig/config.lua(the custom adapter outranks every built-in one), or set it to'custom'.
The same goes for targeting: shared/bridge/target/ holds the ox_target adapter and the marker fallback. The bridge files stay readable under escrow, so you can edit them.
The money functions must really take the money. If they don't, outfits are free.
Wardrobes are stored against the character identifier the bridge returns, so each character on a multicharacter server has their own.