1
0
Fork 0
forked from Simnation/Main
This commit is contained in:
Nordi98 2025-07-09 15:19:44 +02:00
parent c8ce065d61
commit d7e2f9da39
47 changed files with 680 additions and 2010 deletions

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,9 @@
RegisterKeyMapping("+trailerConnect", "Connect any trailer", "keyboard", "j")
-- Use this function for job locking. If the job is correct, return true.
-- Please refer to your framework's job system for how to implement, I do not support
-- job checking integration. -Theebu
function allowed()
return true
end

View file

@ -0,0 +1,73 @@
Config = {}
Config.HitchDist = 3.5 -- Distance to check between hitches Default: 1.0
Config.Debug = false
--ONLY ENABLE ONE SYSTEM BELOW. BY DEFAULT BOTH ARE FALSE, WHICH ALLOWS ANY TOWING CAPABLE VEHICLE TO TOW ANY TRAILER
--Enable / Disable blacklisting if you still want to prevent certain trailers from being used but allow the rest
-- For example, stop vehicles from being able to freely connect to semi trailers
Config.UseBlacklist = false -- If FALSE (Default) the below section does NOT need filled out
Config.Blacklist = {
'trailers',
'trailers2',
'trailers3',
'tvtrailer',
'trailers4',
'docktrailer',
'tr2',
'tr3',
'tr4',
'tanker',
'tanker2',
'armytanker',
'trflat',
'trailerlogs',
'trailerlarge'
}
----
--Enable / Disable whitelisting if you still want full control what trucks can tow what trailers
Config.UseWhitelist = false -- If FALSE (Default) the below sections do NOT need filled out
Config.BallHitchTrucks = {
'sadler'
}
Config.BallHitchTrailers = {
'trailersmall'
}
Config.GooseHitchTrucks = {
}
Config.GooseHitchTrailers = {
}
Config.SaddleHitchTrucks = {
'packer',
'phantom',
'phantom2',
'phantom3',
'hauler',
'hauler2',
'barracks2'
}
Config.SaddleHitchTrailers = {
'trailers',
'trailers2',
'trailers3',
'tvtrailer',
'trailers4',
'docktrailer',
'tr2',
'tr3',
'tr4',
'tanker',
'tanker2',
'armytanker',
'trflat',
'trailerlogs',
'trailerlarge'
}

View file

@ -0,0 +1,23 @@
fx_version 'adamant'
game 'gta5'
description 'Connect Trailer Script'
author 'theebu'
lua54 'yes'
version '0.1.4'
client_scripts {
'client/client.lua',
'client/utils.lua'
}
server_scripts {
'server/server.lua'
}
shared_scripts {
'config.lua',
}
escrow_ignore {
'config.lua',
'client/utils.lua'
}
dependency '/assetpacks'

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,151 @@
RegisterKeyMapping("+trailerAttach", Config.Controlmessages.AttachVehicle, "keyboard", "g")
RegisterKeyMapping("+trailerInteract", Config.Controlmessages.RampInteract, "keyboard", "e")
RegisterKeyMapping("+trailerDetach", Config.Controlmessages.DetachAllVehicle, "keyboard", "h")
RegisterKeyMapping("+trailerWarp", "Get in attached vehicle", "keyboard", "f")
RegisterKeyMapping("+trailerConnect", "Connect any trailer", "keyboard", "j")
function NotiAtt() -- Attached notification
BeginTextCommandThefeedPost("STRING")
AddTextComponentSubstringPlayerName(Config.NotiLoadMessage)
EndTextCommandThefeedPostTicker(true, true)
end
function NotiDet() -- Detached notification
BeginTextCommandThefeedPost("STRING")
AddTextComponentSubstringPlayerName(Config.NotiUnLoadMessage)
EndTextCommandThefeedPostTicker(true, true)
end
-- Use this function for job locking. If the job is correct, return true.
-- Please refer to your framework's job system for how to implement, I do not support
-- job checking integration. -Theebu
function allowed()
return true
end
--This function returns if the vehicle is locked or not when trying to get in the loaded vehicle from next to the trailer
--false = NOT locked true == LOCKED
function IsVehicleLocked(car)
return DecorGetInt(car, '_VEH_DOOR_LOCK_STATUS') == 2 or DecorGetInt(car, '_VEH_DOOR_LOCK_STATUS') == 10
end
--Help Text Messages
function message(lineOne, lineTwo, lineThree, duration)
BeginTextCommandDisplayHelp("THREESTRINGS")
AddTextComponentSubstringPlayerName(lineOne)
AddTextComponentSubstringPlayerName(lineTwo or "")
AddTextComponentSubstringPlayerName(lineThree or "")
-- shape (always 0), loop (bool), makeSound (bool), duration (5000 max 5 sec)
EndTextCommandDisplayHelp(0, false, false, duration or 5000)
end
if Config.UseTarget then
--QB CORE
if Config.Target == 'qb-target' then
exports['qb-target']:AddTargetBone({'boot', 'chassis', "door_dside_f", "door_dside_r", "door_pside_f", "door_pside_f", "bonnet"}, {
options = {
{
icon = 'fa-solid fa-truck-ramp-box',
label = 'Toggle Ramp',
action = function(entity)
interactCheck(entity)
end,
canInteract = function(entity, distance, data)
return Config.Trailers[GetEntityModel(entity)] and allowed()
end,
},
{
icon = 'fa-solid fa-lock',
label = 'Attach load',
action = function(entity)
attachAllCheck(entity)
end,
canInteract = function(entity, distance, data)
return Config.Trailers[GetEntityModel(entity)] and allowed()
end,
},
{
icon = 'fa-solid fa-lock-open',
label = 'Detach load',
action = function(entity)
detachAllCheck(entity)
end,
canInteract = function(entity, distance, data)
return Config.Trailers[GetEntityModel(entity)] and allowed()
end,
},
{
icon = 'fa-solid fa-lock-open',
label = 'Attach/Detach Vehicle',
action = function(entity)
attachCheck2(entity)
end,
canInteract = function(entity, distance, data)
local vehCoords = GetEntityCoords(entity)
local vehicle = getVehicleInDirection(vector3(vehCoords.x, vehCoords.y, vehCoords.z + 1.0), vector3(vehCoords.x, vehCoords.y, vehCoords.z - 8.0), entity)
return allowed() and DoesEntityExist(vehicle) and Config.Trailers[GetEntityModel(vehicle)] and vehicle ~= entity
end,
}
},
distance = 5.5,
})
elseif Config.Target == 'ox_target' then
exports["ox_target"]:addGlobalVehicle(
{
{
icon = 'fa-solid fa-truck-ramp-box',
label = 'Toggle Ramp',
bones = {'boot', 'chassis', "door_dside_f", "door_dside_r", "door_pside_f", "door_pside_f", "bonnet"},
distance = 2.0,
canInteract = function(entity, distance, data)
return Config.Trailers[GetEntityModel(entity)] and allowed()
end,
onSelect = function(data)
interactCheck(data.entity)
end
},
{
icon = 'fa-solid fa-lock',
label = 'Attach load',
bones = 'boot', 'chassis', "door_dside_f", "door_dside_r", "door_pside_f", "door_pside_f", "bonnet",
distance = 2.0,
canInteract = function(entity, distance, data)
return Config.Trailers[GetEntityModel(entity)] and allowed()
end,
onSelect = function(data)
attachAllCheck(data.entity)
end
},
{
icon = 'fa-solid fa-lock-open',
label = 'Detach load',
bones = 'boot', 'chassis', "door_dside_f", "door_dside_r", "door_pside_f", "door_pside_f", "bonnet",
distance = 2.0,
canInteract = function(entity, distance, data)
return Config.Trailers[GetEntityModel(entity)] and allowed()
end,
onSelect = function(data)
detachAllCheck(data.entity)
end
},
{
icon = 'fa-solid fa-lock-open',
label = 'Attach/Detach Vehicle',
bones = 'boot', 'chassis', "door_dside_f", "door_dside_r", "door_pside_f", "door_pside_f", "bonnet",
distance = 2.0,
canInteract = function(entity, distance, data)
local vehCoords = GetEntityCoords(entity)
local vehicle = getVehicleInDirection(vector3(vehCoords.x, vehCoords.y, vehCoords.z + 1.0), vector3(vehCoords.x, vehCoords.y, vehCoords.z - 8.0), entity)
return allowed() and DoesEntityExist(vehicle) and Config.Trailers[GetEntityModel(vehicle)] and vehicle ~= entity
end,
onSelect = function(data)
attachCheck2(data.entity)
end
}
}
)
end
end

View file

@ -0,0 +1,363 @@
Config = {}
Config.CheckDistance = 11 -- Distance to check for nearby trailers
Config.InteractDistance = 2.5 -- Distance from point control works
Config.rampInstant = false -- Instantly open/close ramp. Enable if ramps won't close
Config.AttachNotify = true -- Enable notifications
Config.NotiLoadMessage = 'Vehicle Loaded'
Config.NotiUnLoadMessage = 'Vehicle Unloaded'
Config.UseExternalTrailerConnect = false -- Set to True if you want to use ebu_trailerconnect with the whitelist/blacklist control
--========Interaction Type========--
--======[[see utils.lua to modify]]======--
Config.UseTarget = false -- If True, Markers & Prompts will be disabled except for in vehicle
Config.Target = 'qb-target'
--========Markers & Prompts=======--
--Increases tick rate from 0.01 to 0.08 - 0.1 when in range
Config.WaitTimer = 3000 -- Update rate to check for nearby trailer seconds * 1000 (Default 3000)
Config.ShowMarkers = false -- Display markers at interaction points
Config.ShowHelp = true -- Display help prompts
Config.MessageDistance = 2.0 -- Distance from point to display message (Default 2.0)
Config.Marker = {
type = 1, -- marker shape: https://docs.fivem.net/docs/game-references/markers/ (Default 27)
Size = 1.0, -- marker size (Default 2.0)
Color = { -- RGBA color
red = 100,
green = 200,
blue = 200,
alpha = 150
},
heightOffset = 0.0, -- Height from ground for marker. Marker at ground Z (Default 0.0)
Bob = false, -- Marker bobbing up and down (Default false)
faceCamera = false, -- Marker always faces camera (Default false)
rotate = false -- Marker rotates (Default false)
}
Config.Controlmessages = {
RampInteract = "Rampe bedienen",
AttachVehicle = "Fahrzeug sichern/lösen",
AttachAllVehicle = "Alle sichern ",
DetachAllVehicle = "Alle lösen",
}
--========Trailers=======--
--[[ CONFIG EXAMPLE AND EXPLANATIONS
[GetHashKey('[MODELNAME]')] = { -- Enter the spawn name
hasRamp = true, -- true or false : If false, trailer functions still work but no interaction for the ramp will be present
rampPos = {vector3(-1.8, -5.5, -0.5), vector3(1.8, -5.5, -0.5)}, -- array | (x,y,z) positon from center of trailer. Point of ramp interaction circle
isRampExtra = true, -- (optional) true or false : Sets if the ramp is an extra. If false or not present, treats as a door
rampDoorNum = 3, -- door or extra number | Can be an array of numbers
doorwithRampNums = {2,3}, -- doors that will open or close when the ramp is toggled
extraswithRampNums = {-1,2} -- extras that will toggle when the ramp is toggled. If negative, will set the extra to be opposite the door
},
]]
Config.Trailers = {
[GetHashKey('blomenroehr')] = {
hasRamp = true,
rampPos = {vector3(1.5, -3.0, -0.45), vector3(-1.5, -3.0, -0.45)},
rampDoorNum = 5,
},
[GetHashKey('3ctrailer')] = {
hasRamp = true,
rampPos = {vector3(-2.0,-4.0,0.25),vector3(2.0,-4.0,0.25)},
rampDoorNum = 5,
},
[GetHashKey('cotrailer')] = {
hasRamp = true,
rampPos = {vector3(-2.0,-4.0,-0.55),vector3(2.0,-4.0,-0.55)},
rampDoorNum = 5,
},
[GetHashKey('shauler')] = {
hasRamp = true,
rampPos = {vector3(-2.0,-4.0,0.25),vector3(2.0,-4.0,0.25)},
rampDoorNum = 5,
},
[GetHashKey('godzcoe')] = {
hasRamp = false,
rampPos = {vector3(-2.0,-4.0,-0.55),vector3(2.0,-4.0,-0.55)},
rampDoorNum = 5,
},
[GetHashKey('thauler')] = {
hasRamp = true,
rampPos = {vector3(1.5, -3.0, -0.25), vector3(-1.5, -3.0, -0.25)},
rampDoorNum = 5,
},
[GetHashKey('btrailer')] = {
hasRamp = true,
rampPos = {vector3(1.5, -3.0, -0.45), vector3(-1.5, -3.0, -0.45)},
rampDoorNum = 5,
},
[GetHashKey('bclandscape')] = {
hasRamp = true,
rampPos = {vector3(1.5, -4.0, -0.45), vector3(-1.5, -4.0, -0.45)},
rampDoorNum = 5,
},
[GetHashKey('trailersmall')] = {
hasRamp = true,
rampPos = {vector3(1.5, -4.0, -0.45), vector3(-1.5, -4.0, -0.45)},
rampDoorNum = 5,
},
[GetHashKey('camperman')] = {
hasRamp = true,
rampPos = {vector3(2.0, -6.0, 0.1), vector3(-1.5, -6.0, 0.1)},
rampDoorNum = 4,
},
[GetHashKey('chauler')] = {
attNode = 'boot',
heightOff = 0.5,
hasRamp = true,
rampPos = {vector3(1.5, -2.7, -0.25), vector3(-1.5, -2.7, -0.25)},
rampDoorNum = 5,
},
[GetHashKey('cartrailer')] = {
hasRamp = true,
rampPos = {vector3(1.5, -3.7, -1.0), vector3(-1.5, -3.7, -1.0)},
isRampExtra = true,
rampDoorNum = 5,
},
[GetHashKey('semihauler')] = {
hasRamp = true,
rampPos = {vector3(-1.8, -7.5, -1.4), vector3(1.8, -7.5, -1.4)},
rampDoorNum = 5,
},
[GetHashKey('bigtex40')] = {
hasRamp = true,
rampPos = {vector3(-1.8, -5.0, -0.8), vector3(1.8, -5.0, -0.8)},
rampDoorNum = 5,
},
[GetHashKey('loadtrail')] = {
hasRamp = true,
isRampExtra = true,
rampPos = {vector3(-1.8, -5.0, -0.8), vector3(1.8, -5.0, -0.8)},
rampDoorNum = 1,
},
[GetHashKey('bigtex20')] = { --bigtex20hasRamp = true,
rampPos = {vector3(-1.8, -3.0, -0.8), vector3(1.8, -3.0, -0.8)},
rampDoorNum = 5,
},
[GetHashKey('godzhauler')] = {
hasRamp = true,
rampPos = {vector3(-1.8, -5.0, 0.1), vector3(1.8, -5.0, 0.1)},
rampDoorNum = 5,
},
[GetHashKey('godzenclosed')] = {
hasRamp = true,
rampPos = {vector3(-1.8, -5.5, -0.5), vector3(1.8, -5.5, -0.5)},
isRampExtra = true,
rampDoorNum = 3,
doorwithRampNums = {2,3},
},
[GetHashKey('enclosedgoose')] = {
hasRamp = true,
rampPos = {vector3(-1.8, -5.5, -0.5), vector3(1.8, -5.5, -0.5)},
rampDoorNum = {0,5},
},
[GetHashKey('godzbenson')] = {
hasRamp = true,
rampPos = {vector3(-1.8, -5.5, -1.0), vector3(1.8, -5.5, -1.0)},
rampDoorNum = 5,
},
[GetHashKey('trailers3')] = {
hasRamp = true,
rampPos = {vector3(-1.8, -5.5, -3.0), vector3(1.8, -5.5, -3.0)},
rampDoorNum = 5,
},
[GetHashKey('trflat')] = {
hasRamp = false,
rampPos = {vector3(-1.8, -5.5, 0.0), vector3(1.8, -5.5, 0.0)},
rampDoorNum = 5,
},
[GetHashKey('17fontaine')] = {
hasRamp = false,
rampPos = {vector3(-1.8, -5.5, -3.0), vector3(1.8, -5.5, -3.0)},
rampDoorNum = 5,
},
[GetHashKey('17fontainev2')] = {
hasRamp = false,
rampPos = {vector3(-1.8, -5.5, -3.0), vector3(1.8, -5.5, -3.0)},
rampDoorNum = 5,
},
[GetHashKey('17fontainev3')] = {
hasRamp = false,
rampPos = {vector3(-1.8, -5.5, -3.0), vector3(1.8, -5.5, -3.0)},
rampDoorNum = 5,
},
[GetHashKey('17fontainev4')] = {
hasRamp = false,
rampPos = {vector3(-1.8, -5.5, -3.0), vector3(1.8, -5.5, -3.0)},
rampDoorNum = 5,
},
[GetHashKey('20fttrailer')] = {
hasRamp = true,
rampPos = {vector3(1.5, -3.7, -1.0), vector3(-1.5, -3.7, -1.0)},
isRampExtra = true,
rampDoorNum = 3,
},
[GetHashKey('8220b')] = {
hasRamp = true,
rampPos = {vector3(-1.8, -3.0, -0.1), vector3(1.8, -3.0, -0.1)},
rampDoorNum = 5,
},
[GetHashKey('8220')]= {
hasRamp = true,
rampPos = {vector3(-1.8, -3.0, -0.1), vector3(1.8, -3.0, -0.1)},
rampDoorNum = 5,
},
[GetHashKey('8250')] = {
hasRamp = true,
rampPos = {vector3(-1.8, -9.0, 0.1), vector3(1.8, -9.0, 0.1)},
rampDoorNum = 5,
},
[GetHashKey('pjutility')] = {
hasRamp = true,
rampPos = {vector3(1.5, -3.0, 0.2), vector3(-1.5, -3.0, 0.2)},
rampDoorNum = 5,
},
[GetHashKey('bigtexb')] = {
hasRamp = true,
rampPos = {vector3(2.5, -4.0, -1.0), vector3(-2.5, -4.0, -1.0)},
rampDoorNum = 5,
},
[GetHashKey('ehauler')] = {
hasRamp = true,
rampPos = {vector3(-1.8, -5.5, -0.0), vector3(1.8, -5.5, -0.0)},
rampDoorNum = 5,
},
[GetHashKey('pjtrailer')] = {
hasRamp = true,
rampPos = {vector3(-1.8, -5.0, -1.0), vector3(1.8, -5.0, -1.0)},
rampDoorNum = 5,
},
[GetHashKey('ctrailer')] = {
hasRamp = true,
rampPos = {vector3(-1.8, -5.5, -0.6), vector3(1.8, -5.5, -0.6)},
rampDoorNum = 5,
},
[GetHashKey('btex20')] = {
hasRamp = true,
rampPos = {vector3(2.0, -5.0, -0.0), vector3(-2.0, -5.0, 0.0)},
rampDoorNum = 5,
},
[GetHashKey('40ft')] = {
hasRamp = true,
rampPos = {vector3(-1.8, -5.0, -0.8), vector3(1.8, -5.0, -0.8)},
isRampExtra = true,
rampDoorNum = 3,
},
[GetHashKey('eagerbeaver')] = {
hasRamp = true,
rampPos = {vector3(2.0, -5.0, -0.0), vector3(-2.0, -5.0, 0.0)},
rampDoorNum = 5,
},
[GetHashKey('valdeztrailer')] = {
hasRamp = true,
rampPos = {vector3(1.5, -3.0, -0.45), vector3(-1.5, -3.0, -0.45)},
rampDoorNum = 5,
},
[GetHashKey('zJuksCarHauler40ft')] = {
hasRamp = true,
rampPos = {vector3(-1.8, -12.0, 0.1), vector3(1.8, -12.0, 0.1)},
isRampExtra = true,
rampDoorNum = 6,
},
[GetHashKey('trailkinght')] = {
hasRamp = true,
rampPos = {vector3(-1.8, -5.0, -0.8), vector3(1.8, -5.0, -0.8)},
isRampExtra = true,
rampDoorNum = {8,9},
},
[GetHashKey('boogie36ftr')] = {
hasRamp = true,
rampPos = {vector3(-1.8, -5.0, -0.8), vector3(1.8, -5.0, -0.8)},
isRampExtra = true,
rampDoorNum = 1,
},
[GetHashKey('20fttrailer')] = {
hasRamp = true,
rampPos = {vector3(-1.8, -5.0, -0.8), vector3(1.8, -5.0, -0.8)},
isRampExtra = true,
rampDoorNum = 1,
},
}
--========Vehicles with Toggled Extras=======--
-- When a vehicle is attached, selected extras will be turned on. Useful for models with tie down extras
-- Can be hashes or strings
Config.TogVehs = {
--['kamacho'] = {1},
}

View file

@ -0,0 +1,23 @@
fx_version 'adamant'
game 'gta5'
description 'Trailer Script'
author 'theebu'
lua54 'yes'
version '0.6.3'
client_scripts {
'config.lua',
'client/client.lua',
'client/utils.lua'
}
server_scripts {
'server/server.lua'
}
escrow_ignore {
'config.lua',
'client/utils.lua'
}
dependency '/assetpacks'

View file

@ -0,0 +1,16 @@
## ebu_trailer VERSION 6
## author: theebu | https://discord.gg/SvxZj2h
## EXPORTS:
exports['ebu_trailer']:AttachVeh([vehicle])
# [vehicle] is the target car to attach
# This runs the attach command to attach to a trailer. The trailer must be in the config
exports['ebu_trailer']:attachAll([trailer])
# [trailer] is the target trailer to attach to
# This attaches all vehicles on the target trailer
exports['ebu_trailer']:detachAll([trailer])
# [trailer] is the target trailer to detach from
# This detaches all vehicles on the target trailer

Binary file not shown.

View file

