1
0
Fork 0
forked from Simnation/Main

neuer npc händler

This commit is contained in:
Nordi98 2025-06-18 21:11:31 +02:00
parent 82489d6d85
commit b858c00883
26 changed files with 0 additions and 0 deletions

View file

@ -1,42 +0,0 @@
{
"Lua.diagnostics.globals": [
"openCatalogue",
"lib",
"cache",
"testVehicle",
"locale",
"buyVehicle",
"createBlip",
"loadModel",
"createSphereZoneTarget",
"createEntityTarget",
"managementMenu",
"notify",
"hideTextUI",
"spawnVehicle",
"qbx",
"createShowroomVehicle",
"getPlayerJob",
"QBX",
"isPlayerJobBoss",
"openMenu",
"generatePlate",
"getPlayersFromCoords",
"openDashboard",
"MySQL",
"addAccountMoney",
"removeAccountMoney",
"getAccountMoney",
"createLog",
"addVehicleToGarage",
"vehicle",
"description",
"removeVehicleKeys",
"createDealerships",
"spawnObj",
"currentImportData"
],
"Lua.diagnostics.disable": [
"param-type-mismatch"
]
}

View file

@ -1,201 +0,0 @@
---@param coords vector
---@param sprite integer
---@param display integer
---@param scale number
---@param color integer
---@param label string
---@return integer
createBlip = function(coords, sprite, display, scale, color, label)
local blip = AddBlipForCoord(coords.x, coords.y, coords.z)
SetBlipSprite(blip, sprite)
SetBlipDisplay(blip, display)
SetBlipAsShortRange(blip, true)
SetBlipScale(blip, scale)
SetBlipColour(blip, color)
BeginTextCommandSetBlipName("STRING")
AddTextComponentSubstringPlayerName(label)
EndTextCommandSetBlipName(blip)
return blip
end
---@param model string
loadModel = function(model)
local time = 1000
if not HasModelLoaded(model) then
while not HasModelLoaded(model) do
if time > 0 then time = time - 1 RequestModel(model) else time = 1000 break end Wait(10)
end
end
end
---@param coords vector
---@param radius number
---@param options table
---@param distance number
---@param name string
---@return unknown
createSphereZoneTarget = function(coords, radius, options, distance, name)
if Config.target == 'ox_target' then
return exports.ox_target:addSphereZone({ debug = Config.debug, coords = coords, radius = radius, options = options })
elseif Config.target == 'interact' then
return exports.interact:AddInteraction({ coords = vec3(coords.x, coords.y, coords.z), distance = 1.0, interactDst = 1.0, id = name, name = name, options = options })
else
-- Here we use Box Zone cause qb-target Sphere Zone does not exists and the Circle Zone is the big shit ever made
return exports[Config.target]:AddBoxZone(name, coords, radius, radius, { debugPoly = Config.debug, name = name, minZ = coords.z-radius, maxZ = coords.z+radius }, { options = options, distance = distance })
end
end
---@param entity integer
---@param options table
---@param distance number
---@param name string
---@return unknown
createEntityTarget = function(entity, options, distance, name)
if Config.target == 'ox_target' then
return exports.ox_target:addLocalEntity(entity, options)
elseif Config.target == 'interact' then
return exports.interact:AddLocalEntityInteraction({ entity = entity, name = name, id = name, distance = 1.0, interactDst = 1.0, options = options })
else
return exports[Config.target]:AddTargetEntity(entity, { name = name, options = options, distance = distance })
end
end
managementMenu = function()
if Config.framework == 'qb' then
TriggerEvent('qb-bossmenu:client:OpenMenu')
elseif Config.framework == 'qbx' then
exports.qbx_management:OpenBossMenu('job')
elseif Config.framework == 'esx' then
TriggerEvent('esx_society:openBossMenu', getPlayerJob(), false, {wash = false})
end
end
---@param message string
---@param type string
notify = function(message, type)
lib.notify({ description = message, type = type })
end
hideTextUI = function()
exports.mt_lib:hideTextUI()
end
---@param model any
---@param coords vector
---@param plate string | nil
---@return any
spawnVehicle = function(model, coords, plate)
coords = vec4(coords.x, coords.y, coords.z, coords.w or GetEntityHeading(cache.ped))
model = type(model) == 'string' and joaat(model) or model
if not IsModelInCdimage(model) then return end
loadModel(model)
local veh = CreateVehicle(model, coords.x, coords.y, coords.z, coords.w, true, false)
local netid = NetworkGetNetworkIdFromEntity(veh)
SetVehicleHasBeenOwnedByPlayer(veh, true)
SetNetworkIdCanMigrate(netid, true)
SetVehicleNeedsToBeHotwired(veh, false)
SetVehRadioStation(veh, 'OFF')
SetVehicleFuelLevel(veh, 100.0)
SetVehicleNumberPlateText(veh, plate or 'PDM')
SetModelAsNoLongerNeeded(model)
local plate = Config.framework == 'qbx' and qbx.getVehiclePlate(veh) or GetVehicleNumberPlateText(veh)
if Config.keys == 'qs-vehiclekeys' then
exports['qs-vehiclekeys']:GiveKeys(plate, GetDisplayNameFromVehicleModel(GetEntityModel(veh)), true)
elseif Config.keys == 'mk_vehiclekeys' then
exports[Config.keys]:AddKey(veh)
elseif Config.keys == 'Renewed-Vehiclekeys' then
exports['Renewed-Vehiclekeys']:addKey(plate)
elseif Config.keys == 'MrNewbVehicleKeys' then
exports.MrNewbVehicleKeys:GiveKeys(veh)
else
TriggerEvent("vehiclekeys:client:SetOwner", plate)
end
return veh
end
---@param model string
---@param coords vector
---@param color integer
---@return integer
createShowroomVehicle = function(model, coords, color)
loadModel(model)
Wait(100)
local veh = CreateVehicle(model, coords.x, coords.y, coords.z, coords.w, false, false)
Wait(500)
SetModelAsNoLongerNeeded(model)
SetEntityInvincible(veh, true)
SetVehicleDirtLevel(veh, 0.0)
SetVehicleDoorsLocked(veh, 3)
SetVehicleNumberPlateText(veh, 'PDM')
SetVehicleColours(veh, color, color)
SetVehicleExtraColours(veh, color, 0)
return veh
end
getPlayerJob = function()
if Config.framework == 'qb' then
local PlayerData = Config.core.Functions.GetPlayerData()
return PlayerData.job.name
elseif Config.framework == 'qbx' then
return QBX.PlayerData.job.name
elseif Config.framework == 'esx' then
return lib.callback.await('mt_dealerships:server:getPlayerJobESX', false)
end
end
isPlayerJobBoss = function()
if Config.framework == 'qb' then
local PlayerData = Config.core.Functions.GetPlayerData()
return PlayerData.job.isboss
elseif Config.framework == 'qbx' then
return QBX.PlayerData.job.isboss
elseif Config.framework == 'esx' then
return lib.callback.await('mt_dealerships:server:getPlayerJobIsBossESX', false)
end
end
---@param menu table
openMenu = function(menu)
lib.registerContext(menu)
lib.showContext(menu.id)
end
---@return string
generatePlate = function()
local plate = ""
local chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for i = 1, 8 do
local randIndex = math.random(1, #chars)
plate = plate..chars:sub(randIndex, randIndex)
end
return plate
end
---@param coords vector
---@param distance number
---@return table
getPlayersFromCoords = function(coords, distance)
coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords or GetEntityCoords(cache.ped)
local players = lib.getNearbyPlayers(coords, distance or 5, true)
for i = 1, #players do players[i] = players[i].id end
return players
end
---@param veh integer
removeVehicleKeys = function(veh)
if Config.keys == 'Renewed-Vehiclekeys' then
local plate = Config.framework == 'qbx' and qbx.getVehiclePlate(veh) or GetVehicleNumberPlateText(veh)
exports['Renewed-Vehiclekeys']:removeKey(plate)
end
end
---@param modelHash string
---@param coords vector
spawnObj = function(modelHash, coords)
loadModel(modelHash)
Wait(100)
local obj = CreateObject(modelHash, coords.x, coords.y, coords.z, false, false, false)
Wait(100)
SetEntityHeading(obj, coords.w)
PlaceObjectOnGroundProperly(obj)
end

View file

@ -1,29 +0,0 @@
Config = Config or {}
-- For more info check: https://mt-scripts-documentations.gitbook.io/mt-script-documentation/
Config.debug = false -- if true it'll print some debug on F8/console and active all zones debug
Config.framework = 'qbx' -- qb, qbx, esx (need to change the export on the Config.core)
Config.core = exports['qb-core']:GetCoreObject() -- Your core export (for qb is exports['qb-core']:GetCoreObject()) (for esx is exports.es_extended:getSharedObject()) (for qbx you can just delete this line and add '@qbx_core/modules/playerdata.lua', to the fxmanifest.lua client_scripts)
Config.target = 'ox_target' -- ox_target, qb-target, interact, ...
Config.banking = 'Renewed-Banking' -- qb-banking, Renewed-Banking, (can change at server/functions.lua) ...
Config.keys = 'qbx_vehiclekeys' -- qb-vehiclekeys, qbx_vehiclekeys, mk_vehiclekeys, qs-vehiclekeys
Config.locale = 'en'
Config.useTabletAnimation = true
Config.mInsurance = {
enable = true, -- Enable use m-Insurance?
inventory = "qb", -- "qb" or "ox" | If you use esx leave this "ox"
}
Config.webhooks = {
vehicleImported = '',
vehicleBought = '',
adminCommand = ''
}
Config.commands = {
addStock = { command = 'addstock', restricted = 'group.admin' },
removeStock = { command = 'removestock', restricted = 'group.admin' },
}

View file

@ -1,636 +0,0 @@
Config.vehicles = Config.vehicles or {}
local vehicles = { -- Vehicle list, credits to qb-core!
{
model = 'asbo', -- This has to match the spawn code of the vehicle
name = 'Asbo', -- This is the display of the vehicle
brand = 'Maxwell', -- This is the vehicle's brand
price = 4000, -- The price that the vehicle sells for
category = 'compacts', -- Category of the vehilce, stick with GetVehicleClass() options https://docs.fivem.net/natives/?_0x29439776AAA00A62
shop = { 'cardealer', 'fmpdm', 'laryscars' }, -- Can be a single shop or multiple shops. For multiple shops for example {'shopname1','shopname2','shopname3'}
class = 'C', -- This is the vehicle class, can be D, C, B, A, S or X (optional)
seats = 2, -- Number of seats (optional)
weight = 50, -- Vehicle trunk weight or total weight includin glove box (optional)
},
{ model = 'blista', name = 'Blista', brand = 'Dinka', price = 13000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 2, weight = 50 },
{ model = 'brioso', name = 'Brioso R/A', brand = 'Grotti', price = 20000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 2, weight = 50 },
{ model = 'club', name = 'Club', brand = 'BF', price = 8000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 2, weight = 50 },
{ model = 'dilettante', name = 'Dilettante', brand = 'Karin', price = 9000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'D', seats = 2, weight = 50 },
{ model = 'dilettante2', name = 'Dilettante Patrol', brand = 'Karin', price = 12000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'D', seats = 2, weight = 50 },
{ model = 'kanjo', name = 'Blista Kanjo', brand = 'Dinka', price = 12000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 2, weight = 50 },
{ model = 'issi2', name = 'Issi', brand = 'Weeny', price = 7000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 2, weight = 50 },
{ model = 'issi3', name = 'Issi Classic', brand = 'Weeny', price = 5000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 2, weight = 50 },
{ model = 'panto', name = 'Panto', brand = 'Benefactor', price = 3200, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 2, weight = 50 },
{ model = 'prairie', name = 'Prairie', brand = 'Bollokan', price = 30000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 2, weight = 50 },
{ model = 'rhapsody', name = 'Rhapsody', brand = 'Declasse', price = 10000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'D', seats = 2, weight = 50 },
{ model = 'brioso2', name = 'Brioso 300', brand = 'Grotti', price = 12000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 2, weight = 50 },
{ model = 'weevil', name = 'Weevil', brand = 'BF', price = 9000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 2, weight = 50 },
{ model = 'issi7', name = 'Issi Sport', brand = 'Weeny', price = 100000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'S', seats = 2, weight = 50 },
{ model = 'blista2', name = 'Blista Compact', brand = 'Dinka', price = 18950, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 2, weight = 50 },
{ model = 'blista3', name = 'Blista Go Go Monkey', brand = 'Dinka', price = 15000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 2, weight = 50 },
{ model = 'brioso3', name = 'Brioso 300 Widebody', brand = 'Grotti', price = 125000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 2, weight = 50 },
{ model = 'boor', name = 'Boor', brand = 'Karin', price = 23000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 2, weight = 50 },
-- Sedans (1)
{ model = 'asea', name = 'Asea', brand = 'Declasse', price = 2500, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
{ model = 'asterope', name = 'Asterope', brand = 'Karin', price = 11000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
{ model = 'cog55', name = 'Cognoscenti 55', brand = 'Enus', price = 22000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
{ model = 'cognoscenti', name = 'Cognoscenti', brand = 'Enus', price = 22500, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
{ model = 'emperor', name = 'Emperor', brand = 'Albany', price = 4250, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
{ model = 'fugitive', name = 'Fugitive', brand = 'Cheval', price = 20000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
{ model = 'glendale', name = 'Glendale', brand = 'Benefactor', price = 3400, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
{ model = 'glendale2', name = 'Glendale Custom', brand = 'Benefactor', price = 12000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
{ model = 'ingot', name = 'Ingot', brand = 'Vulcar', price = 4999, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'D', seats = 4, weight = 50 },
{ model = 'intruder', name = 'Intruder', brand = 'Karin', price = 11250, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
{ model = 'premier', name = 'Premier', brand = 'Declasse', price = 12000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
{ model = 'primo', name = 'Primo', brand = 'Albany', price = 5000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'D', seats = 4, weight = 50 },
{ model = 'primo2', name = 'Primo Custom', brand = 'Albany', price = 14500, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
{ model = 'regina', name = 'Regina', brand = 'Dundreary', price = 7000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'D', seats = 4, weight = 50 },
{ model = 'stafford', name = 'Stafford', brand = 'Enus', price = 30000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
{ model = 'stanier', name = 'Stanier', brand = 'Vapid', price = 19000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
{ model = 'stratum', name = 'Stratum', brand = 'Zirconium', price = 15000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'D', seats = 4, weight = 50 },
{ model = 'stretch', name = 'Stretch', brand = 'Dundreary', price = 19000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
{ model = 'superd', name = 'Super Diamond', brand = 'Enus', price = 17000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
{ model = 'surge', name = 'Surge', brand = 'Cheval', price = 20000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
{ model = 'tailgater', name = 'Tailgater', brand = 'Obey', price = 22000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
{ model = 'warrener', name = 'Warrener', brand = 'Vulcar', price = 4000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'D', seats = 4, weight = 50 },
{ model = 'washington', name = 'Washington', brand = 'Albany', price = 7000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
{ model = 'tailgater2', name = 'Tailgater S', brand = 'Obey', price = 51000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
{ model = 'cinquemila', name = 'Lampadati', brand = 'Cinquemila', price = 125000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 4, weight = 50 },
{ model = 'iwagen', name = 'Obey', brand = 'I-Wagen', price = 225000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 4, weight = 50 },
{ model = 'astron', name = 'Astron', brand = 'Pfister', price = 150000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 4, weight = 50 },
{ model = 'baller7', name = 'Baller ST', brand = 'Gallivanter', price = 145000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
{ model = 'comet7', name = 'Comet', brand = 'S2 Cabrio', price = 25000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 2, weight = 50 },
{ model = 'deity', name = 'Deity', brand = 'Enus', price = 505000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 4, weight = 50 },
{ model = 'jubilee', name = 'Jubilee', brand = 'Enus', price = 485000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 4, weight = 50 },
{ model = 'oracle', name = 'Oracle', brand = 'Übermacht', price = 22000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
{ model = 'schafter2', name = 'Schafter', brand = 'Benefactor', price = 16000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
{ model = 'warrener2', name = 'Warrener HKR', brand = 'Vulcar', price = 30000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 2, weight = 50 },
{ model = 'rhinehart', name = 'Rhinehart', brand = 'Übermacht', price = 105000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 4, weight = 50 },
{ model = 'eudora', name = 'Eudora', brand = 'Willard', price = 17000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 4, weight = 50 },
{ model = 'asterope2', name = 'Asterope GZ', brand = 'Karin', price = 459000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 4, weight = 50 },
-- SUV (2)
{ model = 'baller', name = 'Baller', brand = 'Gallivanter', price = 22000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'baller2', name = 'Baller II', brand = 'Gallivanter', price = 15000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'baller3', name = 'Baller LE', brand = 'Gallivanter', price = 15000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'baller4', name = 'Baller LE LWB', brand = 'Gallivanter', price = 29000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'baller5', name = 'Baller LE (Armored)', brand = 'Gallivanter', price = 78000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'baller6', name = 'Baller LE LWB (Armored)', brand = 'Gallivanter', price = 82000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'bjxl', name = 'BeeJay XL', brand = 'Karin', price = 19000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'cavalcade', name = 'Cavalcade', brand = 'Albany', price = 14000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'cavalcade2', name = 'Cavalcade II', brand = 'Albany', price = 16500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'contender', name = 'Contender', brand = 'Vapid', price = 35000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'dubsta', name = 'Dubsta', brand = 'Benefactor', price = 19000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'dubsta2', name = 'Dubsta Luxury', brand = 'Benefactor', price = 19500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'fq2', name = 'FQ2', brand = 'Fathom', price = 18500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'granger', name = 'Granger', brand = 'Declasse', price = 22000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'gresley', name = 'Gresley', brand = 'Bravado', price = 25000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'habanero', name = 'Habanero', brand = 'Emperor', price = 20000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'huntley', name = 'Huntley S', brand = 'Enus', price = 24500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'landstalker', name = 'Landstalker', brand = 'Dundreary', price = 12000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'landstalker2', name = 'Landstalker XL', brand = 'Dundreary', price = 26000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'novak', name = 'Novak', brand = 'Lampadati', price = 70000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'patriot', name = 'Patriot', brand = 'Mammoth', price = 21000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'patriot2', name = 'Patriot Stretch', brand = 'Mammoth', price = 21000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'radi', name = 'Radius', brand = 'Vapid', price = 18000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'rebla', name = 'Rebla GTS', brand = 'Übermacht', price = 21000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'rocoto', name = 'Rocoto', brand = 'Obey', price = 13000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'seminole', name = 'Seminole', brand = 'Canis', price = 20000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'seminole2', name = 'Seminole Frontier', brand = 'Canis', price = 13000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'serrano', name = 'Serrano', brand = 'Benefactor', price = 48000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'toros', name = 'Toros', brand = 'Pegassi', price = 65000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'xls', name = 'XLS', brand = 'Benefactor', price = 17000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'granger2', name = 'Granger 3600LX', brand = 'Declasse', price = 221000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'patriot3', name = 'Patriot Military', brand = 'Mil-Spec', price = 270000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'aleutian', name = 'Aleutian', brand = 'Vapid', price = 183500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'baller8', name = 'Baller ST-D', brand = 'Gallivanter', price = 171500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'cavalcade3', name = 'Cavalcade XL', brand = 'Albany', price = 166500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'dorado', name = 'Dorado', brand = 'Bravado', price = 137500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'vivanite', name = 'Vivanite', brand = 'Karin', price = 160500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
-- Coupes (3)
{ model = 'cogcabrio', name = 'Cognoscenti Cabrio', brand = 'Enus', price = 30000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'exemplar', name = 'Exemplar', brand = 'Dewbauchee', price = 40000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'f620', name = 'F620', brand = 'Ocelot', price = 32500, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'felon', name = 'Felon', brand = 'Lampadati', price = 31000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'felon2', name = 'Felon GT', brand = 'Lampadati', price = 37000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'jackal', name = 'Jackal', brand = 'Ocelot', price = 19000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'oracle2', name = 'Oracle XS', brand = 'Übermacht', price = 28000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sentinel', name = 'Sentinel', brand = 'Übermacht', price = 30000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sentinel2', name = 'Sentinel XS', brand = 'Übermacht', price = 33000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'windsor', name = 'Windsor', brand = 'Enus', price = 27000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'windsor2', name = 'Windsor Drop', brand = 'Enus', price = 34000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'zion', name = 'Zion', brand = 'Übermacht', price = 22000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'zion2', name = 'Zion Cabrio', brand = 'Übermacht', price = 28000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'previon', name = 'Previon', brand = 'Karin', price = 149000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'champion', name = 'Champion', brand = 'Dewbauchee', price = 205000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'futo', name = 'Futo', brand = 'Karin', price = 17500, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sentinel3', name = 'Sentinel Classic', brand = 'Übermacht', price = 70000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'kanjosj', name = 'Kanjo SJ', brand = 'Dinka', price = 143000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'postlude', name = 'Postlude', brand = 'Dinka', price = 90000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tahoma', name = 'Tahoma Coupe', brand = 'Declasse', price = 12000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'broadway', name = 'Broadway', brand = 'Classique', price = 20000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'fr36', name = 'FR36', brand = 'Fathom', price = 161000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
-- Muscle (4)
{ model = 'blade', name = 'Blade', brand = 'Vapid', price = 23500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'buccaneer', name = 'Buccaneer', brand = 'Albany', price = 22500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'buccaneer2', name = 'Buccaneer Rider', brand = 'Albany', price = 24500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'chino', name = 'Chino', brand = 'Vapid', price = 5000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'chino2', name = 'Chino Luxe', brand = 'Vapid', price = 8000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'clique', name = 'Clique', brand = 'Vapid', price = 20000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'coquette3', name = 'Coquette BlackFin', brand = 'Invetero', price = 180000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'deviant', name = 'Deviant', brand = 'Schyster', price = 70000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'dominator', name = 'Dominator', brand = 'Vapid', price = 62500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'dominator2', name = 'Pißwasser Dominator', brand = 'Vapid', price = 50000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'dominator3', name = 'Dominator GTX', brand = 'Vapid', price = 70000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'dominator4', name = 'Dominator Arena', brand = 'Vapid', price = 200000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'dominator7', name = 'Dominator ASP', brand = 'Vapid', price = 110000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'dominator8', name = 'Dominator GTT', brand = 'Vapid', price = 80000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'dukes', name = 'Dukes', brand = 'Imponte', price = 23500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'dukes2', name = 'Duke O\'Death', brand = 'Imponte', price = 60000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'dukes3', name = 'Beater Dukes', brand = 'Imponte', price = 45000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'faction', name = 'Faction', brand = 'Willard', price = 17000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'faction2', name = 'Faction Rider', brand = 'Willard', price = 19000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'faction3', name = 'Faction Custom Donk', brand = 'Willard', price = 35000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'ellie', name = 'Ellie', brand = 'Vapid', price = 42250, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'gauntlet', name = 'Gauntlet', brand = 'Bravado', price = 28500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'gauntlet2', name = 'Redwood Gauntlet', brand = 'Bravado', price = 70000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'gauntlet3', name = 'Classic Gauntlet', brand = 'Bravado', price = 75000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'gauntlet4', name = 'Gauntlet Hellfire', brand = 'Bravado', price = 80000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'gauntlet5', name = 'Gauntlet Classic Custom', brand = 'Bravado', price = 120000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'hermes', name = 'Hermes', brand = 'Albany', price = 535000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'hotknife', name = 'Hotknife', brand = 'Vapid', price = 90000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'hustler', name = 'Hustler', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'impaler', name = 'Impaler', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'impaler2', name = 'Impaler Arena', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'impaler3', name = 'Impaler Future Shock', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'impaler4', name = 'Impaler Nightmare', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'imperator', name = 'Imperator Arena', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'imperator2', name = 'imperator Future Shock', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'imperator3', name = 'Imperator Nightmare', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'lurcher', name = 'Lurcher', brand = 'Bravado', price = 21000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'nightshade', name = 'Nightshade', brand = 'Imponte', price = 70000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'phoenix', name = 'Phoenix', brand = 'Imponte', price = 65000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'picador', name = 'Picador', brand = 'Cheval', price = 20000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'ratloader2', name = 'Ratloader', brand = 'Ratloader2', price = 20000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'ruiner', name = 'Ruiner', brand = 'Imponte', price = 29000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'ruiner2', name = 'Ruiner 2000', brand = 'Imponte', price = 50000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sabregt', name = 'Sabre GT Turbo', brand = 'Declasse', price = 23000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sabregt2', name = 'Sabre GT Turbo Custom', brand = 'Declasse', price = 26500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'slamvan', name = 'Slam Van', brand = 'Vapid', price = 30000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'slamvan2', name = 'Lost Slam Van', brand = 'Vapid', price = 90000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'slamvan3', name = 'Slam Van Custom', brand = 'Vapid', price = 17000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'stalion', name = 'Stallion', brand = 'Declasse', price = 33000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'stalion2', name = 'Stallion Burgershot', brand = 'Declasse', price = 40000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tampa', name = 'Tampa', brand = 'Declasse', price = 24500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tulip', name = 'Tulip', brand = 'Declasse', price = 80000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'vamos', name = 'Vamos', brand = 'Declasse', price = 30000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'vigero', name = 'Vigero', brand = 'Declasse', price = 39500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'virgo', name = 'Virgo', brand = 'Albany', price = 22000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'virgo2', name = 'Virgo Custom Classic', brand = 'Dundreary', price = 21000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'virgo3', name = 'Virgo Classic', brand = 'Dundreary', price = 21000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'voodoo', name = 'Voodoo', brand = 'Declasse', price = 13000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'yosemite', name = 'Yosemite', brand = 'Declasse', price = 19500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'yosemite2', name = 'Yosemite Drift', brand = 'Declasse', price = 55000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'buffalo4', name = 'Buffalo STX', brand = 'Bravado', price = 345000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'manana', name = 'Manana', brand = 'Albany', price = 12800, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'manana2', name = 'Manana Custom', brand = 'Albany', price = 24000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tampa2', name = 'Drift Tampa', brand = 'Declasse', price = 80000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'ruiner4', name = 'Ruiner ZZ-8', brand = 'Imponte', price = 85000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'vigero2', name = 'Vigero ZX', brand = 'Declasse', price = 105000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'weevil2', name = 'Weevil Custom', brand = 'BF', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'buffalo5', name = 'Buffalo EVX', brand = 'Bravado', price = 214000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tulip2', name = 'Tulip M-100', brand = 'Declasse', price = 80000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'clique2', name = 'Clique Wagon', brand = 'Vapid', price = 102500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'brigham', name = 'Brigham', brand = 'Albany', price = 149900, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'greenwood', name = 'Greenwood', brand = 'Bravado', price = 105000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'dominator9', name = 'Dominator GT', brand = 'Vapid', price = 219500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'impaler6', name = 'Impaler LX', brand = 'Declasse', price = 146500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'vigero3', name = 'Vigero ZX Convertible', brand = 'Declasse', price = 229500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
-- Sports Classic (5)
{ model = 'ardent', name = 'Ardent', brand = 'Ocelot', price = 30000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'btype', name = 'Roosevelt', brand = 'Albany', price = 75000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'btype2', name = 'Franken Stange', brand = 'Albany', price = 87000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'btype3', name = 'Roosevelt Valor', brand = 'Albany', price = 63000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'casco', name = 'Casco', brand = 'Lampadati', price = 100000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'deluxo', name = 'Deluxo', brand = 'Imponte', price = 55000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'dynasty', name = 'Dynasty', brand = 'Weeny', price = 25000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'fagaloa', name = 'Fagaloa', brand = 'Vulcar', price = 13000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'feltzer3', name = 'Stirling GT', brand = 'Benefactor', price = 115000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'gt500', name = 'GT500', brand = 'Grotti', price = 130000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'infernus2', name = 'Infernus Classic', brand = 'Pegassi', price = 245000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'jb700', name = 'JB 700', brand = 'Dewbauchee', price = 240000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'jb7002', name = 'JB 700W', brand = 'Dewbauchee', price = 40000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'mamba', name = 'Mamba', brand = 'Declasse', price = 140000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'michelli', name = 'Michelli GT', brand = 'Lampadati', price = 30000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'monroe', name = 'Monroe', brand = 'Pegassi', price = 115000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'nebula', name = 'Nebula', brand = 'Vulcar', price = 22000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'peyote', name = 'Peyote', brand = 'Vapid', price = 23500, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'peyote3', name = 'Peyote Custom', brand = 'Vapid', price = 48000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'pigalle', name = 'Pigalle', brand = 'Lampadati', price = 92000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'rapidgt3', name = 'Rapid GT Classic', brand = 'Dewbauchee', price = 90000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'retinue', name = 'Retinue', brand = 'Vapid', price = 32000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'retinue2', name = 'Retinue MKII', brand = 'Vapid', price = 38000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'savestra', name = 'Savestra', brand = 'Annis', price = 67000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'stinger', name = 'Stinger', brand = 'Grotti', price = 39500, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'stingergt', name = 'Stinger GT', brand = 'Grotti', price = 70000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'stromberg', name = 'Stromberg', brand = 'Ocelot', price = 80000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'swinger', name = 'Swinger', brand = 'Ocelot', price = 221000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'torero', name = 'Torero', brand = 'Pegassi', price = 84000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tornado', name = 'Tornado', brand = 'Declasse', price = 21000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tornado2', name = 'Tornado Convertible', brand = 'Declasse', price = 22000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tornado5', name = 'Tornado Custom', brand = 'Declasse', price = 22000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'turismo2', name = 'Turismo Classic', brand = 'Grotti', price = 170000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'viseris', name = 'Viseris', brand = 'Lampadati', price = 210000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'z190', name = '190Z', brand = 'Karin', price = 78000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'ztype', name = 'Z-Type', brand = 'Truffade', price = 270000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'zion3', name = 'Zion Classic', brand = 'Übermacht', price = 45000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'cheburek', name = 'Cheburek', brand = 'Rune', price = 7000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'toreador', name = 'Toreador', brand = 'Pegassi', price = 50000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'peyote2', name = 'Peyote Gasser', brand = 'Vapid', price = 40000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'coquette2', name = 'Coquette Classic', brand = 'Invetero', price = 165000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
-- Sports (6)
{ model = 'alpha', name = 'Alpha', brand = 'Albany', price = 53000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'banshee', name = 'Banshee', brand = 'Bravado', price = 56000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'bestiagts', name = 'Bestia GTS', brand = 'Grotti', price = 37000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'buffalo', name = 'Buffalo', brand = 'Bravado', price = 18750, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'buffalo2', name = 'Buffalo S', brand = 'Bravado', price = 24500, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'carbonizzare', name = 'Carbonizzare', brand = 'Grotti', price = 155000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'comet2', name = 'Comet', brand = 'Pfister', price = 130000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'comet3', name = 'Comet Retro Custom', brand = 'Pfister', price = 175000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'comet4', name = 'Comet Safari', brand = 'Pfister', price = 110000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'comet5', name = 'Comet SR', brand = 'Pfister', price = 155000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'coquette', name = 'Coquette', brand = 'Invetero', price = 145000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'coquette4', name = 'Coquette D10', brand = 'Invetero', price = 220000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'drafter', name = '8F Drafter', brand = 'Obey', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'elegy', name = 'Elegy Retro Custom', brand = 'Annis', price = 145000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'elegy2', name = 'Elegy RH8', brand = 'Annis', price = 150000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'feltzer2', name = 'Feltzer', brand = 'Benefactor', price = 97000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'flashgt', name = 'Flash GT', brand = 'Vapid', price = 48000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'furoregt', name = 'Furore GT', brand = 'Lampadati', price = 78000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'gb200', name = 'GB 200', brand = 'Vapid', price = 140000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'komoda', name = 'Komoda', brand = 'Lampadati', price = 55000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'imorgon', name = 'Imorgon', brand = 'Överflöd', price = 120000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'italigto', name = 'Itali GTO', brand = 'Progen', price = 260000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'jugular', name = 'Jugular', brand = 'Ocelot', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'jester', name = 'Jester', brand = 'Dinka', price = 132250, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'jester2', name = 'Jester Racecar', brand = 'Dinka', price = 210000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'jester3', name = 'Jester Classic', brand = 'Dinka', price = 85000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'khamelion', name = 'Khamelion', brand = 'Hijak', price = 90000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'kuruma', name = 'Kuruma', brand = 'Karin', price = 72000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'kuruma2', name = 'kuruma2', brand = 'Karin2', price = 72000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'locust', name = 'Locust', brand = 'Ocelot', price = 200000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'lynx', name = 'Lynx', brand = 'Ocelot', price = 150000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'massacro', name = 'Massacro', brand = 'Dewbauchee', price = 110000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'massacro2', name = 'Massacro Racecar', brand = 'Dewbauchee', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'neo', name = 'Neo', brand = 'Vysser', price = 230000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'neon', name = 'Neon', brand = 'Pfister', price = 220000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'ninef', name = '9F', brand = 'Obey', price = 95000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'ninef2', name = '9F Cabrio', brand = 'Obey', price = 105000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'omnis', name = 'Omnis', brand = 'Wow', price = 90000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'paragon', name = 'Paragon', brand = 'Enus', price = 60000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'pariah', name = 'Pariah', brand = 'Ocelot', price = 90000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'penumbra', name = 'Penumbra', brand = 'Maibatsu', price = 22000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'penumbra2', name = 'Penumbra FF', brand = 'Maibatsu', price = 30000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'rapidgt', name = 'Rapid GT', brand = 'Dewbauchee', price = 86000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'rapidgt2', name = 'Rapid GT Convertible', brand = 'Dewbauchee', price = 92000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'raptor', name = 'Raptor', brand = 'BF', price = 90000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'revolter', name = 'Revolter', brand = 'Übermacht', price = 95000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'ruston', name = 'Ruston', brand = 'Hijak', price = 130000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'schafter3', name = 'Schafter V12', brand = 'Benefactor', price = 35000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'schafter4', name = 'Schafter LWB', brand = 'Benefactor', price = 21000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'schlagen', name = 'Schlagen GT', brand = 'Benefactor', price = 160000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'schwarzer', name = 'Schwartzer', brand = 'Benefactor', price = 47000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'seven70', name = 'Seven-70', brand = 'Dewbauchee', price = 140000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'specter', name = 'Specter', brand = 'Dewbauchee', price = 160000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'streiter', name = 'Streiter', brand = 'Benefactor', price = 40000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sugoi', name = 'Sugoi', brand = 'Dinka', price = 85000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sultan', name = 'Sultan', brand = 'Karin', price = 50000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sultan2', name = 'Sultan Custom', brand = 'Karin', price = 55000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'surano', name = 'Surano', brand = 'Benefactor', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tropos', name = 'Tropos Rallye', brand = 'Lampadati', price = 65000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'verlierer2', name = 'Verlierer', brand = 'Bravado', price = 90500, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'vstr', name = 'V-STR', brand = 'Albany', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'italirsx', name = 'Itali RSX', brand = 'Progen', price = 260000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'zr350', name = 'ZR350', brand = 'Annis', price = 38000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'calico', name = 'Calico GTF', brand = 'Karin', price = 39000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'futo2', name = 'Futo GTX', brand = 'Karin', price = 39000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'euros', name = 'Euros', brand = 'Annis', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'jester4', name = 'Jester RR', brand = 'Dinka', price = 240000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'remus', name = 'Remus', brand = 'Annis', price = 48000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'comet6', name = 'Comet S2', brand = 'Pfister', price = 230000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'growler', name = 'Growler', brand = 'Pfister', price = 205000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'vectre', name = 'Vectre', brand = 'Emperor', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'cypher', name = 'Cypher', brand = 'Übermacht', price = 155000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sultan3', name = 'Sultan Classic Custom', brand = 'Karin', price = 56000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'rt3000', name = 'RT3000', brand = 'Dinka', price = 65000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sultanrs', name = 'Sultan RS', brand = 'Karin', price = 76500, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'visione', name = 'Visione', brand = 'Grotti', price = 750000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'cheetah2', name = 'Cheetah Classic', brand = 'Grotti', price = 195000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'stingertt', name = 'Itali GTO Stinger TT', brand = 'Maibatsu', price = 238000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'omnisegt', name = 'Omnis e-GT', brand = 'Obey', price = 185000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sentinel4', name = 'Sentinel Classic Widebody', brand = 'Übermacht', price = 140000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sm722', name = 'SM722', brand = 'Benefactor', price = 125000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tenf', name = '10F', brand = 'Obey', price = 185000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tenf2', name = '10F Widebody', brand = 'Obey', price = 215000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'everon2', name = 'Everon Hotring', brand = 'Karin', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'issi8', name = 'Issi Rally', brand = 'Weeny', price = 10000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'corsita', name = 'Corsita', brand = 'Lampadati', price = 90000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'gauntlet6', name = 'Hotring Hellfire', brand = 'Bravado', price = 181000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'coureur', name = 'La Coureuse', brand = 'Penaud', price = 199000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'r300', name = '300R', brand = 'Annis', price = 56000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'panthere', name = 'Panthere', brand = 'Toundra', price = 55000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
-- Super (7)
{ model = 'adder', name = 'Adder', brand = 'Truffade', price = 280000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'autarch', name = 'Autarch', brand = 'Överflöd', price = 224000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'banshee2', name = 'Banshee 900R', brand = 'Bravado', price = 120000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'bullet', name = 'Bullet', brand = 'Vapid', price = 120000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'cheetah', name = 'Cheetah', brand = 'Grotti', price = 214000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'cyclone', name = 'Cyclone', brand = 'Coil', price = 300000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'entity2', name = 'Entity XXR', brand = 'Överflöd', price = 164000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'entityxf', name = 'Entity XF', brand = 'Överflöd', price = 180000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'emerus', name = 'Emerus', brand = 'Progen', price = 220000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'fmj', name = 'FMJ', brand = 'Vapid', price = 125000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'furia', name = 'Furia', brand = 'Grotti', price = 230000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'gp1', name = 'GP1', brand = 'Progen', price = 110000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'infernus', name = 'Infernus', brand = 'Pegassi', price = 235000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'italigtb', name = 'Itali GTB', brand = 'Progen', price = 170000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'italigtb2', name = 'Itali GTB Custom', brand = 'Progen', price = 250000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'krieger', name = 'Krieger', brand = 'Benefactor', price = 222000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'le7b', name = 'RE-7B', brand = 'Annis', price = 260000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'nero', name = 'Nero', brand = 'Truffade', price = 200000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'nero2', name = 'Nero Custom', brand = 'Truffade', price = 260000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'osiris', name = 'Osiris', brand = 'Pegassi', price = 220000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'penetrator', name = 'Penetrator', brand = 'Ocelot', price = 130000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'pfister811', name = '811', brand = 'Pfister', price = 220000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'prototipo', name = 'X80 Proto', brand = 'Grotti', price = 235000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'reaper', name = 'Reaper', brand = 'Pegassi', price = 100000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 's80', name = 'S80RR', brand = 'Annis', price = 205000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sc1', name = 'SC1', brand = 'Übermacht', price = 90000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sheava', name = 'ETR1', brand = 'Emperor', price = 220000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 't20', name = 'T20', brand = 'Progen', price = 1650000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'taipan', name = 'Taipan', brand = 'Cheval', price = 1850000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tempesta', name = 'Tempesta', brand = 'Pegassi', price = 120000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tezeract', name = 'Tezeract', brand = 'Pegassi', price = 220000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'thrax', name = 'Thrax', brand = 'Truffade', price = 180000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tigon', name = 'Tigon', brand = 'Lampadati', price = 240000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'turismor', name = 'Turismo R', brand = 'Grotti', price = 140000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tyrant', name = 'Tyrant', brand = 'Överflöd', price = 2100000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tyrus', name = 'Tyrus', brand = 'Progen', price = 230000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'vacca', name = 'Vacca', brand = 'Pegassi', price = 105000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'vagner', name = 'Vagner', brand = 'Dewbauchee', price = 1660000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'voltic', name = 'Voltic', brand = 'Coil', price = 120000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'voltic2', name = 'Rocket Voltic', brand = 'Coil', price = 9830400, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'xa21', name = 'XA-21', brand = 'Ocelot', price = 180000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'zentorno', name = 'Zentorno', brand = 'Pegassi', price = 340000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'zorrusso', name = 'Zorrusso', brand = 'Pegassi', price = 277000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'ignus', name = 'Ignus', brand = 'Pegassi', price = 1120000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'zeno', name = 'Zeno', brand = 'Överflöd', price = 1350000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'deveste', name = 'Deveste', brand = 'Principe', price = 234000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'lm87', name = 'LM87', brand = 'Benefactor', price = 155000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'torero2', name = 'Torero XO', brand = 'Pegassi', price = 245000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'entity3', name = 'Entity MT', brand = 'Overflod', price = 200000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'virtue', name = 'Virtue', brand = 'Ocelot', price = 72000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'turismo3', name = 'Turismo Omaggio', brand = 'Grotti', price = 284500, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
-- Motorcycles (8)
{ model = 'akuma', name = 'Akuma', brand = 'Dinka', price = 55000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'avarus', name = 'Avarus', brand = 'LCC', price = 20000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'bagger', name = 'Bagger', brand = 'WMC', price = 13500, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'bati', name = 'Bati 801', brand = 'Pegassi', price = 24000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'bati2', name = 'Bati 801RR', brand = 'Pegassi', price = 19000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'bf400', name = 'BF400', brand = 'Nagasaki', price = 22000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'carbonrs', name = 'Carbon RS', brand = 'Nagasaki', price = 22000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'chimera', name = 'Chimera', brand = 'Nagasaki', price = 21000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'cliffhanger', name = 'Cliffhanger', brand = 'Western', price = 28500, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'daemon', name = 'Daemon', brand = 'WMC', price = 14000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'daemon2', name = 'Daemon Custom', brand = 'Western', price = 23000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'defiler', name = 'Defiler', brand = 'Shitzu', price = 30000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'deathbike', name = 'Deathbike Apocalypse', brand = 'Deathbike', price = 30000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'deathbike2', name = 'Deathbike Future Shock', brand = 'Deathbike', price = 30000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'deathbike3', name = 'Deathbike Nightmare', brand = 'Deathbike', price = 30000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'diablous', name = 'Diablous', brand = 'Principe', price = 30000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'diablous2', name = 'Diablous Custom', brand = 'Principe', price = 38000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'double', name = 'Double-T', brand = 'Dinka', price = 28000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'enduro', name = 'Enduro', brand = 'Dinka', price = 5500, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'esskey', name = 'Esskey', brand = 'Pegassi', price = 12000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'faggio', name = 'Faggio Sport', brand = 'Pegassi', price = 2000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'faggio2', name = 'Faggio', brand = 'Pegassi', price = 1900, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'faggio3', name = 'Faggio Mod', brand = 'Pegassi', price = 2500, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'fcr', name = 'FCR 1000', brand = 'Pegassi', price = 5000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'fcr2', name = 'FCR 1000 Custom', brand = 'Pegassi', price = 19000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'gargoyle', name = 'Gargoyle', brand = 'Western', price = 32000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'hakuchou', name = 'Hakuchou', brand = 'Shitzu', price = 17000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'hakuchou2', name = 'Hakuchou Drag', brand = 'Shitzu', price = 45000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'hexer', name = 'Hexer', brand = 'LCC', price = 16000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'innovation', name = 'Innovation', brand = 'LLC', price = 33500, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'lectro', name = 'Lectro', brand = 'Principe', price = 28000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'manchez', name = 'Manchez', brand = 'Maibatsu', price = 8300, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'nemesis', name = 'Nemesis', brand = 'Principe', price = 20000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'nightblade', name = 'Nightblade', brand = 'WMC', price = 23000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'oppressor', name = 'Oppressor', brand = 'Pegassi', price = 9999999, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'pcj', name = 'PCJ-600', brand = 'Shitzu', price = 15000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'ratbike', name = 'Rat Bike', brand = 'Western', price = 3000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'ruffian', name = 'Ruffian', brand = 'Pegassi', price = 25000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sanchez', name = 'Sanchez Livery', brand = 'Maibatsu', price = 5300, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sanchez2', name = 'Sanchez', brand = 'Maibatsu', price = 5300, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sanctus', name = 'Sanctus', brand = 'LCC', price = 35000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'shotaro', name = 'Shotaro', brand = 'Nagasaki', price = 320000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sovereign', name = 'Sovereign', brand = 'WMC', price = 8000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'stryder', name = 'Stryder', brand = 'Nagasaki', price = 50000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'thrust', name = 'Thrust', brand = 'Dinka', price = 22000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'vader', name = 'Vader', brand = 'Shitzu', price = 7200, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'vindicator', name = 'Vindicator', brand = 'Dinka', price = 19000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'vortex', name = 'Vortex', brand = 'Pegassi', price = 31000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'wolfsbane', name = 'Wolfsbane', brand = 'Western', price = 14000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'zombiea', name = 'Zombie Bobber', brand = 'Western', price = 28000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'zombieb', name = 'Zombie Chopper', brand = 'Western', price = 27000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'manchez2', name = 'Manchez Scout', brand = 'Maibatsu', price = 14000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'shinobi', name = 'Shinobi', brand = 'Nagasaki', price = 25000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'reever', name = 'Reever', brand = 'Western', price = 25000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'manchez3', name = 'Manchez Scout Classic', brand = 'Maibatsu', price = 15000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'powersurge', name = 'Powersurge', brand = 'Western', price = 7000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
-- Off-Road (9)
{ model = 'bfinjection', name = 'Bf Injection', brand = 'Annis', price = 9000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'bifta', name = 'Bifta', brand = 'Annis', price = 15500, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'blazer', name = 'Blazer', brand = 'Annis', price = 7500, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'blazer2', name = 'Blazer Lifeguard', brand = 'Nagasaki', price = 7000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'blazer3', name = 'Blazer Hot Rod', brand = 'Nagasaki', price = 7000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'blazer4', name = 'Blazer Sport', brand = 'Annis', price = 9250, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'blazer5', name = 'Blazer Aqua', brand = 'Nagasaki', price = 40000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'brawler', name = 'Brawler', brand = 'Annis', price = 40000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'caracara', name = 'Caracara', brand = 'Vapid', price = 60000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'caracara2', name = 'Caracara 4x4', brand = 'Vapid', price = 80000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'dubsta3', name = 'Dubsta 6x6', brand = 'Annis', price = 34000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'dune', name = 'Dune Buggy', brand = 'Annis', price = 14000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'everon', name = 'Everon', brand = 'Karin', price = 60000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'freecrawler', name = 'Freecrawler', brand = 'Canis', price = 24000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'hellion', name = 'Hellion', brand = 'Annis', price = 38000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'kalahari', name = 'Kalahari', brand = 'Canis', price = 14000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'kamacho', name = 'Kamacho', brand = 'Canis', price = 50000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'mesa3', name = 'Mesa Merryweather', brand = 'Canis', price = 400000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'outlaw', name = 'Outlaw', brand = 'Nagasaki', price = 15000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'rancherxl', name = 'Rancher XL', brand = 'Declasse', price = 24000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'rebel2', name = 'Rebel', brand = 'Vapid', price = 20000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'riata', name = 'Riata', brand = 'Vapid', price = 380000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sandking', name = 'Sandking XL', brand = 'Vapid', price = 25000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sandking2', name = 'Sandking SWB', brand = 'Vapid', price = 38000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'trophytruck', name = 'Trophy Truck', brand = 'Vapid', price = 60000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'trophytruck2', name = 'Desert Raid', brand = 'Vapid', price = 80000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'vagrant', name = 'Vagrant', brand = 'Maxwell', price = 50000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'verus', name = 'Verus', brand = 'Dinka', price = 20000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'winky', name = 'Winky', brand = 'Vapid', price = 10000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'yosemite3', name = 'Yosemite Rancher', brand = 'Declasse', price = 425000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'mesa', name = 'Mesa', brand = 'Canis', price = 12000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'ratel', name = 'Ratel', brand = 'Vapid', price = 199000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'l35', name = 'Walton L35', brand = 'Declasse', price = 167000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'monstrociti', name = 'MonstroCiti', brand = 'Maibatsu', price = 48000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'draugur', name = 'Draugur', brand = 'Declasse', price = 99000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'terminus', name = 'Terminus', brand = 'Canis', price = 187750, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
-- Industrial (10)
{ model = 'guardian', name = 'Guardian', brand = 'Vapid', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'mixer2', name = 'Mixer II', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tiptruck2', name = 'Tipper II', brand = 'Brute', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tiptruck', name = 'Tipper', brand = 'Brute', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'rubble', name = 'Rubble', brand = 'Jobuilt', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'mixer', name = 'Mixer', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'flatbed', name = 'Flatbed Truck', brand = 'MTL', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'dump', name = 'Dump Truck', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'bulldozer', name = 'Dozer', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'handler', name = 'Dock Handler', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'cutter', name = 'Cutter', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
-- Utility (11)
{ model = 'slamtruck', name = 'Slam Truck', brand = 'Vapid', price = 100000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'caddy3', name = 'Caddy (Bunker)', brand = 'Nagasaki', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'caddy2', name = 'Caddy (Civilian)', brand = 'Nagasaki', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'caddy3', name = 'Caddy (Golf)', brand = 'Nagasaki', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'utillitruck', name = 'Utility Truck (Cherry Picker)', brand = 'Brute', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'utillitruck2', name = 'Utility Truck (Van)', brand = 'Brute', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'utillitruck3', name = 'Utility Truck (Contender)', brand = 'Vapid', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tractor', name = 'Tractor', brand = 'Stanley', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tractor2', name = 'Fieldmaster', brand = 'Stanley', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tractor3', name = 'Fieldmaster', brand = 'Stanley', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'towtruck', name = 'Tow Truck (Large)', brand = 'Vapid', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'towtruck2', name = 'Tow Truck (Small)', brand = 'Vapid', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'scrap', name = 'Scrap Truck', brand = 'Vapid', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'sadler', name = 'Sadler', brand = 'Vapid', price = 20000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'ripley', name = 'Ripley', brand = 'HVY', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'mower', name = 'Lawn Mower', brand = 'Jacksheepe', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'forklift', name = 'Forklift', brand = 'HVY', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'docktug', name = 'Docktug', brand = 'HVY', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'airtug', name = 'Airtug', brand = 'HVY', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'trailers5', name = 'Trailer (Christmas)', brand = 'Unknown', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tvtrailer2', name = 'Trailer (TV)', brand = 'Unknown', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
-- Vans (12)
{ model = 'bison', name = 'Bison', brand = 'Bravado', price = 18000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'bobcatxl', name = 'Bobcat XL Open', brand = 'Vapid', price = 13500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'burrito3', name = 'Burrito', brand = 'Declasse', price = 4000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'gburrito2', name = 'Burrito Custom', brand = 'Declasse', price = 11500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'rumpo', name = 'Rumpo', brand = 'Bravado', price = 9000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'journey', name = 'Journey', brand = 'Zirconium', price = 6500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'minivan', name = 'Minivan', brand = 'Vapid', price = 7000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'minivan2', name = 'Minivan Custom', brand = 'Vapid', price = 10000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'paradise', name = 'Paradise', brand = 'Bravado', price = 9000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'rumpo3', name = 'Rumpo Custom', brand = 'Bravado', price = 19500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'speedo', name = 'Speedo', brand = 'Vapid', price = 10000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'speedo4', name = 'Speedo Custom', brand = 'Vapid', price = 15000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'surfer', name = 'Surfer', brand = 'BF', price = 9000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'youga3', name = 'Youga Classic 4x4', brand = 'Bravado', price = 15000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'youga', name = 'Youga', brand = 'Bravado', price = 8000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'youga2', name = 'Youga Classic', brand = 'Bravado', price = 14500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'youga4', name = 'Youga Custom', brand = 'Bravado', price = 85000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'moonbeam', name = 'Moonbeam', brand = 'Declasse', price = 13000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'moonbeam2', name = 'Moonbeam Custom', brand = 'Declasse', price = 15000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'boxville', name = 'Boxville LSDWP', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'boxville2', name = 'Boxville Go Postal', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'boxville3', name = 'Boxville Humane Labs', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'boxville4', name = 'Boxville Post OP', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'boxville5', name = 'Armored Boxville', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'pony', name = 'Pony', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'pony2', name = 'Pony (Smoke on the water)', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'journey2', name = 'Journey II', brand = 'Zirconium', price = 7000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'surfer3', name = 'Surfer Custom', brand = 'BF', price = 15000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'speedo5', name = 'Speedo Custom', brand = 'Vapid', price = 238000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'mule2', name = 'Mule', brand = 'Maibatsu', price = 40000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'mule3', name = 'Mule', brand = 'Maibatsu', price = 40000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'taco', name = 'Taco Truck', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'boxville6', name = 'Boxville (LSDS)', brand = 'Brute', price = 47500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
-- Cycles (13)
{ model = 'bmx', name = 'BMX', brand = 'Bike', price = 160, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'cruiser', name = 'Cruiser', brand = 'Bike', price = 510, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'fixter', name = 'Fixter', brand = 'Bike', price = 225, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'scorcher', name = 'Scorcher', brand = 'Bike', price = 280, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tribike', name = 'Whippet Race Bike', brand = 'Bike', price = 500, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tribike2', name = 'Endurex Race Bike', brand = 'Bike', price = 700, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tribike3', name = 'Tri-Cycles Race Bike', brand = 'Bike', price = 520, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'inductor', name = 'Inductor', brand = 'Coil', price = 5000, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'inductor2', name = 'Junk Energy Inductor', brand = 'Coil', price = 5000, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
-- Service (17)
{ model = 'brickade', name = 'Brickade', brand = 'MTL', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'brickade2', name = 'Brickade 6x6', brand = 'MTL', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'pbus2', name = 'Festival Bus', brand = 'Unknown', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'wastelander', name = 'Wastelander', brand = 'MTL', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'rallytruck', name = 'Dune', brand = 'MTL', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'metrotrain', name = 'Metro Train', brand = 'Unknown', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'freight', name = 'Freight Train', brand = 'Unknown', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'cablecar', name = 'Cable Car', brand = 'Unknown', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'trash', name = 'Trashmaster', brand = 'JoBuilt', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'trash2', name = 'Trashmaster', brand = 'JoBuilt', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'tourbus', name = 'Tour Bus', brand = 'Brute', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'taxi', name = 'Taxi', brand = 'Vapid', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'rentalbus', name = 'Rental Shuttle Bus', brand = 'Brute', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'coach', name = 'Dashound', brand = 'Brute', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'bus', name = 'Bus', brand = 'Brute', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'airbus', name = 'Airport Bus', brand = 'Brute', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
-- Commercial (20)
{ model = 'cerberus', name = 'Apocalypse Cerberus', brand = 'MTL', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'pounder2', name = 'Pounder Custom', brand = 'MTL', price = 55000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'mule4', name = 'Mule Custom', brand = 'Maibatsu', price = 40000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'phantom3', name = 'Phantom Custom', brand = 'Jobuilt', price = 110000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'hauler2', name = 'Hauler Custom', brand = 'Jobuilt', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'phantom2', name = 'Phantom Wedge', brand = 'Jobuilt', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'mule5', name = 'Mule (Heist)', brand = 'Maibatsu', price = 40000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'stockade', name = 'Stockade', brand = 'Brute', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'pounder', name = 'Pounder', brand = 'MTL', price = 55000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'phantom', name = 'Phantom', brand = 'Jobuilt', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'packer', name = 'Packer', brand = 'MTL', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'mule', name = 'Mule', brand = 'Maibatsu', price = 40000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'hauler', name = 'Hauler', brand = 'Jobuilt', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'biff', name = 'Biff', brand = 'Brute', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'benson', name = 'Benson', brand = 'Vapid', price = 55000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'benson2', name = 'Benson (Cluckin Bell)', brand = 'Vapid', price = 55000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'phantom4', name = 'Phantom (Christmas)', brand = 'Vapid', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
-- Open Wheel (22)
{ model = 'openwheel2', name = 'DR1', brand = 'Declasse', price = 100000, category = 'openwheel', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'openwheel1', name = 'BR8', brand = 'Benefactor', price = 100000, category = 'openwheel', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'formula2', name = 'R88', brand = 'Ocelot', price = 100000, category = 'openwheel', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
{ model = 'formula', name = 'PR4', brand = 'Progen', price = 100000, category = 'openwheel', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
}
for i = 1, #vehicles do
Config.vehicles[vehicles[i].model] = {
spawncode = vehicles[i].model,
name = vehicles[i].name,
brand = vehicles[i].brand,
model = vehicles[i].model,
price = vehicles[i].price,
category = vehicles[i].category,
shop = vehicles[i].shop,
class = vehicles[i].class or nil,
seats = vehicles[i].seats or nil,
weight = vehicles[i].weight or nil,
}
end

View file

@ -1,34 +0,0 @@
-- If you already have the old dealerships SQL don't need to run this
CREATE TABLE `dealership_stock` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`model` MEDIUMTEXT,
`stock` INT(10) DEFAULT 0,
`job` MEDIUMTEXT,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `id` (`id`) USING BTREE
);
CREATE TABLE `dealership_sells` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`description` LONGTEXT,
`job` MEDIUMTEXT,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `id` (`id`) USING BTREE
);
CREATE TABLE `dealership_imports` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`description` LONGTEXT,
`job` MEDIUMTEXT,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `id` (`id`) USING BTREE
);
CREATE TABLE `dealership_showroom` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`vehicleID` LONGTEXT,
`vehicle` MEDIUMTEXT,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `id` (`id`) USING BTREE
);

View file

@ -1,41 +0,0 @@
Config.dealerships = Config.dealerships or {}
Config.dealerships.fmpdm = { -- Dealership ID, NEEDS TO BE THE SAME AS THE JOB!!!
enabled = true, -- true or false to enable or disable the dealership
label = 'Premium Deluxe Motorsports', -- Dealership label
logo = 'https://i.ibb.co/nkBN3bs/logo.png', -- Dealership logo that'll show on UI
job = false, -- Dealership job or false to not player owned dealerships, NEEDS TO BE THE SAME AS THE ID!!!
lockCatalogueJob = false, -- can be false for everyone to open the catalogue or a job if you want to lock it to some job
currency = 'bank', -- bank, cash or money to ESX (Also to QBCore you can choose other currency like crypto and etc)
testDriveRoutingBucket = true, -- Set this to false if you don't want the test drive to be inside of a Routing Bucket
allowChangeVehicle = true, -- If true players will be able to change the vehicles on the catalogue witout job
testDriveTime = 50, -- Test drive time in seconds
testDriveSpawn = vec4(-805.46, -237.29, 37.12, 206.87), -- Test drive spawn coords
buySpawn = vec4(-796.82, -219.97, 37.26, 120.47), -- Vehicle buy spawn coords
blip = { enabled = true, coords = vec3(-795.15, -238.44, 37.08), sprite = 523, color = 3, scale = 0.6, display = 4 }, -- Dealership map blip
catalogues = { -- The catalogues to the players see the vehicle and emplooyes change the vehicle on showrrom
{ coords = vec3(-792.55, -227.65, 37.4), radius = 0.4 },
{ coords = vec3(-788.9, -225.45, 37.4), radius = 0.4 },
{ coords = vec3(-781.35, -238.1, 37.35), radius = 0.4 },
{ coords = vec3(-785.85, -240.35, 37.35), radius = 0.4 },
},
categories = { -- The categories that will show on the catalogue and dashboard (need to add the shop with the job name to the vehicles.lua too on the shops field otherwise it'll not show the vehicles!!)
{ label = 'Compacts', id = 'compacts' },
{ label = 'Sedans', id = 'sedans' },
{ label = 'SUVs', id = 'suvs' },
{ label = 'Coupes', id = 'coupes' },
{ label = 'Muscle', id = 'muscle' },
{ label = 'Sports Classics', id = 'classics' },
{ label = 'Sports', id = 'sports' },
{ label = 'Super', id = 'super' },
{ label = 'Motorcycles', id = 'motorcycles' },
{ label = 'OffRoad', id = 'offroad' },
{ label = 'Industrial', id = 'industrial' },
{ label = 'Utility', id = 'utility' },
{ label = 'Vans', id = 'vans' },
{ label = 'Cycles', id = 'cycles' },
{ label = 'Service', id = 'service' },
{ label = 'Commercial', id = 'commercial' },
{ label = 'Open Wheel', id = 'openwheel' },
}
}

View file

@ -1,54 +0,0 @@
Config.dealerships = Config.dealerships or {}
Config.dealerships.laryscars = { -- Dealership ID, NEEDS TO BE THE SAME AS THE JOB!!!
enabled = true, -- true or false to enable or disable the dealership
label = "Lary's Cars", -- Dealership label
logo = 'https://i.ibb.co/nkBN3bs/logo.png', -- Dealership logo that'll show on UI
job = 'laryscars', -- Dealership job or false to not player owned dealerships, NEEDS TO BE THE SAME AS THE ID!!!
lockCatalogueJob = false, -- can be false for everyone to open the catalogue or a job if you want to lock it to some job
currency = 'cash', -- bank, cash or money to ESX (Also to QBCore you can choose other currency like crypto and etc)
useStock = true, -- When using job = false this will be ignored
allowBuyCatalogue = true, -- If true players will be able to buy the vehicles on the catalogue
allowChangeVehicle = true, -- If true players will be able to change the vehicles on the catalogue witout job
needsMission = true, -- Set to false or true to disable/disable the needing of going pick up the car
testDriveRoutingBucket = true, -- Set this to false if you don't want the test drive to be inside of a Routing Bucket
testDriveTime = 50, -- Test drive time in seconds
testDriveSpawn = vec4(1223.21, 2688.7, 37.56, 108.43), -- Test drive spawn coords
truck = 'packer', -- The truck used on importation
trailer = 'tr4', -- The trailer used on importation
truckSpawn = vec4(1245.86, 2667.8, 37.55, 357.46), -- Importation truck spawn coords
buySpawn = vec4(1210.15, 2719.98, 38.01, 178.31), -- Vehicle buy spawn coords
comissions = { buyPercentage = 50, sellComission = 10 }, -- The dealership commisions (buyPercentage is the percentage of vehicle price that the dealership will buy it and the sellComission is the comission that the employee will earn on selling vehicles to players)
blip = { enabled = true, coords = vec3(1223.71, 2722.84, 38.01), sprite = 523, color = 3, scale = 0.6, display = 4 }, -- Dealership map blip
dashboards = { -- Dealership dashboards to import vehicles and see transations and etc
{ coords = vec3(1225.45, 2739.45, 38.25), radius = 0.5, includeBossMenu = true },
},
catalogues = { -- The catalogues to the players see the vehicle and emplooyes change the vehicle on showrrom
{ coords = vec3(1216.1, 2735.45, 38.15), radius = 0.25, vehicleCoords = vec4(1215.17, 2732.47, 37.1, 358.38), vehicle = 'premier', vehicleColor = 54 },
{ coords = vec3(1218.8, 2735.45, 38.15), radius = 0.25, vehicleCoords = vec4(1218.77, 2732.35, 37.1, 3.14), vehicle = 'mesa', vehicleColor = 0 },
{ coords = vec3(1229.35, 2735.4, 38.1), radius = 0.25, vehicleCoords = vec4(1229.48, 2733.08, 37.1, 356.21), vehicle = 'vacca', vehicleColor = 73 },
{ coords = vec3(1232.95, 2735.5, 38.15), radius = 0.25, vehicleCoords = vec4(1233.06, 2732.51, 38.1, 0.95), vehicle = 'cavalcade', vehicleColor = 4 },
},
categories = { -- The categories that will show on the catalogue and dashboard (need to add the shop with the job name to the vehicles.lua too on the shops field otherwise it'll not show the vehicles!!)
{ label = 'Compacts', id = 'compacts' },
{ label = 'Sedans', id = 'sedans' },
{ label = 'SUVs', id = 'suvs' },
{ label = 'Coupes', id = 'coupes' },
{ label = 'Muscle', id = 'muscle' },
{ label = 'Sports Classics', id = 'classics' },
{ label = 'Sports', id = 'sports' },
{ label = 'Super', id = 'super' },
{ label = 'Motorcycles', id = 'motorcycles' },
{ label = 'OffRoad', id = 'offroad' },
{ label = 'Industrial', id = 'industrial' },
{ label = 'Utility', id = 'utility' },
{ label = 'Vans', id = 'vans' },
{ label = 'Cycles', id = 'cycles' },
{ label = 'Service', id = 'service' },
{ label = 'Commercial', id = 'commercial' },
{ label = 'Open Wheel', id = 'openwheel' },
},
pickups = {
vec4(1201.35, -3187.03, 5.98, 175.35)
}
}

View file

@ -1,54 +0,0 @@
Config.dealerships = Config.dealerships or {}
Config.dealerships.cardealer = { -- Dealership ID, NEEDS TO BE THE SAME AS THE JOB!!!
enabled = true, -- true or false to enable or disable the dealership
label = 'Premium Deluxe Motorsports', -- Dealership label
logo = 'https://i.ibb.co/nkBN3bs/logo.png', -- Dealership logo that'll show on UI
job = false, -- Dealership job or false to not player owned dealerships, NEEDS TO BE THE SAME AS THE ID!!!
lockCatalogueJob = 'police', -- can be false for everyone to open the catalogue or a job if you want to lock it to some job
currency = 'cash', -- bank, cash or money to ESX (Also to QBCore you can choose other currency like crypto and etc)
useStock = true, -- When using job = false this will be ignored
allowBuyCatalogue = true, -- If true players will be able to buy the vehicles on the catalogue
allowChangeVehicle = true, -- If true players will be able to change the vehicles on the catalogue witout job
needsMission = true, -- Set to false or true to disable/disable the needing of going pick up the car
testDriveRoutingBucket = true, -- Set this to false if you don't want the test drive to be inside of a Routing Bucket
testDriveTime = 50, -- Test drive time in seconds
testDriveSpawn = vec4(-69.48, -1105.88, 26.07, 73.5), -- Test drive spawn coords
truck = 'packer', -- The truck used on importation
trailer = 'tr4', -- The trailer used on importation
truckSpawn = vec4(-58.46, -1072.99, 27.23, 70.0), -- Importation truck spawn coords
buySpawn = vec4(-17.59, -1107.66, 26.65, 161.25), -- Vehicle buy spawn coords
comissions = { buyPercentage = 50, sellComission = 10 }, -- The dealership commisions (buyPercentage is the percentage of vehicle price that the dealership will buy it and the sellComission is the comission that the employee will earn on selling vehicles to players)
blip = { enabled = true, coords = vec3(-58.01, -1097.08, 26.44), sprite = 523, color = 3, scale = 0.6, display = 4 }, -- Dealership map blip
dashboards = { -- Dealership dashboards to import vehicles and see transations and etc
{ coords = vec3(-45.9, -1090.5, 26.4), radius = 0.5, includeBossMenu = true },
},
catalogues = { -- The catalogues to the players see the vehicle and emplooyes change the vehicle on showrrom
{ coords = vec3(-46.7, -1094.6, 26.6), radius = 0.3, vehicleCoords = vec4(-47.34, -1097.28, 25.46, 299.48), vehicle = 'premier', vehicleColor = 54 },
{ coords = vec3(-42.1, -1096.2, 26.6), radius = 0.3, vehicleCoords = vec4(-42.82, -1098.86, 25.46, 301.18), vehicle = 'mesa', vehicleColor = 0 },
{ coords = vec3(-37.2, -1098.0, 26.6), radius = 0.3, vehicleCoords = vec4(-38.15, -1100.60, 25.46, 296.99), vehicle = 'vacca', vehicleColor = 73 },
{ coords = vec3(-33.0, -1099.5, 26.6), radius = 0.3, vehicleCoords = vec4(-33.69, -1102.26, 25.46, 297.53), vehicle = 'cavalcade', vehicleColor = 4 },
},
categories = { -- The categories that will show on the catalogue and dashboard (need to add the shop with the job name to the vehicles.lua too on the shops field otherwise it'll not show the vehicles!!)
{ label = 'Compacts', id = 'compacts' },
{ label = 'Sedans', id = 'sedans' },
{ label = 'SUVs', id = 'suvs' },
{ label = 'Coupes', id = 'coupes' },
{ label = 'Muscle', id = 'muscle' },
{ label = 'Sports Classics', id = 'classics' },
{ label = 'Sports', id = 'sports' },
{ label = 'Super', id = 'super' },
{ label = 'Motorcycles', id = 'motorcycles' },
{ label = 'OffRoad', id = 'offroad' },
{ label = 'Industrial', id = 'industrial' },
{ label = 'Utility', id = 'utility' },
{ label = 'Vans', id = 'vans' },
{ label = 'Cycles', id = 'cycles' },
{ label = 'Service', id = 'service' },
{ label = 'Commercial', id = 'commercial' },
{ label = 'Open Wheel', id = 'openwheel' },
},
pickups = {
vec4(1201.35, -3187.03, 5.98, 175.35)
}
}

View file

@ -1,41 +0,0 @@
fx_version 'cerulean'
description 'FiveM Dealership script'
author 'Marttins | MT Scripts'
lua54 'yes'
game 'gta5'
shared_scripts {
'@ox_lib/init.lua',
'configs/*',
'dealerships/*',
}
client_scripts {
'@qbx_core/modules/lib.lua',
'@qbx_core/modules/playerdata.lua',
'client/**/*',
}
server_scripts {
'@oxmysql/lib/MySQL.lua',
'server/**/*',
}
ui_page 'web/build/index.html'
files {
'locales/*',
'web/build/index.html',
'web/build/**/*',
'web/assets/**/*',
'vehiclesImages/*',
}
escrow_ignore {
'server/functions.lua',
'server/callbacks.lua',
'client/functions.lua',
'configs/*.lua',
'dealerships/*.lua'
}
dependency '/assetpacks'

View file

@ -1,94 +0,0 @@
{
"target_dashboard": "Dashboard",
"target_dashboard_icon": "fas fa-laptop",
"target_management": "Boss menu",
"target_management_icon": "fas fa-user-tie",
"target_catalogue": "Catalogue",
"target_catalogue_icon": "fas fa-laptop",
"target_vehicle_info": "%s %s - %s$",
"target_vehicle_info_icon": "fas fa-info",
"target_test_drive": "Test Drive",
"target_test_drive_icon": "fas fa-car",
"target_buy_vehicle": "Buy vehicle",
"target_buy_vehicle_icon": "fas fa-dollar-sign",
"timer_testdrive_time": "Remaining time",
"textui_pess_cancel_test_drive": "Cancel test drive",
"textui_press_deliver_vehicle": "Finish importation",
"notify_cant_spawn_trailer": "All the pickup locations are occupied!!",
"notify_cant_spawn_truck": "Truck truck spawn location is occupied!!",
"notify_no_money": "The company does not have enoght money!!",
"notify_pick_delivery": "Get into the truck outside and go to the GPS location and pick the vehicle trailer!",
"notify_finish_delivery": "Now go to the GPS location and finish the importatio!",
"notify_stock_added": "Stock added!",
"notify_vehicle_bought": "Vehicle bought!",
"notify_no_money_player": "You don't have that money!",
"noitfy_no_id": "No ID provided!",
"notify_missing_fields": "You need to fill all the needed fields!",
"notify_no_nearby": "No players neaby you!",
"notify_vehicle_no_stock": "This vehicle does not have stock!",
"notify_stock_removed": "Stock removed!",
"notify_vehicle_sold": "Vehicle sold! You earned %s$",
"blip_vehicle": "Pickup vehicle",
"blip_vehicle_finish": "Delivery vehicle",
"logs_vehicle_imported_title": "Vehicle Imported",
"logs_vehicle_imported_message": "Player **%s (%s)** imported the vehicle **%s** for **%s** having a new stock of **%s** at the **%s** dealership company",
"logs_vehicle_bought_title": "Vehicle Bought",
"logs_vehicle_bought_message": "Player **%s (%s)** bought the vehicle **%s** for **%s$** at **%s** dealership",
"logs_add_stock_command_title": "Add stock command",
"logs_add_stock_command_message": "Player **%s (%s)** added stock for the vehicle **%s** having a new stock of **%s** at the **%s** dealership company",
"ui_all": "All",
"ui_stocked": "Stocked",
"ui_search": "Search",
"ui_vehicle_info_title": "Vehicle Information",
"ui_price": "Price",
"ui_category": "Category",
"ui_stock": "Stock",
"ui_class": "Class",
"ui_weight": "Trunk weight",
"ui_seats": "Seats",
"ui_confirm_buy_vehicle_title": "Confirm Purchase",
"ui_confirm_buy_vehicle_message": "You're sure you want to buy this vehicle?",
"ui_cancel": "Cancel",
"ui_confirm": "Confirm",
"ui_buy": "Buy",
"ui_test_drive": "Test Drive",
"ui_dealership_sells_title": "Dealership Sells",
"ui_dealership_importations_title": "Dealership Importations",
"ui_date": "Date",
"ui_employee": "Employee",
"ui_customer": "Customer",
"ui_plate": "Plate",
"ui_model": "Model",
"ui_sells": "Sells",
"ui_importations": "Importations",
"ui_confirm_sell_title": "Confirm vehicle sell",
"ui_player_id": "Player",
"ui_sell": "Sell",
"ui_cancel_stock": "Cancel stock",
"ui_confirm_importation_title": "Confirm importation",
"ui_confirm_importation_message": "You're sure you want to import this vehicle?",
"ui_add_stock": "Add stock",
"ui_date_format": "%d/%m/%Y - %X",
"ui_change_vehicle": "Change",
"command_add_stock_help": "Add dealership vehicle stock",
"command_add_stock_vehicle_name": "vehicle",
"command_add_stock_vehicle_help": "Vehicle spawn name",
"command_add_stock_amount_name": "amount",
"command_add_stock_amount_help": "Amount of stock to add",
"command_add_stock_dealership_name": "dealership",
"command_add_stock_dealership_help": "Job of the dealership to add stock",
"command_remove_stock_help": "Remove dealership vehicle stock",
"command_remove_stock_vehicle_name": "vehicle",
"command_remove_stock_vehicle_help": "Vehicle spawn name",
"command_remove_stock_amount_name": "amount",
"command_remove_stock_amount_help": "Amount of stock to remove",
"command_remove_stock_dealership_name": "dealership",
"command_remove_stock_dealership_help": "Job of the dealership to remove stock"
}

View file

@ -1,90 +0,0 @@
{
"target_dashboard": "Dashboard",
"target_dashboard_icon": "fas fa-laptop",
"target_management": "Menu do chefe",
"target_management_icon": "fas fa-user-tie",
"target_catalogue": "Catálogo",
"target_catalogue_icon": "fas fa-laptop",
"target_vehicle_info": "%s %s - %s$",
"target_vehicle_info_icon": "fas fa-info",
"target_test_drive": "Test Drive",
"target_test_drive_icon": "fas fa-car",
"target_buy_vehicle": "Comprar veículo",
"target_buy_vehicle_icon": "fas fa-dollar-sign",
"timer_testdrive_time": "Tempo restante",
"textui_pess_cancel_test_drive": "Cancelar test drive",
"textui_press_deliver_vehicle": "Terminar importação",
"notify_cant_spawn_trailer": "Todas as localizações da pickup estão ocupadas!",
"notify_cant_spawn_truck": "A localização para spawn do camião está ocupada!",
"notify_no_money": "A empresa não tem dinheiro suficiente!",
"notify_pick_delivery": "Entra no camião, vai até à localização indicada e vai buscar o reboque!",
"notify_finish_delivery": "Agora vai até à localização do GPS e termina a importação!",
"notify_stock_added": "Stock adicionado!",
"notify_vehicle_bought": "Veículo comprado!",
"notify_no_money_player": "Não tens dinheiro suficiente!",
"noitfy_no_id": "A tua identificação não foi verificada!",
"notify_missing_fields": "Precisas preencher todos os campos!",
"notify_vehicle_no_stock": "Este veiculo não tem stock!",
"notify_stock_removed": "Stock removido!",
"blip_vehicle": "veículo pickup",
"blip_vehicle_finish": "veículo de entrega",
"logs_vehicle_imported_title": "Veículo importado",
"logs_vehicle_imported_message": "Jogador **%s (%s)** importou o veículo **%s** para **%s** tendo um novo stock de **%s** no **%s** importador",
"logs_vehicle_bought_title": "Ve+iculo adquirido",
"logs_vehicle_bought_message": "Jogador **%s (%s)** comprou um novo veículo **%s** para **%s$** em **%s** importador",
"ui_all": "Tudo",
"ui_stocked": "Em stock",
"ui_search": "Pesquisar",
"ui_vehicle_info_title": "Informação de veículo",
"ui_price": "Preço",
"ui_category": "Categoria",
"ui_stock": "Stock",
"ui_class": "Classe",
"ui_weight": "Capacidade da mala",
"ui_seats": "Lugares",
"ui_confirm_buy_vehicle_title": "Confirmar compra",
"ui_confirm_buy_vehicle_message": "Tens a certeza que queres adquirir este veículo?",
"ui_cancel": "Cancelar",
"ui_confirm": "Confirmar",
"ui_buy": "Comprar",
"ui_test_drive": "Test Drive",
"ui_dealership_sells_title": "Vendas",
"ui_dealership_importations_title": "Importações",
"ui_date": "Data",
"ui_employee": "Funcionário",
"ui_customer": "Cliente",
"ui_plate": "Matrícula",
"ui_model": "Modelo",
"ui_sells": "Vendas",
"ui_importations": "Importações",
"ui_confirm_sell_title": "Confirmar venda do veículo",
"ui_player_id": "ID do jogador",
"ui_sell": "Vender",
"ui_cancel_stock": "Cancelar stock",
"ui_confirm_importation_title": "Confirmar importação",
"ui_confirm_importation_message": "Tens a certeza que queres importar este veículo?",
"ui_add_stock": "Adicionar stock",
"ui_date_format": "%d/%m/%Y - %X",
"ui_change_vehicle": "Trocar",
"command_add_stock_help": "Adicionar stock a um veiculo de um stand",
"command_add_stock_vehicle_name": "veiculo",
"command_add_stock_vehicle_help": "Nome de spawn do veiculo",
"command_add_stock_amount_name": "quantia",
"command_add_stock_amount_help": "Quantia de stock a adicionar",
"command_add_stock_dealership_name": "stand",
"command_add_stock_dealership_help": "Job do stand a adicionar stock",
"command_remove_stock_help": "Remover stock de veiculo de um stand",
"command_remove_stock_vehicle_name": "veiculo",
"command_remove_stock_vehicle_help": "Nome de spawn do veiculo",
"command_remove_stock_amount_name": "quantia",
"command_remove_stock_amount_help": "Quantia de stock a remover",
"command_remove_stock_dealership_name": "stand",
"command_remove_stock_dealership_help": "Job do stand a remover stock"
}

View file

@ -1,15 +0,0 @@
if Config.framework == 'esx' then
lib.callback.register('mt_dealerships:server:getPlayerJobESX', function(source)
local src = source
local Player = Config.core.GetPlayerFromId(src)
if not Player then return end
return Player.getJob().name
end)
lib.callback.register('mt_dealerships:server:getPlayerJobIsBossESX', function(source)
local src = source
local Player = Config.core.GetPlayerFromId(src)
if not Player then return end
return (Player.getJob().grade_name == 'boss')
end)
end

View file

@ -1,107 +0,0 @@
---@param account string
---@param amount integer
addAccountMoney = function(account, amount)
if Config.banking == 'Renewed-Banking' then
exports['Renewed-Banking']:addAccountMoney(account, amount)
elseif Config.banking == 'esx_addonaccount' then
TriggerEvent('esx_addonaccount:getSharedAccount', 'society_'..account, function(account)
account.addMoney(amount)
end)
else
exports[Config.banking]:AddMoney(account, amount)
end
end
---@param account string
---@param amount integer
removeAccountMoney = function(account, amount)
if Config.banking == 'Renewed-Banking' then
exports['Renewed-Banking']:removeAccountMoney(account, amount)
elseif Config.banking == 'esx_addonaccount' then
TriggerEvent('esx_addonaccount:getSharedAccount', 'society_'..account, function(account)
account.removeMoney(amount)
end)
else
exports[Config.banking]:RemoveMoney(account, amount)
end
end
---@param account string
---@return number
getAccountMoney = function(account)
local value = 0
if Config.banking == 'Renewed-Banking' then
value = exports['Renewed-Banking']:getAccountMoney(account)
elseif Config.banking == 'esx_addonaccount' then
TriggerEvent('esx_addonaccount:getSharedAccount', 'society_'..account, function(account)
value = account.money
end)
elseif Config.banking == 'qb-management' then
value = exports[Config.banking]:GetMoney(account)
else
value = exports[Config.banking]:GetAccountBalance(account)
end
return value
end
---@param webhook string
---@param title string
---@param message string
---@param image string
createLog = function(webhook, title, message, image)
PerformHttpRequest(webhook, function(err, text, headers) end, 'POST', json.encode({
embeds = {
{
title = title,
author = {
name = "MT Scripts - Dealerships",
icon_url = 'https://cdn.discordapp.com/attachments/1014907105733517442/1141400655450361916/Logo_PNG_8K.png?ex=66292c32&is=6616b732&hm=7f280578a3f1186b3778c2e828032df28d8f0b21debf468f126e0f5cb099e3d8&',
url = 'https://mt-scripts.tebex.io/',
},
color = '000000255',
description = message,
image = { url = image or '' },
footer = { text = 'mt-scripts.tebex.io' },
}
}
}), { ['Content-Type'] = 'application/json' })
end
---@param PlayerData table
---@param model string
---@param mods table
---@param plate string
---@param dealership table
addVehicleToGarage = function(PlayerData, model, mods, plate, dealership)
local src = source
if Config.framework == 'qb' or Config.framework == 'qbx' then
MySQL.insert('INSERT INTO `player_vehicles` (license, citizenid, vehicle, hash, mods, plate) VALUES (?, ?, ?, ?, ?, ?)', { PlayerData.license, PlayerData.citizenid, model, GetHashKey(model), json.encode(mods), plate })
if Config.mInsurance.enable then
local info = {}
info.name = PlayerData.charinfo.firstname .. " " .. PlayerData.charinfo.lastname
info.plate = plate
info.model = model
if Config.mInsurance.inventory == "qb" then
local Player = Config.core.Functions.GetPlayer(src)
Player.Functions.AddItem('car_registration', 1, false, info)
elseif Config.mInsurance.inventory == "ox" then
local metadata = { description = 'Name: '..PlayerData.charinfo.firstname .. " " .. PlayerData.charinfo.lastname..' \nPlate: '..plate..' \nModel: '..model }
exports.ox_inventory:AddItem(src, 'car_registration', 1, metadata)
end
end
elseif Config.framework == 'esx' then
MySQL.insert('INSERT INTO `owned_vehicles` (owner, plate, vehicle) VALUES (?, ?, ?)', { PlayerData.identifier, plate, json.encode({model = joaat(model), plate = plate}) })
if Config.mInsurance.enable then
local xPlayer = Config.core.GetPlayerFromId(src)
local name = xPlayer.getName()
local metadata = { description = 'Name: '..PlayerData.charinfo.firstname .. " " .. PlayerData.charinfo.lastname..' \nPlate: '..plate..' \nModel: '..model }
exports.ox_inventory:AddItem(src, 'car_registration', 1, metadata)
MySQL.insert('INSERT INTO m_insurance_registration (plate, model, registration, identifier) VALUES (?, ?, ?, ?)', {plate, vehicle, 1, PlayerData.license})
end
end
end

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,13 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/src/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>NUI React Boilerplate</title>
<script type="module" crossorigin src="./assets/index-yg9jBeC4.js"></script>
</head>
<body>
<div id="root"></div>
</body>
</html>