RoyaleWindRoyaleWind

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

Frameworkqbx_core, qb-core, ESX, ox_core or ND_Core — picked automatically. Anything else works through the bridge, see Other frameworks
Librariesox_lib, oxmysql
Targetingox_target — optional, falls back to an ox_lib marker prompt
PhotosA 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_fashion

Give 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 allow

The 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 allow

Every 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:

TableHolds
rw_fashion_catalogEvery outfit
rw_fashion_wardrobeWho owns what
rw_fashion_transactionsEvery sale and grant
rw_fashion_earningsSeller earnings waiting to be collected
rw_fashion_settingsEverything changed in /fashionAdmin
rw_fashion_dailyThe 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:

FileOptionWhat it does
config/config.luaConfig.Bridge.framework'auto', 'qbx', 'qb', 'esx', 'ox', 'nd' or 'custom'. auto picks the highest-priority framework that's running.
config/config.luaConfig.Bridge.target'auto', 'ox' or 'marker'. auto uses ox_target if it's running, otherwise the marker prompt.
config/config.luaConfig.Catalog.adminAceThe ace for /fashionAdmin. Default rw_fashion.admin. Staff with it also list outfits for free and uncapped.
config/config.luaConfig.Privacy.bucketOffsetShoppers 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.luaConfig.Server.fivemanageYour 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 — English
  • el.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:

  1. Open shared/bridge/framework/custom.lua.
  2. Set ENABLED = true and point RESOURCE at your core resource.
  3. 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.
  4. Leave framework = 'auto' in config/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.

On this page