@ -66,13 +66,13 @@ Config.Interval = 10 -- How often in seconds should the wax check
-- Hose Placement
-- If you don't want to use this just don't use the hose_reel item.
Config.HoseInstallJob = true -- If only person with certain jobs can install hoses. false = everybody can
Config.HoseInstaller = {["handyman"] = 0, ["mechanic"] = 3} -- Jobs that are allowed to place a hose if Config.HoseInstallJob = true
Config.HoseInstaller = {["admin"] = 0, ["mechanic"] = 3} -- Jobs that are allowed to place a hose if Config.HoseInstallJob = true
Config.HoseConsume = true -- Wether the hose reel should be deducted from the players inventory after placing it
Config.HosePersistent = true
-- Second hose
Config.HoseInstallJob2 = false -- If you need a certain job to place this hose. false = everybody can
Config.HoseInstaller2 = {["handyman"] = 0, ["mechanic"] = 1} -- If you enable Config.HoseInstallJob2 these are the jobs that can place one
Config.HoseInstaller2 = {["admin"] = 0, ["mechanic"] = 1} -- If you enable Config.HoseInstallJob2 these are the jobs that can place one
Config.HoseModel2 = 'prop_hose_1' -- The model for the second hose
Config.Hose2Persistent = false -- If the placed hose should spawn again after server restart
Config.InHandPosition2 = vector3(0.0, 0.0, -0.5) -- If you are using a diffrent model for the hose you might need to adjust these. These are for the position while carrying the hose.

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 'DEALER')
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 = 'qb' -- 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 = 'qb-target' -- ox_target, qb-target, interact, ...
Config.banking = 'okokBanking' -- qb-banking, Renewed-Banking, (can change at server/functions.lua) ...
Config.keys = 'sn_vehicleKey' -- qb-vehiclekeys, qbx_vehiclekeys, mk_vehiclekeys, qs-vehiclekeys
Config.locale = 'en'
Config.useTabletAnimation = true
Config.mInsurance = {
enable = false, -- 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,793 +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', 'fussion' }, -- 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', 'fussion' }, class = 'C', seats = 2, weight = 50 },
{ model = 'brioso', name = 'Brioso R/A', brand = 'Grotti', price = 20000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'A', seats = 2, weight = 50 },
{ model = 'club', name = 'Club', brand = 'BF', price = 8000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'B', seats = 2, weight = 50 },
{ model = 'dilettante', name = 'Dilettante', brand = 'Karin', price = 9000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'D', seats = 2, weight = 50 },
{ model = 'dilettante2', name = 'Dilettante Patrol', brand = 'Karin', price = 12000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'D', seats = 2, weight = 50 },
{ model = 'kanjo', name = 'Blista Kanjo', brand = 'Dinka', price = 12000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'A', seats = 2, weight = 50 },
{ model = 'issi2', name = 'Issi', brand = 'Weeny', price = 7000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'B', seats = 2, weight = 50 },
{ model = 'issi3', name = 'Issi Classic', brand = 'Weeny', price = 5000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 2, weight = 50 },
{ model = 'panto', name = 'Panto', brand = 'Benefactor', price = 3200, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 2, weight = 50 },
{ model = 'prairie', name = 'Prairie', brand = 'Bollokan', price = 30000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'B', seats = 2, weight = 50 },
{ model = 'rhapsody', name = 'Rhapsody', brand = 'Declasse', price = 10000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'D', seats = 2, weight = 50 },
{ model = 'brioso2', name = 'Brioso 300', brand = 'Grotti', price = 12000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'B', seats = 2, weight = 50 },
{ model = 'weevil', name = 'Weevil', brand = 'BF', price = 9000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 2, weight = 50 },
{ model = 'issi7', name = 'Issi Sport', brand = 'Weeny', price = 100000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'S', seats = 2, weight = 50 },
{ model = 'blista2', name = 'Blista Compact', brand = 'Dinka', price = 18950, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 2, weight = 50 },
{ model = 'blista3', name = 'Blista Go Go Monkey', brand = 'Dinka', price = 15000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 2, weight = 50 },
{ model = 'brioso3', name = 'Brioso 300 Widebody', brand = 'Grotti', price = 125000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'B', seats = 2, weight = 50 },
{ model = 'boor', name = 'Boor', brand = 'Karin', price = 23000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'A', seats = 2, weight = 50 },
-- Sedans (1)
{ model = 'asea', name = 'Asea', brand = 'Declasse', price = 2500, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 4, weight = 50 },
{ model = 'asterope', name = 'Asterope', brand = 'Karin', price = 11000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 4, weight = 50 },
{ model = 'cog55', name = 'Cognoscenti 55', brand = 'Enus', price = 22000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 4, weight = 50 },
{ model = 'cognoscenti', name = 'Cognoscenti', brand = 'Enus', price = 22500, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 4, weight = 50 },
{ model = 'emperor', name = 'Emperor', brand = 'Albany', price = 4250, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 4, weight = 50 },
{ model = 'fugitive', name = 'Fugitive', brand = 'Cheval', price = 20000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'B', seats = 4, weight = 50 },
{ model = 'glendale', name = 'Glendale', brand = 'Benefactor', price = 3400, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'B', seats = 4, weight = 50 },
{ model = 'glendale2', name = 'Glendale Custom', brand = 'Benefactor', price = 12000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'B', seats = 4, weight = 50 },
{ model = 'ingot', name = 'Ingot', brand = 'Vulcar', price = 4999, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'D', seats = 4, weight = 50 },
{ model = 'intruder', name = 'Intruder', brand = 'Karin', price = 11250, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 4, weight = 50 },
{ model = 'premier', name = 'Premier', brand = 'Declasse', price = 12000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 4, weight = 50 },
{ model = 'primo', name = 'Primo', brand = 'Albany', price = 5000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'D', seats = 4, weight = 50 },
{ model = 'primo2', name = 'Primo Custom', brand = 'Albany', price = 14500, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 4, weight = 50 },
{ model = 'regina', name = 'Regina', brand = 'Dundreary', price = 7000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'D', seats = 4, weight = 50 },
{ model = 'stafford', name = 'Stafford', brand = 'Enus', price = 30000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 4, weight = 50 },
{ model = 'stanier', name = 'Stanier', brand = 'Vapid', price = 19000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 4, weight = 50 },
{ model = 'stratum', name = 'Stratum', brand = 'Zirconium', price = 15000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'D', seats = 4, weight = 50 },
{ model = 'stretch', name = 'Stretch', brand = 'Dundreary', price = 19000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 4, weight = 50 },
{ model = 'superd', name = 'Super Diamond', brand = 'Enus', price = 17000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'B', seats = 4, weight = 50 },
{ model = 'surge', name = 'Surge', brand = 'Cheval', price = 20000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'B', seats = 4, weight = 50 },
{ model = 'tailgater', name = 'Tailgater', brand = 'Obey', price = 22000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'B', seats = 4, weight = 50 },
{ model = 'warrener', name = 'Warrener', brand = 'Vulcar', price = 4000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'D', seats = 4, weight = 50 },
{ model = 'washington', name = 'Washington', brand = 'Albany', price = 7000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 4, weight = 50 },
{ model = 'tailgater2', name = 'Tailgater S', brand = 'Obey', price = 51000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'B', seats = 4, weight = 50 },
{ model = 'cinquemila', name = 'Lampadati', brand = 'Cinquemila', price = 125000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'A', seats = 4, weight = 50 },
{ model = 'deity', name = 'Deity', brand = 'Enus', price = 505000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'A', seats = 4, weight = 50 },
{ model = 'jubilee', name = 'Jubilee', brand = 'Enus', price = 485000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'A', seats = 4, weight = 50 },
{ model = 'oracle', name = 'Oracle', brand = 'Übermacht', price = 22000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'C', seats = 4, weight = 50 },
{ model = 'schafter2', name = 'Schafter', brand = 'Benefactor', price = 16000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'B', seats = 4, weight = 50 },
{ model = 'warrener2', name = 'Warrener HKR', brand = 'Vulcar', price = 30000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'B', seats = 2, weight = 50 },
{ model = 'rhinehart', name = 'Rhinehart', brand = 'Übermacht', price = 105000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'A', seats = 4, weight = 50 },
{ model = 'eudora', name = 'Eudora', brand = 'Willard', price = 17000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'A', seats = 4, weight = 50 },
{ model = 'asterope2', name = 'Asterope GZ', brand = 'Karin', price = 459000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'A', seats = 4, weight = 50 },
{ model = 'chavosv6', name = 'Chavos V6', brand = 'Dinka', price = 500000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'A', seats = 4, weight = 50 },
-- SUV (2)
{ model = 'baller', name = 'Baller', brand = 'Gallivanter', price = 22000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'baller2', name = 'Baller II', brand = 'Gallivanter', price = 15000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'baller3', name = 'Baller LE', brand = 'Gallivanter', price = 15000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'baller4', name = 'Baller LE LWB', brand = 'Gallivanter', price = 29000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'bjxl', name = 'BeeJay XL', brand = 'Karin', price = 19000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'cavalcade', name = 'Cavalcade', brand = 'Albany', price = 14000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'cavalcade2', name = 'Cavalcade II', brand = 'Albany', price = 16500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'contender', name = 'Contender', brand = 'Vapid', price = 35000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'dubsta', name = 'Dubsta', brand = 'Benefactor', price = 19000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'dubsta2', name = 'Dubsta Luxury', brand = 'Benefactor', price = 19500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'fq2', name = 'FQ2', brand = 'Fathom', price = 18500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'granger', name = 'Granger', brand = 'Declasse', price = 22000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'gresley', name = 'Gresley', brand = 'Bravado', price = 25000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'habanero', name = 'Habanero', brand = 'Emperor', price = 20000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'huntley', name = 'Huntley S', brand = 'Enus', price = 24500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'landstalker', name = 'Landstalker', brand = 'Dundreary', price = 12000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'landstalker2', name = 'Landstalker XL', brand = 'Dundreary', price = 26000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'novak', name = 'Novak', brand = 'Lampadati', price = 70000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'patriot', name = 'Patriot', brand = 'Mammoth', price = 21000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'patriot2', name = 'Patriot Stretch', brand = 'Mammoth', price = 21000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'radi', name = 'Radius', brand = 'Vapid', price = 18000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'rocoto', name = 'Rocoto', brand = 'Obey', price = 13000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'seminole', name = 'Seminole', brand = 'Canis', price = 20000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'seminole2', name = 'Seminole Frontier', brand = 'Canis', price = 13000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'serrano', name = 'Serrano', brand = 'Benefactor', price = 48000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'toros', name = 'Toros', brand = 'Pegassi', price = 65000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'xls', name = 'XLS', brand = 'Benefactor', price = 17000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'granger2', name = 'Granger 3600LX', brand = 'Declasse', price = 221000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'patriot3', name = 'Patriot Military', brand = 'Mil-Spec', price = 270000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'aleutian', name = 'Aleutian', brand = 'Vapid', price = 183500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'baller8', name = 'Baller ST-D', brand = 'Gallivanter', price = 171500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'cavalcade3', name = 'Cavalcade XL', brand = 'Albany', price = 166500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'dorado', name = 'Dorado', brand = 'Bravado', price = 137500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'vivanite', name = 'Vivanite', brand = 'Karin', price = 160500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'iwagen', name = 'Obey', brand = 'I-Wagen', price = 225000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'A', seats = 4, weight = 50 },
{ model = 'astron', name = 'Astron', brand = 'Pfister', price = 150000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'A', seats = 4, weight = 50 },
{ model = 'baller7', name = 'Baller ST', brand = 'Gallivanter', price = 145000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'B', seats = 4, weight = 50 },
-- Coupes (3)
{ model = 'cogcabrio', name = 'Cognoscenti Cabrio', brand = 'Enus', price = 30000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'exemplar', name = 'Exemplar', brand = 'Dewbauchee', price = 40000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'f620', name = 'F620', brand = 'Ocelot', price = 32500, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'felon', name = 'Felon', brand = 'Lampadati', price = 31000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'felon2', name = 'Felon GT', brand = 'Lampadati', price = 37000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'jackal', name = 'Jackal', brand = 'Ocelot', price = 19000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'oracle2', name = 'Oracle XS', brand = 'Übermacht', price = 28000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sentinel', name = 'Sentinel', brand = 'Übermacht', price = 30000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sentinel2', name = 'Sentinel XS', brand = 'Übermacht', price = 33000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'windsor', name = 'Windsor', brand = 'Enus', price = 27000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'windsor2', name = 'Windsor Drop', brand = 'Enus', price = 34000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'zion', name = 'Zion', brand = 'Übermacht', price = 22000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'zion2', name = 'Zion Cabrio', brand = 'Übermacht', price = 28000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'previon', name = 'Previon', brand = 'Karin', price = 149000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'champion', name = 'Champion', brand = 'Dewbauchee', price = 205000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'futo', name = 'Futo', brand = 'Karin', price = 17500, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sentinel3', name = 'Sentinel Classic', brand = 'Übermacht', price = 70000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'kanjosj', name = 'Kanjo SJ', brand = 'Dinka', price = 143000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'postlude', name = 'Postlude', brand = 'Dinka', price = 90000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tahoma', name = 'Tahoma Coupe', brand = 'Declasse', price = 12000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'broadway', name = 'Broadway', brand = 'Classique', price = 20000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'fr36', name = 'FR36', brand = 'Fathom', price = 161000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
-- Muscle (4)
{ model = 'blade', name = 'Blade', brand = 'Vapid', price = 23500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'buccaneer', name = 'Buccaneer', brand = 'Albany', price = 22500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'buccaneer2', name = 'Buccaneer Rider', brand = 'Albany', price = 24500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'chino', name = 'Chino', brand = 'Vapid', price = 5000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'chino2', name = 'Chino Luxe', brand = 'Vapid', price = 8000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'clique', name = 'Clique', brand = 'Vapid', price = 20000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'coquette3', name = 'Coquette BlackFin', brand = 'Invetero', price = 180000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'deviant', name = 'Deviant', brand = 'Schyster', price = 70000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'dominator', name = 'Dominator', brand = 'Vapid', price = 62500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'dominator2', name = 'Pißwasser Dominator', brand = 'Vapid', price = 50000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'dominator3', name = 'Dominator GTX', brand = 'Vapid', price = 70000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'dominator4', name = 'Dominator Arena', brand = 'Vapid', price = 200000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'dominator7', name = 'Dominator ASP', brand = 'Vapid', price = 110000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'dominator8', name = 'Dominator GTT', brand = 'Vapid', price = 80000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'dukes', name = 'Dukes', brand = 'Imponte', price = 23500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'dukes2', name = 'Duke O\'Death', brand = 'Imponte', price = 60000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'dukes3', name = 'Beater Dukes', brand = 'Imponte', price = 45000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'faction', name = 'Faction', brand = 'Willard', price = 17000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'faction2', name = 'Faction Rider', brand = 'Willard', price = 19000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'faction3', name = 'Faction Custom Donk', brand = 'Willard', price = 35000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'ellie', name = 'Ellie', brand = 'Vapid', price = 42250, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'gauntlet', name = 'Gauntlet', brand = 'Bravado', price = 28500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'gauntlet2', name = 'Redwood Gauntlet', brand = 'Bravado', price = 70000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'gauntlet3', name = 'Classic Gauntlet', brand = 'Bravado', price = 75000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'gauntlet4', name = 'Gauntlet Hellfire', brand = 'Bravado', price = 80000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'gauntlet5', name = 'Gauntlet Classic Custom', brand = 'Bravado', price = 120000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'hermes', name = 'Hermes', brand = 'Albany', price = 535000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'hotknife', name = 'Hotknife', brand = 'Vapid', price = 90000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'hustler', name = 'Hustler', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'impaler', name = 'Impaler', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'impaler2', name = 'Impaler Arena', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'impaler3', name = 'Impaler Future Shock', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'impaler4', name = 'Impaler Nightmare', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'imperator', name = 'Imperator Arena', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'imperator2', name = 'imperator Future Shock', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'imperator3', name = 'Imperator Nightmare', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'lurcher', name = 'Lurcher', brand = 'Bravado', price = 21000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'nightshade', name = 'Nightshade', brand = 'Imponte', price = 70000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'phoenix', name = 'Phoenix', brand = 'Imponte', price = 65000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'picador', name = 'Picador', brand = 'Cheval', price = 20000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'ratloader2', name = 'Ratloader', brand = 'Ratloader2', price = 20000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'ruiner', name = 'Ruiner', brand = 'Imponte', price = 29000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'ruiner2', name = 'Ruiner 2000', brand = 'Imponte', price = 50000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sabregt', name = 'Sabre GT Turbo', brand = 'Declasse', price = 23000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sabregt2', name = 'Sabre GT Turbo Custom', brand = 'Declasse', price = 26500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'slamvan', name = 'Slam Van', brand = 'Vapid', price = 30000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'slamvan2', name = 'Lost Slam Van', brand = 'Vapid', price = 90000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'slamvan3', name = 'Slam Van Custom', brand = 'Vapid', price = 17000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'stalion', name = 'Stallion', brand = 'Declasse', price = 33000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'stalion2', name = 'Stallion Burgershot', brand = 'Declasse', price = 40000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tampa', name = 'Tampa', brand = 'Declasse', price = 24500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tulip', name = 'Tulip', brand = 'Declasse', price = 80000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'vamos', name = 'Vamos', brand = 'Declasse', price = 30000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'vigero', name = 'Vigero', brand = 'Declasse', price = 39500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'virgo', name = 'Virgo', brand = 'Albany', price = 22000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'virgo2', name = 'Virgo Custom Classic', brand = 'Dundreary', price = 21000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'virgo3', name = 'Virgo Classic', brand = 'Dundreary', price = 21000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'voodoo', name = 'Voodoo', brand = 'Declasse', price = 13000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'yosemite', name = 'Yosemite', brand = 'Declasse', price = 19500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'yosemite2', name = 'Yosemite Drift', brand = 'Declasse', price = 55000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'buffalo4', name = 'Buffalo STX', brand = 'Bravado', price = 345000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'manana', name = 'Manana', brand = 'Albany', price = 12800, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'manana2', name = 'Manana Custom', brand = 'Albany', price = 24000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tampa2', name = 'Drift Tampa', brand = 'Declasse', price = 80000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'ruiner4', name = 'Ruiner ZZ-8', brand = 'Imponte', price = 85000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'weevil2', name = 'Weevil Custom', brand = 'BF', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'buffalo5', name = 'Buffalo EVX', brand = 'Bravado', price = 214000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tulip2', name = 'Tulip M-100', brand = 'Declasse', price = 80000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'clique2', name = 'Clique Wagon', brand = 'Vapid', price = 102500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'brigham', name = 'Brigham', brand = 'Albany', price = 149900, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'greenwood', name = 'Greenwood', brand = 'Bravado', price = 105000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'dominator9', name = 'Dominator GT', brand = 'Vapid', price = 219500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'impaler6', name = 'Impaler LX', brand = 'Declasse', price = 146500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'fussion' } },
-- Sports Classic (5)
{ model = 'ardent', name = 'Ardent', brand = 'Ocelot', price = 30000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'btype', name = 'Roosevelt', brand = 'Albany', price = 75000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'btype2', name = 'Franken Stange', brand = 'Albany', price = 87000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'btype3', name = 'Roosevelt Valor', brand = 'Albany', price = 63000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'casco', name = 'Casco', brand = 'Lampadati', price = 100000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'deluxo', name = 'Deluxo', brand = 'Imponte', price = 55000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'dynasty', name = 'Dynasty', brand = 'Weeny', price = 25000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'fagaloa', name = 'Fagaloa', brand = 'Vulcar', price = 13000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'feltzer3', name = 'Stirling GT', brand = 'Benefactor', price = 115000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'gt500', name = 'GT500', brand = 'Grotti', price = 130000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'infernus2', name = 'Infernus Classic', brand = 'Pegassi', price = 245000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'jb700', name = 'JB 700', brand = 'Dewbauchee', price = 240000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'jb7002', name = 'JB 700W', brand = 'Dewbauchee', price = 40000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'mamba', name = 'Mamba', brand = 'Declasse', price = 140000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'michelli', name = 'Michelli GT', brand = 'Lampadati', price = 30000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'monroe', name = 'Monroe', brand = 'Pegassi', price = 115000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'nebula', name = 'Nebula', brand = 'Vulcar', price = 22000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'peyote', name = 'Peyote', brand = 'Vapid', price = 23500, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'peyote3', name = 'Peyote Custom', brand = 'Vapid', price = 48000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'pigalle', name = 'Pigalle', brand = 'Lampadati', price = 92000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'rapidgt3', name = 'Rapid GT Classic', brand = 'Dewbauchee', price = 90000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'retinue', name = 'Retinue', brand = 'Vapid', price = 32000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'retinue2', name = 'Retinue MKII', brand = 'Vapid', price = 38000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'savestra', name = 'Savestra', brand = 'Annis', price = 67000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'stinger', name = 'Stinger', brand = 'Grotti', price = 39500, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'stingergt', name = 'Stinger GT', brand = 'Grotti', price = 70000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'stromberg', name = 'Stromberg', brand = 'Ocelot', price = 80000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'swinger', name = 'Swinger', brand = 'Ocelot', price = 221000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'torero', name = 'Torero', brand = 'Pegassi', price = 84000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tornado', name = 'Tornado', brand = 'Declasse', price = 21000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tornado2', name = 'Tornado Convertible', brand = 'Declasse', price = 22000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tornado5', name = 'Tornado Custom', brand = 'Declasse', price = 22000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'turismo2', name = 'Turismo Classic', brand = 'Grotti', price = 170000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'viseris', name = 'Viseris', brand = 'Lampadati', price = 210000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'z190', name = '190Z', brand = 'Karin', price = 78000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'ztype', name = 'Z-Type', brand = 'Truffade', price = 270000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'zion3', name = 'Zion Classic', brand = 'Übermacht', price = 45000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'cheburek', name = 'Cheburek', brand = 'Rune', price = 7000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'toreador', name = 'Toreador', brand = 'Pegassi', price = 50000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'peyote2', name = 'Peyote Gasser', brand = 'Vapid', price = 40000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'coquette2', name = 'Coquette Classic', brand = 'Invetero', price = 165000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'fussion' } },
-- Sports (6)
{ model = 'alpha', name = 'Alpha', brand = 'Albany', price = 53000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'banshee', name = 'Banshee', brand = 'Bravado', price = 56000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'bestiagts', name = 'Bestia GTS', brand = 'Grotti', price = 37000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'buffalo', name = 'Buffalo', brand = 'Bravado', price = 18750, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'buffalo2', name = 'Buffalo S', brand = 'Bravado', price = 24500, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'carbonizzare', name = 'Carbonizzare', brand = 'Grotti', price = 155000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'comet2', name = 'Comet', brand = 'Pfister', price = 130000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'comet3', name = 'Comet Retro Custom', brand = 'Pfister', price = 175000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'comet4', name = 'Comet Safari', brand = 'Pfister', price = 110000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'comet5', name = 'Comet SR', brand = 'Pfister', price = 155000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'coquette', name = 'Coquette', brand = 'Invetero', price = 145000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'coquette4', name = 'Coquette D10', brand = 'Invetero', price = 220000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'drafter', name = '8F Drafter', brand = 'Obey', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'elegy', name = 'Elegy Retro Custom', brand = 'Annis', price = 145000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'elegy2', name = 'Elegy RH8', brand = 'Annis', price = 150000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'feltzer2', name = 'Feltzer', brand = 'Benefactor', price = 97000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'flashgt', name = 'Flash GT', brand = 'Vapid', price = 48000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'furoregt', name = 'Furore GT', brand = 'Lampadati', price = 78000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'gb200', name = 'GB 200', brand = 'Vapid', price = 140000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'komoda', name = 'Komoda', brand = 'Lampadati', price = 55000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'imorgon', name = 'Imorgon', brand = 'Överflöd', price = 120000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'italigto', name = 'Itali GTO', brand = 'Progen', price = 260000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'jugular', name = 'Jugular', brand = 'Ocelot', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'jester', name = 'Jester', brand = 'Dinka', price = 132250, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'jester2', name = 'Jester Racecar', brand = 'Dinka', price = 210000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'jester3', name = 'Jester Classic', brand = 'Dinka', price = 85000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'khamelion', name = 'Khamelion', brand = 'Hijak', price = 90000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'kuruma', name = 'Kuruma', brand = 'Karin', price = 72000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'kuruma2', name = 'kuruma2', brand = 'Karin2', price = 72000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'locust', name = 'Locust', brand = 'Ocelot', price = 200000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'lynx', name = 'Lynx', brand = 'Ocelot', price = 150000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'massacro', name = 'Massacro', brand = 'Dewbauchee', price = 110000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'massacro2', name = 'Massacro Racecar', brand = 'Dewbauchee', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'neo', name = 'Neo', brand = 'Vysser', price = 230000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'neon', name = 'Neon', brand = 'Pfister', price = 220000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'ninef', name = '9F', brand = 'Obey', price = 95000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'ninef2', name = '9F Cabrio', brand = 'Obey', price = 105000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'omnis', name = 'Omnis', brand = 'Wow', price = 90000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'paragon', name = 'Paragon', brand = 'Enus', price = 60000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'pariah', name = 'Pariah', brand = 'Ocelot', price = 90000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'penumbra', name = 'Penumbra', brand = 'Maibatsu', price = 22000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'penumbra2', name = 'Penumbra FF', brand = 'Maibatsu', price = 30000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'rapidgt', name = 'Rapid GT', brand = 'Dewbauchee', price = 86000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'rapidgt2', name = 'Rapid GT Convertible', brand = 'Dewbauchee', price = 92000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'raptor', name = 'Raptor', brand = 'BF', price = 90000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'revolter', name = 'Revolter', brand = 'Übermacht', price = 95000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'ruston', name = 'Ruston', brand = 'Hijak', price = 130000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'schafter3', name = 'Schafter V12', brand = 'Benefactor', price = 35000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'schafter4', name = 'Schafter LWB', brand = 'Benefactor', price = 21000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'schlagen', name = 'Schlagen GT', brand = 'Benefactor', price = 160000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'schwarzer', name = 'Schwartzer', brand = 'Benefactor', price = 47000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'seven70', name = 'Seven-70', brand = 'Dewbauchee', price = 140000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'specter', name = 'Specter', brand = 'Dewbauchee', price = 160000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'streiter', name = 'Streiter', brand = 'Benefactor', price = 40000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sugoi', name = 'Sugoi', brand = 'Dinka', price = 85000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sultan', name = 'Sultan', brand = 'Karin', price = 50000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sultan2', name = 'Sultan Custom', brand = 'Karin', price = 55000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'surano', name = 'Surano', brand = 'Benefactor', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tropos', name = 'Tropos Rallye', brand = 'Lampadati', price = 65000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'verlierer2', name = 'Verlierer', brand = 'Bravado', price = 90500, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'vstr', name = 'V-STR', brand = 'Albany', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'italirsx', name = 'Itali RSX', brand = 'Progen', price = 260000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'zr350', name = 'ZR350', brand = 'Annis', price = 38000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'calico', name = 'Calico GTF', brand = 'Karin', price = 39000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'futo2', name = 'Futo GTX', brand = 'Karin', price = 39000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'euros', name = 'Euros', brand = 'Annis', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'jester4', name = 'Jester RR', brand = 'Dinka', price = 240000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'remus', name = 'Remus', brand = 'Annis', price = 48000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'comet6', name = 'Comet S2', brand = 'Pfister', price = 230000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'growler', name = 'Growler', brand = 'Pfister', price = 205000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'vectre', name = 'Vectre', brand = 'Emperor', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'cypher', name = 'Cypher', brand = 'Übermacht', price = 155000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sultan3', name = 'Sultan Classic Custom', brand = 'Karin', price = 56000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'rt3000', name = 'RT3000', brand = 'Dinka', price = 65000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sultanrs', name = 'Sultan RS', brand = 'Karin', price = 76500, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'visione', name = 'Visione', brand = 'Grotti', price = 750000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'cheetah2', name = 'Cheetah Classic', brand = 'Grotti', price = 195000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'stingertt', name = 'Itali GTO Stinger TT', brand = 'Maibatsu', price = 238000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'omnisegt', name = 'Omnis e-GT', brand = 'Obey', price = 185000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sentinel4', name = 'Sentinel Classic Widebody', brand = 'Übermacht', price = 140000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sm722', name = 'SM722', brand = 'Benefactor', price = 125000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tenf', name = '10F', brand = 'Obey', price = 185000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tenf2', name = '10F Widebody', brand = 'Obey', price = 215000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'everon2', name = 'Everon Hotring', brand = 'Karin', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'issi8', name = 'Issi Rally', brand = 'Weeny', price = 10000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'corsita', name = 'Corsita', brand = 'Lampadati', price = 90000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'gauntlet6', name = 'Hotring Hellfire', brand = 'Bravado', price = 181000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'coureur', name = 'La Coureuse', brand = 'Penaud', price = 199000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'r300', name = '300R', brand = 'Annis', price = 56000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'panthere', name = 'Panthere', brand = 'Toundra', price = 55000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'comet7', name = 'Comet', brand = 'S2 Cabrio', price = 25000, category = 'sport', shop = { 'cardealer', 'fmpdm', 'fussion' }, class = 'A', seats = 2, weight = 50 },
-- Super (7)
{ model = 'adder', name = 'Adder', brand = 'Truffade', price = 280000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'autarch', name = 'Autarch', brand = 'Överflöd', price = 224000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'banshee2', name = 'Banshee 900R', brand = 'Bravado', price = 120000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'bullet', name = 'Bullet', brand = 'Vapid', price = 120000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'cheetah', name = 'Cheetah', brand = 'Grotti', price = 214000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'cyclone', name = 'Cyclone', brand = 'Coil', price = 300000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'entity2', name = 'Entity XXR', brand = 'Överflöd', price = 164000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'entityxf', name = 'Entity XF', brand = 'Överflöd', price = 180000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'emerus', name = 'Emerus', brand = 'Progen', price = 220000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'fmj', name = 'FMJ', brand = 'Vapid', price = 125000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'furia', name = 'Furia', brand = 'Grotti', price = 230000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'gp1', name = 'GP1', brand = 'Progen', price = 110000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'infernus', name = 'Infernus', brand = 'Pegassi', price = 235000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'italigtb', name = 'Itali GTB', brand = 'Progen', price = 170000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'italigtb2', name = 'Itali GTB Custom', brand = 'Progen', price = 250000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'krieger', name = 'Krieger', brand = 'Benefactor', price = 222000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'le7b', name = 'RE-7B', brand = 'Annis', price = 260000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'nero', name = 'Nero', brand = 'Truffade', price = 200000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'nero2', name = 'Nero Custom', brand = 'Truffade', price = 260000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'osiris', name = 'Osiris', brand = 'Pegassi', price = 220000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'penetrator', name = 'Penetrator', brand = 'Ocelot', price = 130000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'pfister811', name = '811', brand = 'Pfister', price = 220000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'prototipo', name = 'X80 Proto', brand = 'Grotti', price = 235000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'reaper', name = 'Reaper', brand = 'Pegassi', price = 100000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 's80', name = 'S80RR', brand = 'Annis', price = 205000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sc1', name = 'SC1', brand = 'Übermacht', price = 90000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sheava', name = 'ETR1', brand = 'Emperor', price = 220000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 't20', name = 'T20', brand = 'Progen', price = 1650000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'taipan', name = 'Taipan', brand = 'Cheval', price = 1850000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tempesta', name = 'Tempesta', brand = 'Pegassi', price = 120000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tezeract', name = 'Tezeract', brand = 'Pegassi', price = 220000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'thrax', name = 'Thrax', brand = 'Truffade', price = 180000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tigon', name = 'Tigon', brand = 'Lampadati', price = 240000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'turismor', name = 'Turismo R', brand = 'Grotti', price = 140000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tyrant', name = 'Tyrant', brand = 'Överflöd', price = 2100000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tyrus', name = 'Tyrus', brand = 'Progen', price = 230000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'vacca', name = 'Vacca', brand = 'Pegassi', price = 105000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'vagner', name = 'Vagner', brand = 'Dewbauchee', price = 1660000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'voltic', name = 'Voltic', brand = 'Coil', price = 120000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'xa21', name = 'XA-21', brand = 'Ocelot', price = 180000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'zentorno', name = 'Zentorno', brand = 'Pegassi', price = 340000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'zorrusso', name = 'Zorrusso', brand = 'Pegassi', price = 277000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'ignus', name = 'Ignus', brand = 'Pegassi', price = 1120000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'zeno', name = 'Zeno', brand = 'Överflöd', price = 1350000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'deveste', name = 'Deveste', brand = 'Principe', price = 234000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'lm87', name = 'LM87', brand = 'Benefactor', price = 155000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'torero2', name = 'Torero XO', brand = 'Pegassi', price = 245000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'entity3', name = 'Entity MT', brand = 'Overflod', price = 200000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'virtue', name = 'Virtue', brand = 'Ocelot', price = 72000, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'turismo3', name = 'Turismo Omaggio', brand = 'Grotti', price = 284500, category = 'super', shop = { 'cardealer', 'fmpdm', 'fussion' } },
-- Motorcycles (8)
{ model = 'akuma', name = 'Akuma', brand = 'Dinka', price = 55000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'avarus', name = 'Avarus', brand = 'LCC', price = 20000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'bagger', name = 'Bagger', brand = 'WMC', price = 13500, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'bati', name = 'Bati 801', brand = 'Pegassi', price = 24000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'bati2', name = 'Bati 801RR', brand = 'Pegassi', price = 19000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'bf400', name = 'BF400', brand = 'Nagasaki', price = 22000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'carbonrs', name = 'Carbon RS', brand = 'Nagasaki', price = 22000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'chimera', name = 'Chimera', brand = 'Nagasaki', price = 21000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'cliffhanger', name = 'Cliffhanger', brand = 'Western', price = 28500, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'daemon', name = 'Daemon', brand = 'WMC', price = 14000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'daemon2', name = 'Daemon Custom', brand = 'Western', price = 23000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'defiler', name = 'Defiler', brand = 'Shitzu', price = 30000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'deathbike', name = 'Deathbike Apocalypse', brand = 'Deathbike', price = 30000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'diablous', name = 'Diablous', brand = 'Principe', price = 30000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'diablous2', name = 'Diablous Custom', brand = 'Principe', price = 38000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'double', name = 'Double-T', brand = 'Dinka', price = 28000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'enduro', name = 'Enduro', brand = 'Dinka', price = 5500, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'esskey', name = 'Esskey', brand = 'Pegassi', price = 12000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'faggio', name = 'Faggio Sport', brand = 'Pegassi', price = 2000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'faggio2', name = 'Faggio', brand = 'Pegassi', price = 1900, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'faggio3', name = 'Faggio Mod', brand = 'Pegassi', price = 2500, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'fcr', name = 'FCR 1000', brand = 'Pegassi', price = 5000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'fcr2', name = 'FCR 1000 Custom', brand = 'Pegassi', price = 19000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'gargoyle', name = 'Gargoyle', brand = 'Western', price = 32000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'hakuchou', name = 'Hakuchou', brand = 'Shitzu', price = 17000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'hakuchou2', name = 'Hakuchou Drag', brand = 'Shitzu', price = 45000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'hexer', name = 'Hexer', brand = 'LCC', price = 16000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'innovation', name = 'Innovation', brand = 'LLC', price = 33500, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'lectro', name = 'Lectro', brand = 'Principe', price = 28000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'manchez', name = 'Manchez', brand = 'Maibatsu', price = 8300, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'nemesis', name = 'Nemesis', brand = 'Principe', price = 20000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'nightblade', name = 'Nightblade', brand = 'WMC', price = 23000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'pcj', name = 'PCJ-600', brand = 'Shitzu', price = 15000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'ratbike', name = 'Rat Bike', brand = 'Western', price = 3000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'ruffian', name = 'Ruffian', brand = 'Pegassi', price = 25000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sanchez', name = 'Sanchez Livery', brand = 'Maibatsu', price = 5300, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sanchez2', name = 'Sanchez', brand = 'Maibatsu', price = 5300, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sanctus', name = 'Sanctus', brand = 'LCC', price = 35000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sovereign', name = 'Sovereign', brand = 'WMC', price = 8000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'stryder', name = 'Stryder', brand = 'Nagasaki', price = 50000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'thrust', name = 'Thrust', brand = 'Dinka', price = 22000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'vader', name = 'Vader', brand = 'Shitzu', price = 7200, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'vindicator', name = 'Vindicator', brand = 'Dinka', price = 19000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'vortex', name = 'Vortex', brand = 'Pegassi', price = 31000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'wolfsbane', name = 'Wolfsbane', brand = 'Western', price = 14000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'zombiea', name = 'Zombie Bobber', brand = 'Western', price = 28000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'zombieb', name = 'Zombie Chopper', brand = 'Western', price = 27000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'manchez2', name = 'Manchez Scout', brand = 'Maibatsu', price = 14000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'shinobi', name = 'Shinobi', brand = 'Nagasaki', price = 25000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'reever', name = 'Reever', brand = 'Western', price = 25000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'manchez3', name = 'Manchez Scout Classic', brand = 'Maibatsu', price = 15000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'powersurge', name = 'Powersurge', brand = 'Western', price = 7000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
-- Off-Road (9)
{ model = 'bfinjection', name = 'Bf Injection', brand = 'Annis', price = 9000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'bifta', name = 'Bifta', brand = 'Annis', price = 15500, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'blazer', name = 'Blazer', brand = 'Annis', price = 7500, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'blazer2', name = 'Blazer Lifeguard', brand = 'Nagasaki', price = 7000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'blazer3', name = 'Blazer Hot Rod', brand = 'Nagasaki', price = 7000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'blazer4', name = 'Blazer Sport', brand = 'Annis', price = 9250, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'blazer5', name = 'Blazer Aqua', brand = 'Nagasaki', price = 40000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'brawler', name = 'Brawler', brand = 'Annis', price = 40000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'caracara', name = 'Caracara', brand = 'Vapid', price = 60000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'caracara2', name = 'Caracara 4x4', brand = 'Vapid', price = 80000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'dubsta3', name = 'Dubsta 6x6', brand = 'Annis', price = 34000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'dune', name = 'Dune Buggy', brand = 'Annis', price = 14000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'everon', name = 'Everon', brand = 'Karin', price = 60000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'freecrawler', name = 'Freecrawler', brand = 'Canis', price = 24000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'hellion', name = 'Hellion', brand = 'Annis', price = 38000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'kalahari', name = 'Kalahari', brand = 'Canis', price = 14000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'kamacho', name = 'Kamacho', brand = 'Canis', price = 50000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'mesa3', name = 'Mesa Merryweather', brand = 'Canis', price = 400000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'outlaw', name = 'Outlaw', brand = 'Nagasaki', price = 15000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'rancherxl', name = 'Rancher XL', brand = 'Declasse', price = 24000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'rebel2', name = 'Rebel', brand = 'Vapid', price = 20000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'riata', name = 'Riata', brand = 'Vapid', price = 380000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sandking', name = 'Sandking XL', brand = 'Vapid', price = 25000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sandking2', name = 'Sandking SWB', brand = 'Vapid', price = 38000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'trophytruck', name = 'Trophy Truck', brand = 'Vapid', price = 60000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'trophytruck2', name = 'Desert Raid', brand = 'Vapid', price = 80000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'vagrant', name = 'Vagrant', brand = 'Maxwell', price = 50000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'verus', name = 'Verus', brand = 'Dinka', price = 20000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'winky', name = 'Winky', brand = 'Vapid', price = 10000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'yosemite3', name = 'Yosemite Rancher', brand = 'Declasse', price = 425000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'mesa', name = 'Mesa', brand = 'Canis', price = 12000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'ratel', name = 'Ratel', brand = 'Vapid', price = 199000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'l35', name = 'Walton L35', brand = 'Declasse', price = 167000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'monstrociti', name = 'MonstroCiti', brand = 'Maibatsu', price = 48000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'draugur', name = 'Draugur', brand = 'Declasse', price = 99000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'terminus', name = 'Terminus', brand = 'Canis', price = 187750, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'fussion' } },
-- Industrial (10)
{ model = 'mixer2', name = 'Mixer II', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'rubble', name = 'Rubble', brand = 'Jobuilt', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'mixer', name = 'Mixer', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'flatbed', name = 'Flatbed Truck', brand = 'MTL', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'dump', name = 'Dump Truck', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'bulldozer', name = 'Dozer', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'handler', name = 'Dock Handler', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'cutter', name = 'Cutter', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
-- Utility (11)
{ model = 'slamtruck', name = 'Slam Truck', brand = 'Vapid', price = 100000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'caddy3', name = 'Caddy (Bunker)', brand = 'Nagasaki', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'caddy2', name = 'Caddy (Civilian)', brand = 'Nagasaki', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'caddy3', name = 'Caddy (Golf)', brand = 'Nagasaki', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'utillitruck', name = 'Utility Truck (Cherry Picker)', brand = 'Brute', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'utillitruck2', name = 'Utility Truck (Van)', brand = 'Brute', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'utillitruck3', name = 'Utility Truck (Contender)', brand = 'Vapid', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tractor', name = 'Tractor', brand = 'Stanley', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tractor2', name = 'Fieldmaster', brand = 'Stanley', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tractor3', name = 'Fieldmaster', brand = 'Stanley', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'towtruck', name = 'Tow Truck (Large)', brand = 'Vapid', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'towtruck2', name = 'Tow Truck (Small)', brand = 'Vapid', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'scrap', name = 'Scrap Truck', brand = 'Vapid', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'ripley', name = 'Ripley', brand = 'HVY', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'mower', name = 'Lawn Mower', brand = 'Jacksheepe', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'forklift', name = 'Forklift', brand = 'HVY', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'docktug', name = 'Docktug', brand = 'HVY', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'airtug', name = 'Airtug', brand = 'HVY', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'trailers5', name = 'Trailer (Christmas)', brand = 'Unknown', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tvtrailer2', name = 'Trailer (TV)', brand = 'Unknown', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'fussion' } },
-- Vans (12)
{ model = 'bison', name = 'Bison', brand = 'Bravado', price = 18000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'bobcatxl', name = 'Bobcat XL Open', brand = 'Vapid', price = 13500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'burrito3', name = 'Burrito', brand = 'Declasse', price = 4000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'gburrito2', name = 'Burrito Custom', brand = 'Declasse', price = 11500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'rumpo', name = 'Rumpo', brand = 'Bravado', price = 9000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'journey', name = 'Journey', brand = 'Zirconium', price = 6500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'minivan', name = 'Minivan', brand = 'Vapid', price = 7000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'minivan2', name = 'Minivan Custom', brand = 'Vapid', price = 10000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'paradise', name = 'Paradise', brand = 'Bravado', price = 9000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'rumpo3', name = 'Rumpo Custom', brand = 'Bravado', price = 19500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'speedo', name = 'Speedo', brand = 'Vapid', price = 10000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'surfer', name = 'Surfer', brand = 'BF', price = 9000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'youga3', name = 'Youga Classic 4x4', brand = 'Bravado', price = 15000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'youga', name = 'Youga', brand = 'Bravado', price = 8000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'youga2', name = 'Youga Classic', brand = 'Bravado', price = 14500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'youga4', name = 'Youga Custom', brand = 'Bravado', price = 85000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'moonbeam', name = 'Moonbeam', brand = 'Declasse', price = 13000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'moonbeam2', name = 'Moonbeam Custom', brand = 'Declasse', price = 15000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'boxville', name = 'Boxville LSDWP', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'boxville2', name = 'Boxville Go Postal', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'boxville3', name = 'Boxville Humane Labs', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'boxville4', name = 'Boxville Post OP', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'pony', name = 'Pony', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'pony2', name = 'Pony (Smoke on the water)', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'journey2', name = 'Journey II', brand = 'Zirconium', price = 7000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'surfer3', name = 'Surfer Custom', brand = 'BF', price = 15000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'speedo5', name = 'Speedo Custom', brand = 'Vapid', price = 238000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'taco', name = 'Taco Truck', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'boxville6', name = 'Boxville (LSDS)', brand = 'Brute', price = 47500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sadler', name = 'Sadler', brand = 'Vapid', price = 20000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'fussion' } },
-- Cycles (13)
{ model = 'bmx', name = 'BMX', brand = 'Bike', price = 160, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'cruiser', name = 'Cruiser', brand = 'Bike', price = 510, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'fixter', name = 'Fixter', brand = 'Bike', price = 225, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'scorcher', name = 'Scorcher', brand = 'Bike', price = 280, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tribike', name = 'Whippet Race Bike', brand = 'Bike', price = 500, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tribike2', name = 'Endurex Race Bike', brand = 'Bike', price = 700, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tribike3', name = 'Tri-Cycles Race Bike', brand = 'Bike', price = 520, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'inductor', name = 'Inductor', brand = 'Coil', price = 5000, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'inductor2', name = 'Junk Energy Inductor', brand = 'Coil', price = 5000, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'fussion' } },
-- Service (17)
{ model = 'brickade2', name = 'Brickade 6x6', brand = 'MTL', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'pbus2', name = 'Festival Bus', brand = 'Unknown', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'wastelander', name = 'Wastelander', brand = 'MTL', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'metrotrain', name = 'Metro Train', brand = 'Unknown', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'freight', name = 'Freight Train', brand = 'Unknown', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'cablecar', name = 'Cable Car', brand = 'Unknown', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'trash', name = 'Trashmaster', brand = 'JoBuilt', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'trash2', name = 'Trashmaster', brand = 'JoBuilt', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tourbus', name = 'Tour Bus', brand = 'Brute', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'taxi', name = 'Taxi', brand = 'Vapid', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'rentalbus', name = 'Rental Shuttle Bus', brand = 'Brute', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'coach', name = 'Dashound', brand = 'Brute', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'bus', name = 'Bus', brand = 'Brute', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'airbus', name = 'Airport Bus', brand = 'Brute', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'fussion' } },
-- Commercial (20)
{ model = 'cerberus', name = 'Apocalypse Cerberus', brand = 'MTL', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'pounder2', name = 'Pounder Custom', brand = 'MTL', price = 55000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'mule4', name = 'Mule Custom', brand = 'Maibatsu', price = 40000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'phantom3', name = 'Phantom Custom', brand = 'Jobuilt', price = 110000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'hauler2', name = 'Hauler Custom', brand = 'Jobuilt', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'phantom2', name = 'Phantom Wedge', brand = 'Jobuilt', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'mule5', name = 'Mule (Heist)', brand = 'Maibatsu', price = 40000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'stockade', name = 'Stockade', brand = 'Brute', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'pounder', name = 'Pounder', brand = 'MTL', price = 55000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'phantom', name = 'Phantom', brand = 'Jobuilt', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'packer', name = 'Packer', brand = 'MTL', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'mule', name = 'Mule', brand = 'Maibatsu', price = 40000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'hauler', name = 'Hauler', brand = 'Jobuilt', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'biff', name = 'Biff', brand = 'Brute', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'phantom4', name = 'Phantom (Christmas)', brand = 'Vapid', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'fussion' } },
-- Open Wheel (22)
{ model = 'openwheel2', name = 'DR1', brand = 'Declasse', price = 100000, category = 'openwheel', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'openwheel1', name = 'BR8', brand = 'Benefactor', price = 100000, category = 'openwheel', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'formula2', name = 'R88', brand = 'Ocelot', price = 100000, category = 'openwheel', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'formula', name = 'PR4', brand = 'Progen', price = 100000, category = 'openwheel', shop = { 'cardealer', 'fmpdm', 'fussion' } },
-- Import Bikes
{ model = 'zombiev8', name = 'Zombie V8', brand = 'Western', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tt750', name = 'TT750', brand = 'Dinka', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'supersanchez', name = 'Supersanchez 850', brand = 'Maibatsu', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'starfighter', name = 'Starfighter', brand = 'LCC', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'xp1', name = 'XP1', brand = 'Nagasaki', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'whiplash', name = 'Starfighter', brand = 'Dinka', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sombrero', name = 'Sombrero', brand = 'Western', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'slayer', name = 'Slayer', brand = 'Western', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'shinobir', name = 'Shinboi R', brand = 'Nagasaki', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'sg1150', name = 'SG1150', brand = 'Übermacht', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'saltflat', name = 'Saltflat', brand = 'Maxwell', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'nightblade2', name = 'Nightblade Classic', brand = 'Western', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'lpbagger2', name = 'Santacruz', brand = 'LCC', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'lpbagger', name = 'Marabunta', brand = 'LCC', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'krust', name = 'Krust', brand = 'LCC', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'hiroshima', name = 'Hiroshima', brand = 'Nagasaki', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'hellspawn', name = 'Starfighter', brand = 'LCC', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'gobi600', name = 'Gobi 600', brand = 'Nagsaki', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'fullback', name = 'Fullback', brand = 'Western', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'ebduromk2', name = 'Enduro MK2', brand = 'Dinka', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'chesterfield', name = 'Chesterfield', brand = 'Maxwell', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'brt600', name = 'BRT 600', brand = 'Nagsaki', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'bf900', name = 'BF 900', brand = 'Nagasaki', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
{ model = 'tunak', name = 'Tunak', brand = 'Raji', price = 100000, category = 'importbikes', shop = { 'cardealer', 'fmpdm', 'fussion' } },
-- Trucks
{ model = 'mule2', name = 'Mule', brand = 'Maibatsu', price = 40000, category = 'truck', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'mule3', name = 'Mule', brand = 'Maibatsu', price = 40000, category = 'truck', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'benson', name = 'Benson', brand = 'Vapid', price = 55000, category = 'truck', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'scrap', name = 'Scrap', brand = 'Vapid', price = 55000, category = 'truck', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'tractor2', name = 'Fieldmaster', brand = 'Stanley', price = 30000, category = 'truck', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'tiptruck2', name = 'Tipper II', brand = 'Brute', price = 30000, category = 'truck', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'tiptruck', name = 'Tipper', brand = 'Brute', price = 30000, category = 'truck', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'brickade', name = 'Brickade', brand = 'MTL', price = 30000, category = 'truck', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'guardian', name = 'Guardian', brand = 'Vapid', price = 30000, category = 'truck', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'camper', name = 'Camper', brand = 'Brute', price = 30000, category = 'truck', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'rallytruck', name = 'Dune', brand = 'MTL', price = 30000, category = 'truck', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'vetir', name = 'Vetir', brand = 'HVY', price = 30000, category = 'truck', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'barracks', name = 'Barracks', brand = 'HVY', price = 30000, category = 'truck', shop = { 'trucks', 'fmpdm', 'fussion' } },
-- Import Trucks
{ model = 'brickadeb', name = 'Brickader Boxtruck', brand = 'MTL', price = 80000, category = 'importtrucks', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'brickadef', name = 'Brickader Flatbed', brand = 'MTL', price = 80000, category = 'importtrucks', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'nmule', name = 'Mule 4x4', brand = 'Maibatsu', price = 55000, category = 'importtrucks', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'gbvoyagerb2', name = 'Voyager Boxtruck', brand = 'MTL', price = 55000, category = 'importtrucks', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'mulef', name = 'Mule Flatbed', brand = 'Maibatsu', price = 55000, category = 'importtrucks', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'brickaderv', name = 'Brickader Camper', brand = 'MTL', price = 55000, category = 'importtrucks', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'sandroamer', name = 'Sandroamer Camper', brand = 'Vapid', price = 55000, category = 'importtrucks', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'sandkingrv', name = 'Sandking Camper', brand = 'Vapid', price = 55000, category = 'importtrucks', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'guardianrv', name = 'Guardian Camper', brand = 'Vapid', price = 55000, category = 'importtrucks', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'cararv', name = 'Caracara Camper', brand = 'Vapid', price = 55000, category = 'importtrucks', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'galaxyroamer', name = 'Galaxy Roamer', brand = 'Brute', price = 55000, category = 'importtrucks', shop = { 'trucks', 'fmpdm', 'fussion' } },
{ model = 'pakunek', name = 'Pakunek', brand = 'Rune', price = 55000, category = 'importtrucks', shop = { 'trucks', 'fmpdm', 'fussion' } },
-- Trailer
{ model = 'boattrailer', name = 'Bootsanhänger', brand = 'HVY', price = 8000, category = 'trailer', shop = { 'trucks'} },
-- Exklusiv
{ model = 'rebla', name = 'Rebla GTS', brand = 'Übermacht', price = 21000, category = 'exklusiv', shop = { 'fussion' } },
{ model = 'terminus', name = 'Terminus', brand = 'Canis', price = 187750, category = 'exklusiv', shop = { 'fussion' } },
{ model = 'vigero3', name = 'Vigero ZX Convertible', brand = 'Declasse', price = 229500, category = 'exklusiv', shop = { 'fussion' } },
{ model = 'vigero2', name = 'Vigero ZX', brand = 'Declasse', price = 105000, category = 'exklusiv', shop = { 'fussion' } },
{ model = 'dominator9', name = 'Dominator GT', brand = 'Vapid', price = 219500, category = 'exklusiv', shop = { 'fussion' } },
-- Import Cars
{ model = 'gb811s2', name = '811s', brand = 'Pfister', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbadmiral', name = 'Admiral', brand = 'Dundreary', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbargento7f', name = 'Argento 7F', brand = 'Obey', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbbanshees', name = 'Banshee S', brand = 'Bravado', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbbisonhf', name = 'Bison Hellfire', brand = 'Bravado', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbbisonstx', name = 'Bison STX', brand = 'Bravado', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbbriosof', name = 'Brioso F', brand = 'Grotti', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbcometcl', name = 'Comet Classic', brand = 'Pfister', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbcomets1t', name = 'Comet S1T', brand = 'Pfister', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbcomets2r', name = 'Comet S2R', brand = 'Pfsiter', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbcomets2rc', name = 'Comet S2R Cabrio', brand = 'Pfister', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbdominatorgsx',name = 'Domintaor GSX', brand = 'Vapid', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbeon', name = 'Eon', brand = 'Coil', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbesperta', name = 'Esperta', brand = 'Bravado', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbhades', name = 'Hades', brand = 'Dundreary', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbirisz', name = 'Iris Z', brand = 'Bollokan', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbissimetro', name = 'Metro', brand = 'Weeny', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbkomodagt', name = 'Komoda GT', brand = 'Lampadati', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gblod4', name = 'LOD 4', brand = 'Coil', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbmilano', name = 'Milano', brand = 'Grotti', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbmogulrs', name = 'Mogul RS', brand = 'Karin', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbmojave', name = 'Mojave', brand = 'Karin', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbneonct', name = 'Neon CT', brand = 'Pfister', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbnexusrr', name = 'Nexus RR', brand = 'Dinka', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbprospero', name = 'Prospero', brand = 'Pegassi', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbraidillon', name = 'Raidillon', brand = 'Toundra', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbsapphire', name = 'Sapphire', brand = 'Enus', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbschlagenr', name = 'Schlagen R', brand = 'Benefactor', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbschlagensp', name = 'Schlagen SP', brand = 'Benefactor', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbronin', name = 'Ronin', brand = 'Emperor', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbschrauber', name = 'Schrauber', brand = 'Benefactor', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbschwartzers', name = 'Schwartzer S', brand = 'Benefactor', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbsentinelgts', name = 'Sentinel GTS', brand = 'Übermacht', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbsidewinder', name = 'Sidewinder', brand = 'Maxwell', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbsolace', name = 'Solace', brand = 'Dewbauchee', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbstanierle', name = 'Stanier LE', brand = 'Vapid', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbstarlight', name = 'Starlight', brand = 'Maxwell', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbsolacev', name = 'Solace V', brand = 'Dewbauchee', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbsultanrsx', name = 'Sultan RSX', brand = 'Karin', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbtahomagt', name = 'Tahoma GT', brand = 'Declasse', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbtenfr', name = '10F R', brand = 'Obey', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbtr3s', name = 'TR3S', brand = 'Progen', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbturismogt', name = 'Turismo GT', brand = 'Grotti', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbvivant', name = 'Vivant', brand = 'Bordeaux', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gbvivantgrb', name = 'Vivant GRB', brand = 'Bordeaux', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'razor', name = 'Razor', brand = 'Vapid', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'zr380c', name = 'ZR380 C', brand = 'Annis', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'zr380s', name = 'ZR380', brand = 'Vapid', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'zionks', name = 'Zion KS', brand = 'Übermacht', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'urban', name = 'Urban', brand = 'Dinka', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'turismoo', name = 'Turismo Omigaio', brand = 'Grotti', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'sunrise1', name = 'Sunrise R', brand = 'Maibatsu', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'elegyrh7', name = 'Elegy RH7', brand = 'Annis', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'elegyrh6', name = 'Elegy RH6', brand = 'Annis', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'turismoo', name = 'Turismo Omigaio', brand = 'Grotti', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'picadorl', name = 'Picador L', brand = 'Cheval', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'picadorld', name = 'Picador LD', brand = 'Cheval', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'nebulaw', name = 'Nebula Wagon', brand = 'Grotti', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'kriegerc', name = 'Krieger C', brand = 'Benefactor', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'glendaleks', name = 'Glendale KS', brand = 'Benefactor', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gauntlets', name = 'Gauntlet S', brand = 'Benefactor', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'domc', name = 'Dominator Classic', brand = 'Vapid', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'clubgtr', name = 'Club GTR', brand = 'Bürgerfahrzeug', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'callista', name = 'Callist', brand = 'Pfister', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'ardent3', name = 'Ardent', brand = 'Ocelot', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'vorstand', name = 'Vorstand', brand = 'Übermacht', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'nsandstorm', name = 'Sandstorm D205', brand = 'Vapid', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'nsandstorm2', name = 'Sandstorm D205 XL', brand = 'Vapid', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'hellenstorm', name = 'Sandstorm D205 Hellenbach', brand = 'Vapid', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'nsandstorm3', name = 'Sandstorm D205 SWB', brand = 'Vapid', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'imperialpas', name = 'Imperial Passenger', brand = 'Benefactor', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'ncavalcade', name = 'Cavalcade 2020', brand = 'Declasse', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'nriata', name = 'Riata', brand = 'Vapid', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'buffalopt', name = 'Buffal STX Widebody', brand = 'Bravado', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'carrion', name = 'Carrion', brand = 'Bürgerfahrzeug', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'baikal', name = 'Baikal', brand = 'Bürgerfahrzeug', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'quail', name = 'Quail', brand = 'Dewbauchee', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'quailv8', name = 'Quail V8', brand = 'Dewbauchee', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'rio', name = 'Rio', brand = 'Bürgerfahrzeug', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'altior', name = 'Altior', brand = 'Emperor', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gardenshed', name = 'Gardenshed', brand = 'Bordeaux', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gardenshed2', name = 'Gardenshed 2', brand = 'Bordeaux', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'gardenshed3', name = 'Gardenshed 3', brand = 'Bordeaux', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'rosary', name = 'Rosary', brand = 'Vapid', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'starlett', name = 'Starlett', brand = 'Bordeaux', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'chopin', name = 'Chopin', brand = 'Rune', price = 80000, category = 'importcars', shop = { 'fussion' } },
{ model = 'tamworth', name = 'Tamworth', brand = 'Weeny', price = 80000, category = 'importcars', shop = { 'fussion' } },
}
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,60 +0,0 @@
Config.dealerships = Config.dealerships or {}
Config.dealerships.fussion = { -- Dealership ID, NEEDS TO BE THE SAME AS THE JOB!!!
enabled = true, -- true or false to enable or disable the dealership
label = "Fussion Autos", -- Dealership label
logo = 'https://i.ibb.co/nkBN3bs/logo.png', -- Dealership logo that'll show on UI
job = 'fussion', -- 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 = false, -- If true players will be able to buy the vehicles on the catalogue
allowChangeVehicle = false, -- 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(-512.9517, -595.8292, 29.2981, 171.7394), -- Test drive spawn coords
truck = 'packer', -- The truck used on importation
trailer = 'tr4', -- The trailer used on importation
truckSpawn = vec4(-492.2509, -623.5234, 30.1750, 274.1733), -- Importation truck spawn coords
buySpawn = vec4(-551.9636, -598.8409, 33.6170, 221.2068), -- 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 = false, 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(-587.4727, -585.7220, 40.3818), radius = 0.25, includeBossMenu = true },
},
catalogues = { -- The catalogues to the players see the vehicle and emplooyes change the vehicle on showrrom
{ coords = vec3(-532.6084, -616.6392, 40.0757), radius = 0.25, vehicleCoords = vec4(-549.9257, -615.4942, 39.2745, 3.3192), vehicle = 'quailv8', vehicleColor = 59 },
{ coords = vec3(-547.9743, -615.4094, 40.8466), radius = 0.25, vehicleCoords = vec4(-546.4588, -615.7612, 39.2745, 1.0162), vehicle = 'gardenshed', vehicleColor = 0 },
{ coords = vec3(-544.8010, -615.1997, 40.5447), radius = 0.25, vehicleCoords = vec4(-542.9736, -615.5190, 39.2745, 1.7699), vehicle = 'buffalopt', vehicleColor = 78 },
{ coords = vec3(-541.0333, -615.2420, 40.5937), radius = 0.25, vehicleCoords = vec4(-539.6726, -615.5486, 39.2745, 5.4542), vehicle = 'gbeon', vehicleColor = 4 },
{ coords = vec3(-537.7904, -615.2480, 40.6229), radius = 0.25, vehicleCoords = vec4(-536.2221, -615.3785, 39.2745, 3.8185), vehicle = 'gbissimetro', vehicleColor = 54 },
{ coords = vec3(-534.2234, -615.2454, 40.3614), radius = 0.25, vehicleCoords = vec4(-532.7957, -615.6952, 39.2745, 355.9257), vehicle = 'gbnexusrr', vehicleColor = 0 },
{ coords = vec3(-553.7078, -583.3445, 30.9908), radius = 0.25, vehicleCoords = vec4(-550.8114, -585.5099, 33.7664, 188.6177), vehicle = 'gbschrauber', vehicleColor = 71 },
{ coords = vec3(-547.4654, -583.4622, 35.0894), radius = 0.25, vehicleCoords = vec4(-544.1174, -585.4678, 33.7654, 182.2685), vehicle = 'gbsultanrsx', vehicleColor = 4 },
{ coords = vec3(-541.0164, -583.4198, 35.0913), radius = 0.25, vehicleCoords = vec4(-538.3497, -585.7647, 33.7645, 178.0418), vehicle = 'zr380s', vehicleColor = 73 },
{ coords = vec3(-535.6596, -583.4373, 35.1646), radius = 0.25, vehicleCoords = vec4(-532.4798, -584.9902, 33.7636, 182.8758), vehicle = 'elegyrh7', vehicleColor = 4 },
{ coords = vec3(-529.4458, -583.4198, 35.0893), radius = 0.25, vehicleCoords = vec4(-526.1973, -585.8316, 33.7626, 177.7538), vehicle = 'nsandstorm', vehicleColor = 70 },
{ coords = vec3(-523.6227, -583.3900, 35.1522), radius = 0.25, vehicleCoords = vec4(-521.3397, -585.5446, 33.7619, 180.4578), vehicle = 'nriata', vehicleColor = 4 },
{ coords = vec3(-514.4501, -592.5050, 34.1424), radius = 0.25, vehicleCoords = vec4(-514.4501, -592.5050, 34.1424, 88.5334), vehicle = 'gbschlagenr', vehicleColor = 76 },
{ coords = vec3(-514.1981, -598.2437, 34.1424), radius = 0.25, vehicleCoords = vec4(-514.1981, -598.2437, 34.1424, 90.3686), vehicle = 'gbsolace', vehicleColor = 4 },
{ coords = vec3(-514.2639, -603.1285, 34.1424), radius = 0.25, vehicleCoords = vec4(-514.2639, -603.1285, 34.1424, 96.3925), vehicle = 'gbtr3s', vehicleColor = 73 },
{ coords = vec3(-513.5342, -608.7974, 34.1425), radius = 0.25, vehicleCoords = vec4(-513.5342, -608.7974, 34.1425, 89.4561), vehicle = 'gb811s2', vehicleColor = 4 },
{ coords = vec3(-555.9556, -589.4691, 40.6946), radius = 0.25, vehicleCoords = vec4(-555.3364, -585.5059, 39.2745, 220.6161), vehicle = 'adder', vehicleColor = 73 },
{ coords = vec3(-548.9539, -589.3450, 40.4064), radius = 0.25, vehicleCoords = vec4(-548.8506, -585.3450, 39.2745, 214.1314), vehicle = 'tyrus', vehicleColor = 10 },
{ coords = vec3(-541.7648, -589.3937, 40.4221), radius = 0.25, vehicleCoords = vec4(-541.4133, -585.2802, 39.2745, 213.1912), vehicle = 'zeno', vehicleColor = 76 },
{ coords = vec3(-535.0157, -589.3689, 40.4999), radius = 0.25, vehicleCoords = vec4(-534.5933, -585.4171, 39.2745, 214.8601), vehicle = 'krieger', vehicleColor = 6 },
{ coords = vec3(-527.6953, -589.2736, 40.4893), radius = 0.25, vehicleCoords = vec4(-527.5058, -585.4001, 39.2745, 215.8088), vehicle = 'fmj', vehicleColor = 77 },
{ coords = vec3(-520.6314, -589.4058, 40.5970), radius = 0.25, vehicleCoords = vec4(-520.4396, -585.2589, 39.2745, 217.4469), vehicle = 'le7b', vehicleColor = 8 },
},
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 = 'Import Autos', id = 'importcars' },
{ label = 'Supersport', id = 'super' },
{ label = 'Exklusiv', id = 'exklusiv' },
{ label = 'Klassik', id = 'classics' },
},
pickups = {
vec4(1201.35, -3187.03, 5.98, 175.35)
}
}

View file

@ -1,44 +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 = 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)
useStock = false, -- When using job = false this will be ignored
allowBuyCatalogue = true, -- If true players will be able to buy the vehicles on the catalogue
allowChangeVehicle = false, -- 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(-18.6879, -1109.9081, 25.6721, 162.7105), -- 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(-31.2584, -1089.9768, 25.4222, 331.1034), -- 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 = false, 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(-44.9793, -1101.1768, 26.4150), radius = 0.3, vehicleCoords = vec4(-47.1362, -1101.3213, 25.4224, 249.8032), vehicle = 'premier', vehicleColor = 54 },
{ coords = vec3(-48.1848, -1094.3549, 26.4005), radius = 0.3, vehicleCoords = vec4(-47.6907, -1092.1736, 25.4223, 191.9820), vehicle = 'club', vehicleColor = 0 },
{ coords = vec3(-41.5470, -1097.1390, 26.4071), radius = 0.3, vehicleCoords = vec4(-41.6594, -1094.7953, 25.4223, 207.8178), vehicle = 'chavosv6', vehicleColor = 73 },
{ coords = vec3(-40.0641, -1100.7145, 26.3959), radius = 0.3, vehicleCoords = vec4(-37.3014, -1101.6620, 25.4223, 73.1960), vehicle = 'baller2', vehicleColor = 6 },
},
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 = 'Offroad', id = 'offroad' },
},
pickups = {
vec4(1201.35, -3187.03, 5.98, 175.35)
}
}

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 = 'Motorcycle Dealer', -- 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)
useStock = false, -- When using job = false this will be ignored
allowBuyCatalogue = true, -- If true players will be able to buy the vehicles on the catalogue
allowChangeVehicle = false, -- 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(275.5343, -1166.8954, 28.0704, 12.1783), -- 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 = false, 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(292.7473, -1152.1406, 29.4255), radius = 0.3, vehicleCoords = vec4(292.1597, -1150.7396, 28.4255, 208.3197), vehicle = 'shinobir', vehicleColor = 54 },
{ coords = vec3(295.4255, -1152.9888, 29.4255), radius = 0.3, vehicleCoords = vec4(294.4805, -1150.6599, 28.4255, 214.4010), vehicle = 'sombrero', vehicleColor = 8 },
{ coords = vec3(297.3023, -1153.2100, 29.4255), radius = 0.3, vehicleCoords = vec4(296.3043, -1150.6807, 28.4255, 208.9877), vehicle = 'reever', vehicleColor = 73 },
{ coords = vec3(299.5537, -1154.1748, 29.4255), radius = 0.3, vehicleCoords = vec4(299.9890, -1153.6533, 28.4255, 201.5733), vehicle = 'zombieb', vehicleColor = 4 },
{ coords = vec3(302.1597, -1157.3463, 29.4255), radius = 0.3, vehicleCoords = vec4(303.2498, -1156.4666, 29.4255, 209.1806), vehicle = 'sanctus', vehicleColor = 6 },
},
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 = 'Import Motorräder', id = 'importbikes' },
{ label = 'Motorräder', id = 'motorcycles' },
},
pickups = {
vec4(1201.35, -3187.03, 5.98, 175.35)
}
}

View file

@ -1,42 +0,0 @@
Config.dealerships = Config.dealerships or {}
Config.dealerships.trucks = { -- Dealership ID, NEEDS TO BE THE SAME AS THE JOB!!!
enabled = true, -- true or false to enable or disable the dealership
label = 'Truckdealer', -- 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)
useStock = false, -- When using job = false this will be ignored
allowBuyCatalogue = true, -- If true players will be able to buy the vehicles on the catalogue
allowChangeVehicle = false, -- 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(973.2721, -2534.8442, 28.3020, 297.8227), -- 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(992.9500, -2544.4407, 28.3020, 358.8681), -- 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 = false, 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(1010.7226, -2494.6206, 28.2670), radius = 0.3, vehicleCoords = vec4(1013.9116, -2488.0178, 28.3045, 147.9044), vehicle = 'nmule', vehicleColor = 54 },
{ coords = vec3(1019.7201, -2497.9099, 28.4533), radius = 0.3, vehicleCoords = vec4(1022.3616, -2492.5332, 28.5080, 156.3460), vehicle = 'benson', vehicleColor = 8 },
},
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 = 'LKWS', id = 'truck' },
{ label = 'Import LKWS', id = 'importtrucks' },
{ label = 'Vans', id = 'vans' },
{ label = 'Anhänger', id = 'trailer' },
},
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": "Übersicht",
"target_dashboard_icon": "fas fa-laptop",
"target_management": "Chef-Menü",
"target_management_icon": "fas fa-user-tie",
"target_catalogue": "Katalog",
"target_catalogue_icon": "fas fa-laptop",
"target_vehicle_info": "%s %s - %s$",
"target_vehicle_info_icon": "fas fa-info",
"target_test_drive": "Probefahrt",
"target_test_drive_icon": "fas fa-car",
"target_buy_vehicle": "Fahrzeug kaufen",
"target_buy_vehicle_icon": "fas fa-dollar-sign",
"timer_testdrive_time": "Verbleibende Zeit",
"textui_pess_cancel_test_drive": "Probefahrt abbrechen",
"textui_press_deliver_vehicle": "Import abschließen",
"notify_cant_spawn_trailer": "Alle Abholplätze sind belegt!!",
"notify_cant_spawn_truck": "Der LKW-Abstellplatz ist belegt!!",
"notify_no_money": "Das Unternehmen hat nicht genug Geld!!",
"notify_pick_delivery": "Steig in den LKW draußen ein, folge dem GPS und hole den Fahrzeuganhänger ab!",
"notify_finish_delivery": "Fahre nun zum GPS-Ziel und schließe den Import ab!",
"notify_stock_added": "Bestand hinzugefügt!",
"notify_vehicle_bought": "Fahrzeug gekauft!",
"notify_no_money_player": "Du hast nicht genug Geld!",
"noitfy_no_id": "Keine ID angegeben!",
"notify_missing_fields": "Bitte fülle alle erforderlichen Felder aus!",
"notify_no_nearby": "Keine Spieler in der Nähe!",
"notify_vehicle_no_stock": "Dieses Fahrzeug ist nicht auf Lager!",
"notify_stock_removed": "Bestand entfernt!",
"notify_vehicle_sold": "Fahrzeug verkauft! Du hast %s$ verdient",
"blip_vehicle": "Fahrzeug abholen",
"blip_vehicle_finish": "Fahrzeug liefern",
"logs_vehicle_imported_title": "Fahrzeug importiert",
"logs_vehicle_imported_message": "Spieler **%s (%s)** hat das Fahrzeug **%s** für **%s** importiert. Neuer Bestand: **%s** bei der Firma **%s**",
"logs_vehicle_bought_title": "Fahrzeug gekauft",
"logs_vehicle_bought_message": "Spieler **%s (%s)** hat das Fahrzeug **%s** für **%s$** bei **%s** gekauft",
"logs_add_stock_command_title": "Bestand hinzufügen Befehl",
"logs_add_stock_command_message": "Spieler **%s (%s)** hat Bestand des Fahrzeugs **%s** auf **%s** bei **%s** erhöht",
"ui_all": "Alle",
"ui_stocked": "Auf Lager",
"ui_search": "Suchen",
"ui_vehicle_info_title": "Fahrzeuginformationen",
"ui_price": "Preis",
"ui_category": "Kategorie",
"ui_stock": "Bestand",
"ui_class": "Klasse",
"ui_weight": "Kofferraumgewicht",
"ui_seats": "Sitzplätze",
"ui_confirm_buy_vehicle_title": "Kauf bestätigen",
"ui_confirm_buy_vehicle_message": "Bist du sicher, dass du dieses Fahrzeug kaufen willst?",
"ui_cancel": "Abbrechen",
"ui_confirm": "Bestätigen",
"ui_buy": "Kaufen",
"ui_test_drive": "Probefahrt",
"ui_dealership_sells_title": "Verkäufe",
"ui_dealership_importations_title": "Importe",
"ui_date": "Datum",
"ui_employee": "Mitarbeiter",
"ui_customer": "Kunde",
"ui_plate": "Kennzeichen",
"ui_model": "Modell",
"ui_sells": "Verkäufe",
"ui_importations": "Importe",
"ui_confirm_sell_title": "Verkauf bestätigen",
"ui_player_id": "Spieler",
"ui_sell": "Verkaufen",
"ui_cancel_stock": "Bestand stornieren",
"ui_confirm_importation_title": "Import bestätigen",
"ui_confirm_importation_message": "Bist du sicher, dass du dieses Fahrzeug importieren willst?",
"ui_add_stock": "Bestand hinzufügen",
"ui_date_format": "%d.%m.%Y - %X",
"ui_change_vehicle": "Wechseln",
"command_add_stock_help": "Fahrzeugbestand für das Autohaus hinzufügen",
"command_add_stock_vehicle_name": "fahrzeug",
"command_add_stock_vehicle_help": "Spawn-Name des Fahrzeugs",
"command_add_stock_amount_name": "anzahl",
"command_add_stock_amount_help": "Menge des hinzuzufügenden Bestands",
"command_add_stock_dealership_name": "autohaus",
"command_add_stock_dealership_help": "Job des Autohauses für Bestandserhöhung",
"command_remove_stock_help": "Fahrzeugbestand für das Autohaus entfernen",
"command_remove_stock_vehicle_name": "fahrzeug",
"command_remove_stock_vehicle_help": "Spawn-Name des Fahrzeugs",
"command_remove_stock_amount_name": "anzahl",
"command_remove_stock_amount_help": "Menge des zu entfernenden Bestands",
"command_remove_stock_dealership_name": "autohaus",
"command_remove_stock_dealership_help": "Job des Autohauses für Bestandsentfernung"
}

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,120 +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)
elseif Config.banking == 'okokBanking' then
--exports['okokBanking']:AddMoney(account, amount)
MySQL.query("UPDATE bank_accounts SET account_balance = account_balance + ? WHERE account_name = ?", {amount, account})
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)
elseif Config.banking == 'okokBanking' then
--exports['okokBanking']:RemoveMoney(account, amount)
MySQL.query("UPDATE bank_accounts SET account_balance = account_balance - ? WHERE account_name = ?", {amount, account})
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)
elseif Config.banking == 'okokBanking' then
--value = exports['okokBanking']:GetAccount(account)
res = MySQL.query.await("SELECT account_balance FROM bank_accounts WHERE account_name = ?", {account})
value = res[1] and res[1].account_balance or 0
else
value = exports[Config.banking]:GetAccountBalance(account)
end
print(value)
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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

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>

View file

@ -934,6 +934,15 @@ CodeStudio.Products = {
itemPrice = 250,
itemInfo = "Ammo for rifles",
},
['stungun_ammo'] = {
itemName = "Taser Cardridge",
itemStock = 250,
itemPrice = 250,
itemInfo = "",
},
}
},

View file

Before

Width:  |  Height:  |  Size: 229 KiB

After

Width:  |  Height:  |  Size: 229 KiB

Before After
Before After

View file

@ -10171,6 +10171,16 @@ QBShared.Items = {
image = 'bucket_sponge2.png',
name = 'bucket_sponge2',
},
stungun_ammo = {
shouldClose = true,
type = 'item',
description = '',
weight = 100,
label = 'stungun_ammo',
unique = false,
useable = true,
image = 'stungun_ammo.png',
name = 'stungun_ammo',
},
}