Skip to content

Retro Dealership

Config is split across three files:

  • config/config.lua - main settings
  • config/locations_config.lua - shop locations
  • config/customV_config.lua - custom/addon vehicles
Config.Framework = 'auto' -- 'qb', 'qbx', 'esx', or 'auto'
Config.Locale = 'en'
Config.Debug = false
Config.CurrencySymbol = '$'
Config.RegistrationTax = 0.02 -- 2% tax on purchases
Config.PreviewCoords = vector4(-54.54, -1089.55, -110.96, 57.84)
Config.PreviewCam = vector4(-55.96, -1085.01, -111.1, 193.32)
Config.PreviewRadius = 15.0

Uses an MLO interior. Other players are blocked within the radius.

Config.TestDriveDuration = 120000 -- 2 minutes
Config.TestDriveReturnRadius = 5.0
Config.FinanceWeeks = 12 -- weekly payments
Config.FinanceInterest = 0.10 -- 10%
Config.FinanceDownPayment = 0.10 -- 10% minimum
Config.PaymentTypes = { 'bank', 'cash' }
Config.PurchaseTypes = { 'personal', 'company' }
Config.Blip = {
sprite = 326,
color = 0,
scale = 0.8,
display = 4,
}
Config.InteractionDistance = 2.5
Config.InteractMode = 'auto' -- 'auto', 'ox', 'qb', 'npc', 'marker'
Config.FallbackInteract = 'npc' -- 'npc' or 'marker'
Config.NpcModel = 's_m_m_autoshop_01'

Marker settings (used when no target resource is available):

Config.Marker = {
type = 21,
size = vector3(0.4, 0.4, 0.3),
color = { r = 197, g = 160, b = 89, a = 180 },
rotate = false,
bobUpDown = true,
rotX = 180.0,
}

Level is calculated from cumulative sales against thresholds:

Config.LevelThresholds = { 0, 100000, 500000, 1000000, 1500000, 5000000 }
Config.BaseStockSlots = 10
Config.BaseShowcaseSlots = 2

Each level can grant additional stock slots, showcase slots, or unlock a vehicle class:

Config.LevelRewards = {
[2] = { title = '+5 Stock Slots', desc = 'More inventory capacity.', stockSlots = 5 },
[3] = { title = '+1 Showcase Slot', desc = 'Extra display space.', showcaseSlots = 1 },
[4] = { title = 'Luxury Vehicles', desc = 'Unlock luxury orders.', unlockClass = 'LUXURY' },
[5] = { title = 'Super Cars', desc = 'Access super cars.', unlockClass = 'SUPER' },
[6] = { title = 'Hyper Cars', desc = 'Unlock hyper cars.', unlockClass = 'HYPER' },
}
Config.LockedClasses = { 'LUXURY', 'SUPER', 'HYPER' }
Config.UsedCarEnabled = true
Config.UsedCarDepreciation = 0.20 -- max price = original ร— 0.80
Config.UsedCarCommission = true
Config.UsedCarCommissionRate = 0.10 -- 10% to shop account
Config.UsedCarMaxListings = 3 -- per player across all shops
Config.DeliveryMinTime = 60000 -- 1 min
Config.DeliveryMaxTime = 600000 -- 10 min
Config.TrailerMaxVehicles = 3
Config.DeliveryTruck = 'flatbed'
Config.DeliveryTrailer = 'tr3'
Config.LargeVehicleClasses = { 'SUV' } -- must be driven directly, can't load on trailer
Config.ShopHoursMode = 'real' -- 'real' (server time) or 'game' (GTA clock)
Config.Timezone = 'KST' -- for real mode: 'KST', 'EST', 'PST', 'UTC', etc.

Owners set open/close times through the Settings dashboard.

Config.FuelResource = 'auto'

Supports: ox_fuel, LegacyFuel, cdn-fuel, ps-fuel, lc_fuel, Renewed-Fuel, x-fuel, jg-fuel, lb-fuel, okokGasStation, nd_fuel, myFuel, ti_fuel. Set to false to disable.

Config.VehicleImageSource = 'https://docs.fivem.net/vehicles/%s.webp'

%s gets replaced with the model name. Set to 'local' to use web/dist/images/{model}.png instead.

Maps framework vehicle classes to shop display categories. Vehicles without a mapping are excluded from the catalogue.

Config.CategoryMap = {
['super'] = 'HYPER',
['sports'] = 'SUPER',
['compacts'] = 'LUXURY',
['sedans'] = 'LUXURY',
['coupes'] = 'LUXURY',
['muscle'] = 'MUSCLE',
['sportsclassics'] = 'CLASSIC',
['suvs'] = 'SUV',
['offroad'] = 'SUV',
['motorcycles'] = 'MOTORCYCLE',
}

Add addon or custom vehicles in config/customV_config.lua. These merge on top of framework vehicles - use the same model name to override existing data.

Config.CustomVehicles = {
['modelname'] = {
label = 'My Custom Car',
brand = 'Custom Brand',
class = 'SUPER',
order_cost = 500000,
default_sale = 850000,
top_speed = 210,
accel_s = 3.2,
handling = 80,
braking = 75,
power = 90,
image = '',
},
}

Defined in config/locations_config.lua:

Config.Shops = {
['retro_motors'] = {
label = 'Retro Motors',
logo = 'retrostore.png',
shopPrice = 500000,
stockMode = 'unlimited',
entry = { coords = vector3(...), heading = 215.0 },
npc_shop = vector4(...),
marker_shop = vector3(...),
marker_owner = vector3(...),
blip = { coords = vector3(...), label = 'Retro Motors' },
categories = { 'SUPER', 'HYPER', 'LUXURY', 'MUSCLE', 'CLASSIC', 'SUV', 'MOTORCYCLE' },
testDrive = vector4(...),
buySpawn = vector4(...),
truckSpawn = vector4(...),
vehicleSpawnSlots = { vector4(...), ... },
vehicleParking = { vector4(...), ... },
},
}
FieldDescription
labelDisplay name
logoLogo image filename
shopPricePurchase price for unowned shops
stockMode'unlimited' = no stock limits; 'stock' = requires stocked inventory
entryShop entry point
npc_shopNPC spawn position
marker_shopCustomer marker position (no target fallback)
marker_ownerOwner dashboard marker position
categoriesVehicle categories available at this shop
testDriveTest drive start/return location
buySpawnPost-purchase vehicle spawn
truckSpawnDelivery truck spawn point
vehicleSpawnSlotsPort delivery spawn positions
vehicleParkingShop parking spots for delivered vehicles