815 lines
38 KiB
Lua
815 lines
38 KiB
Lua
Config = Config or {}
|
|
Locales = Locales or {}
|
|
|
|
--[[
|
|
Welcome to the qs-vehiclekeys configuration!
|
|
To start configuring your new asset, please read carefully
|
|
each step in the documentation that we will attach at the end of this message.
|
|
|
|
Each important part of the configuration will be highlighted with a box.
|
|
like this one you are reading now, where I will explain step by step each
|
|
configuration available within this file.
|
|
|
|
This is not all, most of the settings, you are free to modify it
|
|
as you wish and adapt it to your framework in the most comfortable way possible.
|
|
The configurable files you will find all inside client/custom/*
|
|
or inside server/custom/*.
|
|
|
|
Direct link to the resource documentation, read it before you start:
|
|
https://docs.quasar-store.com/information/welcome
|
|
]]
|
|
|
|
--[[
|
|
The first thing will be to choose our main language, here you can choose
|
|
between the default languages that you will find within locales/*,
|
|
if yours is not there, feel free to create it!
|
|
]]
|
|
|
|
Config.Language = 'ro' -- Available languages by default: 'es', 'en', 'fr', 'de', 'it', 'tr', 'zh-CN', 'jp'. You can create more if you wish.
|
|
|
|
--[[
|
|
█▀▀ █▀█ ▄▀█ █▀▄▀█ █▀▀ █░█░█ █▀█ █▀█ █▄▀
|
|
█▀░ █▀▄ █▀█ █░▀░█ ██▄ ▀▄▀▄▀ █▄█ █▀▄ █░█
|
|
]]
|
|
|
|
--[[
|
|
This function automatically detects your framework script as long as it is named
|
|
according to one of the expected names listed below. If no framework script is
|
|
detected, it will return 'standalone' and print an error message indicating that
|
|
the script may not work properly.
|
|
|
|
The current system will detect if you use qb-core, es_extended, or qbox,
|
|
but if you rename it, you can remove the value from Config.Framework
|
|
and add it yourself after you have modified the framework files inside
|
|
this script.
|
|
|
|
Please keep in mind that this code is automatic, do not edit if
|
|
you do not know how to do it.
|
|
]]
|
|
|
|
function detectFramework()
|
|
local function checkResource(name)
|
|
return GetResourceState(name) == 'started'
|
|
end
|
|
|
|
local esxHas = checkResource('es_extended')
|
|
local qbHas = checkResource('qb-core')
|
|
local qbxHas = checkResource('qbx_core')
|
|
|
|
if Config.Debug then
|
|
if esxHas then
|
|
print('DEBUG: Detected framework: es_extended')
|
|
elseif qbHas then
|
|
print('DEBUG: Detected framework: qb-core')
|
|
elseif qbxHas then
|
|
print('DEBUG: Detected framework: qbx_core')
|
|
else
|
|
print('DEBUG: Error: No framework has been detected. The script will probably not work.')
|
|
end
|
|
end
|
|
|
|
if esxHas then
|
|
return 'esx'
|
|
elseif qbxHas then
|
|
return 'qbx'
|
|
elseif qbHas then
|
|
return 'qb'
|
|
else
|
|
return 'standalone'
|
|
end
|
|
end
|
|
|
|
Config.Framework = detectFramework()
|
|
|
|
|
|
--[[
|
|
█ █▄░█ █░█ █▀▀ █▄░█ ▀█▀ █▀█ █▀█ █▄█
|
|
█ █░▀█ ▀▄▀ ██▄ █░▀█ ░█░ █▄█ █▀▄ ░█░
|
|
]]
|
|
|
|
--[[
|
|
This function automatically detects your inventory script as long as it is named
|
|
according to one of the expected names listed below. If no inventory script is
|
|
detected, it will return 'default' and print an error message indicating that
|
|
the script may not work properly.
|
|
]]
|
|
|
|
function detectInventory()
|
|
local function checkResource(name)
|
|
return GetResourceState(name) == 'started'
|
|
end
|
|
|
|
local origenInv = checkResource('origen_inventory')
|
|
local qsInv = checkResource('qs-inventory')
|
|
local qbInv = checkResource('qb-inventory')
|
|
local coreInv = checkResource('core_inventory')
|
|
local oxInv = checkResource('ox_inventory')
|
|
local codemInv = checkResource('codem-inventory')
|
|
local tgiannInv = checkResource('tgiann-inventory')
|
|
|
|
if Config.Debug then
|
|
if origenInv then
|
|
print('DEBUG: Detected inventory script: origen_inventory')
|
|
elseif qsInv then
|
|
print('DEBUG: Detected inventory script: qs-inventory')
|
|
elseif qbInv then
|
|
print('DEBUG: Detected inventory script: qb-inventory')
|
|
elseif coreInv then
|
|
print('DEBUG: Detected inventory script: core_inventory')
|
|
elseif oxInv then
|
|
print('DEBUG: Detected inventory script: ox_inventory')
|
|
elseif codemInv then
|
|
print('DEBUG: Detected inventory script: codem-inventory')
|
|
elseif tgiannInv then
|
|
print('DEBUG: Detected inventory script: tgiann-inventory')
|
|
else
|
|
print('DEBUG: Error: No inventory script has been detected. The script will probably not work.')
|
|
end
|
|
end
|
|
|
|
if origenInv then
|
|
return 'origen'
|
|
elseif qsInv then
|
|
return 'qs'
|
|
elseif qbInv then
|
|
return 'qb'
|
|
elseif coreInv then
|
|
return 'core_inventory'
|
|
elseif oxInv then
|
|
return 'ox'
|
|
elseif codemInv then
|
|
return 'codem'
|
|
elseif tgiannInv then
|
|
return 'tgiannInv'
|
|
else
|
|
return 'default'
|
|
end
|
|
end
|
|
|
|
Config.InventoryScript = detectInventory()
|
|
|
|
|
|
--[[
|
|
█▀█ █░█ █▀█ █▄░█ █▀▀
|
|
█▀▀ █▀█ █▄█ █░▀█ ██▄
|
|
]]
|
|
|
|
function detectPhone()
|
|
local function checkResource(name)
|
|
return GetResourceState(name) == 'started'
|
|
end
|
|
|
|
local qsPhone = checkResource('qs-smartphone')
|
|
local qsPhonePro = checkResource('qs-smartphone-pro')
|
|
local lbPhone = checkResource('lb-phone')
|
|
|
|
if Config.Debug then
|
|
if qsPhone then
|
|
print('DEBUG: Detected phone script: qs-smartphone')
|
|
elseif qsPhonePro then
|
|
print('DEBUG: Detected phone script: qs-smartphone-pro')
|
|
elseif lbPhone then
|
|
print('DEBUG: Detected phone script: lb-phone')
|
|
else
|
|
print('DEBUG: Error: No phone script has been detected. The script will probably not work.')
|
|
end
|
|
end
|
|
|
|
if qsPhone then
|
|
return 'qs-smartphone'
|
|
elseif qsPhonePro then
|
|
return 'qs-smartphone-pro'
|
|
elseif lbPhone then
|
|
return 'lb-phone'
|
|
else
|
|
return 'default'
|
|
end
|
|
end
|
|
|
|
Config.Smartphone = detectPhone()
|
|
|
|
--[[
|
|
█▀▄▀█ █▀▀ █▄░█ █░█ ▀█▀ █▄█ █▀█ █▀▀
|
|
█░▀░█ ██▄ █░▀█ █▄█ ░█░ ░█░ █▀▀ ██▄
|
|
]]
|
|
|
|
-- Choose from the following options.
|
|
--[[
|
|
'ox_lib',
|
|
'esx_context',
|
|
'esx_menu_default',
|
|
'qb'
|
|
]]
|
|
Config.MenuType = 'ox_lib' -- Menu type that you will want to use. (Mainly for the copy of the keys and the buying of the plate, if you haven't selected the shop option.)
|
|
|
|
--[[
|
|
▀█▀ █▀▀ ▀▄▀ ▀█▀ █░█ █
|
|
░█░ ██▄ █░█ ░█░ █▄█ █
|
|
]]
|
|
|
|
-- Choose from the following options.
|
|
--[[
|
|
'HelpNotification', --Basic FiveM HelpNotification
|
|
'ox_lib', -- Most optimized.
|
|
'esx_textui', -- not tested on the moment, please report any issues it will be fixed asap !
|
|
'qb', -- not tested on the moment, please report any issues it will be fixed asap !
|
|
'okokTextUI', -- Most optimized. (A bit loud...)
|
|
]]
|
|
Config.TextUI = 'ox_lib' -- TextUI shown while getting close to the Peds, for copy of the keys and the buying of the plate.
|
|
|
|
--[[
|
|
▀█▀ ▄▀█ █▀█ █▀▀ █▀▀ ▀█▀
|
|
░█░ █▀█ █▀▄ █▄█ ██▄ ░█░
|
|
]]
|
|
|
|
-- Will be improved on fruther...
|
|
-- Installing of the plate trough target, stealing peds and much more are coming !
|
|
|
|
function isOxTargetEnabled()
|
|
local function checkResource(name)
|
|
return GetResourceState(name) == 'started'
|
|
end
|
|
|
|
local oxTargetHas = checkResource('ox_target')
|
|
|
|
if Config.Debug then
|
|
if oxTargetHas then
|
|
print('DEBUG: ox_target is enabled.')
|
|
else
|
|
print('DEBUG: ox_target is not enabled.')
|
|
end
|
|
end
|
|
|
|
return oxTargetHas
|
|
end
|
|
|
|
Config.EnableTarget = isOxTargetEnabled() -- Used for lock / unlocked of the cars, and for copy of the keys and the buying of the plate. (If enabled it will override the options of the TextUI)
|
|
|
|
Config.TargetDistance = 5.0 -- Distance
|
|
Config.TargetAdminOptions = false -- Used for lock / unlocked of the cars and get keys from ox_target using admin permissions.
|
|
Config.TargetAdminOptionsGroup = 'admin' -- or a table { 'dev', 'admin', 'superadmin', 'moderator' }
|
|
|
|
--[[
|
|
█▀▀ █▀█ █▄░█ ▀█▀ █▀▀ ▀▄▀ ▀█▀
|
|
█▄▄ █▄█ █░▀█ ░█░ ██▄ █░█ ░█░
|
|
]]
|
|
|
|
Config.Context = false -- Specifies whether to enable the context menu. (Only supporting ox_lib context for the moment, let us know if you'd like more menus adapted)
|
|
--[[
|
|
Set to true to enable, false to disable.
|
|
When enabled, the context menu allows for various actions such as:
|
|
* Giving keys to other players with an animation (removing the key from your inventory)
|
|
* Using the key
|
|
* Discarding the key
|
|
* Clearing your inventory of keys from vehicles you don't own.
|
|
]]
|
|
|
|
--[[
|
|
█▀█ ▄▀█ █▀▄ █ ▄▀█ █░░
|
|
█▀▄ █▀█ █▄▀ █ █▀█ █▄▄
|
|
]]
|
|
|
|
Config.Radial = false
|
|
--[[
|
|
Set to true to enable, false to disable.
|
|
The radial menu can manage:
|
|
* Opening nearby vehicle
|
|
* Managing vehicle doors
|
|
* Managing windows
|
|
* Managing the vehicle engine
|
|
* Switching between seats
|
|
]]
|
|
|
|
|
|
-- ░██████╗░███████╗███╗░░██╗███████╗██████╗░░█████╗░██╗░░░░░
|
|
-- ██╔════╝░██╔════╝████╗░██║██╔════╝██╔══██╗██╔══██╗██║░░░░░
|
|
-- ██║░░██╗░█████╗░░██╔██╗██║█████╗░░██████╔╝███████║██║░░░░░
|
|
-- ██║░░╚██╗██╔══╝░░██║╚████║██╔══╝░░██╔══██╗██╔══██║██║░░░░░
|
|
-- ██████╔╝███████╗ ██║░╚███║███████╗██║░░██║██║░░██║███████╗
|
|
-- ░╚═════╝░╚══════╝╚═╝░░╚══╝╚══════╝╚═╝░░╚═╝╚═╝░░╚═╝╚══════╝
|
|
|
|
Config.NpcVehiclesLocked = false -- bool : true or false, do you want npc vehicles spawned by GTA V to be blocked?
|
|
-- List of vehicle models to ignore for locking and entry logic.
|
|
-- Vehicles specified in this table will not trigger any locking behavior, allowing you to exclude certain vehicles from the locking system.
|
|
-- Add model names or hashes of the vehicles you want to exempt.
|
|
Config.NoLockVehicles = { 'taxi' }
|
|
|
|
Config.SendNotification = true -- bool : true or false, true will send a notification when you open / close the vehicle. False will not send a notification.
|
|
Config.CustomDesignTextUI = true -- bool : true or false, enable or disable custom design for the text UI
|
|
Config.CustomIcon = 'screwdriver-wrench' -- Specify the Font Awesome icon class, set to empty string for no custom icon https://fontawesome.com/
|
|
|
|
--[[
|
|
█▀▀ █▀█ █▄░█ ▀█▀ █▀█ █▀█ █░░ █▀
|
|
█▄▄ █▄█ █░▀█ ░█░ █▀▄ █▄█ █▄▄ ▄█
|
|
]]
|
|
|
|
-- client/custom/misc/commands.lua
|
|
-- List for the fivem keybinds if you want to change it. https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/
|
|
Config.HotKeys = true -- bool : true or false, enable or disable the engine on/off system.
|
|
Config.UseCommandKeyDistance = 15 -- Distance to search nearby vehicles.
|
|
|
|
Config.Controls = {
|
|
UseKey = 170, -- Key to lock / unlock the car.
|
|
HotwireControl = 74, -- Start Hotwiring.
|
|
EngineControlNumber = 115, -- Necessary for ControlerSupport numbers can be found here https://docs.fivem.net/docs/game-references/controls/
|
|
EngineControl = 183, -- Key to start or stop the engine. (Mouse wheel up) for better compatibility with the qs-dispatch already using the G keybind. And also better roleplay
|
|
}
|
|
|
|
Config.Hotwire = false -- bool : true or false, enable or disable the hotwire functions.
|
|
Config.UseHotwire = 'H' -- Key to start hotwiring the car.
|
|
Config.GiveKeysOnHotwire = false -- bool : true or false, enable or disable the giving of the keys when stealing.
|
|
Config.ControlerSupport = false -- bool : true or false, enable or disable the support for controlers. (Engine toggling blocked)
|
|
|
|
Config.ToggleEngineRequireKeys = true
|
|
Config.EngineInteriorLights = false
|
|
|
|
Config.KeepEngineOn = true -- bool : true or false, enable or disable the function to keep the engine on while leaving the vehicle.
|
|
Config.MaintainSteeringAngle = true -- bool : true or false, enable or disable the function to maintain angle of wheel steering, upon exiting vehicles. (Relies on the KeepEngineOn value)
|
|
|
|
Config.DisableControlAction = true -- bool : true or false, enable or disable the function to prevent from starting the cars using the w keybind.
|
|
|
|
-- ██╗░░██╗███████╗██╗░░░██╗░██████╗
|
|
-- ██║░██╔╝██╔════╝╚██╗░██╔╝██╔════╝
|
|
-- █████═╝░█████╗░░░╚████╔╝░╚█████╗░
|
|
-- ██╔═██╗░██╔══╝░░░░╚██╔╝░░░╚═══██╗
|
|
-- ██║░╚██╗███████╗░░░██║░░░██████╔╝
|
|
-- ╚═╝░░╚═╝╚══════╝░░░╚═╝░░░╚═════╝░
|
|
|
|
Config.VehicleKeysItem = 'vehiclekeys' -- Name of the item with metadata to open the vehicle.
|
|
Config.LockDistance = 20.0
|
|
Config.Anim = 'fob_click_fp' -- Modify the animation when opening or closing the vehicle here.
|
|
Config.Animdict = 'anim@mp_player_intmenu@key_fob@' -- Modify the animation when opening or closing the vehicle here.
|
|
Config.Keymodel = 'p_car_keys_01' -- Modify the prop when opening or closing the vehicle here.
|
|
|
|
--[[
|
|
█▀▀ █░█ █▀ ▀█▀ █▀█ █▀▄▀█ █▀ █▀█ █░█ █▄░█ █▀▄ █▀
|
|
█▄▄ █▄█ ▄█ ░█░ █▄█ █░▀░█ ▄█ █▄█ █▄█ █░▀█ █▄▀ ▄█
|
|
]]
|
|
|
|
-- Dependency of InteractSound needed for this to work !
|
|
-- link here : https://github.com/plunkettscott/interact-sound
|
|
--[[
|
|
|
|
1. -- * Place this sound on the interact-sound folder like shown below :
|
|
|
|
dir : interact-sound/client/html/sounds/carkeys.ogg
|
|
|
|
2. -- * Add the file name to the fxmanifest.lua file of the interact-sound ressource.
|
|
|
|
Like shown below (This is only an example, you could have more sounds listed here):
|
|
|
|
-- Files needed for NUI
|
|
-- DON'T FORGET TO ADD THE SOUND FILES TO THIS!
|
|
files {
|
|
'client/html/index.html',
|
|
'client/html/sounds/demo.ogg',
|
|
'/client/html/sounds/carkeys.ogg',
|
|
}
|
|
]]
|
|
|
|
Config.Sounds = true -- bool : true or false, use of custom sounds through InteractSound
|
|
Config.SoundsDisableDefault = false -- bool : true or false, disable or enable the use of Fivem Default sounds.
|
|
Config.SoundsVolume = 0.3 -- Distance on where the sound can be heard
|
|
Config.SoundsFileName = 'carkeys' -- Name of the file
|
|
Config.SoundsDistance = 2 -- Distance on where the sound can be heard
|
|
|
|
Config.RentalPaperItem = 'rentalpaper' -- Name of the item with metadata for the rentalpaper.
|
|
|
|
--[[
|
|
█▀▀ █▀█ █▀█ █▄█ █▄▀ █▀▀ █▄█ █▀
|
|
█▄▄ █▄█ █▀▀ ░█░ █░█ ██▄ ░█░ ▄█
|
|
]]
|
|
|
|
Config.CopyKeysMenu = true -- bool : true or false.
|
|
Config.OpenCopyKeys = 'E' -- Key to open the key copy menu.
|
|
Config.MenuPlacement = 'top-left' -- Position of `esx_menu_default`.
|
|
Config.CopyKeysCost = 500 -- Price of the copies of the keys, you can use 0 and it will be free.
|
|
Config.InventoryCopyKeysCost = 250 -- Price of the copies of the keys, you can use 0 and it will be free.
|
|
Config.CopyKeysLocations = { -- List of stores to copy keys.
|
|
vector3(-31.402076721191, -1647.4393310547, 29.282875061035)
|
|
}
|
|
|
|
Config.Blip = true -- bool : true or false, disable or enable the copy keys blip.
|
|
Config.CopyKeysBlip = { -- Blip of the key copy spot.
|
|
BlipName = 'Copy keys',
|
|
BlipSprite = 186,
|
|
BlipColour = 3,
|
|
BlipScale = 0.8,
|
|
}
|
|
|
|
--[[
|
|
█▀ █░█ ▄▀█ █▀█ █▀▀ █▀▄ █▄▀ █▀▀ █▄█ █▀
|
|
▄█ █▀█ █▀█ █▀▄ ██▄ █▄▀ █░█ ██▄ ░█░ ▄█
|
|
]]
|
|
|
|
-- Configuration table for shared keys among employees or gang members
|
|
Config.SharedKeys = {
|
|
-- Police job: Officers can lock/unlock any vehicle listed under 'vehicles'
|
|
['police'] = { -- Job name
|
|
vehicles = { -- List of vehicle models accessible to this job
|
|
'police', -- Example vehicle model
|
|
'police2', -- Example vehicle model
|
|
}
|
|
},
|
|
|
|
-- Ballas gang: Members can lock/unlock any vehicle listed under 'vehicles'
|
|
['ballas'] = { -- Gang name
|
|
vehicles = { -- List of vehicle models accessible to this gang
|
|
'albany', -- Example vehicle model
|
|
}
|
|
}
|
|
}
|
|
|
|
Config.Gangs = false
|
|
|
|
|
|
-- ██████╗░██╗░░░░░░█████╗░████████╗███████╗░██████╗
|
|
-- ██╔══██╗██║░░░░░██╔══██╗╚══██╔══╝██╔════╝██╔════╝
|
|
-- ██████╔╝██║░░░░░███████║░░░██║░░░█████╗░░╚█████╗░
|
|
-- ██╔═══╝░██║░░░░░██╔══██║░░░██║░░░██╔══╝░░░╚═══██╗
|
|
-- ██║░░░░░███████╗██║░░██║░░░██║░░░███████╗██████╔╝
|
|
-- ╚═╝░░░░░╚══════╝╚═╝░░╚═╝░░░╚═╝░░░╚══════╝╚═════╝░
|
|
|
|
Config.PlateLetters = 3 -- Modify here the type of plate.
|
|
Config.PlateNumbers = 3 -- Modify here the type of plate.
|
|
Config.PlateUseSpace = true -- bool : true or false, modify the type of plate.
|
|
Config.TimeToChange = 10000 -- Time to change the plate (ms)
|
|
|
|
exports('GetPlateFormat', function()
|
|
return {
|
|
PlateLetters = Config.PlateLetters,
|
|
PlateNumbers = Config.PlateNumbers,
|
|
PlateUseSpace = Config.PlateUseSpace
|
|
}
|
|
end)
|
|
|
|
|
|
-- ░██████╗██╗░░██╗░█████╗░██████╗░
|
|
-- ██╔════╝██║░░██║██╔══██╗██╔══██╗
|
|
-- ╚█████╗░███████║██║░░██║██████╔╝
|
|
-- ░╚═══██╗██╔══██║██║░░██║██╔═══╝░
|
|
-- ██████╔╝██║░░██║╚█████╔╝██║░░░░░
|
|
-- ╚═════╝░╚═╝░░╚═╝░╚════╝░╚═╝░░░░░
|
|
|
|
Config.PlateType = 'shop' -- Shop or Menu
|
|
-- Choose from the following options.
|
|
--[[
|
|
'shop' (qs-shop)
|
|
'menu' (menu defined above)
|
|
]]
|
|
|
|
|
|
-- Both of these items will be present in the shop or menu accessible through Peds.
|
|
-- For ESX account should be money, for qbcore it should be cash or bank.
|
|
|
|
-- Choose from the following options. For the account.
|
|
--[[
|
|
'money' (ESX ONLY)
|
|
'cash' (QBCORE ONLY)
|
|
'bank' (BOTH)
|
|
]]
|
|
|
|
Config.PlateItem = 'plate' -- Name of the item plate.
|
|
Config.UseBootForPlate = false
|
|
Config.PlatePrice = {
|
|
price = 500,
|
|
account = Config.Framework == 'esx' and 'money' or 'cash',
|
|
}
|
|
|
|
Config.ChangePlateItem = 'screwdriverset' -- Item required to use the plate.
|
|
Config.ChangePlateItemPrice = {
|
|
price = 150,
|
|
account = Config.Framework == 'esx' and 'money' or 'cash',
|
|
}
|
|
|
|
|
|
-- ████████╗██╗░░██╗███████╗███████╗████████╗░██████╗
|
|
-- ╚══██╔══╝██║░░██║██╔════╝██╔════╝╚══██╔══╝██╔════╝
|
|
-- ░░░██║░░░███████║█████╗░░█████╗░░░░░██║░░░╚█████╗░
|
|
-- ░░░██║░░░██╔══██║██╔══╝░░██╔══╝░░░░░██║░░░░╚═══██╗
|
|
-- ░░░██║░░░██║░░██║███████╗██║░░░░░░░░██║░░░██████╔╝
|
|
-- ░░░╚═╝░░░╚═╝░░╚═╝╚══════╝╚═╝░░░░░░░░╚═╝░░░╚═════╝░
|
|
|
|
-- You can edit here : qs-vehiclekeys/config/hotwire.lua
|
|
-- Find the ox_lib skillCheck documentation listed below :
|
|
-- https://overextended.dev/ox_lib/Modules/Interface/Client/skillcheck
|
|
|
|
Config.MiniGameHotWireStyle = 'easy' -- Available Style 'easy' or 'hard'
|
|
|
|
--[[
|
|
'easy' = lib.skillCheck({'easy', 'easy', 'easy', 'easy', 'easy'})
|
|
'hard' = lib.skillCheck({'easy', 'easy', {areaSize=70, speedMultiplier=1}, 'easy'}, {'z', 'q', 's', 'd'})
|
|
]]
|
|
|
|
Config.TimeMin = 1000 -- Minimum time to hotwire
|
|
Config.TimeMax = 5000 -- Maximun time to hotwire
|
|
Config.ChanceToHotwire = 99
|
|
|
|
Config.WhitelistVehicles = { -- This list of vehicles won't have hotwire.
|
|
'bmx',
|
|
'cruiser',
|
|
'enduro',
|
|
'fixter',
|
|
'scorcher',
|
|
'tribike',
|
|
'tribike2',
|
|
'tribike3',
|
|
}
|
|
|
|
Config.StealVehiclesPeds = true -- bool : true or false, if you enable this, players can target an NPC driver to receive their keys.
|
|
Config.StealVehiclesPedsPolice = 50 -- This is the chance for the NPC to call the police after being robbed (1-100).
|
|
|
|
-- List of weapons you can steal a car with.
|
|
Config.StealWeapons = {
|
|
'weapon_pistol',
|
|
'weapon_pistol_mk2',
|
|
'weapon_combatpistol',
|
|
'weapon_appistol',
|
|
'weapon_stungun',
|
|
'weapon_pistol50',
|
|
'weapon_snspistol',
|
|
'weapon_snspistol_mk2',
|
|
'weapon_heavypistol',
|
|
'weapon_vintagepistol',
|
|
'weapon_flaregun',
|
|
'weapon_marksmanpistol',
|
|
'weapon_revolver',
|
|
'weapon_revolver_mk2',
|
|
'weapon_doubleaction',
|
|
'weapon_raypistol',
|
|
'weapon_ceramicpistol',
|
|
'weapon_navyrevolver',
|
|
'weapon_gadgetpistol',
|
|
'weapon_stungun_mp',
|
|
'weapon_pistolxm3',
|
|
'weapon_microsmg',
|
|
'weapon_smg',
|
|
'weapon_smg_mk2',
|
|
'weapon_assaultsmg',
|
|
'weapon_combatpdw',
|
|
'weapon_machinepistol',
|
|
'weapon_minismg',
|
|
'weapon_raycarbine',
|
|
'weapon_tecpistol',
|
|
'weapon_pumpshotgun',
|
|
'weapon_pumpshotgun_mk2',
|
|
'weapon_sawnoffshotgun',
|
|
'weapon_assaultshotgun',
|
|
'weapon_bullpupshotgun',
|
|
'weapon_musket',
|
|
'weapon_heavyshotgun',
|
|
'weapon_dbshotgun',
|
|
'weapon_autoshotgun',
|
|
'weapon_combatshotgun',
|
|
'weapon_assaultrifle',
|
|
'weapon_assaultrifle_mk2',
|
|
'weapon_carbinerifle',
|
|
'weapon_carbinerifle_mk2',
|
|
'weapon_advancedrifle',
|
|
'weapon_specialcarbine',
|
|
'weapon_specialcarbine_mk2',
|
|
'weapon_bullpuprifle',
|
|
'weapon_bullpuprifle_mk2',
|
|
'weapon_compactrifle',
|
|
'weapon_militaryrifle',
|
|
'weapon_heavyrifle',
|
|
'weapon_tacticalrifle',
|
|
'weapon_mg',
|
|
'weapon_combatmg',
|
|
'weapon_combatmg_mk2',
|
|
'weapon_gusenberg',
|
|
'weapon_sniperrifle',
|
|
'weapon_heavysniper',
|
|
'weapon_heavysniper_mk2',
|
|
'weapon_marksmanrifle',
|
|
'weapon_marksmanrifle_mk2',
|
|
'weapon_precisionrifle'
|
|
}
|
|
|
|
-- ░██████╗░██████╗░░██████╗
|
|
-- ██╔════╝░██╔══██╗██╔════╝
|
|
-- ██║░░██╗░██████╔╝╚█████╗░
|
|
-- ██║░░╚██╗██╔═══╝░░╚═══██╗
|
|
-- ╚██████╔╝██║░░░░░██████╔╝
|
|
-- ░╚═════╝░╚═╝░░░░░╚═════╝░
|
|
|
|
|
|
Config.GPS = true -- bool : true or false, enable or disable the GPS system.
|
|
|
|
Config.TrackerItem = 'vehicletracker' -- Name of the item with metadata for the Tracker.
|
|
|
|
Config.GPSItem = 'vehiclegps' -- Name of the item with metadata for the GPS.
|
|
|
|
Config.RemoveGPSGame = true -- bool : true or false, enable or disable mini-game to remove the GPS.
|
|
|
|
Config.GPSTime = 1000 -- Time to use the GPS in milliseconds (1000 = 1 second).
|
|
|
|
Config.RemoveGPSTime = 1000 -- Time to remove the GPS in milliseconds (1000 = 1 second).
|
|
|
|
Config.RefreshGPSData = 10000 -- Time to refresh the GPS data in milliseconds (1000 = 1 second).
|
|
|
|
Config.GPSBlip = {
|
|
Sprite = 161, -- You can change the blip sprite here https://docs.fivem.net/docs/game-references/blips/#blips
|
|
Colour = 1, -- You can change the color of the blip here https://docs.fivem.net/docs/game-references/blips/#blip-colors
|
|
Display = 2, -- https://docs.fivem.net/natives/?_0x9029B2F3DA924928
|
|
Scale = 2.5, -- Size of the blip
|
|
ShortRange = true, -- bool : true or false, enable or disable the short range of the blip.
|
|
Time = 10000 -- Time for the blip to disappear (1000 = 1 second).
|
|
}
|
|
|
|
-- ██████╗░░█████╗░██╗░░░░░██╗░█████╗░███████╗
|
|
-- ██╔══██╗██╔══██╗██║░░░░░██║██╔══██╗██╔════╝
|
|
-- ██████╔╝██║░░██║██║░░░░░██║██║░░╚═╝█████╗░░
|
|
-- ██╔═══╝░██║░░██║██║░░░░░██║██║░░██╗██╔══╝░░
|
|
-- ██║░░░░░╚█████╔╝███████╗██║╚█████╔╝███████╗
|
|
-- ╚═╝░░░░░░╚════╝░╚══════╝╚═╝░╚════╝░╚══════╝
|
|
|
|
Config.ReqPolice = false -- bool : true or false, do you want police in your city to enable robberies?
|
|
Config.ReqPoliceCount = 1 -- Minimum police to start a robbery.
|
|
Config.ReqJobPolice = 'police' -- Police job name.
|
|
Config.RefreshPolice = 1000 -- Ammount of time to check por police count again, higher for more performance, don't use below 1000ms.
|
|
|
|
Config.LockpickItem = 'carlockpick' -- Item required to start lockpicking.
|
|
Config.LockpickKeepChance = 50 -- Chance of not brekaing the lockpick item and keeping your item (1-100).
|
|
Config.LockpickFail = 1
|
|
Config.AdvancedLockpickItem = 'caradvancedlockpick' -- Don't need police to lockpick
|
|
|
|
Config.LockpickAlarm = true -- bool : true or false, if you enable this option, the policemen will receive dispatch when the alarm sounds.
|
|
Config.StartAlarmChance = 50 -- Chance of the alarm going off, remember this will trigger dispatch to `Config.ReqJobPolice` (1-100).
|
|
|
|
Config.LockpickWhitelist = { -- These vehicles can't be lockpicked.
|
|
'bmx',
|
|
'cruiser',
|
|
'enduro',
|
|
'fixter',
|
|
'scorcher',
|
|
'tribike',
|
|
'tribike2',
|
|
'tribike3',
|
|
}
|
|
|
|
-- ██████╗░███████╗██████╗░░██████╗
|
|
-- ██╔══██╗██╔════╝██╔══██╗██╔════╝
|
|
-- ██████╔╝█████╗░░██║░░██║╚█████╗░
|
|
-- ██╔═══╝░██╔══╝░░██║░░██║░╚═══██╗
|
|
-- ██║░░░░░███████╗██████╔╝██████╔╝
|
|
-- ╚═╝░░░░░╚══════╝╚═════╝░╚═════╝░
|
|
|
|
-- Ped for copy the keys.
|
|
Config.CopyKeysNpcName = 's_m_y_xmech_01'
|
|
Config.CopyKeysPedLocation = vec4(-31.402076721191, -1647.4393310547, 29.282875061035, 68.450233459473)
|
|
|
|
-- Ped for buying the plate item.
|
|
Config.PlateNpcName = 'mp_m_waremech_01'
|
|
Config.PlateNPCLocation = vec4(-40.4748, -1674.6696, 29.4845, 153.7328)
|
|
|
|
-- Distance you want the ped to render.
|
|
Config.PedRenderDistance = 10.0
|
|
|
|
-- ███████╗███╗ ███╗ █████╗ ██████╗ ████████╗██████╗ ██╗ ██╗ ██████╗ ███╗ ██╗███████╗
|
|
-- ██╔════╝████╗ ████║██╔══██╗██╔══██╗╚══██╔══╝██╔══██╗██║ ██║██╔═══██╗████╗ ██║██╔════╝
|
|
-- ███████╗██╔████╔██║███████║██████╔╝ ██║ ██████╔╝███████║██║ ██║██╔██╗ ██║█████╗
|
|
-- ╚════██║██║╚██╔╝██║██╔══██║██╔══██╗ ██║ ██╔═══╝ ██╔══██║██║ ██║██║╚██╗██║██╔══╝
|
|
-- ███████║██║ ╚═╝ ██║██║ ██║██║ ██║ ██║ ██║ ██║ ██║╚██████╔╝██║ ╚████║███████╗
|
|
-- ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝
|
|
|
|
Config.Smartphone = false -- bool : true or false, if you have qs-smartphone, you can enable this function.
|
|
Config.ChargeCommand = 'chargephone' -- Command to load or unload your qs-smartphone.
|
|
Config.ChargeStatusCommand = 'chargestatus' -- Command to display or hide the battery percentage while charging.
|
|
|
|
-- ██████╗░██╗░██████╗██████╗░░█████╗░████████╗░█████╗░██╗░░██╗
|
|
-- ██╔══██╗██║██╔════╝██╔══██╗██╔══██╗╚══██╔══╝██╔══██╗██║░░██║
|
|
-- ██║░░██║██║╚█████╗░██████╔╝███████║░░░██║░░░██║░░╚═╝███████║
|
|
-- ██║░░██║██║░╚═══██╗██╔═══╝░██╔══██║░░░██║░░░██║░░██╗██╔══██║
|
|
-- ██████╔╝██║██████╔╝██║░░░░░██║░░██║░░░██║░░░╚█████╔╝██║░░██║
|
|
-- ╚═════╝░╚═╝╚═════╝░╚═╝░░░░░╚═╝░░╚═╝░░░╚═╝░░░░╚════╝░╚═╝░░╚═╝
|
|
|
|
Config.Dispatch = 'default' -- Options available : "qs", "qs-smartphone", "default"
|
|
|
|
-- ██████╗░██╗░█████╗░░██████╗░███╗░░██╗░█████╗░░██████╗████████╗██╗░█████╗░
|
|
-- ██╔══██╗██║██╔══██╗██╔════╝░████╗░██║██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗
|
|
-- ██║░░██║██║███████║██║░░██╗░██╔██╗██║██║░░██║╚█████╗░░░░██║░░░██║██║░░╚═╝
|
|
-- ██║░░██║██║██╔══██║██║░░╚██╗██║╚████║██║░░██║░╚═══██╗░░░██║░░░██║██║░░██╗
|
|
-- ██████╔╝██║██║░░██║╚██████╔╝██║░╚███║╚█████╔╝██████╔╝░░░██║░░░██║╚█████╔╝
|
|
-- ╚═════╝░╚═╝╚═╝░░╚═╝░╚═════╝░╚═╝░░╚══╝░╚════╝░╚═════╝░░░░╚═╝░░░╚═╝░╚════╝░
|
|
|
|
Config.Diagnostic = false -- bool : Set to 'true' to enable the diagnostic features; 'false' to disable them.
|
|
Config.DiagnosticJob = 'mechanic' -- string or string[] or table<string, number> : Specify which job(s) are allowed to use the diagnostic features. Can be a single job as a string, an array of job strings, or a table of job strings with priority levels.
|
|
Config.NeedKey = false -- bool : Set to 'true' to require the key for using diagnostic functions; 'false' to allow diagnostics without the key.
|
|
Config.Fahrenheit = false -- bool : Set to 'true' to display temperature in Fahrenheit (°F) in the diagnostic menu; 'false' to display it in Celsius (°C).
|
|
|
|
Config.TintsJob = 'police' -- Which job will be allowed to use of the measurement of the windows tints. string or string[] or table<string, number>
|
|
|
|
--[[
|
|
█▀▀ █░█ █▀▀ █░░
|
|
█▀░ █▄█ ██▄ █▄▄
|
|
]]
|
|
|
|
-- This function automatically detects your fuel script as long as it is named
|
|
-- according to one of the expected names listed below. If no fuel script is
|
|
-- detected, it will return 'LegacyFuel' and print an error message indicating that
|
|
-- the script may not work properly.
|
|
|
|
function detectFuel()
|
|
local function checkResource(name)
|
|
return GetResourceState(name) == 'started'
|
|
end
|
|
|
|
local rcore_fuel = checkResource('rcore_fuel')
|
|
local esxSnaFuel = checkResource('esx-sna-fuel')
|
|
local legacyFuel = checkResource('LegacyFuel')
|
|
local ljFuel = checkResource('lj-fuel')
|
|
local okokGasStation = checkResource('okokGasStation')
|
|
local oxFuel = checkResource('ox_fuel')
|
|
local psFuel = checkResource('ps-fuel')
|
|
local qsFuelstations = checkResource('qs-fuelstations')
|
|
local tiFuel = checkResource('ti_fuel')
|
|
local xfuel = checkResource('x-fuel')
|
|
|
|
if rcore_fuel then
|
|
if Config.Debug then
|
|
print('DEBUG: Detected fuel script: rcore_fuel')
|
|
end
|
|
return 'rcore_fuel'
|
|
elseif esxSnaFuel then
|
|
if Config.Debug then
|
|
print('DEBUG: Detected fuel script: esx-sna-fuel')
|
|
end
|
|
return 'esx-sna-fuel'
|
|
elseif legacyFuel then
|
|
if Config.Debug then
|
|
print('DEBUG: Detected fuel script: LegacyFuel')
|
|
end
|
|
return 'LegacyFuel'
|
|
elseif ljFuel then
|
|
if Config.Debug then
|
|
print('DEBUG: Detected fuel script: lj-fuel')
|
|
end
|
|
return 'lj-fuel'
|
|
elseif okokGasStation then
|
|
if Config.Debug then
|
|
print('DEBUG: Detected fuel script: okokGasStation')
|
|
end
|
|
return 'okokGasStation'
|
|
elseif oxFuel then
|
|
if Config.Debug then
|
|
print('DEBUG: Detected fuel script: ox_fuel')
|
|
end
|
|
return 'ox_fuel'
|
|
elseif psFuel then
|
|
if Config.Debug then
|
|
print('DEBUG: Detected fuel script: ps-fuel')
|
|
end
|
|
return 'ps-fuel'
|
|
elseif qsFuelstations then
|
|
if Config.Debug then
|
|
print('DEBUG: Detected fuel script: qs-fuelstations')
|
|
end
|
|
return 'qs-fuelstations'
|
|
elseif tiFuel then
|
|
if Config.Debug then
|
|
print('DEBUG: Detected fuel script: ti_fuel')
|
|
end
|
|
return 'ti_fuel'
|
|
elseif xfuel then
|
|
if Config.Debug then
|
|
print('DEBUG: Detected fuel script: x-fuel')
|
|
end
|
|
return 'x-fuel'
|
|
else
|
|
if Config.Debug then
|
|
print('DEBUG: Error: No fuel script has been detected. The script will probably not work. The diagnostic module only will be affected.')
|
|
end
|
|
return 'default'
|
|
end
|
|
end
|
|
|
|
Config.Fuel = detectFuel()
|
|
|
|
|
|
--[[
|
|
▄▀█ █▄░█ █▀▀ █░█ █▀█ █▀█
|
|
█▀█ █░▀█ █▄▄ █▀█ █▄█ █▀▄
|
|
]]
|
|
|
|
Config.Anchor = false -- bool : Set to 'true' to enable the anchor features; 'false' to disable them.
|
|
Config.AnchorKeybind = true
|
|
|
|
--[[
|
|
█▀▄▀█ █ █▀ █▀▀ █▀
|
|
█░▀░█ █ ▄█ █▄▄ ▄█
|
|
]]
|
|
|
|
-- Configuration Options
|
|
Config.df_nocardespawn = false -- bool : Set to 'true' if you want to disable car despawning; 'false' to allow it.
|
|
Config.AdvancedParking = false -- bool : Set to 'true' to enable advanced parking features; 'false' to disable them.
|
|
Config.OrigenParking = false -- bool : Set to 'true' to enable Origen Parking integration; 'false' to disable it.
|
|
|
|
--[[
|
|
█▀▄ █▀▀ █▄▄ █░█ █▀▀
|
|
█▄▀ ██▄ █▄█ █▄█ █▄█
|
|
]]
|
|
|
|
Config.Debug = false -- bool : Set to 'true' to enable debug mode for more detailed internal script logging; 'false' to disable it.
|
|
Config.Eventprefix = 'qs-vehiclekeys' -- string : The event prefix used by the script. It is not recommended to change this as it may cause the script to break.
|