Configuration
This section includes all configurable files for the selected script. Most settings are configured automatically, but each config.lua file contains a header comment explaining the purpose and usage of every configuration type. Be sure to read the header of each file carefully to fully understand how to customize and adapt the system for QBCORE, ESX, or standalone environments, ensuring seamless integration with your server.
qs-vehicleshop/config/config.lua
--──────────────────────────────────────────────────────────────────────────────
-- Quasar Store · Configuration Guidelines
--──────────────────────────────────────────────────────────────────────────────
-- This configuration file defines all adjustable parameters for the script.
-- Comments are standardized to help you identify which sections you can safely edit.
--
-- • [EDIT] – Safe for users to modify. Adjust these values as needed.
-- • [INFO] – Informational note describing what the variable or block does.
-- • [ADV] – Advanced settings. Change only if you understand the logic behind it.
-- • [CORE] – Core functionality. Do not modify unless you are a developer.
-- • [AUTO] – Automatically handled by the system. Never edit manually.
--
-- Always make a backup before editing configuration files.
-- Incorrect changes in [CORE] or [AUTO] sections can break the resource.
--──────────────────────────────────────────────────────────────────────────────
Config = {} -- [CORE] Main configuration table.
--──────────────────────────────────────────────────────────────────────────────
-- Language & Framework [EDIT]/[AUTO]
--──────────────────────────────────────────────────────────────────────────────
Config.Language = "en" -- [EDIT] UI/Locales language code.
-- [AUTO] Detect framework; falls back to 'esx' if none is found.
-- [INFO] If your core is renamed or custom, replace this line with a fixed value: 'qb' or 'esx'.
Config.Framework = GetResourceState('qb-core') == 'started' and 'qb'
or GetResourceState('es_extended') == 'started' and 'esx'
or 'esx' -- [AUTO]
--──────────────────────────────────────────────────────────────────────────────
-- Feature Toggles [EDIT]
--──────────────────────────────────────────────────────────────────────────────
Config.EnableTestDrive = true -- [EDIT] Enable/disable test drive feature.
Config.RequireLicensed = false -- [EDIT] Require valid driver license to purchase/test.
Config.Debug = false -- [EDIT] Verbose console logs for troubleshooting.
--──────────────────────────────────────────────────────────────────────────────
-- Test Drive & Showroom [EDIT]
--──────────────────────────────────────────────────────────────────────────────
Config.TestDriveTime = 1.5 * 60 * 1000 -- [EDIT] Test drive duration in ms (1.5 minutes).
-- [INFO] World positions for vehicle previews in showroom contexts.
Config.ShowRoomCoords = vector4(1610.1960, -386.0465, -17.1471, 93.0454) -- [EDIT] Cars.
Config.LargueVehicleShowRoom = vector4(-1840.6783, 2982.3730, 32.3859, 85.0314) -- [EDIT] Large vehicles (keep key name as-is if used elsewhere).
Config.BoatShowRoom = vector4(-2100.0771, -1160.4104, 1.8164, 146.4032) -- [EDIT] Boats.
Config.ShowRoomSpotLihtForBigVehiclesAndBoats = true -- [EDIT] Spotlight on big vehicles/boats (may impact performance).
--──────────────────────────────────────────────────────────────────────────────
-- Accounting / Commissions [EDIT]
--──────────────────────────────────────────────────────────────────────────────
Config.AccountsScript = 'qb-core' -- [EDIT] Money backend: 'esx_addonaccount' | 'qb-management' | 'qb-banking' | 'qb-core'
Config.SellerGivenPercentage = 15 -- [EDIT] % of sale paid to the seller (integer).
Config.UseSpaceInCenterEvery = true -- [EDIT] Plates use centered space pattern.
--──────────────────────────────────────────────────────────────────────────────
-- Map Blip Settings [EDIT]
--──────────────────────────────────────────────────────────────────────────────
Config.BlipPrefix = "Vehicle Shop: " -- [EDIT] Blip label prefix.
Config.BlipSprite = 595 -- [EDIT] Blip sprite id.
Config.BlipColour = 38 -- [EDIT] Blip color id.
Config.BlipScale = 0.9 -- [EDIT] Blip scale.
--──────────────────────────────────────────────────────────────────────────────
-- Plate Formatting [EDIT]
--──────────────────────────────────────────────────────────────────────────────
Config.plateFormats = { -- [EDIT] Plate patterns. L=letter, N=number.
"LLLNNL", -- e.g. 'TZU69G'
"LLLNNL", -- e.g. 'COL30H'
"LNNNNL", -- e.g. 'T2030H'
"NNLLNN", -- e.g. '12BC34'
}
Config.DefMaxLength = 6 -- [EDIT] Max plate characters for client UI.
--──────────────────────────────────────────────────────────────────────────────
-- Accepted Accounts & Crypto [EDIT]
--──────────────────────────────────────────────────────────────────────────────
Config.AccountsToPay = { 'cash', 'bank' } -- [EDIT] Add account names only. Do NOT map as key=value.
-- [INFO] To add icons: place PNGs in /web/build/customizable/<account>.png (e.g. bank.png, cash.png)
Config.CryptoAccount = 'crypto' -- [EDIT] Crypto account label (must have PNG icon).
--──────────────────────────────────────────────────────────────────────────────
-- Commands & Permissions [EDIT]
--──────────────────────────────────────────────────────────────────────────────
Config.AdminCommand = "vehicleshop" -- [EDIT] Admin menu command.
Config.EmployeeMenuCommand = "opendealership"-- [EDIT] Employee menu command.
Config.AccessAcePermission = 'vehicleshopcreator' -- [EDIT] ACE permission flag (server.cfg).
--──────────────────────────────────────────────────────────────────────────────
-- Keys Integration (Vehicle Keys) [ADV]
-- [INFO] Hooks for popular key systems. Replace events/exports for your setup.
--──────────────────────────────────────────────────────────────────────────────
---@param vehicle number -- entity id
---@param plate string -- vehicle plate text
---@param model any -- model hash or name (on missions)
---@param mission boolean -- true when invoked from mission context
Config.AssignCarKeys = function(vehicle, plate, model, mission)
DebugPrint("Giving keys to the vehicle: ", plate, mission)
if not mission then
if GetResourceState('qs-vehiclekeys') == 'started' then
exports['qs-vehiclekeys']:GiveKeysAuto()
exports['qs-vehiclekeys']:GiveKeys(plate, model, true)
elseif GetResourceState('qbx_vehiclekeys') == 'started' then
exports.qbx_vehiclekeys:GiveKeys(source, vehicle, false)
elseif GetResourceState("qb-vehiclekeys") == 'started' then
TriggerServerEvent('qb-vehiclekeys:server:AcquireVehicleKeys', plate)
elseif GetResourceState("wasabi_carlock") == 'started' then
exports.wasabi_carlock:GiveKey(plate)
end
else
local nvmodel = GetDisplayNameFromVehicleModel(GetEntityModel(vehicle))
local nvplate = GetVehicleNumberPlateText(vehicle)
if GetResourceState('qs-vehiclekeys') == 'started' then
exports['qs-vehiclekeys']:GiveKeys(plate, model, true)
elseif GetResourceState("qb-vehiclekeys") == 'started' then
TriggerServerEvent('qb-vehiclekeys:server:AcquireVehicleKeys', plate)
elseif GetResourceState("wasabi_carlock") == 'started' then
exports.wasabi_carlock:GiveKey(plate)
end
end
SetVehicleEngineOn(vehicle, true, true, false) -- [INFO] Start engine after key assignment.
end
--──────────────────────────────────────────────────────────────────────────────
-- Fuel System Integration [ADV]
-- [INFO] Uses qs-fuelstations or LegacyFuel if available, else native fallback.
--──────────────────────────────────────────────────────────────────────────────
Config.MissionFuel = true -- [EDIT] Mission vehicles drain fuel quickly (tow usage incentive).
Config.TimeToEmpty = .40 -- [EDIT] Minutes to empty (0.4 ≈ 24s in ticked drain logic; comment notes 40s).
---@param vehicle number
---@param fuelLevel number
Config.SetVehicleFuel = function(vehicle, fuelLevel)
if GetResourceState('qs-fuelstations') == 'started' then
exports['qs-fuelstations']:SetFuel(vehicle, fuelLevel)
elseif GetResourceState('LegacyFuel') == 'started' then
exports["LegacyFuel"]:SetFuel(vehicle, fuelLevel)
else
ErrorPrint("Fuel System not found, please add qs-fuelstations or LegacyFuel, or adapt Config.SetVehicleFuel/Config.GetVehicleFuel.")
SetVehicleFuelLevel(vehicle, fuelLevel)
end
end
---@param vehicle number
---@return number fuelLevel
Config.GetVehicleFuel = function(vehicle)
local fuelLevel = 100
if GetResourceState('qs-fuelstations') == 'started' then
fuelLevel = exports['qs-fuelstations']:GetFuel(vehicle)
elseif GetResourceState('LegacyFuel') == 'started' then
fuelLevel = exports["LegacyFuel"]:GetFuel(vehicle)
else
fuelLevel = GetVehicleFuelLevel(vehicle)
end
return fuelLevel
end
---@param vehicle number
Config.SetVehiclePersistant = function(vehicle) -- [ADV] Persists entity with compatible garages.
local vehicleNetId = NetworkGetNetworkIdFromEntity(vehicle)
if GetResourceState('qs-advancedgarages') == 'started' then
exports['qs-advancedgarages']:setVehicleToPersistent(vehicleNetId)
end
print("Vehicle with netId " .. vehicleNetId .. " is now persistent.")
end
--──────────────────────────────────────────────────────────────────────────────
-- Missions: Spawn Locations [EDIT]
--──────────────────────────────────────────────────────────────────────────────
Config.MissionTakeVehicleCoords = {
-- city port
vector4(1233.5984, -3231.7458, 5.6025, 1.4223),
vector4(1218.4076, -3230.7104, 5.6774, 5.8339),
-- north town
vector4(35.3286, 6443.1895, 31.4053, 228.4462),
vector4(42.3564, 6449.6548, 31.4155, 229.5308),
vector4(59.1482, 6468.3901, 31.4253, 227.4545),
-- arena war
vector4(-365.1500, -1866.4991, 20.5279, 9.9986),
-- TEST (keep commented)
-- vector4(1260.9913, 2678.4492, 37.5816, 259.8691),
-- vector4(1250.967041, 2681.459229, 37.603638, 280.629913),
}
---@return vector4
function GetRandomMissionSpawnLocation() -- [CORE] Helper for random mission start.
return Config.MissionTakeVehicleCoords[math.random(1, #Config.MissionTakeVehicleCoords)]
end
--──────────────────────────────────────────────────────────────────────────────
-- Editor Action Controls [EDIT]
-- [INFO] Labels and key codes for creator/editor flows.
--──────────────────────────────────────────────────────────────────────────────
Config.ActionControls = {
forward = { label = 'Forward +/-', codes = { 33, 32 } },
right = { label = 'Right +/-', codes = { 35, 34 } },
up = { label = 'Up +/-', codes = { 52, 51 } },
add_point = { label = 'Add Point', codes = { 24 } },
undo_point = { label = 'Undo Last', codes = { 25 } },
set_position = { label = 'Set Position', codes = { 24 } },
add_garage = { label = 'Add Garage', codes = { 24 } },
rotate_z = { label = 'RotateZ +/-', codes = { 20, 73 } },
rotate_z_scroll = { label = 'RotateZ +/-', codes = { 17, 16 } },
increase_z = { label = 'Z Boundary +/-', codes = { 180, 181 } },
decrease_z = { label = 'Z Boundary +/-', codes = { 21, 180, 181 } },
change_shell = { label = 'Next Shell Model', codes = { 217 } },
done = { label = 'Done', codes = { 191 } },
change_player = { label = 'Player +/-', codes = { 82, 81 } },
select_player = { label = 'Select Player', codes = { 191 } },
cancel = { label = 'Cancel', codes = { 194 } },
select_vehicle = { label = 'Vehicle +/-', codes = { 82, 81 } },
spawn_vehicle = { label = 'Spawn Vehicle', codes = { 191 } },
leftApt = { label = 'Previous Interior', codes = { 174 } },
rightApt = { label = 'Next Interior', codes = { 175 } },
select_menuCoords = { label = 'Set Menu Location', codes = { 47 } },
select_spawnCoords = { label = 'Set Vehicle Spawn Location', codes = { 74 } },
add_vehicle_show_point = { label = 'Add Vehicle Show Point', codes = { 217 } },
}
Config.Precision = 100.0 -- [ADV] Editor float precision. Do not change unless required by tooling.
--──────────────────────────────────────────────────────────────────────────────
-- Vehicle Data Fields (UI/Stats) [EDIT]/[ADV]
-- [INFO] Field list for basic/advanced stats rendering in UI panels.
--──────────────────────────────────────────────────────────────────────────────
Config.Fields = {
-- Basic Info
{ name = "modelName", label = "Model Name", getter = function(model) return Config.Getters.GetDisplayName(model) end },
{ name = "vehicleClass", label = "Vehicle Class", getter = function(model) return Config.Getters.GetVehicleClass(model) end },
{ name = "doorCount", label = "Door Count", getter = function(model) return Config.Getters.GetDoorCount(model) end },
{ name = "seatCapacity", label = "Seat Capacity", getter = function(model) return Config.Getters.GetSeatCount(model) end },
-- Transmission example (commented; requires reliable source)
-- { name = "transmission", label = "Transmission", getter = function(model) return Config.Getters.GetTransmissionType(model) end },
-- Advanced Handling Stats
{
name = "fMass", type = "float", label = "Weight", unit = "kg",
getter = function(vehicle) return GetVehicleHandlingFloat(vehicle, "CHandlingData", "fMass") end
},
{
name = "fInitialDragCoeff", type = "float", label = "Drag Coefficient", unit = "",
getter = function(vehicle) return GetVehicleHandlingFloat(vehicle, "CHandlingData", "fInitialDragCoeff") end
},
{
name = "fInitialDriveMaxFlatVel", type = "float", label = "Top Speed", unit = "km/h",
modifier = function(value) return value * 1.32 end, -- [INFO] Convert game units → km/h (approx).
getter = function(vehicle) return GetVehicleHandlingFloat(vehicle, "CHandlingData", "fInitialDriveMaxFlatVel") end
},
{
name = "fBrakeForce", type = "float", label = "Brake Force", unit = "",
getter = function(vehicle) return GetVehicleHandlingFloat(vehicle, "CHandlingData", "fBrakeForce") end
},
}
--──────────────────────────────────────────────────────────────────────────────
-- Vehicle Classes (Labels) [EDIT]
--──────────────────────────────────────────────────────────────────────────────
Config.VehicleClasses = {
[0] = "Compact", [1] = "Sedan", [2] = "SUV", [3] = "Coupe", [4] = "Muscle",
[5] = "Classic Sports", [6] = "Sports", [7] = "Super", [8] = "Motorcycle",
[9] = "Off-Road", [10] = "Industrial", [11] = "Utility", [12] = "Van",
[13] = "Bicycle", [14] = "Boat", [15] = "Helicopter", [16] = "Plane",
[17] = "Service", [18] = "Emergency", [19] = "Military", [20] = "Commercial", [21] = "Train"
}
--──────────────────────────────────────────────────────────────────────────────
-- Getters (Centralized Accessors) [CORE]
-- [INFO] Do not change unless adapting to a custom data source.
--──────────────────────────────────────────────────────────────────────────────
Config.Getters = {
---@param vehicle number
---@return string
GetDisplayName = function(vehicle)
-- [INFO] Robust display name retrieval with graceful fallback.
local displayName = GetLabelText(GetDisplayNameFromVehicleModel(GetEntityModel(vehicle)))
if displayName == "NULL" then
displayName = tostring(GetEntityModel(vehicle))
end
return displayName
end,
---@param vehicle number
---@return string
GetVehicleClass = function(vehicle)
local vehicleClass = GetVehicleClassFromName(GetEntityModel(vehicle))
return Config.VehicleClasses[vehicleClass] or "Unknown"
end,
---@param vehicle number
---@return number
GetDoorCount = function(vehicle)
return GetNumberOfVehicleDoors(vehicle)
end,
---@param vehicle number
---@return number
GetSeatCount = function(vehicle)
return GetVehicleModelNumberOfSeats(GetEntityModel(vehicle))
end,
---@param vehicle number
---@return "Manual"|"Automatic"
GetTransmissionType = function(vehicle)
local isManual = GetVehicleHandlingInt(vehicle, "CHandlingData", "nInitialDriveGears") == 1
return isManual and "Manual" or "Automatic"
end,
}
qs-vehicleshop/config/data.lua
if not Config then Config = {} end -- [CORE]
--──────────────────────────────────────────────────────────────────────────────
-- Vehicle List (Screenshots Only) [EDIT]
-- [INFO] This list is used to generate vehicle screenshots/previews.
-- [INFO] It is NOT the shop inventory. Add/remove models as needed.
--──────────────────────────────────────────────────────────────────────────────
Config.VehicleList = {
-- Boats
"dinghy", "dinghy2", "dinghy3", "dinghy4", "jetmax", "marquis", "seashark", "seashark2",
"seashark3", "speeder", "speeder2", "squalo", "submersible", "submersible2", "suntrap", "toro",
"toro2", "tropic", "tropic2", "tug", "avisa", "dinghy5", "kosatka", "longfin", "patrolboat",
-- Commercial
"benson", "biff", "hauler", "hauler2", "mule", "mule2", "mule3", "mule4", "packer", "phantom",
"phantom2", "phantom3", "pounder", "pounder2", "stockade", "stockade3", "terbyte", "barrage",
-- Compacts
"asbo", "blista", "brioso", "brioso2", "issi2", "issi3", "issi4", "issi5", "issi6", "panto",
"prairie", "rhapsody",
-- Coupes
"cogcabrio", "exemplar", "f620", "felon", "felon2", "jackal", "oracle", "oracle2", "sentinel",
"sentinel2", "windsor", "windsor2", "zion", "zion2",
-- Cycles
"bmx", "cruiser", "fixter", "scorcher", "tribike", "tribike2", "tribike3",
-- Emergency
"ambulance", "fbi", "fbi2", "firetruk", "lguard", "pbus", "police", "police2", "police3",
"police4", "policeb", "policeold1", "policeold2", "policet", "pranger", "predator", "riot",
"riot2", "sheriff", "sheriff2",
-- Helicopters
"akula", "annihilator", "annihilator2", "buzzard", "buzzard2", "cargobob", "cargobob2",
"cargobob3", "cargobob4", "frogger", "frogger2", "havok", "hunter", "maverick", "savage",
"seasparrow", "skylift", "supervolito", "supervolito2", "swift", "swift2", "valkyrie",
"valkyrie2", "volatus",
-- Industrial
"bulldozer", "cutter", "dump", "flatbed", "guardian", "handler", "mixer", "mixer2",
"rubble", "tiptruck", "tiptruck2",
-- Military
"apc", "barrage", "chernobog", "crusader", "halftrack", "khanjali", "minitank", "rhino",
"scarab", "scarab2", "scarab3", "thruster", "trailersmall2", "vigilante", "zr380", "zr3802",
"zr3803",
-- Motorcycles
"akuma", "avarus", "bagger", "bati", "bati2", "bf400", "carbonrs", "chimera", "cliffhanger",
"daemon", "daemon2", "defiler", "deathbike", "deathbike2", "deathbike3", "diablous",
"diablous2", "double", "enduro", "esskey", "faggio", "faggio2", "faggio3", "fcr", "fcr2",
"gargoyle", "hakuchou", "hakuchou2", "hexer", "innovation", "lectro", "manchez", "nemesis",
"nightblade", "oppressor", "oppressor2", "pcj", "ratbike", "ruffian", "sanchez", "sanchez2",
"sanctus", "shotaro", "sovereign", "stryder", "thrust", "vader", "vindicator", "vortex",
"wolfsbane", "zombiea", "zombieb",
-- Muscle
"blade", "buccaneer", "buccaneer2", "chino", "chino2", "clique", "coquette3", "deviant",
"dominator", "dominator2", "dominator3", "dominator4", "dominator5", "dominator6",
"dukes", "dukes2", "dukes3", "ellie", "faction", "faction2", "faction3", "gauntlet",
"gauntlet2", "gauntlet3", "gauntlet4", "gauntlet5", "hermes", "hotknife", "hustler",
"impaler", "impaler2", "impaler3", "impaler4", "imperator", "imperator2", "imperator3",
"lurcher", "moonbeam", "moonbeam2", "nightshade", "phoenix", "picador", "ratloader",
"ratloader2", "ruiner", "ruiner2", "ruiner3", "sabregt", "sabregt2", "slamvan", "slamvan2",
"slamvan3", "slamvan4", "slamvan5", "slamvan6", "stalion", "stalion2", "tampa", "tampa3",
"tulip", "vamos", "vigero", "virgo", "virgo2", "virgo3", "voodoo", "voodoo2", "yosemite",
"yosemite2", "yosemite3",
-- Off-Road
"bfinjection", "bifta", "blazer", "blazer2", "blazer3", "blazer4", "blazer5", "brawler",
"bruiser", "bruiser2", "bruiser3", "brutus", "brutus2", "brutus3", "caracara", "caracara2",
"dloader", "dubsta3", "dune", "dune2", "dune3", "dune4", "dune5", "freecrawler", "hellion",
"insurgent", "insurgent2", "insurgent3", "kalahari", "kamacho", "marshall", "menacer",
"mesa3", "monster", "monster3", "monster4", "monster5", "nightshark", "rancherxl",
"rancherxl2", "rebel", "rebel2", "rcbandito", "riata", "sandking", "sandking2", "technical",
"technical2", "technical3", "trophytruck", "trophytruck2", "vagrant", "verus", "winky",
"zhaba",
-- Planes
"alkonost", "alphaz1", "avenger", "avenger2", "besra", "blimp", "blimp2", "blimp3",
"bombushka", "cargoplane", "cuban800", "dodo", "duster", "howard", "hydra", "jet",
"lazer", "luxor", "luxor2", "mammatus", "microlight", "miljet", "mogul", "molotok",
"nimbus", "nokota", "pyro", "rogue", "seabreeze", "shamal", "starling", "strikeforce",
"stunt", "titan", "tula", "velum", "velum2", "vestra", "volatol",
-- Sedans
"asea", "asea2", "asterope", "cog55", "cog552", "cognoscenti", "cognoscenti2",
"emperor", "emperor2", "emperor3", "fugitive", "glendale", "glendale2", "ingot",
"intruder", "limo2", "premier", "primo", "primo2", "regina", "romero", "stafford",
"stanier", "stratum", "stretch", "superd", "surge", "tailgater", "warrener", "washington",
-- Service
"airbus", "brickade", "bus", "coach", "rallytruck", "rentalbus", "taxi", "tourbus",
"trash", "trash2", "wastelander",
-- Sports
"alpha", "banshee", "bestiagts", "blista2", "blista3", "buffalo", "buffalo2", "buffalo3",
"carbonizzare", "comet2", "comet3", "comet4", "comet5", "coquette", "coquette4", "drafter",
"deveste", "elegy", "elegy2", "feltzer2", "flashgt", "furoregt", "futo", "futo2", "gb200",
"hotring", "imorgon", "issi7", "italigto", "italirsx", "jugular", "jester", "jester2",
"jester3", "khamelion", "kuruma", "kuruma2", "locust", "lynx", "massacro", "massacro2",
"neo", "neon", "ninef", "ninef2", "omnis", "paragon", "paragon2", "pariah", "penumbra",
"penumbra2", "rapidgt", "rapidgt2", "raptor", "remus", "revolter", "ruston", "schafter2",
"schafter3", "schafter4", "schafter5", "schafter6", "schlagen", "schwarzer", "sentinel3",
"seven70", "specter", "specter2", "streiter", "sugoi", "sultan", "sultan2", "sultan3",
"sultanrs", "surano", "tampa2", "tropos", "verlierer2", "veto", "veto2", "vstr", "zr350",
"zion3", "calico", "cypher", "dominator7", "dominator8", "euros", "futo2", "growler",
"jester4", "previon", "remus", "rt3000", "tailgater2", "warrener2", "zr350",
-- Sports Classics
"ardent", "btype", "btype2", "btype3", "casco", "cheburek", "cheetah2", "coquette2",
"dynasty", "fagaloa", "feltzer3", "gt500", "infernus2", "jb700", "jb7002", "mamba",
"manana", "manana2", "michelli", "monroe", "nebula", "peyote", "peyote3", "pigalle",
"rapidgt3", "retinue", "retinue2", "savestra", "stinger", "stingergt", "stromberg",
"swinger", "torero", "tornado", "tornado2", "tornado3", "tornado4", "tornado5",
"tornado6", "turismo2", "viseris", "z190", "zion3", "ztype",
-- Super
"adder", "autarch", "banshee2", "bullet", "cheetah", "cyclone", "deveste",
"entity2", "entityxf", "emerus", "fmj", "furia", "gp1", "infernus", "italigtb", "italigtb2",
"krieger", "le7b", "nero", "nero2", "osiris", "penetrator", "pfister811", "prototipo",
"reaper", "s80", "sc1", "scramjet", "sheava", "sultanrs", "t20", "taipan", "tempesta",
"tezeract", "thrax", "tigon", "turismor", "tyrant", "tyrus", "vacca", "vagner", "vigilante",
"visione", "voltic", "voltic2", "xa21", "zentorno",
-- SUVs
"baller", "baller2", "baller3", "baller4", "baller5", "baller6", "bjxl", "cavalcade",
"cavalcade2", "contender", "dubsta", "dubsta2", "fq2", "granger", "gresley", "habanero",
"huntley", "landstalker", "landstalker2", "mesa", "mesa2", "novak", "patriot", "patriot2",
"radi", "rebla", "rocoto", "seminole", "seminole2", "serrano", "toros", "xls", "xls2",
-- Trailers
"armytanker", "armytrailer", "armytrailer2", "baletrailer", "boattrailer", "cablecar",
"docktrailer", "graintrailer", "proptrailer", "raketrailer", "tr2", "tr3", "tr4", "trflat",
"tvtrailer", "tanker", "tanker2", "trailerlarge", "trailerlogs", "trailersmall", "trailers",
"trailers2", "trailers3", "trailers4", "freighttrailer",
-- Trains
"freight", "freightcar", "freightcont1", "freightcont2", "freightgrain", "metrotrain",
"tankercar",
-- Utility
"airtug", "caddy", "caddy2", "caddy3", "docktug", "forklift", "mower", "ripley", "sadler",
"sadler2", "scrap", "towtruck", "towtruck2", "tractor", "tractor2", "tractor3", "utillitruck",
"utillitruck2", "utillitruck3",
-- Vans
"bison", "bison2", "bison3", "bobcatxl", "burrito", "burrito2", "burrito3", "burrito4",
"burrito5", "camper", "gburrito", "gburrito2", "journey", "minivan", "minivan2", "paradise",
"pony", "pony2", "rumpo", "rumpo2", "rumpo3", "speedo", "speedo2", "speedo4", "surfer",
"surfer2", "taco", "youga", "youga2", "youga3", "youga4"
}