shared/locations.lua. This file is escrow_ignore’d so you can move peds and add lots without re-uploading the asset.
Anatomy of an entry
| Field | Required | What it does |
|---|---|---|
Coordinates | yes | The world point used to anchor the blip and proximity checks. |
PedCoordinates | yes | Where the salesperson stands (or where the ground marker is drawn if Interaction = 'marker'). |
PreviewCoords | yes | Where the camera and selected vehicle are placed during browsing. Pick somewhere private to avoid players walking through the showroom. |
PurchaseCoords | yes | Where the newly-bought vehicle spawns. |
TestCoordinates | yes | Where the test-drive vehicle spawns. |
Categories | yes | Array of catalog categories this lot sells ('sedans', 'super', 'boats', 'planes', 'helicopters', 'cycles', 'motorcycles', etc.). |
Ped | no | Salesperson model. Only used when Interaction = 'ped'. Defaults to s_m_m_autoshop_01. |
Blip | no | { Name, Sprite, Colour, Scale, Active } — any field overrides Config.Blip. Set Active = false to hide. |
Interaction | no | 'ped' (default) or 'marker'. Marker draws a chevron at PedCoordinates styled by Config.Marker. |
Job | no | Restrict who can BUY here. String ('cardealer') or list ({ 'pd', 'sheriff' }). |
Grade | no | Minimum job grade if Job is set. |
Owner | no | Marks this lot as player-owned. String job name, or { jobName, minGrade }. Members of that job (or admins with the management ace) can run /dealershipmgmt. |
Society | no | Society/job account name (used with Config.Purchase.SocietyPayout). |
RequiredItem | no | Inventory item the player must hold to interact (e.g. 'dealership_card'). |
DisplayVehicles | no | Array of preset display cars: { { model='sultan', coords=vector4(...), colour={27,27} } }. You can also add these in-game from the management dashboard. |
Adding a new lot
- Open
shared/locations.lua. - Copy one of the existing entries.
- Change the key (
['pdm']) to something unique — this is the dealership key used everywhere internally. - Set new coordinates and ped.
- Tick the categories you want to sell.
- Save and restart
nex_dealerships.
Ped or marker?
Default behaviour spawns the salesperson atPedCoordinates. Players walk up and either eye-target them (target mode) or get an [E] Browse Vehicles hint (textui mode).
Prefer a marker over a person? Add Interaction = 'marker' to the entry and the resource will draw an upward chevron at PedCoordinates. Tweak the marker style (type, scale, colour, range) in Config.Marker — see Configuration.
Public vs. owned
-
Public lot — omit
Owner. Anyone can buy here. Sales feed the configured society / dealership balance directly, with no owner split. These lots don’t show up in/dealershipmgmt. -
Owned lot — set
Owner = 'jobName'(or{ 'jobName', minGrade }). Players with that job see the lot in/dealershipmgmtand can manage stock, staff, display vehicles, settings, and view sales. Set a real owner via/dealershipadmin→ Dealerships tab → Set Owner, andConfig.Purchase.OwnerSplitPercentof every sale goes to that owner; the rest goes to the dealership balance.
Admins holding
Config.Management.AcePermission can open the dashboard for any owned lot — they don’t need the job. Use this to seed a new dealership before handing it off to a player.Job-restricted buying
SetJob (and optionally Grade) to lock who can buy from a lot — handy for police, EMS, or staff fleet lots.
Job here only restricts buying — it has nothing to do with Owner. A lot can be public-buy but owned by a job (Owner = 'cardealer' without Job), or job-buy without an owner.
Required-item gate
Want a key card or dealership pass to be required for browsing?Display vehicles
Two ways to put cars on the showroom floor:- Hard-coded — add a
DisplayVehiclesarray to the lot entry inshared/locations.lua. - In-game — open
/dealershipmgmt→ Display Vehicles tab, click Place vehicle, walk into position, and drop. Stored in the database, syncs to all clients without a restart.

