StuntxTrap Rim Shop¶
Player-run rim shop: orders, society balance, delivery truck loop, stocking racks, and a catalog driven by your Stunt Rim Shop (or compatible) wheel pack’s carcols.meta.
At a glance
oxmysql · PolyZone · rim pack resource (default stuntrimshop_starter) · Tuner Auto Shop MLO + IPL client · folder name StuntxTrap-RimShop
Support Discord · Showcase video · YouTube @XVisonMods
Include your ensure order and any client/server errors if something fails after Dependencies.
Framework support¶
Supported. Add the rimshop job to qb-core/shared/jobs.lua (see QBCore job below). Set Config.Framework = 'auto' or 'qb'.
Supported. Run the esx_rimshop_job.sql block under Database (SQL) on this page (or import sql/esx_rimshop_job.sql if included). Set Config.Framework = 'auto' or 'esx'.
Supported via qbx_core (same job pattern as QBCore). Set Config.Framework = 'auto' or 'qb'.
Preview¶
Showcase · StuntxTrap Rim Shop
Direct link: youtu.be/Edy9t3dveiw
Features¶
- Order UI at the shop laptop; boss menu at the configured point
- Business cash in
rimshop_society(MySQL) mule2delivery: depot → shop unload → unpack → stock racks- Rim preview / wheel paint zones (configurable)
- Catalog built from
carcols.metain the rim pack resource
External requirements (read before install)¶
Tuner Auto Shop MLO¶
Download the free MLO from Cfx.re: Tuner Auto Shop.
- Enforce the tuner game build on the server, e.g.
+set sv_enforceGameBuild tuner(use a current server artifact). - Use the IPL
client.luathat ships with the resource bundle (copyinstall/MLO-ipl_tunergarage_client.luainto your IPL resource asclient.luaif you use theipl_tunergaragehelper).
Stunt Rim Shop — Starter 40 pack¶
Required for the default catalog: purchase/configure the Starter 40 pack (FiveM build). The resource folder name must match Config.RimResourceName (default stuntrimshop_starter).
Dependencies¶
| Resource | Notes |
|---|---|
| oxmysql | Required |
| PolyZone | Required (dependency 'PolyZone' in fxmanifest.lua) |
| stuntrimshop_starter (or your pack) | Must contain carcols.meta |
| qb-core or qbx_core or es_extended | One framework |
| ox_lib | Optional (nicer prompts/notifications) |
Configuration¶
Where to tune
Edit config.lua. Quick merge keys are in config.COPY_PASTE.lua. Config.RimResourceName must match the folder name of your rim pack.
Essentials (copy-paste)¶
Config.Framework = 'auto' -- 'auto' | 'esx' | 'qb'
Config.BusinessJob = 'rimshop'
Config.RimResourceName = 'stuntrimshop_starter'
Config.BoxCutPolyZone.resourceName = 'PolyZone'
Database (SQL)¶
Run on your framework database (same DB as characters). If your download is missing sql/rimshop.sql or sql/esx_rimshop_job.sql, copy from below.
The resource can also create/patch tables on start; running SQL manually is still recommended.
Copy-paste — rimshop.sql (all frameworks)¶
CREATE TABLE IF NOT EXISTS rimshop_society (
job_name VARCHAR(80) NOT NULL PRIMARY KEY,
balance INT NOT NULL DEFAULT 0,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS rimshop_stock (
id INT AUTO_INCREMENT PRIMARY KEY,
rim_name VARCHAR(120) NOT NULL UNIQUE,
stock_count INT NOT NULL DEFAULT 0,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS rimshop_retail_prices (
rim_name VARCHAR(120) NOT NULL PRIMARY KEY,
retail_price INT NOT NULL,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS rimshop_orders (
id INT AUTO_INCREMENT PRIMARY KEY,
citizenid VARCHAR(80) NOT NULL,
player_name VARCHAR(100) NOT NULL,
rim_name VARCHAR(120) NOT NULL,
sets_ordered INT NOT NULL,
boxes_total INT NOT NULL,
boxes_stocked INT NOT NULL DEFAULT 0,
status VARCHAR(40) NOT NULL DEFAULT 'active',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
Copy-paste — esx_rimshop_job.sql (ESX only)¶
Skip on QBCore/Qbox — use the shared job snippet instead.
-- ESX Legacy — add Rim Shop job (matches Config.BusinessJob = 'rimshop')
-- Shop inventory for customer sales is rimshop_stock / rimshop_society (created by the resource), not ESX society accounts.
-- Retail sales remove Config.RimsPerRetailSale rim units per purchase (default 4) on all frameworks including ESX.
-- Run this on your ESX database (e.g. esxlegacy_* in HeidiSQL).
-- The resource can also auto-insert on start (Config.EsxAutoInsertJob) if columns match.
-- If a statement fails, adjust column names to match your `jobs` / `job_grades` tables.
INSERT IGNORE INTO `jobs` (`name`, `label`) VALUES ('rimshop', 'Rim Shop');
-- Grades 0–4 (boss = grade 4; script uses grade ≥ EsxBossMinGrade or grade_name boss)
INSERT IGNORE INTO `job_grades` (`job_name`, `grade`, `name`, `label`, `salary`, `skin_male`, `skin_female`) VALUES
('rimshop', 0, 'recruit', 'Recruit', 200, '{}', '{}'),
('rimshop', 1, 'employee', 'Employee', 400, '{}', '{}'),
('rimshop', 2, 'senior', 'Senior Tech', 600, '{}', '{}'),
('rimshop', 3, 'manager', 'Manager', 800, '{}', '{}'),
('rimshop', 4, 'boss', 'Boss', 1200, '{}', '{}');
QBCore / Qbox — shared job snippet
Add to qb-core/shared/jobs.lua (adjust payments to your economy):
['rimshop'] = {
label = 'Rim Shop',
defaultDuty = true,
offDutyPay = false,
grades = {
['0'] = { name = 'recruit', payment = 200 },
['1'] = { name = 'employee', payment = 400 },
['2'] = { name = 'senior', payment = 600 },
['3'] = { name = 'manager', payment = 800 },
['4'] = { name = 'boss', isboss = true, payment = 1200 },
},
},
Inventory items¶
This script does not add standalone consumable shop items by default; the flow is job + UI + delivery. If you extend it with items, align names with your qb-core/shared/items.lua or ox_inventory conventions.
Installation¶
Steps¶
- Install the Tuner Auto Shop MLO and ensure your IPL
client.luamatches the bundle (see External requirements). - Install PolyZone and oxmysql; place the Stunt Rim Shop FiveM resource and keep its folder name =
Config.RimResourceName. - Run the
rimshop.sqlSQL block on this page (or importsql/rimshop.sqlif included). ESX: also runesx_rimshop_job.sql. QBCore/Qbox: add therimshopjob to shared jobs (snippet below). - Drop
StuntxTrap-RimShopinresources/.../— folder nameStuntxTrap-RimShop. -
ensureorder example:ensure oxmysql ensure PolyZone ensure qb-core ensure ipl_tunergarage ensure stuntrimshop_starter ensure StuntxTrap-RimShop -
Restart the server. Assign players the
rimshopjob (boss grade for boss features ifConfig.RequireBossis true).
Notes¶
Rim pack is mandatory for the catalog
Without a resource that exposes carcols.meta the way the Stunt pack does, the rim list will be empty.
- Full install (MLO, coords, smoke test) and the same copy-paste SQL live in the resource’s
INSTALL.mdinsideStuntxTrap-RimShop(ship this file even ifsql/is empty).