Retro Dealership
No vehicles in the shop catalogue
Section titled โNo vehicles in the shop catalogueโCheck Config.CategoryMap in config/config.lua. Framework vehicle classes need to be mapped to shop categories - anything without a mapping gets excluded. Turn on Config.Debug = true to see which classes are being skipped in the server console.
Adding a new shop location
Section titled โAdding a new shop locationโAdd an entry to config/locations_config.lua under Config.Shops:
Config.Shops['my_shop'] = { label = 'My Shop', logo = 'retrostore.png', shopPrice = 300000, stockMode = 'unlimited', entry = { coords = vector3(x, y, z), heading = 0.0 }, npc_shop = vector4(x, y, z, heading), marker_shop = vector3(x, y, z), marker_owner = vector3(x, y, z), blip = { coords = vector3(x, y, z), label = 'My Shop' }, categories = { 'SUPER', 'LUXURY', 'MUSCLE' }, testDrive = vector4(x, y, z, heading), buySpawn = vector4(x, y, z, heading), truckSpawn = vector4(x, y, z, heading), vehicleSpawnSlots = { vector4(x, y, z, heading) }, vehicleParking = { vector4(x, y, z, heading) },}Unlimited vs stock mode
Section titled โUnlimited vs stock modeโ'unlimited': All vehicles in the category list are available atdefault_saleprice. No stock management, no ordering. Good for an unowned shop.'stock': Only vehicles inrs_dealerships_stockcan be purchased. Stock comes from the order/delivery system.
Finance system
Section titled โFinance systemโCustomers pay a minimum down-payment (Config.FinanceDownPayment, default 10%), then the rest splits into weekly payments over Config.FinanceWeeks (default 12). Interest at Config.FinanceInterest (10%) is applied. Tracked in rs_dealerships_finance.
Shop operating hours
Section titled โShop operating hoursโOwners set open/close times through the Settings dashboard. The time check uses either real-world server time (Config.ShopHoursMode = 'real') or the GTA in-game clock ('game'). For real mode, Config.Timezone determines which timezone to use.
Level system
Section titled โLevel systemโShop level comes from cumulative total sales against Config.LevelThresholds. Higher levels unlock more stock slots, showcase slots, and vehicle classes (LUXURY, SUPER, HYPER). Rewards are defined in Config.LevelRewards.
Delivery system
Section titled โDelivery systemโWhen the owner places an order, a delivery timer starts (random between Config.DeliveryMinTime and Config.DeliveryMaxTime). Once ready, the owner does a self-pickup: a flatbed with trailer spawns at the port with the ordered vehicles. Drive them back to the shop and park them.
Large vehicles (classes in Config.LargeVehicleClasses) canโt be loaded on the trailer - drive those directly.
Used car system
Section titled โUsed car systemโPlayers submit a trade request at a shop with an asking price (capped at original price ร (1 - depreciation)). The owner reviews and approves or rejects it. Approved vehicles go up for sale. When sold, the seller gets the asking price minus commission (if Config.UsedCarCommission is enabled). Commission goes to the shop account.
Adding custom/addon vehicles
Section titled โAdding custom/addon vehiclesโPut them in Config.CustomVehicles in config/customV_config.lua. These merge on top of framework vehicles. Use the same model name to override existing data.
Showcase/display system
Section titled โShowcase/display systemโOwners assign vehicles from stock to showcase slots through Settings, then position them with free-aim 3D placement (move, scroll for height, R to rotate). Showcase slot count is limited by shop level.
Staff system
Section titled โStaff systemโOwners hire nearby players through the Dashboard. Positions: Junior Staff (0), Sales Rep (1), Showroom Manager (2), Manager (3), Owner (4). Each role has configurable permissions. Staff automatically get the shopโs dynamic job when they join the server.
Vehicle images
Section titled โVehicle imagesโSet Config.VehicleImageSource to a URL pattern with %s for the model name, or 'local' to use web/dist/images/{model}.png.