/dealershipmgmt is the in-game dashboard for owned dealerships. It’s where owners and managers handle stock, employees, display cars, settings, and review sales.
Who can open it
Anyone who matches any of:- Is the player owner set via
/dealershipadmin→ Set Owner - Holds the dealership’s
Owner = 'jobName'(and meets the grade if{ 'jobName', minGrade }is used) - Has the management ace (
Config.Management.AcePermission, defaultnex_dealerships.manage) — admins are blanket-included via this
/dealershipadmin → Manage are jumped straight to the lot they clicked.
Public lots (Owner unset in shared/locations.lua) never appear here.
Dashboard tab
At-a-glance numbers for the selected lot:- Bank balance
- Sales count / revenue (today / week / month / all-time)
- Pending restock orders
- Active loans on vehicles sold here
- Total stocked SKUs
Vehicles tab
The lot’s catalog slice — every catalog vehicle whose category matches one of the lot’sCategories. From here you can:
- Show / hide specific models from this lot (hidden models are persisted in
nex_dealership_settings.hidden_models). - Override price per model for this lot.
- See stock on hand and the low-stock warning badge (configured via
Config.Stock.LowStockWarn).
Display Vehicles tab
Manage the cars parked in the showroom for visual flavour. Add as many as you like.- Click Place vehicle.
- The vehicle spawns and follows your camera — use the in-world placer to position it.
- Click again to drop. The entry is saved to
nex_dealership_dispvehand immediately broadcast to all clients. - Pick a paint colour from the swatch picker (vanilla index or custom RGB).
shared/locations.lua via the DisplayVehicles = { ... } field — see Dealership lots.
Stock tab
The dealership’s on-hand stock per model, plus a per-model price override slot.- Public lots with
Config.Stock.EnforceOnPublic = false(default) ignore stock entirely — the column is informational. - Owned lots with
Config.Stock.EnforceOnOwned = true(default) can’t sell at zero stock.
Orders tab
Restock orders awaiting delivery — and the form to place one.- Pick a model.
- Pick a quantity.
- The form computes the cost (
listed price × Config.Stock.Restock.CostPercent / 100 × quantity) and the delivery ETA (MinDeliverySecs + quantity × SecsPerUnit, capped atMaxDeliverySecs). - Click Place order. If
Config.Stock.Restock.PaidFromBalance = true, the dealership bank is debited; otherwise the placing player’s account is. - When the timer elapses, stock is incremented and the order is marked
fulfilled.
Sales tab
Paginated history of every sale at this lot (Config.Management.PageSize per page, default 25). Shows player name, model, price, payment kind, and links to the loan row for financed sales.
For active loans, click through to see payment history and (with appropriate permissions) cancel the loan early.
Employees tab
Hire, fire, and promote staff for this dealership.| Action | Requires |
|---|---|
| Hire | Role with hire = true (default: manager, owner). |
| Fire | Same. |
| Change role | Same. |
| Set commission | Role with setCommission = true. |
manager and employee plus the implicit owner. Add more in Config.Employees.Roles and set their permissions in Config.Employees.Permissions.
If Config.Employees.SyncFrameworkJob = true, hiring also sets the player’s framework job and grade (per Config.Employees.RoleGrades), and firing reverts them to Config.Employees.FiredJob/FiredGrade. This lets employees pass job-gated selling checks without you having to manage two systems.
The owner is the player whose identifier is in
nex_dealership_settings.owner_identifier. They’re always treated as owner role for permission checks — they don’t need a row in the employees table.Settings tab
Per-lot toggles persisted innex_dealership_settings.settings (JSON blob). These override the global defaults for this lot — useful for, say, disabling buybacks at a luxury showroom while keeping them on at the truck lot.
Withdrawals from the dealership bank balance happen here, gated by Config.Employees.Permissions[role].withdraw.
