From 7800abdca0268d2c27f2f52947bafabe9079ce38 Mon Sep 17 00:00:00 2001 From: Kakarot <57848836+GhzGarage@users.noreply.github.com> Date: Tue, 11 Mar 2025 23:05:17 -0500 Subject: [PATCH] Start removing old code --- client/drawtext.lua | 60 --- client/events.lua | 279 ----------- client/functions.lua | 1105 ----------------------------------------- client/loops.lua | 24 - client/main.lua | 50 -- config.lua | 157 ------ html/css/drawtext.css | 97 ---- html/css/style.css | 81 --- html/index.html | 20 - html/js/app.js | 62 --- html/js/config.js | 45 -- html/js/drawtext.js | 124 ----- html/js/testing.js | 44 -- html/js/utils.js | 27 - shared/gangs.lua | 58 --- shared/items.lua | 385 -------------- shared/jobs.lua | 142 ------ shared/locale.lua | 145 ------ shared/locations.lua | 108 ---- shared/main.lua | 175 ------- shared/vehicles.lua | 783 ----------------------------- shared/weapons.lua | 151 ------ 22 files changed, 4122 deletions(-) delete mode 100644 client/drawtext.lua delete mode 100644 client/events.lua delete mode 100644 client/functions.lua delete mode 100644 client/loops.lua delete mode 100644 client/main.lua delete mode 100644 config.lua delete mode 100644 html/css/drawtext.css delete mode 100644 html/css/style.css delete mode 100644 html/index.html delete mode 100644 html/js/app.js delete mode 100644 html/js/config.js delete mode 100644 html/js/drawtext.js delete mode 100644 html/js/testing.js delete mode 100644 html/js/utils.js delete mode 100644 shared/gangs.lua delete mode 100644 shared/items.lua delete mode 100644 shared/jobs.lua delete mode 100644 shared/locale.lua delete mode 100644 shared/locations.lua delete mode 100644 shared/main.lua delete mode 100644 shared/vehicles.lua delete mode 100644 shared/weapons.lua diff --git a/client/drawtext.lua b/client/drawtext.lua deleted file mode 100644 index c54d401..0000000 --- a/client/drawtext.lua +++ /dev/null @@ -1,60 +0,0 @@ -local function hideText() - SendNUIMessage({ - action = 'HIDE_TEXT', - }) -end - -local function drawText(text, position) - if type(position) ~= 'string' then position = 'left' end - - SendNUIMessage({ - action = 'DRAW_TEXT', - data = { - text = text, - position = position - } - }) -end - -local function changeText(text, position) - if type(position) ~= 'string' then position = 'left' end - - SendNUIMessage({ - action = 'CHANGE_TEXT', - data = { - text = text, - position = position - } - }) -end - -local function keyPressed() - CreateThread(function() -- Not sure if a thread is needed but why not eh? - SendNUIMessage({ - action = 'KEY_PRESSED', - }) - Wait(500) - hideText() - end) -end - -RegisterNetEvent('qb-core:client:DrawText', function(text, position) - drawText(text, position) -end) - -RegisterNetEvent('qb-core:client:ChangeText', function(text, position) - changeText(text, position) -end) - -RegisterNetEvent('qb-core:client:HideText', function() - hideText() -end) - -RegisterNetEvent('qb-core:client:KeyPressed', function() - keyPressed() -end) - -exports('DrawText', drawText) -exports('ChangeText', changeText) -exports('HideText', hideText) -exports('KeyPressed', keyPressed) diff --git a/client/events.lua b/client/events.lua deleted file mode 100644 index f08e019..0000000 --- a/client/events.lua +++ /dev/null @@ -1,279 +0,0 @@ --- Player load and unload handling --- New method for checking if logged in across all scripts (optional) --- if LocalPlayer.state['isLoggedIn'] then -RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function() - ShutdownLoadingScreenNui() - LocalPlayer.state:set('isLoggedIn', true, false) - if not QBCore.Config.Server.PVP then return end - SetCanAttackFriendly(PlayerPedId(), true, false) - NetworkSetFriendlyFireOption(true) -end) - -RegisterNetEvent('QBCore:Client:OnPlayerUnload', function() - LocalPlayer.state:set('isLoggedIn', false, false) -end) - -RegisterNetEvent('QBCore:Client:PvpHasToggled', function(pvp_state) - SetCanAttackFriendly(PlayerPedId(), pvp_state, false) - NetworkSetFriendlyFireOption(pvp_state) -end) --- Teleport Commands - -RegisterNetEvent('QBCore:Command:TeleportToPlayer', function(coords) - local ped = PlayerPedId() - SetPedCoordsKeepVehicle(ped, coords.x, coords.y, coords.z) -end) - -RegisterNetEvent('QBCore:Command:TeleportToCoords', function(x, y, z, h) - local ped = PlayerPedId() - SetPedCoordsKeepVehicle(ped, x, y, z) - SetEntityHeading(ped, h or GetEntityHeading(ped)) -end) - -RegisterNetEvent('QBCore:Command:GoToMarker', function() - local PlayerPedId = PlayerPedId - local GetEntityCoords = GetEntityCoords - local GetGroundZFor_3dCoord = GetGroundZFor_3dCoord - - local blipMarker = GetFirstBlipInfoId(8) - if not DoesBlipExist(blipMarker) then - QBCore.Functions.Notify(Lang:t('error.no_waypoint'), 'error', 5000) - return 'marker' - end - - -- Fade screen to hide how clients get teleported. - DoScreenFadeOut(650) - while not IsScreenFadedOut() do - Wait(0) - end - - local ped, coords = PlayerPedId(), GetBlipInfoIdCoord(blipMarker) - local vehicle = GetVehiclePedIsIn(ped, false) - local oldCoords = GetEntityCoords(ped) - - -- Unpack coords instead of having to unpack them while iterating. - -- 825.0 seems to be the max a player can reach while 0.0 being the lowest. - local x, y, groundZ, Z_START = coords['x'], coords['y'], 850.0, 950.0 - local found = false - if vehicle > 0 then - FreezeEntityPosition(vehicle, true) - else - FreezeEntityPosition(ped, true) - end - - for i = Z_START, 0, -25.0 do - local z = i - if (i % 2) ~= 0 then - z = Z_START - i - end - - NewLoadSceneStart(x, y, z, x, y, z, 50.0, 0) - local curTime = GetGameTimer() - while IsNetworkLoadingScene() do - if GetGameTimer() - curTime > 1000 then - break - end - Wait(0) - end - NewLoadSceneStop() - SetPedCoordsKeepVehicle(ped, x, y, z) - - while not HasCollisionLoadedAroundEntity(ped) do - RequestCollisionAtCoord(x, y, z) - if GetGameTimer() - curTime > 1000 then - break - end - Wait(0) - end - - -- Get ground coord. As mentioned in the natives, this only works if the client is in render distance. - found, groundZ = GetGroundZFor_3dCoord(x, y, z, false); - if found then - Wait(0) - SetPedCoordsKeepVehicle(ped, x, y, groundZ) - break - end - Wait(0) - end - - -- Remove black screen once the loop has ended. - DoScreenFadeIn(650) - if vehicle > 0 then - FreezeEntityPosition(vehicle, false) - else - FreezeEntityPosition(ped, false) - end - - if not found then - -- If we can't find the coords, set the coords to the old ones. - -- We don't unpack them before since they aren't in a loop and only called once. - SetPedCoordsKeepVehicle(ped, oldCoords['x'], oldCoords['y'], oldCoords['z'] - 1.0) - QBCore.Functions.Notify(Lang:t('error.tp_error'), 'error', 5000) - end - - -- If Z coord was found, set coords in found coords. - SetPedCoordsKeepVehicle(ped, x, y, groundZ) - QBCore.Functions.Notify(Lang:t('success.teleported_waypoint'), 'success', 5000) -end) - --- Vehicle Commands - -RegisterNetEvent('QBCore:Command:SpawnVehicle', function(vehName) - local ped = PlayerPedId() - local hash = joaat(vehName) - local veh = GetVehiclePedIsUsing(ped) - if not IsModelInCdimage(hash) then return end - RequestModel(hash) - while not HasModelLoaded(hash) do - Wait(0) - end - - if IsPedInAnyVehicle(ped) then - SetEntityAsMissionEntity(veh, true, true) - DeleteVehicle(veh) - end - - local vehicle = CreateVehicle(hash, GetEntityCoords(ped), GetEntityHeading(ped), true, false) - TaskWarpPedIntoVehicle(ped, vehicle, -1) - SetVehicleFuelLevel(vehicle, 100.0) - SetVehicleDirtLevel(vehicle, 0.0) - SetModelAsNoLongerNeeded(hash) - TriggerEvent('vehiclekeys:client:SetOwner', QBCore.Functions.GetPlate(vehicle)) -end) - -RegisterNetEvent('QBCore:Command:DeleteVehicle', function() - local ped = PlayerPedId() - local veh = GetVehiclePedIsUsing(ped) - if veh ~= 0 then - SetEntityAsMissionEntity(veh, true, true) - DeleteVehicle(veh) - else - local pcoords = GetEntityCoords(ped) - local vehicles = GetGamePool('CVehicle') - for _, v in pairs(vehicles) do - if #(pcoords - GetEntityCoords(v)) <= 5.0 then - SetEntityAsMissionEntity(v, true, true) - DeleteVehicle(v) - end - end - end -end) - -RegisterNetEvent('QBCore:Client:VehicleInfo', function(info) - local plate = QBCore.Functions.GetPlate(info.vehicle) - local hasKeys = true - - if GetResourceState('qb-vehiclekeys') == 'started' then - hasKeys = exports['qb-vehiclekeys']:HasKeys(plate) - end - - local data = { - vehicle = info.vehicle, - seat = info.seat, - name = info.modelName, - plate = plate, - driver = GetPedInVehicleSeat(info.vehicle, -1), - inseat = GetPedInVehicleSeat(info.vehicle, info.seat), - haskeys = hasKeys - } - - TriggerEvent('QBCore:Client:' .. info.event .. 'Vehicle', data) -end) - --- Other stuff - -RegisterNetEvent('QBCore:Player:SetPlayerData', function(val) - QBCore.PlayerData = val -end) - -RegisterNetEvent('QBCore:Player:UpdatePlayerData', function() - TriggerServerEvent('QBCore:UpdatePlayer') -end) - -RegisterNetEvent('QBCore:Notify', function(text, type, length, icon) - QBCore.Functions.Notify(text, type, length, icon) -end) - --- This event is exploitable and should not be used. It has been deprecated, and will be removed soon. -RegisterNetEvent('QBCore:Client:UseItem', function(item) - QBCore.Debug(string.format('%s triggered QBCore:Client:UseItem by ID %s with the following data. This event is deprecated due to exploitation, and will be removed soon. Check qb-inventory for the right use on this event.', GetInvokingResource(), GetPlayerServerId(PlayerId()))) - QBCore.Debug(item) -end) - -RegisterNUICallback('getNotifyConfig', function(_, cb) - cb(QBCore.Config.Notify) -end) - --- Callback Events -- - --- Client Callback -RegisterNetEvent('QBCore:Client:TriggerClientCallback', function(name, ...) - if not QBCore.ClientCallbacks[name] then return end - - QBCore.ClientCallbacks[name](function(...) - TriggerServerEvent('QBCore:Server:TriggerClientCallback', name, ...) - end, ...) -end) - --- Server Callback -RegisterNetEvent('QBCore:Client:TriggerCallback', function(name, ...) - if QBCore.ServerCallbacks[name] then - QBCore.ServerCallbacks[name].promise:resolve(...) - - if QBCore.ServerCallbacks[name].callback then - QBCore.ServerCallbacks[name].callback(...) - end - - QBCore.ServerCallbacks[name] = nil - end -end) - --- Me command - -local function Draw3DText(coords, str) - local onScreen, worldX, worldY = World3dToScreen2d(coords.x, coords.y, coords.z) - local camCoords = GetGameplayCamCoord() - local scale = 200 / (GetGameplayCamFov() * #(camCoords - coords)) - if onScreen then - SetTextScale(1.0, 0.5 * scale) - SetTextFont(4) - SetTextColour(255, 255, 255, 255) - SetTextEdge(2, 0, 0, 0, 150) - SetTextProportional(1) - SetTextOutline() - SetTextCentre(1) - BeginTextCommandDisplayText('STRING') - AddTextComponentSubstringPlayerName(str) - EndTextCommandDisplayText(worldX, worldY) - end -end - -RegisterNetEvent('QBCore:Command:ShowMe3D', function(senderId, msg) - local sender = GetPlayerFromServerId(senderId) - CreateThread(function() - local displayTime = 5000 + GetGameTimer() - while displayTime > GetGameTimer() do - local targetPed = GetPlayerPed(sender) - local tCoords = GetEntityCoords(targetPed) - Draw3DText(tCoords, msg) - Wait(0) - end - end) -end) - --- Listen to Shared being updated -RegisterNetEvent('QBCore:Client:OnSharedUpdate', function(tableName, key, value) - QBCore.Shared[tableName][key] = value - TriggerEvent('QBCore:Client:UpdateObject') -end) - -RegisterNetEvent('QBCore:Client:OnSharedUpdateMultiple', function(tableName, values) - for key, value in pairs(values) do - QBCore.Shared[tableName][key] = value - end - TriggerEvent('QBCore:Client:UpdateObject') -end) - -RegisterNetEvent('QBCore:Client:SharedUpdate', function(table) - QBCore.Shared = table -end) diff --git a/client/functions.lua b/client/functions.lua deleted file mode 100644 index f6bca00..0000000 --- a/client/functions.lua +++ /dev/null @@ -1,1105 +0,0 @@ -QBCore.Functions = {} - --- Callbacks - -function QBCore.Functions.CreateClientCallback(name, cb) - QBCore.ClientCallbacks[name] = cb -end - -function QBCore.Functions.TriggerCallback(name, ...) - local cb = nil - local args = { ... } - - if QBCore.Shared.IsFunction(args[1]) then - cb = args[1] - table.remove(args, 1) - end - - QBCore.ServerCallbacks[name] = { - callback = cb, - promise = promise.new() - } - - TriggerServerEvent('QBCore:Server:TriggerCallback', name, table.unpack(args)) - - if cb == nil then - Citizen.Await(QBCore.ServerCallbacks[name].promise) - return QBCore.ServerCallbacks[name].promise.value - end -end - -function QBCore.Debug(resource, obj, depth) - TriggerServerEvent('QBCore:DebugSomething', resource, obj, depth) -end - --- Player - -function QBCore.Functions.GetPlayerData(cb) - if not cb then return QBCore.PlayerData end - cb(QBCore.PlayerData) -end - -function QBCore.Functions.GetCoords(entity) - local coords = GetEntityCoords(entity) - return vector4(coords.x, coords.y, coords.z, GetEntityHeading(entity)) -end - -function QBCore.Functions.HasItem(items, amount) - return exports['qb-inventory']:HasItem(items, amount) -end - ----Returns the full character name ----@return string -function QBCore.Functions.GetName() - local charinfo = QBCore.PlayerData.charinfo - return charinfo.firstname .. ' ' .. charinfo.lastname -end - ----@param entity number - The entity to look at ----@param timeout number - The time in milliseconds before the function times out ----@param speed number - The speed at which the entity should turn ----@return number - The time at which the entity was looked at -function QBCore.Functions.LookAtEntity(entity, timeout, speed) - local involved = GetInvokingResource() - if not DoesEntityExist(entity) then - return involved .. ' :^1 Entity does not exist' - end - if type(entity) ~= 'number' then - return involved .. ' :^1 Entity must be a number' - end - if type(speed) ~= 'number' then - return involved .. ' :^1 Speed must be a number' - end - if speed > 5.0 then speed = 5.0 end - if timeout > 5000 then timeout = 5000 end - local ped = PlayerPedId() - local playerPos = GetEntityCoords(ped) - local targetPos = GetEntityCoords(entity) - local dx = targetPos.x - playerPos.x - local dy = targetPos.y - playerPos.y - local targetHeading = GetHeadingFromVector_2d(dx, dy) - local turnSpeed - local startTimeout = GetGameTimer() - while true do - local currentHeading = GetEntityHeading(ped) - local diff = targetHeading - currentHeading - if math.abs(diff) < 2 then - break - end - if diff < -180 then - diff = diff + 360 - elseif diff > 180 then - diff = diff - 360 - end - turnSpeed = speed + (2.5 - speed) * (1 - math.abs(diff) / 180) - if diff > 0 then - currentHeading = currentHeading + turnSpeed - else - currentHeading = currentHeading - turnSpeed - end - SetEntityHeading(ped, currentHeading) - Wait(0) - if (startTimeout + timeout) < GetGameTimer() then break end - end - SetEntityHeading(ped, targetHeading) -end - --- Function to run an animation ---- @param animDic string: The name of the animation dictionary ---- @param animName string - The name of the animation within the dictionary ---- @param duration number - The duration of the animation in milliseconds. -1 will play the animation indefinitely ---- @param upperbodyOnly boolean - If true, the animation will only affect the upper body of the ped ---- @return number - The timestamp indicating when the animation concluded. For animations set to loop indefinitely, this will still return the maximum duration of the animation. -function QBCore.Functions.PlayAnim(animDict, animName, upperbodyOnly, duration) - local invoked = GetInvokingResource() - local animPromise = promise.new() - if type(animDict) ~= 'string' or type(animName) ~= 'string' then - animPromise:reject(invoked .. ' :^1 Wrong type for animDict or animName') - return animPromise.value - end - if not DoesAnimDictExist(animDict) then - animPromise:reject(invoked .. ' :^1 Animation dictionary does not exist') - return animPromise.value - end - local flags = upperbodyOnly and 16 or 0 - local runTime = duration or -1 - if runTime == -1 then flags = 49 end - local ped = PlayerPedId() - local start = GetGameTimer() - while not HasAnimDictLoaded(animDict) do - RequestAnimDict(animDict) - if (GetGameTimer() - start) > 5000 then - animPromise:reject(invoked .. ' :^1 Animation dictionary failed to load') - return animPromise.value - end - Wait(1) - end - TaskPlayAnim(ped, animDict, animName, 8.0, 8.0, runTime, flags, 0, true, true, true) - Wait(10) -- Wait a bit for the animation to start, then check if it exists - local currentTime = GetAnimDuration(animDict, animName) - if currentTime == 0 then - animPromise:reject(invoked .. ' :^1 Animation does not exist') - return animPromise.value - end - local fullDuration = currentTime * 1000 - -- If duration is provided and is less than the full duration, use it instead - local waitTime = duration and math.min(duration, fullDuration) or fullDuration - Wait(waitTime) - RemoveAnimDict(animDict) - animPromise:resolve(currentTime) - return animPromise.value -end - -function QBCore.Functions.IsWearingGloves() - local ped = PlayerPedId() - local armIndex = GetPedDrawableVariation(ped, 3) - local model = GetEntityModel(ped) - if model == `mp_m_freemode_01` then - if QBCore.Shared.MaleNoGloves[armIndex] then - return false - end - else - if QBCore.Shared.FemaleNoGloves[armIndex] then - return false - end - end - return true -end - --- NUI Calls - -function QBCore.Functions.Notify(text, texttype, length, icon) - local message = { - action = 'notify', - type = texttype or 'primary', - length = length or 5000, - } - - if type(text) == 'table' then - message.text = text.text or 'Placeholder' - message.caption = text.caption or 'Placeholder' - else - message.text = text - end - - if icon then - message.icon = icon - end - - SendNUIMessage(message) -end - -function QBCore.Functions.Progressbar(name, label, duration, useWhileDead, canCancel, disableControls, animation, prop, propTwo, onFinish, onCancel) - if GetResourceState('progressbar') ~= 'started' then error('progressbar needs to be started in order for QBCore.Functions.Progressbar to work') end - exports['progressbar']:Progress({ - name = name:lower(), - duration = duration, - label = label, - useWhileDead = useWhileDead, - canCancel = canCancel, - controlDisables = disableControls, - animation = animation, - prop = prop, - propTwo = propTwo, - }, function(cancelled) - if not cancelled then - if onFinish then - onFinish() - end - else - if onCancel then - onCancel() - end - end - end) -end - --- World Getters - -function QBCore.Functions.GetVehicles() - return GetGamePool('CVehicle') -end - -function QBCore.Functions.GetObjects() - return GetGamePool('CObject') -end - -function QBCore.Functions.GetPlayers() - return GetActivePlayers() -end - -function QBCore.Functions.GetPlayersFromCoords(coords, distance) - local players = GetActivePlayers() - local ped = PlayerPedId() - if coords then - coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords - else - coords = GetEntityCoords(ped) - end - distance = distance or 5 - local closePlayers = {} - for _, player in ipairs(players) do - local targetCoords = GetEntityCoords(GetPlayerPed(player)) - local targetdistance = #(targetCoords - coords) - if targetdistance <= distance then - closePlayers[#closePlayers + 1] = player - end - end - return closePlayers -end - -function QBCore.Functions.GetClosestPlayer(coords) - local ped = PlayerPedId() - if coords then - coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords - else - coords = GetEntityCoords(ped) - end - local closestPlayers = QBCore.Functions.GetPlayersFromCoords(coords) - local closestDistance = -1 - local closestPlayer = -1 - for i = 1, #closestPlayers, 1 do - if closestPlayers[i] ~= PlayerId() and closestPlayers[i] ~= -1 then - local pos = GetEntityCoords(GetPlayerPed(closestPlayers[i])) - local distance = #(pos - coords) - - if closestDistance == -1 or closestDistance > distance then - closestPlayer = closestPlayers[i] - closestDistance = distance - end - end - end - return closestPlayer, closestDistance -end - -function QBCore.Functions.GetPeds(ignoreList) - local pedPool = GetGamePool('CPed') - local peds = {} - local ignoreTable = {} - ignoreList = ignoreList or {} - for i = 1, #ignoreList do - ignoreTable[ignoreList[i]] = true - end - for i = 1, #pedPool do - if not ignoreTable[pedPool[i]] then - peds[#peds + 1] = pedPool[i] - end - end - return peds -end - -function QBCore.Functions.GetClosestPed(coords, ignoreList) - local ped = PlayerPedId() - if coords then - coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords - else - coords = GetEntityCoords(ped) - end - ignoreList = ignoreList or {} - local peds = QBCore.Functions.GetPeds(ignoreList) - local closestDistance = -1 - local closestPed = -1 - for i = 1, #peds, 1 do - local pedCoords = GetEntityCoords(peds[i]) - local distance = #(pedCoords - coords) - - if closestDistance == -1 or closestDistance > distance then - closestPed = peds[i] - closestDistance = distance - end - end - return closestPed, closestDistance -end - -function QBCore.Functions.GetClosestVehicle(coords) - local ped = PlayerPedId() - local vehicles = GetGamePool('CVehicle') - local closestDistance = -1 - local closestVehicle = -1 - if coords then - coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords - else - coords = GetEntityCoords(ped) - end - for i = 1, #vehicles, 1 do - local vehicleCoords = GetEntityCoords(vehicles[i]) - local distance = #(vehicleCoords - coords) - - if closestDistance == -1 or closestDistance > distance then - closestVehicle = vehicles[i] - closestDistance = distance - end - end - return closestVehicle, closestDistance -end - -function QBCore.Functions.GetClosestObject(coords) - local ped = PlayerPedId() - local objects = GetGamePool('CObject') - local closestDistance = -1 - local closestObject = -1 - if coords then - coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords - else - coords = GetEntityCoords(ped) - end - for i = 1, #objects, 1 do - local objectCoords = GetEntityCoords(objects[i]) - local distance = #(objectCoords - coords) - if closestDistance == -1 or closestDistance > distance then - closestObject = objects[i] - closestDistance = distance - end - end - return closestObject, closestDistance -end - --- Vehicle - -function QBCore.Functions.LoadModel(model) - if HasModelLoaded(model) then return end - RequestModel(model) - while not HasModelLoaded(model) do - Wait(0) - end -end - -function QBCore.Functions.SpawnVehicle(model, cb, coords, isnetworked, teleportInto) - local ped = PlayerPedId() - model = type(model) == 'string' and joaat(model) or model - if not IsModelInCdimage(model) then return end - if coords then - coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords - else - coords = GetEntityCoords(ped) - end - isnetworked = isnetworked == nil or isnetworked - QBCore.Functions.LoadModel(model) - local veh = CreateVehicle(model, coords.x, coords.y, coords.z, coords.w, isnetworked, false) - local netid = NetworkGetNetworkIdFromEntity(veh) - SetVehicleHasBeenOwnedByPlayer(veh, true) - SetNetworkIdCanMigrate(netid, true) - SetVehicleNeedsToBeHotwired(veh, false) - SetVehRadioStation(veh, 'OFF') - SetVehicleFuelLevel(veh, 100.0) - SetModelAsNoLongerNeeded(model) - if teleportInto then TaskWarpPedIntoVehicle(PlayerPedId(), veh, -1) end - if cb then cb(veh) end -end - -function QBCore.Functions.DeleteVehicle(vehicle) - SetEntityAsMissionEntity(vehicle, true, true) - DeleteVehicle(vehicle) -end - -function QBCore.Functions.GetPlate(vehicle) - if vehicle == 0 then return end - return QBCore.Shared.Trim(GetVehicleNumberPlateText(vehicle)) -end - -function QBCore.Functions.GetVehicleLabel(vehicle) - if vehicle == nil or vehicle == 0 then return end - return GetLabelText(GetDisplayNameFromVehicleModel(GetEntityModel(vehicle))) -end - -function QBCore.Functions.GetVehicleProperties(vehicle) - if DoesEntityExist(vehicle) then - local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle) - - local colorPrimary, colorSecondary = GetVehicleColours(vehicle) - if GetIsVehiclePrimaryColourCustom(vehicle) then - local r, g, b = GetVehicleCustomPrimaryColour(vehicle) - colorPrimary = { r, g, b } - end - - if GetIsVehicleSecondaryColourCustom(vehicle) then - local r, g, b = GetVehicleCustomSecondaryColour(vehicle) - colorSecondary = { r, g, b } - end - - local extras = {} - for extraId = 0, 12 do - if DoesExtraExist(vehicle, extraId) then - local state = IsVehicleExtraTurnedOn(vehicle, extraId) == 1 - extras[tostring(extraId)] = state - end - end - - local modLivery = GetVehicleMod(vehicle, 48) - if GetVehicleMod(vehicle, 48) == -1 and GetVehicleLivery(vehicle) ~= 0 then - modLivery = GetVehicleLivery(vehicle) - end - - local tireHealth = {} - for i = 0, 3 do - tireHealth[i] = GetVehicleWheelHealth(vehicle, i) - end - - local tireBurstState = {} - for i = 0, 5 do - tireBurstState[i] = IsVehicleTyreBurst(vehicle, i, false) - end - - local tireBurstCompletely = {} - for i = 0, 5 do - tireBurstCompletely[i] = IsVehicleTyreBurst(vehicle, i, true) - end - - local windowStatus = {} - for i = 0, 7 do - windowStatus[i] = IsVehicleWindowIntact(vehicle, i) == 1 - end - - local doorStatus = {} - for i = 0, 5 do - doorStatus[i] = IsVehicleDoorDamaged(vehicle, i) == 1 - end - - local xenonColor - local hasCustom, r, g, b = GetVehicleXenonLightsCustomColor(vehicle) - if hasCustom then - xenonColor = table.pack(r, g, b) - else - xenonColor = GetVehicleXenonLightsColor(vehicle) - end - - return { - model = GetEntityModel(vehicle), - plate = QBCore.Functions.GetPlate(vehicle), - plateIndex = GetVehicleNumberPlateTextIndex(vehicle), - bodyHealth = QBCore.Shared.Round(GetVehicleBodyHealth(vehicle), 0.1), - engineHealth = QBCore.Shared.Round(GetVehicleEngineHealth(vehicle), 0.1), - tankHealth = QBCore.Shared.Round(GetVehiclePetrolTankHealth(vehicle), 0.1), - fuelLevel = QBCore.Shared.Round(GetVehicleFuelLevel(vehicle), 0.1), - dirtLevel = QBCore.Shared.Round(GetVehicleDirtLevel(vehicle), 0.1), - oilLevel = QBCore.Shared.Round(GetVehicleOilLevel(vehicle), 0.1), - color1 = colorPrimary, - color2 = colorSecondary, - pearlescentColor = pearlescentColor, - dashboardColor = GetVehicleDashboardColour(vehicle), - wheelColor = wheelColor, - wheels = GetVehicleWheelType(vehicle), - wheelSize = GetVehicleWheelSize(vehicle), - wheelWidth = GetVehicleWheelWidth(vehicle), - tireHealth = tireHealth, - tireBurstState = tireBurstState, - tireBurstCompletely = tireBurstCompletely, - windowTint = GetVehicleWindowTint(vehicle), - windowStatus = windowStatus, - doorStatus = doorStatus, - neonEnabled = { - IsVehicleNeonLightEnabled(vehicle, 0), - IsVehicleNeonLightEnabled(vehicle, 1), - IsVehicleNeonLightEnabled(vehicle, 2), - IsVehicleNeonLightEnabled(vehicle, 3) - }, - neonColor = table.pack(GetVehicleNeonLightsColour(vehicle)), - interiorColor = GetVehicleInteriorColour(vehicle), - extras = extras, - tyreSmokeColor = table.pack(GetVehicleTyreSmokeColor(vehicle)), - xenonColor = xenonColor, - modSpoilers = GetVehicleMod(vehicle, 0), - modFrontBumper = GetVehicleMod(vehicle, 1), - modRearBumper = GetVehicleMod(vehicle, 2), - modSideSkirt = GetVehicleMod(vehicle, 3), - modExhaust = GetVehicleMod(vehicle, 4), - modFrame = GetVehicleMod(vehicle, 5), - modGrille = GetVehicleMod(vehicle, 6), - modHood = GetVehicleMod(vehicle, 7), - modFender = GetVehicleMod(vehicle, 8), - modRightFender = GetVehicleMod(vehicle, 9), - modRoof = GetVehicleMod(vehicle, 10), - modEngine = GetVehicleMod(vehicle, 11), - modBrakes = GetVehicleMod(vehicle, 12), - modTransmission = GetVehicleMod(vehicle, 13), - modHorns = GetVehicleMod(vehicle, 14), - modSuspension = GetVehicleMod(vehicle, 15), - modArmor = GetVehicleMod(vehicle, 16), - modKit17 = GetVehicleMod(vehicle, 17), - modTurbo = IsToggleModOn(vehicle, 18), - modKit19 = GetVehicleMod(vehicle, 19), - modSmokeEnabled = IsToggleModOn(vehicle, 20), - modKit21 = GetVehicleMod(vehicle, 21), - modXenon = IsToggleModOn(vehicle, 22), - modFrontWheels = GetVehicleMod(vehicle, 23), - modBackWheels = GetVehicleMod(vehicle, 24), - modCustomTiresF = GetVehicleModVariation(vehicle, 23), - modCustomTiresR = GetVehicleModVariation(vehicle, 24), - modPlateHolder = GetVehicleMod(vehicle, 25), - modVanityPlate = GetVehicleMod(vehicle, 26), - modTrimA = GetVehicleMod(vehicle, 27), - modOrnaments = GetVehicleMod(vehicle, 28), - modDashboard = GetVehicleMod(vehicle, 29), - modDial = GetVehicleMod(vehicle, 30), - modDoorSpeaker = GetVehicleMod(vehicle, 31), - modSeats = GetVehicleMod(vehicle, 32), - modSteeringWheel = GetVehicleMod(vehicle, 33), - modShifterLeavers = GetVehicleMod(vehicle, 34), - modAPlate = GetVehicleMod(vehicle, 35), - modSpeakers = GetVehicleMod(vehicle, 36), - modTrunk = GetVehicleMod(vehicle, 37), - modHydrolic = GetVehicleMod(vehicle, 38), - modEngineBlock = GetVehicleMod(vehicle, 39), - modAirFilter = GetVehicleMod(vehicle, 40), - modStruts = GetVehicleMod(vehicle, 41), - modArchCover = GetVehicleMod(vehicle, 42), - modAerials = GetVehicleMod(vehicle, 43), - modTrimB = GetVehicleMod(vehicle, 44), - modTank = GetVehicleMod(vehicle, 45), - modWindows = GetVehicleMod(vehicle, 46), - modKit47 = GetVehicleMod(vehicle, 47), - modLivery = modLivery, - modKit49 = GetVehicleMod(vehicle, 49), - liveryRoof = GetVehicleRoofLivery(vehicle), - } - else - return - end -end - -function QBCore.Functions.SetVehicleProperties(vehicle, props) - if DoesEntityExist(vehicle) then - if props.extras then - for id, enabled in pairs(props.extras) do - if enabled then - SetVehicleExtra(vehicle, tonumber(id), 0) - else - SetVehicleExtra(vehicle, tonumber(id), 1) - end - end - end - - local colorPrimary, colorSecondary = GetVehicleColours(vehicle) - local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle) - SetVehicleModKit(vehicle, 0) - if props.plate then - SetVehicleNumberPlateText(vehicle, props.plate) - end - if props.plateIndex then - SetVehicleNumberPlateTextIndex(vehicle, props.plateIndex) - end - if props.bodyHealth then - SetVehicleBodyHealth(vehicle, props.bodyHealth + 0.0) - end - if props.engineHealth then - SetVehicleEngineHealth(vehicle, props.engineHealth + 0.0) - end - if props.tankHealth then - SetVehiclePetrolTankHealth(vehicle, props.tankHealth + 0.0) - end - if props.fuelLevel then - SetVehicleFuelLevel(vehicle, props.fuelLevel + 0.0) - end - if props.dirtLevel then - SetVehicleDirtLevel(vehicle, props.dirtLevel + 0.0) - end - if props.oilLevel then - SetVehicleOilLevel(vehicle, props.oilLevel + 0.0) - end - if props.color1 then - if type(props.color1) == 'number' then - ClearVehicleCustomPrimaryColour(vehicle) - SetVehicleColours(vehicle, props.color1, colorSecondary) - else - SetVehicleCustomPrimaryColour(vehicle, props.color1[1], props.color1[2], props.color1[3]) - end - end - if props.color2 then - if type(props.color2) == 'number' then - ClearVehicleCustomSecondaryColour(vehicle) - SetVehicleColours(vehicle, props.color1 or colorPrimary, props.color2) - else - SetVehicleCustomSecondaryColour(vehicle, props.color2[1], props.color2[2], props.color2[3]) - end - end - if props.pearlescentColor then - SetVehicleExtraColours(vehicle, props.pearlescentColor, wheelColor) - end - if props.interiorColor then - SetVehicleInteriorColor(vehicle, props.interiorColor) - end - if props.dashboardColor then - SetVehicleDashboardColour(vehicle, props.dashboardColor) - end - if props.wheelColor then - SetVehicleExtraColours(vehicle, props.pearlescentColor or pearlescentColor, props.wheelColor) - end - if props.wheels then - SetVehicleWheelType(vehicle, props.wheels) - end - if props.tireHealth then - for wheelIndex, health in pairs(props.tireHealth) do - SetVehicleWheelHealth(vehicle, wheelIndex, health) - end - end - if props.tireBurstState then - for wheelIndex, burstState in pairs(props.tireBurstState) do - if burstState then - SetVehicleTyreBurst(vehicle, tonumber(wheelIndex), false, 1000.0) - end - end - end - if props.tireBurstCompletely then - for wheelIndex, burstState in pairs(props.tireBurstCompletely) do - if burstState then - SetVehicleTyreBurst(vehicle, tonumber(wheelIndex), true, 1000.0) - end - end - end - if props.windowTint then - SetVehicleWindowTint(vehicle, props.windowTint) - end - if props.windowStatus then - for windowIndex, smashWindow in pairs(props.windowStatus) do - if not smashWindow then SmashVehicleWindow(vehicle, windowIndex) end - end - end - if props.doorStatus then - for doorIndex, breakDoor in pairs(props.doorStatus) do - if breakDoor then - SetVehicleDoorBroken(vehicle, tonumber(doorIndex), true) - end - end - end - if props.neonEnabled then - SetVehicleNeonLightEnabled(vehicle, 0, props.neonEnabled[1]) - SetVehicleNeonLightEnabled(vehicle, 1, props.neonEnabled[2]) - SetVehicleNeonLightEnabled(vehicle, 2, props.neonEnabled[3]) - SetVehicleNeonLightEnabled(vehicle, 3, props.neonEnabled[4]) - end - if props.neonColor then - SetVehicleNeonLightsColour(vehicle, props.neonColor[1], props.neonColor[2], props.neonColor[3]) - end - if props.interiorColor then - SetVehicleInteriorColour(vehicle, props.interiorColor) - end - if props.wheelSize then - SetVehicleWheelSize(vehicle, props.wheelSize) - end - if props.wheelWidth then - SetVehicleWheelWidth(vehicle, props.wheelWidth) - end - if props.tyreSmokeColor then - SetVehicleTyreSmokeColor(vehicle, props.tyreSmokeColor[1], props.tyreSmokeColor[2], props.tyreSmokeColor[3]) - end - if props.modSpoilers then - SetVehicleMod(vehicle, 0, props.modSpoilers, false) - end - if props.modFrontBumper then - SetVehicleMod(vehicle, 1, props.modFrontBumper, false) - end - if props.modRearBumper then - SetVehicleMod(vehicle, 2, props.modRearBumper, false) - end - if props.modSideSkirt then - SetVehicleMod(vehicle, 3, props.modSideSkirt, false) - end - if props.modExhaust then - SetVehicleMod(vehicle, 4, props.modExhaust, false) - end - if props.modFrame then - SetVehicleMod(vehicle, 5, props.modFrame, false) - end - if props.modGrille then - SetVehicleMod(vehicle, 6, props.modGrille, false) - end - if props.modHood then - SetVehicleMod(vehicle, 7, props.modHood, false) - end - if props.modFender then - SetVehicleMod(vehicle, 8, props.modFender, false) - end - if props.modRightFender then - SetVehicleMod(vehicle, 9, props.modRightFender, false) - end - if props.modRoof then - SetVehicleMod(vehicle, 10, props.modRoof, false) - end - if props.modEngine then - SetVehicleMod(vehicle, 11, props.modEngine, false) - end - if props.modBrakes then - SetVehicleMod(vehicle, 12, props.modBrakes, false) - end - if props.modTransmission then - SetVehicleMod(vehicle, 13, props.modTransmission, false) - end - if props.modHorns then - SetVehicleMod(vehicle, 14, props.modHorns, false) - end - if props.modSuspension then - SetVehicleMod(vehicle, 15, props.modSuspension, false) - end - if props.modArmor then - SetVehicleMod(vehicle, 16, props.modArmor, false) - end - if props.modKit17 then - SetVehicleMod(vehicle, 17, props.modKit17, false) - end - if props.modTurbo then - ToggleVehicleMod(vehicle, 18, props.modTurbo) - end - if props.modKit19 then - SetVehicleMod(vehicle, 19, props.modKit19, false) - end - if props.modSmokeEnabled then - ToggleVehicleMod(vehicle, 20, props.modSmokeEnabled) - end - if props.modKit21 then - SetVehicleMod(vehicle, 21, props.modKit21, false) - end - if props.modXenon then - ToggleVehicleMod(vehicle, 22, props.modXenon) - end - if props.xenonColor then - if type(props.xenonColor) == 'table' then - SetVehicleXenonLightsCustomColor(vehicle, props.xenonColor[1], props.xenonColor[2], props.xenonColor[3]) - else - SetVehicleXenonLightsColor(vehicle, props.xenonColor) - end - end - if props.modFrontWheels then - SetVehicleMod(vehicle, 23, props.modFrontWheels, false) - end - if props.modBackWheels then - SetVehicleMod(vehicle, 24, props.modBackWheels, false) - end - if props.modCustomTiresF then - SetVehicleMod(vehicle, 23, props.modFrontWheels, props.modCustomTiresF) - end - if props.modCustomTiresR then - SetVehicleMod(vehicle, 24, props.modBackWheels, props.modCustomTiresR) - end - if props.modPlateHolder then - SetVehicleMod(vehicle, 25, props.modPlateHolder, false) - end - if props.modVanityPlate then - SetVehicleMod(vehicle, 26, props.modVanityPlate, false) - end - if props.modTrimA then - SetVehicleMod(vehicle, 27, props.modTrimA, false) - end - if props.modOrnaments then - SetVehicleMod(vehicle, 28, props.modOrnaments, false) - end - if props.modDashboard then - SetVehicleMod(vehicle, 29, props.modDashboard, false) - end - if props.modDial then - SetVehicleMod(vehicle, 30, props.modDial, false) - end - if props.modDoorSpeaker then - SetVehicleMod(vehicle, 31, props.modDoorSpeaker, false) - end - if props.modSeats then - SetVehicleMod(vehicle, 32, props.modSeats, false) - end - if props.modSteeringWheel then - SetVehicleMod(vehicle, 33, props.modSteeringWheel, false) - end - if props.modShifterLeavers then - SetVehicleMod(vehicle, 34, props.modShifterLeavers, false) - end - if props.modAPlate then - SetVehicleMod(vehicle, 35, props.modAPlate, false) - end - if props.modSpeakers then - SetVehicleMod(vehicle, 36, props.modSpeakers, false) - end - if props.modTrunk then - SetVehicleMod(vehicle, 37, props.modTrunk, false) - end - if props.modHydrolic then - SetVehicleMod(vehicle, 38, props.modHydrolic, false) - end - if props.modEngineBlock then - SetVehicleMod(vehicle, 39, props.modEngineBlock, false) - end - if props.modAirFilter then - SetVehicleMod(vehicle, 40, props.modAirFilter, false) - end - if props.modStruts then - SetVehicleMod(vehicle, 41, props.modStruts, false) - end - if props.modArchCover then - SetVehicleMod(vehicle, 42, props.modArchCover, false) - end - if props.modAerials then - SetVehicleMod(vehicle, 43, props.modAerials, false) - end - if props.modTrimB then - SetVehicleMod(vehicle, 44, props.modTrimB, false) - end - if props.modTank then - SetVehicleMod(vehicle, 45, props.modTank, false) - end - if props.modWindows then - SetVehicleMod(vehicle, 46, props.modWindows, false) - end - if props.modKit47 then - SetVehicleMod(vehicle, 47, props.modKit47, false) - end - if props.modLivery then - SetVehicleMod(vehicle, 48, props.modLivery, false) - SetVehicleLivery(vehicle, props.modLivery) - end - if props.modKit49 then - SetVehicleMod(vehicle, 49, props.modKit49, false) - end - if props.liveryRoof then - SetVehicleRoofLivery(vehicle, props.liveryRoof) - end - end -end - --- Unused - -function QBCore.Functions.DrawText(x, y, width, height, scale, r, g, b, a, text) - -- Use local function instead - SetTextFont(4) - SetTextScale(scale, scale) - SetTextColour(r, g, b, a) - BeginTextCommandDisplayText('STRING') - AddTextComponentSubstringPlayerName(text) - EndTextCommandDisplayText(x - width / 2, y - height / 2 + 0.005) -end - -function QBCore.Functions.DrawText3D(x, y, z, text) - -- Use local function instead - SetTextScale(0.35, 0.35) - SetTextFont(4) - SetTextProportional(1) - SetTextColour(255, 255, 255, 215) - BeginTextCommandDisplayText('STRING') - SetTextCentre(true) - AddTextComponentSubstringPlayerName(text) - SetDrawOrigin(x, y, z, 0) - EndTextCommandDisplayText(0.0, 0.0) - local factor = (string.len(text)) / 370 - DrawRect(0.0, 0.0 + 0.0125, 0.017 + factor, 0.03, 0, 0, 0, 75) - ClearDrawOrigin() -end - -function QBCore.Functions.RequestAnimDict(animDict) - if HasAnimDictLoaded(animDict) then return end - RequestAnimDict(animDict) - while not HasAnimDictLoaded(animDict) do - Wait(0) - end -end - -function QBCore.Functions.GetClosestBone(entity, list) - local playerCoords, bone, coords, distance = GetEntityCoords(PlayerPedId()) - for _, element in pairs(list) do - local boneCoords = GetWorldPositionOfEntityBone(entity, element.id or element) - local boneDistance = #(playerCoords - boneCoords) - if not coords then - bone, coords, distance = element, boneCoords, boneDistance - elseif distance > boneDistance then - bone, coords, distance = element, boneCoords, boneDistance - end - end - if not bone then - bone = { id = GetEntityBoneIndexByName(entity, 'bodyshell'), type = 'remains', name = 'bodyshell' } - coords = GetWorldPositionOfEntityBone(entity, bone.id) - distance = #(coords - playerCoords) - end - return bone, coords, distance -end - -function QBCore.Functions.GetBoneDistance(entity, boneType, boneIndex) - local bone - if boneType == 1 then - bone = GetPedBoneIndex(entity, boneIndex) - else - bone = GetEntityBoneIndexByName(entity, boneIndex) - end - local boneCoords = GetWorldPositionOfEntityBone(entity, bone) - local playerCoords = GetEntityCoords(PlayerPedId()) - return #(boneCoords - playerCoords) -end - -function QBCore.Functions.AttachProp(ped, model, boneId, x, y, z, xR, yR, zR, vertex) - local modelHash = type(model) == 'string' and joaat(model) or model - local bone = GetPedBoneIndex(ped, boneId) - QBCore.Functions.LoadModel(modelHash) - local prop = CreateObject(modelHash, 1.0, 1.0, 1.0, 1, 1, 0) - AttachEntityToEntity(prop, ped, bone, x, y, z, xR, yR, zR, 1, 1, 0, 1, not vertex and 2 or 0, 1) - SetModelAsNoLongerNeeded(modelHash) - return prop -end - -function QBCore.Functions.SpawnClear(coords, radius) - if coords then - coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords - else - coords = GetEntityCoords(PlayerPedId()) - end - local vehicles = GetGamePool('CVehicle') - local closeVeh = {} - for i = 1, #vehicles, 1 do - local vehicleCoords = GetEntityCoords(vehicles[i]) - local distance = #(vehicleCoords - coords) - if distance <= radius then - closeVeh[#closeVeh + 1] = vehicles[i] - end - end - if #closeVeh > 0 then return false end - return true -end - -function QBCore.Functions.LoadAnimSet(animSet) - if HasAnimSetLoaded(animSet) then return end - RequestAnimSet(animSet) - while not HasAnimSetLoaded(animSet) do - Wait(0) - end -end - -function QBCore.Functions.LoadParticleDictionary(dictionary) - if HasNamedPtfxAssetLoaded(dictionary) then return end - RequestNamedPtfxAsset(dictionary) - while not HasNamedPtfxAssetLoaded(dictionary) do - Wait(0) - end -end - -function QBCore.Functions.StartParticleAtCoord(dict, ptName, looped, coords, rot, scale, alpha, color, duration) - if coords then - coords = type(coords) == 'table' and vec3(coords.x, coords.y, coords.z) or coords - else - coords = GetEntityCoords(PlayerPedId()) - end - QBCore.Functions.LoadParticleDictionary(dict) - UseParticleFxAssetNextCall(dict) - SetPtfxAssetNextCall(dict) - local particleHandle - if looped then - particleHandle = StartParticleFxLoopedAtCoord(ptName, coords.x, coords.y, coords.z, rot.x, rot.y, rot.z, scale or 1.0) - if color then - SetParticleFxLoopedColour(particleHandle, color.r, color.g, color.b, false) - end - SetParticleFxLoopedAlpha(particleHandle, alpha or 10.0) - if duration then - Wait(duration) - StopParticleFxLooped(particleHandle, 0) - end - else - SetParticleFxNonLoopedAlpha(alpha or 10.0) - if color then - SetParticleFxNonLoopedColour(color.r, color.g, color.b) - end - StartParticleFxNonLoopedAtCoord(ptName, coords.x, coords.y, coords.z, rot.x, rot.y, rot.z, scale or 1.0) - end - return particleHandle -end - -function QBCore.Functions.StartParticleOnEntity(dict, ptName, looped, entity, bone, offset, rot, scale, alpha, color, evolution, duration) - QBCore.Functions.LoadParticleDictionary(dict) - UseParticleFxAssetNextCall(dict) - local particleHandle, boneID - if bone and GetEntityType(entity) == 1 then - boneID = GetPedBoneIndex(entity, bone) - elseif bone then - boneID = GetEntityBoneIndexByName(entity, bone) - end - if looped then - if bone then - particleHandle = StartParticleFxLoopedOnEntityBone(ptName, entity, offset.x, offset.y, offset.z, rot.x, rot.y, rot.z, boneID, scale) - else - particleHandle = StartParticleFxLoopedOnEntity(ptName, entity, offset.x, offset.y, offset.z, rot.x, rot.y, rot.z, scale) - end - if evolution then - SetParticleFxLoopedEvolution(particleHandle, evolution.name, evolution.amount, false) - end - if color then - SetParticleFxLoopedColour(particleHandle, color.r, color.g, color.b, false) - end - SetParticleFxLoopedAlpha(particleHandle, alpha) - if duration then - Wait(duration) - StopParticleFxLooped(particleHandle, 0) - end - else - SetParticleFxNonLoopedAlpha(alpha or 10.0) - if color then - SetParticleFxNonLoopedColour(color.r, color.g, color.b) - end - if bone then - StartParticleFxNonLoopedOnPedBone(ptName, entity, offset.x, offset.y, offset.z, rot.x, rot.y, rot.z, boneID, scale) - else - StartParticleFxNonLoopedOnEntity(ptName, entity, offset.x, offset.y, offset.z, rot.x, rot.y, rot.z, scale) - end - end - return particleHandle -end - -function QBCore.Functions.GetStreetNametAtCoords(coords) - local streetname1, streetname2 = GetStreetNameAtCoord(coords.x, coords.y, coords.z) - return { main = GetStreetNameFromHashKey(streetname1), cross = GetStreetNameFromHashKey(streetname2) } -end - -function QBCore.Functions.GetZoneAtCoords(coords) - return GetLabelText(GetNameOfZone(coords)) -end - -function QBCore.Functions.GetCardinalDirection(entity) - entity = DoesEntityExist(entity) and entity or PlayerPedId() - if DoesEntityExist(entity) then - local heading = GetEntityHeading(entity) - if ((heading >= 0 and heading < 45) or (heading >= 315 and heading < 360)) then - return 'North' - elseif (heading >= 45 and heading < 135) then - return 'West' - elseif (heading >= 135 and heading < 225) then - return 'South' - elseif (heading >= 225 and heading < 315) then - return 'East' - end - else - return 'Cardinal Direction Error' - end -end - -function QBCore.Functions.GetCurrentTime() - local obj = {} - obj.min = GetClockMinutes() - obj.hour = GetClockHours() - if obj.hour <= 12 then - obj.ampm = 'AM' - elseif obj.hour >= 13 then - obj.ampm = 'PM' - obj.formattedHour = obj.hour - 12 - end - if obj.min <= 9 then - obj.formattedMin = '0' .. obj.min - end - return obj -end - -function QBCore.Functions.GetGroundZCoord(coords) - if not coords then return end - - local retval, groundZ = GetGroundZFor_3dCoord(coords.x, coords.y, coords.z, 0) - if retval then - return vector3(coords.x, coords.y, groundZ) - else - return coords - end -end - -function QBCore.Functions.GetGroundHash(entity) - local coords = GetEntityCoords(entity) - local num = StartShapeTestCapsule(coords.x, coords.y, coords.z + 4, coords.x, coords.y, coords.z - 2.0, 1, 1, entity, 7) - local retval, success, endCoords, surfaceNormal, materialHash, entityHit = GetShapeTestResultEx(num) - return materialHash, entityHit, surfaceNormal, endCoords, success, retval -end - -for functionName, func in pairs(QBCore.Functions) do - if type(func) == 'function' then - exports(functionName, func) - end -end - --- Access a specific function directly: --- exports['qb-core']:Notify('Hello Player!') diff --git a/client/loops.lua b/client/loops.lua deleted file mode 100644 index b4629a7..0000000 --- a/client/loops.lua +++ /dev/null @@ -1,24 +0,0 @@ -CreateThread(function() - while true do - local sleep = 0 - if LocalPlayer.state.isLoggedIn then - sleep = (1000 * 60) * QBCore.Config.UpdateInterval - TriggerServerEvent('QBCore:UpdatePlayer') - end - Wait(sleep) - end -end) - -CreateThread(function() - while true do - if LocalPlayer.state.isLoggedIn then - if (QBCore.PlayerData.metadata['hunger'] <= 0 or QBCore.PlayerData.metadata['thirst'] <= 0) and not (QBCore.PlayerData.metadata['isdead'] or QBCore.PlayerData.metadata['inlaststand']) then - local ped = PlayerPedId() - local currentHealth = GetEntityHealth(ped) - local decreaseThreshold = math.random(5, 10) - SetEntityHealth(ped, currentHealth - decreaseThreshold) - end - end - Wait(QBCore.Config.StatusInterval) - end -end) diff --git a/client/main.lua b/client/main.lua deleted file mode 100644 index 05d3b68..0000000 --- a/client/main.lua +++ /dev/null @@ -1,50 +0,0 @@ -QBCore = {} -QBCore.PlayerData = {} -QBCore.Config = QBConfig -QBCore.Shared = QBShared -QBCore.ClientCallbacks = {} -QBCore.ServerCallbacks = {} - --- Get the full QBCore object (default behavior): --- local QBCore = GetCoreObject() - --- Get only specific parts of QBCore: --- local QBCore = GetCoreObject({'Players', 'Config'}) - -local function GetCoreObject(filters) - if not filters then return QBCore end - local results = {} - for i = 1, #filters do - local key = filters[i] - if QBCore[key] then - results[key] = QBCore[key] - end - end - return results -end -exports('GetCoreObject', GetCoreObject) - -local function GetSharedItems() - return QBShared.Items -end -exports('GetSharedItems', GetSharedItems) - -local function GetSharedVehicles() - return QBShared.Vehicles -end -exports('GetSharedVehicles', GetSharedVehicles) - -local function GetSharedWeapons() - return QBShared.Weapons -end -exports('GetSharedWeapons', GetSharedWeapons) - -local function GetSharedJobs() - return QBShared.Jobs -end -exports('GetSharedJobs', GetSharedJobs) - -local function GetSharedGangs() - return QBShared.Gangs -end -exports('GetSharedGangs', GetSharedGangs) diff --git a/config.lua b/config.lua deleted file mode 100644 index 3c77309..0000000 --- a/config.lua +++ /dev/null @@ -1,157 +0,0 @@ -QBConfig = {} - -QBConfig.MaxPlayers = GetConvarInt('sv_maxclients', 48) -- Gets max players from config file, default 48 -QBConfig.DefaultSpawn = vector4(-1035.71, -2731.87, 12.86, 0.0) -QBConfig.UpdateInterval = 5 -- how often to update player data in minutes -QBConfig.StatusInterval = 5000 -- how often to check hunger/thirst status in milliseconds - -QBConfig.Money = {} -QBConfig.Money.MoneyTypes = { cash = 500, bank = 5000, crypto = 0 } -- type = startamount - Add or remove money types for your server (for ex. blackmoney = 0), remember once added it will not be removed from the database! -QBConfig.Money.DontAllowMinus = { 'cash', 'crypto' } -- Money that is not allowed going in minus -QBConfig.Money.MinusLimit = -5000 -- The maximum amount you can be negative -QBConfig.Money.PayCheckTimeOut = 10 -- The time in minutes that it will give the paycheck -QBConfig.Money.PayCheckSociety = false -- If true paycheck will come from the society account that the player is employed at, requires qb-management - -QBConfig.Player = {} -QBConfig.Player.HungerRate = 4.2 -- Rate at which hunger goes down. -QBConfig.Player.ThirstRate = 3.8 -- Rate at which thirst goes down. -QBConfig.Player.Bloodtypes = { - 'A+', 'A-', 'B+', 'B-', 'AB+', 'AB-', 'O+', 'O-', -} - -QBConfig.Player.PlayerDefaults = { - citizenid = function() return QBCore.Player.CreateCitizenId() end, - cid = 1, - money = function() - local moneyDefaults = {} - for moneytype, startamount in pairs(QBConfig.Money.MoneyTypes) do - moneyDefaults[moneytype] = startamount - end - return moneyDefaults - end, - optin = true, - charinfo = { - firstname = 'Firstname', - lastname = 'Lastname', - birthdate = '00-00-0000', - gender = 0, - nationality = 'USA', - phone = function() return QBCore.Functions.CreatePhoneNumber() end, - account = function() return QBCore.Functions.CreateAccountNumber() end - }, - job = { - name = 'unemployed', - label = 'Civilian', - payment = 10, - type = 'none', - onduty = false, - isboss = false, - grade = { - name = 'Freelancer', - level = 0 - } - }, - gang = { - name = 'none', - label = 'No Gang Affiliation', - isboss = false, - grade = { - name = 'none', - level = 0 - } - }, - metadata = { - hunger = 100, - thirst = 100, - stress = 0, - isdead = false, - inlaststand = false, - armor = 0, - ishandcuffed = false, - tracker = false, - injail = 0, - jailitems = {}, - status = {}, - phone = {}, - rep = {}, - currentapartment = nil, - callsign = 'NO CALLSIGN', - bloodtype = function() return QBConfig.Player.Bloodtypes[math.random(1, #QBConfig.Player.Bloodtypes)] end, - fingerprint = function() return QBCore.Player.CreateFingerId() end, - walletid = function() return QBCore.Player.CreateWalletId() end, - criminalrecord = { - hasRecord = false, - date = nil - }, - licences = { - driver = true, - business = false, - weapon = false - }, - inside = { - house = nil, - apartment = { - apartmentType = nil, - apartmentId = nil, - } - }, - phonedata = { - SerialNumber = function() return QBCore.Player.CreateSerialNumber() end, - InstalledApps = {} - } - }, - position = QBConfig.DefaultSpawn, - items = {}, -} - -QBConfig.Server = {} -- General server config -QBConfig.Server.Closed = false -- Set server closed (no one can join except people with ace permission 'qbadmin.join') -QBConfig.Server.ClosedReason = 'Server Closed' -- Reason message to display when people can't join the server -QBConfig.Server.Uptime = 0 -- Time the server has been up. -QBConfig.Server.Whitelist = false -- Enable or disable whitelist on the server -QBConfig.Server.WhitelistPermission = 'admin' -- Permission that's able to enter the server when the whitelist is on -QBConfig.Server.PVP = true -- Enable or disable pvp on the server (Ability to shoot other players) -QBConfig.Server.Discord = '' -- Discord invite link -QBConfig.Server.CheckDuplicateLicense = true -- Check for duplicate rockstar license on join -QBConfig.Server.Permissions = { 'god', 'admin', 'mod' } -- Add as many groups as you want here after creating them in your server.cfg - -QBConfig.Commands = {} -- Command Configuration -QBConfig.Commands.OOCColor = { 255, 151, 133 } -- RGB color code for the OOC command - -QBConfig.Notify = {} - -QBConfig.Notify.NotificationStyling = { - group = false, -- Allow notifications to stack with a badge instead of repeating - position = 'right', -- top-left | top-right | bottom-left | bottom-right | top | bottom | left | right | center - progress = true -- Display Progress Bar -} - --- These are how you define different notification variants --- The "color" key is background of the notification --- The "icon" key is the css-icon code, this project uses `Material Icons` & `Font Awesome` -QBConfig.Notify.VariantDefinitions = { - success = { - classes = 'success', - icon = 'check_circle' - }, - primary = { - classes = 'primary', - icon = 'notifications' - }, - warning = { - classes = 'warning', - icon = 'warning' - }, - error = { - classes = 'error', - icon = 'error' - }, - police = { - classes = 'police', - icon = 'local_police' - }, - ambulance = { - classes = 'ambulance', - icon = 'fas fa-ambulance' - } -} diff --git a/html/css/drawtext.css b/html/css/drawtext.css deleted file mode 100644 index 36832d5..0000000 --- a/html/css/drawtext.css +++ /dev/null @@ -1,97 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@300;500&display=swap"); - -:root { - --primary-bg: rgba(23, 23, 23, 90%); - --active-bg: #dc143c; - --font-color: white; -} - -#drawtext-container { - display: none; - width: 100%; - height: 100%; - overflow: hidden; - padding: 0; - margin: 0; - font-family: "Poppins", sans-serif !important; - font-weight: 300; -} - -.text { - position: absolute; - background: var(--primary-bg); - color: var(--font-color); - margin-top: 0.5rem; - padding: 0.45rem; - border-radius: 0.15rem; - box-shadow: 0rem 0rem 0.1rem 0.05rem #000000; -} - -@media (width: 3840px) and (height: 2160px) { - #drawtext-container { - display: none; - width: 100%; - height: 100%; - overflow: hidden; - padding: 0; - margin: 0; - font-family: "Poppins", sans-serif !important; - font-weight: 300; - font-size: 1.5vh; - } -} - -.text.pressed { - background: var(--active-bg); -} - -.top { - left: 45vw; - top: -100px; -} - -.top.show { - transition: 0.5s; - top: 10px; - opacity: 1; -} - -.top.hide { - transition: 0.5s; - top: -100px; - opacity: 0; -} - -.right { - top: 50%; - right: -100px; -} - -.right.show { - transition: 0.5s; - right: 10px; - opacity: 1; -} - -.right.hide { - transition: 0.5s; - right: -100px; - opacity: 0; -} - -.left { - top: 50%; - left: -100px; -} - -.left.show { - transition: 0.5s; - left: 10px; - opacity: 1; -} - -.left.hide { - transition: 0.5s; - left: -100px; - opacity: 0; -} \ No newline at end of file diff --git a/html/css/style.css b/html/css/style.css deleted file mode 100644 index 1211654..0000000 --- a/html/css/style.css +++ /dev/null @@ -1,81 +0,0 @@ -html::-webkit-scrollbar { - display: none; -} - -@media (width: 3840px) and (height: 2160px) { - .success { - background-color: rgba(23, 23, 23, 90%); - border-radius: 10px; - box-shadow: 0rem 0rem 0.1rem 0.05rem #000000; - border-left: 0.5rem solid #20bb44; - font-size: 1.5vh; - } - - .primary { - background-color: rgba(23, 23, 23, 90%); - border-radius: 10px; - box-shadow: 0rem 0rem 0.1rem 0.05rem #000000; - border-left: 5px solid #1c75d2; - font-size: 1.5vh; - } - - .error { - background-color: rgba(23, 23, 23, 90%); - border-radius: 10px; - box-shadow: 0rem 0rem 0.1rem 0.05rem #000000; - border-left: 5px solid #c10114; - font-size: 1.5vh; - } - - .police { - background-color: rgba(23, 23, 23, 90%); - border-radius: 10px; - box-shadow: 0rem 0rem 0.1rem 0.05rem #000000; - border-left: 5px solid #2197f2; - font-size: 1.5vh; - } - - .ambulance { - background-color: rgba(23, 23, 23, 90%); - border-radius: 10px; - box-shadow: 0rem 0rem 0.1rem 0.05rem #000000; - border-left: 5px solid #f44236; - font-size: 1.5vh; - } -} - -.success { - background-color: #20bb44; - border-radius: 5px; - border: 1px solid #6ae587; -} - -.primary { - background-color: #1c75d2; - border-radius: 5px; - border: 1px solid #6facec; -} - -.warning { - background-color: #ff9800; - border-radius: 5px; - border: 1px solid #ffc107; -} - -.error { - background-color: #c10114; - border-radius: 5px; - border: 1px solid #fe4255; -} - -.police { - background-color: #2197f2; - border-radius: 5px; - border: 1px solid #7ac1f7; -} - -.ambulance { - background-color: #f44236; - border-radius: 5px; - border: 1px solid #f88e86; -} diff --git a/html/index.html b/html/index.html deleted file mode 100644 index 13c31e3..0000000 --- a/html/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - -
-
-
-
- - diff --git a/html/js/app.js b/html/js/app.js deleted file mode 100644 index 7a9b374..0000000 --- a/html/js/app.js +++ /dev/null @@ -1,62 +0,0 @@ -import { registerWindowMethods } from "./testing.js"; -import { isEnvBrowser } from "./utils.js"; -import { determineStyleFromVariant, DEV_MODE, fetchNotifyConfig, NOTIFY_CONFIG } from "./config.js"; - -const { useQuasar } = Quasar; -const { onMounted, onUnmounted } = Vue; - -const app = Vue.createApp({ - setup() { - const $q = useQuasar(); - - const showNotif = async ({ data }) => { - // Otherwise we process any old MessageEvent with a data property - if (data?.action !== "notify") return; - - const { text, length, type, caption, icon: dataIcon } = data; - let { classes, icon } = determineStyleFromVariant(type); - - if (dataIcon) { - icon = dataIcon; - } - - // Make sure we have sucessfully fetched out config properly - if (!NOTIFY_CONFIG) { - console.error("The notification config did not load properly, trying again for next time"); - // Lets check again to see if it exists - await fetchNotifyConfig(); - // If we have a config lets re-run notification with same data, this - // isn't recursive though. - if (NOTIFY_CONFIG) return showNotif({ data }); - } - - $q.notify({ - message: text, - multiLine: text.length > 100, - // If our text is larger than a 100 characters, - // we should use multiline notifications - group: NOTIFY_CONFIG.NotificationStyling.group ?? false, - progress: NOTIFY_CONFIG.NotificationStyling.progress ?? true, - position: NOTIFY_CONFIG.NotificationStyling.position ?? "right", - timeout: length, - caption, - classes, - icon, - }); - }; - onMounted(() => { - window.addEventListener("message", showNotif); - }); - onUnmounted(() => { - window.removeEventListener("message", showNotif); - }); - return {}; - }, -}); - -app.use(Quasar, { config: {} }); -app.mount("#q-app"); - -if (DEV_MODE || isEnvBrowser()) { - registerWindowMethods(); -} diff --git a/html/js/config.js b/html/js/config.js deleted file mode 100644 index 3757238..0000000 --- a/html/js/config.js +++ /dev/null @@ -1,45 +0,0 @@ -import { fetchNui, isEnvBrowser } from "./utils.js"; -import { BrowserMockConfigData } from "./testing.js"; - -export const DEV_MODE = false; - -/** - * @typedef NotiVariantData - * @property {string} icon - * @property {string} color - **/ - -/** - * Will hold config statically outside of Vue state - * @property {Record} VariantDefinitions - * @property {Record} NotificationStyling - **/ -export let NOTIFY_CONFIG = null; - -/** - * Pure function taking a notification type and returning an object - * with style details - * @param {string} variant - * @returns NotiVariantData - **/ -export const determineStyleFromVariant = (variant) => { - const variantData = NOTIFY_CONFIG.VariantDefinitions[variant]; - if (!variantData) throw new Error(`Style of type: ${variant}, does not exist in the config`); - return variantData; -}; - -// Fetch and set NOTIFY_CONFIG from client script callback -export const fetchNotifyConfig = async () => { - NOTIFY_CONFIG = await fetchNui("getNotifyConfig", {}, BrowserMockConfigData); - if (isEnvBrowser() || DEV_MODE) { - console.log("Fetched Config:"); - console.dir(NOTIFY_CONFIG); - } -}; - -// We specifically wait for all other files to load -// just in case of a race condition between client handlers -// and NUI fetch call -window.addEventListener("load", async () => { - await fetchNotifyConfig(); -}); diff --git a/html/js/drawtext.js b/html/js/drawtext.js deleted file mode 100644 index 975d6e1..0000000 --- a/html/js/drawtext.js +++ /dev/null @@ -1,124 +0,0 @@ -let direction = null; - -const drawText = async (textData) => { - const text = document.getElementById("text"); - let {position} = textData; - switch (textData.position) { - case "left": - addClass(text, position); - direction = "left"; - break; - case "top": - addClass(text, position); - direction = "top"; - break; - case "right": - addClass(text, position); - direction = "right"; - break; - default: - addClass(text, "left"); - direction = "left"; - break; - } - - text.innerHTML = textData.text; - document.getElementById("drawtext-container").style.display = "block"; - await sleep(100); - addClass(text, "show"); -}; - -const changeText = async (textData) => { - const text = document.getElementById("text"); - let {position} = textData; - - removeClass(text, "show"); - addClass(text, "pressed"); - addClass(text, "hide"); - - await sleep(500); - removeClass(text, "left"); - removeClass(text, "right"); - removeClass(text, "top"); - removeClass(text, "bottom"); - removeClass(text, "hide"); - removeClass(text, "pressed"); - - switch (textData.position) { - case "left": - addClass(text, position); - direction = "left"; - break; - case "top": - addClass(text, position); - direction = "top"; - break; - case "right": - addClass(text, position); - direction = "right"; - break; - default: - addClass(text, "left"); - direction = "left"; - break; - } - text.innerHTML = textData.text; - - await sleep(100); - text.classList.add("show"); -}; - -const hideText = async () => { - const text = document.getElementById("text"); - removeClass(text, "show"); - addClass(text, "hide"); - - setTimeout(() => { - removeClass(text, "left"); - removeClass(text, "right"); - removeClass(text, "top"); - removeClass(text, "bottom"); - removeClass(text, "hide"); - removeClass(text, "pressed"); - document.getElementById("drawtext-container").style.display = "none"; - }, 1000); -}; - -const keyPressed = () => { - const text = document.getElementById("text"); - addClass(text, "pressed"); -}; - -window.addEventListener("message", (event) => { - const data = event.data; - const action = data.action; - const textData = data.data; - switch (action) { - case "DRAW_TEXT": - return drawText(textData); - case "CHANGE_TEXT": - return changeText(textData); - case "HIDE_TEXT": - return hideText(); - case "KEY_PRESSED": - return keyPressed(); - default: - return; - } -}); - -const sleep = (ms) => { - return new Promise((resolve) => setTimeout(resolve, ms)); -}; - -const removeClass = (element, name) => { - if (element.classList.contains(name)) { - element.classList.remove(name); - } -}; - -const addClass = (element, name) => { - if (!element.classList.contains(name)) { - element.classList.add(name); - } -}; diff --git a/html/js/testing.js b/html/js/testing.js deleted file mode 100644 index 5181f57..0000000 --- a/html/js/testing.js +++ /dev/null @@ -1,44 +0,0 @@ -// Will register dev utilities on window -export const registerWindowMethods = () => { - window.SendNotification = (data) => { - window.dispatchEvent( - new MessageEvent("message", { - data: { - action: "notify", - ...data, - }, - }) - ); - }; -}; - -// Used for browser env handling -export const BrowserMockConfigData = { - NotificationStyling: { - group: true, - position: "top-right", - progress: true, - }, - VariantDefinitions: { - success: { - classes: "success", - icon: "done", - }, - primary: { - classes: "primary", - icon: "info", - }, - error: { - classes: "error", - icon: "dangerous", - }, - police: { - classes: "police", - icon: "local_police", - }, - ambulance: { - classes: "ambulance", - icon: "fas fa-ambulance", - }, - }, -}; diff --git a/html/js/utils.js b/html/js/utils.js deleted file mode 100644 index bf2fb8c..0000000 --- a/html/js/utils.js +++ /dev/null @@ -1,27 +0,0 @@ -// Returns whether we are in browser or not -export const isEnvBrowser = () => !window.invokeNative; - -/** - * Real simple wrapper around fetch api for NUI focus - * it will return the mockData param if we are in browser. So we don't - * make a useless request to a hostname that doesn't exist. - * @param evName {string} - The callback event name/type - * @param data {any} - Optional `body` data JSON stringified & passed with the request - * @param mockData {any} - Mock data to return if this is running in browser - * @return Promise - **/ -export const fetchNui = async (evName, data, mockData = null) => { - if (isEnvBrowser()) return mockData; - - const resourceName = window.GetParentResourceName(); - - const rawResp = await fetch(`https://${resourceName}/${evName}`, { - body: JSON.stringify(data), - headers: { - "Content-Type": "application/json; charset=UTF8", - }, - method: "POST", - }); - - return await rawResp.json(); -}; diff --git a/shared/gangs.lua b/shared/gangs.lua deleted file mode 100644 index 70dc5a9..0000000 --- a/shared/gangs.lua +++ /dev/null @@ -1,58 +0,0 @@ -QBShared = QBShared or {} -QBShared.Gangs = { - none = { label = 'No Gang', grades = { ['0'] = { name = 'Unaffiliated' } } }, - lostmc = { - label = 'The Lost MC', - grades = { - ['0'] = { name = 'Recruit' }, - ['1'] = { name = 'Enforcer' }, - ['2'] = { name = 'Shot Caller' }, - ['3'] = { name = 'Boss', isboss = true }, - }, - }, - ballas = { - label = 'Ballas', - grades = { - ['0'] = { name = 'Recruit' }, - ['1'] = { name = 'Enforcer' }, - ['2'] = { name = 'Shot Caller' }, - ['3'] = { name = 'Boss', isboss = true }, - }, - }, - vagos = { - label = 'Vagos', - grades = { - ['0'] = { name = 'Recruit' }, - ['1'] = { name = 'Enforcer' }, - ['2'] = { name = 'Shot Caller' }, - ['3'] = { name = 'Boss', isboss = true }, - }, - }, - cartel = { - label = 'Cartel', - grades = { - ['0'] = { name = 'Recruit' }, - ['1'] = { name = 'Enforcer' }, - ['2'] = { name = 'Shot Caller' }, - ['3'] = { name = 'Boss', isboss = true }, - }, - }, - families = { - label = 'Families', - grades = { - ['0'] = { name = 'Recruit' }, - ['1'] = { name = 'Enforcer' }, - ['2'] = { name = 'Shot Caller' }, - ['3'] = { name = 'Boss', isboss = true }, - }, - }, - triads = { - label = 'Triads', - grades = { - ['0'] = { name = 'Recruit' }, - ['1'] = { name = 'Enforcer' }, - ['2'] = { name = 'Shot Caller' }, - ['3'] = { name = 'Boss', isboss = true }, - }, - } -} diff --git a/shared/items.lua b/shared/items.lua deleted file mode 100644 index 84de923..0000000 --- a/shared/items.lua +++ /dev/null @@ -1,385 +0,0 @@ -QBShared = QBShared or {} -QBShared.Items = { - -- WEAPONS - -- Melee - weapon_unarmed = { name = 'weapon_unarmed', label = 'Fists', weight = 1000, type = 'weapon', ammotype = nil, image = 'placeholder.png', unique = true, useable = false, description = 'Fisticuffs' }, - weapon_dagger = { name = 'weapon_dagger', label = 'Dagger', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_dagger.png', unique = true, useable = false, description = 'A short knife with a pointed and edged blade, used as a weapon' }, - weapon_bat = { name = 'weapon_bat', label = 'Bat', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_bat.png', unique = true, useable = false, description = 'Used for hitting a ball in sports (or other things)' }, - weapon_bottle = { name = 'weapon_bottle', label = 'Broken Bottle', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_bottle.png', unique = true, useable = false, description = 'A broken bottle' }, - weapon_crowbar = { name = 'weapon_crowbar', label = 'Crowbar', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_crowbar.png', unique = true, useable = false, description = 'An iron bar with a flattened end, used as a lever' }, - weapon_flashlight = { name = 'weapon_flashlight', label = 'Flashlight', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_flashlight.png', unique = true, useable = false, description = 'A battery-operated portable light' }, - weapon_golfclub = { name = 'weapon_golfclub', label = 'Golfclub', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_golfclub.png', unique = true, useable = false, description = 'A club used to hit the ball in golf' }, - weapon_hammer = { name = 'weapon_hammer', label = 'Hammer', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_hammer.png', unique = true, useable = false, description = 'Used for jobs such as breaking things (legs) and driving in nails' }, - weapon_hatchet = { name = 'weapon_hatchet', label = 'Hatchet', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_hatchet.png', unique = true, useable = false, description = 'A small axe with a short handle for use in one hand' }, - weapon_knuckle = { name = 'weapon_knuckle', label = 'Knuckle', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_knuckle.png', unique = true, useable = false, description = 'A metal guard worn over the knuckles in fighting, especially to increase the effect of the blows' }, - weapon_knife = { name = 'weapon_knife', label = 'Knife', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_knife.png', unique = true, useable = false, description = 'An instrument composed of a blade fixed into a handle, used for cutting or as a weapon' }, - weapon_machete = { name = 'weapon_machete', label = 'Machete', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_machete.png', unique = true, useable = false, description = 'A broad, heavy knife used as a weapon' }, - weapon_switchblade = { name = 'weapon_switchblade', label = 'Switchblade', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_switchblade.png', unique = true, useable = false, description = 'A knife with a blade that springs out from the handle when a button is pressed' }, - weapon_nightstick = { name = 'weapon_nightstick', label = 'Nightstick', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_nightstick.png', unique = true, useable = false, description = 'A police officer\'s club or billy' }, - weapon_wrench = { name = 'weapon_wrench', label = 'Wrench', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_wrench.png', unique = true, useable = false, description = 'A tool used for gripping and turning nuts, bolts, pipes, etc' }, - weapon_battleaxe = { name = 'weapon_battleaxe', label = 'Battle Axe', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_battleaxe.png', unique = true, useable = false, description = 'A large broad-bladed axe used in ancient warfare' }, - weapon_poolcue = { name = 'weapon_poolcue', label = 'Poolcue', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_poolcue.png', unique = true, useable = false, description = 'A stick used to strike a ball, usually the cue ball (or other things)' }, - weapon_briefcase = { name = 'weapon_briefcase', label = 'Briefcase', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_briefcase.png', unique = true, useable = false, description = 'A briefcase for storing important documents' }, - weapon_briefcase_02 = { name = 'weapon_briefcase_02', label = 'Suitcase', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_briefcase2.png', unique = true, useable = false, description = 'Wonderfull for nice vacation to Liberty City' }, - weapon_garbagebag = { name = 'weapon_garbagebag', label = 'Garbage Bag', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_garbagebag.png', unique = true, useable = false, description = 'A garbage bag' }, - weapon_handcuffs = { name = 'weapon_handcuffs', label = 'Handcuffs', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_handcuffs.png', unique = true, useable = false, description = 'A pair of lockable linked metal rings for securing a prisoner\'s wrists' }, - weapon_bread = { name = 'weapon_bread', label = 'Baquette', weight = 1000, type = 'weapon', ammotype = nil, image = 'baquette.png', unique = true, useable = false, description = 'Bread...?' }, - weapon_stone_hatchet = { name = 'weapon_stone_hatchet', label = 'Stone Hatchet', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_stone_hatchet.png', unique = true, useable = true, description = 'Stone Hatchet' }, - weapon_candycane = { name = 'weapon_candycane', label = 'Candy Cane', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_candycane', unique = true, useable = true, description = 'Candy Cane' }, - - -- Handguns - weapon_pistol = { name = 'weapon_pistol', label = 'Walther P99', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_pistol.png', unique = true, useable = false, description = 'A small firearm designed to be held in one hand' }, - weapon_pistol_mk2 = { name = 'weapon_pistol_mk2', label = 'Pistol Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_pistol_mk2.png', unique = true, useable = false, description = 'An upgraded small firearm designed to be held in one hand' }, - weapon_combatpistol = { name = 'weapon_combatpistol', label = 'Combat Pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_combatpistol.png', unique = true, useable = false, description = 'A combat version small firearm designed to be held in one hand' }, - weapon_appistol = { name = 'weapon_appistol', label = 'AP Pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_appistol.png', unique = true, useable = false, description = 'A small firearm designed to be held in one hand that is automatic' }, - weapon_stungun = { name = 'weapon_stungun', label = 'Taser', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_stungun.png', unique = true, useable = false, description = 'A weapon firing barbs attached by wires to batteries, causing temporary paralysis' }, - weapon_pistol50 = { name = 'weapon_pistol50', label = 'Pistol .50', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_pistol50.png', unique = true, useable = false, description = 'A .50 caliber firearm designed to be held with both hands' }, - weapon_snspistol = { name = 'weapon_snspistol', label = 'SNS Pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_snspistol.png', unique = true, useable = false, description = 'A very small firearm designed to be easily concealed' }, - weapon_heavypistol = { name = 'weapon_heavypistol', label = 'Heavy Pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_heavypistol.png', unique = true, useable = false, description = 'A hefty firearm designed to be held in one hand (or attempted)' }, - weapon_vintagepistol = { name = 'weapon_vintagepistol', label = 'Vintage Pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_vintagepistol.png', unique = true, useable = false, description = 'An antique firearm designed to be held in one hand' }, - weapon_flaregun = { name = 'weapon_flaregun', label = 'Flare Gun', weight = 1000, type = 'weapon', ammotype = 'AMMO_FLARE', image = 'weapon_flaregun.png', unique = true, useable = false, description = 'A handgun for firing signal rockets' }, - weapon_marksmanpistol = { name = 'weapon_marksmanpistol', label = 'Marksman Pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_marksmanpistol.png', unique = true, useable = false, description = 'A very accurate small firearm designed to be held in one hand' }, - weapon_revolver = { name = 'weapon_revolver', label = 'Revolver', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_revolver.png', unique = true, useable = false, description = 'A pistol with revolving chambers enabling several shots to be fired without reloading' }, - weapon_revolver_mk2 = { name = 'weapon_revolver_mk2', label = 'Violence', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_revolver_mk2.png', unique = true, useable = true, description = 'da Violence' }, - weapon_doubleaction = { name = 'weapon_doubleaction', label = 'Double Action Revolver', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_doubleaction.png', unique = true, useable = true, description = 'Double Action Revolver' }, - weapon_snspistol_mk2 = { name = 'weapon_snspistol_mk2', label = 'SNS Pistol Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_snspistol_mk2.png', unique = true, useable = true, description = 'SNS Pistol MK2' }, - weapon_raypistol = { name = 'weapon_raypistol', label = 'Up-n-Atomizer', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_raypistol.png', unique = true, useable = true, description = 'Weapon Raypistol' }, - weapon_ceramicpistol = { name = 'weapon_ceramicpistol', label = 'Ceramic Pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_ceramicpistol.png', unique = true, useable = true, description = 'Weapon Ceramicpistol' }, - weapon_navyrevolver = { name = 'weapon_navyrevolver', label = 'Navy Revolver', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_navyrevolver.png', unique = true, useable = true, description = 'Weapon Navyrevolver' }, - weapon_gadgetpistol = { name = 'weapon_gadgetpistol', label = 'Perico Pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_gadgetpistol.png', unique = true, useable = true, description = 'Weapon Gadgetpistol' }, - weapon_pistolxm3 = { name = 'weapon_pistolxm3', label = 'Pistol XM3', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_pistolxm3.png', unique = true, useable = true, description = 'Pistol XM3' }, - - -- Submachine Guns - weapon_microsmg = { name = 'weapon_microsmg', label = 'Micro SMG', weight = 1000, type = 'weapon', ammotype = 'AMMO_SMG', image = 'weapon_microsmg.png', unique = true, useable = false, description = 'A handheld light weight machine gun' }, - weapon_smg = { name = 'weapon_smg', label = 'SMG', weight = 1000, type = 'weapon', ammotype = 'AMMO_SMG', image = 'weapon_smg.png', unique = true, useable = false, description = 'A handheld light weight machine gun' }, - weapon_smg_mk2 = { name = 'weapon_smg_mk2', label = 'SMG Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_SMG', image = 'weapon_smg_mk2.png', unique = true, useable = true, description = 'SMG MK2' }, - weapon_assaultsmg = { name = 'weapon_assaultsmg', label = 'Assault SMG', weight = 1000, type = 'weapon', ammotype = 'AMMO_SMG', image = 'weapon_assaultsmg.png', unique = true, useable = false, description = 'An assault version of a handheld light weight machine gun' }, - weapon_combatpdw = { name = 'weapon_combatpdw', label = 'Combat PDW', weight = 1000, type = 'weapon', ammotype = 'AMMO_SMG', image = 'weapon_combatpdw.png', unique = true, useable = false, description = 'A combat version of a handheld light weight machine gun' }, - weapon_machinepistol = { name = 'weapon_machinepistol', label = 'Tec-9', weight = 1000, type = 'weapon', ammotype = 'AMMO_PISTOL', image = 'weapon_machinepistol.png', unique = true, useable = false, description = 'A self-loading pistol capable of burst or fully automatic fire' }, - weapon_minismg = { name = 'weapon_minismg', label = 'Mini SMG', weight = 1000, type = 'weapon', ammotype = 'AMMO_SMG', image = 'weapon_minismg.png', unique = true, useable = false, description = 'A mini handheld light weight machine gun' }, - weapon_raycarbine = { name = 'weapon_raycarbine', label = 'Unholy Hellbringer', weight = 1000, type = 'weapon', ammotype = 'AMMO_SMG', image = 'weapon_raycarbine.png', unique = true, useable = true, description = 'Weapon Raycarbine' }, - - -- Shotguns - weapon_pumpshotgun = { name = 'weapon_pumpshotgun', label = 'Pump Shotgun', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_pumpshotgun.png', unique = true, useable = false, description = 'A pump-action smoothbore gun for firing small shot at short range' }, - weapon_sawnoffshotgun = { name = 'weapon_sawnoffshotgun', label = 'Sawn-off Shotgun', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_sawnoffshotgun.png', unique = true, useable = false, description = 'A sawn-off smoothbore gun for firing small shot at short range' }, - weapon_assaultshotgun = { name = 'weapon_assaultshotgun', label = 'Assault Shotgun', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_assaultshotgun.png', unique = true, useable = false, description = 'An assault version of asmoothbore gun for firing small shot at short range' }, - weapon_bullpupshotgun = { name = 'weapon_bullpupshotgun', label = 'Bullpup Shotgun', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_bullpupshotgun.png', unique = true, useable = false, description = 'A compact smoothbore gun for firing small shot at short range' }, - weapon_musket = { name = 'weapon_musket', label = 'Musket', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_musket.png', unique = true, useable = false, description = 'An infantryman\'s light gun with a long barrel, typically smooth-bored, muzzleloading, and fired from the shoulder' }, - weapon_heavyshotgun = { name = 'weapon_heavyshotgun', label = 'Heavy Shotgun', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_heavyshotgun.png', unique = true, useable = false, description = 'A large smoothbore gun for firing small shot at short range' }, - weapon_dbshotgun = { name = 'weapon_dbshotgun', label = 'Double-barrel Shotgun', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_dbshotgun.png', unique = true, useable = false, description = 'A shotgun with two parallel barrels, allowing two single shots to be fired in quick succession' }, - weapon_autoshotgun = { name = 'weapon_autoshotgun', label = 'Auto Shotgun', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_autoshotgun.png', unique = true, useable = false, description = 'A shotgun capable of rapid continous fire' }, - weapon_pumpshotgun_mk2 = { name = 'weapon_pumpshotgun_mk2', label = 'Pumpshotgun Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_pumpshotgun_mk2.png', unique = true, useable = true, description = 'Pumpshotgun MK2' }, - weapon_combatshotgun = { name = 'weapon_combatshotgun', label = 'Combat Shotgun', weight = 1000, type = 'weapon', ammotype = 'AMMO_SHOTGUN', image = 'weapon_combatshotgun.png', unique = true, useable = true, description = 'Weapon Combatshotgun' }, - - -- Assault Rifles - weapon_assaultrifle = { name = 'weapon_assaultrifle', label = 'Assault Rifle', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_assaultrifle.png', unique = true, useable = false, description = 'A rapid-fire, magazine-fed automatic rifle designed for infantry use' }, - weapon_assaultrifle_mk2 = { name = 'weapon_assaultrifle_mk2', label = 'Assault Rifle Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_assaultrifle_mk2.png', unique = true, useable = true, description = 'Assault Rifle MK2' }, - weapon_carbinerifle = { name = 'weapon_carbinerifle', label = 'Carbine Rifle', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_carbinerifle.png', unique = true, useable = false, description = 'A light weight automatic rifle' }, - weapon_carbinerifle_mk2 = { name = 'weapon_carbinerifle_mk2', label = 'Carbine Rifle Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_carbinerifle_mk2.png', unique = true, useable = true, description = 'Carbine Rifle MK2' }, - weapon_advancedrifle = { name = 'weapon_advancedrifle', label = 'Advanced Rifle', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_advancedrifle.png', unique = true, useable = false, description = 'An assault version of a rapid-fire, magazine-fed automatic rifle designed for infantry use' }, - weapon_specialcarbine = { name = 'weapon_specialcarbine', label = 'Special Carbine', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_specialcarbine.png', unique = true, useable = false, description = 'An extremely versatile assault rifle for any combat situation' }, - weapon_bullpuprifle = { name = 'weapon_bullpuprifle', label = 'Bullpup Rifle', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_bullpuprifle.png', unique = true, useable = false, description = 'A compact automatic assault rifle' }, - weapon_compactrifle = { name = 'weapon_compactrifle', label = 'Compact Rifle', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_compactrifle.png', unique = true, useable = false, description = 'A compact version of an assault rifle' }, - weapon_specialcarbine_mk2 = { name = 'weapon_specialcarbine_mk2', label = 'Special Carbine Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_specialcarbine_mk2.png', unique = true, useable = true, description = 'Weapon Wpecialcarbine MK2' }, - weapon_bullpuprifle_mk2 = { name = 'weapon_bullpuprifle_mk2', label = 'Bullpup Rifle Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_bullpuprifle_mk2.png', unique = true, useable = true, description = 'Bull Puprifle MK2' }, - weapon_militaryrifle = { name = 'weapon_militaryrifle', label = 'Military Rifle', weight = 1000, type = 'weapon', ammotype = 'AMMO_RIFLE', image = 'weapon_militaryrifle.png', unique = true, useable = true, description = 'Weapon Militaryrifle' }, - - -- Light Machine Guns - weapon_mg = { name = 'weapon_mg', label = 'Machinegun', weight = 1000, type = 'weapon', ammotype = 'AMMO_MG', image = 'weapon_mg.png', unique = true, useable = false, description = 'An automatic gun that fires bullets in rapid succession for as long as the trigger is pressed' }, - weapon_combatmg = { name = 'weapon_combatmg', label = 'Combat MG', weight = 1000, type = 'weapon', ammotype = 'AMMO_MG', image = 'weapon_combatmg.png', unique = true, useable = false, description = 'A combat version of an automatic gun that fires bullets in rapid succession for as long as the trigger is pressed' }, - weapon_gusenberg = { name = 'weapon_gusenberg', label = 'Thompson SMG', weight = 1000, type = 'weapon', ammotype = 'AMMO_MG', image = 'weapon_gusenberg.png', unique = true, useable = false, description = 'An automatic rifle commonly referred to as a tommy gun' }, - weapon_combatmg_mk2 = { name = 'weapon_combatmg_mk2', label = 'Combat MG Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_MG', image = 'weapon_combatmg_mk2.png', unique = true, useable = true, description = 'Weapon Combatmg MK2' }, - - -- Sniper Rifles - weapon_sniperrifle = { name = 'weapon_sniperrifle', label = 'Sniper Rifle', weight = 1000, type = 'weapon', ammotype = 'AMMO_SNIPER', image = 'weapon_sniperrifle.png', unique = true, useable = false, description = 'A high-precision, long-range rifle' }, - weapon_heavysniper = { name = 'weapon_heavysniper', label = 'Heavy Sniper', weight = 1000, type = 'weapon', ammotype = 'AMMO_SNIPER', image = 'weapon_heavysniper.png', unique = true, useable = false, description = 'An upgraded high-precision, long-range rifle' }, - weapon_marksmanrifle = { name = 'weapon_marksmanrifle', label = 'Marksman Rifle', weight = 1000, type = 'weapon', ammotype = 'AMMO_SNIPER', image = 'weapon_marksmanrifle.png', unique = true, useable = false, description = 'A very accurate single-fire rifle' }, - weapon_remotesniper = { name = 'weapon_remotesniper', label = 'Remote Sniper', weight = 1000, type = 'weapon', ammotype = 'AMMO_SNIPER_REMOTE', image = 'weapon_remotesniper.png', unique = true, useable = false, description = 'A portable high-precision, long-range rifle' }, - weapon_heavysniper_mk2 = { name = 'weapon_heavysniper_mk2', label = 'Heavy Sniper Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_SNIPER', image = 'weapon_heavysniper_mk2.png', unique = true, useable = true, description = 'Weapon Heavysniper MK2' }, - weapon_marksmanrifle_mk2 = { name = 'weapon_marksmanrifle_mk2', label = 'Marksman Rifle Mk II', weight = 1000, type = 'weapon', ammotype = 'AMMO_SNIPER', image = 'weapon_marksmanrifle_mk2.png', unique = true, useable = true, description = 'Weapon Marksmanrifle MK2' }, - - -- Heavy Weapons - weapon_rpg = { name = 'weapon_rpg', label = 'RPG', weight = 1000, type = 'weapon', ammotype = 'AMMO_RPG', image = 'weapon_rpg.png', unique = true, useable = false, description = 'A rocket-propelled grenade launcher' }, - weapon_grenadelauncher = { name = 'weapon_grenadelauncher', label = 'Grenade Launcher', weight = 1000, type = 'weapon', ammotype = 'AMMO_GRENADELAUNCHER', image = 'weapon_grenadelauncher.png', unique = true, useable = false, description = 'A weapon that fires a specially-designed large-caliber projectile, often with an explosive, smoke or gas warhead' }, - weapon_grenadelauncher_smoke = { name = 'weapon_grenadelauncher_smoke', label = 'Smoke Grenade Launcher', weight = 1000, type = 'weapon', ammotype = 'AMMO_GRENADELAUNCHER', image = 'weapon_smokegrenade.png', unique = true, useable = false, description = 'A bomb that produces a lot of smoke when it explodes' }, - weapon_minigun = { name = 'weapon_minigun', label = 'Minigun', weight = 1000, type = 'weapon', ammotype = 'AMMO_MINIGUN', image = 'weapon_minigun.png', unique = true, useable = false, description = 'A portable machine gun consisting of a rotating cluster of six barrels and capable of variable rates of fire of up to 6,000 rounds per minute' }, - weapon_firework = { name = 'weapon_firework', label = 'Firework Launcher', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_firework.png', unique = true, useable = false, description = 'A device containing gunpowder and other combustible chemicals that causes a spectacular explosion when ignited' }, - weapon_railgun = { name = 'weapon_railgun', label = 'Railgun', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_railgun.png', unique = true, useable = false, description = 'A weapon that uses electromagnetic force to launch high velocity projectiles' }, - weapon_railgunxm3 = { name = 'weapon_railgunxm3', label = 'Railgun XM3', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_railgunxm3.png', unique = true, useable = false, description = 'A weapon that uses electromagnetic force to launch high velocity projectiles' }, - weapon_hominglauncher = { name = 'weapon_hominglauncher', label = 'Homing Launcher', weight = 1000, type = 'weapon', ammotype = 'AMMO_STINGER', image = 'weapon_hominglauncher.png', unique = true, useable = false, description = 'A weapon fitted with an electronic device that enables it to find and hit a target' }, - weapon_compactlauncher = { name = 'weapon_compactlauncher', label = 'Compact Launcher', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_compactlauncher.png', unique = true, useable = false, description = 'A compact grenade launcher' }, - weapon_rayminigun = { name = 'weapon_rayminigun', label = 'Widowmaker', weight = 1000, type = 'weapon', ammotype = 'AMMO_MINIGUN', image = 'weapon_rayminigun.png', unique = true, useable = true, description = 'Weapon Rayminigun' }, - - -- Throwables - weapon_grenade = { name = 'weapon_grenade', label = 'Grenade', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_grenade.png', unique = true, useable = false, description = 'A handheld throwable bomb' }, - weapon_bzgas = { name = 'weapon_bzgas', label = 'BZ Gas', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_bzgas.png', unique = true, useable = false, description = 'A cannister of gas that causes extreme pain' }, - weapon_molotov = { name = 'weapon_molotov', label = 'Molotov', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_molotov.png', unique = true, useable = false, description = 'A crude bomb made of a bottle filled with a flammable liquid and fitted with a wick for lighting' }, - weapon_stickybomb = { name = 'weapon_stickybomb', label = 'C4', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_stickybomb.png', unique = true, useable = false, description = 'An explosive charge covered with an adhesive that when thrown against an object sticks until it explodes' }, - weapon_proxmine = { name = 'weapon_proxmine', label = 'Proxmine Grenade', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_proximitymine.png', unique = true, useable = false, description = 'A bomb placed on the ground that detonates when going within its proximity' }, - weapon_snowball = { name = 'weapon_snowball', label = 'Snowball', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_snowball.png', unique = true, useable = false, description = 'A ball of packed snow, especially one made for throwing at other people for fun' }, - weapon_pipebomb = { name = 'weapon_pipebomb', label = 'Pipe Bomb', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_pipebomb.png', unique = true, useable = false, description = 'A homemade bomb, the components of which are contained in a pipe' }, - weapon_ball = { name = 'weapon_ball', label = 'Ball', weight = 1000, type = 'weapon', ammotype = 'AMMO_BALL', image = 'weapon_ball.png', unique = true, useable = false, description = 'A solid or hollow spherical or egg-shaped object that is kicked, thrown, or hit in a game' }, - weapon_smokegrenade = { name = 'weapon_smokegrenade', label = 'Smoke Grenade', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_c4.png', unique = true, useable = false, description = 'An explosive charge that can be remotely detonated' }, - weapon_flare = { name = 'weapon_flare', label = 'Flare pistol', weight = 1000, type = 'weapon', ammotype = 'AMMO_FLARE', image = 'weapon_flare.png', unique = true, useable = false, description = 'A small pyrotechnic devices used for illumination and signalling' }, - - -- Miscellaneous - weapon_petrolcan = { name = 'weapon_petrolcan', label = 'Petrol Can', weight = 1000, type = 'weapon', ammotype = 'AMMO_PETROLCAN', image = 'weapon_petrolcan.png', unique = true, useable = false, description = 'A robust liquid container made from pressed steel' }, - weapon_fireextinguisher = { name = 'weapon_fireextinguisher', label = 'Fire Extinguisher', weight = 1000, type = 'weapon', ammotype = nil, image = 'weapon_fireextinguisher.png', unique = true, useable = false, description = 'A portable device that discharges a jet of water, foam, gas, or other material to extinguish a fire' }, - weapon_hazardcan = { name = 'weapon_hazardcan', label = 'Hazardous Jerry Can', weight = 1000, type = 'weapon', ammotype = 'AMMO_PETROLCAN', image = 'weapon_hazardcan.png', unique = true, useable = true, description = 'Weapon Hazardcan' }, - - -- Weapon Attachments - clip_attachment = { name = 'clip_attachment', label = 'Clip', weight = 1000, type = 'item', image = 'clip_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A clip for a weapon' }, - drum_attachment = { name = 'drum_attachment', label = 'Drum', weight = 1000, type = 'item', image = 'drum_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A drum for a weapon' }, - flashlight_attachment = { name = 'flashlight_attachment', label = 'Flashlight', weight = 1000, type = 'item', image = 'flashlight_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A flashlight for a weapon' }, - suppressor_attachment = { name = 'suppressor_attachment', label = 'Suppressor', weight = 1000, type = 'item', image = 'suppressor_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A suppressor for a weapon' }, - smallscope_attachment = { name = 'smallscope_attachment', label = 'Small Scope', weight = 1000, type = 'item', image = 'smallscope_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A small scope for a weapon' }, - medscope_attachment = { name = 'medscope_attachment', label = 'Medium Scope', weight = 1000, type = 'item', image = 'medscope_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A medium scope for a weapon' }, - largescope_attachment = { name = 'largescope_attachment', label = 'Large Scope', weight = 1000, type = 'item', image = 'largescope_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A large scope for a weapon' }, - holoscope_attachment = { name = 'holoscope_attachment', label = 'Holo Scope', weight = 1000, type = 'item', image = 'holoscope_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A holo scope for a weapon' }, - advscope_attachment = { name = 'advscope_attachment', label = 'Advanced Scope', weight = 1000, type = 'item', image = 'advscope_attachment.png', unique = false, useable = true, shouldClose = true, description = 'An advanced scope for a weapon' }, - nvscope_attachment = { name = 'nvscope_attachment', label = 'Night Vision Scope', weight = 1000, type = 'item', image = 'nvscope_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A night vision scope for a weapon' }, - thermalscope_attachment = { name = 'thermalscope_attachment', label = 'Thermal Scope', weight = 1000, type = 'item', image = 'thermalscope_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A thermal scope for a weapon' }, - flat_muzzle_brake = { name = 'flat_muzzle_brake', label = 'Flat Muzzle Brake', weight = 1000, type = 'item', image = 'flat_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brake for a weapon' }, - tactical_muzzle_brake = { name = 'tactical_muzzle_brake', label = 'Tactical Muzzle Brake', weight = 1000, type = 'item', image = 'tactical_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brakee for a weapon' }, - fat_end_muzzle_brake = { name = 'fat_end_muzzle_brake', label = 'Fat End Muzzle Brake', weight = 1000, type = 'item', image = 'fat_end_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brake for a weapon' }, - precision_muzzle_brake = { name = 'precision_muzzle_brake', label = 'Precision Muzzle Brake', weight = 1000, type = 'item', image = 'precision_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brake for a weapon' }, - heavy_duty_muzzle_brake = { name = 'heavy_duty_muzzle_brake', label = 'HD Muzzle Brake', weight = 1000, type = 'item', image = 'heavy_duty_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brake for a weapon' }, - slanted_muzzle_brake = { name = 'slanted_muzzle_brake', label = 'Slanted Muzzle Brake', weight = 1000, type = 'item', image = 'slanted_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brake for a weapon' }, - split_end_muzzle_brake = { name = 'split_end_muzzle_brake', label = 'Split End Muzzle Brake', weight = 1000, type = 'item', image = 'split_end_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brake for a weapon' }, - squared_muzzle_brake = { name = 'squared_muzzle_brake', label = 'Squared Muzzle Brake', weight = 1000, type = 'item', image = 'squared_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brake for a weapon' }, - bellend_muzzle_brake = { name = 'bellend_muzzle_brake', label = 'Bellend Muzzle Brake', weight = 1000, type = 'item', image = 'bellend_muzzle_brake.png', unique = false, useable = true, shouldClose = true, description = 'A muzzle brake for a weapon' }, - barrel_attachment = { name = 'barrel_attachment', label = 'Barrel', weight = 1000, type = 'item', image = 'barrel_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A barrel for a weapon' }, - grip_attachment = { name = 'grip_attachment', label = 'Grip', weight = 1000, type = 'item', image = 'grip_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A grip for a weapon' }, - comp_attachment = { name = 'comp_attachment', label = 'Compensator', weight = 1000, type = 'item', image = 'comp_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A compensator for a weapon' }, - luxuryfinish_attachment = { name = 'luxuryfinish_attachment', label = 'Luxury Finish', weight = 1000, type = 'item', image = 'luxuryfinish_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A luxury finish for a weapon' }, - digicamo_attachment = { name = 'digicamo_attachment', label = 'Digital Camo', weight = 1000, type = 'item', image = 'digicamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A digital camo for a weapon' }, - brushcamo_attachment = { name = 'brushcamo_attachment', label = 'Brushstroke Camo', weight = 1000, type = 'item', image = 'brushcamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A brushstroke camo for a weapon' }, - woodcamo_attachment = { name = 'woodcamo_attachment', label = 'Woodland Camo', weight = 1000, type = 'item', image = 'woodcamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A woodland camo for a weapon' }, - skullcamo_attachment = { name = 'skullcamo_attachment', label = 'Skull Camo', weight = 1000, type = 'item', image = 'skullcamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A skull camo for a weapon' }, - sessantacamo_attachment = { name = 'sessantacamo_attachment', label = 'Sessanta Nove Camo', weight = 1000, type = 'item', image = 'sessantacamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A sessanta nove camo for a weapon' }, - perseuscamo_attachment = { name = 'perseuscamo_attachment', label = 'Perseus Camo', weight = 1000, type = 'item', image = 'perseuscamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A perseus camo for a weapon' }, - leopardcamo_attachment = { name = 'leopardcamo_attachment', label = 'Leopard Camo', weight = 1000, type = 'item', image = 'leopardcamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A leopard camo for a weapon' }, - zebracamo_attachment = { name = 'zebracamo_attachment', label = 'Zebra Camo', weight = 1000, type = 'item', image = 'zebracamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A zebra camo for a weapon' }, - geocamo_attachment = { name = 'geocamo_attachment', label = 'Geometric Camo', weight = 1000, type = 'item', image = 'geocamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A geometric camo for a weapon' }, - boomcamo_attachment = { name = 'boomcamo_attachment', label = 'Boom Camo', weight = 1000, type = 'item', image = 'boomcamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A boom camo for a weapon' }, - patriotcamo_attachment = { name = 'patriotcamo_attachment', label = 'Patriot Camo', weight = 1000, type = 'item', image = 'patriotcamo_attachment.png', unique = false, useable = true, shouldClose = true, description = 'A patriot camo for a weapon' }, - - -- Weapon Tints - weapontint_0 = { name = 'weapontint_0', label = 'Default Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Default/Black Weapon Tint' }, - weapontint_1 = { name = 'weapontint_1', label = 'Green Tint', weight = 1000, type = 'item', image = 'weapontint_green.png', unique = false, useable = true, shouldClose = true, description = 'Green Weapon Tint' }, - weapontint_2 = { name = 'weapontint_2', label = 'Gold Tint', weight = 1000, type = 'item', image = 'weapontint_gold.png', unique = false, useable = true, shouldClose = true, description = 'Gold Weapon Tint' }, - weapontint_3 = { name = 'weapontint_3', label = 'Pink Tint', weight = 1000, type = 'item', image = 'weapontint_pink.png', unique = false, useable = true, shouldClose = true, description = 'Pink Weapon Tint' }, - weapontint_4 = { name = 'weapontint_4', label = 'Army Tint', weight = 1000, type = 'item', image = 'weapontint_army.png', unique = false, useable = true, shouldClose = true, description = 'Army Weapon Tint' }, - weapontint_5 = { name = 'weapontint_5', label = 'LSPD Tint', weight = 1000, type = 'item', image = 'weapontint_lspd.png', unique = false, useable = true, shouldClose = true, description = 'LSPD Weapon Tint' }, - weapontint_6 = { name = 'weapontint_6', label = 'Orange Tint', weight = 1000, type = 'item', image = 'weapontint_orange.png', unique = false, useable = true, shouldClose = true, description = 'Orange Weapon Tint' }, - weapontint_7 = { name = 'weapontint_7', label = 'Platinum Tint', weight = 1000, type = 'item', image = 'weapontint_plat.png', unique = false, useable = true, shouldClose = true, description = 'Platinum Weapon Tint' }, - weapontint_mk2_0 = { name = 'weapontint_mk2_0', label = 'Classic Black Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic Black Weapon Tint for MK2 Weapons' }, - weapontint_mk2_1 = { name = 'weapontint_mk2_1', label = 'Classic Gray Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic Gray Weapon Tint for MK2 Weapons' }, - weapontint_mk2_2 = { name = 'weapontint_mk2_2', label = 'Classic Two-Tone Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic Two-Tone Weapon Tint for MK2 Weapons' }, - weapontint_mk2_3 = { name = 'weapontint_mk2_3', label = 'Classic White Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic White Weapon Tint for MK2 Weapons' }, - weapontint_mk2_4 = { name = 'weapontint_mk2_4', label = 'Classic Beige Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic Beige Weapon Tint for MK2 Weapons' }, - weapontint_mk2_5 = { name = 'weapontint_mk2_5', label = 'Classic Green Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic Green Weapon Tint for MK2 Weapons' }, - weapontint_mk2_6 = { name = 'weapontint_mk2_6', label = 'Classic Blue Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic Blue Weapon Tint for MK2 Weapons' }, - weapontint_mk2_7 = { name = 'weapontint_mk2_7', label = 'Classic Earth Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic Earth Weapon Tint for MK2 Weapons' }, - weapontint_mk2_8 = { name = 'weapontint_mk2_8', label = 'Classic Brown & Black Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Classic Brown & Black Weapon Tint for MK2 Weapons' }, - weapontint_mk2_9 = { name = 'weapontint_mk2_9', label = 'Red Contrast Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Red Contrast Weapon Tint for MK2 Weapons' }, - weapontint_mk2_10 = { name = 'weapontint_mk2_10', label = 'Blue Contrast Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Blue Contrast Weapon Tint for MK2 Weapons' }, - weapontint_mk2_11 = { name = 'weapontint_mk2_11', label = 'Yellow Contrast Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Yellow Contrast Weapon Tint for MK2 Weapons' }, - weapontint_mk2_12 = { name = 'weapontint_mk2_12', label = 'Orange Contrast Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Orange Contrast Weapon Tint for MK2 Weapons' }, - weapontint_mk2_13 = { name = 'weapontint_mk2_13', label = 'Bold Pink Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Pink Weapon Tint for MK2 Weapons' }, - weapontint_mk2_14 = { name = 'weapontint_mk2_14', label = 'Bold Purple & Yellow Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Purple & Yellow Weapon Tint for MK2 Weapons' }, - weapontint_mk2_15 = { name = 'weapontint_mk2_15', label = 'Bold Orange Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Orange Weapon Tint for MK2 Weapons' }, - weapontint_mk2_16 = { name = 'weapontint_mk2_16', label = 'Bold Green & Purple Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Green & Purple Weapon Tint for MK2 Weapons' }, - weapontint_mk2_17 = { name = 'weapontint_mk2_17', label = 'Bold Red Features Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Red Features Weapon Tint for MK2 Weapons' }, - weapontint_mk2_18 = { name = 'weapontint_mk2_18', label = 'Bold Green Features Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Green Features Weapon Tint for MK2 Weapons' }, - weapontint_mk2_19 = { name = 'weapontint_mk2_19', label = 'Bold Cyan Features Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Cyan Features Weapon Tint for MK2 Weapons' }, - weapontint_mk2_20 = { name = 'weapontint_mk2_20', label = 'Bold Yellow Features Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Yellow Features Weapon Tint for MK2 Weapons' }, - weapontint_mk2_21 = { name = 'weapontint_mk2_21', label = 'Bold Red & White Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Red & White Weapon Tint for MK2 Weapons' }, - weapontint_mk2_22 = { name = 'weapontint_mk2_22', label = 'Bold Blue & White Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Bold Blue & White Weapon Tint for MK2 Weapons' }, - weapontint_mk2_23 = { name = 'weapontint_mk2_23', label = 'Metallic Gold Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Gold Weapon Tint for MK2 Weapons' }, - weapontint_mk2_24 = { name = 'weapontint_mk2_24', label = 'Metallic Platinum Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Platinum Weapon Tint for MK2 Weapons' }, - weapontint_mk2_25 = { name = 'weapontint_mk2_25', label = 'Metallic Gray & Lilac Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Gray & Lilac Weapon Tint for MK2 Weapons' }, - weapontint_mk2_26 = { name = 'weapontint_mk2_26', label = 'Metallic Purple & Lime Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Purple & Lime Weapon Tint for MK2 Weapons' }, - weapontint_mk2_27 = { name = 'weapontint_mk2_27', label = 'Metallic Red Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Red Weapon Tint for MK2 Weapons' }, - weapontint_mk2_28 = { name = 'weapontint_mk2_28', label = 'Metallic Green Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Green Weapon Tint for MK2 Weapons' }, - weapontint_mk2_29 = { name = 'weapontint_mk2_29', label = 'Metallic Blue Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Blue Weapon Tint for MK2 Weapons' }, - weapontint_mk2_30 = { name = 'weapontint_mk2_30', label = 'Metallic White & Aqua Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic White & Aqua Weapon Tint for MK2 Weapons' }, - weapontint_mk2_31 = { name = 'weapontint_mk2_31', label = 'Metallic Orange & Yellow Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Orange & Yellow Weapon Tint for MK2 Weapons' }, - weapontint_mk2_32 = { name = 'weapontint_mk2_32', label = 'Metallic Red and Yellow Tint', weight = 1000, type = 'item', image = 'weapontint_black.png', unique = false, useable = true, shouldClose = true, description = 'Metallic Red and Yellow Weapon Tint for MK2 Weapons' }, - -- ITEMS - - -- Ammo ITEMS - pistol_ammo = { name = 'pistol_ammo', label = 'Pistol ammo', weight = 200, type = 'item', image = 'pistol_ammo.png', unique = false, useable = true, shouldClose = true, description = 'Ammo for Pistols' }, - rifle_ammo = { name = 'rifle_ammo', label = 'Rifle ammo', weight = 1000, type = 'item', image = 'rifle_ammo.png', unique = false, useable = true, shouldClose = true, description = 'Ammo for Rifles' }, - smg_ammo = { name = 'smg_ammo', label = 'SMG ammo', weight = 500, type = 'item', image = 'smg_ammo.png', unique = false, useable = true, shouldClose = true, description = 'Ammo for Sub Machine Guns' }, - shotgun_ammo = { name = 'shotgun_ammo', label = 'Shotgun ammo', weight = 500, type = 'item', image = 'shotgun_ammo.png', unique = false, useable = true, shouldClose = true, description = 'Ammo for Shotguns' }, - mg_ammo = { name = 'mg_ammo', label = 'MG ammo', weight = 1000, type = 'item', image = 'mg_ammo.png', unique = false, useable = true, shouldClose = true, description = 'Ammo for Machine Guns' }, - snp_ammo = { name = 'snp_ammo', label = 'Sniper ammo', weight = 1000, type = 'item', image = 'rifle_ammo.png', unique = false, useable = true, shouldClose = true, description = 'Ammo for Sniper Rifles' }, - emp_ammo = { name = 'emp_ammo', label = 'EMP Ammo', weight = 200, type = 'item', image = 'emp_ammo.png', unique = false, useable = true, shouldClose = true, description = 'Ammo for EMP Launcher' }, - - -- Card ITEMS - id_card = { name = 'id_card', label = 'ID Card', weight = 0, type = 'item', image = 'id_card.png', unique = true, useable = true, shouldClose = false, description = 'A card containing all your information to identify yourself' }, - driver_license = { name = 'driver_license', label = 'Drivers License', weight = 0, type = 'item', image = 'driver_license.png', unique = true, useable = true, shouldClose = false, description = 'Permit to show you can drive a vehicle' }, - lawyerpass = { name = 'lawyerpass', label = 'Lawyer Pass', weight = 0, type = 'item', image = 'lawyerpass.png', unique = true, useable = true, shouldClose = false, description = 'Pass exclusive to lawyers to show they can represent a suspect' }, - weaponlicense = { name = 'weaponlicense', label = 'Weapon License', weight = 0, type = 'item', image = 'weapon_license.png', unique = true, useable = true, shouldClose = true, description = 'Weapon License' }, - bank_card = { name = 'bank_card', label = 'Bank Card', weight = 0, type = 'item', image = 'bank_card.png', unique = true, useable = true, shouldClose = true, description = 'Used to access ATM' }, - security_card_01 = { name = 'security_card_01', label = 'Security Card A', weight = 0, type = 'item', image = 'security_card_01.png', unique = false, useable = true, shouldClose = true, description = 'A security card... I wonder what it goes to' }, - security_card_02 = { name = 'security_card_02', label = 'Security Card B', weight = 0, type = 'item', image = 'security_card_02.png', unique = false, useable = true, shouldClose = true, description = 'A security card... I wonder what it goes to' }, - - -- Eat ITEMS - tosti = { name = 'tosti', label = 'Grilled Cheese Sandwich', weight = 200, type = 'item', image = 'tosti.png', unique = false, useable = true, shouldClose = true, description = 'Nice to eat' }, - twerks_candy = { name = 'twerks_candy', label = 'Twerks', weight = 100, type = 'item', image = 'twerks_candy.png', unique = false, useable = true, shouldClose = true, description = 'Some delicious candy :O' }, - snikkel_candy = { name = 'snikkel_candy', label = 'Snikkel', weight = 100, type = 'item', image = 'snikkel_candy.png', unique = false, useable = true, shouldClose = true, description = 'Some delicious candy :O' }, - sandwich = { name = 'sandwich', label = 'Sandwich', weight = 200, type = 'item', image = 'sandwich.png', unique = false, useable = true, shouldClose = true, description = 'Nice bread for your stomach' }, - - -- Drink ITEMS - water_bottle = { name = 'water_bottle', label = 'Bottle of Water', weight = 500, type = 'item', image = 'water_bottle.png', unique = false, useable = true, shouldClose = true, description = 'For all the thirsty out there' }, - coffee = { name = 'coffee', label = 'Coffee', weight = 200, type = 'item', image = 'coffee.png', unique = false, useable = true, shouldClose = true, description = 'Pump 4 Caffeine' }, - kurkakola = { name = 'kurkakola', label = 'Cola', weight = 500, type = 'item', image = 'cola.png', unique = false, useable = true, shouldClose = true, description = 'For all the thirsty out there' }, - - -- Alcohol - beer = { name = 'beer', label = 'Beer', weight = 500, type = 'item', image = 'beer.png', unique = false, useable = true, shouldClose = true, description = 'Nothing like a good cold beer!' }, - whiskey = { name = 'whiskey', label = 'Whiskey', weight = 500, type = 'item', image = 'whiskey.png', unique = false, useable = true, shouldClose = true, description = 'For all the thirsty out there' }, - vodka = { name = 'vodka', label = 'Vodka', weight = 500, type = 'item', image = 'vodka.png', unique = false, useable = true, shouldClose = true, description = 'For all the thirsty out there' }, - grape = { name = 'grape', label = 'Grape', weight = 100, type = 'item', image = 'grape.png', unique = false, useable = true, shouldClose = false, description = 'Mmmmh yummie, grapes' }, - wine = { name = 'wine', label = 'Wine', weight = 300, type = 'item', image = 'wine.png', unique = false, useable = true, shouldClose = false, description = 'Some good wine to drink on a fine evening' }, - grapejuice = { name = 'grapejuice', label = 'Grape Juice', weight = 200, type = 'item', image = 'grapejuice.png', unique = false, useable = true, shouldClose = false, description = 'Grape juice is said to be healthy' }, - - -- Drugs - joint = { name = 'joint', label = 'Joint', weight = 0, type = 'item', image = 'joint.png', unique = false, useable = true, shouldClose = true, description = 'Sidney would be very proud at you' }, - cokebaggy = { name = 'cokebaggy', label = 'Bag of Coke', weight = 0, type = 'item', image = 'cocaine_baggy.png', unique = false, useable = true, shouldClose = true, description = 'To get happy real quick' }, - crack_baggy = { name = 'crack_baggy', label = 'Bag of Crack', weight = 0, type = 'item', image = 'crack_baggy.png', unique = false, useable = true, shouldClose = true, description = 'To get happy faster' }, - xtcbaggy = { name = 'xtcbaggy', label = 'Bag of XTC', weight = 0, type = 'item', image = 'xtc_baggy.png', unique = false, useable = true, shouldClose = true, description = 'Pop those pills baby' }, - coke_brick = { name = 'coke_brick', label = 'Coke Brick', weight = 1000, type = 'item', image = 'coke_brick.png', unique = true, useable = false, shouldClose = true, description = 'Heavy package of cocaine, mostly used for deals and takes a lot of space' }, - weed_brick = { name = 'weed_brick', label = 'Weed Brick', weight = 1000, type = 'item', image = 'weed_brick.png', unique = false, useable = false, shouldClose = true, description = '1KG Weed Brick to sell to large customers.' }, - coke_small_brick = { name = 'coke_small_brick', label = 'Coke Package', weight = 350, type = 'item', image = 'coke_small_brick.png', unique = true, useable = false, shouldClose = true, description = 'Small package of cocaine, mostly used for deals and takes a lot of space' }, - oxy = { name = 'oxy', label = 'Prescription Oxy', weight = 0, type = 'item', image = 'oxy.png', unique = false, useable = true, shouldClose = true, description = 'The Label Has Been Ripped Off' }, - meth = { name = 'meth', label = 'Meth', weight = 100, type = 'item', image = 'meth_baggy.png', unique = false, useable = true, shouldClose = true, description = 'A baggie of Meth' }, - rolling_paper = { name = 'rolling_paper', label = 'Rolling Paper', weight = 0, type = 'item', image = 'rolling_paper.png', unique = false, useable = false, shouldClose = true, description = 'Paper made specifically for encasing and smoking tobacco or cannabis.' }, - - -- Seed And Weed - weed_whitewidow = { name = 'weed_whitewidow', label = 'White Widow 2g', weight = 200, type = 'item', image = 'weed_baggy.png', unique = false, useable = true, shouldClose = false, description = 'A weed bag with 2g White Widow' }, - weed_skunk = { name = 'weed_skunk', label = 'Skunk 2g', weight = 200, type = 'item', image = 'weed_baggy.png', unique = false, useable = true, shouldClose = false, description = 'A weed bag with 2g Skunk' }, - weed_purplehaze = { name = 'weed_purplehaze', label = 'Purple Haze 2g', weight = 200, type = 'item', image = 'weed_baggy.png', unique = false, useable = true, shouldClose = false, description = 'A weed bag with 2g Purple Haze' }, - weed_ogkush = { name = 'weed_ogkush', label = 'OGKush 2g', weight = 200, type = 'item', image = 'weed_baggy.png', unique = false, useable = true, shouldClose = false, description = 'A weed bag with 2g OG Kush' }, - weed_amnesia = { name = 'weed_amnesia', label = 'Amnesia 2g', weight = 200, type = 'item', image = 'weed_baggy.png', unique = false, useable = true, shouldClose = false, description = 'A weed bag with 2g Amnesia' }, - weed_ak47 = { name = 'weed_ak47', label = 'AK47 2g', weight = 200, type = 'item', image = 'weed_baggy.png', unique = false, useable = true, shouldClose = false, description = 'A weed bag with 2g AK47' }, - weed_whitewidow_seed = { name = 'weed_whitewidow_seed', label = 'White Widow Seed', weight = 0, type = 'item', image = 'weed_seed.png', unique = false, useable = true, shouldClose = false, description = 'A weed seed of White Widow' }, - weed_skunk_seed = { name = 'weed_skunk_seed', label = 'Skunk Seed', weight = 0, type = 'item', image = 'weed_seed.png', unique = false, useable = true, shouldClose = true, description = 'A weed seed of Skunk' }, - weed_purplehaze_seed = { name = 'weed_purplehaze_seed', label = 'Purple Haze Seed', weight = 0, type = 'item', image = 'weed_seed.png', unique = false, useable = true, shouldClose = true, description = 'A weed seed of Purple Haze' }, - weed_ogkush_seed = { name = 'weed_ogkush_seed', label = 'OGKush Seed', weight = 0, type = 'item', image = 'weed_seed.png', unique = false, useable = true, shouldClose = true, description = 'A weed seed of OG Kush' }, - weed_amnesia_seed = { name = 'weed_amnesia_seed', label = 'Amnesia Seed', weight = 0, type = 'item', image = 'weed_seed.png', unique = false, useable = true, shouldClose = true, description = 'A weed seed of Amnesia' }, - weed_ak47_seed = { name = 'weed_ak47_seed', label = 'AK47 Seed', weight = 0, type = 'item', image = 'weed_seed.png', unique = false, useable = true, shouldClose = true, description = 'A weed seed of AK47' }, - empty_weed_bag = { name = 'empty_weed_bag', label = 'Empty Weed Bag', weight = 0, type = 'item', image = 'weed_baggy_empty.png', unique = false, useable = true, shouldClose = true, description = 'A small empty bag' }, - weed_nutrition = { name = 'weed_nutrition', label = 'Plant Fertilizer', weight = 2000, type = 'item', image = 'weed_nutrition.png', unique = false, useable = true, shouldClose = true, description = 'Plant nutrition' }, - - -- Material - plastic = { name = 'plastic', label = 'Plastic', weight = 100, type = 'item', image = 'plastic.png', unique = false, useable = false, shouldClose = false, description = 'RECYCLE! - Greta Thunberg 2019' }, - metalscrap = { name = 'metalscrap', label = 'Metal Scrap', weight = 100, type = 'item', image = 'metalscrap.png', unique = false, useable = false, shouldClose = false, description = 'You can probably make something nice out of this' }, - copper = { name = 'copper', label = 'Copper', weight = 100, type = 'item', image = 'copper.png', unique = false, useable = false, shouldClose = false, description = 'Nice piece of metal that you can probably use for something' }, - aluminum = { name = 'aluminum', label = 'Aluminium', weight = 100, type = 'item', image = 'aluminum.png', unique = false, useable = false, shouldClose = false, description = 'Nice piece of metal that you can probably use for something' }, - aluminumoxide = { name = 'aluminumoxide', label = 'Aluminium Powder', weight = 100, type = 'item', image = 'aluminumoxide.png', unique = false, useable = false, shouldClose = false, description = 'Some powder to mix with' }, - iron = { name = 'iron', label = 'Iron', weight = 100, type = 'item', image = 'iron.png', unique = false, useable = false, shouldClose = false, description = 'Handy piece of metal that you can probably use for something' }, - ironoxide = { name = 'ironoxide', label = 'Iron Powder', weight = 100, type = 'item', image = 'ironoxide.png', unique = false, useable = false, shouldClose = false, description = 'Some powder to mix with.' }, - steel = { name = 'steel', label = 'Steel', weight = 100, type = 'item', image = 'steel.png', unique = false, useable = false, shouldClose = false, description = 'Nice piece of metal that you can probably use for something' }, - rubber = { name = 'rubber', label = 'Rubber', weight = 100, type = 'item', image = 'rubber.png', unique = false, useable = false, shouldClose = false, description = 'Rubber, I believe you can make your own rubber ducky with it :D' }, - glass = { name = 'glass', label = 'Glass', weight = 100, type = 'item', image = 'glass.png', unique = false, useable = false, shouldClose = false, description = 'It is very fragile, watch out' }, - - -- Tools - lockpick = { name = 'lockpick', label = 'Lockpick', weight = 300, type = 'item', image = 'lockpick.png', unique = false, useable = true, shouldClose = true, description = 'Very useful if you lose your keys a lot.. or if you want to use it for something else...' }, - advancedlockpick = { name = 'advancedlockpick', label = 'Advanced Lockpick', weight = 500, type = 'item', image = 'advancedlockpick.png', unique = false, useable = true, shouldClose = true, description = 'If you lose your keys a lot this is very useful... Also useful to open your beers' }, - electronickit = { name = 'electronickit', label = 'Electronic Kit', weight = 100, type = 'item', image = 'electronickit.png', unique = false, useable = true, shouldClose = true, description = 'If you\'ve always wanted to build a robot you can maybe start here. Maybe you\'ll be the new Elon Musk?' }, - gatecrack = { name = 'gatecrack', label = 'Gatecrack', weight = 0, type = 'item', image = 'usb_device.png', unique = false, useable = false, shouldClose = true, description = 'Handy software to tear down some fences' }, - thermite = { name = 'thermite', label = 'Thermite', weight = 1000, type = 'item', image = 'thermite.png', unique = false, useable = true, shouldClose = true, description = 'Sometimes you\'d wish for everything to burn' }, - trojan_usb = { name = 'trojan_usb', label = 'Trojan USB', weight = 0, type = 'item', image = 'usb_device.png', unique = false, useable = false, shouldClose = true, description = 'Handy software to shut down some systems' }, - screwdriverset = { name = 'screwdriverset', label = 'Toolkit', weight = 1000, type = 'item', image = 'screwdriverset.png', unique = false, useable = false, shouldClose = false, description = 'Very useful to screw... screws...' }, - drill = { name = 'drill', label = 'Drill', weight = 20000, type = 'item', image = 'drill.png', unique = false, useable = false, shouldClose = false, description = 'The real deal...' }, - - -- Vehicle Tools - nitrous = { name = 'nitrous', label = 'Nitrous', weight = 1000, type = 'item', image = 'nitrous.png', unique = false, useable = true, shouldClose = true, description = 'Speed up, gas pedal! :D' }, - repairkit = { name = 'repairkit', label = 'Repairkit', weight = 2500, type = 'item', image = 'repairkit.png', unique = false, useable = true, shouldClose = true, description = 'A nice toolbox with stuff to repair your vehicle' }, - advancedrepairkit = { name = 'advancedrepairkit', label = 'Advanced Repairkit', weight = 4000, type = 'item', image = 'advancedkit.png', unique = false, useable = true, shouldClose = true, description = 'A nice toolbox with stuff to repair your vehicle' }, - cleaningkit = { name = 'cleaningkit', label = 'Cleaning Kit', weight = 250, type = 'item', image = 'cleaningkit.png', unique = false, useable = true, shouldClose = true, description = 'A microfiber cloth with some soap will let your car sparkle again!' }, - tunerlaptop = { name = 'tunerlaptop', label = 'Tunerchip', weight = 2000, type = 'item', image = 'tunerchip.png', unique = true, useable = true, shouldClose = true, description = 'With this tunerchip you can get your car on steroids... If you know what you\'re doing' }, - harness = { name = 'harness', label = 'Race Harness', weight = 1000, type = 'item', image = 'harness.png', unique = true, useable = true, shouldClose = true, description = 'Racing Harness so no matter what you stay in the car' }, - jerry_can = { name = 'jerry_can', label = 'Jerrycan 20L', weight = 20000, type = 'item', image = 'jerry_can.png', unique = false, useable = true, shouldClose = true, description = 'A can full of Fuel' }, - tirerepairkit = { name = 'tirerepairkit', label = 'Tire Repair Kit', weight = 1000, type = 'item', image = 'tirerepairkit.png', unique = false, useable = true, shouldClose = true, description = 'A kit to repair your tires' }, - - -- Mechanic Parts - veh_toolbox = { name = 'veh_toolbox', label = 'Toolbox', weight = 1000, type = 'item', image = 'veh_toolbox.png', unique = false, useable = true, shouldClose = true, description = 'Check vehicle status' }, - veh_armor = { name = 'veh_armor', label = 'Armor', weight = 1000, type = 'item', image = 'veh_armor.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle armor' }, - veh_brakes = { name = 'veh_brakes', label = 'Brakes', weight = 1000, type = 'item', image = 'veh_brakes.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle brakes' }, - veh_engine = { name = 'veh_engine', label = 'Engine', weight = 1000, type = 'item', image = 'veh_engine.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle engine' }, - veh_suspension = { name = 'veh_suspension', label = 'Suspension', weight = 1000, type = 'item', image = 'veh_suspension.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle suspension' }, - veh_transmission = { name = 'veh_transmission', label = 'Transmission', weight = 1000, type = 'item', image = 'veh_transmission.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle transmission' }, - veh_turbo = { name = 'veh_turbo', label = 'Turbo', weight = 1000, type = 'item', image = 'veh_turbo.png', unique = false, useable = true, shouldClose = true, description = 'Install vehicle turbo' }, - veh_interior = { name = 'veh_interior', label = 'Interior', weight = 1000, type = 'item', image = 'veh_interior.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle interior' }, - veh_exterior = { name = 'veh_exterior', label = 'Exterior', weight = 1000, type = 'item', image = 'veh_exterior.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle exterior' }, - veh_wheels = { name = 'veh_wheels', label = 'Wheels', weight = 1000, type = 'item', image = 'veh_wheels.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle wheels' }, - veh_neons = { name = 'veh_neons', label = 'Neons', weight = 1000, type = 'item', image = 'veh_neons.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle neons' }, - veh_xenons = { name = 'veh_xenons', label = 'Xenons', weight = 1000, type = 'item', image = 'veh_xenons.png', unique = false, useable = true, shouldClose = true, description = 'Upgrade vehicle xenons' }, - veh_tint = { name = 'veh_tint', label = 'Tints', weight = 1000, type = 'item', image = 'veh_tint.png', unique = false, useable = true, shouldClose = true, description = 'Install vehicle tint' }, - veh_plates = { name = 'veh_plates', label = 'Plates', weight = 1000, type = 'item', image = 'veh_plates.png', unique = false, useable = true, shouldClose = true, description = 'Install vehicle plates' }, - - -- Medication - firstaid = { name = 'firstaid', label = 'First Aid', weight = 2500, type = 'item', image = 'firstaid.png', unique = false, useable = true, shouldClose = true, description = 'You can use this First Aid kit to get people back on their feet' }, - bandage = { name = 'bandage', label = 'Bandage', weight = 0, type = 'item', image = 'bandage.png', unique = false, useable = true, shouldClose = true, description = 'A bandage works every time' }, - ifaks = { name = 'ifaks', label = 'ifaks', weight = 200, type = 'item', image = 'ifaks.png', unique = false, useable = true, shouldClose = true, description = 'ifaks for healing and a complete stress remover.' }, - painkillers = { name = 'painkillers', label = 'Painkillers', weight = 0, type = 'item', image = 'painkillers.png', unique = false, useable = true, shouldClose = true, description = 'For pain you can\'t stand anymore, take this pill that\'d make you feel great again' }, - walkstick = { name = 'walkstick', label = 'Walking Stick', weight = 1000, type = 'item', image = 'walkstick.png', unique = false, useable = true, shouldClose = true, description = 'Walking stick for ya\'ll grannies out there.. HAHA' }, - - -- Communication - phone = { name = 'phone', label = 'Phone', weight = 700, type = 'item', image = 'phone.png', unique = true, useable = false, shouldClose = false, description = 'Neat phone ya got there' }, - radio = { name = 'radio', label = 'Radio', weight = 2000, type = 'item', image = 'radio.png', unique = true, useable = true, shouldClose = true, description = 'You can communicate with this through a signal' }, - iphone = { name = 'iphone', label = 'iPhone', weight = 1000, type = 'item', image = 'iphone.png', unique = false, useable = false, shouldClose = true, description = 'Very expensive phone' }, - samsungphone = { name = 'samsungphone', label = 'Samsung S10', weight = 1000, type = 'item', image = 'samsungphone.png', unique = false, useable = false, shouldClose = true, description = 'Very expensive phone' }, - laptop = { name = 'laptop', label = 'Laptop', weight = 4000, type = 'item', image = 'laptop.png', unique = false, useable = false, shouldClose = true, description = 'Expensive laptop' }, - tablet = { name = 'tablet', label = 'Tablet', weight = 2000, type = 'item', image = 'tablet.png', unique = false, useable = false, shouldClose = true, description = 'Expensive tablet' }, - fitbit = { name = 'fitbit', label = 'Fitbit', weight = 500, type = 'item', image = 'fitbit.png', unique = true, useable = true, shouldClose = true, description = 'I like fitbit' }, - radioscanner = { name = 'radioscanner', label = 'Radio Scanner', weight = 1000, type = 'item', image = 'radioscanner.png', unique = false, useable = false, shouldClose = true, description = 'With this you can get some police alerts. Not 100% effective however' }, - pinger = { name = 'pinger', label = 'Pinger', weight = 1000, type = 'item', image = 'pinger.png', unique = false, useable = false, shouldClose = true, description = 'With a pinger and your phone you can send out your location' }, - cryptostick = { name = 'cryptostick', label = 'Crypto Stick', weight = 200, type = 'item', image = 'cryptostick.png', unique = true, useable = true, shouldClose = true, description = 'Why would someone ever buy money that doesn\'t exist.. How many would it contain..?' }, - - -- Theft and Jewelry - rolex = { name = 'rolex', label = 'Golden Watch', weight = 1500, type = 'item', image = 'rolex.png', unique = false, useable = false, shouldClose = true, description = 'A golden watch seems like the jackpot to me!' }, - diamond_ring = { name = 'diamond_ring', label = 'Diamond Ring', weight = 1500, type = 'item', image = 'diamond_ring.png', unique = false, useable = false, shouldClose = true, description = 'A diamond ring seems like the jackpot to me!' }, - diamond = { name = 'diamond', label = 'Diamond', weight = 1000, type = 'item', image = 'diamond.png', unique = false, useable = false, shouldClose = true, description = 'A diamond seems like the jackpot to me!' }, - goldchain = { name = 'goldchain', label = 'Golden Chain', weight = 1500, type = 'item', image = 'goldchain.png', unique = false, useable = false, shouldClose = true, description = 'A golden chain seems like the jackpot to me!' }, - tenkgoldchain = { name = 'tenkgoldchain', label = '10k Gold Chain', weight = 2000, type = 'item', image = '10kgoldchain.png', unique = false, useable = false, shouldClose = true, description = '10 carat golden chain' }, - goldbar = { name = 'goldbar', label = 'Gold Bar', weight = 7000, type = 'item', image = 'goldbar.png', unique = false, useable = false, shouldClose = true, description = 'Looks pretty expensive to me' }, - - -- Cops Tools - armor = { name = 'armor', label = 'Armor', weight = 5000, type = 'item', image = 'armor.png', unique = false, useable = true, shouldClose = true, description = 'Some protection won\'t hurt... right?' }, - heavyarmor = { name = 'heavyarmor', label = 'Heavy Armor', weight = 5000, type = 'item', image = 'armor.png', unique = false, useable = true, shouldClose = true, description = 'Some protection won\'t hurt... right?' }, - handcuffs = { name = 'handcuffs', label = 'Handcuffs', weight = 100, type = 'item', image = 'handcuffs.png', unique = false, useable = true, shouldClose = true, description = 'Comes in handy when people misbehave. Maybe it can be used for something else?' }, - police_stormram = { name = 'police_stormram', label = 'Stormram', weight = 18000, type = 'item', image = 'police_stormram.png', unique = false, useable = true, shouldClose = true, description = 'A nice tool to break into doors' }, - empty_evidence_bag = { name = 'empty_evidence_bag', label = 'Empty Evidence Bag', weight = 0, type = 'item', image = 'evidence.png', unique = false, useable = false, shouldClose = false, description = 'Used a lot to keep DNA from blood, bullet shells and more' }, - filled_evidence_bag = { name = 'filled_evidence_bag', label = 'Evidence Bag', weight = 200, type = 'item', image = 'evidence.png', unique = true, useable = false, shouldClose = false, description = 'A filled evidence bag to see who committed the crime >:(' }, - - -- Firework Tools - firework1 = { name = 'firework1', label = '2Brothers', weight = 1000, type = 'item', image = 'firework1.png', unique = false, useable = true, shouldClose = true, description = 'Fireworks' }, - firework2 = { name = 'firework2', label = 'Poppelers', weight = 1000, type = 'item', image = 'firework2.png', unique = false, useable = true, shouldClose = true, description = 'Fireworks' }, - firework3 = { name = 'firework3', label = 'WipeOut', weight = 1000, type = 'item', image = 'firework3.png', unique = false, useable = true, shouldClose = true, description = 'Fireworks' }, - firework4 = { name = 'firework4', label = 'Weeping Willow', weight = 1000, type = 'item', image = 'firework4.png', unique = false, useable = true, shouldClose = true, description = 'Fireworks' }, - - -- Sea Tools - dendrogyra_coral = { name = 'dendrogyra_coral', label = 'Dendrogyra', weight = 1000, type = 'item', image = 'dendrogyra_coral.png', unique = false, useable = false, shouldClose = true, description = 'Its also known as pillar coral' }, - antipatharia_coral = { name = 'antipatharia_coral', label = 'Antipatharia', weight = 1000, type = 'item', image = 'antipatharia_coral.png', unique = false, useable = false, shouldClose = true, description = 'Its also known as black corals or thorn corals' }, - diving_gear = { name = 'diving_gear', label = 'Diving Gear', weight = 30000, type = 'item', image = 'diving_gear.png', unique = true, useable = true, shouldClose = true, description = 'An oxygen tank and a rebreather' }, - diving_fill = { name = 'diving_fill', label = 'Diving Tube', weight = 3000, type = 'item', image = 'diving_tube.png', unique = true, useable = true, shouldClose = true, description = 'An oxygen tube and a rebreather' }, - - -- Other Tools - casinochips = { name = 'casinochips', label = 'Casino Chips', weight = 0, type = 'item', image = 'casinochips.png', unique = false, useable = false, shouldClose = false, description = 'Chips For Casino Gambling' }, - stickynote = { name = 'stickynote', label = 'Sticky note', weight = 0, type = 'item', image = 'stickynote.png', unique = true, useable = false, shouldClose = false, description = 'Sometimes handy to remember something :)' }, - moneybag = { name = 'moneybag', label = 'Money Bag', weight = 0, type = 'item', image = 'moneybag.png', unique = true, useable = true, shouldClose = true, description = 'A bag with cash' }, - parachute = { name = 'parachute', label = 'Parachute', weight = 30000, type = 'item', image = 'parachute.png', unique = true, useable = true, shouldClose = true, description = 'The sky is the limit! Woohoo!' }, - binoculars = { name = 'binoculars', label = 'Binoculars', weight = 600, type = 'item', image = 'binoculars.png', unique = false, useable = true, shouldClose = true, description = 'Sneaky Breaky...' }, - lighter = { name = 'lighter', label = 'Lighter', weight = 0, type = 'item', image = 'lighter.png', unique = false, useable = false, shouldClose = true, description = 'On new years eve a nice fire to stand next to' }, - certificate = { name = 'certificate', label = 'Certificate', weight = 0, type = 'item', image = 'certificate.png', unique = false, useable = false, shouldClose = true, description = 'Certificate that proves you own certain stuff' }, - markedbills = { name = 'markedbills', label = 'Marked Money', weight = 1000, type = 'item', image = 'markedbills.png', unique = true, useable = false, shouldClose = true, description = 'Money?' }, - labkey = { name = 'labkey', label = 'Key', weight = 500, type = 'item', image = 'labkey.png', unique = true, useable = true, shouldClose = true, description = 'Key for a lock...?' }, - printerdocument = { name = 'printerdocument', label = 'Document', weight = 500, type = 'item', image = 'printerdocument.png', unique = true, useable = true, shouldClose = true, description = 'A nice document' }, - newscam = { name = 'newscam', label = 'News Camera', weight = 100, type = 'item', image = 'newscam.png', unique = true, useable = true, shouldClose = true, description = 'A camera for the news' }, - newsmic = { name = 'newsmic', label = 'News Microphone', weight = 100, type = 'item', image = 'newsmic.png', unique = true, useable = true, shouldClose = true, description = 'A microphone for the news' }, - newsbmic = { name = 'newsbmic', label = 'Boom Microphone', weight = 100, type = 'item', image = 'newsbmic.png', unique = true, useable = true, shouldClose = true, description = 'A Useable BoomMic' }, -} diff --git a/shared/jobs.lua b/shared/jobs.lua deleted file mode 100644 index 8575b04..0000000 --- a/shared/jobs.lua +++ /dev/null @@ -1,142 +0,0 @@ -QBShared = QBShared or {} -QBShared.ForceJobDefaultDutyAtLogin = true -- true: Force duty state to jobdefaultDuty | false: set duty state from database last saved -QBShared.Jobs = { - unemployed = { label = 'Civilian', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Freelancer', payment = 10 } } }, - bus = { label = 'Bus', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Driver', payment = 50 } } }, - judge = { label = 'Honorary', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Judge', payment = 100 } } }, - lawyer = { label = 'Law Firm', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Associate', payment = 50 } } }, - reporter = { label = 'Reporter', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Journalist', payment = 50 } } }, - trucker = { label = 'Trucker', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Driver', payment = 50 } } }, - tow = { label = 'Towing', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Driver', payment = 50 } } }, - garbage = { label = 'Garbage', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Collector', payment = 50 } } }, - vineyard = { label = 'Vineyard', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Picker', payment = 50 } } }, - hotdog = { label = 'Hotdog', defaultDuty = true, offDutyPay = false, grades = { ['0'] = { name = 'Sales', payment = 50 } } }, - - police = { - label = 'Law Enforcement', - type = 'leo', - defaultDuty = true, - offDutyPay = false, - grades = { - ['0'] = { name = 'Recruit', payment = 50 }, - ['1'] = { name = 'Officer', payment = 75 }, - ['2'] = { name = 'Sergeant', payment = 100 }, - ['3'] = { name = 'Lieutenant', payment = 125 }, - ['4'] = { name = 'Chief', isboss = true, payment = 150 }, - }, - }, - ambulance = { - label = 'EMS', - type = 'ems', - defaultDuty = true, - offDutyPay = false, - grades = { - ['0'] = { name = 'Recruit', payment = 50 }, - ['1'] = { name = 'Paramedic', payment = 75 }, - ['2'] = { name = 'Doctor', payment = 100 }, - ['3'] = { name = 'Surgeon', payment = 125 }, - ['4'] = { name = 'Chief', isboss = true, payment = 150 }, - }, - }, - realestate = { - label = 'Real Estate', - defaultDuty = true, - offDutyPay = false, - grades = { - ['0'] = { name = 'Recruit', payment = 50 }, - ['1'] = { name = 'House Sales', payment = 75 }, - ['2'] = { name = 'Business Sales', payment = 100 }, - ['3'] = { name = 'Broker', payment = 125 }, - ['4'] = { name = 'Manager', isboss = true, payment = 150 }, - }, - }, - taxi = { - label = 'Taxi', - defaultDuty = true, - offDutyPay = false, - grades = { - ['0'] = { name = 'Recruit', payment = 50 }, - ['1'] = { name = 'Driver', payment = 75 }, - ['2'] = { name = 'Event Driver', payment = 100 }, - ['3'] = { name = 'Sales', payment = 125 }, - ['4'] = { name = 'Manager', isboss = true, payment = 150 }, - }, - }, - cardealer = { - label = 'Vehicle Dealer', - defaultDuty = true, - offDutyPay = false, - grades = { - ['0'] = { name = 'Recruit', payment = 50 }, - ['1'] = { name = 'Showroom Sales', payment = 75 }, - ['2'] = { name = 'Business Sales', payment = 100 }, - ['3'] = { name = 'Finance', payment = 125 }, - ['4'] = { name = 'Manager', isboss = true, payment = 150 }, - }, - }, - mechanic = { - label = 'LS Customs', - type = 'mechanic', - defaultDuty = true, - offDutyPay = false, - grades = { - ['0'] = { name = 'Recruit', payment = 50 }, - ['1'] = { name = 'Novice', payment = 75 }, - ['2'] = { name = 'Experienced', payment = 100 }, - ['3'] = { name = 'Advanced', payment = 125 }, - ['4'] = { name = 'Manager', isboss = true, payment = 150 }, - }, - }, - mechanic2 = { - label = 'LS Customs', - type = 'mechanic', - defaultDuty = true, - offDutyPay = false, - grades = { - ['0'] = { name = 'Recruit', payment = 50 }, - ['1'] = { name = 'Novice', payment = 75 }, - ['2'] = { name = 'Experienced', payment = 100 }, - ['3'] = { name = 'Advanced', payment = 125 }, - ['4'] = { name = 'Manager', isboss = true, payment = 150 }, - }, - }, - mechanic3 = { - label = 'LS Customs', - type = 'mechanic', - defaultDuty = true, - offDutyPay = false, - grades = { - ['0'] = { name = 'Recruit', payment = 50 }, - ['1'] = { name = 'Novice', payment = 75 }, - ['2'] = { name = 'Experienced', payment = 100 }, - ['3'] = { name = 'Advanced', payment = 125 }, - ['4'] = { name = 'Manager', isboss = true, payment = 150 }, - }, - }, - beeker = { - label = 'Beeker\'s Garage', - type = 'mechanic', - defaultDuty = true, - offDutyPay = false, - grades = { - ['0'] = { name = 'Recruit', payment = 50 }, - ['1'] = { name = 'Novice', payment = 75 }, - ['2'] = { name = 'Experienced', payment = 100 }, - ['3'] = { name = 'Advanced', payment = 125 }, - ['4'] = { name = 'Manager', isboss = true, payment = 150 }, - }, - }, - bennys = { - label = 'Benny\'s Original Motor Works', - type = 'mechanic', - defaultDuty = true, - offDutyPay = false, - grades = { - ['0'] = { name = 'Recruit', payment = 50 }, - ['1'] = { name = 'Novice', payment = 75 }, - ['2'] = { name = 'Experienced', payment = 100 }, - ['3'] = { name = 'Advanced', payment = 125 }, - ['4'] = { name = 'Manager', isboss = true, payment = 150 }, - }, - }, -} diff --git a/shared/locale.lua b/shared/locale.lua deleted file mode 100644 index 71c9ee3..0000000 --- a/shared/locale.lua +++ /dev/null @@ -1,145 +0,0 @@ ---- @class Locale -Locale = {} -Locale.__index = Locale - -local function translateKey(phrase, subs) - if type(phrase) ~= 'string' then - error('TypeError: translateKey function expects arg #1 to be a string') - end - - -- Substituions - if not subs then - return phrase - end - - -- We should be escaping gsub just in case of any - -- shenanigans with nested template patterns or injection - - -- Create and copy our return string - local result = phrase - - -- Initial Scan over result looking for substituions - for k, v in pairs(subs) do - local templateToFind = '%%{' .. k .. '}' - result = result:gsub(templateToFind, tostring(v)) -- string to allow all types - end - - return result -end - ---- Constructor function for a new Locale class instance ---- @param opts table - Constructor opts param ---- @return Locale -function Locale.new(_, opts) - local self = setmetatable({}, Locale) - - self.fallback = opts.fallbackLang and Locale:new({ - warnOnMissing = false, - phrases = opts.fallbackLang.phrases, - }) or false - - self.warnOnMissing = type(opts.warnOnMissing) ~= 'boolean' and true or opts.warnOnMissing - - self.phrases = {} - self:extend(opts.phrases or {}) - - return self -end - ---- Method for extending an instances phrases map. This is also, used ---- internally for initial population of phrases field. ---- @param phrases table - Table of phrase definitions ---- @param prefix string | nil - Optional prefix used for recursive calls ---- @return nil -function Locale:extend(phrases, prefix) - for key, phrase in pairs(phrases) do - local prefixKey = prefix and ('%s.%s'):format(prefix, key) or key - -- If this is a nested table, we need to go reeeeeeeeeeeecursive - if type(phrase) == 'table' then - self:extend(phrase, prefixKey) - else - self.phrases[prefixKey] = phrase - end - end -end - ---- Clear locale instance phrases ---- Might be useful for memory management of large phrase maps. ---- @return nil -function Locale:clear() - self.phrases = {} -end - ---- Clears all phrases and replaces it with the passed phrases table ---- @param phrases table -function Locale:replace(phrases) - phrases = phrases or {} - self:clear() - self:extend(phrases) -end - ---- Gets & Sets a locale depending on if an argument is passed ---- @param newLocale string - Optional new locale to set ---- @return string -function Locale:locale(newLocale) - if (newLocale) then - self.currentLocale = newLocale - end - return self.currentLocale -end - ---- Primary translation method for a phrase of given key ---- @param key string - The phrase key to target ---- @param subs table | nil ---- @return string -function Locale:t(key, subs) - local phrase, result - subs = subs or {} - - -- See if the passed key resolves to a valid phrase string - if type(self.phrases[key]) == 'string' then - phrase = self.phrases[key] - -- At this point we know whether the phrase does not exist for this key - else - if self.warnOnMissing then - print(('^3Warning: Missing phrase for key: "%s"^0'):format(key)) - end - if self.fallback then - return self.fallback:t(key, subs) - end - result = key - end - - if type(phrase) == 'string' then - result = translateKey(phrase, subs) - end - - return result -end - ---- Check if a phrase key has already been defined within the Locale instance phrase maps. ---- @return boolean -function Locale:has(key) - return self.phrases[key] ~= nil -end - ---- Will remove phrase keys from a Locale instance, using recursion/ ---- @param phraseTarget string | table ---- @param prefix string -function Locale:delete(phraseTarget, prefix) - -- If the target is a string, we know that this is the end - -- of nested table tree. - if type(phraseTarget) == 'string' then - self.phrases[phraseTarget] = nil - else - for key, phrase in pairs(phraseTarget) do - local prefixKey = prefix and prefix .. '.' .. key or key - - if type(phrase) == 'table' then - self:delete(phrase, prefixKey) - else - self.phrases[prefixKey] = nil - end - end - end -end diff --git a/shared/locations.lua b/shared/locations.lua deleted file mode 100644 index 3582619..0000000 --- a/shared/locations.lua +++ /dev/null @@ -1,108 +0,0 @@ -QBShared.Locations = { - -- Base game MLO interiors - aircraft_carrier_int = vector4(3081.0042, -4693.6875, 15.2623, 76.8169), - apt_1_int = vector4(-1452.4602, -540.2056, 74.0443, 31.9129), - apt_2_int = vector4(-912.7861, -365.2444, 114.2748, 110.0791), - apt_3_int = vector4(-603.3033, 58.9509, 98.2002, 81.6158), - apt_4_int = vector4(-784.6159, 323.849, 211.9972, 260.1097), - apt_5_int = vector4(-31.1088, -595.1442, 80.0309, 238.7146), - apt_6_int = vector4(-603.0135, 59.0137, -182.3809, 79.5818), - apt_hi_1_int = vector4(-18.3525, -590.9888, 90.1148, 331.3955), - apt_hi_2_int = vector4(-1450.2595, -525.3569, 56.929, 29.844), - bahama_mamas_int = vector4(-1387.0503, -588.4022, 30.3195, 124.4977), - biker_clubhouse_1_int = vector4(1121.1473, -3152.606, -37.0627, 354.0713), - biker_clubhouse_2_int = vector4(997.1274, -3157.5261, -38.9071, 239.8958), - casino_garage_int = vector4(1380.0403, 178.7124, -48.9942, 351.2701), - casino_hotel_floor_5_int = vector4(2508.6404, -262.1918, -39.1218, 183.9682), - casino_interior_int = vector4(1089.1294, 207.2294, -48.9997, 320.0139), - casino_loading_bay_int = vector4(2519.0271, -279.1287, -64.7228, 273.2338), - casino_nightclub_int = vector4(1578.2496, 253.7532, -46.0051, 174.0727), - casino_offices_int = vector4(2485.0115, -250.7915, -55.1238, 270.4959), - casino_security_int = vector4(2548.1143, -267.3465, -58.723, 192.4636), - casino_vault_int = vector4(2506.9446, -238.5225, -70.7371, 268.6321), - casino_vault_lobby_int = vector4(2465.6365, -278.9171, -70.6942, 264.7971), - cocaine_lockup_int = vector4(1088.6353, -3187.8801, -38.9935, 178.8853), - counterfeit_cash_int = vector4(1138.2513, -3198.7056, -39.6657, 66.1039), - document_forgery_int = vector4(1173.4496, -3196.7759, -39.008, 77.9179), - doomsday_facility_int = vector4(453.0641, 4820.2095, -58.9997, 87.7778), - exec_apt_1_int = vector4(-786.7757, 315.4629, 217.6385, 269.4638), - exec_apt_2_int = vector4(-773.9349, 342.1293, 196.6862, 87.2747), - exec_apt_3_int = vector4(-787.0633, 315.7905, 187.9135, 276.2593), - fib_floor_47_int = vector4(136.714, -765.5745, 234.152, 76.3983), - fib_floor_49_int = vector4(136.2863, -765.8568, 242.1519, 79.0446), - fib_top_floor_int = vector4(156.6616, -759.0523, 258.1518, 83.4114), - franklins_house_int = vector4(-14.1716, -1440.7046, 31.1015, 2.7505), - house_hi_1_int = vector4(-174.1817, 497.7469, 137.6537, 195.447), - house_hi_2_int = vector4(342.0325, 437.7024, 149.3897, 125.2541), - house_hi_3_int = vector4(373.5483, 423.4114, 145.9079, 162.7296), - house_hi_4_int = vector4(-682.3972, 592.3556, 145.3927, 233.6731), - house_hi_5_int = vector4(-758.5825, 619.0045, 144.1539, 118.2023), - house_hi_6_int = vector4(-860.154, 690.9542, 152.8608, 192.5502), - house_hi_7_int = vector4(117.227, 559.6552, 184.3049, 190.2912), - house_low_1_int = vector4(266.0239, -1007.0026, -100.9048, 357.9751), - house_mid_1_int = vector4(346.855, -1012.7548, -99.1963, 355.3892), - iaa_facility_1_int = vector4(2154.9517, 2921.0366, -61.9025, 96.9736), - iaa_facility_2_int = vector4(2154.6731, 2921.0784, -81.0755, 268.6461), - lesters_factory_int = vector4(717.8725, -974.6326, 24.9142, 359.5224), - lesters_house_int = vector4(1273.9886, -1719.4897, 54.7715, 11.6602), - meth_lab_int = vector4(997.4726, -3200.6846, -36.3937, 307.2153), - morgue_int = vector4(274.9287, -1361.0305, 24.5378, 48.8693), - motel_room_int = vector4(151.379, -1007.7512, -99.0, 326.917), - movie_theatre_int = vector4(-1437.0271, -243.3148, 16.8335, 200.8791), - nightclub_1_int = vector4(-1569.494, -3016.9558, -74.4061, 359.8158), - office_1_int = vector4(-140.6184, -619.2825, 168.8203, 183.2728), - office_2_int = vector4(-77.2845, -828.4749, 243.3858, 330.7214), - office_3_int = vector4(-1579.7123, -562.8762, 108.5229, 217.1494), - office_4_int = vector4(-1394.6268, -479.7602, 72.0421, 273.3521), - psychiatrist_office_int = vector4(-1902.1859, -572.3267, 19.0972, 106.6428), - shell_1_int = vector4(404.9589, -957.7651, -99.0042, 1.7754), - submarine_int = vector4(512.8119, 4881.4795, -62.5867, 359.146), - uniondepository_int = vector4(5.8001, -708.6383, 16.131, 348.7656), - weed_farm_int = vector4(1066.0164, -3183.4456, -39.1635, 96.9736), - - -- Unknown/Random/Vanilla - burgershot = vector4(-1199.0568, -882.4495, 13.3500, 209.1105), - casino = vector4(923.2289, 47.3113, 81.1063, 237.6052), - - -- Gabz - arcade = vector4(-1649.6089, -1083.9313, 13.1575, 46.4121), - beanmachinelegion = vector4(116.16, -1022.99, 29.3, 0.0), - bowling = vector4(761.5008, -777.7256, 26.3078, 90.5581), - pizzaria = vector4(790.4561, -758.4601, 26.7424, 270.2329), - catcafe = vector4(-580.8388, -1072.7872, 22.3296, 359.0078), - carmeet = vector4(958.8237, -1699.6659, 29.5574, 71.2731), - popsdiner = vector4(1595.9753, 6448.6421, 25.3170, 28.3026), - harmony = vector4(1183.0693, 2648.5313, 37.8363, 194.0603), - haters = vector4(-1117.1525, -1439.4297, 5.1075, 103.4411), - hayes = vector4(-1435.7040, -445.7360, 35.5964, 220.1762), - pdm = vector4(-48.2113, -1105.4769, 27.2634, 339.5899), - bennys = vector4(-47.5289, -1042.6086, 28.3532, 247.9748), - lamesaauto = vector4(720.4776, -1092.1934, 22.2866, 310.1469), - lostmc = vector4(982.6339, -104.7095, 74.8488, 30.8738), - pillbox = vector4(298.1153, -584.2825, 43.2609, 252.7553), - mirrorparkhouse1 = vector4(945.9535, -652.9119, 58.0228, 90.5541), - pacificbank = vector4(229.9529, 214.3890, 105.5561, 294.6791), - paletoliquor = vector4(-154.2287, 6328.8682, 31.5665, 133.1992), - paletogasstation = vector4(120.2420, 6625.4722, 31.9580, 36.5687), - pinkcage = vector4(323.9055, -203.2524, 54.0866, 186.8505), - ponsonbys1 = vector4(-165.2497, -304.3988, 38.07126, 0.0), - ponsonbys2 = vector4(-1448.1, -236.8420, 48.15098, 0.0), - ponsonbys3 = vector4(-709.8120, -150.6267, 35.75312, 0.0), - rangerstation = vector4(387.3204, 790.1508, 187.6927, 4.7656), - recordastudio = vector4(473.3006, -109.4360, 62.7418, 350.8488), - suburban1 = vector4(124.9756, -217.6290, 55.81879, 0.0), - suburban2 = vector4(617.4776, 2757.4810, 43.34935, 0.0), - suburban3 = vector4(-1195.8690, -773.5746, 18.58485, 0.0), - suburban4 = vector4(-3170.9670, 1049.9310, 22.12445, 0.0), - triadrecords = vector4(-829.0061, -698.2049, 28.0583, 291.2052), - tuner = vector4(157.5888, -3017.9968, 7.0400, 94.0695), - vu = vector4(129.4555, -1299.6754, 29.2327, 27.6378), - - -- Patoche - luxerydealership = vector4(-1273.22, -371.11, 36.64, 301.8), - - -- Unclejust - digitalden = vector4(-656.28, -849.92, 24.51, 167.42), - ifruitstore1 = vector4(-646.78, -288.17, 35.49, 297.73), - ifruitstore2 = vector4(-778.7451, -598.2717, 30.2772, 181.0197) -} diff --git a/shared/main.lua b/shared/main.lua deleted file mode 100644 index b514dd5..0000000 --- a/shared/main.lua +++ /dev/null @@ -1,175 +0,0 @@ -QBShared = QBShared or {} - -local StringCharset = {} -local NumberCharset = {} - -QBShared.StarterItems = { - ['phone'] = { amount = 1, item = 'phone' }, - ['id_card'] = { amount = 1, item = 'id_card' }, - ['driver_license'] = { amount = 1, item = 'driver_license' }, -} - -for i = 48, 57 do NumberCharset[#NumberCharset + 1] = string.char(i) end -for i = 65, 90 do StringCharset[#StringCharset + 1] = string.char(i) end -for i = 97, 122 do StringCharset[#StringCharset + 1] = string.char(i) end - -function QBShared.RandomStr(length) - if length <= 0 then return '' end - return QBShared.RandomStr(length - 1) .. StringCharset[math.random(1, #StringCharset)] -end - -function QBShared.RandomInt(length) - if length <= 0 then return '' end - return QBShared.RandomInt(length - 1) .. NumberCharset[math.random(1, #NumberCharset)] -end - -function QBShared.SplitStr(str, delimiter) - local result = {} - local from = 1 - local delim_from, delim_to = string.find(str, delimiter, from) - while delim_from do - result[#result + 1] = string.sub(str, from, delim_from - 1) - from = delim_to + 1 - delim_from, delim_to = string.find(str, delimiter, from) - end - result[#result + 1] = string.sub(str, from) - return result -end - -function QBShared.Trim(value) - if not value then return nil end - return (string.gsub(value, '^%s*(.-)%s*$', '%1')) -end - -function QBShared.FirstToUpper(value) - if not value then return nil end - return (value:gsub("^%l", string.upper)) -end - -function QBShared.Round(value, numDecimalPlaces) - if not numDecimalPlaces then return math.floor(value + 0.5) end - local power = 10 ^ numDecimalPlaces - return math.floor((value * power) + 0.5) / (power) -end - -function QBShared.ChangeVehicleExtra(vehicle, extra, enable) - if DoesExtraExist(vehicle, extra) then - if enable then - SetVehicleExtra(vehicle, extra, false) - if not IsVehicleExtraTurnedOn(vehicle, extra) then - QBShared.ChangeVehicleExtra(vehicle, extra, enable) - end - else - SetVehicleExtra(vehicle, extra, true) - if IsVehicleExtraTurnedOn(vehicle, extra) then - QBShared.ChangeVehicleExtra(vehicle, extra, enable) - end - end - end -end - -function QBShared.IsFunction(value) - if type(value) == 'table' then - return value.__cfx_functionReference ~= nil and type(value.__cfx_functionReference) == "string" - end - - return type(value) == 'function' -end - -function QBShared.SetDefaultVehicleExtras(vehicle, config) - -- Clear Extras - for i = 1, 20 do - if DoesExtraExist(vehicle, i) then - SetVehicleExtra(vehicle, i, 1) - end - end - - for id, enabled in pairs(config) do - if type(enabled) ~= 'boolean' then - enabled = true - end - - QBShared.ChangeVehicleExtra(vehicle, tonumber(id), enabled) - end -end - -QBShared.MaleNoGloves = { - [0] = true, - [1] = true, - [2] = true, - [3] = true, - [4] = true, - [5] = true, - [6] = true, - [7] = true, - [8] = true, - [9] = true, - [10] = true, - [11] = true, - [12] = true, - [13] = true, - [14] = true, - [15] = true, - [18] = true, - [26] = true, - [52] = true, - [53] = true, - [54] = true, - [55] = true, - [56] = true, - [57] = true, - [58] = true, - [59] = true, - [60] = true, - [61] = true, - [62] = true, - [112] = true, - [113] = true, - [114] = true, - [118] = true, - [125] = true, - [132] = true -} - -QBShared.FemaleNoGloves = { - [0] = true, - [1] = true, - [2] = true, - [3] = true, - [4] = true, - [5] = true, - [6] = true, - [7] = true, - [8] = true, - [9] = true, - [10] = true, - [11] = true, - [12] = true, - [13] = true, - [14] = true, - [15] = true, - [19] = true, - [59] = true, - [60] = true, - [61] = true, - [62] = true, - [63] = true, - [64] = true, - [65] = true, - [66] = true, - [67] = true, - [68] = true, - [69] = true, - [70] = true, - [71] = true, - [129] = true, - [130] = true, - [131] = true, - [135] = true, - [142] = true, - [149] = true, - [153] = true, - [157] = true, - [161] = true, - [165] = true -} diff --git a/shared/vehicles.lua b/shared/vehicles.lua deleted file mode 100644 index b745c09..0000000 --- a/shared/vehicles.lua +++ /dev/null @@ -1,783 +0,0 @@ -QBShared = QBShared or {} -QBShared.Vehicles = QBShared.Vehicles or {} - -local Vehicles = { - --- Compacts (0) - { - 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', -- Catgegory of the vehilce, stick with GetVehicleClass() options https://docs.fivem.net/natives/?_0x29439776AAA00A62 - type = 'automobile', -- Vehicle type, refer here https://docs.fivem.net/natives/?_0x6AE51D4B & here https://docs.fivem.net/natives/?_0xA273060E - shop = 'pdm', -- Can be a single shop or multiple shops. For multiple shops for example {'shopname1','shopname2','shopname3'} - }, - { model = 'blista', name = 'Blista', brand = 'Dinka', price = 13000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'brioso', name = 'Brioso R/A', brand = 'Grotti', price = 20000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'club', name = 'Club', brand = 'BF', price = 8000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'dilettante', name = 'Dilettante', brand = 'Karin', price = 9000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'dilettante2', name = 'Dilettante Patrol', brand = 'Karin', price = 12000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'kanjo', name = 'Blista Kanjo', brand = 'Dinka', price = 12000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'issi2', name = 'Issi', brand = 'Weeny', price = 7000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'issi3', name = 'Issi Classic', brand = 'Weeny', price = 5000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'issi4', name = 'Issi Arena', brand = 'Weeny', price = 80000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'issi5', name = 'Issi Future Shock', brand = 'Weeny', price = 80000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'issi6', name = 'Issi Nightmare', brand = 'Weeny', price = 80000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'panto', name = 'Panto', brand = 'Benefactor', price = 3200, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'prairie', name = 'Prairie', brand = 'Bollokan', price = 30000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'rhapsody', name = 'Rhapsody', brand = 'Declasse', price = 10000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'brioso2', name = 'Brioso 300', brand = 'Grotti', price = 12000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'weevil', name = 'Weevil', brand = 'BF', price = 9000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'issi7', name = 'Issi Sport', brand = 'Weeny', price = 100000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'blista2', name = 'Blista Compact', brand = 'Dinka', price = 18950, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'blista3', name = 'Blista Go Go Monkey', brand = 'Dinka', price = 15000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'brioso3', name = 'Brioso 300 Widebody', brand = 'Grotti', price = 125000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - { model = 'boor', name = 'Boor', brand = 'Karin', price = 23000, category = 'compacts', type = 'automobile', shop = 'pdm' }, - --- Sedans (1) - { model = 'asea', name = 'Asea', brand = 'Declasse', price = 2500, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'asterope', name = 'Asterope', brand = 'Karin', price = 11000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'cog55', name = 'Cognoscenti 55', brand = 'Enus', price = 22000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'cognoscenti', name = 'Cognoscenti', brand = 'Enus', price = 22500, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'emperor', name = 'Emperor', brand = 'Albany', price = 4250, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'fugitive', name = 'Fugitive', brand = 'Cheval', price = 20000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'glendale', name = 'Glendale', brand = 'Benefactor', price = 3400, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'glendale2', name = 'Glendale Custom', brand = 'Benefactor', price = 12000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'ingot', name = 'Ingot', brand = 'Vulcar', price = 4999, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'intruder', name = 'Intruder', brand = 'Karin', price = 11250, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'premier', name = 'Premier', brand = 'Declasse', price = 12000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'primo', name = 'Primo', brand = 'Albany', price = 5000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'primo2', name = 'Primo Custom', brand = 'Albany', price = 14500, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'regina', name = 'Regina', brand = 'Dundreary', price = 7000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'stafford', name = 'Stafford', brand = 'Enus', price = 30000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'stanier', name = 'Stanier', brand = 'Vapid', price = 19000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'stratum', name = 'Stratum', brand = 'Zirconium', price = 15000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'stretch', name = 'Stretch', brand = 'Dundreary', price = 19000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'superd', name = 'Super Diamond', brand = 'Enus', price = 17000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'surge', name = 'Surge', brand = 'Cheval', price = 20000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'tailgater', name = 'Tailgater', brand = 'Obey', price = 22000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'warrener', name = 'Warrener', brand = 'Vulcar', price = 4000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'washington', name = 'Washington', brand = 'Albany', price = 7000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'tailgater2', name = 'Tailgater S', brand = 'Obey', price = 51000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'cinquemila', name = 'Lampadati', brand = 'Cinquemila', price = 125000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'iwagen', name = 'Obey', brand = 'I-Wagen', price = 225000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'astron', name = 'Astron', brand = 'Pfister', price = 150000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'baller7', name = 'Baller ST', brand = 'Gallivanter', price = 145000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'comet7', name = 'Comet', brand = 'S2 Cabrio', price = 25000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'deity', name = 'Deity', brand = 'Enus', price = 505000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'jubilee', name = 'Jubilee', brand = 'Enus', price = 485000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'oracle', name = 'Oracle', brand = 'Übermacht', price = 22000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'schafter2', name = 'Schafter', brand = 'Benefactor', price = 16000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'warrener2', name = 'Warrener HKR', brand = 'Vulcar', price = 30000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'rhinehart', name = 'Rhinehart', brand = 'Übermacht', price = 105000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'eudora', name = 'Eudora', brand = 'Willard', price = 17000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'asterope2', name = 'Asterope GZ', brand = 'Karin', price = 459000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - { model = 'impaler5', name = 'Impaler SZ', brand = 'Declasse', price = 768000, category = 'sedans', type = 'automobile', shop = 'pdm' }, - --- SUV (2) - { model = 'baller', name = 'Baller', brand = 'Gallivanter', price = 22000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'baller2', name = 'Baller II', brand = 'Gallivanter', price = 15000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'baller3', name = 'Baller LE', brand = 'Gallivanter', price = 15000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'baller4', name = 'Baller LE LWB', brand = 'Gallivanter', price = 29000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'baller5', name = 'Baller LE (Armored)', brand = 'Gallivanter', price = 78000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'baller6', name = 'Baller LE LWB (Armored)', brand = 'Gallivanter', price = 82000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'bjxl', name = 'BeeJay XL', brand = 'Karin', price = 19000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'cavalcade', name = 'Cavalcade', brand = 'Albany', price = 14000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'cavalcade2', name = 'Cavalcade II', brand = 'Albany', price = 16500, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'contender', name = 'Contender', brand = 'Vapid', price = 35000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'dubsta', name = 'Dubsta', brand = 'Benefactor', price = 19000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'dubsta2', name = 'Dubsta Luxury', brand = 'Benefactor', price = 19500, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'fq2', name = 'FQ2', brand = 'Fathom', price = 18500, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'granger', name = 'Granger', brand = 'Declasse', price = 22000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'gresley', name = 'Gresley', brand = 'Bravado', price = 25000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'habanero', name = 'Habanero', brand = 'Emperor', price = 20000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'huntley', name = 'Huntley S', brand = 'Enus', price = 24500, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'landstalker', name = 'Landstalker', brand = 'Dundreary', price = 12000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'landstalker2', name = 'Landstalker XL', brand = 'Dundreary', price = 26000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'novak', name = 'Novak', brand = 'Lampadati', price = 70000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'patriot', name = 'Patriot', brand = 'Mammoth', price = 21000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'patriot2', name = 'Patriot Stretch', brand = 'Mammoth', price = 21000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'radi', name = 'Radius', brand = 'Vapid', price = 18000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'rebla', name = 'Rebla GTS', brand = 'Übermacht', price = 21000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'rocoto', name = 'Rocoto', brand = 'Obey', price = 13000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'seminole', name = 'Seminole', brand = 'Canis', price = 20000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'seminole2', name = 'Seminole Frontier', brand = 'Canis', price = 13000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'serrano', name = 'Serrano', brand = 'Benefactor', price = 48000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'toros', name = 'Toros', brand = 'Pegassi', price = 65000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'xls', name = 'XLS', brand = 'Benefactor', price = 17000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'granger2', name = 'Granger 3600LX', brand = 'Declasse', price = 221000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'patriot3', name = 'Patriot Military', brand = 'Mil-Spec', price = 270000, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'aleutian', name = 'Aleutian', brand = 'Vapid', price = 183500, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'baller8', name = 'Baller ST-D', brand = 'Gallivanter', price = 171500, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'cavalcade3', name = 'Cavalcade XL', brand = 'Albany', price = 166500, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'dorado', name = 'Dorado', brand = 'Bravado', price = 137500, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'vivanite', name = 'Vivanite', brand = 'Karin', price = 160500, category = 'suvs', type = 'automobile', shop = 'pdm' }, - { model = 'castigator', name = 'Castigator', brand = 'Canis', price = 160500, category = 'suvs', type = 'automobile', shop = 'pdm' }, - --- Coupes (3) - { model = 'cogcabrio', name = 'Cognoscenti Cabrio', brand = 'Enus', price = 30000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'exemplar', name = 'Exemplar', brand = 'Dewbauchee', price = 40000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'f620', name = 'F620', brand = 'Ocelot', price = 32500, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'felon', name = 'Felon', brand = 'Lampadati', price = 31000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'felon2', name = 'Felon GT', brand = 'Lampadati', price = 37000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'jackal', name = 'Jackal', brand = 'Ocelot', price = 19000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'oracle2', name = 'Oracle XS', brand = 'Übermacht', price = 28000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'sentinel', name = 'Sentinel', brand = 'Übermacht', price = 30000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'sentinel2', name = 'Sentinel XS', brand = 'Übermacht', price = 33000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'windsor', name = 'Windsor', brand = 'Enus', price = 27000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'windsor2', name = 'Windsor Drop', brand = 'Enus', price = 34000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'zion', name = 'Zion', brand = 'Übermacht', price = 22000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'zion2', name = 'Zion Cabrio', brand = 'Übermacht', price = 28000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'previon', name = 'Previon', brand = 'Karin', price = 149000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'champion', name = 'Champion', brand = 'Dewbauchee', price = 205000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'futo', name = 'Futo', brand = 'Karin', price = 17500, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'sentinel3', name = 'Sentinel Classic', brand = 'Übermacht', price = 70000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'kanjosj', name = 'Kanjo SJ', brand = 'Dinka', price = 143000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'postlude', name = 'Postlude', brand = 'Dinka', price = 90000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'tahoma', name = 'Tahoma Coupe', brand = 'Declasse', price = 12000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'broadway', name = 'Broadway', brand = 'Classique', price = 20000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - { model = 'fr36', name = 'FR36', brand = 'Fathom', price = 161000, category = 'coupes', type = 'automobile', shop = 'pdm' }, - --- Muscle (4) - { model = 'blade', name = 'Blade', brand = 'Vapid', price = 23500, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'buccaneer', name = 'Buccaneer', brand = 'Albany', price = 22500, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'buccaneer2', name = 'Buccaneer Rider', brand = 'Albany', price = 24500, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'chino', name = 'Chino', brand = 'Vapid', price = 5000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'chino2', name = 'Chino Luxe', brand = 'Vapid', price = 8000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'clique', name = 'Clique', brand = 'Vapid', price = 20000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'coquette3', name = 'Coquette BlackFin', brand = 'Invetero', price = 180000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'deviant', name = 'Deviant', brand = 'Schyster', price = 70000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'dominator', name = 'Dominator', brand = 'Vapid', price = 62500, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'dominator2', name = 'Pißwasser Dominator', brand = 'Vapid', price = 50000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'dominator3', name = 'Dominator GTX', brand = 'Vapid', price = 70000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'dominator4', name = 'Dominator Arena', brand = 'Vapid', price = 200000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'dominator7', name = 'Dominator ASP', brand = 'Vapid', price = 110000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'dominator8', name = 'Dominator GTT', brand = 'Vapid', price = 80000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'dukes', name = 'Dukes', brand = 'Imponte', price = 23500, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'dukes2', name = 'Duke O\'Death', brand = 'Imponte', price = 60000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'dukes3', name = 'Beater Dukes', brand = 'Imponte', price = 45000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'faction', name = 'Faction', brand = 'Willard', price = 17000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'faction2', name = 'Faction Rider', brand = 'Willard', price = 19000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'faction3', name = 'Faction Custom Donk', brand = 'Willard', price = 35000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'ellie', name = 'Ellie', brand = 'Vapid', price = 42250, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'gauntlet', name = 'Gauntlet', brand = 'Bravado', price = 28500, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'gauntlet2', name = 'Redwood Gauntlet', brand = 'Bravado', price = 70000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'gauntlet3', name = 'Classic Gauntlet', brand = 'Bravado', price = 75000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'gauntlet4', name = 'Gauntlet Hellfire', brand = 'Bravado', price = 80000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'gauntlet5', name = 'Gauntlet Classic Custom', brand = 'Bravado', price = 120000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'hermes', name = 'Hermes', brand = 'Albany', price = 535000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'hotknife', name = 'Hotknife', brand = 'Vapid', price = 90000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'hustler', name = 'Hustler', brand = 'Vapid', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'impaler', name = 'Impaler', brand = 'Vapid', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'impaler2', name = 'Impaler Arena', brand = 'Vapid', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'impaler3', name = 'Impaler Future Shock', brand = 'Vapid', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'impaler4', name = 'Impaler Nightmare', brand = 'Vapid', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'imperator', name = 'Imperator Arena', brand = 'Vapid', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'imperator2', name = 'imperator Future Shock', brand = 'Vapid', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'imperator3', name = 'Imperator Nightmare', brand = 'Vapid', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'lurcher', name = 'Lurcher', brand = 'Bravado', price = 21000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'nightshade', name = 'Nightshade', brand = 'Imponte', price = 70000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'phoenix', name = 'Phoenix', brand = 'Imponte', price = 65000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'picador', name = 'Picador', brand = 'Cheval', price = 20000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'ratloader2', name = 'Ratloader', brand = 'Ratloader2', price = 20000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'ruiner', name = 'Ruiner', brand = 'Imponte', price = 29000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'ruiner2', name = 'Ruiner 2000', brand = 'Imponte', price = 50000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'sabregt', name = 'Sabre GT Turbo', brand = 'Declasse', price = 23000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'sabregt2', name = 'Sabre GT Turbo Custom', brand = 'Declasse', price = 26500, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'slamvan', name = 'Slam Van', brand = 'Vapid', price = 30000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'slamvan2', name = 'Lost Slam Van', brand = 'Vapid', price = 90000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'slamvan3', name = 'Slam Van Custom', brand = 'Vapid', price = 17000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'stalion', name = 'Stallion', brand = 'Declasse', price = 33000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'stalion2', name = 'Stallion Burgershot', brand = 'Declasse', price = 40000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'tampa', name = 'Tampa', brand = 'Declasse', price = 24500, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'tulip', name = 'Tulip', brand = 'Declasse', price = 80000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'vamos', name = 'Vamos', brand = 'Declasse', price = 30000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'vigero', name = 'Vigero', brand = 'Declasse', price = 39500, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'virgo', name = 'Virgo', brand = 'Albany', price = 22000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'virgo2', name = 'Virgo Custom Classic', brand = 'Dundreary', price = 21000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'virgo3', name = 'Virgo Classic', brand = 'Dundreary', price = 21000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'voodoo', name = 'Voodoo', brand = 'Declasse', price = 13000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'yosemite', name = 'Yosemite', brand = 'Declasse', price = 19500, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'yosemite2', name = 'Yosemite Drift', brand = 'Declasse', price = 55000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'buffalo4', name = 'Buffalo STX', brand = 'Bravado', price = 345000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'manana', name = 'Manana', brand = 'Albany', price = 12800, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'manana2', name = 'Manana Custom', brand = 'Albany', price = 24000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'tampa2', name = 'Drift Tampa', brand = 'Declasse', price = 80000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'ruiner4', name = 'Ruiner ZZ-8', brand = 'Imponte', price = 85000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'vigero2', name = 'Vigero ZX', brand = 'Declasse', price = 105000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'weevil2', name = 'Weevil Custom', brand = 'BF', price = 95000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'buffalo5', name = 'Buffalo EVX', brand = 'Bravado', price = 214000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'tulip2', name = 'Tulip M-100', brand = 'Declasse', price = 80000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'clique2', name = 'Clique Wagon', brand = 'Vapid', price = 102500, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'brigham', name = 'Brigham', brand = 'Albany', price = 149900, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'greenwood', name = 'Greenwood', brand = 'Bravado', price = 105000, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'dominator9', name = 'Dominator GT', brand = 'Vapid', price = 219500, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'impaler6', name = 'Impaler LX', brand = 'Declasse', price = 146500, category = 'muscle', type = 'automobile', shop = 'pdm' }, - { model = 'vigero3', name = 'Vigero ZX Convertible', brand = 'Declasse', price = 229500, category = 'muscle', type = 'automobile', shop = 'pdm' }, - --- Sports Classic (5) - { model = 'ardent', name = 'Ardent', brand = 'Ocelot', price = 30000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'btype', name = 'Roosevelt', brand = 'Albany', price = 75000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'btype2', name = 'Franken Stange', brand = 'Albany', price = 87000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'btype3', name = 'Roosevelt Valor', brand = 'Albany', price = 63000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'casco', name = 'Casco', brand = 'Lampadati', price = 100000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'deluxo', name = 'Deluxo', brand = 'Imponte', price = 55000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'dynasty', name = 'Dynasty', brand = 'Weeny', price = 25000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'fagaloa', name = 'Fagaloa', brand = 'Vulcar', price = 13000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'feltzer3', name = 'Stirling GT', brand = 'Benefactor', price = 115000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'gt500', name = 'GT500', brand = 'Grotti', price = 130000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'infernus2', name = 'Infernus Classic', brand = 'Pegassi', price = 245000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'jb700', name = 'JB 700', brand = 'Dewbauchee', price = 240000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'jb7002', name = 'JB 700W', brand = 'Dewbauchee', price = 40000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'mamba', name = 'Mamba', brand = 'Declasse', price = 140000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'michelli', name = 'Michelli GT', brand = 'Lampadati', price = 30000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'monroe', name = 'Monroe', brand = 'Pegassi', price = 115000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'nebula', name = 'Nebula', brand = 'Vulcar', price = 22000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'peyote', name = 'Peyote', brand = 'Vapid', price = 23500, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'peyote3', name = 'Peyote Custom', brand = 'Vapid', price = 48000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'pigalle', name = 'Pigalle', brand = 'Lampadati', price = 92000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'rapidgt3', name = 'Rapid GT Classic', brand = 'Dewbauchee', price = 90000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'retinue', name = 'Retinue', brand = 'Vapid', price = 32000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'retinue2', name = 'Retinue MKII', brand = 'Vapid', price = 38000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'savestra', name = 'Savestra', brand = 'Annis', price = 67000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'stinger', name = 'Stinger', brand = 'Grotti', price = 39500, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'stingergt', name = 'Stinger GT', brand = 'Grotti', price = 70000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'stromberg', name = 'Stromberg', brand = 'Ocelot', price = 80000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'swinger', name = 'Swinger', brand = 'Ocelot', price = 221000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'torero', name = 'Torero', brand = 'Pegassi', price = 84000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'tornado', name = 'Tornado', brand = 'Declasse', price = 21000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'tornado2', name = 'Tornado Convertible', brand = 'Declasse', price = 22000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'tornado5', name = 'Tornado Custom', brand = 'Declasse', price = 22000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'turismo2', name = 'Turismo Classic', brand = 'Grotti', price = 170000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'viseris', name = 'Viseris', brand = 'Lampadati', price = 210000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'z190', name = '190Z', brand = 'Karin', price = 78000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'ztype', name = 'Z-Type', brand = 'Truffade', price = 270000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'zion3', name = 'Zion Classic', brand = 'Übermacht', price = 45000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'cheburek', name = 'Cheburek', brand = 'Rune', price = 7000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'toreador', name = 'Toreador', brand = 'Pegassi', price = 50000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'peyote2', name = 'Peyote Gasser', brand = 'Vapid', price = 40000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'coquette2', name = 'Coquette Classic', brand = 'Invetero', price = 165000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'envisage', name = 'Envisage', brand = 'Bollokan', price = 190000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - { model = 'driftnebula', name = 'Nebula Turbo', brand = 'Vulcar', price = 100000, category = 'sportsclassics', type = 'automobile', shop = 'pdm' }, - --- Sports (6) - { model = 'alpha', name = 'Alpha', brand = 'Albany', price = 53000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'banshee', name = 'Banshee', brand = 'Bravado', price = 56000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'bestiagts', name = 'Bestia GTS', brand = 'Grotti', price = 37000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'buffalo', name = 'Buffalo', brand = 'Bravado', price = 18750, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'buffalo2', name = 'Buffalo S', brand = 'Bravado', price = 24500, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'carbonizzare', name = 'Carbonizzare', brand = 'Grotti', price = 155000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'comet2', name = 'Comet', brand = 'Pfister', price = 130000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'comet3', name = 'Comet Retro Custom', brand = 'Pfister', price = 175000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'comet4', name = 'Comet Safari', brand = 'Pfister', price = 110000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'comet5', name = 'Comet SR', brand = 'Pfister', price = 155000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'coquette', name = 'Coquette', brand = 'Invetero', price = 145000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'coquette4', name = 'Coquette D10', brand = 'Invetero', price = 220000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'drafter', name = '8F Drafter', brand = 'Obey', price = 80000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'elegy', name = 'Elegy Retro Custom', brand = 'Annis', price = 145000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'elegy2', name = 'Elegy RH8', brand = 'Annis', price = 150000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'feltzer2', name = 'Feltzer', brand = 'Benefactor', price = 97000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'flashgt', name = 'Flash GT', brand = 'Vapid', price = 48000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'furoregt', name = 'Furore GT', brand = 'Lampadati', price = 78000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'gb200', name = 'GB 200', brand = 'Vapid', price = 140000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'komoda', name = 'Komoda', brand = 'Lampadati', price = 55000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'imorgon', name = 'Imorgon', brand = 'Överflöd', price = 120000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'italigto', name = 'Itali GTO', brand = 'Progen', price = 260000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'jugular', name = 'Jugular', brand = 'Ocelot', price = 80000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'jester', name = 'Jester', brand = 'Dinka', price = 132250, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'jester2', name = 'Jester Racecar', brand = 'Dinka', price = 210000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'jester3', name = 'Jester Classic', brand = 'Dinka', price = 85000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'khamelion', name = 'Khamelion', brand = 'Hijak', price = 90000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'kuruma', name = 'Kuruma', brand = 'Karin', price = 72000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'kuruma2', name = 'kuruma2', brand = 'Karin2', price = 72000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'locust', name = 'Locust', brand = 'Ocelot', price = 200000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'lynx', name = 'Lynx', brand = 'Ocelot', price = 150000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'massacro', name = 'Massacro', brand = 'Dewbauchee', price = 110000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'massacro2', name = 'Massacro Racecar', brand = 'Dewbauchee', price = 80000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'neo', name = 'Neo', brand = 'Vysser', price = 230000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'neon', name = 'Neon', brand = 'Pfister', price = 220000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'ninef', name = '9F', brand = 'Obey', price = 95000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'ninef2', name = '9F Cabrio', brand = 'Obey', price = 105000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'omnis', name = 'Omnis', brand = 'Wow', price = 90000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'paragon', name = 'Paragon', brand = 'Enus', price = 60000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'pariah', name = 'Pariah', brand = 'Ocelot', price = 90000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'penumbra', name = 'Penumbra', brand = 'Maibatsu', price = 22000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'penumbra2', name = 'Penumbra FF', brand = 'Maibatsu', price = 30000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'rapidgt', name = 'Rapid GT', brand = 'Dewbauchee', price = 86000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'rapidgt2', name = 'Rapid GT Convertible', brand = 'Dewbauchee', price = 92000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'raptor', name = 'Raptor', brand = 'BF', price = 90000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'revolter', name = 'Revolter', brand = 'Übermacht', price = 95000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'ruston', name = 'Ruston', brand = 'Hijak', price = 130000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'schafter3', name = 'Schafter V12', brand = 'Benefactor', price = 35000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'schafter4', name = 'Schafter LWB', brand = 'Benefactor', price = 21000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'schlagen', name = 'Schlagen GT', brand = 'Benefactor', price = 160000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'schwarzer', name = 'Schwartzer', brand = 'Benefactor', price = 47000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'seven70', name = 'Seven-70', brand = 'Dewbauchee', price = 140000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'specter', name = 'Specter', brand = 'Dewbauchee', price = 160000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'streiter', name = 'Streiter', brand = 'Benefactor', price = 40000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'sugoi', name = 'Sugoi', brand = 'Dinka', price = 85000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'sultan', name = 'Sultan', brand = 'Karin', price = 50000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'sultan2', name = 'Sultan Custom', brand = 'Karin', price = 55000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'surano', name = 'Surano', brand = 'Benefactor', price = 80000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'tropos', name = 'Tropos Rallye', brand = 'Lampadati', price = 65000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'verlierer2', name = 'Verlierer', brand = 'Bravado', price = 90500, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'vstr', name = 'V-STR', brand = 'Albany', price = 80000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'italirsx', name = 'Itali RSX', brand = 'Progen', price = 260000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'zr350', name = 'ZR350', brand = 'Annis', price = 38000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'calico', name = 'Calico GTF', brand = 'Karin', price = 39000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'futo2', name = 'Futo GTX', brand = 'Karin', price = 39000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'euros', name = 'Euros', brand = 'Annis', price = 80000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'jester4', name = 'Jester RR', brand = 'Dinka', price = 240000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'remus', name = 'Remus', brand = 'Annis', price = 48000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'comet6', name = 'Comet S2', brand = 'Pfister', price = 230000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'growler', name = 'Growler', brand = 'Pfister', price = 205000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'vectre', name = 'Vectre', brand = 'Emperor', price = 80000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'cypher', name = 'Cypher', brand = 'Übermacht', price = 155000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'sultan3', name = 'Sultan Classic Custom', brand = 'Karin', price = 56000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'rt3000', name = 'RT3000', brand = 'Dinka', price = 65000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'sultanrs', name = 'Sultan RS', brand = 'Karin', price = 76500, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'visione', name = 'Visione', brand = 'Grotti', price = 750000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'cheetah2', name = 'Cheetah Classic', brand = 'Grotti', price = 195000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'stingertt', name = 'Itali GTO Stinger TT', brand = 'Maibatsu', price = 238000, category = 'sports', type = 'automobile', shop = 'pdm' }, - { model = 'omnisegt', name = 'Omnis e-GT', brand = 'Obey', price = 185000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'sentinel4', name = 'Sentinel Classic Widebody', brand = 'Übermacht', price = 140000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'sm722', name = 'SM722', brand = 'Benefactor', price = 125000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'tenf', name = '10F', brand = 'Obey', price = 185000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'tenf2', name = '10F Widebody', brand = 'Obey', price = 215000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'everon2', name = 'Everon Hotring', brand = 'Karin', price = 80000, category = 'sports', type = 'automobile', shop = 'pdm' }, - { model = 'issi8', name = 'Issi Rally', brand = 'Weeny', price = 10000, category = 'sports', type = 'automobile', shop = 'pdm' }, - { model = 'corsita', name = 'Corsita', brand = 'Lampadati', price = 90000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'gauntlet6', name = 'Hotring Hellfire', brand = 'Bravado', price = 181000, category = 'sports', type = 'automobile', shop = 'pdm' }, - { model = 'coureur', name = 'La Coureuse', brand = 'Penaud', price = 199000, category = 'sports', type = 'automobile', shop = 'pdm' }, - { model = 'r300', name = '300R', brand = 'Annis', price = 56000, category = 'sports', type = 'automobile', shop = 'pdm' }, - { model = 'panthere', name = 'Panthere', brand = 'Toundra', price = 55000, category = 'sports', type = 'automobile', shop = 'pdm' }, - { model = 'driftsentinel', name = 'Drift Sentinel Classic', brand = 'Ubermacht', price = 150000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'paragon3', name = 'Paragon S', brand = 'Enus', price = 220000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'eurosX32', name = 'Euros X32', brand = 'Annis', price = 180000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'vorschlaghammer', name = 'Vorschlaghammer', brand = 'Pfister', price = 250000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'driftcypher', name = 'Drift Cypher', brand = 'Ubermacht', price = 160000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'coquette5', name = 'Coquette D1', brand = 'Invetero', price = 220000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'pipistrello', name = 'Pipistrello', brand = 'Overflod', price = 240000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'niobe', name = 'Niobe', brand = 'Ubermacht', price = 180000, category = 'sports', type = 'automobile', shop = 'luxury' }, - { model = 'driftvorschlag', name = 'Vorschlaghammer', brand = 'Pfister', price = 250000, category = 'sports', type = 'automobile', shop = 'luxury' }, - --- Super (7) - { model = 'adder', name = 'Adder', brand = 'Truffade', price = 280000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'autarch', name = 'Autarch', brand = 'Överflöd', price = 224000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'banshee2', name = 'Banshee 900R', brand = 'Bravado', price = 120000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'bullet', name = 'Bullet', brand = 'Vapid', price = 120000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'cheetah', name = 'Cheetah', brand = 'Grotti', price = 214000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'cyclone', name = 'Cyclone', brand = 'Coil', price = 300000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'entity2', name = 'Entity XXR', brand = 'Överflöd', price = 164000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'entityxf', name = 'Entity XF', brand = 'Överflöd', price = 180000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'emerus', name = 'Emerus', brand = 'Progen', price = 220000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'fmj', name = 'FMJ', brand = 'Vapid', price = 125000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'furia', name = 'Furia', brand = 'Grotti', price = 230000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'gp1', name = 'GP1', brand = 'Progen', price = 110000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'infernus', name = 'Infernus', brand = 'Pegassi', price = 235000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'italigtb', name = 'Itali GTB', brand = 'Progen', price = 170000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'italigtb2', name = 'Itali GTB Custom', brand = 'Progen', price = 250000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'krieger', name = 'Krieger', brand = 'Benefactor', price = 222000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'le7b', name = 'RE-7B', brand = 'Annis', price = 260000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'nero', name = 'Nero', brand = 'Truffade', price = 200000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'nero2', name = 'Nero Custom', brand = 'Truffade', price = 260000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'osiris', name = 'Osiris', brand = 'Pegassi', price = 220000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'penetrator', name = 'Penetrator', brand = 'Ocelot', price = 130000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'pfister811', name = '811', brand = 'Pfister', price = 220000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'prototipo', name = 'X80 Proto', brand = 'Grotti', price = 235000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'reaper', name = 'Reaper', brand = 'Pegassi', price = 100000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 's80', name = 'S80RR', brand = 'Annis', price = 205000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'sc1', name = 'SC1', brand = 'Übermacht', price = 90000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'sheava', name = 'ETR1', brand = 'Emperor', price = 220000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 't20', name = 'T20', brand = 'Progen', price = 1650000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'taipan', name = 'Taipan', brand = 'Cheval', price = 1850000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'tempesta', name = 'Tempesta', brand = 'Pegassi', price = 120000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'tezeract', name = 'Tezeract', brand = 'Pegassi', price = 220000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'thrax', name = 'Thrax', brand = 'Truffade', price = 180000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'tigon', name = 'Tigon', brand = 'Lampadati', price = 240000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'turismor', name = 'Turismo R', brand = 'Grotti', price = 140000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'tyrant', name = 'Tyrant', brand = 'Överflöd', price = 2100000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'tyrus', name = 'Tyrus', brand = 'Progen', price = 230000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'vacca', name = 'Vacca', brand = 'Pegassi', price = 105000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'vagner', name = 'Vagner', brand = 'Dewbauchee', price = 1660000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'voltic', name = 'Voltic', brand = 'Coil', price = 120000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'voltic2', name = 'Rocket Voltic', brand = 'Coil', price = 9830400, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'xa21', name = 'XA-21', brand = 'Ocelot', price = 180000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'zentorno', name = 'Zentorno', brand = 'Pegassi', price = 340000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'zorrusso', name = 'Zorrusso', brand = 'Pegassi', price = 277000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'ignus', name = 'Ignus', brand = 'Pegassi', price = 1120000, category = 'super', type = 'automobile', shop = 'pdm' }, - { model = 'zeno', name = 'Zeno', brand = 'Överflöd', price = 1350000, category = 'super', type = 'automobile', shop = 'pdm' }, - { model = 'deveste', name = 'Deveste', brand = 'Principe', price = 234000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'lm87', name = 'LM87', brand = 'Benefactor', price = 155000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'torero2', name = 'Torero XO', brand = 'Pegassi', price = 245000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'entity3', name = 'Entity MT', brand = 'Overflod', price = 200000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'virtue', name = 'Virtue', brand = 'Ocelot', price = 72000, category = 'super', type = 'automobile', shop = 'luxury' }, - { model = 'turismo3', name = 'Turismo Omaggio', brand = 'Grotti', price = 284500, category = 'super', type = 'automobile', shop = 'luxury' }, - --- Motorcycles (8) - { model = 'akuma', name = 'Akuma', brand = 'Dinka', price = 55000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'avarus', name = 'Avarus', brand = 'LCC', price = 20000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'bagger', name = 'Bagger', brand = 'WMC', price = 13500, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'bati', name = 'Bati 801', brand = 'Pegassi', price = 24000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'bati2', name = 'Bati 801RR', brand = 'Pegassi', price = 19000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'bf400', name = 'BF400', brand = 'Nagasaki', price = 22000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'carbonrs', name = 'Carbon RS', brand = 'Nagasaki', price = 22000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'chimera', name = 'Chimera', brand = 'Nagasaki', price = 21000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'cliffhanger', name = 'Cliffhanger', brand = 'Western', price = 28500, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'daemon', name = 'Daemon', brand = 'WMC', price = 14000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'daemon2', name = 'Daemon Custom', brand = 'Western', price = 23000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'defiler', name = 'Defiler', brand = 'Shitzu', price = 30000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'deathbike', name = 'Deathbike Apocalypse', brand = 'Deathbike', price = 30000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'deathbike2', name = 'Deathbike Future Shock', brand = 'Deathbike', price = 30000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'deathbike3', name = 'Deathbike Nightmare', brand = 'Deathbike', price = 30000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'diablous', name = 'Diablous', brand = 'Principe', price = 30000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'diablous2', name = 'Diablous Custom', brand = 'Principe', price = 38000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'double', name = 'Double-T', brand = 'Dinka', price = 28000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'enduro', name = 'Enduro', brand = 'Dinka', price = 5500, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'esskey', name = 'Esskey', brand = 'Pegassi', price = 12000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'faggio', name = 'Faggio Sport', brand = 'Pegassi', price = 2000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'faggio2', name = 'Faggio', brand = 'Pegassi', price = 1900, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'faggio3', name = 'Faggio Mod', brand = 'Pegassi', price = 2500, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'fcr', name = 'FCR 1000', brand = 'Pegassi', price = 5000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'fcr2', name = 'FCR 1000 Custom', brand = 'Pegassi', price = 19000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'gargoyle', name = 'Gargoyle', brand = 'Western', price = 32000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'hakuchou', name = 'Hakuchou', brand = 'Shitzu', price = 17000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'hakuchou2', name = 'Hakuchou Drag', brand = 'Shitzu', price = 45000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'hexer', name = 'Hexer', brand = 'LCC', price = 16000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'innovation', name = 'Innovation', brand = 'LLC', price = 33500, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'lectro', name = 'Lectro', brand = 'Principe', price = 28000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'manchez', name = 'Manchez', brand = 'Maibatsu', price = 8300, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'nemesis', name = 'Nemesis', brand = 'Principe', price = 20000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'nightblade', name = 'Nightblade', brand = 'WMC', price = 23000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'oppressor', name = 'Oppressor', brand = 'Pegassi', price = 9999999, category = 'motorcycles', type = 'bike', shop = 'luxury' }, - { model = 'pcj', name = 'PCJ-600', brand = 'Shitzu', price = 15000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'ratbike', name = 'Rat Bike', brand = 'Western', price = 3000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'ruffian', name = 'Ruffian', brand = 'Pegassi', price = 25000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'sanchez', name = 'Sanchez Livery', brand = 'Maibatsu', price = 5300, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'sanchez2', name = 'Sanchez', brand = 'Maibatsu', price = 5300, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'sanctus', name = 'Sanctus', brand = 'LCC', price = 35000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'shotaro', name = 'Shotaro', brand = 'Nagasaki', price = 320000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'sovereign', name = 'Sovereign', brand = 'WMC', price = 8000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'stryder', name = 'Stryder', brand = 'Nagasaki', price = 50000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'thrust', name = 'Thrust', brand = 'Dinka', price = 22000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'vader', name = 'Vader', brand = 'Shitzu', price = 7200, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'vindicator', name = 'Vindicator', brand = 'Dinka', price = 19000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'vortex', name = 'Vortex', brand = 'Pegassi', price = 31000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'wolfsbane', name = 'Wolfsbane', brand = 'Western', price = 14000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'zombiea', name = 'Zombie Bobber', brand = 'Western', price = 28000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'zombieb', name = 'Zombie Chopper', brand = 'Western', price = 27000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'manchez2', name = 'Manchez Scout', brand = 'Maibatsu', price = 14000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'shinobi', name = 'Shinobi', brand = 'Nagasaki', price = 25000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'reever', name = 'Reever', brand = 'Western', price = 25000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'manchez3', name = 'Manchez Scout Classic', brand = 'Maibatsu', price = 15000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'powersurge', name = 'Powersurge', brand = 'Western', price = 7000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - { model = 'pizzaboy', name = 'Pizza Boy', brand = 'Pegassi', price = 50000, category = 'motorcycles', type = 'bike', shop = 'pdm' }, - --- Off-Road (9) - { model = 'bfinjection', name = 'Bf Injection', brand = 'Annis', price = 9000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'bifta', name = 'Bifta', brand = 'Annis', price = 15500, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'blazer', name = 'Blazer', brand = 'Annis', price = 7500, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'blazer2', name = 'Blazer Lifeguard', brand = 'Nagasaki', price = 7000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'blazer3', name = 'Blazer Hot Rod', brand = 'Nagasaki', price = 7000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'blazer4', name = 'Blazer Sport', brand = 'Annis', price = 9250, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'blazer5', name = 'Blazer Aqua', brand = 'Nagasaki', price = 40000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'brawler', name = 'Brawler', brand = 'Annis', price = 40000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'caracara', name = 'Caracara', brand = 'Vapid', price = 60000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'caracara2', name = 'Caracara 4x4', brand = 'Vapid', price = 80000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'dubsta3', name = 'Dubsta 6x6', brand = 'Annis', price = 34000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'dune', name = 'Dune Buggy', brand = 'Annis', price = 14000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'everon', name = 'Everon', brand = 'Karin', price = 60000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'freecrawler', name = 'Freecrawler', brand = 'Canis', price = 24000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'hellion', name = 'Hellion', brand = 'Annis', price = 38000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'kalahari', name = 'Kalahari', brand = 'Canis', price = 14000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'kamacho', name = 'Kamacho', brand = 'Canis', price = 50000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'mesa3', name = 'Mesa Merryweather', brand = 'Canis', price = 400000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'outlaw', name = 'Outlaw', brand = 'Nagasaki', price = 15000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'rancherxl', name = 'Rancher XL', brand = 'Declasse', price = 24000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'rebel2', name = 'Rebel', brand = 'Vapid', price = 20000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'riata', name = 'Riata', brand = 'Vapid', price = 380000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'sandking', name = 'Sandking XL', brand = 'Vapid', price = 25000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'sandking2', name = 'Sandking SWB', brand = 'Vapid', price = 38000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'trophytruck', name = 'Trophy Truck', brand = 'Vapid', price = 60000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'trophytruck2', name = 'Desert Raid', brand = 'Vapid', price = 80000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'vagrant', name = 'Vagrant', brand = 'Maxwell', price = 50000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'verus', name = 'Verus', brand = 'Dinka', price = 20000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'winky', name = 'Winky', brand = 'Vapid', price = 10000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'yosemite3', name = 'Yosemite Rancher', brand = 'Declasse', price = 425000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'mesa', name = 'Mesa', brand = 'Canis', price = 12000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'ratel', name = 'Ratel', brand = 'Vapid', price = 199000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'l35', name = 'Walton L35', brand = 'Declasse', price = 167000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'monstrociti', name = 'MonstroCiti', brand = 'Maibatsu', price = 48000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'draugur', name = 'Draugur', brand = 'Declasse', price = 99000, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'terminus', name = 'Terminus', brand = 'Canis', price = 187750, category = 'offroad', type = 'automobile', shop = 'pdm' }, - { model = 'yosemite4', name = 'Yosemite 1500', brand = 'Declasse', price = 187750, category = 'offroad', type = 'automobile', shop = 'pdm' }, - --- Industrial (10) - { model = 'guardian', name = 'Guardian', brand = 'Vapid', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, - { model = 'mixer2', name = 'Mixer II', brand = 'HVY', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, - { model = 'tiptruck2', name = 'Tipper II', brand = 'Brute', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, - { model = 'tiptruck', name = 'Tipper', brand = 'Brute', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, - { model = 'rubble', name = 'Rubble', brand = 'Jobuilt', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, - { model = 'mixer', name = 'Mixer', brand = 'HVY', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, - { model = 'flatbed', name = 'Flatbed Truck', brand = 'MTL', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, - { model = 'dump', name = 'Dump Truck', brand = 'HVY', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, - { model = 'bulldozer', name = 'Dozer', brand = 'HVY', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, - { model = 'handler', name = 'Dock Handler', brand = 'HVY', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, - { model = 'cutter', name = 'Cutter', brand = 'HVY', price = 30000, category = 'industrial', type = 'automobile', shop = 'truck' }, - --- Utility (11) - { model = 'slamtruck', name = 'Slam Truck', brand = 'Vapid', price = 100000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'caddy3', name = 'Caddy (Bunker)', brand = 'Nagasaki', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'caddy2', name = 'Caddy (Civilian)', brand = 'Nagasaki', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'caddy3', name = 'Caddy (Golf)', brand = 'Nagasaki', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'utillitruck', name = 'Utility Truck (Cherry Picker)', brand = 'Brute', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'utillitruck2', name = 'Utility Truck (Van)', brand = 'Brute', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'utillitruck3', name = 'Utility Truck (Contender)', brand = 'Vapid', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'tractor', name = 'Tractor', brand = 'Stanley', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'tractor2', name = 'Fieldmaster', brand = 'Stanley', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'tractor3', name = 'Fieldmaster', brand = 'Stanley', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'towtruck', name = 'Tow Truck (Large)', brand = 'Vapid', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'towtruck2', name = 'Tow Truck (Small)', brand = 'Vapid', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'scrap', name = 'Scrap Truck', brand = 'Vapid', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'sadler', name = 'Sadler', brand = 'Vapid', price = 20000, category = 'utility', type = 'automobile', shop = 'pdm' }, - { model = 'ripley', name = 'Ripley', brand = 'HVY', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'mower', name = 'Lawn Mower', brand = 'Jacksheepe', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'forklift', name = 'Forklift', brand = 'HVY', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'docktug', name = 'Docktug', brand = 'HVY', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'airtug', name = 'Airtug', brand = 'HVY', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'trailers5', name = 'Trailer (Christmas)', brand = 'Unknown', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - { model = 'tvtrailer2', name = 'Trailer (TV)', brand = 'Unknown', price = 30000, category = 'utility', type = 'automobile', shop = 'truck' }, - --- Vans (12) - { model = 'bison', name = 'Bison', brand = 'Bravado', price = 18000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'bobcatxl', name = 'Bobcat XL Open', brand = 'Vapid', price = 13500, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'burrito3', name = 'Burrito', brand = 'Declasse', price = 4000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'gburrito2', name = 'Burrito Custom', brand = 'Declasse', price = 11500, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'rumpo', name = 'Rumpo', brand = 'Bravado', price = 9000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'journey', name = 'Journey', brand = 'Zirconium', price = 6500, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'minivan', name = 'Minivan', brand = 'Vapid', price = 7000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'minivan2', name = 'Minivan Custom', brand = 'Vapid', price = 10000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'paradise', name = 'Paradise', brand = 'Bravado', price = 9000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'rumpo3', name = 'Rumpo Custom', brand = 'Bravado', price = 19500, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'speedo', name = 'Speedo', brand = 'Vapid', price = 10000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'speedo4', name = 'Speedo Custom', brand = 'Vapid', price = 15000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'surfer', name = 'Surfer', brand = 'BF', price = 9000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'youga3', name = 'Youga Classic 4x4', brand = 'Bravado', price = 15000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'youga', name = 'Youga', brand = 'Bravado', price = 8000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'youga2', name = 'Youga Classic', brand = 'Bravado', price = 14500, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'youga4', name = 'Youga Custom', brand = 'Bravado', price = 85000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'moonbeam', name = 'Moonbeam', brand = 'Declasse', price = 13000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'moonbeam2', name = 'Moonbeam Custom', brand = 'Declasse', price = 15000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'boxville', name = 'Boxville LSDWP', brand = 'Brute', price = 45000, category = 'vans', type = 'automobile', shop = 'truck' }, - { model = 'boxville2', name = 'Boxville Go Postal', brand = 'Brute', price = 45000, category = 'vans', type = 'automobile', shop = 'truck' }, - { model = 'boxville3', name = 'Boxville Humane Labs', brand = 'Brute', price = 45000, category = 'vans', type = 'automobile', shop = 'truck' }, - { model = 'boxville4', name = 'Boxville Post OP', brand = 'Brute', price = 45000, category = 'vans', type = 'automobile', shop = 'truck' }, - { model = 'boxville5', name = 'Armored Boxville', brand = 'Brute', price = 45000, category = 'vans', type = 'automobile', shop = 'none' }, - { model = 'pony', name = 'Pony', brand = 'Brute', price = 45000, category = 'vans', type = 'automobile', shop = 'truck' }, - { model = 'pony2', name = 'Pony (Smoke on the water)', brand = 'Brute', price = 45000, category = 'vans', type = 'automobile', shop = 'truck' }, - { model = 'journey2', name = 'Journey II', brand = 'Zirconium', price = 7000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'surfer3', name = 'Surfer Custom', brand = 'BF', price = 15000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'speedo5', name = 'Speedo Custom', brand = 'Vapid', price = 238000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'mule2', name = 'Mule', brand = 'Maibatsu', price = 40000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'mule3', name = 'Mule', brand = 'Maibatsu', price = 40000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'taco', name = 'Taco Truck', brand = 'Brute', price = 45000, category = 'vans', type = 'automobile', shop = 'pdm' }, - { model = 'boxville6', name = 'Boxville (LSDS)', brand = 'Brute', price = 47500, category = 'vans', type = 'automobile', shop = 'pdm' }, - --- Cycles (13) - { model = 'bmx', name = 'BMX', brand = 'Bike', price = 160, category = 'cycles', type = 'bike', shop = 'pdm' }, - { model = 'cruiser', name = 'Cruiser', brand = 'Bike', price = 510, category = 'cycles', type = 'bike', shop = 'pdm' }, - { model = 'fixter', name = 'Fixter', brand = 'Bike', price = 225, category = 'cycles', type = 'bike', shop = 'pdm' }, - { model = 'scorcher', name = 'Scorcher', brand = 'Bike', price = 280, category = 'cycles', type = 'bike', shop = 'pdm' }, - { model = 'tribike', name = 'Whippet Race Bike', brand = 'Bike', price = 500, category = 'cycles', type = 'bike', shop = 'pdm' }, - { model = 'tribike2', name = 'Endurex Race Bike', brand = 'Bike', price = 700, category = 'cycles', type = 'bike', shop = 'pdm' }, - { model = 'tribike3', name = 'Tri-Cycles Race Bike', brand = 'Bike', price = 520, category = 'cycles', type = 'bike', shop = 'pdm' }, - { model = 'inductor', name = 'Inductor', brand = 'Coil', price = 5000, category = 'cycles', type = 'bike', shop = 'pdm' }, - { model = 'inductor2', name = 'Junk Energy Inductor', brand = 'Coil', price = 5000, category = 'cycles', type = 'bike', shop = 'pdm' }, - --- Boats (14) - { model = 'avisa', name = 'Avisa', brand = 'Kraken Subs', price = 40000, category = 'boats', type = 'boat', shop = 'none' }, - { model = 'patrolboat', name = 'Kurtz 31 Patrol Boat', brand = 'Unknown', price = 40000, category = 'boats', type = 'boat', shop = 'none' }, - { model = 'longfin', name = 'Longfin', brand = 'Shitzu', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, - { model = 'tug', name = 'Tug', brand = 'Buckingham', price = 40000, category = 'boats', type = 'boat', shop = 'none' }, - { model = 'toro', name = 'Toro', brand = 'Lampadati', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, - { model = 'toro2', name = 'Toro Yacht', brand = 'Lampadati', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, - { model = 'submersible2', name = 'Kraken', brand = 'Kraken Subs', price = 40000, category = 'boats', type = 'boat', shop = 'none' }, - { model = 'speeder', name = 'Speeder', brand = 'Pegassi', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, - { model = 'speeder2', name = 'Speeder Yacht', brand = 'Pegassi', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, - { model = 'tropic', name = 'Tropic', brand = 'Shitzu', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, - { model = 'tropic2', name = 'Tropic Yacht', brand = 'Shitzu', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, - { model = 'suntrap', name = 'Suntrap', brand = 'Shitzu', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, - { model = 'submersible', name = 'Submersible', brand = 'Kraken Subs', price = 40000, category = 'boats', type = 'boat', shop = 'none' }, - { model = 'squalo', name = 'Squalo', brand = 'Shitzu', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, - { model = 'seashark', name = 'Seashark', brand = 'Speedophile', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, - { model = 'seashark3', name = 'Seashark Yacht', brand = 'Speedophile', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, - { model = 'marquis', name = 'Marquis', brand = 'Dinka', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, - { model = 'jetmax', name = 'Jetmax', brand = 'Shitzu', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, - { model = 'dinghy', name = 'Dinghy 2-Seater', brand = 'Nagasaki', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, - { model = 'dinghy2', name = 'Dinghy 4-Seater', brand = 'Nagasaki', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, - { model = 'dinghy3', name = 'Dinghy (Heist)', brand = 'Nagasaki', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, - { model = 'dinghy4', name = 'Dinghy Yacht', brand = 'Nagasaki', price = 40000, category = 'boats', type = 'boat', shop = 'boats' }, - --- Helicopters (15) - { model = 'conada2', name = 'Weaponized Conada', brand = 'Buckingham', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, - { model = 'conada', name = 'Conada', brand = 'Buckingham', price = 115000, category = 'helicopters', type = 'heli', shop = 'air' }, - { model = 'seasparrow2', name = 'Sparrow', brand = 'Unknown', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, - { model = 'annihilator2', name = 'Annihilator Stealth', brand = 'Western Company', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, - { model = 'seasparrow', name = 'Sea Sparrow', brand = 'Unknown', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, - { model = 'akula', name = 'Akula', brand = 'Unknown', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, - { model = 'hunter', name = 'FH-1 Hunter', brand = 'Unknown', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, - { model = 'havok', name = 'Havok', brand = 'Nagasaki', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, - { model = 'volatus', name = 'Volatus', brand = 'Buckingham', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, - { model = 'supervolito2', name = 'SuperVolito Carbon', brand = 'Buckingham', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, - { model = 'supervolito', name = 'SuperVolito', brand = 'Buckingham', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, - { model = 'swift2', name = 'Swift Deluxe', brand = 'Buckingham', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, - { model = 'valkyrie', name = 'Valkyrie', brand = 'Buckingham', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, - { model = 'savage', name = 'Savage', brand = 'Unknown', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, - { model = 'swift', name = 'Swift', brand = 'Buckingham', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, - { model = 'annihilator', name = 'Annihilator', brand = 'Western Company', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, - { model = 'cargobob2', name = 'Cargobob Jetsam', brand = 'Western Company', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, - { model = 'skylift', name = 'Skylift', brand = 'HVY', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, - { model = 'maverick', name = 'Maverick', brand = 'Buckingham', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, - { model = 'frogger', name = 'Frogger', brand = 'Maibatsu', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, - { model = 'frogger2', name = 'Frogger', brand = 'Maibatsu', price = 52000, category = 'helicopters', type = 'heli', shop = 'air' }, - { model = 'cargobob', name = 'Cargobob', brand = 'Western Company', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, - { model = 'cargobob3', name = 'Cargobob', brand = 'Western Company', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, - { model = 'seasparrow3', name = 'Sparrow (Prop)', brand = 'Unknown', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, - { model = 'buzzard', name = 'Buzzard Attack Chopper', brand = 'Nagasaki', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, - { model = 'buzzard2', name = 'Buzzard', brand = 'Nagasaki', price = 52000, category = 'helicopters', type = 'heli', shop = 'none' }, - --- Planes (16) - { model = 'streamer216', name = 'Streamer216', brand = 'Mammoth', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'raiju', name = 'F-160 Raiju', brand = 'Mammoth', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'alkonost', name = 'RO-86 Alkonost', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'strikeforce', name = 'B-11 Strikeforce', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'blimp3', name = 'Blimp', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'avenger', name = 'Avenger', brand = 'Mammoth', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'avenger2', name = 'Avenger', brand = 'Mammoth', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'volatol', name = 'Volatol', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'nokota', name = 'P-45 Nokota', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'seabreeze', name = 'Seabreeze', brand = 'Western Company', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, - { model = 'pyro', name = 'Pyro', brand = 'Buckingham', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'mogul', name = 'Mogul', brand = 'Mammoth', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'howard', name = 'Howard NX-25', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'bombushka', name = 'RM-10 Bombushka', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'molotok', name = 'V-65 Molotok', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'microlight', name = 'Ultralight', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, - { model = 'tula', name = 'Tula', brand = 'Mammoth', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'rogue', name = 'Rogue', brand = 'Western Company', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'starling', name = 'LF-22 Starling', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'alphaz1', name = 'Alpha-Z1', brand = 'Buckingham', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'nimbus', name = 'Nimbus', brand = 'Buckingham', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, - { model = 'luxor2', name = 'Luxor Deluxe', brand = 'Buckingham', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, - { model = 'velum2', name = 'Velum 5-seater', brand = 'JoBuilt', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, - { model = 'hydra', name = 'Hydra', brand = 'Mammoth', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'blimp2', name = 'Xero Blimp', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'dodo', name = 'Dodo', brand = 'Mammoth', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, - { model = 'miljet', name = 'Miljet', brand = 'Buckingham', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, - { model = 'besra', name = 'Besra', brand = 'Western Company', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'vestra', name = 'Vestra', brand = 'Buckingham', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, - { model = 'cargoplane', name = 'Cargo Plane', brand = 'JoBuilt', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, - { model = 'velum', name = 'Velum', brand = 'JoBuilt', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, - { model = 'titan', name = 'Titan', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'shamal', name = 'Shamal', brand = 'Buckingham', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, - { model = 'lazer', name = 'P-996 Lazer', brand = 'JoBuilt', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'mammatus', name = 'Mammatus', brand = 'JoBuilt', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, - { model = 'stunt', name = 'Mallard', brand = 'Western Company', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, - { model = 'luxor', name = 'Luxor', brand = 'Buckingham', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, - { model = 'jet', name = 'Jet', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - { model = 'duster', name = 'Duster', brand = 'Western Company', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, - { model = 'cuban800', name = 'Cuban 800', brand = 'Western Company', price = 45000, category = 'planes', type = 'plane', shop = 'air' }, - { model = 'blimp', name = 'Atomic Blimp', brand = 'Unknown', price = 45000, category = 'planes', type = 'plane', shop = 'none' }, - --- Service (17) - { model = 'brickade', name = 'Brickade', brand = 'MTL', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, - { model = 'brickade2', name = 'Brickade 6x6', brand = 'MTL', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, - { model = 'pbus2', name = 'Festival Bus', brand = 'Unknown', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, - { model = 'wastelander', name = 'Wastelander', brand = 'MTL', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, - { model = 'rallytruck', name = 'Dune', brand = 'MTL', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, - { model = 'metrotrain', name = 'Metro Train', brand = 'Unknown', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, - { model = 'freight', name = 'Freight Train', brand = 'Unknown', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, - { model = 'cablecar', name = 'Cable Car', brand = 'Unknown', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, - { model = 'trash', name = 'Trashmaster', brand = 'JoBuilt', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, - { model = 'trash2', name = 'Trashmaster', brand = 'JoBuilt', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, - { model = 'tourbus', name = 'Tour Bus', brand = 'Brute', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, - { model = 'taxi', name = 'Taxi', brand = 'Vapid', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, - { model = 'rentalbus', name = 'Rental Shuttle Bus', brand = 'Brute', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, - { model = 'coach', name = 'Dashound', brand = 'Brute', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, - { model = 'bus', name = 'Bus', brand = 'Brute', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, - { model = 'airbus', name = 'Airport Bus', brand = 'Brute', price = 100000, category = 'service', type = 'automobile', shop = 'none' }, - --- Emergency (18) - { model = 'riot', name = 'Police Riot', brand = 'Brute', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'riot2', name = 'RCV', brand = 'Unknown', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'pbus', name = 'Police Prison Bus', brand = 'Vapid', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'police', name = 'Police Cruiser', brand = 'Vapid', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'police2', name = 'Police Buffalo', brand = 'Vapid', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'police3', name = 'Police Interceptor', brand = 'Vapid', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'police4', name = 'Unmarked Cruiser', brand = 'Vapid', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'sheriff', name = 'Sheriff SUV', brand = 'Declasse', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'sheriff2', name = 'Sheriff Cruiser', brand = 'Vapid', price = 100000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'policeold1', name = 'Police Rancher', brand = 'Declasse', price = 110000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'policeold2', name = 'Police Roadcruiser', brand = 'Albany', price = 110000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'policet', name = 'Police Transporter', brand = 'Vapid', price = 110000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'policeb', name = 'Police Bike', brand = 'Vapid', price = 110000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'polmav', name = 'Police Maverick', brand = 'Buckingham', price = 110000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'ambulance', name = 'Ambulance', brand = 'Brute', price = 110000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'firetruk', name = 'Fire Truck', brand = 'MTL', price = 110000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'lguard', name = 'Lifeguard', brand = 'Declasse', price = 110000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'seashark2', name = 'Seashark Lifeguard', brand = 'Speedophile', price = 40000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'pranger', name = 'Park Ranger', brand = 'Declasse', price = 40000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'fbi', name = 'FIB Buffalo', brand = 'Bravado', price = 40000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'fbi2', name = 'FIB Granger', brand = 'Declasse', price = 40000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'predator', name = 'Police Predator', brand = 'Unknown', price = 40000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'polgauntlet', name = 'Gauntlet Interceptor', brand = 'Bravado', price = 40000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'police5', name = 'Stanier LE Cruiser', brand = 'Vapid', price = 40000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'polimpaler5', name = 'Impaler SZ Cruiser', brand = 'Declasse', price = 80000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'polimpaler6', name = 'Impaler LX Cruiser', brand = 'Declasse', price = 90000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'poldominator10', name = 'Dominator FX Interceptor', brand = 'Vapid', price = 230000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'policet3', name = 'Burrito (Bail Enforcement)', brand = 'Declasse', price = 60000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'polgreenwood', name = 'Greenwood Cruiser', brand = 'Bravado', price = 80000, category = 'emergency', type = 'automobile', shop = 'none' }, - { model = 'poldorado', name = 'Dorado Cruiser', brand = 'Vapid', price = 80000, category = 'emergency', type = 'automobile', shop = 'none' }, - --- Military (19) - { model = 'vetir', name = 'Vetir', brand = 'Unknown', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - { model = 'kosatka', name = 'Kosatka', brand = 'Rune', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - { model = 'minitank', name = 'RC Tank', brand = 'Unknown', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - { model = 'scarab', name = 'Scarab', brand = 'HVY', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - { model = 'terbyte', name = 'Terrorbyte', brand = 'Benefactor', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - { model = 'thruster', name = 'Thruster', brand = 'Mammoth', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - { model = 'khanjali', name = 'TM-02 Khanjali Tank', brand = 'Unknown', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - { model = 'chernobog', name = 'Chernobog', brand = 'HVY', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - { model = 'barrage', name = 'Barrage', brand = 'HVY', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - { model = 'trailerlarge', name = 'Mobile Operations Center', brand = 'Unknown', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - { model = 'halftrack', name = 'Half-track', brand = 'Bravado', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - { model = 'apc', name = 'APC Tank', brand = 'HVY', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - { model = 'trailersmall2', name = 'Anti-Aircraft Trailer', brand = 'Vom Feuer', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - { model = 'rhino', name = 'Rhino Tank', brand = 'Unknown', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - { model = 'crusader', name = 'Crusader', brand = 'Canis', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - { model = 'barracks', name = 'Barracks', brand = 'HVY', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - { model = 'barracks2', name = 'Barracks Semi', brand = 'HVY', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - { model = 'barracks3', name = 'Barracks', brand = 'HVY', price = 100000, category = 'military', type = 'automobile', shop = 'none' }, - --- Commercial (20) - { model = 'cerberus', name = 'Apocalypse Cerberus', brand = 'MTL', price = 100000, category = 'commercial', type = 'automobile', shop = 'none' }, - { model = 'pounder2', name = 'Pounder Custom', brand = 'MTL', price = 55000, category = 'commercial', type = 'automobile', shop = 'truck' }, - { model = 'mule4', name = 'Mule Custom', brand = 'Maibatsu', price = 40000, category = 'commercial', type = 'automobile', shop = 'truck' }, - { model = 'phantom3', name = 'Phantom Custom', brand = 'Jobuilt', price = 110000, category = 'commercial', type = 'automobile', shop = 'truck' }, - { model = 'hauler2', name = 'Hauler Custom', brand = 'Jobuilt', price = 100000, category = 'commercial', type = 'automobile', shop = 'truck' }, - { model = 'phantom2', name = 'Phantom Wedge', brand = 'Jobuilt', price = 100000, category = 'commercial', type = 'automobile', shop = 'none' }, - { model = 'mule5', name = 'Mule (Heist)', brand = 'Maibatsu', price = 40000, category = 'commercial', type = 'automobile', shop = 'truck' }, - { model = 'stockade', name = 'Stockade', brand = 'Brute', price = 100000, category = 'commercial', type = 'automobile', shop = 'truck' }, - { model = 'pounder', name = 'Pounder', brand = 'MTL', price = 55000, category = 'commercial', type = 'automobile', shop = 'truck' }, - { model = 'phantom', name = 'Phantom', brand = 'Jobuilt', price = 100000, category = 'commercial', type = 'automobile', shop = 'truck' }, - { model = 'packer', name = 'Packer', brand = 'MTL', price = 100000, category = 'commercial', type = 'automobile', shop = 'truck' }, - { model = 'mule', name = 'Mule', brand = 'Maibatsu', price = 40000, category = 'commercial', type = 'automobile', shop = 'truck' }, - { model = 'hauler', name = 'Hauler', brand = 'Jobuilt', price = 100000, category = 'commercial', type = 'automobile', shop = 'truck' }, - { model = 'biff', name = 'Biff', brand = 'Brute', price = 100000, category = 'commercial', type = 'automobile', shop = 'truck' }, - { model = 'benson', name = 'Benson', brand = 'Vapid', price = 55000, category = 'commercial', type = 'automobile', shop = 'truck' }, - { model = 'benson2', name = 'Benson (Cluckin Bell)', brand = 'Vapid', price = 55000, category = 'commercial', type = 'automobile', shop = 'truck' }, - { model = 'phantom4', name = 'Phantom (Christmas)', brand = 'Vapid', price = 100000, category = 'commercial', type = 'automobile', shop = 'truck' }, - --- Trains (21) - --- Open Wheel (22) - { model = 'openwheel2', name = 'DR1', brand = 'Declasse', price = 100000, category = 'openwheel', type = 'automobile', shop = 'none' }, - { model = 'openwheel1', name = 'BR8', brand = 'Benefactor', price = 100000, category = 'openwheel', type = 'automobile', shop = 'none' }, - { model = 'formula2', name = 'R88', brand = 'Ocelot', price = 100000, category = 'openwheel', type = 'automobile', shop = 'none' }, - { model = 'formula', name = 'PR4', brand = 'Progen', price = 100000, category = 'openwheel', type = 'automobile', shop = 'none' }, -} - -QBShared.VehicleHashes = QBShared.VehicleHashes or {} -for i = 1, #Vehicles do - local hash = joaat(Vehicles[i].model) - QBShared.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, - hash = hash, - type = Vehicles[i].type, - shop = Vehicles[i].shop - } - QBShared.VehicleHashes[hash] = QBShared.Vehicles[Vehicles[i].model] -end diff --git a/shared/weapons.lua b/shared/weapons.lua deleted file mode 100644 index 823dda8..0000000 --- a/shared/weapons.lua +++ /dev/null @@ -1,151 +0,0 @@ -QBShared = QBShared or {} -QBShared.Weapons = { - -- // WEAPONS - -- Melee - [`weapon_unarmed`] = { name = 'weapon_unarmed', label = 'Fists', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, - [`weapon_dagger`] = { name = 'weapon_dagger', label = 'Dagger', weapontype = 'Melee', ammotype = nil, damagereason = 'Knifed / Stabbed / Eviscerated' }, - [`weapon_bat`] = { name = 'weapon_bat', label = 'Bat', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, - [`weapon_bottle`] = { name = 'weapon_bottle', label = 'Broken Bottle', weapontype = 'Melee', ammotype = nil, damagereason = 'Knifed / Stabbed / Eviscerated' }, - [`weapon_crowbar`] = { name = 'weapon_crowbar', label = 'Crowbar', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, - [`weapon_flashlight`] = { name = 'weapon_flashlight', label = 'Flashlight', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, - [`weapon_golfclub`] = { name = 'weapon_golfclub', label = 'Golfclub', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, - [`weapon_hammer`] = { name = 'weapon_hammer', label = 'Hammer', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, - [`weapon_hatchet`] = { name = 'weapon_hatchet', label = 'Hatchet', weapontype = 'Melee', ammotype = nil, damagereason = 'Knifed / Stabbed / Eviscerated' }, - [`weapon_knuckle`] = { name = 'weapon_knuckle', label = 'Knuckle', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, - [`weapon_knife`] = { name = 'weapon_knife', label = 'Knife', weapontype = 'Melee', ammotype = nil, damagereason = 'Knifed / Stabbed / Eviscerated' }, - [`weapon_machete`] = { name = 'weapon_machete', label = 'Machete', weapontype = 'Melee', ammotype = nil, damagereason = 'Knifed / Stabbed / Eviscerated' }, - [`weapon_switchblade`] = { name = 'weapon_switchblade', label = 'Switchblade', weapontype = 'Melee', ammotype = nil, damagereason = 'Knifed / Stabbed / Eviscerated' }, - [`weapon_nightstick`] = { name = 'weapon_nightstick', label = 'Nightstick', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, - [`weapon_wrench`] = { name = 'weapon_wrench', label = 'Wrench', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, - [`weapon_battleaxe`] = { name = 'weapon_battleaxe', label = 'Battle Axe', weapontype = 'Melee', ammotype = nil, damagereason = 'Knifed / Stabbed / Eviscerated' }, - [`weapon_poolcue`] = { name = 'weapon_poolcue', label = 'Poolcue', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, - [`weapon_briefcase`] = { name = 'weapon_briefcase', label = 'Briefcase', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, - [`weapon_briefcase_02`] = { name = 'weapon_briefcase_02', label = 'Briefcase', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, - [`weapon_garbagebag`] = { name = 'weapon_garbagebag', label = 'Garbage Bag', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, - [`weapon_handcuffs`] = { name = 'weapon_handcuffs', label = 'Handcuffs', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, - [`weapon_bread`] = { name = 'weapon_bread', label = 'Baquette', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered' }, - [`weapon_stone_hatchet`] = { name = 'weapon_stone_hatchet', label = 'Stone Hatchet', weapontype = 'Melee', ammotype = nil, damagereason = 'Knifed / Stabbed / Eviscerated' }, - [`weapon_candycane`] = { name = 'weapon_candycane', label = 'Candy Cane', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee Killed / Whacked / Executed / Beat down / Musrdered / Battered / Candy Caned' }, - - -- Handguns - [`weapon_pistol`] = { name = 'weapon_pistol', label = 'Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, - [`weapon_pistol_mk2`] = { name = 'weapon_pistol_mk2', label = 'Pistol Mk2', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, - [`weapon_combatpistol`] = { name = 'weapon_combatpistol', label = 'Combat Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, - [`weapon_appistol`] = { name = 'weapon_appistol', label = 'AP Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, - [`weapon_stungun`] = { name = 'weapon_stungun', label = 'Taser', weapontype = 'Pistol', ammotype = 'AMMO_STUNGUN', damagereason = 'Died' }, - [`weapon_pistol50`] = { name = 'weapon_pistol50', label = 'Pistol .50 Cal', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, - [`weapon_snspistol`] = { name = 'weapon_snspistol', label = 'SNS Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, - [`weapon_snspistol_mk2`] = { name = 'weapon_snspistol_mk2', label = 'SNS Pistol MK2', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, - [`weapon_heavypistol`] = { name = 'weapon_heavypistol', label = 'Heavy Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, - [`weapon_vintagepistol`] = { name = 'weapon_vintagepistol', label = 'Vintage Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, - [`weapon_flaregun`] = { name = 'weapon_flaregun', label = 'Flare Gun', weapontype = 'Pistol', ammotype = 'AMMO_FLARE', damagereason = 'Died' }, - [`weapon_marksmanpistol`] = { name = 'weapon_marksmanpistol', label = 'Marksman Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, - [`weapon_revolver`] = { name = 'weapon_revolver', label = 'Revolver', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, - [`weapon_revolver_mk2`] = { name = 'weapon_revolver_mk2', label = 'Revolver MK2', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, - [`weapon_doubleaction`] = { name = 'weapon_doubleaction', label = 'Double Action Revolver', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, - [`weapon_raypistol`] = { name = 'weapon_raypistol', label = 'Ray Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, - [`weapon_ceramicpistol`] = { name = 'weapon_ceramicpistol', label = 'Ceramic Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, - [`weapon_navyrevolver`] = { name = 'weapon_navyrevolver', label = 'Navy Revolver', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, - [`weapon_gadgetpistol`] = { name = 'weapon_gadgetpistol', label = 'Gadget Pistol', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plugged / Bust a cap in' }, - [`weapon_stungun_mp`] = { name = 'weapon_stungun_mp', label = 'Taser', weapontype = 'Pistol', ammotype = 'AMMO_STUNGUN', damagereason = 'Died' }, - [`weapon_pistolxm3`] = { name = 'weapon_pistolxm3', label = 'Pistol XM3', weapontype = 'Pistol', ammotype = 'AMMO_PISTOL', damagereason = 'Pistoled / Blasted / Plaugged / Bust a cap in' }, - - -- Submachine Guns - [`weapon_microsmg`] = { name = 'weapon_microsmg', label = 'Micro SMG', weapontype = 'Submachine Gun', ammotype = 'AMMO_SMG', damagereason = 'Riddled / Drilled / Finished / Submachine Gunned' }, - [`weapon_smg`] = { name = 'weapon_smg', label = 'SMG', weapontype = 'Submachine Gun', ammotype = 'AMMO_SMG', damagereason = 'Riddled / Drilled / Finished / Submachine Gunned' }, - [`weapon_smg_mk2`] = { name = 'weapon_smg_mk2', label = 'SMG MK2', weapontype = 'Submachine Gun', ammotype = 'AMMO_SMG', damagereason = 'Riddled / Drilled / Finished / Submachine Gunned' }, - [`weapon_assaultsmg`] = { name = 'weapon_assaultsmg', label = 'Assault SMG', weapontype = 'Submachine Gun', ammotype = 'AMMO_SMG', damagereason = 'Riddled / Drilled / Finished / Submachine Gunned' }, - [`weapon_combatpdw`] = { name = 'weapon_combatpdw', label = 'Combat PDW', weapontype = 'Submachine Gun', ammotype = 'AMMO_SMG', damagereason = 'Riddled / Drilled / Finished / Submachine Gunned' }, - [`weapon_machinepistol`] = { name = 'weapon_machinepistol', label = 'Tec-9', weapontype = 'Submachine Gun', ammotype = 'AMMO_PISTOL', damagereason = 'Riddled / Drilled / Finished / Submachine Gunned' }, - [`weapon_minismg`] = { name = 'weapon_minismg', label = 'Mini SMG', weapontype = 'Submachine Gun', ammotype = 'AMMO_SMG', damagereason = 'Riddled / Drilled / Finished / Submachine Gunned' }, - [`weapon_raycarbine`] = { name = 'weapon_raycarbine', label = 'Raycarbine', weapontype = 'Submachine Gun', ammotype = 'AMMO_SMG', damagereason = 'Riddled / Drilled / Finished / Submachine Gunned' }, - - -- Shotguns - [`weapon_pumpshotgun`] = { name = 'weapon_pumpshotgun', label = 'Pump Shotgun', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, - [`weapon_pumpshotgun_mk2`] = { name = 'weapon_pumpshotgun_mk2', label = 'Pump Shotgun MK2', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, - [`weapon_sawnoffshotgun`] = { name = 'weapon_sawnoffshotgun', label = 'Sawn-off Shotgun', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, - [`weapon_assaultshotgun`] = { name = 'weapon_assaultshotgun', label = 'Assault Shotgun', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, - [`weapon_bullpupshotgun`] = { name = 'weapon_bullpupshotgun', label = 'Bullpup Shotgun', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, - [`weapon_musket`] = { name = 'weapon_musket', label = 'Musket', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, - [`weapon_heavyshotgun`] = { name = 'weapon_heavyshotgun', label = 'Heavy Shotgun', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, - [`weapon_dbshotgun`] = { name = 'weapon_dbshotgun', label = 'Double-barrel Shotgun', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, - [`weapon_autoshotgun`] = { name = 'weapon_autoshotgun', label = 'Auto Shotgun', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, - [`weapon_combatshotgun`] = { name = 'weapon_combatshotgun', label = 'Combat Shotgun', weapontype = 'Shotgun', ammotype = 'AMMO_SHOTGUN', damagereason = 'Devastated / Pulverized / Shotgunned' }, - - -- Assault Rifles - [`weapon_assaultrifle`] = { name = 'weapon_assaultrifle', label = 'Assault Rifle', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, - [`weapon_assaultrifle_mk2`] = { name = 'weapon_assaultrifle_mk2', label = 'Assault Rifle MK2', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, - [`weapon_carbinerifle`] = { name = 'weapon_carbinerifle', label = 'Carbine Rifle', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, - [`weapon_carbinerifle_mk2`] = { name = 'weapon_carbinerifle_mk2', label = 'Carbine Rifle MK2', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, - [`weapon_advancedrifle`] = { name = 'weapon_advancedrifle', label = 'Advanced Rifle', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, - [`weapon_specialcarbine`] = { name = 'weapon_specialcarbine', label = 'Special Carbine', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, - [`weapon_specialcarbine_mk2`] = { name = 'weapon_specialcarbine_mk2', label = 'Specialcarbine MK2', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, - [`weapon_bullpuprifle`] = { name = 'weapon_bullpuprifle', label = 'Bullpup Rifle', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, - [`weapon_bullpuprifle_mk2`] = { name = 'weapon_bullpuprifle_mk2', label = 'Bull Puprifle MK2', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, - [`weapon_compactrifle`] = { name = 'weapon_compactrifle', label = 'Compact Rifle', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, - [`weapon_militaryrifle`] = { name = 'weapon_militaryrifle', label = 'Military Rifle', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, - [`weapon_heavyrifle`] = { name = 'weapon_heavyrifle', label = 'Heavy Rifle', weapontype = 'Assault Rifle', ammotype = 'AMMO_RIFLE', damagereason = 'Ended / Rifled / Shot down / Floored' }, - - -- Light Machine Guns - [`weapon_mg`] = { name = 'weapon_mg', label = 'Machinegun', weapontype = 'Light Machine Gun', ammotype = 'AMMO_MG', damagereason = 'Machine gunned / Sprayed / Ruined' }, - [`weapon_combatmg`] = { name = 'weapon_combatmg', label = 'Combat MG', weapontype = 'Light Machine Gun', ammotype = 'AMMO_MG', damagereason = 'Machine gunned / Sprayed / Ruined' }, - [`weapon_combatmg_mk2`] = { name = 'weapon_combatmg_mk2', label = 'Combat MG MK2', weapontype = 'Light Machine Gun', ammotype = 'AMMO_MG', damagereason = 'Machine gunned / Sprayed / Ruined' }, - [`weapon_gusenberg`] = { name = 'weapon_gusenberg', label = 'Thompson SMG', weapontype = 'Light Machine Gun', ammotype = 'AMMO_MG', damagereason = 'Machine gunned / Sprayed / Ruined' }, - - -- Sniper Rifles - [`weapon_sniperrifle`] = { name = 'weapon_sniperrifle', label = 'Sniper Rifle', weapontype = 'Sniper Rifle', ammotype = 'AMMO_SNIPER', damagereason = 'Sniped / Picked off / Scoped' }, - [`weapon_heavysniper`] = { name = 'weapon_heavysniper', label = 'Heavy Sniper', weapontype = 'Sniper Rifle', ammotype = 'AMMO_SNIPER', damagereason = 'Sniped / Picked off / Scoped' }, - [`weapon_heavysniper_mk2`] = { name = 'weapon_heavysniper_mk2', label = 'Heavysniper MK2', weapontype = 'Sniper Rifle', ammotype = 'AMMO_SNIPER', damagereason = 'Sniped / Picked off / Scoped' }, - [`weapon_marksmanrifle`] = { name = 'weapon_marksmanrifle', label = 'Marksman Rifle', weapontype = 'Sniper Rifle', ammotype = 'AMMO_SNIPER', damagereason = 'Sniped / Picked off / Scoped' }, - [`weapon_marksmanrifle_mk2`] = { name = 'weapon_marksmanrifle_mk2', label = 'Marksman Rifle MK2', weapontype = 'Sniper Rifle', ammotype = 'AMMO_SNIPER', damagereason = 'Sniped / Picked off / Scoped' }, - [`weapon_remotesniper`] = { name = 'weapon_remotesniper', label = 'Remote Sniper', weapontype = 'Sniper Rifle', ammotype = 'AMMO_SNIPER_REMOTE', damagereason = 'Sniped / Picked off / Scoped' }, - - -- Heavy Weapons - [`weapon_rpg`] = { name = 'weapon_rpg', label = 'RPG', weapontype = 'Heavy Weapons', ammotype = 'AMMO_RPG', damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, - [`weapon_grenadelauncher`] = { name = 'weapon_grenadelauncher', label = 'Grenade Launcher', weapontype = 'Heavy Weapons', ammotype = 'AMMO_GRENADELAUNCHER', damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, - [`weapon_grenadelauncher_smoke`] = { name = 'weapon_grenadelauncher_smoke', label = 'Smoke Grenade Launcher', weapontype = 'Heavy Weapons', ammotype = 'AMMO_GRENADELAUNCHER', damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, - [`weapon_minigun`] = { name = 'weapon_minigun', label = 'Minigun', weapontype = 'Heavy Weapons', ammotype = 'AMMO_MINIGUN', damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, - [`weapon_firework`] = { name = 'weapon_firework', label = 'Firework Launcher', weapontype = 'Heavy Weapons', ammotype = nil, damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, - [`weapon_railgun`] = { name = 'weapon_railgun', label = 'Railgun', weapontype = 'Heavy Weapons', ammotype = nil, damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, - [`weapon_railgunxm3`] = { name = 'weapon_railgunxm3', label = 'Railgun XM3', weapontype = 'Heavy Weapons', ammotype = nil, damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, - [`weapon_hominglauncher`] = { name = 'weapon_hominglauncher', label = 'Homing Launcher', weapontype = 'Heavy Weapons', ammotype = 'AMMO_STINGER', damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, - [`weapon_compactlauncher`] = { name = 'weapon_compactlauncher', label = 'Compact Launcher', weapontype = 'Heavy Weapons', ammotype = nil, damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, - [`weapon_rayminigun`] = { name = 'weapon_rayminigun', label = 'Ray Minigun', weapontype = 'Heavy Weapons', ammotype = 'AMMO_MINIGUN', damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, - [`weapon_emplauncher`] = { name = 'weapon_emplauncher', label = 'EMP Launcher', weapontype = 'Heavy Weapons', ammotype = 'AMMO_EMPLAUNCHER', damagereason = 'Died' }, - - -- Throwables - [`weapon_grenade`] = { name = 'weapon_grenade', label = 'Grenade', weapontype = 'Throwable', ammotype = nil, damagereason = 'Bombed / Exploded / Detonated / Blew up' }, - [`weapon_bzgas`] = { name = 'weapon_bzgas', label = 'BZ Gas', weapontype = 'Throwable', ammotype = nil, damagereason = 'Died' }, - [`weapon_molotov`] = { name = 'weapon_molotov', label = 'Molotov', weapontype = 'Throwable', ammotype = nil, damagereason = 'Torched / Flambeed / Barbecued' }, - [`weapon_stickybomb`] = { name = 'weapon_stickybomb', label = 'C4', weapontype = 'Throwable', ammotype = nil, damagereason = 'Bombed / Exploded / Detonated / Blew up' }, - [`weapon_proxmine`] = { name = 'weapon_proxmine', label = 'Proxmine Grenade', weapontype = 'Throwable', ammotype = nil, damagereason = 'Bombed / Exploded / Detonated / Blew up' }, - [`weapon_snowball`] = { name = 'weapon_snowball', label = 'Snowball', weapontype = 'Throwable', ammotype = nil, damagereason = 'Died' }, - [`weapon_pipebomb`] = { name = 'weapon_pipebomb', label = 'Pipe Bomb', weapontype = 'Throwable', ammotype = nil, damagereason = 'Bombed / Exploded / Detonated / Blew up' }, - [`weapon_ball`] = { name = 'weapon_ball', label = 'Ball', weapontype = 'Throwable', ammotype = 'AMMO_BALL', damagereason = 'Died' }, - [`weapon_smokegrenade`] = { name = 'weapon_smokegrenade', label = 'Smoke Grenade', weapontype = 'Throwable', ammotype = nil, damagereason = 'Died' }, - [`weapon_flare`] = { name = 'weapon_flare', label = 'Flare pistol', weapontype = 'Throwable', ammotype = 'AMMO_FLARE', damagereason = 'Died' }, - - -- Miscellaneous - [`weapon_petrolcan`] = { name = 'weapon_petrolcan', label = 'Petrol Can', weapontype = 'Miscellaneous', ammotype = 'AMMO_PETROLCAN', damagereason = 'Died' }, - [`gadget_parachute`] = { name = 'gadget_parachute', label = 'Parachute', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Died' }, - [`weapon_fireextinguisher`] = { name = 'weapon_fireextinguisher', label = 'Fire Extinguisher', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Died' }, - [`weapon_hazardcan`] = { name = 'weapon_hazardcan', label = 'Hazardcan', weapontype = 'Miscellaneous', ammotype = 'AMMO_PETROLCAN', damagereason = 'Died' }, - [`weapon_fertilizercan`] = { name = 'weapon_fertilizercan', label = 'Fertilizer Can', weapontype = 'Miscellaneous', ammotype = 'AMMO_FERTILIZERCAN', damagereason = 'Died' }, - [`weapon_barbed_wire`] = { name = 'weapon_barbed_wire', label = 'Barbed Wire', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Prodded' }, - [`weapon_drowning`] = { name = 'weapon_drowning', label = 'Drowning', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Died' }, - [`weapon_drowning_in_vehicle`] = { name = 'weapon_drowning_in_vehicle', label = 'Drowning in a Vehicle', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Died' }, - [`weapon_bleeding`] = { name = 'weapon_bleeding', label = 'Bleeding', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Bled out' }, - [`weapon_electric_fence`] = { name = 'weapon_electric_fence', label = 'Electric Fence', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Fried' }, - [`weapon_explosion`] = { name = 'weapon_explosion', label = 'Explosion', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Killed / Exploded / Obliterated / Destroyed / Erased / Annihilated' }, - [`weapon_fall`] = { name = 'weapon_fall', label = 'Fall', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Committed suicide' }, - [`weapon_exhaustion`] = { name = 'weapon_exhaustion', label = 'Exhaustion', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Died' }, - [`weapon_hit_by_water_cannon`] = { name = 'weapon_hit_by_water_cannon', label = 'Water Cannon', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Died' }, - [`weapon_rammed_by_car`] = { name = 'weapon_rammed_by_car', label = 'Rammed - Vehicle', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Flattened / Ran over / Ran down' }, - [`weapon_run_over_by_car`] = { name = 'weapon_run_over_by_car', label = 'Run Over - Vehicle', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Flattened / Ran over / Ran down' }, - [`weapon_heli_crash`] = { name = 'weapon_heli_crash', label = 'Heli Crash', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Helicopter Crash' }, - [`weapon_fire`] = { name = 'weapon_fire', label = 'Fire', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Torched / Flambeed / Barbecued' }, - - -- Animals - [`weapon_animal`] = { name = 'weapon_animal', label = 'Animal', weapontype = 'Animals', ammotype = nil, damagereason = 'Mauled' }, - [`weapon_cougar`] = { name = 'weapon_cougar', label = 'Cougar', weapontype = 'Animals', ammotype = nil, damagereason = 'Mauled' }, -}