forked from Simnation/Main
Nordi Scripts
This commit is contained in:
parent
1fe44ee3bb
commit
9264a37109
37 changed files with 2571 additions and 0 deletions
BIN
resources/[Developer]/[Nordi]/mt_dealerships/.fxap
Normal file
BIN
resources/[Developer]/[Nordi]/mt_dealerships/.fxap
Normal file
Binary file not shown.
42
resources/[Developer]/[Nordi]/mt_dealerships/.vscode/settings.json
vendored
Normal file
42
resources/[Developer]/[Nordi]/mt_dealerships/.vscode/settings.json
vendored
Normal file
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"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"
|
||||
]
|
||||
}
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,201 @@
|
|||
---@param coords vector
|
||||
---@param sprite integer
|
||||
---@param display integer
|
||||
---@param scale number
|
||||
---@param color integer
|
||||
---@param label string
|
||||
---@return integer
|
||||
createBlip = function(coords, sprite, display, scale, color, label)
|
||||
local blip = AddBlipForCoord(coords.x, coords.y, coords.z)
|
||||
SetBlipSprite(blip, sprite)
|
||||
SetBlipDisplay(blip, display)
|
||||
SetBlipAsShortRange(blip, true)
|
||||
SetBlipScale(blip, scale)
|
||||
SetBlipColour(blip, color)
|
||||
BeginTextCommandSetBlipName("STRING")
|
||||
AddTextComponentSubstringPlayerName(label)
|
||||
EndTextCommandSetBlipName(blip)
|
||||
return blip
|
||||
end
|
||||
|
||||
---@param model string
|
||||
loadModel = function(model)
|
||||
local time = 1000
|
||||
if not HasModelLoaded(model) then
|
||||
while not HasModelLoaded(model) do
|
||||
if time > 0 then time = time - 1 RequestModel(model) else time = 1000 break end Wait(10)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---@param coords vector
|
||||
---@param radius number
|
||||
---@param options table
|
||||
---@param distance number
|
||||
---@param name string
|
||||
---@return unknown
|
||||
createSphereZoneTarget = function(coords, radius, options, distance, name)
|
||||
if Config.target == 'ox_target' then
|
||||
return exports.ox_target:addSphereZone({ debug = Config.debug, coords = coords, radius = radius, options = options })
|
||||
elseif Config.target == 'interact' then
|
||||
return exports.interact:AddInteraction({ coords = vec3(coords.x, coords.y, coords.z), distance = 1.0, interactDst = 1.0, id = name, name = name, options = options })
|
||||
else
|
||||
-- Here we use Box Zone cause qb-target Sphere Zone does not exists and the Circle Zone is the big shit ever made
|
||||
return exports[Config.target]:AddBoxZone(name, coords, radius, radius, { debugPoly = Config.debug, name = name, minZ = coords.z-radius, maxZ = coords.z+radius }, { options = options, distance = distance })
|
||||
end
|
||||
end
|
||||
|
||||
---@param entity integer
|
||||
---@param options table
|
||||
---@param distance number
|
||||
---@param name string
|
||||
---@return unknown
|
||||
createEntityTarget = function(entity, options, distance, name)
|
||||
if Config.target == 'ox_target' then
|
||||
return exports.ox_target:addLocalEntity(entity, options)
|
||||
elseif Config.target == 'interact' then
|
||||
return exports.interact:AddLocalEntityInteraction({ entity = entity, name = name, id = name, distance = 1.0, interactDst = 1.0, options = options })
|
||||
else
|
||||
return exports[Config.target]:AddTargetEntity(entity, { name = name, options = options, distance = distance })
|
||||
end
|
||||
end
|
||||
|
||||
managementMenu = function()
|
||||
if Config.framework == 'qb' then
|
||||
TriggerEvent('qb-bossmenu:client:OpenMenu')
|
||||
elseif Config.framework == 'qbx' then
|
||||
exports.qbx_management:OpenBossMenu('job')
|
||||
elseif Config.framework == 'esx' then
|
||||
TriggerEvent('esx_society:openBossMenu', getPlayerJob(), false, {wash = false})
|
||||
end
|
||||
end
|
||||
|
||||
---@param message string
|
||||
---@param type string
|
||||
notify = function(message, type)
|
||||
lib.notify({ description = message, type = type })
|
||||
end
|
||||
|
||||
hideTextUI = function()
|
||||
exports.mt_lib:hideTextUI()
|
||||
end
|
||||
|
||||
---@param model any
|
||||
---@param coords vector
|
||||
---@param plate string | nil
|
||||
---@return any
|
||||
spawnVehicle = function(model, coords, plate)
|
||||
coords = vec4(coords.x, coords.y, coords.z, coords.w or GetEntityHeading(cache.ped))
|
||||
model = type(model) == 'string' and joaat(model) or model
|
||||
if not IsModelInCdimage(model) then return end
|
||||
loadModel(model)
|
||||
local veh = CreateVehicle(model, coords.x, coords.y, coords.z, coords.w, true, false)
|
||||
local netid = NetworkGetNetworkIdFromEntity(veh)
|
||||
SetVehicleHasBeenOwnedByPlayer(veh, true)
|
||||
SetNetworkIdCanMigrate(netid, true)
|
||||
SetVehicleNeedsToBeHotwired(veh, false)
|
||||
SetVehRadioStation(veh, 'OFF')
|
||||
SetVehicleFuelLevel(veh, 100.0)
|
||||
SetVehicleNumberPlateText(veh, plate or 'PDM')
|
||||
SetModelAsNoLongerNeeded(model)
|
||||
local plate = Config.framework == 'qbx' and qbx.getVehiclePlate(veh) or GetVehicleNumberPlateText(veh)
|
||||
if Config.keys == 'qs-vehiclekeys' then
|
||||
exports['qs-vehiclekeys']:GiveKeys(plate, GetDisplayNameFromVehicleModel(GetEntityModel(veh)), true)
|
||||
elseif Config.keys == 'mk_vehiclekeys' then
|
||||
exports[Config.keys]:AddKey(veh)
|
||||
elseif Config.keys == 'Renewed-Vehiclekeys' then
|
||||
exports['Renewed-Vehiclekeys']:addKey(plate)
|
||||
elseif Config.keys == 'MrNewbVehicleKeys' then
|
||||
exports.MrNewbVehicleKeys:GiveKeys(veh)
|
||||
else
|
||||
TriggerEvent("vehiclekeys:client:SetOwner", plate)
|
||||
end
|
||||
return veh
|
||||
end
|
||||
|
||||
---@param model string
|
||||
---@param coords vector
|
||||
---@param color integer
|
||||
---@return integer
|
||||
createShowroomVehicle = function(model, coords, color)
|
||||
loadModel(model)
|
||||
Wait(100)
|
||||
local veh = CreateVehicle(model, coords.x, coords.y, coords.z, coords.w, false, false)
|
||||
Wait(500)
|
||||
SetModelAsNoLongerNeeded(model)
|
||||
SetEntityInvincible(veh, true)
|
||||
SetVehicleDirtLevel(veh, 0.0)
|
||||
SetVehicleDoorsLocked(veh, 3)
|
||||
SetVehicleNumberPlateText(veh, 'PDM')
|
||||
SetVehicleColours(veh, color, color)
|
||||
SetVehicleExtraColours(veh, color, 0)
|
||||
return veh
|
||||
end
|
||||
|
||||
getPlayerJob = function()
|
||||
if Config.framework == 'qb' then
|
||||
local PlayerData = Config.core.Functions.GetPlayerData()
|
||||
return PlayerData.job.name
|
||||
elseif Config.framework == 'qbx' then
|
||||
return QBX.PlayerData.job.name
|
||||
elseif Config.framework == 'esx' then
|
||||
return lib.callback.await('mt_dealerships:server:getPlayerJobESX', false)
|
||||
end
|
||||
end
|
||||
|
||||
isPlayerJobBoss = function()
|
||||
if Config.framework == 'qb' then
|
||||
local PlayerData = Config.core.Functions.GetPlayerData()
|
||||
return PlayerData.job.isboss
|
||||
elseif Config.framework == 'qbx' then
|
||||
return QBX.PlayerData.job.isboss
|
||||
elseif Config.framework == 'esx' then
|
||||
return lib.callback.await('mt_dealerships:server:getPlayerJobIsBossESX', false)
|
||||
end
|
||||
end
|
||||
|
||||
---@param menu table
|
||||
openMenu = function(menu)
|
||||
lib.registerContext(menu)
|
||||
lib.showContext(menu.id)
|
||||
end
|
||||
|
||||
---@return string
|
||||
generatePlate = function()
|
||||
local plate = ""
|
||||
local chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
||||
for i = 1, 8 do
|
||||
local randIndex = math.random(1, #chars)
|
||||
plate = plate..chars:sub(randIndex, randIndex)
|
||||
end
|
||||
return plate
|
||||
end
|
||||
|
||||
---@param coords vector
|
||||
---@param distance number
|
||||
---@return table
|
||||
getPlayersFromCoords = function(coords, distance)
|
||||
coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords or GetEntityCoords(cache.ped)
|
||||
local players = lib.getNearbyPlayers(coords, distance or 5, true)
|
||||
for i = 1, #players do players[i] = players[i].id end
|
||||
return players
|
||||
end
|
||||
|
||||
---@param veh integer
|
||||
removeVehicleKeys = function(veh)
|
||||
if Config.keys == 'Renewed-Vehiclekeys' then
|
||||
local plate = Config.framework == 'qbx' and qbx.getVehiclePlate(veh) or GetVehicleNumberPlateText(veh)
|
||||
exports['Renewed-Vehiclekeys']:removeKey(plate)
|
||||
end
|
||||
end
|
||||
|
||||
---@param modelHash string
|
||||
---@param coords vector
|
||||
spawnObj = function(modelHash, coords)
|
||||
loadModel(modelHash)
|
||||
Wait(100)
|
||||
local obj = CreateObject(modelHash, coords.x, coords.y, coords.z, false, false, false)
|
||||
Wait(100)
|
||||
SetEntityHeading(obj, coords.w)
|
||||
PlaceObjectOnGroundProperly(obj)
|
||||
end
|
BIN
resources/[Developer]/[Nordi]/mt_dealerships/client/main.lua
Normal file
BIN
resources/[Developer]/[Nordi]/mt_dealerships/client/main.lua
Normal file
Binary file not shown.
BIN
resources/[Developer]/[Nordi]/mt_dealerships/client/nui.lua
Normal file
BIN
resources/[Developer]/[Nordi]/mt_dealerships/client/nui.lua
Normal file
Binary file not shown.
BIN
resources/[Developer]/[Nordi]/mt_dealerships/client/tablet.lua
Normal file
BIN
resources/[Developer]/[Nordi]/mt_dealerships/client/tablet.lua
Normal file
Binary file not shown.
|
@ -0,0 +1,29 @@
|
|||
Config = Config or {}
|
||||
|
||||
-- For more info check: https://mt-scripts-documentations.gitbook.io/mt-script-documentation/
|
||||
|
||||
Config.debug = false -- if true it'll print some debug on F8/console and active all zones debug
|
||||
Config.framework = 'qbx' -- qb, qbx, esx (need to change the export on the Config.core)
|
||||
Config.core = exports['qb-core']:GetCoreObject() -- Your core export (for qb is exports['qb-core']:GetCoreObject()) (for esx is exports.es_extended:getSharedObject()) (for qbx you can just delete this line and add '@qbx_core/modules/playerdata.lua', to the fxmanifest.lua client_scripts)
|
||||
Config.target = 'ox_target' -- ox_target, qb-target, interact, ...
|
||||
Config.banking = 'Renewed-Banking' -- qb-banking, Renewed-Banking, (can change at server/functions.lua) ...
|
||||
Config.keys = 'qbx_vehiclekeys' -- qb-vehiclekeys, qbx_vehiclekeys, mk_vehiclekeys, qs-vehiclekeys
|
||||
Config.locale = 'en'
|
||||
|
||||
Config.useTabletAnimation = true
|
||||
|
||||
Config.mInsurance = {
|
||||
enable = true, -- Enable use m-Insurance?
|
||||
inventory = "qb", -- "qb" or "ox" | If you use esx leave this "ox"
|
||||
}
|
||||
|
||||
Config.webhooks = {
|
||||
vehicleImported = '',
|
||||
vehicleBought = '',
|
||||
adminCommand = ''
|
||||
}
|
||||
|
||||
Config.commands = {
|
||||
addStock = { command = 'addstock', restricted = 'group.admin' },
|
||||
removeStock = { command = 'removestock', restricted = 'group.admin' },
|
||||
}
|
|
@ -0,0 +1,636 @@
|
|||
Config.vehicles = Config.vehicles or {}
|
||||
|
||||
local vehicles = { -- Vehicle list, credits to qb-core!
|
||||
{
|
||||
model = 'asbo', -- This has to match the spawn code of the vehicle
|
||||
name = 'Asbo', -- This is the display of the vehicle
|
||||
brand = 'Maxwell', -- This is the vehicle's brand
|
||||
price = 4000, -- The price that the vehicle sells for
|
||||
category = 'compacts', -- Category of the vehilce, stick with GetVehicleClass() options https://docs.fivem.net/natives/?_0x29439776AAA00A62
|
||||
shop = { 'cardealer', 'fmpdm', 'laryscars' }, -- Can be a single shop or multiple shops. For multiple shops for example {'shopname1','shopname2','shopname3'}
|
||||
class = 'C', -- This is the vehicle class, can be D, C, B, A, S or X (optional)
|
||||
seats = 2, -- Number of seats (optional)
|
||||
weight = 50, -- Vehicle trunk weight or total weight includin glove box (optional)
|
||||
},
|
||||
{ model = 'blista', name = 'Blista', brand = 'Dinka', price = 13000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 2, weight = 50 },
|
||||
{ model = 'brioso', name = 'Brioso R/A', brand = 'Grotti', price = 20000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 2, weight = 50 },
|
||||
{ model = 'club', name = 'Club', brand = 'BF', price = 8000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 2, weight = 50 },
|
||||
{ model = 'dilettante', name = 'Dilettante', brand = 'Karin', price = 9000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'D', seats = 2, weight = 50 },
|
||||
{ model = 'dilettante2', name = 'Dilettante Patrol', brand = 'Karin', price = 12000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'D', seats = 2, weight = 50 },
|
||||
{ model = 'kanjo', name = 'Blista Kanjo', brand = 'Dinka', price = 12000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 2, weight = 50 },
|
||||
{ model = 'issi2', name = 'Issi', brand = 'Weeny', price = 7000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 2, weight = 50 },
|
||||
{ model = 'issi3', name = 'Issi Classic', brand = 'Weeny', price = 5000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 2, weight = 50 },
|
||||
{ model = 'panto', name = 'Panto', brand = 'Benefactor', price = 3200, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 2, weight = 50 },
|
||||
{ model = 'prairie', name = 'Prairie', brand = 'Bollokan', price = 30000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 2, weight = 50 },
|
||||
{ model = 'rhapsody', name = 'Rhapsody', brand = 'Declasse', price = 10000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'D', seats = 2, weight = 50 },
|
||||
{ model = 'brioso2', name = 'Brioso 300', brand = 'Grotti', price = 12000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 2, weight = 50 },
|
||||
{ model = 'weevil', name = 'Weevil', brand = 'BF', price = 9000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 2, weight = 50 },
|
||||
{ model = 'issi7', name = 'Issi Sport', brand = 'Weeny', price = 100000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'S', seats = 2, weight = 50 },
|
||||
{ model = 'blista2', name = 'Blista Compact', brand = 'Dinka', price = 18950, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 2, weight = 50 },
|
||||
{ model = 'blista3', name = 'Blista Go Go Monkey', brand = 'Dinka', price = 15000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 2, weight = 50 },
|
||||
{ model = 'brioso3', name = 'Brioso 300 Widebody', brand = 'Grotti', price = 125000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 2, weight = 50 },
|
||||
{ model = 'boor', name = 'Boor', brand = 'Karin', price = 23000, category = 'compacts', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 2, weight = 50 },
|
||||
|
||||
-- Sedans (1)
|
||||
{ model = 'asea', name = 'Asea', brand = 'Declasse', price = 2500, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
|
||||
{ model = 'asterope', name = 'Asterope', brand = 'Karin', price = 11000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
|
||||
{ model = 'cog55', name = 'Cognoscenti 55', brand = 'Enus', price = 22000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
|
||||
{ model = 'cognoscenti', name = 'Cognoscenti', brand = 'Enus', price = 22500, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
|
||||
{ model = 'emperor', name = 'Emperor', brand = 'Albany', price = 4250, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
|
||||
{ model = 'fugitive', name = 'Fugitive', brand = 'Cheval', price = 20000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
|
||||
{ model = 'glendale', name = 'Glendale', brand = 'Benefactor', price = 3400, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
|
||||
{ model = 'glendale2', name = 'Glendale Custom', brand = 'Benefactor', price = 12000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
|
||||
{ model = 'ingot', name = 'Ingot', brand = 'Vulcar', price = 4999, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'D', seats = 4, weight = 50 },
|
||||
{ model = 'intruder', name = 'Intruder', brand = 'Karin', price = 11250, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
|
||||
{ model = 'premier', name = 'Premier', brand = 'Declasse', price = 12000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
|
||||
{ model = 'primo', name = 'Primo', brand = 'Albany', price = 5000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'D', seats = 4, weight = 50 },
|
||||
{ model = 'primo2', name = 'Primo Custom', brand = 'Albany', price = 14500, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
|
||||
{ model = 'regina', name = 'Regina', brand = 'Dundreary', price = 7000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'D', seats = 4, weight = 50 },
|
||||
{ model = 'stafford', name = 'Stafford', brand = 'Enus', price = 30000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
|
||||
{ model = 'stanier', name = 'Stanier', brand = 'Vapid', price = 19000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
|
||||
{ model = 'stratum', name = 'Stratum', brand = 'Zirconium', price = 15000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'D', seats = 4, weight = 50 },
|
||||
{ model = 'stretch', name = 'Stretch', brand = 'Dundreary', price = 19000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
|
||||
{ model = 'superd', name = 'Super Diamond', brand = 'Enus', price = 17000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
|
||||
{ model = 'surge', name = 'Surge', brand = 'Cheval', price = 20000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
|
||||
{ model = 'tailgater', name = 'Tailgater', brand = 'Obey', price = 22000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
|
||||
{ model = 'warrener', name = 'Warrener', brand = 'Vulcar', price = 4000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'D', seats = 4, weight = 50 },
|
||||
{ model = 'washington', name = 'Washington', brand = 'Albany', price = 7000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
|
||||
{ model = 'tailgater2', name = 'Tailgater S', brand = 'Obey', price = 51000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
|
||||
{ model = 'cinquemila', name = 'Lampadati', brand = 'Cinquemila', price = 125000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 4, weight = 50 },
|
||||
{ model = 'iwagen', name = 'Obey', brand = 'I-Wagen', price = 225000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 4, weight = 50 },
|
||||
{ model = 'astron', name = 'Astron', brand = 'Pfister', price = 150000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 4, weight = 50 },
|
||||
{ model = 'baller7', name = 'Baller ST', brand = 'Gallivanter', price = 145000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
|
||||
{ model = 'comet7', name = 'Comet', brand = 'S2 Cabrio', price = 25000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 2, weight = 50 },
|
||||
{ model = 'deity', name = 'Deity', brand = 'Enus', price = 505000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 4, weight = 50 },
|
||||
{ model = 'jubilee', name = 'Jubilee', brand = 'Enus', price = 485000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 4, weight = 50 },
|
||||
{ model = 'oracle', name = 'Oracle', brand = 'Übermacht', price = 22000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'C', seats = 4, weight = 50 },
|
||||
{ model = 'schafter2', name = 'Schafter', brand = 'Benefactor', price = 16000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 4, weight = 50 },
|
||||
{ model = 'warrener2', name = 'Warrener HKR', brand = 'Vulcar', price = 30000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'B', seats = 2, weight = 50 },
|
||||
{ model = 'rhinehart', name = 'Rhinehart', brand = 'Übermacht', price = 105000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 4, weight = 50 },
|
||||
{ model = 'eudora', name = 'Eudora', brand = 'Willard', price = 17000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 4, weight = 50 },
|
||||
{ model = 'asterope2', name = 'Asterope GZ', brand = 'Karin', price = 459000, category = 'sedans', shop = { 'cardealer', 'fmpdm', 'laryscars' }, class = 'A', seats = 4, weight = 50 },
|
||||
|
||||
-- SUV (2)
|
||||
{ model = 'baller', name = 'Baller', brand = 'Gallivanter', price = 22000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'baller2', name = 'Baller II', brand = 'Gallivanter', price = 15000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'baller3', name = 'Baller LE', brand = 'Gallivanter', price = 15000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'baller4', name = 'Baller LE LWB', brand = 'Gallivanter', price = 29000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'baller5', name = 'Baller LE (Armored)', brand = 'Gallivanter', price = 78000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'baller6', name = 'Baller LE LWB (Armored)', brand = 'Gallivanter', price = 82000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'bjxl', name = 'BeeJay XL', brand = 'Karin', price = 19000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'cavalcade', name = 'Cavalcade', brand = 'Albany', price = 14000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'cavalcade2', name = 'Cavalcade II', brand = 'Albany', price = 16500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'contender', name = 'Contender', brand = 'Vapid', price = 35000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'dubsta', name = 'Dubsta', brand = 'Benefactor', price = 19000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'dubsta2', name = 'Dubsta Luxury', brand = 'Benefactor', price = 19500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'fq2', name = 'FQ2', brand = 'Fathom', price = 18500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'granger', name = 'Granger', brand = 'Declasse', price = 22000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'gresley', name = 'Gresley', brand = 'Bravado', price = 25000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'habanero', name = 'Habanero', brand = 'Emperor', price = 20000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'huntley', name = 'Huntley S', brand = 'Enus', price = 24500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'landstalker', name = 'Landstalker', brand = 'Dundreary', price = 12000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'landstalker2', name = 'Landstalker XL', brand = 'Dundreary', price = 26000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'novak', name = 'Novak', brand = 'Lampadati', price = 70000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'patriot', name = 'Patriot', brand = 'Mammoth', price = 21000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'patriot2', name = 'Patriot Stretch', brand = 'Mammoth', price = 21000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'radi', name = 'Radius', brand = 'Vapid', price = 18000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'rebla', name = 'Rebla GTS', brand = 'Übermacht', price = 21000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'rocoto', name = 'Rocoto', brand = 'Obey', price = 13000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'seminole', name = 'Seminole', brand = 'Canis', price = 20000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'seminole2', name = 'Seminole Frontier', brand = 'Canis', price = 13000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'serrano', name = 'Serrano', brand = 'Benefactor', price = 48000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'toros', name = 'Toros', brand = 'Pegassi', price = 65000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'xls', name = 'XLS', brand = 'Benefactor', price = 17000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'granger2', name = 'Granger 3600LX', brand = 'Declasse', price = 221000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'patriot3', name = 'Patriot Military', brand = 'Mil-Spec', price = 270000, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'aleutian', name = 'Aleutian', brand = 'Vapid', price = 183500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'baller8', name = 'Baller ST-D', brand = 'Gallivanter', price = 171500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'cavalcade3', name = 'Cavalcade XL', brand = 'Albany', price = 166500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'dorado', name = 'Dorado', brand = 'Bravado', price = 137500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'vivanite', name = 'Vivanite', brand = 'Karin', price = 160500, category = 'suvs', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
|
||||
-- Coupes (3)
|
||||
{ model = 'cogcabrio', name = 'Cognoscenti Cabrio', brand = 'Enus', price = 30000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'exemplar', name = 'Exemplar', brand = 'Dewbauchee', price = 40000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'f620', name = 'F620', brand = 'Ocelot', price = 32500, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'felon', name = 'Felon', brand = 'Lampadati', price = 31000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'felon2', name = 'Felon GT', brand = 'Lampadati', price = 37000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'jackal', name = 'Jackal', brand = 'Ocelot', price = 19000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'oracle2', name = 'Oracle XS', brand = 'Übermacht', price = 28000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sentinel', name = 'Sentinel', brand = 'Übermacht', price = 30000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sentinel2', name = 'Sentinel XS', brand = 'Übermacht', price = 33000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'windsor', name = 'Windsor', brand = 'Enus', price = 27000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'windsor2', name = 'Windsor Drop', brand = 'Enus', price = 34000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'zion', name = 'Zion', brand = 'Übermacht', price = 22000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'zion2', name = 'Zion Cabrio', brand = 'Übermacht', price = 28000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'previon', name = 'Previon', brand = 'Karin', price = 149000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'champion', name = 'Champion', brand = 'Dewbauchee', price = 205000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'futo', name = 'Futo', brand = 'Karin', price = 17500, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sentinel3', name = 'Sentinel Classic', brand = 'Übermacht', price = 70000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'kanjosj', name = 'Kanjo SJ', brand = 'Dinka', price = 143000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'postlude', name = 'Postlude', brand = 'Dinka', price = 90000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tahoma', name = 'Tahoma Coupe', brand = 'Declasse', price = 12000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'broadway', name = 'Broadway', brand = 'Classique', price = 20000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'fr36', name = 'FR36', brand = 'Fathom', price = 161000, category = 'coupes', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
|
||||
-- Muscle (4)
|
||||
{ model = 'blade', name = 'Blade', brand = 'Vapid', price = 23500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'buccaneer', name = 'Buccaneer', brand = 'Albany', price = 22500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'buccaneer2', name = 'Buccaneer Rider', brand = 'Albany', price = 24500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'chino', name = 'Chino', brand = 'Vapid', price = 5000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'chino2', name = 'Chino Luxe', brand = 'Vapid', price = 8000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'clique', name = 'Clique', brand = 'Vapid', price = 20000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'coquette3', name = 'Coquette BlackFin', brand = 'Invetero', price = 180000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'deviant', name = 'Deviant', brand = 'Schyster', price = 70000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'dominator', name = 'Dominator', brand = 'Vapid', price = 62500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'dominator2', name = 'Pißwasser Dominator', brand = 'Vapid', price = 50000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'dominator3', name = 'Dominator GTX', brand = 'Vapid', price = 70000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'dominator4', name = 'Dominator Arena', brand = 'Vapid', price = 200000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'dominator7', name = 'Dominator ASP', brand = 'Vapid', price = 110000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'dominator8', name = 'Dominator GTT', brand = 'Vapid', price = 80000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'dukes', name = 'Dukes', brand = 'Imponte', price = 23500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'dukes2', name = 'Duke O\'Death', brand = 'Imponte', price = 60000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'dukes3', name = 'Beater Dukes', brand = 'Imponte', price = 45000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'faction', name = 'Faction', brand = 'Willard', price = 17000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'faction2', name = 'Faction Rider', brand = 'Willard', price = 19000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'faction3', name = 'Faction Custom Donk', brand = 'Willard', price = 35000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'ellie', name = 'Ellie', brand = 'Vapid', price = 42250, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'gauntlet', name = 'Gauntlet', brand = 'Bravado', price = 28500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'gauntlet2', name = 'Redwood Gauntlet', brand = 'Bravado', price = 70000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'gauntlet3', name = 'Classic Gauntlet', brand = 'Bravado', price = 75000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'gauntlet4', name = 'Gauntlet Hellfire', brand = 'Bravado', price = 80000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'gauntlet5', name = 'Gauntlet Classic Custom', brand = 'Bravado', price = 120000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'hermes', name = 'Hermes', brand = 'Albany', price = 535000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'hotknife', name = 'Hotknife', brand = 'Vapid', price = 90000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'hustler', name = 'Hustler', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'impaler', name = 'Impaler', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'impaler2', name = 'Impaler Arena', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'impaler3', name = 'Impaler Future Shock', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'impaler4', name = 'Impaler Nightmare', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'imperator', name = 'Imperator Arena', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'imperator2', name = 'imperator Future Shock', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'imperator3', name = 'Imperator Nightmare', brand = 'Vapid', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'lurcher', name = 'Lurcher', brand = 'Bravado', price = 21000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'nightshade', name = 'Nightshade', brand = 'Imponte', price = 70000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'phoenix', name = 'Phoenix', brand = 'Imponte', price = 65000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'picador', name = 'Picador', brand = 'Cheval', price = 20000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'ratloader2', name = 'Ratloader', brand = 'Ratloader2', price = 20000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'ruiner', name = 'Ruiner', brand = 'Imponte', price = 29000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'ruiner2', name = 'Ruiner 2000', brand = 'Imponte', price = 50000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sabregt', name = 'Sabre GT Turbo', brand = 'Declasse', price = 23000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sabregt2', name = 'Sabre GT Turbo Custom', brand = 'Declasse', price = 26500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'slamvan', name = 'Slam Van', brand = 'Vapid', price = 30000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'slamvan2', name = 'Lost Slam Van', brand = 'Vapid', price = 90000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'slamvan3', name = 'Slam Van Custom', brand = 'Vapid', price = 17000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'stalion', name = 'Stallion', brand = 'Declasse', price = 33000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'stalion2', name = 'Stallion Burgershot', brand = 'Declasse', price = 40000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tampa', name = 'Tampa', brand = 'Declasse', price = 24500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tulip', name = 'Tulip', brand = 'Declasse', price = 80000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'vamos', name = 'Vamos', brand = 'Declasse', price = 30000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'vigero', name = 'Vigero', brand = 'Declasse', price = 39500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'virgo', name = 'Virgo', brand = 'Albany', price = 22000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'virgo2', name = 'Virgo Custom Classic', brand = 'Dundreary', price = 21000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'virgo3', name = 'Virgo Classic', brand = 'Dundreary', price = 21000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'voodoo', name = 'Voodoo', brand = 'Declasse', price = 13000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'yosemite', name = 'Yosemite', brand = 'Declasse', price = 19500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'yosemite2', name = 'Yosemite Drift', brand = 'Declasse', price = 55000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'buffalo4', name = 'Buffalo STX', brand = 'Bravado', price = 345000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'manana', name = 'Manana', brand = 'Albany', price = 12800, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'manana2', name = 'Manana Custom', brand = 'Albany', price = 24000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tampa2', name = 'Drift Tampa', brand = 'Declasse', price = 80000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'ruiner4', name = 'Ruiner ZZ-8', brand = 'Imponte', price = 85000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'vigero2', name = 'Vigero ZX', brand = 'Declasse', price = 105000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'weevil2', name = 'Weevil Custom', brand = 'BF', price = 95000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'buffalo5', name = 'Buffalo EVX', brand = 'Bravado', price = 214000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tulip2', name = 'Tulip M-100', brand = 'Declasse', price = 80000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'clique2', name = 'Clique Wagon', brand = 'Vapid', price = 102500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'brigham', name = 'Brigham', brand = 'Albany', price = 149900, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'greenwood', name = 'Greenwood', brand = 'Bravado', price = 105000, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'dominator9', name = 'Dominator GT', brand = 'Vapid', price = 219500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'impaler6', name = 'Impaler LX', brand = 'Declasse', price = 146500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'vigero3', name = 'Vigero ZX Convertible', brand = 'Declasse', price = 229500, category = 'muscle', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
|
||||
-- Sports Classic (5)
|
||||
{ model = 'ardent', name = 'Ardent', brand = 'Ocelot', price = 30000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'btype', name = 'Roosevelt', brand = 'Albany', price = 75000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'btype2', name = 'Franken Stange', brand = 'Albany', price = 87000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'btype3', name = 'Roosevelt Valor', brand = 'Albany', price = 63000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'casco', name = 'Casco', brand = 'Lampadati', price = 100000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'deluxo', name = 'Deluxo', brand = 'Imponte', price = 55000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'dynasty', name = 'Dynasty', brand = 'Weeny', price = 25000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'fagaloa', name = 'Fagaloa', brand = 'Vulcar', price = 13000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'feltzer3', name = 'Stirling GT', brand = 'Benefactor', price = 115000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'gt500', name = 'GT500', brand = 'Grotti', price = 130000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'infernus2', name = 'Infernus Classic', brand = 'Pegassi', price = 245000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'jb700', name = 'JB 700', brand = 'Dewbauchee', price = 240000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'jb7002', name = 'JB 700W', brand = 'Dewbauchee', price = 40000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'mamba', name = 'Mamba', brand = 'Declasse', price = 140000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'michelli', name = 'Michelli GT', brand = 'Lampadati', price = 30000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'monroe', name = 'Monroe', brand = 'Pegassi', price = 115000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'nebula', name = 'Nebula', brand = 'Vulcar', price = 22000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'peyote', name = 'Peyote', brand = 'Vapid', price = 23500, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'peyote3', name = 'Peyote Custom', brand = 'Vapid', price = 48000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'pigalle', name = 'Pigalle', brand = 'Lampadati', price = 92000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'rapidgt3', name = 'Rapid GT Classic', brand = 'Dewbauchee', price = 90000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'retinue', name = 'Retinue', brand = 'Vapid', price = 32000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'retinue2', name = 'Retinue MKII', brand = 'Vapid', price = 38000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'savestra', name = 'Savestra', brand = 'Annis', price = 67000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'stinger', name = 'Stinger', brand = 'Grotti', price = 39500, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'stingergt', name = 'Stinger GT', brand = 'Grotti', price = 70000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'stromberg', name = 'Stromberg', brand = 'Ocelot', price = 80000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'swinger', name = 'Swinger', brand = 'Ocelot', price = 221000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'torero', name = 'Torero', brand = 'Pegassi', price = 84000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tornado', name = 'Tornado', brand = 'Declasse', price = 21000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tornado2', name = 'Tornado Convertible', brand = 'Declasse', price = 22000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tornado5', name = 'Tornado Custom', brand = 'Declasse', price = 22000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'turismo2', name = 'Turismo Classic', brand = 'Grotti', price = 170000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'viseris', name = 'Viseris', brand = 'Lampadati', price = 210000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'z190', name = '190Z', brand = 'Karin', price = 78000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'ztype', name = 'Z-Type', brand = 'Truffade', price = 270000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'zion3', name = 'Zion Classic', brand = 'Übermacht', price = 45000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'cheburek', name = 'Cheburek', brand = 'Rune', price = 7000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'toreador', name = 'Toreador', brand = 'Pegassi', price = 50000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'peyote2', name = 'Peyote Gasser', brand = 'Vapid', price = 40000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'coquette2', name = 'Coquette Classic', brand = 'Invetero', price = 165000, category = 'classics', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
|
||||
-- Sports (6)
|
||||
{ model = 'alpha', name = 'Alpha', brand = 'Albany', price = 53000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'banshee', name = 'Banshee', brand = 'Bravado', price = 56000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'bestiagts', name = 'Bestia GTS', brand = 'Grotti', price = 37000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'buffalo', name = 'Buffalo', brand = 'Bravado', price = 18750, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'buffalo2', name = 'Buffalo S', brand = 'Bravado', price = 24500, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'carbonizzare', name = 'Carbonizzare', brand = 'Grotti', price = 155000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'comet2', name = 'Comet', brand = 'Pfister', price = 130000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'comet3', name = 'Comet Retro Custom', brand = 'Pfister', price = 175000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'comet4', name = 'Comet Safari', brand = 'Pfister', price = 110000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'comet5', name = 'Comet SR', brand = 'Pfister', price = 155000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'coquette', name = 'Coquette', brand = 'Invetero', price = 145000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'coquette4', name = 'Coquette D10', brand = 'Invetero', price = 220000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'drafter', name = '8F Drafter', brand = 'Obey', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'elegy', name = 'Elegy Retro Custom', brand = 'Annis', price = 145000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'elegy2', name = 'Elegy RH8', brand = 'Annis', price = 150000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'feltzer2', name = 'Feltzer', brand = 'Benefactor', price = 97000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'flashgt', name = 'Flash GT', brand = 'Vapid', price = 48000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'furoregt', name = 'Furore GT', brand = 'Lampadati', price = 78000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'gb200', name = 'GB 200', brand = 'Vapid', price = 140000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'komoda', name = 'Komoda', brand = 'Lampadati', price = 55000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'imorgon', name = 'Imorgon', brand = 'Överflöd', price = 120000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'italigto', name = 'Itali GTO', brand = 'Progen', price = 260000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'jugular', name = 'Jugular', brand = 'Ocelot', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'jester', name = 'Jester', brand = 'Dinka', price = 132250, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'jester2', name = 'Jester Racecar', brand = 'Dinka', price = 210000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'jester3', name = 'Jester Classic', brand = 'Dinka', price = 85000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'khamelion', name = 'Khamelion', brand = 'Hijak', price = 90000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'kuruma', name = 'Kuruma', brand = 'Karin', price = 72000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'kuruma2', name = 'kuruma2', brand = 'Karin2', price = 72000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'locust', name = 'Locust', brand = 'Ocelot', price = 200000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'lynx', name = 'Lynx', brand = 'Ocelot', price = 150000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'massacro', name = 'Massacro', brand = 'Dewbauchee', price = 110000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'massacro2', name = 'Massacro Racecar', brand = 'Dewbauchee', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'neo', name = 'Neo', brand = 'Vysser', price = 230000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'neon', name = 'Neon', brand = 'Pfister', price = 220000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'ninef', name = '9F', brand = 'Obey', price = 95000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'ninef2', name = '9F Cabrio', brand = 'Obey', price = 105000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'omnis', name = 'Omnis', brand = 'Wow', price = 90000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'paragon', name = 'Paragon', brand = 'Enus', price = 60000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'pariah', name = 'Pariah', brand = 'Ocelot', price = 90000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'penumbra', name = 'Penumbra', brand = 'Maibatsu', price = 22000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'penumbra2', name = 'Penumbra FF', brand = 'Maibatsu', price = 30000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'rapidgt', name = 'Rapid GT', brand = 'Dewbauchee', price = 86000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'rapidgt2', name = 'Rapid GT Convertible', brand = 'Dewbauchee', price = 92000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'raptor', name = 'Raptor', brand = 'BF', price = 90000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'revolter', name = 'Revolter', brand = 'Übermacht', price = 95000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'ruston', name = 'Ruston', brand = 'Hijak', price = 130000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'schafter3', name = 'Schafter V12', brand = 'Benefactor', price = 35000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'schafter4', name = 'Schafter LWB', brand = 'Benefactor', price = 21000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'schlagen', name = 'Schlagen GT', brand = 'Benefactor', price = 160000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'schwarzer', name = 'Schwartzer', brand = 'Benefactor', price = 47000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'seven70', name = 'Seven-70', brand = 'Dewbauchee', price = 140000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'specter', name = 'Specter', brand = 'Dewbauchee', price = 160000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'streiter', name = 'Streiter', brand = 'Benefactor', price = 40000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sugoi', name = 'Sugoi', brand = 'Dinka', price = 85000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sultan', name = 'Sultan', brand = 'Karin', price = 50000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sultan2', name = 'Sultan Custom', brand = 'Karin', price = 55000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'surano', name = 'Surano', brand = 'Benefactor', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tropos', name = 'Tropos Rallye', brand = 'Lampadati', price = 65000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'verlierer2', name = 'Verlierer', brand = 'Bravado', price = 90500, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'vstr', name = 'V-STR', brand = 'Albany', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'italirsx', name = 'Itali RSX', brand = 'Progen', price = 260000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'zr350', name = 'ZR350', brand = 'Annis', price = 38000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'calico', name = 'Calico GTF', brand = 'Karin', price = 39000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'futo2', name = 'Futo GTX', brand = 'Karin', price = 39000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'euros', name = 'Euros', brand = 'Annis', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'jester4', name = 'Jester RR', brand = 'Dinka', price = 240000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'remus', name = 'Remus', brand = 'Annis', price = 48000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'comet6', name = 'Comet S2', brand = 'Pfister', price = 230000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'growler', name = 'Growler', brand = 'Pfister', price = 205000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'vectre', name = 'Vectre', brand = 'Emperor', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'cypher', name = 'Cypher', brand = 'Übermacht', price = 155000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sultan3', name = 'Sultan Classic Custom', brand = 'Karin', price = 56000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'rt3000', name = 'RT3000', brand = 'Dinka', price = 65000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sultanrs', name = 'Sultan RS', brand = 'Karin', price = 76500, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'visione', name = 'Visione', brand = 'Grotti', price = 750000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'cheetah2', name = 'Cheetah Classic', brand = 'Grotti', price = 195000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'stingertt', name = 'Itali GTO Stinger TT', brand = 'Maibatsu', price = 238000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'omnisegt', name = 'Omnis e-GT', brand = 'Obey', price = 185000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sentinel4', name = 'Sentinel Classic Widebody', brand = 'Übermacht', price = 140000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sm722', name = 'SM722', brand = 'Benefactor', price = 125000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tenf', name = '10F', brand = 'Obey', price = 185000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tenf2', name = '10F Widebody', brand = 'Obey', price = 215000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'everon2', name = 'Everon Hotring', brand = 'Karin', price = 80000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'issi8', name = 'Issi Rally', brand = 'Weeny', price = 10000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'corsita', name = 'Corsita', brand = 'Lampadati', price = 90000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'gauntlet6', name = 'Hotring Hellfire', brand = 'Bravado', price = 181000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'coureur', name = 'La Coureuse', brand = 'Penaud', price = 199000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'r300', name = '300R', brand = 'Annis', price = 56000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'panthere', name = 'Panthere', brand = 'Toundra', price = 55000, category = 'sports', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
|
||||
-- Super (7)
|
||||
{ model = 'adder', name = 'Adder', brand = 'Truffade', price = 280000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'autarch', name = 'Autarch', brand = 'Överflöd', price = 224000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'banshee2', name = 'Banshee 900R', brand = 'Bravado', price = 120000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'bullet', name = 'Bullet', brand = 'Vapid', price = 120000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'cheetah', name = 'Cheetah', brand = 'Grotti', price = 214000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'cyclone', name = 'Cyclone', brand = 'Coil', price = 300000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'entity2', name = 'Entity XXR', brand = 'Överflöd', price = 164000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'entityxf', name = 'Entity XF', brand = 'Överflöd', price = 180000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'emerus', name = 'Emerus', brand = 'Progen', price = 220000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'fmj', name = 'FMJ', brand = 'Vapid', price = 125000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'furia', name = 'Furia', brand = 'Grotti', price = 230000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'gp1', name = 'GP1', brand = 'Progen', price = 110000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'infernus', name = 'Infernus', brand = 'Pegassi', price = 235000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'italigtb', name = 'Itali GTB', brand = 'Progen', price = 170000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'italigtb2', name = 'Itali GTB Custom', brand = 'Progen', price = 250000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'krieger', name = 'Krieger', brand = 'Benefactor', price = 222000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'le7b', name = 'RE-7B', brand = 'Annis', price = 260000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'nero', name = 'Nero', brand = 'Truffade', price = 200000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'nero2', name = 'Nero Custom', brand = 'Truffade', price = 260000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'osiris', name = 'Osiris', brand = 'Pegassi', price = 220000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'penetrator', name = 'Penetrator', brand = 'Ocelot', price = 130000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'pfister811', name = '811', brand = 'Pfister', price = 220000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'prototipo', name = 'X80 Proto', brand = 'Grotti', price = 235000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'reaper', name = 'Reaper', brand = 'Pegassi', price = 100000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 's80', name = 'S80RR', brand = 'Annis', price = 205000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sc1', name = 'SC1', brand = 'Übermacht', price = 90000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sheava', name = 'ETR1', brand = 'Emperor', price = 220000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 't20', name = 'T20', brand = 'Progen', price = 1650000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'taipan', name = 'Taipan', brand = 'Cheval', price = 1850000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tempesta', name = 'Tempesta', brand = 'Pegassi', price = 120000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tezeract', name = 'Tezeract', brand = 'Pegassi', price = 220000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'thrax', name = 'Thrax', brand = 'Truffade', price = 180000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tigon', name = 'Tigon', brand = 'Lampadati', price = 240000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'turismor', name = 'Turismo R', brand = 'Grotti', price = 140000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tyrant', name = 'Tyrant', brand = 'Överflöd', price = 2100000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tyrus', name = 'Tyrus', brand = 'Progen', price = 230000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'vacca', name = 'Vacca', brand = 'Pegassi', price = 105000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'vagner', name = 'Vagner', brand = 'Dewbauchee', price = 1660000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'voltic', name = 'Voltic', brand = 'Coil', price = 120000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'voltic2', name = 'Rocket Voltic', brand = 'Coil', price = 9830400, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'xa21', name = 'XA-21', brand = 'Ocelot', price = 180000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'zentorno', name = 'Zentorno', brand = 'Pegassi', price = 340000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'zorrusso', name = 'Zorrusso', brand = 'Pegassi', price = 277000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'ignus', name = 'Ignus', brand = 'Pegassi', price = 1120000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'zeno', name = 'Zeno', brand = 'Överflöd', price = 1350000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'deveste', name = 'Deveste', brand = 'Principe', price = 234000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'lm87', name = 'LM87', brand = 'Benefactor', price = 155000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'torero2', name = 'Torero XO', brand = 'Pegassi', price = 245000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'entity3', name = 'Entity MT', brand = 'Overflod', price = 200000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'virtue', name = 'Virtue', brand = 'Ocelot', price = 72000, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'turismo3', name = 'Turismo Omaggio', brand = 'Grotti', price = 284500, category = 'super', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
|
||||
-- Motorcycles (8)
|
||||
{ model = 'akuma', name = 'Akuma', brand = 'Dinka', price = 55000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'avarus', name = 'Avarus', brand = 'LCC', price = 20000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'bagger', name = 'Bagger', brand = 'WMC', price = 13500, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'bati', name = 'Bati 801', brand = 'Pegassi', price = 24000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'bati2', name = 'Bati 801RR', brand = 'Pegassi', price = 19000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'bf400', name = 'BF400', brand = 'Nagasaki', price = 22000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'carbonrs', name = 'Carbon RS', brand = 'Nagasaki', price = 22000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'chimera', name = 'Chimera', brand = 'Nagasaki', price = 21000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'cliffhanger', name = 'Cliffhanger', brand = 'Western', price = 28500, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'daemon', name = 'Daemon', brand = 'WMC', price = 14000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'daemon2', name = 'Daemon Custom', brand = 'Western', price = 23000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'defiler', name = 'Defiler', brand = 'Shitzu', price = 30000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'deathbike', name = 'Deathbike Apocalypse', brand = 'Deathbike', price = 30000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'deathbike2', name = 'Deathbike Future Shock', brand = 'Deathbike', price = 30000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'deathbike3', name = 'Deathbike Nightmare', brand = 'Deathbike', price = 30000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'diablous', name = 'Diablous', brand = 'Principe', price = 30000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'diablous2', name = 'Diablous Custom', brand = 'Principe', price = 38000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'double', name = 'Double-T', brand = 'Dinka', price = 28000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'enduro', name = 'Enduro', brand = 'Dinka', price = 5500, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'esskey', name = 'Esskey', brand = 'Pegassi', price = 12000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'faggio', name = 'Faggio Sport', brand = 'Pegassi', price = 2000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'faggio2', name = 'Faggio', brand = 'Pegassi', price = 1900, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'faggio3', name = 'Faggio Mod', brand = 'Pegassi', price = 2500, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'fcr', name = 'FCR 1000', brand = 'Pegassi', price = 5000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'fcr2', name = 'FCR 1000 Custom', brand = 'Pegassi', price = 19000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'gargoyle', name = 'Gargoyle', brand = 'Western', price = 32000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'hakuchou', name = 'Hakuchou', brand = 'Shitzu', price = 17000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'hakuchou2', name = 'Hakuchou Drag', brand = 'Shitzu', price = 45000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'hexer', name = 'Hexer', brand = 'LCC', price = 16000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'innovation', name = 'Innovation', brand = 'LLC', price = 33500, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'lectro', name = 'Lectro', brand = 'Principe', price = 28000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'manchez', name = 'Manchez', brand = 'Maibatsu', price = 8300, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'nemesis', name = 'Nemesis', brand = 'Principe', price = 20000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'nightblade', name = 'Nightblade', brand = 'WMC', price = 23000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'oppressor', name = 'Oppressor', brand = 'Pegassi', price = 9999999, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'pcj', name = 'PCJ-600', brand = 'Shitzu', price = 15000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'ratbike', name = 'Rat Bike', brand = 'Western', price = 3000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'ruffian', name = 'Ruffian', brand = 'Pegassi', price = 25000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sanchez', name = 'Sanchez Livery', brand = 'Maibatsu', price = 5300, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sanchez2', name = 'Sanchez', brand = 'Maibatsu', price = 5300, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sanctus', name = 'Sanctus', brand = 'LCC', price = 35000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'shotaro', name = 'Shotaro', brand = 'Nagasaki', price = 320000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sovereign', name = 'Sovereign', brand = 'WMC', price = 8000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'stryder', name = 'Stryder', brand = 'Nagasaki', price = 50000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'thrust', name = 'Thrust', brand = 'Dinka', price = 22000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'vader', name = 'Vader', brand = 'Shitzu', price = 7200, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'vindicator', name = 'Vindicator', brand = 'Dinka', price = 19000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'vortex', name = 'Vortex', brand = 'Pegassi', price = 31000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'wolfsbane', name = 'Wolfsbane', brand = 'Western', price = 14000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'zombiea', name = 'Zombie Bobber', brand = 'Western', price = 28000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'zombieb', name = 'Zombie Chopper', brand = 'Western', price = 27000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'manchez2', name = 'Manchez Scout', brand = 'Maibatsu', price = 14000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'shinobi', name = 'Shinobi', brand = 'Nagasaki', price = 25000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'reever', name = 'Reever', brand = 'Western', price = 25000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'manchez3', name = 'Manchez Scout Classic', brand = 'Maibatsu', price = 15000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'powersurge', name = 'Powersurge', brand = 'Western', price = 7000, category = 'motorcycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
|
||||
-- Off-Road (9)
|
||||
{ model = 'bfinjection', name = 'Bf Injection', brand = 'Annis', price = 9000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'bifta', name = 'Bifta', brand = 'Annis', price = 15500, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'blazer', name = 'Blazer', brand = 'Annis', price = 7500, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'blazer2', name = 'Blazer Lifeguard', brand = 'Nagasaki', price = 7000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'blazer3', name = 'Blazer Hot Rod', brand = 'Nagasaki', price = 7000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'blazer4', name = 'Blazer Sport', brand = 'Annis', price = 9250, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'blazer5', name = 'Blazer Aqua', brand = 'Nagasaki', price = 40000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'brawler', name = 'Brawler', brand = 'Annis', price = 40000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'caracara', name = 'Caracara', brand = 'Vapid', price = 60000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'caracara2', name = 'Caracara 4x4', brand = 'Vapid', price = 80000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'dubsta3', name = 'Dubsta 6x6', brand = 'Annis', price = 34000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'dune', name = 'Dune Buggy', brand = 'Annis', price = 14000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'everon', name = 'Everon', brand = 'Karin', price = 60000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'freecrawler', name = 'Freecrawler', brand = 'Canis', price = 24000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'hellion', name = 'Hellion', brand = 'Annis', price = 38000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'kalahari', name = 'Kalahari', brand = 'Canis', price = 14000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'kamacho', name = 'Kamacho', brand = 'Canis', price = 50000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'mesa3', name = 'Mesa Merryweather', brand = 'Canis', price = 400000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'outlaw', name = 'Outlaw', brand = 'Nagasaki', price = 15000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'rancherxl', name = 'Rancher XL', brand = 'Declasse', price = 24000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'rebel2', name = 'Rebel', brand = 'Vapid', price = 20000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'riata', name = 'Riata', brand = 'Vapid', price = 380000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sandking', name = 'Sandking XL', brand = 'Vapid', price = 25000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sandking2', name = 'Sandking SWB', brand = 'Vapid', price = 38000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'trophytruck', name = 'Trophy Truck', brand = 'Vapid', price = 60000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'trophytruck2', name = 'Desert Raid', brand = 'Vapid', price = 80000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'vagrant', name = 'Vagrant', brand = 'Maxwell', price = 50000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'verus', name = 'Verus', brand = 'Dinka', price = 20000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'winky', name = 'Winky', brand = 'Vapid', price = 10000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'yosemite3', name = 'Yosemite Rancher', brand = 'Declasse', price = 425000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'mesa', name = 'Mesa', brand = 'Canis', price = 12000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'ratel', name = 'Ratel', brand = 'Vapid', price = 199000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'l35', name = 'Walton L35', brand = 'Declasse', price = 167000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'monstrociti', name = 'MonstroCiti', brand = 'Maibatsu', price = 48000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'draugur', name = 'Draugur', brand = 'Declasse', price = 99000, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'terminus', name = 'Terminus', brand = 'Canis', price = 187750, category = 'offroad', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
|
||||
-- Industrial (10)
|
||||
{ model = 'guardian', name = 'Guardian', brand = 'Vapid', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'mixer2', name = 'Mixer II', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tiptruck2', name = 'Tipper II', brand = 'Brute', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tiptruck', name = 'Tipper', brand = 'Brute', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'rubble', name = 'Rubble', brand = 'Jobuilt', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'mixer', name = 'Mixer', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'flatbed', name = 'Flatbed Truck', brand = 'MTL', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'dump', name = 'Dump Truck', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'bulldozer', name = 'Dozer', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'handler', name = 'Dock Handler', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'cutter', name = 'Cutter', brand = 'HVY', price = 30000, category = 'industrial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
|
||||
-- Utility (11)
|
||||
{ model = 'slamtruck', name = 'Slam Truck', brand = 'Vapid', price = 100000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'caddy3', name = 'Caddy (Bunker)', brand = 'Nagasaki', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'caddy2', name = 'Caddy (Civilian)', brand = 'Nagasaki', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'caddy3', name = 'Caddy (Golf)', brand = 'Nagasaki', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'utillitruck', name = 'Utility Truck (Cherry Picker)', brand = 'Brute', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'utillitruck2', name = 'Utility Truck (Van)', brand = 'Brute', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'utillitruck3', name = 'Utility Truck (Contender)', brand = 'Vapid', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tractor', name = 'Tractor', brand = 'Stanley', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tractor2', name = 'Fieldmaster', brand = 'Stanley', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tractor3', name = 'Fieldmaster', brand = 'Stanley', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'towtruck', name = 'Tow Truck (Large)', brand = 'Vapid', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'towtruck2', name = 'Tow Truck (Small)', brand = 'Vapid', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'scrap', name = 'Scrap Truck', brand = 'Vapid', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'sadler', name = 'Sadler', brand = 'Vapid', price = 20000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'ripley', name = 'Ripley', brand = 'HVY', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'mower', name = 'Lawn Mower', brand = 'Jacksheepe', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'forklift', name = 'Forklift', brand = 'HVY', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'docktug', name = 'Docktug', brand = 'HVY', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'airtug', name = 'Airtug', brand = 'HVY', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'trailers5', name = 'Trailer (Christmas)', brand = 'Unknown', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tvtrailer2', name = 'Trailer (TV)', brand = 'Unknown', price = 30000, category = 'utility', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
|
||||
-- Vans (12)
|
||||
{ model = 'bison', name = 'Bison', brand = 'Bravado', price = 18000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'bobcatxl', name = 'Bobcat XL Open', brand = 'Vapid', price = 13500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'burrito3', name = 'Burrito', brand = 'Declasse', price = 4000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'gburrito2', name = 'Burrito Custom', brand = 'Declasse', price = 11500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'rumpo', name = 'Rumpo', brand = 'Bravado', price = 9000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'journey', name = 'Journey', brand = 'Zirconium', price = 6500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'minivan', name = 'Minivan', brand = 'Vapid', price = 7000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'minivan2', name = 'Minivan Custom', brand = 'Vapid', price = 10000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'paradise', name = 'Paradise', brand = 'Bravado', price = 9000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'rumpo3', name = 'Rumpo Custom', brand = 'Bravado', price = 19500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'speedo', name = 'Speedo', brand = 'Vapid', price = 10000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'speedo4', name = 'Speedo Custom', brand = 'Vapid', price = 15000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'surfer', name = 'Surfer', brand = 'BF', price = 9000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'youga3', name = 'Youga Classic 4x4', brand = 'Bravado', price = 15000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'youga', name = 'Youga', brand = 'Bravado', price = 8000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'youga2', name = 'Youga Classic', brand = 'Bravado', price = 14500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'youga4', name = 'Youga Custom', brand = 'Bravado', price = 85000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'moonbeam', name = 'Moonbeam', brand = 'Declasse', price = 13000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'moonbeam2', name = 'Moonbeam Custom', brand = 'Declasse', price = 15000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'boxville', name = 'Boxville LSDWP', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'boxville2', name = 'Boxville Go Postal', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'boxville3', name = 'Boxville Humane Labs', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'boxville4', name = 'Boxville Post OP', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'boxville5', name = 'Armored Boxville', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'pony', name = 'Pony', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'pony2', name = 'Pony (Smoke on the water)', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'journey2', name = 'Journey II', brand = 'Zirconium', price = 7000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'surfer3', name = 'Surfer Custom', brand = 'BF', price = 15000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'speedo5', name = 'Speedo Custom', brand = 'Vapid', price = 238000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'mule2', name = 'Mule', brand = 'Maibatsu', price = 40000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'mule3', name = 'Mule', brand = 'Maibatsu', price = 40000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'taco', name = 'Taco Truck', brand = 'Brute', price = 45000, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'boxville6', name = 'Boxville (LSDS)', brand = 'Brute', price = 47500, category = 'vans', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
|
||||
-- Cycles (13)
|
||||
{ model = 'bmx', name = 'BMX', brand = 'Bike', price = 160, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'cruiser', name = 'Cruiser', brand = 'Bike', price = 510, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'fixter', name = 'Fixter', brand = 'Bike', price = 225, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'scorcher', name = 'Scorcher', brand = 'Bike', price = 280, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tribike', name = 'Whippet Race Bike', brand = 'Bike', price = 500, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tribike2', name = 'Endurex Race Bike', brand = 'Bike', price = 700, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tribike3', name = 'Tri-Cycles Race Bike', brand = 'Bike', price = 520, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'inductor', name = 'Inductor', brand = 'Coil', price = 5000, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'inductor2', name = 'Junk Energy Inductor', brand = 'Coil', price = 5000, category = 'cycles', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
|
||||
-- Service (17)
|
||||
{ model = 'brickade', name = 'Brickade', brand = 'MTL', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'brickade2', name = 'Brickade 6x6', brand = 'MTL', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'pbus2', name = 'Festival Bus', brand = 'Unknown', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'wastelander', name = 'Wastelander', brand = 'MTL', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'rallytruck', name = 'Dune', brand = 'MTL', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'metrotrain', name = 'Metro Train', brand = 'Unknown', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'freight', name = 'Freight Train', brand = 'Unknown', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'cablecar', name = 'Cable Car', brand = 'Unknown', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'trash', name = 'Trashmaster', brand = 'JoBuilt', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'trash2', name = 'Trashmaster', brand = 'JoBuilt', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'tourbus', name = 'Tour Bus', brand = 'Brute', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'taxi', name = 'Taxi', brand = 'Vapid', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'rentalbus', name = 'Rental Shuttle Bus', brand = 'Brute', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'coach', name = 'Dashound', brand = 'Brute', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'bus', name = 'Bus', brand = 'Brute', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'airbus', name = 'Airport Bus', brand = 'Brute', price = 100000, category = 'service', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
|
||||
-- Commercial (20)
|
||||
{ model = 'cerberus', name = 'Apocalypse Cerberus', brand = 'MTL', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'pounder2', name = 'Pounder Custom', brand = 'MTL', price = 55000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'mule4', name = 'Mule Custom', brand = 'Maibatsu', price = 40000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'phantom3', name = 'Phantom Custom', brand = 'Jobuilt', price = 110000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'hauler2', name = 'Hauler Custom', brand = 'Jobuilt', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'phantom2', name = 'Phantom Wedge', brand = 'Jobuilt', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'mule5', name = 'Mule (Heist)', brand = 'Maibatsu', price = 40000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'stockade', name = 'Stockade', brand = 'Brute', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'pounder', name = 'Pounder', brand = 'MTL', price = 55000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'phantom', name = 'Phantom', brand = 'Jobuilt', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'packer', name = 'Packer', brand = 'MTL', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'mule', name = 'Mule', brand = 'Maibatsu', price = 40000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'hauler', name = 'Hauler', brand = 'Jobuilt', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'biff', name = 'Biff', brand = 'Brute', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'benson', name = 'Benson', brand = 'Vapid', price = 55000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'benson2', name = 'Benson (Cluckin Bell)', brand = 'Vapid', price = 55000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'phantom4', name = 'Phantom (Christmas)', brand = 'Vapid', price = 100000, category = 'commercial', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
|
||||
-- Open Wheel (22)
|
||||
{ model = 'openwheel2', name = 'DR1', brand = 'Declasse', price = 100000, category = 'openwheel', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'openwheel1', name = 'BR8', brand = 'Benefactor', price = 100000, category = 'openwheel', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'formula2', name = 'R88', brand = 'Ocelot', price = 100000, category = 'openwheel', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
{ model = 'formula', name = 'PR4', brand = 'Progen', price = 100000, category = 'openwheel', shop = { 'cardealer', 'fmpdm', 'laryscars' } },
|
||||
}
|
||||
|
||||
for i = 1, #vehicles do
|
||||
Config.vehicles[vehicles[i].model] = {
|
||||
spawncode = vehicles[i].model,
|
||||
name = vehicles[i].name,
|
||||
brand = vehicles[i].brand,
|
||||
model = vehicles[i].model,
|
||||
price = vehicles[i].price,
|
||||
category = vehicles[i].category,
|
||||
shop = vehicles[i].shop,
|
||||
class = vehicles[i].class or nil,
|
||||
seats = vehicles[i].seats or nil,
|
||||
weight = vehicles[i].weight or nil,
|
||||
}
|
||||
end
|
34
resources/[Developer]/[Nordi]/mt_dealerships/dealerships.sql
Normal file
34
resources/[Developer]/[Nordi]/mt_dealerships/dealerships.sql
Normal file
|
@ -0,0 +1,34 @@
|
|||
-- 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
|
||||
);
|
|
@ -0,0 +1,41 @@
|
|||
Config.dealerships = Config.dealerships or {}
|
||||
|
||||
Config.dealerships.fmpdm = { -- Dealership ID, NEEDS TO BE THE SAME AS THE JOB!!!
|
||||
enabled = true, -- true or false to enable or disable the dealership
|
||||
label = 'Premium Deluxe Motorsports', -- Dealership label
|
||||
logo = 'https://i.ibb.co/nkBN3bs/logo.png', -- Dealership logo that'll show on UI
|
||||
job = false, -- Dealership job or false to not player owned dealerships, NEEDS TO BE THE SAME AS THE ID!!!
|
||||
lockCatalogueJob = false, -- can be false for everyone to open the catalogue or a job if you want to lock it to some job
|
||||
currency = 'bank', -- bank, cash or money to ESX (Also to QBCore you can choose other currency like crypto and etc)
|
||||
testDriveRoutingBucket = true, -- Set this to false if you don't want the test drive to be inside of a Routing Bucket
|
||||
allowChangeVehicle = true, -- If true players will be able to change the vehicles on the catalogue witout job
|
||||
testDriveTime = 50, -- Test drive time in seconds
|
||||
testDriveSpawn = vec4(-805.46, -237.29, 37.12, 206.87), -- Test drive spawn coords
|
||||
buySpawn = vec4(-796.82, -219.97, 37.26, 120.47), -- Vehicle buy spawn coords
|
||||
blip = { enabled = true, coords = vec3(-795.15, -238.44, 37.08), sprite = 523, color = 3, scale = 0.6, display = 4 }, -- Dealership map blip
|
||||
catalogues = { -- The catalogues to the players see the vehicle and emplooyes change the vehicle on showrrom
|
||||
{ coords = vec3(-792.55, -227.65, 37.4), radius = 0.4 },
|
||||
{ coords = vec3(-788.9, -225.45, 37.4), radius = 0.4 },
|
||||
{ coords = vec3(-781.35, -238.1, 37.35), radius = 0.4 },
|
||||
{ coords = vec3(-785.85, -240.35, 37.35), radius = 0.4 },
|
||||
},
|
||||
categories = { -- The categories that will show on the catalogue and dashboard (need to add the shop with the job name to the vehicles.lua too on the shops field otherwise it'll not show the vehicles!!)
|
||||
{ label = 'Compacts', id = 'compacts' },
|
||||
{ label = 'Sedans', id = 'sedans' },
|
||||
{ label = 'SUVs', id = 'suvs' },
|
||||
{ label = 'Coupes', id = 'coupes' },
|
||||
{ label = 'Muscle', id = 'muscle' },
|
||||
{ label = 'Sports Classics', id = 'classics' },
|
||||
{ label = 'Sports', id = 'sports' },
|
||||
{ label = 'Super', id = 'super' },
|
||||
{ label = 'Motorcycles', id = 'motorcycles' },
|
||||
{ label = 'OffRoad', id = 'offroad' },
|
||||
{ label = 'Industrial', id = 'industrial' },
|
||||
{ label = 'Utility', id = 'utility' },
|
||||
{ label = 'Vans', id = 'vans' },
|
||||
{ label = 'Cycles', id = 'cycles' },
|
||||
{ label = 'Service', id = 'service' },
|
||||
{ label = 'Commercial', id = 'commercial' },
|
||||
{ label = 'Open Wheel', id = 'openwheel' },
|
||||
}
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
Config.dealerships = Config.dealerships or {}
|
||||
|
||||
Config.dealerships.laryscars = { -- Dealership ID, NEEDS TO BE THE SAME AS THE JOB!!!
|
||||
enabled = true, -- true or false to enable or disable the dealership
|
||||
label = "Lary's Cars", -- Dealership label
|
||||
logo = 'https://i.ibb.co/nkBN3bs/logo.png', -- Dealership logo that'll show on UI
|
||||
job = 'laryscars', -- Dealership job or false to not player owned dealerships, NEEDS TO BE THE SAME AS THE ID!!!
|
||||
lockCatalogueJob = false, -- can be false for everyone to open the catalogue or a job if you want to lock it to some job
|
||||
currency = 'cash', -- bank, cash or money to ESX (Also to QBCore you can choose other currency like crypto and etc)
|
||||
useStock = true, -- When using job = false this will be ignored
|
||||
allowBuyCatalogue = true, -- If true players will be able to buy the vehicles on the catalogue
|
||||
allowChangeVehicle = true, -- If true players will be able to change the vehicles on the catalogue witout job
|
||||
needsMission = true, -- Set to false or true to disable/disable the needing of going pick up the car
|
||||
testDriveRoutingBucket = true, -- Set this to false if you don't want the test drive to be inside of a Routing Bucket
|
||||
testDriveTime = 50, -- Test drive time in seconds
|
||||
testDriveSpawn = vec4(1223.21, 2688.7, 37.56, 108.43), -- Test drive spawn coords
|
||||
truck = 'packer', -- The truck used on importation
|
||||
trailer = 'tr4', -- The trailer used on importation
|
||||
truckSpawn = vec4(1245.86, 2667.8, 37.55, 357.46), -- Importation truck spawn coords
|
||||
buySpawn = vec4(1210.15, 2719.98, 38.01, 178.31), -- Vehicle buy spawn coords
|
||||
comissions = { buyPercentage = 50, sellComission = 10 }, -- The dealership commisions (buyPercentage is the percentage of vehicle price that the dealership will buy it and the sellComission is the comission that the employee will earn on selling vehicles to players)
|
||||
blip = { enabled = true, coords = vec3(1223.71, 2722.84, 38.01), sprite = 523, color = 3, scale = 0.6, display = 4 }, -- Dealership map blip
|
||||
dashboards = { -- Dealership dashboards to import vehicles and see transations and etc
|
||||
{ coords = vec3(1225.45, 2739.45, 38.25), radius = 0.5, includeBossMenu = true },
|
||||
},
|
||||
catalogues = { -- The catalogues to the players see the vehicle and emplooyes change the vehicle on showrrom
|
||||
{ coords = vec3(1216.1, 2735.45, 38.15), radius = 0.25, vehicleCoords = vec4(1215.17, 2732.47, 37.1, 358.38), vehicle = 'premier', vehicleColor = 54 },
|
||||
{ coords = vec3(1218.8, 2735.45, 38.15), radius = 0.25, vehicleCoords = vec4(1218.77, 2732.35, 37.1, 3.14), vehicle = 'mesa', vehicleColor = 0 },
|
||||
{ coords = vec3(1229.35, 2735.4, 38.1), radius = 0.25, vehicleCoords = vec4(1229.48, 2733.08, 37.1, 356.21), vehicle = 'vacca', vehicleColor = 73 },
|
||||
{ coords = vec3(1232.95, 2735.5, 38.15), radius = 0.25, vehicleCoords = vec4(1233.06, 2732.51, 38.1, 0.95), vehicle = 'cavalcade', vehicleColor = 4 },
|
||||
},
|
||||
categories = { -- The categories that will show on the catalogue and dashboard (need to add the shop with the job name to the vehicles.lua too on the shops field otherwise it'll not show the vehicles!!)
|
||||
{ label = 'Compacts', id = 'compacts' },
|
||||
{ label = 'Sedans', id = 'sedans' },
|
||||
{ label = 'SUVs', id = 'suvs' },
|
||||
{ label = 'Coupes', id = 'coupes' },
|
||||
{ label = 'Muscle', id = 'muscle' },
|
||||
{ label = 'Sports Classics', id = 'classics' },
|
||||
{ label = 'Sports', id = 'sports' },
|
||||
{ label = 'Super', id = 'super' },
|
||||
{ label = 'Motorcycles', id = 'motorcycles' },
|
||||
{ label = 'OffRoad', id = 'offroad' },
|
||||
{ label = 'Industrial', id = 'industrial' },
|
||||
{ label = 'Utility', id = 'utility' },
|
||||
{ label = 'Vans', id = 'vans' },
|
||||
{ label = 'Cycles', id = 'cycles' },
|
||||
{ label = 'Service', id = 'service' },
|
||||
{ label = 'Commercial', id = 'commercial' },
|
||||
{ label = 'Open Wheel', id = 'openwheel' },
|
||||
},
|
||||
pickups = {
|
||||
vec4(1201.35, -3187.03, 5.98, 175.35)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
Config.dealerships = Config.dealerships or {}
|
||||
|
||||
Config.dealerships.cardealer = { -- Dealership ID, NEEDS TO BE THE SAME AS THE JOB!!!
|
||||
enabled = true, -- true or false to enable or disable the dealership
|
||||
label = 'Premium Deluxe Motorsports', -- Dealership label
|
||||
logo = 'https://i.ibb.co/nkBN3bs/logo.png', -- Dealership logo that'll show on UI
|
||||
job = false, -- Dealership job or false to not player owned dealerships, NEEDS TO BE THE SAME AS THE ID!!!
|
||||
lockCatalogueJob = 'police', -- can be false for everyone to open the catalogue or a job if you want to lock it to some job
|
||||
currency = 'cash', -- bank, cash or money to ESX (Also to QBCore you can choose other currency like crypto and etc)
|
||||
useStock = true, -- When using job = false this will be ignored
|
||||
allowBuyCatalogue = true, -- If true players will be able to buy the vehicles on the catalogue
|
||||
allowChangeVehicle = true, -- If true players will be able to change the vehicles on the catalogue witout job
|
||||
needsMission = true, -- Set to false or true to disable/disable the needing of going pick up the car
|
||||
testDriveRoutingBucket = true, -- Set this to false if you don't want the test drive to be inside of a Routing Bucket
|
||||
testDriveTime = 50, -- Test drive time in seconds
|
||||
testDriveSpawn = vec4(-69.48, -1105.88, 26.07, 73.5), -- Test drive spawn coords
|
||||
truck = 'packer', -- The truck used on importation
|
||||
trailer = 'tr4', -- The trailer used on importation
|
||||
truckSpawn = vec4(-58.46, -1072.99, 27.23, 70.0), -- Importation truck spawn coords
|
||||
buySpawn = vec4(-17.59, -1107.66, 26.65, 161.25), -- Vehicle buy spawn coords
|
||||
comissions = { buyPercentage = 50, sellComission = 10 }, -- The dealership commisions (buyPercentage is the percentage of vehicle price that the dealership will buy it and the sellComission is the comission that the employee will earn on selling vehicles to players)
|
||||
blip = { enabled = true, coords = vec3(-58.01, -1097.08, 26.44), sprite = 523, color = 3, scale = 0.6, display = 4 }, -- Dealership map blip
|
||||
dashboards = { -- Dealership dashboards to import vehicles and see transations and etc
|
||||
{ coords = vec3(-45.9, -1090.5, 26.4), radius = 0.5, includeBossMenu = true },
|
||||
},
|
||||
catalogues = { -- The catalogues to the players see the vehicle and emplooyes change the vehicle on showrrom
|
||||
{ coords = vec3(-46.7, -1094.6, 26.6), radius = 0.3, vehicleCoords = vec4(-47.34, -1097.28, 25.46, 299.48), vehicle = 'premier', vehicleColor = 54 },
|
||||
{ coords = vec3(-42.1, -1096.2, 26.6), radius = 0.3, vehicleCoords = vec4(-42.82, -1098.86, 25.46, 301.18), vehicle = 'mesa', vehicleColor = 0 },
|
||||
{ coords = vec3(-37.2, -1098.0, 26.6), radius = 0.3, vehicleCoords = vec4(-38.15, -1100.60, 25.46, 296.99), vehicle = 'vacca', vehicleColor = 73 },
|
||||
{ coords = vec3(-33.0, -1099.5, 26.6), radius = 0.3, vehicleCoords = vec4(-33.69, -1102.26, 25.46, 297.53), vehicle = 'cavalcade', vehicleColor = 4 },
|
||||
},
|
||||
categories = { -- The categories that will show on the catalogue and dashboard (need to add the shop with the job name to the vehicles.lua too on the shops field otherwise it'll not show the vehicles!!)
|
||||
{ label = 'Compacts', id = 'compacts' },
|
||||
{ label = 'Sedans', id = 'sedans' },
|
||||
{ label = 'SUVs', id = 'suvs' },
|
||||
{ label = 'Coupes', id = 'coupes' },
|
||||
{ label = 'Muscle', id = 'muscle' },
|
||||
{ label = 'Sports Classics', id = 'classics' },
|
||||
{ label = 'Sports', id = 'sports' },
|
||||
{ label = 'Super', id = 'super' },
|
||||
{ label = 'Motorcycles', id = 'motorcycles' },
|
||||
{ label = 'OffRoad', id = 'offroad' },
|
||||
{ label = 'Industrial', id = 'industrial' },
|
||||
{ label = 'Utility', id = 'utility' },
|
||||
{ label = 'Vans', id = 'vans' },
|
||||
{ label = 'Cycles', id = 'cycles' },
|
||||
{ label = 'Service', id = 'service' },
|
||||
{ label = 'Commercial', id = 'commercial' },
|
||||
{ label = 'Open Wheel', id = 'openwheel' },
|
||||
},
|
||||
pickups = {
|
||||
vec4(1201.35, -3187.03, 5.98, 175.35)
|
||||
}
|
||||
}
|
41
resources/[Developer]/[Nordi]/mt_dealerships/fxmanifest.lua
Normal file
41
resources/[Developer]/[Nordi]/mt_dealerships/fxmanifest.lua
Normal file
|
@ -0,0 +1,41 @@
|
|||
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'
|
94
resources/[Developer]/[Nordi]/mt_dealerships/locales/en.json
Normal file
94
resources/[Developer]/[Nordi]/mt_dealerships/locales/en.json
Normal file
|
@ -0,0 +1,94 @@
|
|||
{
|
||||
"target_dashboard": "Dashboard",
|
||||
"target_dashboard_icon": "fas fa-laptop",
|
||||
"target_management": "Boss menu",
|
||||
"target_management_icon": "fas fa-user-tie",
|
||||
"target_catalogue": "Catalogue",
|
||||
"target_catalogue_icon": "fas fa-laptop",
|
||||
"target_vehicle_info": "%s %s - %s$",
|
||||
"target_vehicle_info_icon": "fas fa-info",
|
||||
"target_test_drive": "Test Drive",
|
||||
"target_test_drive_icon": "fas fa-car",
|
||||
"target_buy_vehicle": "Buy vehicle",
|
||||
"target_buy_vehicle_icon": "fas fa-dollar-sign",
|
||||
|
||||
"timer_testdrive_time": "Remaining time",
|
||||
|
||||
"textui_pess_cancel_test_drive": "Cancel test drive",
|
||||
"textui_press_deliver_vehicle": "Finish importation",
|
||||
|
||||
"notify_cant_spawn_trailer": "All the pickup locations are occupied!!",
|
||||
"notify_cant_spawn_truck": "Truck truck spawn location is occupied!!",
|
||||
"notify_no_money": "The company does not have enoght money!!",
|
||||
"notify_pick_delivery": "Get into the truck outside and go to the GPS location and pick the vehicle trailer!",
|
||||
"notify_finish_delivery": "Now go to the GPS location and finish the importatio!",
|
||||
"notify_stock_added": "Stock added!",
|
||||
"notify_vehicle_bought": "Vehicle bought!",
|
||||
"notify_no_money_player": "You don't have that money!",
|
||||
"noitfy_no_id": "No ID provided!",
|
||||
"notify_missing_fields": "You need to fill all the needed fields!",
|
||||
"notify_no_nearby": "No players neaby you!",
|
||||
"notify_vehicle_no_stock": "This vehicle does not have stock!",
|
||||
"notify_stock_removed": "Stock removed!",
|
||||
"notify_vehicle_sold": "Vehicle sold! You earned %s$",
|
||||
|
||||
"blip_vehicle": "Pickup vehicle",
|
||||
"blip_vehicle_finish": "Delivery vehicle",
|
||||
|
||||
"logs_vehicle_imported_title": "Vehicle Imported",
|
||||
"logs_vehicle_imported_message": "Player **%s (%s)** imported the vehicle **%s** for **%s** having a new stock of **%s** at the **%s** dealership company",
|
||||
"logs_vehicle_bought_title": "Vehicle Bought",
|
||||
"logs_vehicle_bought_message": "Player **%s (%s)** bought the vehicle **%s** for **%s$** at **%s** dealership",
|
||||
"logs_add_stock_command_title": "Add stock command",
|
||||
"logs_add_stock_command_message": "Player **%s (%s)** added stock for the vehicle **%s** having a new stock of **%s** at the **%s** dealership company",
|
||||
|
||||
"ui_all": "All",
|
||||
"ui_stocked": "Stocked",
|
||||
"ui_search": "Search",
|
||||
"ui_vehicle_info_title": "Vehicle Information",
|
||||
"ui_price": "Price",
|
||||
"ui_category": "Category",
|
||||
"ui_stock": "Stock",
|
||||
"ui_class": "Class",
|
||||
"ui_weight": "Trunk weight",
|
||||
"ui_seats": "Seats",
|
||||
"ui_confirm_buy_vehicle_title": "Confirm Purchase",
|
||||
"ui_confirm_buy_vehicle_message": "You're sure you want to buy this vehicle?",
|
||||
"ui_cancel": "Cancel",
|
||||
"ui_confirm": "Confirm",
|
||||
"ui_buy": "Buy",
|
||||
"ui_test_drive": "Test Drive",
|
||||
"ui_dealership_sells_title": "Dealership Sells",
|
||||
"ui_dealership_importations_title": "Dealership Importations",
|
||||
"ui_date": "Date",
|
||||
"ui_employee": "Employee",
|
||||
"ui_customer": "Customer",
|
||||
"ui_plate": "Plate",
|
||||
"ui_model": "Model",
|
||||
"ui_sells": "Sells",
|
||||
"ui_importations": "Importations",
|
||||
"ui_confirm_sell_title": "Confirm vehicle sell",
|
||||
"ui_player_id": "Player",
|
||||
"ui_sell": "Sell",
|
||||
"ui_cancel_stock": "Cancel stock",
|
||||
"ui_confirm_importation_title": "Confirm importation",
|
||||
"ui_confirm_importation_message": "You're sure you want to import this vehicle?",
|
||||
"ui_add_stock": "Add stock",
|
||||
"ui_date_format": "%d/%m/%Y - %X",
|
||||
"ui_change_vehicle": "Change",
|
||||
|
||||
"command_add_stock_help": "Add dealership vehicle stock",
|
||||
"command_add_stock_vehicle_name": "vehicle",
|
||||
"command_add_stock_vehicle_help": "Vehicle spawn name",
|
||||
"command_add_stock_amount_name": "amount",
|
||||
"command_add_stock_amount_help": "Amount of stock to add",
|
||||
"command_add_stock_dealership_name": "dealership",
|
||||
"command_add_stock_dealership_help": "Job of the dealership to add stock",
|
||||
"command_remove_stock_help": "Remove dealership vehicle stock",
|
||||
"command_remove_stock_vehicle_name": "vehicle",
|
||||
"command_remove_stock_vehicle_help": "Vehicle spawn name",
|
||||
"command_remove_stock_amount_name": "amount",
|
||||
"command_remove_stock_amount_help": "Amount of stock to remove",
|
||||
"command_remove_stock_dealership_name": "dealership",
|
||||
"command_remove_stock_dealership_help": "Job of the dealership to remove stock"
|
||||
}
|
90
resources/[Developer]/[Nordi]/mt_dealerships/locales/pt.json
Normal file
90
resources/[Developer]/[Nordi]/mt_dealerships/locales/pt.json
Normal file
|
@ -0,0 +1,90 @@
|
|||
{
|
||||
"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"
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
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
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,107 @@
|
|||
---@param account string
|
||||
---@param amount integer
|
||||
addAccountMoney = function(account, amount)
|
||||
if Config.banking == 'Renewed-Banking' then
|
||||
exports['Renewed-Banking']:addAccountMoney(account, amount)
|
||||
elseif Config.banking == 'esx_addonaccount' then
|
||||
TriggerEvent('esx_addonaccount:getSharedAccount', 'society_'..account, function(account)
|
||||
account.addMoney(amount)
|
||||
end)
|
||||
else
|
||||
exports[Config.banking]:AddMoney(account, amount)
|
||||
end
|
||||
end
|
||||
|
||||
---@param account string
|
||||
---@param amount integer
|
||||
removeAccountMoney = function(account, amount)
|
||||
if Config.banking == 'Renewed-Banking' then
|
||||
exports['Renewed-Banking']:removeAccountMoney(account, amount)
|
||||
elseif Config.banking == 'esx_addonaccount' then
|
||||
TriggerEvent('esx_addonaccount:getSharedAccount', 'society_'..account, function(account)
|
||||
account.removeMoney(amount)
|
||||
end)
|
||||
else
|
||||
exports[Config.banking]:RemoveMoney(account, amount)
|
||||
end
|
||||
end
|
||||
|
||||
---@param account string
|
||||
---@return number
|
||||
getAccountMoney = function(account)
|
||||
local value = 0
|
||||
if Config.banking == 'Renewed-Banking' then
|
||||
value = exports['Renewed-Banking']:getAccountMoney(account)
|
||||
elseif Config.banking == 'esx_addonaccount' then
|
||||
TriggerEvent('esx_addonaccount:getSharedAccount', 'society_'..account, function(account)
|
||||
value = account.money
|
||||
end)
|
||||
elseif Config.banking == 'qb-management' then
|
||||
value = exports[Config.banking]:GetMoney(account)
|
||||
else
|
||||
value = exports[Config.banking]:GetAccountBalance(account)
|
||||
end
|
||||
return value
|
||||
end
|
||||
|
||||
---@param webhook string
|
||||
---@param title string
|
||||
---@param message string
|
||||
---@param image string
|
||||
createLog = function(webhook, title, message, image)
|
||||
PerformHttpRequest(webhook, function(err, text, headers) end, 'POST', json.encode({
|
||||
embeds = {
|
||||
{
|
||||
title = title,
|
||||
author = {
|
||||
name = "MT Scripts - Dealerships",
|
||||
icon_url = 'https://cdn.discordapp.com/attachments/1014907105733517442/1141400655450361916/Logo_PNG_8K.png?ex=66292c32&is=6616b732&hm=7f280578a3f1186b3778c2e828032df28d8f0b21debf468f126e0f5cb099e3d8&',
|
||||
url = 'https://mt-scripts.tebex.io/',
|
||||
},
|
||||
color = '000000255',
|
||||
description = message,
|
||||
image = { url = image or '' },
|
||||
footer = { text = 'mt-scripts.tebex.io' },
|
||||
}
|
||||
}
|
||||
}), { ['Content-Type'] = 'application/json' })
|
||||
end
|
||||
|
||||
---@param PlayerData table
|
||||
---@param model string
|
||||
---@param mods table
|
||||
---@param plate string
|
||||
---@param dealership table
|
||||
addVehicleToGarage = function(PlayerData, model, mods, plate, dealership)
|
||||
local src = source
|
||||
if Config.framework == 'qb' or Config.framework == 'qbx' then
|
||||
MySQL.insert('INSERT INTO `player_vehicles` (license, citizenid, vehicle, hash, mods, plate) VALUES (?, ?, ?, ?, ?, ?)', { PlayerData.license, PlayerData.citizenid, model, GetHashKey(model), json.encode(mods), plate })
|
||||
|
||||
if Config.mInsurance.enable then
|
||||
local info = {}
|
||||
info.name = PlayerData.charinfo.firstname .. " " .. PlayerData.charinfo.lastname
|
||||
info.plate = plate
|
||||
info.model = model
|
||||
|
||||
if Config.mInsurance.inventory == "qb" then
|
||||
local Player = Config.core.Functions.GetPlayer(src)
|
||||
Player.Functions.AddItem('car_registration', 1, false, info)
|
||||
elseif Config.mInsurance.inventory == "ox" then
|
||||
local metadata = { description = 'Name: '..PlayerData.charinfo.firstname .. " " .. PlayerData.charinfo.lastname..' \nPlate: '..plate..' \nModel: '..model }
|
||||
exports.ox_inventory:AddItem(src, 'car_registration', 1, metadata)
|
||||
end
|
||||
end
|
||||
elseif Config.framework == 'esx' then
|
||||
MySQL.insert('INSERT INTO `owned_vehicles` (owner, plate, vehicle) VALUES (?, ?, ?)', { PlayerData.identifier, plate, json.encode({model = joaat(model), plate = plate}) })
|
||||
|
||||
if Config.mInsurance.enable then
|
||||
local xPlayer = Config.core.GetPlayerFromId(src)
|
||||
local name = xPlayer.getName()
|
||||
|
||||
local metadata = { description = 'Name: '..PlayerData.charinfo.firstname .. " " .. PlayerData.charinfo.lastname..' \nPlate: '..plate..' \nModel: '..model }
|
||||
exports.ox_inventory:AddItem(src, 'car_registration', 1, metadata)
|
||||
|
||||
MySQL.insert('INSERT INTO m_insurance_registration (plate, model, registration, identifier) VALUES (?, ?, ?, ?)', {plate, vehicle, 1, PlayerData.license})
|
||||
end
|
||||
end
|
||||
end
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,13 @@
|
|||
<!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>
|
BIN
resources/[Developer]/[Nordi]/pug-sling/.fxap
Normal file
BIN
resources/[Developer]/[Nordi]/pug-sling/.fxap
Normal file
Binary file not shown.
BIN
resources/[Developer]/[Nordi]/pug-sling/client/main.lua
Normal file
BIN
resources/[Developer]/[Nordi]/pug-sling/client/main.lua
Normal file
Binary file not shown.
172
resources/[Developer]/[Nordi]/pug-sling/client/open.lua
Normal file
172
resources/[Developer]/[Nordi]/pug-sling/client/open.lua
Normal file
|
@ -0,0 +1,172 @@
|
|||
print'Pug Sling 2.1.3'
|
||||
|
||||
CreateThread(function()
|
||||
local InVehicle
|
||||
while true do
|
||||
Wait(100)
|
||||
local entering = GetVehiclePedIsTryingToEnter(PlayerPedId())
|
||||
if entering ~= 0 then
|
||||
TriggerEvent("Pug:ReloadGuns:sling", true)
|
||||
Wait(2000)
|
||||
end
|
||||
if IsPedInAnyVehicle(PlayerPedId()) then
|
||||
if not InVehicle then
|
||||
InVehicle = true
|
||||
TriggerEvent("Pug:ReloadGuns:sling", true)
|
||||
Wait(2000)
|
||||
end
|
||||
else
|
||||
InVehicle = false
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
if not Config.UseOldSlingScript then
|
||||
RegisterNetEvent('Pug:ReloadGuns:sling', function(bool)
|
||||
ResetAllWeaponsOnBack(bool)
|
||||
for _, v in pairs(GetGamePool('CObject')) do
|
||||
if IsEntityAttachedToEntity(PlayerPedId(), v) then
|
||||
SetEntityAsMissionEntity(v, true, true)
|
||||
DeleteObject(v)
|
||||
DeleteEntity(v)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('QBCore:Client:OnPlayerLoaded')
|
||||
AddEventHandler('QBCore:Client:OnPlayerLoaded', function()
|
||||
Wait(3000)
|
||||
TriggerEvent("Pug:client:RegisterAllBackWeapons")
|
||||
end)
|
||||
RegisterNetEvent('esx:playerLoaded')
|
||||
AddEventHandler('esx:playerLoaded', function()
|
||||
Wait(3000)
|
||||
TriggerEvent("Pug:client:RegisterAllBackWeapons")
|
||||
end)
|
||||
|
||||
-- Change this to your notification script if needed
|
||||
function SlingNotify(msg, type, length)
|
||||
if Framework == "ESX" then
|
||||
FWork.ShowNotification(msg)
|
||||
elseif Framework == "QBCore" then
|
||||
FWork.Functions.Notify(msg, type, length)
|
||||
end
|
||||
end
|
||||
|
||||
-- INVENTORY HAS ITEM CHECK
|
||||
function CheckHasWeapon(Weapon)
|
||||
if GetResourceState("qs-inventory") == 'started' then
|
||||
local count = exports['qs-inventory']:Search(Weapon)
|
||||
if count > 0 then
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
elseif GetResourceState("qb-inventory") == 'started' then
|
||||
return exports['qb-inventory']:HasItem(Weapon)
|
||||
elseif GetResourceState("ps-inventory") == 'started' then
|
||||
return exports['ps-inventory']:HasItem(Weapon)
|
||||
elseif GetResourceState("ox_inventory") == 'started' then
|
||||
local count = exports.ox_inventory:GetItemCount(Weapon)
|
||||
if count > 0 then
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
elseif GetResourceState("core_inventory") == 'started' then
|
||||
if Framework == "QBCore" then
|
||||
local citizenid = FWork.Functions.GetPlayerData().citizenid
|
||||
local Primary = exports['core_inventory']:getItems('primary-' .. citizenid, Weapon)
|
||||
local Secondry = exports['core_inventory']:getItems('secondry-' .. citizenid, Weapon)
|
||||
if Primary > 0 or Secondry > 0 then
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
else
|
||||
return false
|
||||
end
|
||||
elseif Framework == "QBCore" then
|
||||
local FinalValue = false
|
||||
local items = FWork.Functions.GetPlayerData().items
|
||||
for _, v in pairs(items) do
|
||||
if v.name ~= nil then
|
||||
if tostring(v.name) == tostring(Weapon) then
|
||||
FinalValue = true
|
||||
end
|
||||
end
|
||||
end
|
||||
return FinalValue
|
||||
end
|
||||
end
|
||||
|
||||
local function CheckJobVerified()
|
||||
local PlayerJob = Config.FrameworkFunctions.GetPlayer().PlayerData.job.name
|
||||
for _,v in pairs(Config.RackCapableJobs) do
|
||||
if tostring(v) == tostring(PlayerJob) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
RegisterCommand(Config.WeaponRackCommand, function()
|
||||
if CheckJobVerified() then
|
||||
--IS IN VEHICLE
|
||||
if IsPedInAnyVehicle(PlayerPedId()) then
|
||||
local veh = GetVehiclePedIsUsing(PlayerPedId())
|
||||
local plate = GetVehicleNumberPlateText(veh)
|
||||
--IS EMERGENCY VEHICLE
|
||||
if GetVehicleClass(veh) == 18 then
|
||||
if Framework == "ESX" then
|
||||
if GetResourceState("qb-inventory") == 'started' or GetResourceState("ps-inventory") == 'started' then
|
||||
TriggerEvent("inventory:client:SetCurrentStash", "Rack".. plate)
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "stash", "Rack" .. plate, {
|
||||
maxweight = Config.RackMaxWeight,
|
||||
slots = Config.RackSlots,
|
||||
})
|
||||
elseif GetResourceState("qs-inventory") == 'started' then
|
||||
exports['qs-inventory']:RegisterStash("Rack".. plate, Config.RackSlots, Config.RackMaxWeight)
|
||||
elseif GetResourceState("ox_inventory") == 'started' then
|
||||
TriggerServerEvent("Pug:server:SlingOpenOxInvRack", "Rack".. plate, Config.RackSlots, Config.RackMaxWeight)
|
||||
exports.ox_inventory:openInventory('stash', "Rack".. plate)
|
||||
end
|
||||
else
|
||||
FWork.Functions.Progressbar("reaching_rack", "Reaching for rack", 4000, false, true, {
|
||||
disableMovement = false,
|
||||
disableCarMovement = false,
|
||||
disableMouse = false,
|
||||
disableCombat = true,
|
||||
}, {
|
||||
animDict = "move_m@intimidation@cop@unarmed",
|
||||
anim = "idle",
|
||||
flags = 49,
|
||||
}, {}, {}, function()
|
||||
if GetResourceState("qb-inventory") == 'started' or GetResourceState("ps-inventory") == 'started' then
|
||||
TriggerEvent("inventory:client:SetCurrentStash", "Rack".. plate)
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "stash", "Rack" .. plate, {
|
||||
maxweight = Config.RackMaxWeight,
|
||||
slots = Config.RackSlots,
|
||||
})
|
||||
elseif GetResourceState("qs-inventory") == 'started' then
|
||||
exports['qs-inventory']:RegisterStash("Rack".. plate, Config.RackSlots, Config.RackMaxWeight)
|
||||
elseif GetResourceState("ox_inventory") == 'started' then
|
||||
TriggerServerEvent("Pug:server:SlingOpenOxInvRack", "Rack".. plate, Config.RackSlots, Config.RackMaxWeight)
|
||||
exports.ox_inventory:openInventory('stash', "Rack".. plate)
|
||||
end
|
||||
end, function() -- Cancel
|
||||
SlingNotify("Canceled", "error", 4500)
|
||||
end)
|
||||
end
|
||||
else
|
||||
SlingNotify(Config.LangT.EmergencyServiceVehicle, "error")
|
||||
end
|
||||
else
|
||||
SlingNotify(Config.LangT.MustBeInVehicle, "error")
|
||||
end
|
||||
else
|
||||
SlingNotify(Config.LangT.NotPolice, "error")
|
||||
end
|
||||
end)
|
||||
end
|
300
resources/[Developer]/[Nordi]/pug-sling/config.lua
Normal file
300
resources/[Developer]/[Nordi]/pug-sling/config.lua
Normal file
|
@ -0,0 +1,300 @@
|
|||
Config = {}
|
||||
Config.UseOldSlingScript = false -- MAKKE THIS TRUE IF YOU WANT TO USE THE OLD VERSION OF THE SCRIPT. VIDEO FOUND HERE: https://youtu.be/Pf-B03cmFtQ
|
||||
if not Config.UseOldSlingScript then
|
||||
---------- [Framework] ----------
|
||||
-- (DONT TOUCH THIS UNLESS YOU HAVE A CUSTOM FRAMEWORK)
|
||||
if GetResourceState('es_extended') == 'started' then
|
||||
Framework = "ESX" -- (ESX) or (QBCore)
|
||||
elseif GetResourceState('qb-core') == 'started' then
|
||||
Framework = "QBCore" -- (ESX) or (QBCore)
|
||||
end
|
||||
if Framework == "QBCore" then
|
||||
Config.CoreName = "qb-core" -- your core name
|
||||
FWork = exports[Config.CoreName]:GetCoreObject()
|
||||
elseif Framework == "ESX" then
|
||||
Config.CoreName = "es_extended" -- your core name
|
||||
FWork = exports[Config.CoreName]:getSharedObject()
|
||||
end
|
||||
------------------------------
|
||||
---------- [INTAGERS] ----------
|
||||
Config.LoopSpeed = 500 -- How fast the loop to check weapons runs. Lower numbers are lest optimized.
|
||||
Config.RackMaxWeight = 45000 -- Rack stash weight capacity.
|
||||
Config.RackSlots = 2 -- Rack stash amount of item slots available.
|
||||
Config.WeaponLimit = 10 -- Ammount of weapons/items that will show up on the player when they have the item or weapon
|
||||
Config.AmountOfTimesToCheckIfTheModelIsLoaded = 10 -- This value adjust the amount of times to check to see if a modle is loaded. The check runs every 100 milliseconds
|
||||
------------------------------
|
||||
---------- [STRINGS] ----------
|
||||
Config.WeaponRackCommand = "rack" -- /rack command to rack weapons into any service vehicles
|
||||
Config.WeaponSettingCommand = "setweapon" -- (GLOBAL POSITION FOR EVERYONE) /setweapon command to begin editing where the weapons/items should sit on the player
|
||||
Config.PersonalWeponSettingsCommand = "weaponposition" -- (PLAYERS PERSONAL POSITION THAT THEY SET HOW THEY LIKE) You can remove this command from the server.lua
|
||||
------------------------------
|
||||
---------- [TABLES] ----------
|
||||
Config.RackCapableJobs = { -- Jobs that can do the /rack command
|
||||
"leo",
|
||||
"police",
|
||||
"sheriff",
|
||||
}
|
||||
------------------------------
|
||||
Config.LangT = {
|
||||
DeleteFromConfig = "DELETE FROM CONFIG",
|
||||
Change = "CHANGE ",
|
||||
ToggleWeapons = "ALL WEAPONS ON/OFF",
|
||||
RotateZ = "ROTATE Z",
|
||||
Up = "UP",
|
||||
Down = "DOWN",
|
||||
Left = "LEFT",
|
||||
Right = "RIGHT",
|
||||
In = "In",
|
||||
Out = "Out",
|
||||
Rotate = "ROTATE",
|
||||
MustBeInVehicle = "You must be in a vehicle",
|
||||
NotPolice = "You are not a police Officer",
|
||||
EmergencyServiceVehicle = "Must be in a emergency service vehicle!",
|
||||
}
|
||||
-- THE ATTACHMENTS WORK BUT SOME SERVERS HAD CRASHING ISSUES WHEN THEY WERE UNHASHED. YOU CAN UNHASH THEM BUT IF YOU CRASH THEN HASH THEM BACK OUT.
|
||||
Config.WeaponsOnBack = {-- THE ATTACHMENTS WORK BUT SOME SERVERS HAD CRASHING ISSUES WHEN THEY WERE UNHASHED. YOU CAN UNHASH THEM BUT IF YOU CRASH THEN HASH THEM BACK OUT.
|
||||
-- Pistols
|
||||
["weapon_pistol"] = { model = "w_pi_pistol" },
|
||||
|
||||
-- Assault Rifles
|
||||
["weapon_carbinerifle"] = { -- THE ATTACHMENTS WORK BUT SOME SERVERS HAD CRASHING ISSUES WHEN THEY WERE UNHASHED. YOU CAN UNHASH THEM BUT IF YOU CRASH THEN HASH THEM BACK OUT.
|
||||
model = "w_ar_carbinerifle",
|
||||
-- Attachments = {
|
||||
-- ["COMPONENT_CARBINERIFLE_CLIP_01"] = {Base = 'WAPClip',Component = "W_AR_CARBINERIFLE_MAG1"},
|
||||
-- ["COMPONENT_CARBINERIFLE_CLIP_02"] = {Base = 'WAPClip',Component = "W_AR_CARBINERIFLE_MAG2"},
|
||||
-- ["COMPONENT_AT_AR_FLSH"] = {Base = 'WAPFlshLasr',Component = "W_AT_AR_FLSH"},
|
||||
-- ["COMPONENT_AT_SCOPE_MEDIUM"] = {Base = 'WAPScop',Component = "W_AT_SCOPE_MEDIUM"},
|
||||
-- ["COMPONENT_AT_AR_SUPP"] = {Base = 'WAPSupp', Component = "W_AT_AR_SUPP"},
|
||||
-- ["COMPONENT_AT_AR_AFGRIP"] = {Base = 'WAPGrip',Component = "W_AT_AR_AFGRIP"},
|
||||
-- }
|
||||
},
|
||||
["weapon_compactrifle"] = {
|
||||
model = "w_ar_assaultrifle_smg",
|
||||
-- Attachments = {
|
||||
-- ["COMPONENT_COMPACTRIFLE_CLIP_01"] = {Base = 'WAPClip', Component = "w_ar_assaultrifle_smg_mag1"},
|
||||
-- ["COMPONENT_COMPACTRIFLE_CLIP_02"] = {Base = 'WAPClip', Component = "w_ar_assaultrifle_smg_mag2"},
|
||||
-- ["COMPONENT_AT_AR_FLSH"] = {Base = 'WAPFlshLasr', Component = "W_AT_AR_FLSH"},
|
||||
-- ["COMPONENT_AT_SCOPE_MACRO"] = {Base = 'WAPScop', Component = "w_at_scope_macro"},
|
||||
-- ["COMPONENT_AT_AR_AFGRIP"] = {Base = 'WAPGrip', Component = "W_AT_AR_AFGRIP"},
|
||||
-- }
|
||||
},
|
||||
["weapon_carbinerifle_mk2"] = {
|
||||
model = "w_ar_carbineriflemk2",
|
||||
-- Attachments = {
|
||||
-- ["COMPONENT_CARBINERIFLE_MK2_CLIP_01"] = {Base = 'WAPClip', Component = "w_ar_carbineriflemk2_mag1"},
|
||||
-- ["COMPONENT_CARBINERIFLE_MK2_CLIP_02"] = {Base = 'WAPClip', Component = "w_ar_carbineriflemk2_mag2"},
|
||||
-- ["COMPONENT_AT_AR_FLSH"] = {Base = 'WAPFlshLasr', Component = "W_AT_AR_FLSH"},
|
||||
-- ["COMPONENT_AT_SIGHTS"] = {Base = 'WAPScop', Component = "w_at_sights_1"},
|
||||
-- ["COMPONENT_AT_AR_SUPP"] = {Base = 'WAPSupp', Component = "W_AT_AR_SUPP"},
|
||||
-- ["COMPONENT_AT_MUZZLE_01"] = {Base = 'WAPSupp', Component = "w_at_muzzle_1"},
|
||||
-- ["COMPONENT_AT_AR_AFGRIP_02"] = {Base = 'WAPGrip', Component = "w_at_afgrip_2"},
|
||||
-- ["COMPONENT_CARBINERIFLE_MK2_CAMO"] = {Base = 'Cosmetic', Component = "w_at_cr_camo1"},
|
||||
-- }
|
||||
},
|
||||
["weapon_assaultrifle"] = {
|
||||
model = "w_ar_assaultrifle",
|
||||
-- Attachments = {
|
||||
-- ["COMPONENT_ASSAULTRIFLE_CLIP_01"] = {Base = 'WAPClip', Component = "w_ar_assaultrifle_mag1"},
|
||||
-- ["COMPONENT_ASSAULTRIFLE_CLIP_02"] = {Base = 'WAPClip', Component = "w_ar_assaultrifle_mag2"},
|
||||
-- ["COMPONENT_ASSAULTRIFLE_CLIP_03"] = {Base = 'WAPClip', Component = "w_ar_assaultrifle_boxmag"},
|
||||
-- ["COMPONENT_AT_AR_FLSH"] = {Base = 'WAPFlshLasr', Component = "W_AT_AR_FLSH"},
|
||||
-- ["COMPONENT_AT_SCOPE_MACRO"] = {Base = 'WAPScop', Component = "w_at_scope_macro"},
|
||||
-- ["COMPONENT_AT_AR_SUPP_02"] = {Base = 'WAPSupp', Component = "w_at_ar_supp_02"},
|
||||
-- ["COMPONENT_AT_AR_AFGRIP"] = {Base = 'WAPGrip', Component = "W_AT_AR_AFGRIP"},
|
||||
-- }
|
||||
},
|
||||
["weapon_specialcarbine"] = {
|
||||
model = "w_ar_specialcarbine",
|
||||
-- Attachments = {
|
||||
-- ["COMPONENT_SPECIALCARBINE_CLIP_01"] = {Base = 'WAPClip', Component = "w_ar_specialcarbine_mag1"},
|
||||
-- ["COMPONENT_SPECIALCARBINE_CLIP_02"] = {Base = 'WAPClip', Component = "w_ar_specialcarbine_mag2"},
|
||||
-- ["COMPONENT_SPECIALCARBINE_CLIP_03"] = {Base = 'WAPClip', Component = "w_ar_specialcarbine_boxmag"},
|
||||
-- ["COMPONENT_AT_AR_FLSH"] = {Base = 'WAPFlshLasr', Component = "W_AT_AR_FLSH"},
|
||||
-- ["COMPONENT_AT_SCOPE_MEDIUM"] = {Base = 'WAPScop', Component = "w_at_scope_medium"},
|
||||
-- ["COMPONENT_AT_AR_SUPP_02"] = {Base = 'WAPSupp', Component = "w_at_ar_supp_02"},
|
||||
-- ["COMPONENT_AT_AR_AFGRIP"] = {Base = 'WAPGrip', Component = "W_AT_AR_AFGRIP"},
|
||||
-- ["COMPONENT_SPECIALCARBINE_VARMOD_LOWRIDER"] = {Base = 'Cosmetic', Component = "w_ar_specialcarbine_luxe"},
|
||||
-- }
|
||||
},
|
||||
["weapon_bullpuprifle"] = {
|
||||
model = "w_ar_bullpuprifle",
|
||||
-- Attachments = {
|
||||
-- ["COMPONENT_BULLPUPRIFLE_CLIP_01"] = {Base = 'WAPClip', Component = "w_ar_bullpuprifle_mag1"},
|
||||
-- ["COMPONENT_BULLPUPRIFLE_CLIP_02"] = {Base = 'WAPClip', Component = "w_ar_bullpuprifle_mag2"},
|
||||
-- ["COMPONENT_AT_AR_FLSH"] = {Base = 'WAPFlshLasr', Component = "W_AT_AR_FLSH"},
|
||||
-- ["COMPONENT_AT_SCOPE_SMALL"] = {Base = 'WAPScop', Component = "w_at_scope_small"},
|
||||
-- ["COMPONENT_AT_AR_SUPP"] = {Base = 'WAPSupp', Component = "w_at_ar_supp"},
|
||||
-- ["COMPONENT_AT_AR_AFGRIP"] = {Base = 'WAPGrip', Component = "W_AT_AR_AFGRIP"},
|
||||
-- }
|
||||
},
|
||||
["weapon_advancedrifle"] = {
|
||||
model = "w_ar_advancedrifle",
|
||||
-- Attachments = {
|
||||
-- ["COMPONENT_ADVANCEDRIFLE_CLIP_01"] = {Base = 'WAPClip', Component = "w_ar_advancedrifle_mag1"},
|
||||
-- ["COMPONENT_ADVANCEDRIFLE_CLIP_02"] = {Base = 'WAPClip', Component = "w_ar_advancedrifle_mag2"},
|
||||
-- ["COMPONENT_AT_AR_FLSH"] = {Base = 'WAPFlshLasr', Component = "W_AT_AR_FLSH"},
|
||||
-- ["COMPONENT_AT_SCOPE_SMALL"] = {Base = 'WAPScop', Component = "w_at_scope_small"},
|
||||
-- ["COMPONENT_AT_AR_SUPP"] = {Base = 'WAPSupp', Component = "w_at_ar_supp"},
|
||||
-- }
|
||||
},
|
||||
|
||||
-- Sub Machine Guns
|
||||
["weapon_microsmg"] = {
|
||||
model = "w_sb_microsmg",
|
||||
-- Attachments = {
|
||||
-- ["COMPONENT_MICROSMG_CLIP_01"] = {Base = 'WAPClip', Component = "w_sb_microsmg_mag1"},
|
||||
-- ["COMPONENT_MICROSMG_CLIP_02"] = {Base = 'WAPClip', Component = "w_sb_microsmg_mag2"},
|
||||
-- ["COMPONENT_AT_PI_FLSH"] = {Base = 'WAPFlshLasr', Component = "w_at_pi_flsh"},
|
||||
-- ["COMPONENT_AT_SCOPE_MACRO"] = {Base = 'WAPScop', Component = "w_at_scope_macro"},
|
||||
-- ["COMPONENT_AT_AR_SUPP_02"] = {Base = 'WAPSupp', Component = "w_at_ar_supp_02"},
|
||||
-- }
|
||||
},
|
||||
["weapon_assaultsmg"] = {
|
||||
model = "w_sb_assaultsmg",
|
||||
-- Attachments = {
|
||||
-- ["COMPONENT_ASSAULTSMG_CLIP_01"] = {Base = 'WAPClip', Component = "W_SB_ASSAULTSMG_Mag1"},
|
||||
-- ["COMPONENT_ASSAULTSMG_CLIP_02"] = {Base = 'WAPClip', Component = "W_SB_ASSAULTSMG_Mag2"},
|
||||
-- ["COMPONENT_AT_AR_FLSH"] = {Base = 'WAPFlshLasr', Component = "W_AT_AR_FLSH"},
|
||||
-- ["COMPONENT_AT_SCOPE_MACRO"] = {Base = 'WAPScop', Component = "w_at_scope_macro"},
|
||||
-- ["COMPONENT_AT_AR_SUPP_02"] = {Base = 'WAPSupp', Component = "w_at_ar_supp_02"},
|
||||
-- }
|
||||
},
|
||||
["weapon_smg"] = {
|
||||
model = "w_sb_smg",
|
||||
-- Attachments = {
|
||||
-- ["COMPONENT_SMG_CLIP_01"] = {Base = 'WAPClip', Component = "w_sb_smg_mag1"},
|
||||
-- ["COMPONENT_SMG_CLIP_02"] = {Base = 'WAPClip', Component = "w_sb_smg_mag2"},
|
||||
-- ["COMPONENT_SMG_CLIP_03"] = {Base = 'WAPClip', Component = "w_sb_smg_boxmag"},
|
||||
-- ["COMPONENT_AT_AR_FLSH"] = {Base = 'WAPFlshLasr', Component = "W_AT_AR_FLSH"},
|
||||
-- ["COMPONENT_AT_SCOPE_MACRO_02"] = {Base = 'WAPScop_2', Component = "w_at_scope_macro_2"},
|
||||
-- ["COMPONENT_AT_PI_SUPP"] = {Base = 'WAPSupp', Component = "w_at_pi_supp"},
|
||||
-- }
|
||||
},
|
||||
["weapon_smg_mk2"] = {
|
||||
model = "w_sb_smgmk2",
|
||||
-- Attachments = {
|
||||
-- ["COMPONENT_SMG_MK2_CLIP_01"] = {Base = 'WAPClip', Component = "w_sb_smgmk2_mag1"},
|
||||
-- ["COMPONENT_SMG_MK2_CLIP_02"] = {Base = 'WAPClip', Component = "w_sb_smgmk2_mag2"},
|
||||
-- ["COMPONENT_AT_AR_FLSH"] = {Base = 'WAPFlshLasr', Component = "W_AT_AR_FLSH"},
|
||||
-- ["COMPONENT_AT_SIGHTS"] = {Base = 'WAPScop', Component = "w_at_sights_1"},
|
||||
-- ["COMPONENT_AT_SCOPE_SMALL"] = {Base = 'WAPScop', Component = "w_at_scope_small"},
|
||||
-- ["COMPONENT_AT_AR_AFGRIP_02"] = {Base = 'WAPGrip', Component = "w_at_afgrip_2"},
|
||||
-- }
|
||||
},
|
||||
["weapon_gusenberg"] = {
|
||||
model = "w_sb_gusenberg",
|
||||
-- Attachments = {
|
||||
-- ["COMPONENT_GUSENBERG_CLIP_01"] = {Base = 'WAPClip', Component = "w_sb_gusenberg_mag1"},
|
||||
-- ["COMPONENT_GUSENBERG_CLIP_02"] = {Base = 'WAPClip', Component = "w_sb_gusenberg_mag2"},
|
||||
-- }
|
||||
},
|
||||
|
||||
-- Sniper Rifles
|
||||
["weapon_musket"] = { model = "w_ar_musket" },
|
||||
["weapon_sniperrifle"] = {
|
||||
model = "w_sr_sniperrifle",
|
||||
-- Attachments = {
|
||||
-- ["COMPONENT_SNIPERRIFLE_CLIP_01"] = {Base = 'WAPClip', Component = "w_sr_sniperrifle_mag1"},
|
||||
-- ["COMPONENT_AT_SCOPE_LARGE"] = {Base = 'WAPScop', Component = "w_at_scope_large"},
|
||||
-- ["COMPONENT_AT_SCOPE_MAX"] = {Base = 'WAPScop', Component = "w_at_scope_max"},
|
||||
-- ["COMPONENT_AT_AR_SUPP_02"] = {Base = 'WAPSupp', Component = "w_at_ar_supp_02"},
|
||||
-- }
|
||||
},
|
||||
|
||||
-- Shotguns
|
||||
["weapon_sawnoffshotgun"] = { model = "w_sg_sawnoff" },
|
||||
["weapon_assaultshotgun"] = {
|
||||
model = "w_sg_assaultshotgun",
|
||||
-- Attachments = {
|
||||
-- ["COMPONENT_ASSAULTSHOTGUN_CLIP_01"] = {Base = 'WAPClip', Component = "w_sg_assaultshotgun_mag1"},
|
||||
-- ["COMPONENT_ASSAULTSHOTGUN_CLIP_02"] = {Base = 'WAPClip', Component = "w_sg_assaultshotgun_mag2"},
|
||||
-- ["COMPONENT_AT_AR_FLSH"] = {Base = 'WAPFlshLasr', Component = "W_AT_AR_FLSH"},
|
||||
-- ["COMPONENT_AT_AR_SUPP"] = {Base = 'WAPSupp', Component = "w_at_ar_supp"},
|
||||
-- ["COMPONENT_AT_AR_AFGRIP"] = {Base = 'WAPGrip', Component = "w_at_ar_afgrip"},
|
||||
-- }
|
||||
},
|
||||
["weapon_bullpupshotgun"] = {
|
||||
model = "w_sg_bullpupshotgun",
|
||||
-- Attachments = {
|
||||
-- ["COMPONENT_AT_AR_FLSH"] = {Base = 'WAPFlshLasr', Component = "W_AT_AR_FLSH"},
|
||||
-- ["COMPONENT_AT_AR_SUPP_02"] = {Base = 'WAPSupp', Component = "w_at_ar_supp_02"},
|
||||
-- ["COMPONENT_AT_AR_AFGRIP"] = {Base = 'WAPGrip', Component = "w_at_ar_afgrip"},
|
||||
-- }
|
||||
},
|
||||
["weapon_pumpshotgun"] = {
|
||||
model = "w_sg_pumpshotgun",
|
||||
-- Attachments = {
|
||||
-- ["COMPONENT_AT_AR_FLSH"] = {Base = 'WAPFlshLasr', Component = "W_AT_AR_FLSH"},
|
||||
-- ["COMPONENT_AT_SR_SUPP"] = {Base = 'WAPSupp', Component = "W_AT_AR_SUPP"},
|
||||
-- }
|
||||
},
|
||||
["weapon_heavyshotgun"] = {
|
||||
model = "w_sg_heavyshotgun",
|
||||
-- Attachments = {
|
||||
-- ["COMPONENT_HEAVYSHOTGUN_CLIP_01"] = {Base = 'WAPClip', Component = "w_sg_heavyshotgun_mag1"},
|
||||
-- ["COMPONENT_HEAVYSHOTGUN_CLIP_02"] = {Base = 'WAPClip', Component = "w_sg_heavyshotgun_mag2"},
|
||||
-- ["COMPONENT_HEAVYSHOTGUN_CLIP_03"] = {Base = 'WAPClip', Component = "w_sg_heavyshotgun_boxmag"},
|
||||
-- ["COMPONENT_AT_AR_FLSH"] = {Base = 'WAPFlshLasr', Component = "W_AT_AR_FLSH"},
|
||||
-- ["COMPONENT_AT_AR_SUPP_02"] = {Base = 'WAPSupp', Component = "w_at_ar_supp_02"},
|
||||
-- ["COMPONENT_AT_AR_AFGRIP"] = {Base = 'WAPGrip', Component = "w_at_ar_afgrip"},
|
||||
-- }
|
||||
},
|
||||
|
||||
-- Melee Weapons
|
||||
["weapon_machete"] = { model = "w_me_machette_lr" },
|
||||
["weapon_bat"] = { model = "w_me_bat" },
|
||||
|
||||
-- Items
|
||||
["cokebaggy"] = { model = "bkr_prop_coke_cutblock_01" },
|
||||
["markedbills"] = { model = "prop_money_bag_01" },
|
||||
["meth"] = { model = "hei_prop_pill_bag_01" },
|
||||
["weed_brick"] = { model = "bkr_prop_weed_drying_02a" },
|
||||
["fishingrod"] = { model = "prop_fishing_rod_02" },
|
||||
["fishingrod2"] = { model = "prop_fishing_rod_01" },
|
||||
["fishingrod3"] = { model = "prop_fishing_rod_01" },
|
||||
|
||||
-- Addon weapons
|
||||
-- ["weapon_katana"] = { model = "w_me_katana"},
|
||||
-- ["weapon_remington"] = { model = "w_sg_remington" },
|
||||
-- ["weapon_mp5"] = { model = "w_sb_mp5" },
|
||||
-- ["weapon_huntingrifle"] = { model = "w_sr_huntingrifle" },
|
||||
}
|
||||
------------------------------
|
||||
------------------------------
|
||||
--## DONT CHANGE ANY OF THESE ##--
|
||||
Config.FrameworkFunctions = {
|
||||
-- Client-side trigger callback
|
||||
TriggerCallback = function(...)
|
||||
if Framework == 'QBCore' then
|
||||
FWork.Functions.TriggerCallback(...)
|
||||
else
|
||||
FWork.TriggerServerCallback(...)
|
||||
end
|
||||
end,
|
||||
|
||||
-- Server-side register callback
|
||||
CreateCallback = function(...)
|
||||
if Framework == 'QBCore' then
|
||||
FWork.Functions.CreateCallback(...)
|
||||
else
|
||||
FWork.RegisterServerCallback(...)
|
||||
end
|
||||
end,
|
||||
|
||||
GetPlayer = function()
|
||||
local self = {}
|
||||
if Framework == 'QBCore' then
|
||||
player = FWork.Functions.GetPlayerData()
|
||||
self.PlayerData = { job = { name = player.job.name} }
|
||||
return self
|
||||
else
|
||||
player = FWork.GetPlayerData()
|
||||
self.PlayerData = { job = { name = player.job.name }}
|
||||
return self
|
||||
end
|
||||
return nil
|
||||
end,
|
||||
}
|
||||
------------------------------
|
||||
------------------------------
|
||||
end
|
31
resources/[Developer]/[Nordi]/pug-sling/fxmanifest.lua
Normal file
31
resources/[Developer]/[Nordi]/pug-sling/fxmanifest.lua
Normal file
|
@ -0,0 +1,31 @@
|
|||
lua54 'yes'
|
||||
fx_version 'cerulean'
|
||||
game 'gta5'
|
||||
|
||||
author 'Discord: zpug'
|
||||
description 'pug-sling'
|
||||
version '2.1.3'
|
||||
|
||||
shared_scripts {
|
||||
'config.lua',
|
||||
'old-sling/config-old.lua',
|
||||
}
|
||||
|
||||
server_script 'server/main.lua'
|
||||
client_script {
|
||||
'client/main.lua',
|
||||
'client/open.lua',
|
||||
'old-sling/client-old.lua',
|
||||
}
|
||||
|
||||
file 'json/config-weapons.json'
|
||||
|
||||
escrow_ignore {
|
||||
'config.lua',
|
||||
'client/open.lua',
|
||||
'server/main.lua',
|
||||
'json/config-weapons.json',
|
||||
|
||||
'old-sling/config-old.lua',
|
||||
}
|
||||
dependency '/assetpacks'
|
|
@ -0,0 +1 @@
|
|||
[{"z":0.17,"WeaponModel":"fishingrod","bone":36,"zR":-13.5,"WeaponProp":"prop_fishing_rod_02","yR":103.34645567461848,"xR":-9.01574753224849,"x":0.0,"y":-0.08999999999999},{"z":0.03999999999999,"WeaponModel":"weapon_pistol","bone":36,"zR":0.0,"WeaponProp":"w_pi_pistol","yR":-209.99999856576324,"xR":-185.59054903686048,"x":-0.13999999999999,"y":-0.13999999999999},{"z":0.14999999999999,"WeaponModel":"fishingrod2","bone":36,"zR":-9.0,"WeaponProp":"prop_fishing_rod_01","yR":114.92125941440465,"xR":-18.54330701753497,"x":0.0,"y":-0.10999999999999},{"z":-0.08,"WeaponModel":"weapon_advancedrifle","bone":36,"zR":-1.5,"WeaponProp":"w_ar_advancedrifle","yR":-180.27558963745833,"xR":3.85826759040355,"x":0.06999999999999,"y":-0.14999999999999},{"z":0.03,"WeaponModel":"weapon_bat","bone":36,"zR":-1.5,"WeaponProp":"w_me_bat","yR":95.1181093044579,"xR":-2.36220469698309,"x":0.0,"y":-0.15999999999999},{"z":-0.04999999999999,"WeaponModel":"weapon_carbinerifle_mk2","bone":36,"zR":1.5,"WeaponProp":"w_ar_carbineriflemk2","yR":130.62992081046105,"xR":1.53543286025524,"x":0.29,"y":-0.16999999999999},{"z":0.04999999999999,"WeaponModel":"weapon_carbinerifle","bone":36,"zR":-7.5,"WeaponProp":"w_ar_carbinerifle","yR":64.48818914592266,"xR":0.51181092858314,"x":0.17,"y":0.17},{"z":0.07,"WeaponModel":"weapon_bullpupshotgun","bone":36,"zR":-4.5,"WeaponProp":"w_sg_bullpupshotgun","yR":0.0,"xR":0.0,"x":0.0,"y":-0.13999999999999},{"z":-0.10999999999999,"WeaponModel":"weapon_musket","bone":36,"zR":0.0,"WeaponProp":"w_ar_musket","yR":186.1023604311049,"xR":0.51181094720959,"x":0.39,"y":-0.15999999999999},{"z":0.21,"WeaponModel":"weapon_sawnoffshotgun","bone":36,"zR":-36.0,"WeaponProp":"w_sg_sawnoff","yR":121.37795131653549,"xR":20.82677146419882,"x":0.4,"y":0.02},{"z":0.03,"WeaponModel":"weed_brick","bone":36,"zR":-15.0,"WeaponProp":"bkr_prop_weed_drying_02a","yR":-61.33858216926455,"xR":-1.61417311057448,"x":0.0,"y":-0.2},{"z":0.09,"WeaponModel":"weapon_compactrifle","bone":36,"zR":-4.5,"WeaponProp":"w_ar_assaultrifle_smg","yR":55.31496053561568,"xR":8.14960626885295,"x":0.0,"y":0.17},{"z":0.12999999999999,"WeaponModel":"meth","bone":36,"zR":-19.5,"WeaponProp":"hei_prop_pill_bag_01","yR":96.22047184035182,"xR":-7.5984251499176,"x":-0.24,"y":-0.09999999999999},{"z":0.06,"WeaponModel":"weapon_bullpuprifle","bone":36,"zR":0.0,"WeaponProp":"w_ar_bullpuprifle","yR":0.0,"xR":0.0,"x":0.17,"y":-0.14999999999999},{"z":-0.15,"WeaponModel":"fishingrod3","bone":36,"zR":-15.0,"WeaponProp":"prop_fishing_rod_01","yR":77.51968448981643,"xR":-18.7795277684927,"x":0.0,"y":-0.10999999999999},{"z":0.2,"WeaponModel":"weapon_machete","bone":36,"zR":-1.5,"WeaponProp":"w_me_machette_lr","yR":-75.86614115163684,"xR":-71.1417325772345,"x":-0.06,"y":-0.04999999999999},{"z":0.05,"WeaponModel":"weapon_heavyshotgun","bone":36,"zR":1.5,"WeaponProp":"w_sg_heavyshotgun","yR":61.0629915446043,"xR":-2.75590546429157,"x":0.13999999999999,"y":-0.14999999999999},{"z":0.08,"WeaponModel":"weapon_pumpshotgun","bone":36,"zR":12.0,"WeaponProp":"w_sg_pumpshotgun","yR":83.81889715790749,"xR":1.33858261629939,"x":0.35,"y":-0.15999999999999},{"z":-0.23,"WeaponModel":"cokebaggy","bone":36,"zR":84.0,"WeaponProp":"bkr_prop_coke_cutblock_01","yR":-2.44094524532556,"xR":5.3937011770904,"x":-0.3,"y":0.05},{"z":0.06,"WeaponModel":"weapon_assaultsmg","bone":36,"zR":-6.0,"WeaponProp":"w_sb_assaultsmg","yR":26.57480303198099,"xR":-9.96062995865941,"x":0.11999999999999,"y":-0.14999999999999},{"z":-0.09999999999999,"WeaponModel":"weapon_assaultshotgun","bone":36,"zR":0.0,"WeaponProp":"w_sg_assaultshotgun","yR":39.88188944756985,"xR":-171.22047116979958,"x":0.11999999999999,"y":-0.14999999999999},{"z":0.06,"WeaponModel":"weapon_specialcarbine","bone":36,"zR":0.0,"WeaponProp":"w_ar_specialcarbine","yR":0.39370089769363,"xR":1.18110233917832,"x":0.22,"y":-0.15999999999999},{"z":-0.10999999999999,"WeaponModel":"weapon_sniperrifle","bone":36,"zR":0.0,"WeaponProp":"w_sr_sniperrifle","yR":-1.33858224377036,"xR":185.2755897305906,"x":0.05,"y":-0.14999999999999},{"z":0.09999999999999,"WeaponModel":"weapon_smg","bone":36,"zR":-12.0,"WeaponProp":"w_sb_smg","yR":60.98425174131989,"xR":15.47244081273675,"x":0.19,"y":0.14},{"z":-0.02,"WeaponModel":"weapon_microsmg","bone":36,"zR":-10.5,"WeaponProp":"w_sb_microsmg","yR":66.81102283298969,"xR":180.23622082546354,"x":0.24,"y":0.16},{"z":0.04,"WeaponModel":"weapon_gusenberg","bone":36,"zR":0.0,"WeaponProp":"w_sb_gusenberg","yR":0.0,"xR":0.0,"x":0.28,"y":-0.14999999999999},{"z":-0.15999999999999,"WeaponModel":"markedbills","bone":36,"zR":-10.5,"WeaponProp":"prop_money_bag_01","yR":88.93700690940023,"xR":21.37795263901353,"x":-0.52,"y":-0.07999999999999}]
|
BIN
resources/[Developer]/[Nordi]/pug-sling/old-sling/client-old.lua
Normal file
BIN
resources/[Developer]/[Nordi]/pug-sling/old-sling/client-old.lua
Normal file
Binary file not shown.
107
resources/[Developer]/[Nordi]/pug-sling/old-sling/config-old.lua
Normal file
107
resources/[Developer]/[Nordi]/pug-sling/old-sling/config-old.lua
Normal file
|
@ -0,0 +1,107 @@
|
|||
if Config.UseOldSlingScript then
|
||||
Config2 = {}
|
||||
Config2.CoreName = "qb-core" -- Only change this if you have changed your core name.
|
||||
Config2.Inventory = "qb-inventory" -- Inventory type (ox_inventory, qb-inventory, lj-inventory etc.)
|
||||
|
||||
Config2.LoopSpeed = 500 -- How fast the loop to check weapons runs. Lower numbers are lest optimized.
|
||||
|
||||
Config2.Placement = {
|
||||
["Back"] = {
|
||||
bone = 24816,
|
||||
x = 0.275, -- up and down
|
||||
y = -0.165, -- in and out
|
||||
z = 0.02, -- left and right
|
||||
x_rotation = 0.0,
|
||||
y_rotation = 0.0,
|
||||
z_rotation = 0.0
|
||||
},
|
||||
["Front"] = {
|
||||
bone = 10706,
|
||||
x = 0.0, -- up and down
|
||||
y = 0.19, -- in and out
|
||||
z = -0.25, -- left and right
|
||||
x_rotation = 0.0, -- flips the gun how you would want
|
||||
y_rotation = 75.0, -- tilts sideways
|
||||
z_rotation = 180.0 -- tilts into ped
|
||||
}
|
||||
}
|
||||
Config2.PlacementSecond = {
|
||||
["Back"] = {
|
||||
bone = 24816,
|
||||
x = 0.235, -- up and down
|
||||
y = -0.165, -- in and out
|
||||
z = -0.08, -- left and right
|
||||
x_rotation = 180.0, -- flips the gun how you would want
|
||||
y_rotation = 0.0, -- tilts sideways
|
||||
z_rotation = 0.0 -- tilts into ped
|
||||
},
|
||||
["Front"] = {
|
||||
bone = 24816,
|
||||
x = 0.275, -- up and down
|
||||
y = -0.165, -- in and out
|
||||
z = 0.02, -- left and right
|
||||
x_rotation = 0.0, -- flips the gun how you would want
|
||||
y_rotation = 0.0, -- tilts sideways
|
||||
z_rotation = 0.0 -- tilts into ped
|
||||
}
|
||||
}
|
||||
Config2.PlacementThird = {
|
||||
["Back"] = {
|
||||
bone = 10706,
|
||||
x = 0.0, -- up and down
|
||||
y = 0.19, -- in and out
|
||||
z = -0.25, -- left and right
|
||||
x_rotation = 0.0, -- flips the gun how you would want
|
||||
y_rotation = 75.0, -- tilts sideways
|
||||
z_rotation = 180.0 -- tilts into ped
|
||||
},
|
||||
["Front"] = {
|
||||
bone = 24816,
|
||||
x = 0.235, -- up and down
|
||||
y = -0.165, -- in and out
|
||||
z = -0.08, -- left and right
|
||||
x_rotation = 180.0, -- flips the gun how you would want
|
||||
y_rotation = 0.0, -- tilts sideways
|
||||
z_rotation = 0.0 -- tilts into ped
|
||||
}
|
||||
}
|
||||
|
||||
-- To add custom rotations to items or weapons all you need to do is add the "x_rotation = 0.0, y_rotation = 90.0, z_rotation = 0.0"
|
||||
-- as seen for the "weapon_machete" for example and adjust the values of the rotations.
|
||||
Config2.WeaponsOnBack = {
|
||||
-- assault rifles:
|
||||
["weapon_carbinerifle"] = { model = "w_ar_carbinerifle" },
|
||||
["weapon_compactrifle"] = { model = "w_ar_assaultrifle_smg" },
|
||||
["weapon_carbinerifle_mk2"] = { model = "w_ar_carbineriflemk2" },
|
||||
["weapon_assaultrifle"] = { model = "w_ar_assaultrifle" },
|
||||
["weapon_specialcarbine"] = { model = "w_ar_specialcarbine" },
|
||||
["weapon_bullpuprifle"] = { model = "w_ar_bullpuprifle" },
|
||||
["weapon_advancedrifle"] = { model = "w_ar_advancedrifle" },
|
||||
-- sub machine guns:
|
||||
["weapon_microsmg"] = { model = "w_sb_microsmg" },
|
||||
["weapon_assaultsmg"] = { model = "w_sb_assaultsmg" },
|
||||
["weapon_smg"] = { model = "w_sb_smg" },
|
||||
["weapon_smg_mk2"] = { model = "w_sb_smgmk2" },
|
||||
["weapon_gusenberg"] = { model = "w_sb_gusenberg" },
|
||||
-- sniper rifles:
|
||||
["weapon_sniperrifle"] = { model = "w_sr_sniperrifle" },
|
||||
-- shotguns:
|
||||
["weapon_sawnoffshotgun"] = { model = "w_sg_sawnoff" },
|
||||
["weapon_assaultshotgun"] = { model = "w_sg_assaultshotgun" },
|
||||
["weapon_bullpupshotgun"] = { model = "w_sg_bullpupshotgun" },
|
||||
["weapon_pumpshotgun"] = { model = "w_sg_pumpshotgun" },
|
||||
["weapon_musket"] = { model = "w_ar_musket" },
|
||||
["weapon_heavyshotgun"] = { model = "w_sg_heavyshotgun" },
|
||||
-- mele weapons
|
||||
["weapon_machete"] = { model = "w_me_machette_lr", x_rotation = 0.0, y_rotation = 90.0, z_rotation = 0.0 },
|
||||
["weapon_bat"] = { model = "w_me_bat", x_rotation = 0.0, y_rotation = 90.0, z_rotation = 0.0 },
|
||||
["coke_brick"] = { model = "bkr_prop_coke_cutblock_01", x_rotation = 0.0, y_rotation = 90.0, z_rotation = 90.0 },
|
||||
["markedbills"] = { model = "prop_money_bag_01", x_rotation = 0.0, y_rotation = 90.0, z_rotation = 0.0 },
|
||||
|
||||
-- Addon weapons
|
||||
["weapon_katana"] = { model = "w_me_katana", x_rotation = 0.0, y_rotation = 90.0, z_rotation = 0.0 },
|
||||
["weapon_remington"] = { model = "w_sg_remington" },
|
||||
["weapon_mp5"] = { model = "w_sb_mp5" },
|
||||
["weapon_huntingrifle"] = { model = "w_sr_huntingrifle" },
|
||||
}
|
||||
end
|
40
resources/[Developer]/[Nordi]/pug-sling/old-sling/readme.md
Normal file
40
resources/[Developer]/[Nordi]/pug-sling/old-sling/readme.md
Normal file
|
@ -0,0 +1,40 @@
|
|||
# pug-sling
|
||||
Advanced weapons slings for the qbcore framework. Any weapon in the players inventory will show up on there back.
|
||||
|
||||
# -- if you are using ox_inventory make sure to change Config.Inventory no other inventory name matters.
|
||||
|
||||
# -- If you are using illenium-appearance make sure to head to illenium-appearance/server/server.lua and replace these commands with these.
|
||||
lib.addCommand("reloadskin", { help = _L("commands.reloadskin.title") }, function(source)
|
||||
local src = source
|
||||
TriggerClientEvent("illenium-appearance:client:reloadSkin", src)
|
||||
Wait(500)
|
||||
TriggerClientEvent("Pug:ReloadGuns:sling", src)
|
||||
end)
|
||||
|
||||
lib.addCommand("clearstuckprops", { help = _L("commands.clearstuckprops.title") }, function(source)
|
||||
local src = source
|
||||
TriggerClientEvent("illenium-appearance:client:ClearStuckProps", src)
|
||||
Wait(500)
|
||||
TriggerClientEvent("Pug:ReloadGuns:sling", src)
|
||||
end)
|
||||
# --
|
||||
|
||||
# -- Support
|
||||
Full support provided in my discord here: https://discord.gg/jYZuWYjfvq
|
||||
# --
|
||||
|
||||
# -- My other scripts
|
||||
https://pug-webstore.tebex.io/
|
||||
# --
|
||||
|
||||
# -- Config file
|
||||
To add a new weapon you must change the first option to the qbcore shared.lua.
|
||||
# --
|
||||
|
||||
# -- Commands
|
||||
`/sling` - Will toggle the weapon placement on the front and back.
|
||||
# --
|
||||
|
||||
# -- Use this event to clear items stuck on players without removing the weapons on the players back
|
||||
TriggerEvent("Pug:ReloadGuns:sling")
|
||||
# --
|
56
resources/[Developer]/[Nordi]/pug-sling/readme.md
Normal file
56
resources/[Developer]/[Nordi]/pug-sling/readme.md
Normal file
|
@ -0,0 +1,56 @@
|
|||
# pug-sling 2.0
|
||||
|
||||
# -- If you are using illenium-appearance make sure to head to illenium-appearance/server/server.lua and replace these commands with these.
|
||||
lib.addCommand("reloadskin", { help = _L("commands.reloadskin.title") }, function(source)
|
||||
local src = source
|
||||
TriggerClientEvent("illenium-appearance:client:reloadSkin", src)
|
||||
Wait(500)
|
||||
TriggerClientEvent("Pug:ReloadGuns:sling", src)
|
||||
end)
|
||||
|
||||
lib.addCommand("clearstuckprops", { help = _L("commands.clearstuckprops.title") }, function(source)
|
||||
local src = source
|
||||
TriggerClientEvent("illenium-appearance:client:ClearStuckProps", src)
|
||||
Wait(500)
|
||||
TriggerClientEvent("Pug:ReloadGuns:sling", src)
|
||||
end)
|
||||
# --
|
||||
|
||||
# -- Use this event to clear items stuck on players without removing the weapons on the players back
|
||||
TriggerEvent("Pug:ReloadGuns:sling")
|
||||
# --
|
||||
|
||||
|
||||
Advanced Weapon Sling | Weapons On Back: For any questions please contact me here: https://discord.com/invite/jYZuWYjfvq
|
||||
|
||||
PREVIEW HERE: https://youtu.be/hluGYRiVY1E
|
||||
|
||||
This script is partially locked using escrow encryption. Most of the script is accessible in client/open.lua, and config.lua.
|
||||
|
||||
Full QBCore & ESX Compatibility.
|
||||
|
||||
This completely configurable script consist of:
|
||||
|
||||
● Wearable weapons and items that are placed onto the player when they have the set weapon or item anywhere within their inventory.
|
||||
● Advanced system controlling and moving around items/weapons in 3D space to get the best position of where the items/weapons should sit on the player.
|
||||
● Option for individual players to tailor the placement of items and weapons on their characters, enabling unique item positioning for each player. (QBCORE ONLY)
|
||||
● Full control over the items/weapons with the ability to adjust rotation, XYZ position, and edit the entire script from in-game without doing any code or configuring.
|
||||
● /rack Command Utilizes the custom weapon racking system, which is exclusively available for select jobs and used to store weapons in emergency service vehicles.
|
||||
● Version 1.0 comes with this script and is a completely different system shown off and explained in the video.
|
||||
● Anti-Car tornadoing mechanics designed to prevent car tornadoing from ever occurring on your server.
|
||||
● /weaponposition command for individual players to set personal weapon and item placements (optional).
|
||||
● /setweapon command to begin editing where the weapons/items should sit on the player.
|
||||
● Advanced checks to avoid and stop car tornadoing that occurs in every FiveM server.
|
||||
● 30 weapons and items pre-configured for you.
|
||||
● 0:00 ms ResMon for complete optimization.
|
||||
● qb-inventory support.
|
||||
● ox_inventory support.
|
||||
● qs-inventory support.
|
||||
● ps-inventory support.
|
||||
● Request inventory support and i will do it for this script if it is possible.
|
||||
|
||||
Requirements consist of:
|
||||
QBCore OR ESX (other frameworks will work but not supported)
|
||||
qb-inventory OR ox_inventory OR qs-inventory OR ps-inventory (any qb-inventory resource name changed will work)
|
||||
|
||||
1400 LINES OF CODE
|
65
resources/[Developer]/[Nordi]/pug-sling/server/main.lua
Normal file
65
resources/[Developer]/[Nordi]/pug-sling/server/main.lua
Normal file
|
@ -0,0 +1,65 @@
|
|||
|
||||
if not Config.UseOldSlingScript then
|
||||
Config.FrameworkFunctions.CreateCallback('Pug:server:GetWeaponConfig', function(source, cb)
|
||||
local File = LoadResourceFile(GetCurrentResourceName(), "./json/config-weapons.json")
|
||||
cb(File)
|
||||
end)
|
||||
|
||||
RegisterNetEvent("Pug:server:SaveWeaponFile", function(JsonWeapons, Personal)
|
||||
local src = source
|
||||
if Personal then
|
||||
if Framework == "QBCore" then
|
||||
local Player = FWork.Functions.GetPlayer(src)
|
||||
if Player ~= nil then
|
||||
Player.Functions.SetMetaData("pug-weapondata", JsonWeapons)
|
||||
Player.Functions.Save()
|
||||
end
|
||||
else
|
||||
|
||||
end
|
||||
else
|
||||
local JsonWeapon = json.encode(JsonWeapons)
|
||||
SaveResourceFile(GetCurrentResourceName(), "./json/config-weapons.json", JsonWeapon)
|
||||
TriggerClientEvent("Pug:client:RegisterAllBackWeapons", -1, JsonWeapon)
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
---------- [OX_INVENTORY RACK STASH SUPPORT] ----------
|
||||
local StashCreated = {}
|
||||
RegisterNetEvent("Pug:server:SlingOpenOxInvRack", function(StashName, Slots, Space)
|
||||
if not StashCreated[StashName] then
|
||||
StashCreated[StashName] = true
|
||||
exports.ox_inventory:RegisterStash(
|
||||
StashName,
|
||||
StashName,
|
||||
Slots,
|
||||
Space
|
||||
)
|
||||
end
|
||||
end)
|
||||
------------------------------
|
||||
|
||||
|
||||
---------- [Commands] ----------
|
||||
if Framework == "QBCore" then
|
||||
FWork.Commands.Add(Config.WeaponSettingCommand, "Adjust server weapons positions", {}, false, function(source, args)
|
||||
local src = source
|
||||
TriggerClientEvent("Pug:client:OpenSlingEditor",src)
|
||||
end,"admin")
|
||||
FWork.Commands.Add(Config.PersonalWeponSettingsCommand, "Adjust personal weapons positions", {}, false, function(source, args)
|
||||
local src = source
|
||||
TriggerClientEvent("Pug:client:OpenSlingEditor",src, true)
|
||||
end)
|
||||
else
|
||||
FWork.RegisterCommand(Config.WeaponSettingCommand, 'admin', function(xPlayer, args)
|
||||
local src = xPlayer.source
|
||||
TriggerClientEvent("Pug:client:OpenSlingEditor",src)
|
||||
end, true, {help = 'Create business menu', validate = true, arguments = {} })
|
||||
FWork.RegisterCommand(Config.PersonalWeponSettingsCommand, 'admin', function(xPlayer, args)
|
||||
local src = xPlayer.source
|
||||
TriggerClientEvent("Pug:client:OpenSlingEditor",src, true)
|
||||
end, true, {help = 'Create business menu', validate = true, arguments = {} })
|
||||
end
|
||||
------------------------------
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue