structura foldere
mutat kq- folders in un singur folder [kq]
This commit is contained in:
Binary file not shown.
+13
@@ -0,0 +1,13 @@
|
||||
if Config.TextUI ~= "HelpNotification" then
|
||||
return
|
||||
end
|
||||
|
||||
function TextShow(msg)
|
||||
SetTextComponentFormat("STRING")
|
||||
AddTextComponentString(msg)
|
||||
DisplayHelpTextFromStringLabel(0, 0, 1, -1)
|
||||
end
|
||||
|
||||
function TextClose()
|
||||
return
|
||||
end
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
-- Function to draw 3D text based on the chosen method
|
||||
local isTextVisible = true
|
||||
|
||||
-- Function to draw 3D text based on the chosen method
|
||||
function Draw3DText(x, y, z, text)
|
||||
if isTextVisible then
|
||||
if Config.ReplaceDraw3D then
|
||||
if Config.TextUI == 'okokTextUI' then
|
||||
print("DEBUG: okokTextUI is currently bugged and will not display correctly.")
|
||||
end
|
||||
TextShow(text) -- Use the ox_lib function
|
||||
else
|
||||
DrawText3D(x, y, z, text)
|
||||
end
|
||||
isTextVisible = false
|
||||
end
|
||||
end
|
||||
|
||||
function TextClose()
|
||||
return
|
||||
end
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
if Config.TextUI ~= "esx_textui" then
|
||||
return
|
||||
end
|
||||
|
||||
function TextShow(msg, x, y, z)
|
||||
exports["esx_textui"]:TextUI(msg)
|
||||
end
|
||||
|
||||
function TextClose()
|
||||
exports["esx_textui"]:HideUI()
|
||||
end
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
if Config.TextUI ~= "okokTextUI" then
|
||||
return
|
||||
end
|
||||
|
||||
function TextShow(msg)
|
||||
exports['okokTextUI']:Open(msg, 'lightblue', 'right')
|
||||
end
|
||||
|
||||
function TextClose()
|
||||
exports['okokTextUI']:Close()
|
||||
end
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
local lastTextDisplayed = nil
|
||||
|
||||
if Config.TextUI ~= "ox_lib" then
|
||||
return
|
||||
end
|
||||
|
||||
function TextShow(msg)
|
||||
if lib.isTextUIOpen() then
|
||||
return
|
||||
else
|
||||
local icon = Config.CustomIcon or ''
|
||||
|
||||
if Config.CustomDesignTextUI then
|
||||
lib.showTextUI(msg, {
|
||||
icon = icon,
|
||||
style = {
|
||||
borderRadius = 0,
|
||||
backgroundColor = '#141517',
|
||||
color = '#d6d6d6'
|
||||
}
|
||||
})
|
||||
else
|
||||
lib.showTextUI(msg, { icon = icon })
|
||||
end
|
||||
|
||||
lastTextDisplayed = msg
|
||||
end
|
||||
end
|
||||
|
||||
function TextClose(textToClose)
|
||||
local isOpen, currentText = lib.isTextUIOpen()
|
||||
|
||||
if isOpen then
|
||||
if currentText == textToClose or textToClose == true then
|
||||
lib.hideTextUI()
|
||||
lastTextDisplayed = nil
|
||||
return true
|
||||
elseif lastTextDisplayed and currentText == lastTextDisplayed then
|
||||
lib.hideTextUI()
|
||||
lastTextDisplayed = nil
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
@@ -0,0 +1,11 @@
|
||||
if Config.TextUI ~= "qb" then
|
||||
return
|
||||
end
|
||||
|
||||
function TextShow(msg)
|
||||
exports['qb-core']:DrawText(msg, 'left')
|
||||
end
|
||||
|
||||
function TextClose()
|
||||
exports['qb-core']:HideText()
|
||||
end
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
if Config.Framework ~= "esx" then
|
||||
return
|
||||
end
|
||||
|
||||
ESX = nil
|
||||
|
||||
ESX = exports['es_extended']:getSharedObject()
|
||||
|
||||
nh_trigger = 'nh-context:createMenu'
|
||||
|
||||
function TriggerServerCallback(name, cb, ...)
|
||||
ESX.TriggerServerCallback(name, cb, ...)
|
||||
end
|
||||
|
||||
function GetVehicleProperties(vehicle)
|
||||
return ESX.Game.GetVehicleProperties(vehicle)
|
||||
end
|
||||
|
||||
function GetPlateVeh(vehicle)
|
||||
local veh = ESX.Game.GetVehicleProperties(vehicle)
|
||||
if not veh then return false end
|
||||
return veh.plate
|
||||
end
|
||||
|
||||
function GetClosestVehicle()
|
||||
return ESX.Game.GetClosestVehicle()
|
||||
end
|
||||
|
||||
function GetJobFramework()
|
||||
return ESX.GetPlayerData().job
|
||||
end
|
||||
|
||||
function GetGangFramework()
|
||||
if Config.Gangs == true then
|
||||
return exports['qs-gangs']:GetGang()
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
function GetVehiclesInArea()
|
||||
return ESX.Game.GetVehiclesInArea(GetEntityCoords(PlayerPedId()), Config.LockDistance)
|
||||
end
|
||||
|
||||
function CheckPolice()
|
||||
if Config.ReqPolice then
|
||||
local canRob = nil
|
||||
TriggerServerCallback(Config.Eventprefix..':server:GetPolice', function(check)
|
||||
canRob = check
|
||||
end)
|
||||
repeat Wait(250) until canRob ~= nil
|
||||
return canRob
|
||||
else
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
function ProgressBar(name, label, duration, useWhileDead, canCancel, disableControls, animation, prop, propTwo, onFinish, onCancel)
|
||||
local onFinishCallback = onFinish or function() end
|
||||
local onCancelCallback = onCancel or function() end
|
||||
|
||||
local success = lib.progressCircle({
|
||||
duration = duration,
|
||||
position = 'bottom',
|
||||
label = label,
|
||||
useWhileDead = useWhileDead,
|
||||
canCancel = canCancel,
|
||||
disable = disableControls,
|
||||
anim = animation,
|
||||
prop = prop,
|
||||
propTwo = propTwo,
|
||||
})
|
||||
|
||||
if success then
|
||||
onFinishCallback()
|
||||
else
|
||||
onCancelCallback()
|
||||
end
|
||||
end
|
||||
|
||||
function SendTextMessage(msg, type)
|
||||
if type == 'inform' then lib.notify({title = 'Information', description = msg, type = 'inform', id = msg}) end
|
||||
if type == 'error' then lib.notify({title = 'Error', description = msg, type = 'error', id = msg}) end
|
||||
if type == 'success' then lib.notify({title = 'Success', description = msg, type = 'success', id = msg}) end
|
||||
end
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
if Config.Framework ~= "qb" then
|
||||
return
|
||||
end
|
||||
|
||||
QBCore = nil
|
||||
|
||||
QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
qb_menu_name = 'qb-menu'
|
||||
nh_trigger = 'nh-context:createMenu'
|
||||
|
||||
function TriggerServerCallback(name, cb, ...)
|
||||
QBCore.Functions.TriggerCallback(name, cb, ...)
|
||||
end
|
||||
|
||||
function GetVehicleProperties(vehicle)
|
||||
return QBCore.Functions.GetVehicleProperties(vehicle)
|
||||
end
|
||||
|
||||
function GetPlateVeh(vehicle)
|
||||
return QBCore.Functions.GetPlate(vehicle)
|
||||
end
|
||||
|
||||
function GetClosestVehicle(vehicle)
|
||||
local veh = QBCore.Functions.GetClosestVehicle(vehicle)
|
||||
if not veh then return false end
|
||||
return veh
|
||||
end
|
||||
|
||||
function GetJobFramework()
|
||||
return QBCore.Functions.GetPlayerData().job
|
||||
end
|
||||
|
||||
function GetGangFramework()
|
||||
if Config.Gangs == true then
|
||||
return exports['qs-gangs']:GetGang()
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
function GetVehiclesInArea()
|
||||
local result = {}
|
||||
table.clear(result)
|
||||
local vehicles = QBCore.Functions.GetVehicles()
|
||||
local playerCoords = GetEntityCoords(PlayerPedId())
|
||||
for k, v in pairs(vehicles) do
|
||||
local vehicleCoords = GetEntityCoords(v)
|
||||
local distance = #(playerCoords - vehicleCoords)
|
||||
if distance <= Config.LockDistance then
|
||||
table.insert(result, v)
|
||||
end
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
function CheckPolice()
|
||||
if Config.ReqPolice then
|
||||
local canRob = nil
|
||||
TriggerServerCallback(Config.Eventprefix..':server:GetPolice', function(check)
|
||||
canRob = check
|
||||
end)
|
||||
repeat Wait(250) until canRob ~= nil
|
||||
return canRob
|
||||
else
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
function ProgressBar(name, label, duration, useWhileDead, canCancel, disableControls, animation, prop, propTwo, onFinish, onCancel)
|
||||
local onFinishCallback = onFinish or function() end
|
||||
local onCancelCallback = onCancel or function() end
|
||||
|
||||
local success = lib.progressCircle({
|
||||
duration = duration,
|
||||
position = 'bottom',
|
||||
label = label,
|
||||
useWhileDead = useWhileDead,
|
||||
canCancel = canCancel,
|
||||
disable = disableControls,
|
||||
anim = animation,
|
||||
prop = prop,
|
||||
propTwo = propTwo,
|
||||
})
|
||||
|
||||
if success then
|
||||
onFinishCallback()
|
||||
else
|
||||
onCancelCallback()
|
||||
end
|
||||
end
|
||||
|
||||
function SendTextMessage(msg, type)
|
||||
if type == 'inform' then
|
||||
QBCore.Functions.Notify(msg, 'primary', 5000)
|
||||
end
|
||||
if type == 'error' then
|
||||
QBCore.Functions.Notify(msg, 'error', 5000)
|
||||
end
|
||||
if type == 'success' then
|
||||
QBCore.Functions.Notify(msg, 'success', 5000)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
RegisterCommand("getkeys", function()
|
||||
exports['qs-vehiclekeys']:GiveKeysAuto()
|
||||
end)
|
||||
+106
@@ -0,0 +1,106 @@
|
||||
if Config.Framework ~= 'qbx' then
|
||||
return
|
||||
end
|
||||
|
||||
QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
qb_menu_name = 'qb-menu'
|
||||
|
||||
function TriggerServerCallback(name, cb, ...) -- Sadly have to keep this for compatibility
|
||||
QBCore.Functions.TriggerCallback(name, cb, ...)
|
||||
end
|
||||
|
||||
function GetPlayerData()
|
||||
return exports.qbx_core:GetPlayerData()
|
||||
end
|
||||
|
||||
function GetIdentifier()
|
||||
return GetPlayerData().citizenid
|
||||
end
|
||||
|
||||
function GetPlayers()
|
||||
return GetActivePlayers()
|
||||
end
|
||||
|
||||
function GetVehicleProperties(vehicle)
|
||||
return lib.getVehicleProperties(vehicle)
|
||||
end
|
||||
|
||||
function GetPlateVeh(vehicle)
|
||||
return QBCore.Functions.GetPlate(vehicle)
|
||||
end
|
||||
|
||||
function GetClosestVehicle(coords, maxDistance, includePlayerVehicle)
|
||||
local vehicle, vehicleCoords = lib.getClosestVehicle(coords, maxDistance, includePlayerVehicle)
|
||||
if not vehicle then
|
||||
return false
|
||||
end
|
||||
return vehicle
|
||||
end
|
||||
|
||||
function GetJobFramework()
|
||||
return GetPlayerData()?.job?.name
|
||||
end
|
||||
|
||||
function GetGangFramework()
|
||||
if Config.Gangs == true then
|
||||
return exports['qs-gangs']:GetGang()
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
function GetVehiclesInArea()
|
||||
local result = {}
|
||||
table.clear(result)
|
||||
local vehicles = QBCore.Functions.GetVehicles()
|
||||
local playerCoords = GetEntityCoords(PlayerPedId())
|
||||
for k, v in pairs(vehicles) do
|
||||
local vehicleCoords = GetEntityCoords(v)
|
||||
local distance = #(playerCoords - vehicleCoords)
|
||||
if distance <= Config.LockDistance then
|
||||
table.insert(result, v)
|
||||
end
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
function CheckPolice()
|
||||
if Config.ReqPolice then
|
||||
local canRob = nil
|
||||
TriggerServerCallback(Config.Eventprefix..':server:GetPolice', function(check)
|
||||
canRob = check
|
||||
end)
|
||||
repeat Wait(250) until canRob ~= nil
|
||||
return canRob
|
||||
else
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
function ProgressBar(name, label, duration, useWhileDead, canCancel, disableControls, animation, prop, propTwo, onFinish, onCancel)
|
||||
local onFinishCallback = onFinish or function() end
|
||||
local onCancelCallback = onCancel or function() end
|
||||
|
||||
local success = lib.progressCircle({
|
||||
duration = duration,
|
||||
position = 'bottom',
|
||||
label = label,
|
||||
useWhileDead = useWhileDead,
|
||||
canCancel = canCancel,
|
||||
disable = disableControls,
|
||||
anim = animation,
|
||||
prop = prop,
|
||||
propTwo = propTwo,
|
||||
})
|
||||
|
||||
if success then
|
||||
onFinishCallback()
|
||||
else
|
||||
onCancelCallback()
|
||||
end
|
||||
end
|
||||
|
||||
function SendTextMessage(msg, type)
|
||||
if type == 'inform' or type == 'error' or type == 'success' then lib.notify({title = 'Vehicle keys', description = msg, type = type}) end
|
||||
end
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
if Config.Fuel ~= 'LegacyFuel' then
|
||||
return
|
||||
end
|
||||
|
||||
function SetFuel(vehicle, fuelLevel)
|
||||
local success, error = pcall(function()
|
||||
exports['LegacyFuel']:SetFuel(vehicle, fuelLevel)
|
||||
end)
|
||||
|
||||
if not success then
|
||||
Debug('You did not configure your fuel system and it is set to 100.0 in fuel, check in Config.Fuel')
|
||||
return 100.0
|
||||
end
|
||||
end
|
||||
|
||||
function GetFuel(vehicle)
|
||||
return exports['LegacyFuel']:GetFuel(vehicle)
|
||||
end
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
if Config.Fuel ~= 'esx-sna-fuel' then
|
||||
return
|
||||
end
|
||||
|
||||
function SetFuel(vehicle, fuelLevel)
|
||||
local success, error = pcall(function()
|
||||
exports['esx-sna-fuel']:SetFuel(vehicle, fuelLevel)
|
||||
end)
|
||||
|
||||
if not success then
|
||||
Debug('You did not configure your fuel system and it is set to 100.0 in fuel, check in Config.Fuel')
|
||||
return 100.0
|
||||
end
|
||||
end
|
||||
|
||||
function GetFuel(vehicle)
|
||||
return exports['esx-sna-fuel']:GetFuel(vehicle)
|
||||
end
|
||||
@@ -0,0 +1,18 @@
|
||||
if Config.Fuel ~= 'lj-fuel' then
|
||||
return
|
||||
end
|
||||
|
||||
function SetFuel(vehicle, fuelLevel)
|
||||
local success, error = pcall(function()
|
||||
exports['lj-fuel']:SetFuel(vehicle, fuelLevel)
|
||||
end)
|
||||
|
||||
if not success then
|
||||
Debug('You did not configure your fuel system and it is set to 100.0 in fuel, check in Config.Fuel')
|
||||
return 100.0
|
||||
end
|
||||
end
|
||||
|
||||
function GetFuel(vehicle)
|
||||
return exports['lj-fuel']:GetFuel(vehicle)
|
||||
end
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
if Config.Fuel ~= 'okokGasStation' then
|
||||
return 100.0
|
||||
end
|
||||
|
||||
function SetFuel(vehicle, fuelLevel)
|
||||
local success, error = pcall(function()
|
||||
exports['okokGasStation']:SetFuel(vehicle, fuelLevel)
|
||||
end)
|
||||
|
||||
if not success then
|
||||
Debug('You did not configure your fuel system and it is set to 100.0 in fuel, check in Config.Fuel')
|
||||
return 100.0
|
||||
end
|
||||
end
|
||||
|
||||
function GetFuel(vehicle)
|
||||
return exports['okokGasStation']:GetFuel(vehicle)
|
||||
end
|
||||
@@ -0,0 +1,11 @@
|
||||
if Config.Fuel ~= 'ox_fuel' then
|
||||
return
|
||||
end
|
||||
|
||||
function SetFuel(vehicle, fuelLevel)
|
||||
Entity(vehicle).state.fuel = fuelLevel
|
||||
end
|
||||
|
||||
function GetFuel(vehicle)
|
||||
return Entity(vehicle).state.fuel
|
||||
end
|
||||
@@ -0,0 +1,18 @@
|
||||
if Config.Fuel ~= 'ps-fuel' then
|
||||
return
|
||||
end
|
||||
|
||||
function SetFuel(vehicle, fuelLevel)
|
||||
local success, error = pcall(function()
|
||||
exports['ps-fuel']:SetFuel(vehicle, fuelLevel)
|
||||
end)
|
||||
|
||||
if not success then
|
||||
Debug('You did not configure your fuel system and it is set to 100.0 in fuel, check in Config.Fuel')
|
||||
return 100.0
|
||||
end
|
||||
end
|
||||
|
||||
function GetFuel(vehicle)
|
||||
return exports['ps-fuel']:GetFuel(vehicle)
|
||||
end
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
if Config.Fuel ~= 'qs-fuelstations' then
|
||||
return
|
||||
end
|
||||
|
||||
function SetFuel(vehicle, fuelLevel)
|
||||
local success, error = pcall(function()
|
||||
exports['qs-fuelstations']:SetFuel(vehicle, fuelLevel)
|
||||
end)
|
||||
|
||||
if not success then
|
||||
Debug('You did not configure your fuel system and it is set to 100.0 in fuel, check in Config.Fuel')
|
||||
return 100.0
|
||||
end
|
||||
end
|
||||
|
||||
function GetFuel(vehicle)
|
||||
return exports['qs-fuelstations']:GetFuel(vehicle)
|
||||
end
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
if Config.Fuel ~= 'rcore_fuel' then
|
||||
return
|
||||
end
|
||||
|
||||
function SetFuel(vehicle, fuelLevel)
|
||||
local success, error = pcall(function()
|
||||
exports['rcore_fuel']:SetFuel(vehicle, fuelLevel)
|
||||
end)
|
||||
|
||||
if not success then
|
||||
Debug('You did not configure your fuel system and it is set to 100.0 in fuel, check in Config.Fuel')
|
||||
return 100.0
|
||||
end
|
||||
end
|
||||
|
||||
function GetFuel(vehicle)
|
||||
return exports['rcore_fuel']:GetFuel(vehicle)
|
||||
end
|
||||
@@ -0,0 +1,18 @@
|
||||
if Config.Fuel ~= 'ti_fuel' then
|
||||
return
|
||||
end
|
||||
|
||||
function SetFuel(vehicle, fuelLevel)
|
||||
local success, error = pcall(function()
|
||||
exports['ti_fuel']:setFuel(vehicle, fuelLevel, 'RON91')
|
||||
end)
|
||||
|
||||
if not success then
|
||||
Debug('You did not configure your fuel system and it is set to 100.0 in fuel, check in Config.Fuel')
|
||||
return 100.0
|
||||
end
|
||||
end
|
||||
|
||||
function GetFuel(vehicle)
|
||||
return exports['ti_fuel']:getFuel(vehicle)
|
||||
end
|
||||
@@ -0,0 +1,18 @@
|
||||
if Config.Fuel ~= 'x-fuel' then
|
||||
return
|
||||
end
|
||||
|
||||
function SetFuel(vehicle, fuelLevel)
|
||||
local success, error = pcall(function()
|
||||
exports['x-fuel']:SetFuel(vehicle, fuelLevel)
|
||||
end)
|
||||
|
||||
if not success then
|
||||
Debug('You did not configure your fuel system and it is set to 100.0 in fuel, check in Config.Fuel')
|
||||
return 100.0
|
||||
end
|
||||
end
|
||||
|
||||
function GetFuel(vehicle)
|
||||
return exports['x-fuel']:GetFuel(vehicle)
|
||||
end
|
||||
+118
@@ -0,0 +1,118 @@
|
||||
if Config.MenuType ~= 'esx_context' then
|
||||
return
|
||||
end
|
||||
|
||||
if Config.Framework == 'qb' then
|
||||
return
|
||||
end
|
||||
|
||||
function OpenCopyKeys()
|
||||
local elements = {}
|
||||
TriggerServerCallback(Config.Eventprefix..':server:getVehicles', function(vehicles)
|
||||
table.insert(elements, {
|
||||
title = Lang("VEHICLEKEYS_MENU_TITLE")
|
||||
})
|
||||
for _,v in pairs(vehicles) do
|
||||
local hashVehicule = v.vehicle.model
|
||||
local plate = v.vehicle.plate
|
||||
local vehicleName = GetDisplayNameFromVehicleModel(hashVehicule)
|
||||
table.insert(elements, {
|
||||
title = Lang("VEHICLEKEYS_MENU_MODEL").." " .. vehicleName .. " ".. Lang("VEHICLEKEYS_MENU_PLATE").." " .. plate ,
|
||||
name = "take",
|
||||
metadata = {vehicleName, plate}
|
||||
})
|
||||
end
|
||||
ESX.OpenContext("right" , elements, function(menu,element)
|
||||
if element.name == "take" then
|
||||
clonekey(element.metadata[2], element.metadata[1])
|
||||
ESX.CloseContext()
|
||||
end
|
||||
end, function(menu)
|
||||
ESX.CloseContext()
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
function OpenPlateMenu()
|
||||
|
||||
if Config.PlateType == 'menu' then
|
||||
|
||||
|
||||
local elements = {}
|
||||
table.insert(elements, {
|
||||
title = Lang("VEHICLEKEYS_MENU_BUY_PLATE")
|
||||
})
|
||||
table.insert(elements, {
|
||||
title = Lang("VEHICLEKEYS_MENU_BUY_PLATE_DESCRIPTION")..Config.NPCPlatePrice['price'],
|
||||
name = "take",
|
||||
})
|
||||
table.insert(elements, {
|
||||
title = Lang('VEHICLEKEYS_MENU_BUY_CHANGEPLATE_DESCRIPTION') .. Config.ChangePlateItemPrice['price'],
|
||||
name = "screwdriver",
|
||||
})
|
||||
ESX.OpenContext("right" , elements, function(menu,element)
|
||||
if element.name == "take" then
|
||||
TriggerEvent(Config.Eventprefix..':buyPlate')
|
||||
ESX.CloseContext()
|
||||
elseif element.name == "screwdriver" then
|
||||
TriggerEvent(Config.Eventprefix..':buyScrewdriver')
|
||||
ESX.CloseContext()
|
||||
end
|
||||
end, function(menu)
|
||||
ESX.CloseContext()
|
||||
end)
|
||||
|
||||
end
|
||||
|
||||
if Config.PlateType == 'shop' then
|
||||
|
||||
local generatePlate = GeneratePlate()
|
||||
local plate = {
|
||||
plate = generatePlate,
|
||||
}
|
||||
local shop = Lang('VEHICLEKEYS_PLATE_SHOP_NAME')
|
||||
local ShopItems = {
|
||||
label = Lang('VEHICLEKEYS_PLATE_SHOP_LABEL'),
|
||||
items = {
|
||||
{name = Config.PlateItem ,amount = 1, price = Config.PlatePrice['price'], slot= 1, info = plate },
|
||||
{name = Config.ChangePlateItem, amount = 1, price = Config.ChangePlateItemPrice['price'], slot = 2 },
|
||||
},
|
||||
}
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "shop", shop, ShopItems)
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function OpenTrackerMenu(gpsdata)
|
||||
local addedVehicles = {}
|
||||
|
||||
TriggerServerCallback(Config.Eventprefix..':server:GetPlayerIdentifier', function(PlayerIdentifier)
|
||||
local elements = {}
|
||||
|
||||
for _, v in ipairs(gpsdata) do
|
||||
if v.Player == PlayerIdentifier and not addedVehicles[v.plate] then
|
||||
table.insert(elements, {
|
||||
icon = 'car',
|
||||
title = string.format(Lang('VEHICLEKEYS_TRACKER_MENU_DESC'), v.plate),
|
||||
value = v.plate
|
||||
})
|
||||
addedVehicles[v.plate] = true
|
||||
end
|
||||
end
|
||||
|
||||
if #elements == 0 then
|
||||
table.insert(elements, {
|
||||
icon = 'times',
|
||||
title = Lang('VEHICLEKEYS_TRACKER_NO_VEHICLES'),
|
||||
disabled = true
|
||||
})
|
||||
end
|
||||
|
||||
ESX.OpenContext("right" , elements, function(data)
|
||||
if data.current.value then
|
||||
TriggerEvent(Config.Eventprefix..':client:LocateVehicleWithPlate', data.current.value)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
end
|
||||
+296
@@ -0,0 +1,296 @@
|
||||
if Config.MenuType ~= 'esx_menu_default' then
|
||||
return
|
||||
end
|
||||
|
||||
if Config.Framework == 'qb' then
|
||||
return
|
||||
end
|
||||
|
||||
if Config.InventoryScript == 'qs' then
|
||||
function GetPlateFromItem(item)
|
||||
return item.info and item.info.plate or nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return item.info and item.info.description or nil
|
||||
end
|
||||
elseif Config.InventoryScript == 'ox' then
|
||||
function GetPlateFromItem(item)
|
||||
local plate = item.metadata and item.metadata.plate or nil
|
||||
return plate
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
local model = item.metadata and item.metadata.model or nil
|
||||
return model
|
||||
end
|
||||
elseif Config.InventoryScript == 'qb' then
|
||||
function GetPlateFromItem(item)
|
||||
return item.info and item.info.plate or nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return item.info and item.info.description or nil
|
||||
end
|
||||
elseif Config.InventoryScript == 'codem' then
|
||||
function GetPlateFromItem(item)
|
||||
return item.info and item.info.plate or nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return item.info and item.info[1] and item.info[1].description or nil
|
||||
end
|
||||
elseif Config.InventoryScript == 'core_inventory' then
|
||||
function GetPlateFromItem(item)
|
||||
return item.info and item.info.plate or nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return item.info and item.info.description or nil
|
||||
end
|
||||
else
|
||||
-- Handle other cases or provide a default implementation
|
||||
function GetPlateFromItem(item)
|
||||
return nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
function OpenCopyKeys()
|
||||
local vehicleMenuElements = {
|
||||
{
|
||||
label = Lang("VEHICLEKEYS_MENU_OWNED_VEHICLES") .. ' - $' .. Config.CopyKeysCost,
|
||||
name = "owned_vehicles",
|
||||
icon = 'car',
|
||||
},
|
||||
{
|
||||
label = Lang("VEHICLEKEYS_MENU_OWNED_KEYS") .. ' - $' .. Config.InventoryCopyKeysCost,
|
||||
name = "owned_keys",
|
||||
icon = 'key',
|
||||
},
|
||||
}
|
||||
|
||||
ESX.UI.Menu.CloseAll()
|
||||
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'vehicle_keys_menu_choice', {
|
||||
title = Lang("VEHICLEKEYS_MENU_CHOICE_TITLE"),
|
||||
align = Config.MenuPlacement,
|
||||
elements = vehicleMenuElements,
|
||||
}, function(data, menu)
|
||||
-- Handle menu interactions here
|
||||
local currentElement = data.current
|
||||
|
||||
if currentElement.name == "owned_vehicles" then
|
||||
OpenVehicleKeysMenu()
|
||||
elseif currentElement.name == "owned_keys" then
|
||||
OpenOwnedKeysMenu()
|
||||
end
|
||||
end, function(data, menu)
|
||||
menu.close()
|
||||
end)
|
||||
end
|
||||
|
||||
function OpenVehicleKeysMenu()
|
||||
local vehicleMenuElements = {}
|
||||
TriggerServerCallback(Config.Eventprefix..':server:getVehicles', function(vehicles)
|
||||
if Config.Debug then
|
||||
print(json.encode(vehicles))
|
||||
end
|
||||
|
||||
for _,v in pairs(vehicles) do
|
||||
local hashVehicle = v.vehicle.model
|
||||
local plate = v.vehicle.plate
|
||||
local vehicleName = GetDisplayNameFromVehicleModel(hashVehicle)
|
||||
|
||||
print("Plate: " .. plate)
|
||||
print("Vehicle Name: " .. vehicleName)
|
||||
|
||||
|
||||
table.insert(vehicleMenuElements, {
|
||||
label = Lang("VEHICLEKEYS_MENU_MODEL").." " .. vehicleName .. ", ".. Lang("VEHICLEKEYS_MENU_PLATE").." " .. plate,
|
||||
icon = 'car',
|
||||
value = {plate = plate, model = vehicleName},
|
||||
})
|
||||
end
|
||||
|
||||
table.insert(vehicleMenuElements, {
|
||||
label = Lang("BACK_TO_PREVIOUS_MENU"),
|
||||
icon = 'arrow-left',
|
||||
action = "back",
|
||||
})
|
||||
|
||||
ESX.UI.Menu.CloseAll()
|
||||
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'vehicle_keys_menu', {
|
||||
title = Lang("VEHICLEKEYS_MENU_TITLE"),
|
||||
align = Config.MenuPlacement,
|
||||
elements = vehicleMenuElements,
|
||||
}, function(data, menu)
|
||||
local currentElement = data.current
|
||||
if currentElement.action == "back" then
|
||||
OpenCopyKeys()
|
||||
else
|
||||
clonekey(data.current.value.plate, data.current.value.model, true, Config.CopyKeysCost)
|
||||
end
|
||||
end, function(data, menu)
|
||||
menu.close()
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
function OpenOwnedKeysMenu()
|
||||
local elements = {}
|
||||
|
||||
TriggerServerCallback(Config.Eventprefix .. ':server:GetPlayerItems', function(items)
|
||||
if items then
|
||||
local keysFound = false
|
||||
|
||||
for _, item in pairs(items) do
|
||||
local plate = GetPlateFromItem(item)
|
||||
local model = GetModelFromItem(item)
|
||||
|
||||
print("Plate:", plate)
|
||||
print("Model:", model)
|
||||
|
||||
if plate and model then
|
||||
table.insert(elements, {
|
||||
label = Lang("VEHICLEKEYS_MENU_MODEL").." " .. model .. ", ".. Lang("VEHICLEKEYS_MENU_PLATE").." " .. plate,
|
||||
icon = 'key',
|
||||
value = {plate = plate, model = model},
|
||||
})
|
||||
|
||||
keysFound = true
|
||||
end
|
||||
end
|
||||
|
||||
if not keysFound then
|
||||
table.insert(elements, {
|
||||
label = Lang("NO_KEYS_FOUND"),
|
||||
icon = 'exclamation-circle',
|
||||
disabled = true,
|
||||
action = "none",
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
table.insert(elements, {
|
||||
label = Lang("BACK_TO_PREVIOUS_MENU"),
|
||||
icon = 'arrow-left',
|
||||
action = "back",
|
||||
})
|
||||
|
||||
ESX.UI.Menu.CloseAll()
|
||||
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'vehicle_keys_menu', {
|
||||
title = Lang("VEHICLEKEYS_MENU_TITLE"),
|
||||
align = Config.MenuPlacement,
|
||||
elements = elements,
|
||||
}, function(data, menu)
|
||||
-- Handle menu interactions here
|
||||
local currentElement = data.current
|
||||
|
||||
if currentElement.action == "back" then
|
||||
OpenCopyKeys()
|
||||
elseif currentElement.action == "none" then
|
||||
return
|
||||
else
|
||||
clonekey(data.current.value.plate, data.current.value.model, true, Config.InventoryCopyKeysCost)
|
||||
end
|
||||
end, function(data, menu)
|
||||
menu.close()
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
function OpenPlateMenu()
|
||||
if Config.PlateType == 'menu' then
|
||||
local plateMenuElements = {
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_MENU_BUY_PLATE_DESCRIPTION') .. ' - $' .. Config.PlatePrice['price'],
|
||||
name = "buy_plate",
|
||||
icon = 'car',
|
||||
onSelect = function(args, menu)
|
||||
TriggerEvent(Config.Eventprefix .. ':buyPlate')
|
||||
end,
|
||||
},
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_MENU_BUY_CHANGEPLATE_DESCRIPTION') .. ' - $' .. Config.ChangePlateItemPrice['price'],
|
||||
name = "buy_change_plate",
|
||||
icon = 'screwdriver',
|
||||
onSelect = function(args, menu)
|
||||
TriggerEvent(Config.Eventprefix .. ':buyScrewdriver')
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
ESX.UI.Menu.CloseAll()
|
||||
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'vehicle_keys_menu_plate', {
|
||||
title = Lang('VEHICLEKEYS_MENU_TITLE_PLATE'),
|
||||
align = Config.MenuPlacement,
|
||||
elements = plateMenuElements,
|
||||
}, function(data, menu)
|
||||
-- Handle menu interactions here
|
||||
local currentElement = data.current
|
||||
|
||||
if currentElement.name == "buy_plate" then
|
||||
TriggerEvent(Config.Eventprefix .. ':buyPlate')
|
||||
elseif currentElement.name == "buy_change_plate" then
|
||||
TriggerEvent(Config.Eventprefix .. ':buyScrewdriver')
|
||||
end
|
||||
end, function(data, menu)
|
||||
menu.close()
|
||||
end)
|
||||
elseif Config.PlateType == 'shop' then
|
||||
local generatePlate = GeneratePlate()
|
||||
local plate = {
|
||||
plate = generatePlate,
|
||||
}
|
||||
local shop = Lang('VEHICLEKEYS_PLATE_SHOP_NAME')
|
||||
local shopItems = {
|
||||
label = Lang('VEHICLEKEYS_PLATE_SHOP_LABEL'),
|
||||
items = {
|
||||
{name = Config.PlateItem, amount = 1, price = Config.PlatePrice['price'], slot = 1, info = plate},
|
||||
{name = Config.ChangePlateItem, amount = 1, price = Config.ChangePlateItemPrice['price'], slot = 2},
|
||||
},
|
||||
}
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "shop", shop, ShopItems)
|
||||
end
|
||||
end
|
||||
|
||||
function OpenTrackerMenu(gpsdata)
|
||||
local addedVehicles = {}
|
||||
|
||||
TriggerServerCallback(Config.Eventprefix..':server:GetPlayerIdentifier', function(PlayerIdentifier)
|
||||
local elements = {}
|
||||
|
||||
for _, v in ipairs(gpsdata) do
|
||||
if v.Player == PlayerIdentifier and not addedVehicles[v.plate] then
|
||||
table.insert(elements, {
|
||||
label = string.format(Lang('VEHICLEKEYS_TRACKER_MENU_DESC'), v.plate),
|
||||
icon = 'car',
|
||||
value = v.plate
|
||||
})
|
||||
addedVehicles[v.plate] = true
|
||||
end
|
||||
end
|
||||
|
||||
if #elements == 0 then
|
||||
table.insert(elements, {
|
||||
label = Lang('VEHICLEKEYS_TRACKER_NO_VEHICLES'),
|
||||
disabled = true
|
||||
})
|
||||
end
|
||||
|
||||
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'vehiclekeys_gps_menu', {
|
||||
title = Lang('VEHICLEKEYS_TRACKER_MENU_TITLE'),
|
||||
align = 'top-left',
|
||||
elements = elements
|
||||
}, function(data, menu)
|
||||
if data.current.value then
|
||||
TriggerEvent(Config.Eventprefix..':client:LocateVehicleWithPlate', data.current.value)
|
||||
end
|
||||
end, function(data, menu)
|
||||
menu.close()
|
||||
end)
|
||||
end)
|
||||
end
|
||||
+240
@@ -0,0 +1,240 @@
|
||||
if Config.MenuType ~= 'ox_lib' then
|
||||
return
|
||||
end
|
||||
|
||||
if Config.Framework == 'qb' then
|
||||
return
|
||||
end
|
||||
|
||||
if Config.InventoryScript == 'qs' then
|
||||
function GetPlateFromItem(item)
|
||||
return item.info and item.info.plate or nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return item.info and item.info.description or nil
|
||||
end
|
||||
elseif Config.InventoryScript == 'ox' then
|
||||
function GetPlateFromItem(item)
|
||||
local plate = item.metadata and item.metadata.plate or nil
|
||||
return plate
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
local model = item.metadata and item.metadata.model or nil
|
||||
return model
|
||||
end
|
||||
elseif Config.InventoryScript == 'qb' then
|
||||
function GetPlateFromItem(item)
|
||||
return item.info and item.info.plate or nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return item.info and item.info.description or nil
|
||||
end
|
||||
elseif Config.InventoryScript == 'codem' then
|
||||
function GetPlateFromItem(item)
|
||||
return item.info and item.info.plate or nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return item.info and item.info[1] and item.info[1].description or nil
|
||||
end
|
||||
elseif Config.InventoryScript == 'core_inventory' then
|
||||
function GetPlateFromItem(item)
|
||||
return item.info and item.info.plate or nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return item.info and item.info.description or nil
|
||||
end
|
||||
else
|
||||
-- Handle other cases or provide a default implementation
|
||||
function GetPlateFromItem(item)
|
||||
return nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
function OpenCopyKeys()
|
||||
local elements = {}
|
||||
local vehicleMenu = {
|
||||
{
|
||||
title = Lang("VEHICLEKEYS_MENU_OWNED_VEHICLES") .. ' - $' .. Config.CopyKeysCost,
|
||||
icon = 'car',
|
||||
onSelect = function(args)
|
||||
OpenVehicleKeysMenu()
|
||||
end,
|
||||
},
|
||||
{
|
||||
title = Lang("VEHICLEKEYS_MENU_OWNED_KEYS") .. ' - $' .. Config.InventoryCopyKeysCost,
|
||||
icon = 'key',
|
||||
onSelect = function(args)
|
||||
OpenOwnedKeysMenu()
|
||||
end,
|
||||
},
|
||||
}
|
||||
lib.registerContext({
|
||||
id = 'VEHICLEKEYS_MENU_CHOICE',
|
||||
title = Lang("VEHICLEKEYS_MENU_CHOICE_TITLE"),
|
||||
options = vehicleMenu,
|
||||
})
|
||||
lib.showContext('VEHICLEKEYS_MENU_CHOICE')
|
||||
end
|
||||
|
||||
function OpenVehicleKeysMenu()
|
||||
local elements = {}
|
||||
TriggerServerCallback(Config.Eventprefix..':server:getVehicles', function(vehicles)
|
||||
if Config.Debug then
|
||||
print(json.encode(vehicles))
|
||||
end
|
||||
for _,v in pairs(vehicles) do
|
||||
local hashVehicule = v.vehicle.model
|
||||
local plate = v.vehicle.plate
|
||||
local vehicleName = GetDisplayNameFromVehicleModel(hashVehicule)
|
||||
|
||||
table.insert(elements, {
|
||||
title = Lang("VEHICLEKEYS_MENU_MODEL").." " .. vehicleName .. ", ".. Lang("VEHICLEKEYS_MENU_PLATE").." " .. plate,
|
||||
icon = 'car',
|
||||
onSelect = function(args)
|
||||
clonekey(plate, vehicleName, true, Config.CopyKeysCost)
|
||||
end,
|
||||
})
|
||||
end
|
||||
table.insert(elements, {
|
||||
title = Lang("BACK_TO_PREVIOUS_MENU"),
|
||||
icon = 'arrow-left',
|
||||
onSelect = function(args)
|
||||
OpenCopyKeys()
|
||||
end,
|
||||
})
|
||||
lib.registerContext({
|
||||
id = 'VEHICLEKEYS_MENU_TITLE',
|
||||
title = Lang("VEHICLEKEYS_MENU_TITLE"),
|
||||
options = elements,
|
||||
})
|
||||
lib.showContext('VEHICLEKEYS_MENU_TITLE')
|
||||
end)
|
||||
end
|
||||
|
||||
function OpenOwnedKeysMenu()
|
||||
local elements = {}
|
||||
TriggerServerCallback(Config.Eventprefix .. ':server:GetPlayerItems', function(items)
|
||||
if items then
|
||||
local keysFound = false
|
||||
for _, item in pairs(items) do
|
||||
local plate = GetPlateFromItem(item)
|
||||
local model = GetModelFromItem(item)
|
||||
if plate and model then
|
||||
keysFound = true
|
||||
table.insert(elements, {
|
||||
title = Lang("VEHICLEKEYS_MENU_MODEL").." " .. model .. ", ".. Lang("VEHICLEKEYS_MENU_PLATE").." " .. plate,
|
||||
icon = 'key',
|
||||
onSelect = function(args)
|
||||
clonekey(plate, model, true, Config.InventoryCopyKeysCost)
|
||||
end,
|
||||
})
|
||||
end
|
||||
end
|
||||
if not keysFound then
|
||||
table.insert(elements, {
|
||||
title = Lang("NO_KEYS_FOUND"),
|
||||
icon = 'exclamation-circle',
|
||||
disabled = true,
|
||||
})
|
||||
end
|
||||
end
|
||||
table.insert(elements, {
|
||||
title = Lang("BACK_TO_PREVIOUS_MENU"),
|
||||
icon = 'arrow-left',
|
||||
onSelect = function(args)
|
||||
OpenCopyKeys()
|
||||
end,
|
||||
})
|
||||
lib.registerContext({
|
||||
id = 'VEHICLEKEYS_MENU_TITLE',
|
||||
title = Lang("VEHICLEKEYS_MENU_TITLE"),
|
||||
options = elements,
|
||||
})
|
||||
lib.showContext('VEHICLEKEYS_MENU_TITLE')
|
||||
end)
|
||||
end
|
||||
|
||||
function OpenPlateMenu()
|
||||
if Config.PlateType == 'menu' then
|
||||
local elements = {}
|
||||
|
||||
table.insert(elements, {
|
||||
title = Lang('VEHICLEKEYS_MENU_BUY_PLATE_DESCRIPTION') .. ' - $' .. Config.PlatePrice['price'],
|
||||
icon = 'car',
|
||||
onSelect = function(args)
|
||||
TriggerEvent(Config.Eventprefix .. ':buyPlate')
|
||||
end,
|
||||
})
|
||||
|
||||
table.insert(elements, {
|
||||
title = Lang('VEHICLEKEYS_MENU_BUY_CHANGEPLATE_DESCRIPTION') .. ' - $' .. Config.ChangePlateItemPrice['price'],
|
||||
icon = 'screwdriver',
|
||||
onSelect = function(args)
|
||||
TriggerEvent(Config.Eventprefix .. ':buyScrewdriver')
|
||||
end,
|
||||
})
|
||||
|
||||
lib.registerContext({
|
||||
id = 'VEHICLEKEYS_MENU_TITLE_PLATE',
|
||||
title = Lang('VEHICLEKEYS_MENU_TITLE_PLATE'),
|
||||
options = elements,
|
||||
})
|
||||
|
||||
lib.showContext('VEHICLEKEYS_MENU_TITLE_PLATE')
|
||||
end
|
||||
|
||||
if Config.PlateType == 'shop' then
|
||||
local generatePlate = GeneratePlate()
|
||||
local plate = { plate = generatePlate }
|
||||
local shop = Lang('VEHICLEKEYS_PLATE_SHOP_NAME')
|
||||
local ShopItems = {
|
||||
label = Lang('VEHICLEKEYS_PLATE_SHOP_LABEL'),
|
||||
items = {
|
||||
{ name = Config.PlateItem, amount = 1, price = Config.PlatePrice['price'], slot = 1, info = plate },
|
||||
{ name = Config.ChangePlateItem, amount = 1, price = Config.ChangePlateItemPrice['price'], slot = 2 },
|
||||
},
|
||||
}
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "shop", shop, ShopItems)
|
||||
end
|
||||
end
|
||||
|
||||
function OpenTrackerMenu(gpsdata)
|
||||
local addedVehicles = {}
|
||||
|
||||
TriggerServerCallback(Config.Eventprefix..':server:GetPlayerIdentifier', function(PlayerIdentifier)
|
||||
lib.registerContext({
|
||||
id = 'vehiclekeys_gps_menu',
|
||||
title = Lang('VEHICLEKEYS_TRACKER_MENU_TITLE'),
|
||||
options = (function()
|
||||
local options = {}
|
||||
for _, v in ipairs(gpsdata) do
|
||||
if v.Player == PlayerIdentifier and not addedVehicles[v.plate] then
|
||||
table.insert(options, {
|
||||
title = v.model,
|
||||
description = string.format(Lang('VEHICLEKEYS_TRACKER_MENU_DESC'), v.plate),
|
||||
icon = 'car',
|
||||
onSelect = function() TriggerEvent(Config.Eventprefix..':client:LocateVehicleWithPlate', v.plate) end
|
||||
})
|
||||
addedVehicles[v.plate] = true
|
||||
end
|
||||
end
|
||||
if #options == 0 then
|
||||
table.insert(options, { title = Lang('VEHICLEKEYS_TRACKER_NO_VEHICLES'), disabled = true })
|
||||
end
|
||||
return options
|
||||
end)()
|
||||
})
|
||||
|
||||
lib.showContext('vehiclekeys_gps_menu')
|
||||
end)
|
||||
end
|
||||
|
||||
+260
@@ -0,0 +1,260 @@
|
||||
if Config.MenuType ~= 'ox_lib' then
|
||||
return
|
||||
end
|
||||
if Config.Framework == 'esx' then
|
||||
return
|
||||
end
|
||||
|
||||
if Config.InventoryScript == 'qs' then
|
||||
function GetPlateFromItem(item)
|
||||
return item.info and item.info.plate or nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return item.info and item.info.description or nil
|
||||
end
|
||||
elseif Config.InventoryScript == 'ox' then
|
||||
function GetPlateFromItem(item)
|
||||
local plate = item.metadata and item.metadata.plate or nil
|
||||
return plate
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
local model = item.metadata and item.metadata.model or nil
|
||||
return model
|
||||
end
|
||||
elseif Config.InventoryScript == 'qb' then
|
||||
function GetPlateFromItem(item)
|
||||
return item.info and item.info.plate or nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return item.info and item.info.description or nil
|
||||
end
|
||||
elseif Config.InventoryScript == 'codem' then
|
||||
function GetPlateFromItem(item)
|
||||
return item.info and item.info.plate or nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return item.info and item.info[1] and item.info[1].description or nil
|
||||
end
|
||||
elseif Config.InventoryScript == 'core_inventory' then
|
||||
function GetPlateFromItem(item)
|
||||
return item.info and item.info.plate or nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return item.info and item.info.description or nil
|
||||
end
|
||||
else
|
||||
-- Handle other cases or provide a default implementation
|
||||
function GetPlateFromItem(item)
|
||||
return nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
function OpenCopyKeys()
|
||||
local elements = {}
|
||||
local vehicleMenu = {
|
||||
{
|
||||
title = Lang("VEHICLEKEYS_MENU_OWNED_VEHICLES") .. ' - $' .. Config.CopyKeysCost,
|
||||
icon = 'car',
|
||||
onSelect = function(args)
|
||||
OpenVehicleKeysMenu()
|
||||
end,
|
||||
},
|
||||
{
|
||||
title = Lang("VEHICLEKEYS_MENU_OWNED_KEYS") .. ' - $' .. Config.InventoryCopyKeysCost,
|
||||
icon = 'key',
|
||||
onSelect = function(args)
|
||||
OpenOwnedKeysMenu()
|
||||
end,
|
||||
},
|
||||
}
|
||||
lib.registerContext({
|
||||
id = 'VEHICLEKEYS_MENU_CHOICE',
|
||||
title = Lang("VEHICLEKEYS_MENU_CHOICE_TITLE"),
|
||||
options = vehicleMenu,
|
||||
})
|
||||
lib.showContext('VEHICLEKEYS_MENU_CHOICE')
|
||||
end
|
||||
|
||||
function OpenVehicleKeysMenu()
|
||||
local elements = {}
|
||||
|
||||
TriggerServerCallback(Config.Eventprefix..':server:getVehicles', function(vehicles)
|
||||
if not vehicles or #vehicles == 0 then
|
||||
print('No vehicles received from server callback')
|
||||
return
|
||||
end
|
||||
print(json.encode(vehicles))
|
||||
for _, v in pairs(vehicles) do
|
||||
local vehicleData = QBCore.Shared.Vehicles[v.vehicle]
|
||||
local vehicleName = vehicleData and vehicleData['name']
|
||||
|
||||
if not v.vehicle then
|
||||
print('Missing vehicle information:', v.vehicle)
|
||||
elseif not v.plate then
|
||||
print('Missing plate information for vehicle:', v.vehicle)
|
||||
elseif not vehicleName then
|
||||
print('Missing vehicle details:', v.vehicle, 'QBShared:', vehicleData or 'nil')
|
||||
else
|
||||
table.insert(elements, {
|
||||
title = Lang("VEHICLEKEYS_MENU_MODEL").." " .. vehicleName .. ", ".. Lang("VEHICLEKEYS_MENU_PLATE").." " .. v.plate,
|
||||
icon = 'car',
|
||||
onSelect = function(args)
|
||||
clonekey(v.plate, vehicleData['model'], true, Config.CopyKeysCost)
|
||||
end,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
table.insert(elements, {
|
||||
title = Lang("BACK_TO_PREVIOUS_MENU"),
|
||||
icon = 'arrow-left',
|
||||
onSelect = function(args)
|
||||
OpenCopyKeys()
|
||||
end,
|
||||
})
|
||||
|
||||
if #elements > 0 then
|
||||
lib.registerContext({
|
||||
id = 'VEHICLEKEYS_MENU_TITLE',
|
||||
title = Lang("VEHICLEKEYS_MENU_TITLE"),
|
||||
options = elements,
|
||||
})
|
||||
lib.showContext('VEHICLEKEYS_MENU_TITLE')
|
||||
else
|
||||
print('No valid vehicles to display in the menu')
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function OpenOwnedKeysMenu()
|
||||
local elements = {}
|
||||
TriggerServerCallback(Config.Eventprefix .. ':server:GetPlayerItems', function(items)
|
||||
if items then
|
||||
local keysFound = false
|
||||
for _, item in pairs(items) do
|
||||
local plate = GetPlateFromItem(item)
|
||||
local model = GetModelFromItem(item)
|
||||
if plate and model then
|
||||
keysFound = true
|
||||
table.insert(elements, {
|
||||
title = Lang("VEHICLEKEYS_MENU_MODEL").." " .. model .. ", ".. Lang("VEHICLEKEYS_MENU_PLATE").." " .. plate,
|
||||
icon = 'key',
|
||||
onSelect = function(args)
|
||||
clonekey(plate, model, true, Config.InventoryCopyKeysCost)
|
||||
end,
|
||||
})
|
||||
end
|
||||
end
|
||||
if not keysFound then
|
||||
table.insert(elements, {
|
||||
title = Lang("NO_KEYS_FOUND"),
|
||||
icon = 'exclamation-circle',
|
||||
disabled = true,
|
||||
})
|
||||
end
|
||||
end
|
||||
table.insert(elements, {
|
||||
title = Lang("BACK_TO_PREVIOUS_MENU"),
|
||||
icon = 'arrow-left',
|
||||
onSelect = function(args)
|
||||
OpenCopyKeys()
|
||||
end,
|
||||
})
|
||||
lib.registerContext({
|
||||
id = 'VEHICLEKEYS_MENU_TITLE',
|
||||
title = Lang("VEHICLEKEYS_MENU_TITLE"),
|
||||
options = elements,
|
||||
})
|
||||
lib.showContext('VEHICLEKEYS_MENU_TITLE')
|
||||
end)
|
||||
end
|
||||
|
||||
function OpenPlateMenu()
|
||||
|
||||
if Config.PlateType == 'menu' then
|
||||
|
||||
local elements = {}
|
||||
table.insert(elements, {
|
||||
title = Lang('VEHICLEKEYS_MENU_BUY_PLATE_DESCRIPTION') .. ' - $' .. Config.PlatePrice['price'],
|
||||
icon = 'car',
|
||||
onSelect = function(args)
|
||||
TriggerEvent(Config.Eventprefix .. ':buyPlate')
|
||||
end,
|
||||
})
|
||||
table.insert(elements, {
|
||||
title = Lang('VEHICLEKEYS_MENU_BUY_CHANGEPLATE_DESCRIPTION') .. ' - $' .. Config.ChangePlateItemPrice['price'],
|
||||
icon = 'screwdriver',
|
||||
onSelect = function(args)
|
||||
TriggerEvent(Config.Eventprefix .. ':buyScrewdriver')
|
||||
end,
|
||||
})
|
||||
|
||||
lib.registerContext({
|
||||
id = 'VEHICLEKEYS_MENU_TITLE_PLATE',
|
||||
title = Lang('VEHICLEKEYS_MENU_TITLE_PLATE'),
|
||||
options = elements,
|
||||
})
|
||||
|
||||
lib.showContext('VEHICLEKEYS_MENU_TITLE_PLATE')
|
||||
|
||||
end
|
||||
|
||||
if Config.PlateType == 'shop' then
|
||||
|
||||
local generatePlate = GeneratePlate()
|
||||
local plate = {
|
||||
plate = generatePlate,
|
||||
}
|
||||
local shop = Lang('VEHICLEKEYS_PLATE_SHOP_NAME')
|
||||
local ShopItems = {
|
||||
label = Lang('VEHICLEKEYS_PLATE_SHOP_LABEL'),
|
||||
items = {
|
||||
{name = Config.PlateItem ,amount = 1, price = Config.PlatePrice['price'], slot= 1, info = plate },
|
||||
{name = Config.ChangePlateItem, amount = 1, price = Config.ChangePlateItemPrice['price'], slot = 2 },
|
||||
},
|
||||
}
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "shop", shop, ShopItems)
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function OpenTrackerMenu(gpsdata)
|
||||
local addedVehicles = {}
|
||||
|
||||
TriggerServerCallback(Config.Eventprefix..':server:GetPlayerIdentifier', function(PlayerIdentifier)
|
||||
lib.registerContext({
|
||||
id = 'vehiclekeys_gps_menu',
|
||||
title = Lang('VEHICLEKEYS_TRACKER_MENU_TITLE'),
|
||||
options = (function()
|
||||
local options = {}
|
||||
for _, v in ipairs(gpsdata) do
|
||||
if v.Player == PlayerIdentifier and not addedVehicles[v.plate] then
|
||||
table.insert(options, {
|
||||
title = v.model,
|
||||
description = string.format(Lang('VEHICLEKEYS_TRACKER_MENU_DESC'), v.plate),
|
||||
icon = 'car',
|
||||
onSelect = function() TriggerEvent(Config.Eventprefix..':client:LocateVehicleWithPlate', v.plate) end
|
||||
})
|
||||
addedVehicles[v.plate] = true
|
||||
end
|
||||
end
|
||||
if #options == 0 then
|
||||
table.insert(options, { title = Lang('VEHICLEKEYS_TRACKER_NO_VEHICLES'), disabled = true })
|
||||
end
|
||||
return options
|
||||
end)()
|
||||
})
|
||||
|
||||
lib.showContext('vehiclekeys_gps_menu')
|
||||
end)
|
||||
end
|
||||
@@ -0,0 +1,306 @@
|
||||
if Config.MenuType ~= 'qb' then
|
||||
return
|
||||
end
|
||||
|
||||
if Config.Framework == 'esx' then
|
||||
return
|
||||
end
|
||||
|
||||
if Config.InventoryScript == 'qs' then
|
||||
function GetPlateFromItem(item)
|
||||
return item.info and item.info.plate or nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return item.info and item.info.description or nil
|
||||
end
|
||||
elseif Config.InventoryScript == 'ox' then
|
||||
function GetPlateFromItem(item)
|
||||
local plate = item.metadata and item.metadata.plate or nil
|
||||
return plate
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
local model = item.metadata and item.metadata.model or nil
|
||||
return model
|
||||
end
|
||||
elseif Config.InventoryScript == 'qb' then
|
||||
function GetPlateFromItem(item)
|
||||
return item.info and item.info.plate or nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return item.info and item.info.description or nil
|
||||
end
|
||||
elseif Config.InventoryScript == 'codem' then
|
||||
function GetPlateFromItem(item)
|
||||
return item.info and item.info.plate or nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return item.info and item.info[1] and item.info[1].description or nil
|
||||
end
|
||||
elseif Config.InventoryScript == 'core_inventory' then
|
||||
function GetPlateFromItem(item)
|
||||
return item.info and item.info.plate or nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return item.info and item.info.description or nil
|
||||
end
|
||||
else
|
||||
-- Handle other cases or provide a default implementation
|
||||
function GetPlateFromItem(item)
|
||||
return nil
|
||||
end
|
||||
|
||||
function GetModelFromItem(item)
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
function OpenCopyKeys()
|
||||
local elements = {}
|
||||
|
||||
-- Ensure Config is defined and has the expected properties
|
||||
if not Config or not Config.MenuType or not Config.CopyKeysCost or not Config.InventoryCopyKeysCost then
|
||||
print("Error: Config is not properly defined.")
|
||||
return
|
||||
end
|
||||
|
||||
-- Add the menu header
|
||||
table.insert(elements, {
|
||||
header = Lang("VEHICLEKEYS_MENU_CHOICE_TITLE"),
|
||||
icon = 'fa-solid fa-infinity',
|
||||
isMenuHeader = true,
|
||||
})
|
||||
|
||||
-- Add menu options
|
||||
table.insert(elements, {
|
||||
header = Lang("VEHICLEKEYS_MENU_OWNED_VEHICLES") .. ' - $' .. Config.CopyKeysCost,
|
||||
icon = 'car',
|
||||
params = {
|
||||
isAction = true,
|
||||
event = OpenVehicleKeysMenu, -- Reference to the function without ()
|
||||
args = {}
|
||||
}
|
||||
})
|
||||
|
||||
table.insert(elements, {
|
||||
header = Lang("VEHICLEKEYS_MENU_OWNED_KEYS") .. ' - $' .. Config.InventoryCopyKeysCost,
|
||||
icon = 'key',
|
||||
params = {
|
||||
isAction = true,
|
||||
event = OpenOwnedKeysMenu, -- Reference to the function without ()
|
||||
args = {}
|
||||
}
|
||||
})
|
||||
|
||||
-- Ensure 'qb-menu' is set correctly
|
||||
if not exports['qb-menu'] then
|
||||
print("Error: qb-menu resource not found.")
|
||||
return
|
||||
end
|
||||
|
||||
exports['qb-menu']:openMenu(elements)
|
||||
end
|
||||
|
||||
|
||||
function OpenVehicleKeysMenu()
|
||||
local elements = {}
|
||||
|
||||
TriggerServerCallback(Config.Eventprefix..':server:getVehicles', function(vehicles)
|
||||
table.insert(elements, {
|
||||
isMenuHeader = true,
|
||||
header = Lang("VEHICLEKEYS_MENU_TITLE"),
|
||||
icon = 'fa-solid fa-infinity'
|
||||
})
|
||||
|
||||
for k,v in pairs(vehicles) do -- loop through our table
|
||||
if not v.vehicle then
|
||||
return print('Missing vehicle:', v.vehicle)
|
||||
elseif not v.plate then
|
||||
return print('Missing plate:', v.plate, ' Vehicle:', v.vehicle)
|
||||
end
|
||||
|
||||
if not QBCore.Shared.Vehicles or not QBCore.Shared.Vehicles[v.vehicle] or not QBCore.Shared.Vehicles[v.vehicle]['name'] then
|
||||
return print('Missing vehicle details:', v.vehicle, 'QBShared : ', QBCore.Shared.Vehicles[v.vehicle] and QBCore.Shared.Vehicles[v.vehicle]['name'] or 'nil')
|
||||
end
|
||||
|
||||
table.insert(elements, {
|
||||
header = Lang("VEHICLEKEYS_MENU_MODEL").." " .. QBCore.Shared.Vehicles[v.vehicle]['name'] .. " ",
|
||||
txt = Lang("VEHICLEKEYS_MENU_PLATE").." " .. v.plate,
|
||||
icon = 'fa-solid fa-face-grin-tears',
|
||||
params = {
|
||||
isAction = true,
|
||||
event = function()
|
||||
clonekey(v.plate, QBCore.Shared.Vehicles[v.vehicle]['model'], true, Config.CopyKeysCost)
|
||||
end,
|
||||
args = {}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
table.insert(elements, {
|
||||
header = Lang("BACK_TO_PREVIOUS_MENU"),
|
||||
icon = 'arrow-left',
|
||||
params = {
|
||||
isAction = true,
|
||||
event = OpenCopyKeys,
|
||||
args = {}
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
exports[qb_menu_name]:openMenu(elements) -- open our menu
|
||||
end)
|
||||
end
|
||||
|
||||
function OpenOwnedKeysMenu()
|
||||
local elements = {}
|
||||
|
||||
TriggerServerCallback(Config.Eventprefix .. ':server:GetPlayerItems', function(items)
|
||||
if items and next(items) ~= nil then -- Check if items is not empty
|
||||
local keysFound = false
|
||||
for _, item in pairs(items) do
|
||||
local plate = GetPlateFromItem(item)
|
||||
local model = GetModelFromItem(item)
|
||||
if plate and model then
|
||||
keysFound = true
|
||||
table.insert(elements, {
|
||||
header = Lang("VEHICLEKEYS_MENU_MODEL").." " .. model .. " ",
|
||||
txt = Lang("VEHICLEKEYS_MENU_PLATE").." " .. plate,
|
||||
icon = 'fa-solid fa-face-grin-tears',
|
||||
params = {
|
||||
isAction = true,
|
||||
event = function()
|
||||
clonekey(plate, model, true, Config.InventoryCopyKeysCost)
|
||||
end,
|
||||
args = {}
|
||||
}
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
if not keysFound then
|
||||
table.insert(elements, {
|
||||
header = Lang("NO_KEYS_FOUND"),
|
||||
icon = 'exclamation-circle',
|
||||
disabled = true,
|
||||
})
|
||||
end
|
||||
else
|
||||
table.insert(elements, {
|
||||
header = Lang("NO_KEYS_FOUND"),
|
||||
icon = 'exclamation-circle',
|
||||
disabled = true,
|
||||
})
|
||||
end
|
||||
|
||||
table.insert(elements, {
|
||||
header = Lang("BACK_TO_PREVIOUS_MENU"),
|
||||
icon = 'arrow-left',
|
||||
params = {
|
||||
isAction = true,
|
||||
event = OpenCopyKeys,
|
||||
args = {}
|
||||
}
|
||||
})
|
||||
|
||||
-- Adapt the following lines for qb-menu
|
||||
exports['qb-menu']:openMenu(elements) -- open our menu
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
|
||||
function OpenPlateMenu()
|
||||
if Config.PlateType == 'menu' then
|
||||
local elements = {}
|
||||
table.insert(elements, {
|
||||
isHeader = true,
|
||||
header = Lang("VEHICLEKEYS_MENU_TITLE_PLATE"),
|
||||
icon = 'fa-solid fa-toolbox',
|
||||
isMenuHeader = true,
|
||||
})
|
||||
table.insert(elements, {
|
||||
header = Lang("VEHICLEKEYS_MENU_BUY_PLATE"),
|
||||
txt = Lang("VEHICLEKEYS_MENU_BUY_PLATE_DESCRIPTION")..Config.PlatePrice['price'],
|
||||
icon = 'fa-solid fa-face-grin-tears',
|
||||
params = {
|
||||
event = Config.Eventprefix..':buyPlate',
|
||||
}
|
||||
})
|
||||
table.insert(elements, {
|
||||
header = Lang("VEHICLEKEYS_MENU_BUY_SCREWDRIVER"),
|
||||
txt = Lang('VEHICLEKEYS_MENU_BUY_CHANGEPLATE_DESCRIPTION') .. Config.ChangePlateItemPrice['price'],
|
||||
icon = 'fa-solid fa-screwdriver',
|
||||
params = {
|
||||
event = Config.Eventprefix..':buyScrewdriver',
|
||||
}
|
||||
})
|
||||
exports[qb_menu_name]:openMenu(elements)
|
||||
end
|
||||
if Config.PlateType == 'shop' then
|
||||
local generatePlate = GeneratePlate()
|
||||
local plate = {
|
||||
plate = generatePlate,
|
||||
}
|
||||
local shop = Lang('VEHICLEKEYS_PLATE_SHOP_NAME')
|
||||
local ShopItems = {
|
||||
label = Lang('VEHICLEKEYS_PLATE_SHOP_LABEL'),
|
||||
items = {
|
||||
{name = Config.PlateItem ,amount = 1, price = Config.PlatePrice['price'], slot= 1, info = plate },
|
||||
{name = Config.ChangePlateItem, amount = 1, price = Config.ChangePlateItemPrice['price'], slot = 2 },
|
||||
},
|
||||
}
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "shop", shop, ShopItems)
|
||||
end
|
||||
end
|
||||
|
||||
function OpenTrackerMenu(gpsdata)
|
||||
local addedVehicles = {}
|
||||
|
||||
TriggerServerCallback(Config.Eventprefix..':server:GetPlayerIdentifier', function(PlayerIdentifier)
|
||||
local elements = {}
|
||||
|
||||
for _, v in ipairs(gpsdata) do
|
||||
if v.Player == PlayerIdentifier and not addedVehicles[v.plate] then
|
||||
table.insert(elements, {
|
||||
header = string.format(Lang('VEHICLEKEYS_TRACKER_MENU_DESC'), v.plate),
|
||||
txt = v.model,
|
||||
icon = 'car',
|
||||
params = {
|
||||
isAction = true,
|
||||
event = function()
|
||||
TriggerEvent(Config.Eventprefix..':client:LocateVehicleWithPlate', v.plate)
|
||||
end,
|
||||
args = {}
|
||||
}
|
||||
})
|
||||
addedVehicles[v.plate] = true
|
||||
end
|
||||
end
|
||||
|
||||
if #elements == 0 then
|
||||
table.insert(elements, {
|
||||
header = Lang('VEHICLEKEYS_TRACKER_NO_VEHICLES'),
|
||||
icon = 'exclamation-circle',
|
||||
disabled = true,
|
||||
})
|
||||
end
|
||||
|
||||
table.insert(elements, {
|
||||
header = Lang('BACK_TO_PREVIOUS_MENU'),
|
||||
icon = 'arrow-left',
|
||||
params = {
|
||||
isAction = true,
|
||||
event = OpenPreviousMenu, -- Cambiar a la función para regresar al menú anterior
|
||||
args = {}
|
||||
}
|
||||
})
|
||||
|
||||
-- Open the menu using qb-menu
|
||||
exports['qb-menu']:openMenu(elements) -- Abre el menú
|
||||
end)
|
||||
end
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
if Config.HotKeys then
|
||||
CreateThread(function()
|
||||
while true do
|
||||
if IsControlJustPressed(0, Config.Controls.UseKey) then
|
||||
UseCommandKey()
|
||||
end
|
||||
|
||||
Wait(0)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
RegisterCommand('usekey', function()
|
||||
UseCommandKey()
|
||||
end, false)
|
||||
|
||||
-- if Config.HotKeys then
|
||||
-- if not Config.ControlerSupport then
|
||||
-- lib.addKeybind({
|
||||
-- name = 'engine',
|
||||
-- description = Lang('VEHICLEKEYS_ENGINE_TOGGLE'),
|
||||
-- defaultKey = Config.Controls.EngineControl,
|
||||
-- onPressed = function()
|
||||
-- toggleEngine()
|
||||
-- end
|
||||
-- })
|
||||
-- end
|
||||
|
||||
-- lib.addKeybind({
|
||||
-- name = 'usekey',
|
||||
-- description = Lang('VEHICLEKEYS_USE_KEY'),
|
||||
-- defaultKey = Config.Controls.UseKey,
|
||||
-- onPressed = function()
|
||||
-- UseCommandKey()
|
||||
-- end
|
||||
-- })
|
||||
|
||||
-- RegisterKeyMapping('hotwire', Lang('VEHICLEKEYS_HOTWIRE'), 'keyboard', Config.Controls.HotwireControl)
|
||||
|
||||
-- if Config.AnchorKeybind then
|
||||
-- lib.addKeybind({
|
||||
-- name = 'anchor',
|
||||
-- description = Lang('VEHICLEKEYS_ANCHOR_BOAT'),
|
||||
-- defaultKey = '',
|
||||
-- onPressed = function()
|
||||
-- ExecuteCommand('anchor')
|
||||
-- end
|
||||
-- })
|
||||
-- end
|
||||
-- end
|
||||
|
||||
-- RegisterCommand('usekey', function()
|
||||
-- UseCommandKey()
|
||||
-- end, false)
|
||||
|
||||
-- RegisterCommand('hotwire', function()
|
||||
-- HandleHotwireProcess()
|
||||
-- end, false)
|
||||
+379
@@ -0,0 +1,379 @@
|
||||
-- Check if Context Menu is enabled in the configuration
|
||||
if not Config.Context then return end
|
||||
|
||||
function OpenMainMenu()
|
||||
local elements = {}
|
||||
|
||||
table.insert(elements, {
|
||||
title = Lang("VEHICLEKEYS_MENU_CLEAN_KEYS_TITLE"),
|
||||
description = Lang("VEHICLEKEYS_MENU_CLEAN_KEYS_DESCRIPTION"),
|
||||
icon = 'wrench',
|
||||
onSelect = function(args)
|
||||
CleanVehicleKeys()
|
||||
end,
|
||||
})
|
||||
table.insert(elements, {
|
||||
title = Lang("VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_TITLE"),
|
||||
description = Lang("VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_DESCRIPTION"),
|
||||
icon = 'key',
|
||||
onSelect = function(args)
|
||||
OpenAllKeysMenu()
|
||||
end,
|
||||
})
|
||||
|
||||
lib.registerContext({
|
||||
id = 'MAIN_MENU_TITLE',
|
||||
title = Lang("VEHICLEKEYS_MAIN_MENU_TITLE"),
|
||||
options = elements,
|
||||
})
|
||||
lib.showContext('MAIN_MENU_TITLE')
|
||||
end
|
||||
|
||||
|
||||
function OpenAllKeysMenu()
|
||||
local elements = {}
|
||||
local function AddKeyToAllKeysMenu(title, plate, model)
|
||||
table.insert(elements, {
|
||||
title = title,
|
||||
icon = 'key',
|
||||
onSelect = function(args)
|
||||
CreateKeyMenuItem(title, plate, model)
|
||||
end,
|
||||
})
|
||||
end
|
||||
TriggerServerCallback(Config.Eventprefix .. ':server:GetPlayerItems', function(items)
|
||||
if items then
|
||||
local keysFound = false
|
||||
for _, item in pairs(items) do
|
||||
local plate = GetPlateFromItem(item)
|
||||
local model = GetModelFromItem(item)
|
||||
if plate and model then
|
||||
keysFound = true
|
||||
AddKeyToAllKeysMenu(Lang("VEHICLEKEYS_MENU_MODEL").." " .. model .. ", ".. Lang("VEHICLEKEYS_MENU_PLATE").." " .. plate, plate, model)
|
||||
end
|
||||
end
|
||||
if not keysFound then
|
||||
table.insert(elements, {
|
||||
title = Lang("NO_KEYS_FOUND"),
|
||||
icon = 'exclamation-circle',
|
||||
disabled = true,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
table.insert(elements, {
|
||||
title = Lang("BACK_TO_PREVIOUS_MENU"),
|
||||
icon = 'arrow-left',
|
||||
onSelect = function(args)
|
||||
OpenMainMenu()
|
||||
end,
|
||||
})
|
||||
|
||||
lib.registerContext({
|
||||
id = 'ALL_KEYS_MENU',
|
||||
title = Lang("VEHICLEKEYS_ALL_KEYS_MENU_TITLE"),
|
||||
options = elements,
|
||||
})
|
||||
lib.showContext('ALL_KEYS_MENU')
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
function CreateKeyMenuItem(title, plate, model)
|
||||
lib.registerContext({
|
||||
id = 'keysactions',
|
||||
title = 'Actions',
|
||||
options = {
|
||||
{
|
||||
title = Lang("VEHICLEKEYS_MENU_KEY_MENU_HEADER"),
|
||||
icon = "info",
|
||||
disabled = true,
|
||||
description = Lang("VEHICLEKEYS_MENU_KEY_MENU_MODEL") .. " " .. model .. " " ..
|
||||
Lang("VEHICLEKEYS_MENU_KEY_MENU_PLATE") .. " " .. plate
|
||||
|
||||
},
|
||||
{
|
||||
title = Lang("VEHICLEKEYS_MENU_USE_KEY_TITLE"),
|
||||
description = Lang("VEHICLEKEYS_MENU_USE_KEY_DESCRIPTION"),
|
||||
icon = "check",
|
||||
metadata = {
|
||||
{ label = 'Action', value = Lang("VEHICLEKEYS_MENU_USE_KEY_DESCRIPTION") },
|
||||
},
|
||||
onSelect = function(args)
|
||||
handleDoorLock(plate, model)
|
||||
end
|
||||
},
|
||||
{
|
||||
title = Lang("VEHICLEKEYS_MENU_GIVE_KEY_TITLE"),
|
||||
icon = "handshake",
|
||||
description = Lang("VEHICLEKEYS_MENU_GIVE_KEY_DESCRIPTION"),
|
||||
metadata = {
|
||||
{ label = 'Action', value = Lang("VEHICLEKEYS_MENU_GIVE_KEY_DESCRIPTION") },
|
||||
},
|
||||
onSelect = function(args)
|
||||
ShowNearbyPlayersMenu(plate, model)
|
||||
end
|
||||
},
|
||||
{
|
||||
title = Lang("VEHICLEKEYS_MENU_TRASH_KEY_TITLE"),
|
||||
icon = "trash",
|
||||
description = Lang("VEHICLEKEYS_MENU_TRASH_KEY_DESCRIPTION"),
|
||||
metadata = {
|
||||
{ label = 'Action', value = Lang("VEHICLEKEYS_MENU_TRASH_KEY_DESCRIPTION") },
|
||||
},
|
||||
onSelect = function(args)
|
||||
exports['qs-vehiclekeys']:RemoveKeys(plate, model)
|
||||
end
|
||||
},
|
||||
{
|
||||
title = Lang("BACK_TO_PREVIOUS_MENU"),
|
||||
icon = "arrow-left",
|
||||
onSelect = function(args)
|
||||
OpenAllKeysMenu()
|
||||
end
|
||||
},
|
||||
}
|
||||
})
|
||||
lib.showContext('keysactions')
|
||||
end
|
||||
|
||||
function getClosestVehicle(coords, maxDistance, includePlayerVehicle)
|
||||
return lib.getClosestVehicle(coords, maxDistance, includePlayerVehicle)
|
||||
end
|
||||
|
||||
function handleDoorLock(plate, model)
|
||||
local coords = GetEntityCoords(PlayerPedId())
|
||||
local vehicle, _ = getClosestVehicle(coords, 5.0, true)
|
||||
if vehicle then
|
||||
local vehiclePlate = GetVehicleNumberPlateText(vehicle)
|
||||
local vehicleModel = GetDisplayNameFromVehicleModel(GetEntityModel(vehicle))
|
||||
if vehiclePlate == plate and vehicleModel == model then
|
||||
local hasKey = exports['qs-vehiclekeys']:GetKey(plate)
|
||||
if hasKey then
|
||||
exports["qs-vehiclekeys"]:DoorLogic(vehicle)
|
||||
for door = 0, 5 do
|
||||
SetVehicleDoorShut(vehicle, door, false, false)
|
||||
end
|
||||
else
|
||||
SendTextMessage(Lang('VEHICLEKEYS_NOTIFICATION_NO_KEYS'), 'error')
|
||||
end
|
||||
else
|
||||
SendTextMessage(Lang('VEHICLEKEYS_NOTIFICATION_NO_MATCH'), 'error')
|
||||
end
|
||||
else
|
||||
SendTextMessage(Lang('VEHICLEKEYS_NOTIFICATION_NO_VEHICLES'), 'error')
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function GetPlayersInRadius(x, y, z, radius)
|
||||
local currentPlayerId = GetPlayerServerId(PlayerId())
|
||||
local players = ""
|
||||
for i = 0, 255 do
|
||||
if NetworkIsPlayerActive(i) then
|
||||
local playerPed = GetPlayerPed(i)
|
||||
local playerCoords = GetEntityCoords(playerPed, false)
|
||||
local distance = GetDistanceBetweenCoords(x, y, z, playerCoords, true)
|
||||
local playerId = GetPlayerServerId(i)
|
||||
if distance <= radius and playerId ~= currentPlayerId then
|
||||
if players == "" then
|
||||
players = tostring(playerId)
|
||||
else
|
||||
players = players .. "," .. tostring(playerId)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return players
|
||||
end
|
||||
|
||||
function ShowNearbyPlayersMenu(plate, model)
|
||||
local playerPed = GetPlayerPed(-1) -- Get the player's ped
|
||||
local x, y, z = table.unpack(GetEntityCoords(playerPed, false))
|
||||
local nearbyPlayers = GetPlayersInRadius(x, y, z, 2.0)
|
||||
|
||||
local elements = {}
|
||||
|
||||
if #nearbyPlayers == 0 then
|
||||
table.insert(elements, {
|
||||
title = Lang("VEHICLEKEYS_NO_PLAYERS_FOUND"),
|
||||
icon = 'exclamation-circle',
|
||||
disabled = true,
|
||||
})
|
||||
else
|
||||
local playerIds = {}
|
||||
for playerId in nearbyPlayers:gmatch("[^,]+") do
|
||||
table.insert(playerIds, playerId)
|
||||
end
|
||||
|
||||
for _, playerId in ipairs(playerIds) do
|
||||
table.insert(elements, {
|
||||
title = playerId,
|
||||
icon = 'user',
|
||||
onSelect = function()
|
||||
CheckAndGiveKey(plate, model, playerId)
|
||||
end
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
table.insert(elements, {
|
||||
title = Lang("BACK_TO_PREVIOUS_MENU"),
|
||||
icon = 'arrow-left',
|
||||
onSelect = function(args)
|
||||
CreateKeyMenuItem(title, plate, model)
|
||||
end,
|
||||
})
|
||||
|
||||
lib.registerContext({
|
||||
id = 'vehiclekeys_nearby_players',
|
||||
title = Lang("VEHICLEKEYS_NEARBY_PLAYERS_MENU_TITLE"),
|
||||
options = elements
|
||||
})
|
||||
lib.showContext('vehiclekeys_nearby_players')
|
||||
end
|
||||
|
||||
function CleanVehicleKeys()
|
||||
if Config.Framework == "esx" then
|
||||
-- ESX Framework logic
|
||||
TriggerServerCallback(Config.Eventprefix .. ':server:getVehicles', function(vehicles)
|
||||
if vehicles then
|
||||
local ownedVehicles = {}
|
||||
for _, v in pairs(vehicles) do
|
||||
local hashVehicle = v.vehicle.model
|
||||
local plate = v.vehicle.plate
|
||||
local vehicleName = GetDisplayNameFromVehicleModel(hashVehicle)
|
||||
ownedVehicles[plate] = vehicleName
|
||||
end
|
||||
TriggerServerCallback(Config.Eventprefix .. ':server:GetPlayerItems', function(items)
|
||||
if items then
|
||||
local keysRemoved = true
|
||||
for _, item in pairs(items) do
|
||||
local plate = GetPlateFromItem(item)
|
||||
local model = GetModelFromItem(item)
|
||||
if plate and model then
|
||||
if not ownedVehicles[plate] or ownedVehicles[plate] ~= model then
|
||||
exports['qs-vehiclekeys']:RemoveKeys(plate, model)
|
||||
keysRemoved = false
|
||||
end
|
||||
end
|
||||
end
|
||||
if keysRemoved then
|
||||
SendTextMessage(Lang('VEHICLEKEYS_MENU_CLEAN_KEYS_ERROR'), 'error')
|
||||
else
|
||||
SendTextMessage(Lang('VEHICLEKEYS_MENU_CLEAN_KEYS_SUCCESS'), 'inform')
|
||||
end
|
||||
else
|
||||
SendTextMessage(Lang('VEHICLEKEYS_MENU_CLEAN_KEYS_ERROR'), 'error')
|
||||
end
|
||||
end)
|
||||
end
|
||||
end)
|
||||
elseif Config.Framework == "qb" then
|
||||
-- QBCore Framework logic
|
||||
TriggerServerCallback(Config.Eventprefix .. ':server:getVehicles', function(vehicles)
|
||||
if not vehicles then
|
||||
print('No vehicles received from server callback')
|
||||
return
|
||||
end
|
||||
|
||||
local ownedVehicles = {}
|
||||
for _, v in pairs(vehicles) do
|
||||
if v.vehicle and v.plate then
|
||||
local vehicleName = GetDisplayNameFromVehicleModel(v.vehicle.model)
|
||||
ownedVehicles[v.plate] = vehicleName
|
||||
else
|
||||
print('Missing vehicle or plate information:', v.vehicle, v.plate)
|
||||
end
|
||||
end
|
||||
|
||||
TriggerServerCallback(Config.Eventprefix .. ':server:GetPlayerItems', function(items)
|
||||
if items then
|
||||
local keysRemoved = true
|
||||
for _, item in pairs(items) do
|
||||
local plate = GetPlateFromItem(item)
|
||||
local model = GetModelFromItem(item)
|
||||
if plate and model then
|
||||
if not ownedVehicles[plate] or ownedVehicles[plate] ~= model then
|
||||
exports['qs-vehiclekeys']:RemoveKeys(plate, model)
|
||||
keysRemoved = false
|
||||
end
|
||||
end
|
||||
end
|
||||
if keysRemoved then
|
||||
SendTextMessage(Lang('VEHICLEKEYS_MENU_CLEAN_KEYS_ERROR'), 'error')
|
||||
else
|
||||
SendTextMessage(Lang('VEHICLEKEYS_MENU_CLEAN_KEYS_SUCCESS'), 'inform')
|
||||
end
|
||||
else
|
||||
SendTextMessage(Lang('VEHICLEKEYS_MENU_CLEAN_KEYS_ERROR'), 'error')
|
||||
end
|
||||
end)
|
||||
end)
|
||||
else
|
||||
print("Invalid framework specified in configuration.")
|
||||
end
|
||||
end
|
||||
|
||||
function PlayGiveAnimation()
|
||||
local EmoteData = {
|
||||
Animation = 'givetake1_a',
|
||||
Dictionary = 'mp_common',
|
||||
Options = {
|
||||
Duration = 2000,
|
||||
Flags = {
|
||||
Move = true,
|
||||
},
|
||||
},
|
||||
}
|
||||
PlayEmote(EmoteData)
|
||||
end
|
||||
|
||||
function CheckAndGiveKey(plate, model, targetPlayerId)
|
||||
PlayGiveAnimation()
|
||||
|
||||
exports['qs-vehiclekeys']:RemoveKeys(plate, model)
|
||||
TriggerServerEvent('vehiclekeys:server:givekeyother', plate, model, targetPlayerId)
|
||||
end
|
||||
|
||||
RegisterNetEvent('vehiclekeys:client:givekeyclient')
|
||||
AddEventHandler('vehiclekeys:client:givekeyclient', function(plate, model)
|
||||
PlayGiveAnimation()
|
||||
|
||||
exports['qs-vehiclekeys']:GiveKeys(plate, model)
|
||||
end)
|
||||
|
||||
|
||||
function PlayEmote(animationData)
|
||||
local dict = animationData.Dictionary
|
||||
local anim = animationData.Animation
|
||||
|
||||
local function LoadAnimationDict(dict, timeout)
|
||||
RequestAnimDict(dict)
|
||||
local startTick = GetGameTimer()
|
||||
while not HasAnimDictLoaded(dict) do
|
||||
Citizen.Wait(0)
|
||||
if GetGameTimer() - startTick > timeout then
|
||||
print("Failed to load animation dictionary: " .. dict)
|
||||
return false
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
local function PlayAnimation()
|
||||
if not LoadAnimationDict(dict, 500) then
|
||||
return
|
||||
end
|
||||
TaskPlayAnim(PlayerPedId(), dict, anim, 2.0, 2.0, animationData.Options.Duration, 0, 0, false, false, false)
|
||||
RemoveAnimDict(dict)
|
||||
end
|
||||
|
||||
PlayAnimation()
|
||||
end
|
||||
|
||||
|
||||
RegisterCommand("openkeys", function(source, args, rawCommand)
|
||||
OpenMainMenu()
|
||||
end, false)
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
RegisterNetEvent(Config.Eventprefix .. ':client:toggleEngine', function(forcestate)
|
||||
toggleEngine(forcestate)
|
||||
end)
|
||||
|
||||
function toggleEngine(forcestate)
|
||||
|
||||
-- local playerPed = PlayerPedId()
|
||||
-- local vehicle = GetVehiclePedIsIn(playerPed, false)
|
||||
-- if not vehicle or vehicle == 0 or IsPauseMenuActive() then return end
|
||||
|
||||
-- local isDriver = GetPedInVehicleSeat(vehicle, -1) == playerPed
|
||||
-- local hasKey = exports['qs-vehiclekeys']:GetKey(GetVehicleNumberPlateText(vehicle)) or not Config.ToggleEngineRequireKeys
|
||||
-- local isJobShared = AreKeysJobShared(vehicle)
|
||||
|
||||
-- if not (isDriver and (hasKey or isJobShared)) then
|
||||
-- return SendTextMessage(Lang('VEHICLEKEYS_NOTIFICATION_NO_PERMISSION'), 'error')
|
||||
-- end
|
||||
|
||||
-- local engineRunning = GetIsVehicleEngineRunning(vehicle)
|
||||
-- if forcestate ~= nil then
|
||||
-- if Config.EngineInteriorLights then
|
||||
-- SetVehicleInteriorlight(vehicle, forcestate)
|
||||
-- end
|
||||
-- SetVehicleEngineOn(vehicle, forcestate, false, true)
|
||||
-- else
|
||||
-- if engineRunning then
|
||||
-- if Config.EngineInteriorLights then
|
||||
-- SetVehicleInteriorlight(vehicle, false)
|
||||
-- end
|
||||
-- SetVehicleEngineOn(vehicle, false, false, true)
|
||||
-- SendTextMessage(Lang('VEHICLEKEYS_NOTIFICATION_ENGINE_STOPPED'), 'error')
|
||||
-- else
|
||||
-- if Config.EngineInteriorLights then
|
||||
-- SetVehicleInteriorlight(vehicle, true)
|
||||
-- end
|
||||
-- SetVehicleEngineOn(vehicle, true, false, true)
|
||||
-- SendTextMessage(Lang('VEHICLEKEYS_NOTIFICATION_ENGINE_STARTED'), 'success')
|
||||
-- end
|
||||
-- end
|
||||
end
|
||||
|
||||
-- exports('toggleEngine', toggleEngine)
|
||||
|
||||
function isEngineRunning(vehicle)
|
||||
local playerPed = PlayerPedId()
|
||||
vehicle = vehicle or GetVehiclePedIsIn(playerPed, false)
|
||||
if vehicle and vehicle ~= 0 then
|
||||
local engineRunning = GetIsVehicleEngineRunning(vehicle)
|
||||
if engineRunning == '1' then
|
||||
engineRunning = true
|
||||
end
|
||||
return engineRunning
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
exports('isEngineRunning', isEngineRunning)
|
||||
@@ -0,0 +1,31 @@
|
||||
exports('GiveKeysAuto', function()
|
||||
GiveKeysAuto()
|
||||
end)
|
||||
|
||||
exports('GetKeyAuto', function()
|
||||
return GetKeyAuto()
|
||||
end)
|
||||
|
||||
exports('RemoveKeysAuto', function()
|
||||
RemoveKeysAuto()
|
||||
end)
|
||||
|
||||
exports('GiveKeys', function(plate, model, bypassKeyCheck)
|
||||
GiveKeys(plate, model, bypassKeyCheck)
|
||||
end)
|
||||
|
||||
exports('RemoveKeys', function(plate, model)
|
||||
RemoveKeys(plate, model)
|
||||
end)
|
||||
|
||||
exports('GetKey', function(plate)
|
||||
return GetKey(plate)
|
||||
end)
|
||||
|
||||
exports('OpenCar', function(vehicle)
|
||||
DoorLogic(vehicle)
|
||||
end)
|
||||
|
||||
exports('CloseCar', function(vehicle)
|
||||
DoorLogic(vehicle)
|
||||
end)
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
-- OX inventory
|
||||
if Config.InventoryScript ~= 'ox' then
|
||||
return
|
||||
end
|
||||
|
||||
local ox_inventory = exports.ox_inventory
|
||||
exports('useKey', function(data, slot)
|
||||
ox_inventory:useItem(data, function(data)
|
||||
if data then
|
||||
TriggerEvent(Config.Eventprefix..':client:UseKey', data.metadata.plate, data.metadata.model)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
exports('usePlate', function(data, slot)
|
||||
ox_inventory:useItem(data, function(data)
|
||||
if data then
|
||||
TriggerEvent(Config.Eventprefix..':client:UsePlate', data.metadata.plate)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
exports('useCarlockpick', function(data, slot)
|
||||
ox_inventory:useItem(data, function(data)
|
||||
if data then
|
||||
useLockpick(false)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
exports('useAdvancedCarlockpick', function(data, slot)
|
||||
ox_inventory:useItem(data, function(data)
|
||||
if data then
|
||||
useLockpick(true)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
exports('useVehiclegps', function(data, slot)
|
||||
ox_inventory:useItem(data, function(data)
|
||||
if data then
|
||||
TriggerEvent(Config.Eventprefix..':client:UseGPS')
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
exports('useVehicletracker', function(data, slot)
|
||||
ox_inventory:useItem(data, function(data)
|
||||
if data then
|
||||
TriggerEvent(Config.Eventprefix..':client:UseTracker')
|
||||
end
|
||||
end)
|
||||
end)
|
||||
@@ -0,0 +1,307 @@
|
||||
--[[
|
||||
██████╗░░█████╗░██████╗░██╗░█████╗░██╗░░░░░ ███╗░░░███╗███████╗███╗░░██╗██╗░░░██╗
|
||||
██╔══██╗██╔══██╗██╔══██╗██║██╔══██╗██║░░░░░ ████╗░████║██╔════╝████╗░██║██║░░░██║
|
||||
██████╔╝███████║██║░░██║██║███████║██║░░░░░ ██╔████╔██║█████╗░░██╔██╗██║██║░░░██║
|
||||
██╔══██╗██╔══██║██║░░██║██║██╔══██║██║░░░░░ ██║╚██╔╝██║██╔══╝░░██║╚████║██║░░░██║
|
||||
██║░░██║██║░░██║██████╔╝██║██║░░██║███████╗ ██║░╚═╝░██║███████╗██║░╚███║╚██████╔╝
|
||||
╚═╝░░╚═╝╚═╝░░╚═╝╚═════╝░╚═╝╚═╝░░╚═╝╚══════╝ ╚═╝░░░░░╚═╝╚══════╝╚═╝░░╚══╝░╚═════╝░
|
||||
]]--
|
||||
|
||||
-- Check if Radial is enabled in the configuration
|
||||
if not Config.Radial then return end
|
||||
|
||||
function GetClosestVehicle()
|
||||
local playerCoords = GetEntityCoords(PlayerPedId())
|
||||
local vehicles = GetGamePool("CVehicle")
|
||||
|
||||
local closestVehicle, closestDistance
|
||||
|
||||
for _, vehicle in ipairs(vehicles) do
|
||||
local distance = #(playerCoords - GetEntityCoords(vehicle))^2
|
||||
|
||||
if not closestDistance or distance < closestDistance then
|
||||
closestVehicle = vehicle
|
||||
closestDistance = math.sqrt(distance)
|
||||
end
|
||||
end
|
||||
|
||||
return closestVehicle, closestDistance
|
||||
end
|
||||
|
||||
-- CreateThread(function()
|
||||
-- local radialItemAdded = false
|
||||
-- lib.removeRadialItem('carkeys')
|
||||
|
||||
-- while true do
|
||||
-- Wait(1000)
|
||||
-- local maxDistance = 4.0
|
||||
-- local vehicle, distance = GetClosestVehicle()
|
||||
|
||||
-- if vehicle and distance < maxDistance then
|
||||
-- local plate = GetVehicleNumberPlateText(vehicle)
|
||||
-- local hasKey = exports['qs-vehiclekeys']:GetKey(plate)
|
||||
|
||||
-- if hasKey and not radialItemAdded then
|
||||
-- lib.addRadialItem({
|
||||
-- {
|
||||
-- id = 'carkeys',
|
||||
-- label = Lang('VEHICLEKEYS_RADIAL_VEHICLEKEYS_LABEL'),
|
||||
-- icon = "key",
|
||||
-- onSelect = function()
|
||||
-- exports["qs-vehiclekeys"]:DoorLogic(vehicle)
|
||||
-- end
|
||||
-- }
|
||||
-- })
|
||||
-- radialItemAdded = true
|
||||
-- elseif not hasKey and radialItemAdded then
|
||||
-- lib.removeRadialItem('carkeys')
|
||||
-- radialItemAdded = false
|
||||
-- end
|
||||
-- else
|
||||
-- if radialItemAdded then
|
||||
-- lib.removeRadialItem('carkeys')
|
||||
-- radialItemAdded = false
|
||||
-- end
|
||||
-- end
|
||||
-- end
|
||||
-- end)
|
||||
|
||||
|
||||
--[[
|
||||
█▀▀ ▄▀█ █▀█ █▀▄ █▀█ █▀█ █▀█ █▀
|
||||
█▄▄ █▀█ █▀▄ █▄▀ █▄█ █▄█ █▀▄ ▄█
|
||||
]]--
|
||||
|
||||
lib.registerRadial({
|
||||
id = 'car_doors',
|
||||
items = {
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_REARRIGHT_LABEL'),
|
||||
icon = 'car-side',
|
||||
onSelect = function()
|
||||
doorToggle(3)
|
||||
end
|
||||
},
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_TRUNK_LABEL'),
|
||||
icon = 'car-rear',
|
||||
onSelect = function()
|
||||
doorToggle(5)
|
||||
end
|
||||
},
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_PASSENGER_LABEL'),
|
||||
icon = 'car-side',
|
||||
onSelect = function()
|
||||
doorToggle(1)
|
||||
end
|
||||
},
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_DRIVER_LABEL'),
|
||||
icon = 'car-side',
|
||||
onSelect = function()
|
||||
doorToggle(0)
|
||||
end
|
||||
},
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_HOOD_LABEL'),
|
||||
icon = 'car',
|
||||
onSelect = function()
|
||||
doorToggle(4)
|
||||
end
|
||||
},
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_REARLEFT_LABEL'),
|
||||
icon = 'car-side',
|
||||
onSelect = function()
|
||||
doorToggle(2)
|
||||
end
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
--[[
|
||||
█▀▀ ▄▀█ █▀█ █░█░█ █ █▄░█ █▀▄ █▀█ █░█░█ █▀
|
||||
█▄▄ █▀█ █▀▄ ▀▄▀▄▀ █ █░▀█ █▄▀ █▄█ ▀▄▀▄▀ ▄█
|
||||
]]--
|
||||
|
||||
lib.registerRadial({
|
||||
id = 'car_windows',
|
||||
items = {
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_REARRIGHT_LABEL'),
|
||||
icon = 'caret-right',
|
||||
onSelect = function()
|
||||
windowToggle(2, 3)
|
||||
end
|
||||
},
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_PASSENGER_LABEL'),
|
||||
icon = 'caret-up',
|
||||
onSelect = function()
|
||||
windowToggle(1, 1)
|
||||
end
|
||||
},
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_DRIVER_LABEL'),
|
||||
icon = 'caret-up',
|
||||
onSelect = function()
|
||||
windowToggle(0, 0)
|
||||
end
|
||||
},
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_REARLEFT_LABEL'),
|
||||
icon = 'caret-left',
|
||||
onSelect = function()
|
||||
windowToggle(3, 2)
|
||||
end
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
--[[
|
||||
█▀▀ ▄▀█ █▀█ █▀ █▀▀ ▄▀█ ▀█▀ █▀
|
||||
█▄▄ █▀█ █▀▄ ▄█ ██▄ █▀█ ░█░ ▄█
|
||||
]]--
|
||||
|
||||
lib.registerRadial({
|
||||
id = 'car_seats',
|
||||
items = {
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_REARRIGHT_LABEL'),
|
||||
icon = 'caret-right',
|
||||
onSelect = function()
|
||||
changeSeat(2)
|
||||
end
|
||||
},
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_PASSENGER_LABEL'),
|
||||
icon = 'caret-up',
|
||||
onSelect = function()
|
||||
changeSeat(0)
|
||||
end
|
||||
},
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_DRIVER_LABEL'),
|
||||
icon = 'caret-up',
|
||||
onSelect = function()
|
||||
changeSeat(-1)
|
||||
end
|
||||
},
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_REARLEFT_LABEL'),
|
||||
icon = 'caret-left',
|
||||
onSelect = function()
|
||||
changeSeat(1)
|
||||
end
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
--[[
|
||||
█░█ █▀▀ █░█ █ █▀▀ █░░ █▀▀ █▀▄▀█ █▀▀ █▄░█ █░█
|
||||
▀▄▀ ██▄ █▀█ █ █▄▄ █▄▄ ██▄ █░▀░█ ██▄ █░▀█ █▄█
|
||||
]]--
|
||||
|
||||
lib.registerRadial({
|
||||
id = 'vehicle_menu',
|
||||
items = {
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_VEHICLEENGINE_LABEL'),
|
||||
icon = 'power-off',
|
||||
onSelect = function()
|
||||
toggleEngine()
|
||||
end
|
||||
},
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_VEHICLEDOORS_LABEL'),
|
||||
icon = 'door-closed',
|
||||
menu = 'car_doors'
|
||||
},
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_VEHICLEWINDOWS_LABEL'),
|
||||
icon = 'window-maximize',
|
||||
menu = 'car_windows'
|
||||
},
|
||||
{
|
||||
label = Lang('VEHICLEKEYS_RADIAL_VEHICLECHAIRS_LABEL'),
|
||||
icon = 'chair',
|
||||
menu = 'car_seats'
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
--[[
|
||||
█░█ █▀▀ █░█ █ █▀▀ █░░ █▀▀ █▀▀ █░█ █▀▀ █▀▀ █▄▀
|
||||
▀▄▀ ██▄ █▀█ █ █▄▄ █▄▄ ██▄ █▄▄ █▀█ ██▄ █▄▄ █░█
|
||||
]]--
|
||||
|
||||
lib.onCache('vehicle', function(value)
|
||||
if value then
|
||||
lib.addRadialItem({
|
||||
{
|
||||
id = 'vehicle',
|
||||
label = Lang('VEHICLEKEYS_RADIAL_VEHICLE_LABEL'),
|
||||
icon = 'car',
|
||||
menu = 'vehicle_menu'
|
||||
}
|
||||
})
|
||||
lib.removeRadialItem('carkeys')
|
||||
else
|
||||
lib.removeRadialItem('vehicle')
|
||||
end
|
||||
end)
|
||||
|
||||
--[[
|
||||
█▀▀ █░█ █▄░█ █▀▀ ▀█▀ █ █▀█ █▄░█ █▀▄ █▀█ █▀█ █▀█ ▀█▀ █▀█ █▀▀ █▀▀ █░░ █▀▀
|
||||
█▀░ █▄█ █░▀█ █▄▄ ░█░ █ █▄█ █░▀█ █▄▀ █▄█ █▄█ █▀▄ ░█░ █▄█ █▄█ █▄█ █▄▄ ██▄
|
||||
]]--
|
||||
|
||||
function doorToggle(door)
|
||||
if GetVehicleDoorAngleRatio(cache.vehicle, door) > 0.0 then
|
||||
SetVehicleDoorShut(cache.vehicle, door, false, false)
|
||||
else
|
||||
SetVehicleDoorOpen(cache.vehicle, door, false, false)
|
||||
end
|
||||
end
|
||||
|
||||
--[[
|
||||
█▀▀ █░█ █▄░█ █▀▀ ▀█▀ █ █▀█ █▄░█ █▀▀ █░█ ▄▀█ █▄░█ █▀▀ █▀▀ █▀ █▀▀ ▄▀█ ▀█▀
|
||||
█▀░ █▄█ █░▀█ █▄▄ ░█░ █ █▄█ █░▀█ █▄▄ █▀█ █▀█ █░▀█ █▄█ ██▄ ▄█ ██▄ █▀█ ░█░
|
||||
]]--
|
||||
|
||||
function changeSeat(seat)
|
||||
if IsVehicleSeatFree(cache.vehicle, seat) then
|
||||
lib.progressCircle({
|
||||
duration = 1000,
|
||||
position = 'bottom',
|
||||
label = Lang("VEHICLEKEYS_RADIAL_CHANGE_SEAT_PROGRESS"),
|
||||
useWhileDead = false,
|
||||
canCancel = true,
|
||||
disable = { car = true },
|
||||
anim = {
|
||||
dict = 'anim@veh@low@vigilante@front_ps@enter_exit',
|
||||
clip = 'shuffle_seat',
|
||||
flag = 16
|
||||
},
|
||||
})
|
||||
SetPedIntoVehicle(cache.ped, cache.vehicle, seat)
|
||||
end
|
||||
end
|
||||
|
||||
--[[
|
||||
█▀▀ █░█ █▄░█ █▀▀ ▀█▀ █ █▀█ █▄░█ █░█░█ █ █▄░█ █▀▄ █▀█ █░█░█ ▀█▀ █▀█ █▀▀ █▀▀ █░░ █▀▀
|
||||
█▀░ █▄█ █░▀█ █▄▄ ░█░ █ █▄█ █░▀█ ▀▄▀▄▀ █ █░▀█ █▄▀ █▄█ ▀▄▀▄▀ ░█░ █▄█ █▄█ █▄█ █▄▄ ██▄
|
||||
]]--
|
||||
|
||||
local windows = { true, true, true, true }
|
||||
|
||||
function windowToggle(window, door)
|
||||
if GetIsDoorValid(cache.vehicle, door) and windows[window + 1] then
|
||||
RollDownWindow(cache.vehicle, window)
|
||||
windows[window + 1] = false
|
||||
else
|
||||
RollUpWindow(cache.vehicle, window)
|
||||
windows[window + 1] = true
|
||||
end
|
||||
end
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
if Config.Smartphone ~= 'lb-phone' then
|
||||
return
|
||||
end
|
||||
|
||||
function GetBattery()
|
||||
return exports["lb-phone"]:GetBattery()
|
||||
end
|
||||
|
||||
function SetBattery(battery)
|
||||
exports["lb-phone"]:SetBattery(battery)
|
||||
end
|
||||
|
||||
function ToggleCharging(bool)
|
||||
exports["lb-phone"]:ToggleCharging(bool)
|
||||
end
|
||||
|
||||
function IsPhoneDead()
|
||||
return exports["lb-phone"]:IsPhoneDead()
|
||||
end
|
||||
|
||||
function IsCharging()
|
||||
return exports["lb-phone"]:IsCharging()
|
||||
end
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
if Config.Smartphone ~= 'qs-smartphone' then
|
||||
return
|
||||
end
|
||||
|
||||
function GetBattery()
|
||||
return exports["qs-smartphone"]:getBattery()
|
||||
end
|
||||
|
||||
function SetBattery(battery)
|
||||
|
||||
end
|
||||
|
||||
function ToggleCharging(bool)
|
||||
|
||||
end
|
||||
|
||||
function IsPhoneDead()
|
||||
|
||||
end
|
||||
|
||||
function IsCharging()
|
||||
|
||||
end
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,814 @@
|
||||
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.
|
||||
@@ -0,0 +1,47 @@
|
||||
-- ██████╗░██╗░██████╗██████╗░░█████╗░████████╗░█████╗░██╗░░██╗
|
||||
-- ██╔══██╗██║██╔════╝██╔══██╗██╔══██╗╚══██╔══╝██╔══██╗██║░░██║
|
||||
-- ██║░░██║██║╚█████╗░██████╔╝███████║░░░██║░░░██║░░╚═╝███████║
|
||||
-- ██║░░██║██║░╚═══██╗██╔═══╝░██╔══██║░░░██║░░░██║░░██╗██╔══██║
|
||||
-- ██████╔╝██║██████╔╝██║░░░░░██║░░██║░░░██║░░░╚█████╔╝██║░░██║
|
||||
-- ╚═════╝░╚═╝╚═════╝░╚═╝░░░░░╚═╝░░╚═╝░░░╚═╝░░░░╚════╝░╚═╝░░╚═╝
|
||||
|
||||
RegisterNetEvent("qs-vehiclekeys:client:notifyCops", function(coords)
|
||||
local jobFramework = GetJobFramework()
|
||||
|
||||
if Config.Dispatch == "default" and jobFramework and jobFramework.name == Config.ReqJobPolice then
|
||||
if Config.Debug then print("Dispatch event called default") end
|
||||
|
||||
local transG = 300 * 2
|
||||
local blip = AddBlipForCoord(coords)
|
||||
SetBlipSprite(blip, 161)
|
||||
SetBlipColour(blip, 3)
|
||||
SetBlipDisplay(blip, 4)
|
||||
SetBlipAlpha(blip, transG)
|
||||
SetBlipScale(blip, 1.5)
|
||||
SetBlipFlashes(blip, true)
|
||||
BeginTextCommandSetBlipName("STRING")
|
||||
AddTextComponentString(Lang("VEHICLEKEYS_NOTIFICATION_TITLE"))
|
||||
EndTextCommandSetBlipName(blip)
|
||||
|
||||
while transG ~= 0 do
|
||||
Citizen.Wait(500)
|
||||
transG = transG - 1
|
||||
SetBlipAlpha(blip, transG)
|
||||
if transG == 0 then
|
||||
SetBlipSprite(blip, 2)
|
||||
RemoveBlip(blip)
|
||||
return
|
||||
end
|
||||
end
|
||||
elseif Config.Dispatch == "qs-smartphone" then
|
||||
if Config.Debug then print("Dispatch event called qs-smartphone") end
|
||||
TriggerServerEvent("vehiclekeys:server:phoneDispatch", coords, street2)
|
||||
elseif Config.Dispatch == "qs" then
|
||||
if Config.Debug then print("Dispatch event called qs-dispatch") end
|
||||
TriggerServerEvent(Config.Eventprefix .. ':server:Dispatch')
|
||||
elseif Config.Dispatch == "origen" then
|
||||
if Config.Debug then print("Dispatch event called new-origen") end
|
||||
TriggerServerEvent(Config.Eventprefix .. ':server:DispatchOrigen', coords)
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
-- ██╗░░██╗░█████╗░████████╗░██╗░░░░░░░██╗██╗██████╗░███████╗
|
||||
-- ██║░░██║██╔══██╗╚══██╔══╝░██║░░██╗░░██║██║██╔══██╗██╔════╝
|
||||
-- ███████║██║░░██║░░░██║░░░░╚██╗████╗██╔╝██║██████╔╝█████╗░░
|
||||
-- ██╔══██║██║░░██║░░░██║░░░░░████╔═████║░██║██╔══██╗██╔══╝░░
|
||||
-- ██║░░██║╚█████╔╝░░░██║░░░░░╚██╔╝░╚██╔╝░██║██║░░██║███████╗
|
||||
-- ╚═╝░░╚═╝░╚════╝░░░░╚═╝░░░░░░╚═╝░░░╚═╝░░╚═╝╚═╝░░╚═╝╚══════╝
|
||||
|
||||
local hotwireDifficultyMapping = {
|
||||
[0] = {"easy", "easy", "easy", "easy", "easy"}, -- Compacts
|
||||
[1] = {"easy", "easy", "easy", "easy", "easy"}, -- Sedans
|
||||
[2] = {"easy", "easy", "easy", "easy", "easy"}, -- SUVs
|
||||
[3] = {"easy", "easy", "easy", "easy", "easy"}, -- Coupes
|
||||
[4] = {"easy", "easy", "easy", "easy", "easy"}, -- Muscle
|
||||
[5] = {"easy", "easy", "easy", "easy", "easy"}, -- Sports Classics
|
||||
[6] = {"medium", "medium", "medium", "medium", "medium"}, -- Sports
|
||||
[7] = {"medium", "medium", "medium", "medium", "medium"}, -- Super
|
||||
[8] = {"hard", "hard", "hard", "hard", "hard"}, -- Motorcycles
|
||||
[9] = {"hard", "hard", "hard", "hard", "hard"}, -- Off-road
|
||||
[10] = {"hard", "hard", "hard", "hard", "hard"}, -- Industrial
|
||||
[11] = {"hard", "hard", "hard", "hard", "hard"}, -- Utility
|
||||
[12] = {"hard", "hard", "hard", "hard", "hard"}, -- Vans
|
||||
[13] = {"hard", "hard", "hard", "hard", "hard"}, -- Cycles
|
||||
[14] = {"hard", "hard", "hard", "hard", "hard"}, -- Boats
|
||||
[15] = {"hard", "hard", "hard", "hard", "hard"}, -- Helicopters
|
||||
[16] = {"hard", "hard", "hard", "hard", "hard"}, -- Planes
|
||||
[17] = {"hard", "hard", "hard", "hard", "hard"}, -- Service
|
||||
[18] = {"hard", "hard", "hard", "hard", "hard"}, -- Emergency
|
||||
[19] = {"hard", "hard", "hard", "hard", "hard"}, -- Military
|
||||
[20] = {"hard", "hard", "hard", "hard", "hard"}, -- Commercial
|
||||
[21] = {"hard", "hard", "hard", "hard", "hard"}, -- Trains
|
||||
[22] = {"hard", "hard", "hard", "hard", "hard"}, -- Open Wheel
|
||||
}
|
||||
|
||||
local inMinigame = false
|
||||
|
||||
function HandleHotwireProcess()
|
||||
if inMinigame then return end
|
||||
|
||||
local playerPed = PlayerPedId()
|
||||
local vehicle = GetVehiclePedIsIn(playerPed, false)
|
||||
|
||||
if not vehicle or vehicle == 0 then return end
|
||||
|
||||
local hasKeys = exports['qs-vehiclekeys']:GetKey(GetVehicleNumberPlateText(vehicle))
|
||||
local isEngineRunning = GetIsVehicleEngineRunning(vehicle)
|
||||
|
||||
if hasKeys or isEngineRunning then return end
|
||||
|
||||
inMinigame = true
|
||||
local vehicleClass = GetVehicleClass(vehicle)
|
||||
local difficultyArray = hotwireDifficultyMapping[vehicleClass] or {"easy", "easy", "easy", "easy", "easy"}
|
||||
local VehicleKeysHotwireformattedString = GetFormattedHotwireString()
|
||||
local success = lib.skillCheck(difficultyArray)
|
||||
|
||||
if success then
|
||||
TextClose(VehicleKeysHotwireformattedString)
|
||||
inMinigame = false
|
||||
Hotwire({ vehicle = vehicle })
|
||||
else
|
||||
isTextVisible = true
|
||||
inMinigame = false
|
||||
initKeys({ vehicle = vehicle })
|
||||
end
|
||||
end
|
||||
|
||||
function CustomProgBarsHotWire(plates, vehicle_model, coords, time)
|
||||
local label = Lang("VEHICLEKEYS_HOTWIRE_TAKING_KEYS")
|
||||
local anim = { dict = "anim@amb@clubhouse@tutorial@bkr_tut_ig3@", clip = "machinic_loop_mechandplayer" }
|
||||
local disableControls = { car = true }
|
||||
|
||||
local function onFinish()
|
||||
if Config.GiveKeysOnHotwire then
|
||||
TriggerServerEvent(Config.Eventprefix .. ":server:givekey", plates, vehicle_model)
|
||||
end
|
||||
ClearPedTasks(PlayerPedId())
|
||||
Wait(5000)
|
||||
TriggerServerEvent(Config.Eventprefix .. ":server:notifyCops", coords)
|
||||
end
|
||||
|
||||
ProgressBar("hotwire", label, time, false, false, disableControls, anim, nil, nil, onFinish, nil)
|
||||
end
|
||||
|
||||
function CustomProgBarsDeadPed(plates, vehicle_model)
|
||||
local label = Lang("VEHICLEKEYS_HOTWIRE_STEAL")
|
||||
local anim = { dict = "missheistdockssetup1clipboard@idle_a", clip = "idle_a" }
|
||||
local disableControls = { car = true }
|
||||
|
||||
local function onFinish()
|
||||
ClearPedTasks(PlayerPedId())
|
||||
TriggerServerEvent(Config.Eventprefix .. ":server:givekey", plates, vehicle_model)
|
||||
end
|
||||
|
||||
ProgressBar("deadped", label, 10000, false, false, disableControls, anim, nil, nil, onFinish, nil)
|
||||
end
|
||||
@@ -0,0 +1,162 @@
|
||||
-- ███╗░░░███╗██╗███╗░░██╗██╗░██████╗░░█████╗░███╗░░░███╗███████╗
|
||||
-- ████╗░████║██║████╗░██║██║██╔════╝░██╔══██╗████╗░████║██╔════╝
|
||||
-- ██╔████╔██║██║██╔██╗██║██║██║░░██╗░███████║██╔████╔██║█████╗░░
|
||||
-- ██║╚██╔╝██║██║██║╚████║██║██║░░╚██╗██╔══██║██║╚██╔╝██║██╔══╝░░
|
||||
-- ██║░╚═╝░██║██║██║░╚███║██║╚██████╔╝██║░░██║██║░╚═╝░██║███████╗
|
||||
-- ╚═╝░░░░░╚═╝╚═╝╚═╝░░╚══╝╚═╝░╚═════╝░╚═╝░░╚═╝╚═╝░░░░░╚═╝╚══════╝
|
||||
|
||||
-- Choose from the following options for the minigame.
|
||||
-- 'ox_lib' (basic dependency)
|
||||
-- 't3_lockpick' https://github.com/T3development/t3_lockpick
|
||||
-- 'rm_minigame' https://store.rainmad.com/package/6249324
|
||||
Config.minigameType = 'ox_lib'
|
||||
|
||||
local lockpickDifficultyMapping = {
|
||||
[0] = {"easy", "easy", "easy", "easy", "easy"}, -- Compacts
|
||||
[1] = {"easy", "easy", "easy", "easy", "easy"}, -- Sedans
|
||||
[2] = {"easy", "easy", "easy", "easy", "easy"}, -- SUVs
|
||||
[3] = {"easy", "easy", "easy", "easy", "easy"}, -- Coupes
|
||||
[4] = {"easy", "easy", "easy", "easy", "easy"}, -- Muscle
|
||||
[5] = {"easy", "easy", "easy", "easy", "easy"}, -- Sports Classics
|
||||
[6] = {"medium", "medium", "medium", "medium", "medium"}, -- Sports
|
||||
[7] = {"medium", "medium", "medium", "medium", "medium"}, -- Super
|
||||
[8] = {"hard", "hard", "hard", "hard", "hard"}, -- Motorcycles
|
||||
[9] = {"hard", "hard", "hard", "hard", "hard"}, -- Off-road
|
||||
[10] = {"hard", "hard", "hard", "hard", "hard"}, -- Industrial
|
||||
[11] = {"hard", "hard", "hard", "hard", "hard"}, -- Utility
|
||||
[12] = {"hard", "hard", "hard", "hard", "hard"}, -- Vans
|
||||
[13] = {"hard", "hard", "hard", "hard", "hard"}, -- Cycles
|
||||
[14] = {"hard", "hard", "hard", "hard", "hard"}, -- Boats
|
||||
[15] = {"hard", "hard", "hard", "hard", "hard"}, -- Helicopters
|
||||
[16] = {"hard", "hard", "hard", "hard", "hard"}, -- Planes
|
||||
[17] = {"hard", "hard", "hard", "hard", "hard"}, -- Service
|
||||
[18] = {"hard", "hard", "hard", "hard", "hard"}, -- Emergency
|
||||
[19] = {"hard", "hard", "hard", "hard", "hard"}, -- Military
|
||||
[20] = {"hard", "hard", "hard", "hard", "hard"}, -- Commercial
|
||||
[21] = {"hard", "hard", "hard", "hard", "hard"}, -- Trains
|
||||
[22] = {"hard", "hard", "hard", "hard", "hard"}, -- Open Wheel
|
||||
}
|
||||
|
||||
local openingDoor = false
|
||||
local lockpicking = false
|
||||
local vehLockpick
|
||||
|
||||
function LockpickDoor(isAdvanced)
|
||||
local playerCoords = GetEntityCoords(PlayerPedId())
|
||||
local vehicle = GetClosestVehicle(playerCoords, 2.0, false)
|
||||
if vehicle ~= nil and vehicle ~= 0 then
|
||||
local vehLockpick = vehicle
|
||||
local vehpos = GetEntityCoords(vehLockpick)
|
||||
local pos = GetEntityCoords(PlayerPedId())
|
||||
|
||||
if GetDistanceBetweenCoords(pos.x, pos.y, pos.z, vehpos.x, vehpos.y, vehpos.z, true) < 2.0 then
|
||||
local vehicleCoords = GetEntityCoords(vehicle)
|
||||
TaskTurnPedToFaceCoord(PlayerPedId(), vehicleCoords.x, vehicleCoords.y, vehicleCoords.z, -1)
|
||||
|
||||
local lockpickTime = math.random(15000, 30000)
|
||||
if isAdvanced then
|
||||
lockpickTime = math.ceil(lockpickTime * 0.5)
|
||||
end
|
||||
|
||||
LockpickDoorAnim(lockpickTime)
|
||||
lockpickMiniGame()
|
||||
IsHotwiring = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function LockpickDoorAnim(time)
|
||||
local ped = PlayerPedId()
|
||||
time = time / 1000
|
||||
loadAnimDict("veh@break_in@0h@p_m_one@")
|
||||
TaskPlayAnim(ped, "veh@break_in@0h@p_m_one@", "low_force_entry_ds", 3.0, 3.0, -1, 16, 0, false, false, false)
|
||||
openingDoor = true
|
||||
CreateThread(
|
||||
function()
|
||||
while openingDoor do
|
||||
TaskPlayAnim(ped, "veh@break_in@0h@p_m_one@", "low_force_entry_ds", 3.0, 3.0, -1, 16, 0, 0, 0, 0)
|
||||
Wait(1000)
|
||||
time = time - 1
|
||||
if time <= 0 then
|
||||
openingDoor = false
|
||||
StopAnimTask(ped, "veh@break_in@0h@p_m_one@", "low_force_entry_ds", 1.0)
|
||||
end
|
||||
end
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
function lockpickMiniGame(success)
|
||||
local success = false
|
||||
local coords = GetEntityCoords(PlayerPedId())
|
||||
local lucky = math.random(1, 100)
|
||||
|
||||
if not vehLockpick then
|
||||
local playerCoords = GetEntityCoords(PlayerPedId())
|
||||
vehLockpick = GetClosestVehicle(playerCoords, 2.0, false)
|
||||
end
|
||||
|
||||
local vehicleClass = GetVehicleClass(vehLockpick)
|
||||
local difficultyArray = lockpickDifficultyMapping[vehicleClass] or {"easy", "easy", "easy", "easy", "easy"}
|
||||
|
||||
if Config.minigameType == 'ox_lib' then
|
||||
success = lib.skillCheck(difficultyArray)
|
||||
end
|
||||
|
||||
if Config.minigameType == 'rm_minigame' then -- https://store.rainmad.com/package/6249324
|
||||
success = exports['rm_minigames']:timedLockpick(200)
|
||||
end
|
||||
|
||||
if Config.minigameType == 't3_lockpick' then
|
||||
local item = Config.LockpickItem
|
||||
local difficultyMapping = {
|
||||
["easy"] = {difficulty = 1, pins = 2},
|
||||
["medium"] = {difficulty = 2, pins = 3},
|
||||
["hard"] = {difficulty = 3, pins = 4}
|
||||
}
|
||||
|
||||
local chosenDifficulty = difficultyMapping[difficultyArray[1]] or {difficulty = 3, pins = 3}
|
||||
success = exports["t3_lockpick"]:startLockpick(item, chosenDifficulty.difficulty, chosenDifficulty.pins)
|
||||
end
|
||||
|
||||
local coords = GetEntityCoords(PlayerPedId())
|
||||
local lucky = math.random(1, 100)
|
||||
|
||||
if not vehLockpick then
|
||||
local playerCoords = GetEntityCoords(PlayerPedId())
|
||||
vehLockpick = GetClosestVehicle(playerCoords, 2.0, false)
|
||||
end
|
||||
|
||||
if success then
|
||||
finishLockpick = true
|
||||
|
||||
if lucky >= Config.LockpickFail then
|
||||
lockpickLogic(joaat(vehLockpick))
|
||||
|
||||
if Config.LockpickAlarm and lucky > Config.StartAlarmChance then
|
||||
startAlarm(vehLockpick)
|
||||
end
|
||||
|
||||
if lucky > Config.LockpickKeepChance then
|
||||
SendTextMessage(Lang("VEHICLEKEYS_NOTIFICATION_LOCKPICK_BROKEN"), "error")
|
||||
TriggerServerEvent(Config.Eventprefix .. ":server:RemoveLockpick", Config.LockpickItem, 1)
|
||||
end
|
||||
|
||||
SendTextMessage(Lang("VEHICLEKEYS_NOTIFICATION_LOCKPICK_SUCCESS"), "success")
|
||||
else
|
||||
startAlarm(vehLockpick)
|
||||
SendTextMessage(Lang("VEHICLEKEYS_NOTIFICATION_LOCKPICK_FAIL"), "error")
|
||||
end
|
||||
else
|
||||
startAlarm(vehLockpick)
|
||||
SendTextMessage(Lang("VEHICLEKEYS_NOTIFICATION_LOCKPICK_FAIL"), "error")
|
||||
end
|
||||
|
||||
TriggerServerEvent(Config.Eventprefix .. ":server:notifyCops", coords)
|
||||
StopAnimTask(PlayerPedId(), "veh@break_in@0h@p_m_one@", "low_force_entry_ds", 1.0)
|
||||
|
||||
IsHotwiring = false
|
||||
openingDoor = false
|
||||
vehLockpick = nil
|
||||
end
|
||||
@@ -0,0 +1,50 @@
|
||||
fx_version 'cerulean'
|
||||
|
||||
games { 'gta5' }
|
||||
|
||||
lua54 'yes'
|
||||
|
||||
version '4.0.13'
|
||||
|
||||
shared_scripts {
|
||||
'@ox_lib/init.lua',
|
||||
'config/*.lua',
|
||||
'locales/*.lua',
|
||||
'client/utils.lua',
|
||||
}
|
||||
|
||||
client_scripts {
|
||||
'client/utils.lua',
|
||||
'client/custom/**/*.lua',
|
||||
'client/modules/*.lua',
|
||||
'client/functions.lua',
|
||||
'client/main.lua',
|
||||
}
|
||||
|
||||
server_scripts {
|
||||
'@oxmysql/lib/MySQL.lua',
|
||||
'server/version.lua',
|
||||
'server/utils.lua',
|
||||
'server/custom/**/*.lua',
|
||||
'server/modules/*.lua',
|
||||
'server/main.lua',
|
||||
}
|
||||
|
||||
escrow_ignore {
|
||||
'config/*.lua',
|
||||
'locales/*.lua',
|
||||
'client/custom/framework/*.lua',
|
||||
'server/custom/framework/*.lua',
|
||||
'client/custom/**/*.lua',
|
||||
'server/custom/**/*.lua',
|
||||
'client/custom/menus/**/*.lua',
|
||||
'gps.json',
|
||||
}
|
||||
|
||||
dependencies {
|
||||
'/server:4752', -- ⚠️PLEASE READ⚠️ This requires at least server build 4752 or higher
|
||||
'/gameBuild:3095',
|
||||
'ox_lib', -- https://github.com/overextended/ox_lib NEED AT LEAST v3.0.0 for the radial menu
|
||||
}
|
||||
|
||||
dependency '/assetpacks'
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1,202 @@
|
||||
Locales["de"] = {
|
||||
["VEHICLEKEYS_MENU_TITLE"] = "Schlüsselkopie",
|
||||
["VEHICLEKEYS_MENU_MODEL"] = "Modell:",
|
||||
["VEHICLEKEYS_MENU_PLATE"] = "Kennzeichen:",
|
||||
["VEHICLEKEYS_MENU_CHOICE_TITLE"] = "Menüauswahl",
|
||||
["VEHICLEKEYS_MENU_OWNED_VEHICLES"] = "Eigene Fahrzeuge",
|
||||
["VEHICLEKEYS_MENU_OWNED_KEYS"] = "Eigene Schlüssel",
|
||||
["BACK_TO_PREVIOUS_MENU"] = "Zurück zum vorherigen Menü",
|
||||
["NO_KEYS_FOUND"] = "Keine Schlüssel im Inventar gefunden",
|
||||
|
||||
["VEHICLEKEYS_DRAWTEXT_COPYKEYS"] = "E - Schlüssel kopieren",
|
||||
["VEHICLEKEYS_DRAWTEXT_PLATE"] = "E - Kennzeichen kaufen",
|
||||
|
||||
["VEHICLEKEYS_DRAWTEXT_CHARGE"] = "Aufladen:",
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_VEHICLES"] = "Keine Fahrzeuge in der Nähe...",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATE_IN_CAR"] = "Sie können kein Kennzeichen im Fahrzeug verwenden.",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_KEYS"] = "Sie besitzen keine Schlüssel für dieses Fahrzeug...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHANGE_PLATE"] = "Sie haben Ihr Kennzeichen geändert zu:",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATES"] = "Sie besitzen keine Schlüssel für dieses Fahrzeug...",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCK"] = "Sie haben das Fahrzeug verschlossen.",
|
||||
["VEHICLEKEYS_NOTIFICATION_UNLOCK"] = "Sie haben das Fahrzeug entsperrt.",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_MONEY"] = "Sie haben nicht genügend Geld...",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_SUCCESS"] = "Sie haben das Schloss erfolgreich geknackt!",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_BROKEN"] = "Ihr Dietrich ist gebrochen!",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_FAIL"] = "Sie konnten das Fahrzeug nicht knacken...",
|
||||
["VEHICLEKEYS_NOTIFICATION_TITLE"] = "Fahrzeugdiebstahl",
|
||||
["VEHICLEKEYS_NOTIFICATION_POLICE_DISPATCH"] = "Ich habe einen Alarm ausgelöst für:",
|
||||
["VEHICLEKEYS_NOTIFICATION_ALARM"] = "Der Alarm des Fahrzeugs hat zu läuten begonnen!",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_POLICES"] = "Es gibt nicht genügend Polizisten in der Stadt...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NPC_KEYS"] = "Der Zivilist hat Ihnen die Schlüssel seines Fahrzeugs gegeben!",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_VEHICLE"] = "Sie müssen sich in einem Fahrzeug befinden, um Ihr Smartphone aufzuladen.",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_KEYS"] = "Sie besitzen keine Schlüssel für dieses Fahrzeug...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_BATTERY_FULL"] = "Der Akku ist bereits zu 100 % geladen",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_CHARGED"] = "Ihr Telefon wurde aufgeladen auf:",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_PHONE"] = "Sie haben kein Smartphone zum Aufladen.",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_MATCH"] = "Das Kennzeichen oder das Modell stimmt nicht überein.",
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_NOT_OWNED"] = "Sie besitzen keine Schlüssel für dieses Fahrzeug.",
|
||||
|
||||
["VEHICLEKEYS_HOTWIRE_STEAL"] = "Schlüsseldiebstahl",
|
||||
["VEHICLEKEYS_HOTWIRE_TAKING_KEYS"] = "Schlüsselnahme",
|
||||
["VEHICLEKEYS_HOTWIRE"] = "%s - Schlüssel nehmen",
|
||||
|
||||
["VEHICLEKEYS_CHANGING_PLATE"] = "Kennzeichenwechsel",
|
||||
["VEHICLEKEYS_MENU_TITLE_PLATE"] = "Kennzeichenladen",
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE"] = "Kennzeichen kaufen",
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE_DESCRIPTION"] = "Kennzeichen kaufen",
|
||||
["VEHICLEKEYS_MENU_BUY_CHANGEPLATE_DESCRIPTION"] = "Schraubenzieher kaufen",
|
||||
["VEHICLEKEYS_MENU_NO_CHANGER_ITEM"] = "Kein Werkzeug",
|
||||
["VEHICLEKEYS_PLATE_LOCKED"] = "Das Fahrzeug ist verschlossen!",
|
||||
|
||||
-- Neue Übersetzungen für das Kontextmenü.
|
||||
["VEHICLEKEYS_MAIN_MENU_TITLE"] = "Schlüsselverwaltung",
|
||||
["VEHICLEKEYS_NEARBY_PLAYERS_MENU_TITLE"] = "Nahe Spieler",
|
||||
["VEHICLEKEYS_NO_PLAYERS_FOUND"] = "Keine Spieler in der Nähe gefunden",
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_HEADER"] = "Ausgewählter Schlüssel",
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_MODEL"] = "Modell:",
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_PLATE"] = "Kennzeichen:",
|
||||
["VEHICLEKEYS_MENU_USE_KEY_TITLE"] = "Schlüssel verwenden",
|
||||
["VEHICLEKEYS_MENU_USE_KEY_DESCRIPTION"] = "Verwenden Sie den ausgewählten Schlüssel am nächstgelegenen Fahrzeug.",
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_TITLE"] = "Schlüssel geben",
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_DESCRIPTION"] = "Geben Sie den Schlüssel an nahe Spieler",
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_TITLE"] = "Schlüssel löschen",
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_DESCRIPTION"] = "Löschen Sie den ausgewählten Schlüssel",
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_TITLE"] = "Fahrzeugschlüssel bereinigen",
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_ERROR"] = "Keine zu löschenden Schlüssel",
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_SUCCESS"] = "Alle Schlüssel wurden erfolgreich gelöscht",
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_DESCRIPTION"] = "Löschen Sie alle Schlüssel von Fahrzeugen, die Ihnen nicht gehören",
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_TITLE"] = "Zugriff auf die Schlüsselliste",
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_DESCRIPTION"] = "Zeigt die Liste der Schlüssel an, die Sie bei sich tragen",
|
||||
["VEHICLEKEYS_ALL_KEYS_MENU_TITLE"] = "Liste aller Schlüssel",
|
||||
|
||||
["VEHICLEKEYS_LOCKPICK_WHITELIST"] = "Das Schloss dieses Autos kann nicht geöffnet werden.",
|
||||
["VEHICLEKEYS_LOCKPICK_UNLOCKED"] = "Dieses Auto ist nicht verschlossen.",
|
||||
["VEHICLEKEYS_LOCKPICK_INSIDE"] = "Sie können kein Auto von innen aufbrechen.",
|
||||
|
||||
["ADMINCOMMAND_NO_VEHICLE"] = "Sie befinden sich nicht in einem Fahrzeug",
|
||||
["ADMINCOMMAND_GIVED_VEHICLE"] = "Sie haben die Fahrzeugschlüssel erfolgreich übergeben",
|
||||
["ADMINCOMMAND_PLAYER"] = "Spieler",
|
||||
["ADMINCOMMAND_HELP"] = "Geben Sie die Fahrzeugschlüssel",
|
||||
["ADMINCOMMAND_COMMAND"] = "adminkeys",
|
||||
["ADMINCOMMAND_RANGE"] = "admin",
|
||||
["ADMINCOMMAND_NO_PLAYER"] = "Ungültige ID",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_VEHICLE_LABEL"] = "Fahrzeug",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEKEYS_LABEL"] = "Schlüssel",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLESEATBELT_LABEL"] = "Sicherheitsgurt",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLECHAIRS_LABEL"] = "Sitze",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEWINDOWS_LABEL"] = "Fenster",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEDOORS_LABEL"] = "Türen",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEENGINE_LABEL"] = "Motor",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_REARLEFT_LABEL"] = "Hinten links",
|
||||
["VEHICLEKEYS_RADIAL_REARRIGHT_LABEL"] = "Hinten rechts",
|
||||
["VEHICLEKEYS_RADIAL_HOOD_LABEL"] = "Motorhaube",
|
||||
["VEHICLEKEYS_RADIAL_TRUNK_LABEL"] = "Kofferraum",
|
||||
["VEHICLEKEYS_RADIAL_DRIVER_LABEL"] = "Fahrer",
|
||||
["VEHICLEKEYS_RADIAL_PASSENGER_LABEL"] = "Beifahrer",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_CHANGE_SEAT_PROGRESS"] = "Sitzwechsel in Bearbeitung",
|
||||
|
||||
["VEHICLEKEYS_COMMAND_ENGINE"] = 'Fahrzeug entsperren/sperren',
|
||||
["VEHICLEKEYS_COMMAND_USEKEY"] = 'Motorkontrolle',
|
||||
|
||||
["VEHICLEKEYS_PLATE_SHOP_LABEL"] = 'Nummernschild-Shop',
|
||||
["VEHICLEKEYS_PLATE_SHOP_NAME"] = 'Nummernschild-Shop',
|
||||
|
||||
["VEHICLEKEYS_OPEN_PLATE"] = 'Shop öffnen',
|
||||
["VEHICLEKEYS_OPEN_PLATE_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_COPY_KEYS"] = 'Schlüssel kopieren',
|
||||
["VEHICLEKEYS_COPY_KEYS_TARGET_ICON"] = 'fas fa-copy',
|
||||
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET"] = 'Fahrzeug öffnen/schließen',
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET_ICON"] = 'fas fa-key',
|
||||
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET"] = 'Fahrzeug aufbrechen',
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET_ICON"] = 'fas fa-user-lock',
|
||||
|
||||
["VEHICLEKEYS_PLATE_TARGET"] = 'Nummernschild ändern',
|
||||
["VEHICLEKEYS_PLATE_TARGET_ICON"] = 'fas fa-screwdriver',
|
||||
|
||||
["VEHICLEKEYS_ANCHOR_PICKED_PROGRESS"] = 'Anker hochziehen',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED_PROGRESS"] = 'Anker absenken',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED"] = 'Anker abgesenkt',
|
||||
["VEHICLEKEYS_ANCHOR_PICKED"] = 'Anker hochgehoben',
|
||||
["VEHICLEKEYS_ANCHOR_CANCELLED"] = 'Anker abgebrochen',
|
||||
["VEHICLEKEYS_ANCHOR_SLOW_DOWN"] = 'Langsamer fahren, um den Anker zu benutzen',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_LEFT_WHEEL"] = 'Vorderrad links',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_LEFT_WHEEL"] = 'Hinterrad links',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_RIGHT_WHEEL"] = 'Vorderrad rechts',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_RIGHT_WHEEL"] = 'Hinterrad rechts',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_RIGHT_WHEEL"] = 'Mittleres rechtes Rad',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_LEFT_WHEEL"] = 'Mittleres linkes Rad',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_PROGRESS"] = 'Fahrzeug wird gescannt...',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_TITLE"] = 'Fahrzeugstatus',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MODEL_TITLE"] = 'Modell: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_TITLE"] = 'Kennzeichen: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_DESCRIPTION"] = 'Zum Kopieren drücken',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_NOTIFICATION"] = 'Du hast das Kennzeichen kopiert!',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TEMPERATURE_TITLE"] = 'Motortemperatur',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_OIL_TITLE"] = 'Ölstand',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FUEL_TITLE"] = 'Kraftstoffstand',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE_TITLE"] = 'Motorgesundheit',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BODY_TITLE"] = 'Karosserieschaden',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TYRES_TITLE"] = 'Reifengesundheit:',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_STOCK"] = 'Standard',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_LVL"] = 'Level: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE"] = 'Motor',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BRAKES"] = 'Bremsen',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SUSPENSION"] = 'Federung',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TRANSMISSION"] = 'Getriebe',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO"] = 'Turbo',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_ON"] = 'Installiert',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_OFF"] = 'Nicht installiert',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET"] = 'Diagnose',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEASURE"] = 'Fenstertönung messen',
|
||||
["VEHICLEKEYS_MEASURING_TINT_PROGRESS"] = 'Messung läuft...',
|
||||
["VEHICLEKEYS_WINDOW_TINT_NONE"] = 'Keine Tönung',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIGHT"] = 'Leicht (Werk)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEDIUM"] = 'Mittel (25%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DARK"] = 'Dunkel (50%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIMO"] = 'Limo (100%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_UNKNOWN"] = 'Unbekannt',
|
||||
["VEHICLEKEYS_WINDOW_TINT_TITLE"] = 'Fenstertönung',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DESCRIPTION"] = 'Tönungsgrad: ',
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STARTED"] = "Motor gestartet",
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STOPPED"] = "Motor gestoppt",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PERMISSION"] = "Du hast keine Berechtigung, den Motor zu steuern",
|
||||
|
||||
['VEHICLEKEYS_ENGINE_TOGGLE'] = 'Encender/Apagar el motor',
|
||||
['VEHICLEKEYS_USE_KEY'] = 'Abrir/Cerrar el vehículo',
|
||||
['VEHICLEKEYS_HOTWIRE'] = 'Iniciar el puenteo',
|
||||
['VEHICLEKEYS_ANCHOR_BOAT'] = 'Anclar el barco',
|
||||
|
||||
['VEHICLEKEYS_NOTIFICATION_TOO_FAR'] = 'Zu weit vom Fahrzeug entfernt',
|
||||
|
||||
['VEHICLEKEYS_NOTIFICATION_TOO_FAR'] = 'Zu weit vom Fahrzeug entfernt',
|
||||
['VEHICLEKEYS_USING_GPS'] = 'GPS wird verwendet',
|
||||
['VEHICLEKEYS_GPS_ALREADY_IN_USE'] = 'Dieses Fahrzeug wird bereits verfolgt',
|
||||
['VEHICLEKEYS_GPS_BLIP_NAME'] = 'GPS-Puls: %s',
|
||||
['VEHICLEKEYS_TRACKER_MENU_TITLE'] = 'Tracker-Menü',
|
||||
['VEHICLEKEYS_TRACKER_NO_VEHICLES'] = 'Keine verfolgten Fahrzeuge',
|
||||
['VEHICLEKEYS_TRACKER_MENU_DESC'] = 'Nummernschild: %s',
|
||||
|
||||
['VEHICLEKEYS_REMOVE_GPS_TARGET_ICON'] = 'fa-solid fa-magnifying-glass',
|
||||
['VEHICLEKEYS_REMOVE_GPS'] = 'GPS entfernen',
|
||||
|
||||
['VEHICLEKEYS_GPS_REMOVED'] = 'GPS vom Fahrzeug mit Kennzeichen %s entfernt',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_FAILED'] = 'Fehler beim Entfernen des GPS vom Fahrzeug mit Kennzeichen %s',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_PROGRESSBAR'] = 'GPS wird entfernt',
|
||||
['VEHICLEKEYS_NOTIFICATION_GPS_REMOVAL_FAILED'] = 'GPS konnte nicht entfernt werden',
|
||||
|
||||
}
|
||||
@@ -0,0 +1,208 @@
|
||||
Locales["en"] = {
|
||||
["VEHICLEKEYS_MENU_TITLE"] = "Copy of Keys",
|
||||
["VEHICLEKEYS_MENU_MODEL"] = "Model:",
|
||||
["VEHICLEKEYS_MENU_PLATE"] = "Plate:",
|
||||
["VEHICLEKEYS_MENU_CHOICE_TITLE"] = "Menu Choice",
|
||||
["VEHICLEKEYS_MENU_OWNED_VEHICLES"] = "Owned Vehicles",
|
||||
["VEHICLEKEYS_MENU_OWNED_KEYS"] = "Owned Keys",
|
||||
["BACK_TO_PREVIOUS_MENU"] = "Back to Previous Menu",
|
||||
["NO_KEYS_FOUND"] = "No keys found in inventory",
|
||||
|
||||
["VEHICLEKEYS_DRAWTEXT_COPYKEYS"] = "[E] - Key Copy",
|
||||
["VEHICLEKEYS_DRAWTEXT_PLATE"] = "[E] - Buy a plate",
|
||||
|
||||
["VEHICLEKEYS_DRAWTEXT_CHARGE"] = "Charge:",
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_VEHICLES"] = "No vehicles nearby",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATE_IN_CAR"] = "You cannot use a plate from a vehicle.",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_KEYS"] = "You don't have the keys for that vehicle",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHANGE_PLATE"] = "You changed your plate to:",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATES"] = "You don't have the keys to this vehicle",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCK"] = "You have locked the vehicle",
|
||||
["VEHICLEKEYS_NOTIFICATION_UNLOCK"] = "You unlocked the vehicle",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_MONEY"] = "You don't have enough money",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_SUCCESS"] = "You have successfully picked the lock",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_BROKEN"] = "Your pick is broken",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_FAIL"] = "You were unable to lockpick the vehicle",
|
||||
["VEHICLEKEYS_NOTIFICATION_TITLE"] = "Vehicle Theft",
|
||||
["VEHICLEKEYS_NOTIFICATION_POLICE_DISPATCH"] = "I sounded an alarm on:",
|
||||
["VEHICLEKEYS_NOTIFICATION_ALARM"] = "The vehicle alarm has started to sound",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_POLICES"] = "There are not enough police in the city",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NPC_KEYS"] = "The civilian gave you the keys to his vehicle",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_VEHICLE"] = "You must be in a vehicle to charge your Smartphone",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_KEYS"] = "You don't have the keys for this vehicle",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_BATTERY_FULL"] = "The battery is already 100%",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_CHARGED"] = "Your phone was charged at:",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_PHONE"] = "You don't have a Smartphone to charge",
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_NOT_OWNED"] = "You don't have keys to this vehicle.",
|
||||
|
||||
["VEHICLEKEYS_HOTWIRE_STEAL"] = "Stealing keys",
|
||||
["VEHICLEKEYS_HOTWIRE_TAKING_KEYS"] = "Taking keys",
|
||||
["VEHICLEKEYS_HOTWIRE"] = "Press %s to hotwire.",
|
||||
|
||||
["VEHICLEKEYS_CHANGING_PLATE"] = 'Change of license plate',
|
||||
["VEHICLEKEYS_MENU_TITLE_PLATE"] = 'Plate Shop',
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE"] = 'Buy a plate',
|
||||
["VEHICLEKEYS_MENU_BUY_SCREWDRIVER"] = 'Buy a screwdriver',
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE_DESCRIPTION"] = 'Buy a plate',
|
||||
["VEHICLEKEYS_MENU_BUY_CHANGEPLATE_DESCRIPTION"] = 'Buy a screwdriver',
|
||||
["VEHICLEKEYS_MENU_NO_CHANGER_ITEM"] = 'No tools',
|
||||
["VEHICLEKEYS_PLATE_LOCKED"] = 'The vehicle is locked!',
|
||||
|
||||
["VEHICLEKEYS_LOCKPICK_WHITELIST"] = 'The lock of this car can not be opened.',
|
||||
["VEHICLEKEYS_LOCKPICK_UNLOCKED"] = 'This car is not locked.',
|
||||
["VEHICLEKEYS_LOCKPICK_INSIDE"] = 'You can\'t pick a car from the inside.',
|
||||
["VEHICLEKEYS_LOCKPICK_PREPARING"] = 'Preparation...',
|
||||
|
||||
["ADMINCOMMAND_NO_VEHICLE"] = "You are not in a vehicle",
|
||||
["ADMINCOMMAND_GIVED_VEHICLE"] = "You gave the car keys correctly",
|
||||
["ADMINCOMMAND_PLAYER"] = "Player",
|
||||
["ADMINCOMMAND_HELP"] = "Give Vehicle Keys",
|
||||
["ADMINCOMMAND_COMMAND"] = "givekey",
|
||||
["ADMINCOMMAND_RANGE"] = "admin",
|
||||
["ADMINCOMMAND_NO_PLAYER"] = "ID incorrect",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_VEHICLE_LABEL"] = "Vehicle",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEKEYS_LABEL"] = "Keys",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLESEATBELT_LABEL"] = "Seatbelt",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLECHAIRS_LABEL"] = "Seats",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEWINDOWS_LABEL"] = "Windows",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEDOORS_LABEL"] = "Doors",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEENGINE_LABEL"] = "Engine",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_REARLEFT_LABEL"] = "Back left",
|
||||
["VEHICLEKEYS_RADIAL_REARRIGHT_LABEL"] = "Back right",
|
||||
["VEHICLEKEYS_RADIAL_HOOD_LABEL"] = "Hood",
|
||||
["VEHICLEKEYS_RADIAL_TRUNK_LABEL"] = "Trunk",
|
||||
["VEHICLEKEYS_RADIAL_DRIVER_LABEL"] = "Driver",
|
||||
["VEHICLEKEYS_RADIAL_PASSENGER_LABEL"] = "Passenger",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_ANCHOR"] = "Anchor",
|
||||
|
||||
["VEHICLEKEYS_MAIN_MENU_TITLE"] = 'Key Management',
|
||||
["VEHICLEKEYS_NEARBY_PLAYERS_MENU_TITLE"] = 'Nearby Player(s)',
|
||||
["VEHICLEKEYS_NO_PLAYERS_FOUND"] = 'No players nearby',
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_HEADER"] = 'Selected Key',
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_MODEL"] = 'Model:',
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_PLATE"] = 'Plate:',
|
||||
["VEHICLEKEYS_MENU_USE_KEY_TITLE"] = 'Use Key',
|
||||
["VEHICLEKEYS_MENU_USE_KEY_DESCRIPTION"] = 'Use the selected key on the nearest vehicle.',
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_TITLE"] = 'Give Key',
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_DESCRIPTION"] = 'Give the key to nearby player(s)',
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_TITLE"] = 'Delete Key',
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_DESCRIPTION"] = 'Delete the selected key',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_TITLE"] = 'Clean Vehicle Keys',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_ERROR"] = 'No keys to delete',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_SUCCESS"] = 'All keys have been successfully deleted',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_DESCRIPTION"] = 'Delete all keys from vehicles you do not own',
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_TITLE"] = 'Access Key List',
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_DESCRIPTION"] = 'Display the list of keys you possess on you',
|
||||
["VEHICLEKEYS_ALL_KEYS_MENU_TITLE"] = 'Key List',
|
||||
|
||||
["VEHICLEKEYS_RADIAL_CHANGE_SEAT_PROGRESS"] = "Seat Change in Progress",
|
||||
|
||||
["VEHICLEKEYS_COMMAND_ENGINE"] = 'Unlock/Lock Vehicle',
|
||||
["VEHICLEKEYS_COMMAND_USEKEY"] = 'Engine Control',
|
||||
|
||||
["VEHICLEKEYS_PLATE_SHOP_LABEL"] = 'Plate Shop',
|
||||
["VEHICLEKEYS_PLATE_SHOP_NAME"] = 'Plate Shop',
|
||||
|
||||
["VEHICLEKEYS_OPEN_PLATE"] = 'Open Shop',
|
||||
["VEHICLEKEYS_OPEN_PLATE_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_COPY_KEYS"] = 'Key Copy',
|
||||
["VEHICLEKEYS_COPY_KEYS_TARGET_ICON"] = 'fas fa-copy',
|
||||
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET"] = 'Open/Close Vehicle',
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET_ICON"] = 'fas fa-key',
|
||||
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET"] = 'Lockpick Vehicle',
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET_ICON"] = 'fas fa-user-lock',
|
||||
|
||||
["VEHICLEKEYS_PLATE_TARGET"] = 'Change Plate',
|
||||
["VEHICLEKEYS_PLATE_TARGET_ICON"] = 'fas fa-screwdriver',
|
||||
|
||||
["VEHICLEKEYS_GIVEKEYS_TARGET_ADMIN"] = 'Get the keys',
|
||||
["VEHICLEKEYS_GIVEKEYS_TARGET_ICON_ADMIN"] = 'fas fa-key',
|
||||
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET_ADMIN"] = 'Open / Close the vehicle',
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET_ICON_ADMIN"] = 'fas fa-key',
|
||||
|
||||
["VEHICLEKEYS_ANCHOR_PICKED_PROGRESS"] = 'Raise Anchor',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED_PROGRESS"] = 'Lower Anchor',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED"] = 'Anchor Lowered',
|
||||
["VEHICLEKEYS_ANCHOR_PICKED"] = 'Anchor Raised',
|
||||
["VEHICLEKEYS_ANCHOR_CANCELLED"] = 'Anchor Cancelled',
|
||||
["VEHICLEKEYS_ANCHOR_SLOW_DOWN"] = 'Slow Down to Use Anchor',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_LEFT_WHEEL"] = 'Front Left Wheel',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_LEFT_WHEEL"] = 'Rear Left Wheel',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_RIGHT_WHEEL"] = 'Front Right Wheel',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_RIGHT_WHEEL"] = 'Rear Right Wheel',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_RIGHT_WHEEL"] = 'Middle Right Wheel',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_LEFT_WHEEL"] = 'Middle Left Wheel',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_PROGRESS"] = 'Scanning Vehicle...',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_TITLE"] = 'Vehicle Status',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MODEL_TITLE"] = 'Model: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_TITLE"] = 'Plate Number: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_DESCRIPTION"] = 'Press to Copy',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_NOTIFICATION"] = 'You have copied the plate number!',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TEMPERATURE_TITLE"] = 'Engine Temperature',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_OIL_TITLE"] = 'Oil Level',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FUEL_TITLE"] = 'Fuel Level',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE_TITLE"] = 'Engine Health',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BODY_TITLE"] = 'Body Health',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TYRES_TITLE"] = 'Tire Health:',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_STOCK"] = 'Default',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_LVL"] = 'Level: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE"] = 'Engine',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BRAKES"] = 'Brakes',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SUSPENSION"] = 'Suspension',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TRANSMISSION"] = 'Transmission',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO"] = 'Turbo',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_ON"] = 'Installed',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_OFF"] = 'Not Installed',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET"] = 'Diagnose',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEASURE"] = 'Measure the window tint',
|
||||
["VEHICLEKEYS_MEASURING_TINT_PROGRESS"] = 'Measuring in progress...',
|
||||
["VEHICLEKEYS_WINDOW_TINT_NONE"] = 'No tint',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIGHT"] = 'Light (Factory)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEDIUM"] = 'Medium (25%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DARK"] = 'Dark (50%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIMO"] = 'Limo (100%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_UNKNOWN"] = 'Unknown',
|
||||
["VEHICLEKEYS_WINDOW_TINT_TITLE"] = 'Window Tint',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DESCRIPTION"] = 'Tint level: ',
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STARTED"] = "Engine started",
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STOPPED"] = "Engine stopped",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PERMISSION"] = "You do not have permission to control the engine",
|
||||
|
||||
['VEHICLEKEYS_ENGINE_TOGGLE'] = 'Toggle Engine',
|
||||
['VEHICLEKEYS_USE_KEY'] = 'Open/Close vehicle',
|
||||
['VEHICLEKEYS_HOTWIRE'] = 'Start Hotwiring',
|
||||
['VEHICLEKEYS_ANCHOR_BOAT'] = 'Anchor boat',
|
||||
|
||||
['VEHICLEKEYS_NOTIFICATION_TOO_FAR'] = 'Too far from the vehicle',
|
||||
['VEHICLEKEYS_USING_GPS'] = 'Using GPS',
|
||||
['VEHICLEKEYS_GPS_ALREADY_IN_USE'] = 'This vehicle is already getting tracked',
|
||||
['VEHICLEKEYS_GPS_BLIP_NAME'] = 'GPS Pulse: %s',
|
||||
['VEHICLEKEYS_TRACKER_MENU_TITLE'] = 'Tracker Menu',
|
||||
['VEHICLEKEYS_TRACKER_NO_VEHICLES'] = 'No tracked vehicles',
|
||||
['VEHICLEKEYS_TRACKER_MENU_DESC'] = 'Plate: %s',
|
||||
|
||||
['VEHICLEKEYS_REMOVE_GPS_TARGET_ICON'] = 'fa-solid fa-magnifying-glass',
|
||||
['VEHICLEKEYS_REMOVE_GPS'] = 'Remove GPS',
|
||||
|
||||
['VEHICLEKEYS_GPS_REMOVED'] = 'GPS removed from vehicle with plate %s',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_FAILED'] = 'Failed to remove GPS from vehicle with plate %s',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_PROGRESSBAR'] = 'Removing GPS',
|
||||
['VEHICLEKEYS_NOTIFICATION_GPS_REMOVAL_FAILED'] = 'Failed to remove GPS',
|
||||
}
|
||||
|
||||
@@ -0,0 +1,206 @@
|
||||
Locales["es"] = {
|
||||
["VEHICLEKEYS_MENU_TITLE"] = "Copia de llave",
|
||||
["VEHICLEKEYS_MENU_MODEL"] = "Modelo:",
|
||||
["VEHICLEKEYS_MENU_PLATE"] = "Placa:",
|
||||
["VEHICLEKEYS_MENU_CHOICE_TITLE"] = "Elección de menú",
|
||||
["VEHICLEKEYS_MENU_OWNED_VEHICLES"] = "Vehículos propios",
|
||||
["VEHICLEKEYS_MENU_OWNED_KEYS"] = "Llaves propias",
|
||||
["BACK_TO_PREVIOUS_MENU"] = "Volver al menú anterior",
|
||||
["NO_KEYS_FOUND"] = "No se encontraron llaves en el inventario",
|
||||
|
||||
["VEHICLEKEYS_DRAWTEXT_COPYKEYS"] = "[E] - Copiar Llave",
|
||||
["VEHICLEKEYS_DRAWTEXT_PLATE"] = "[E] - Comprar una placa",
|
||||
|
||||
["VEHICLEKEYS_DRAWTEXT_CHARGE"] = "Carga:",
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_VEHICLES"] = "No hay vehículos cerca",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATE_IN_CAR"] = "No puedes usar una placa desde un vehículo.",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_KEYS"] = "No tienes las llaves de ese vehículo",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHANGE_PLATE"] = "Cambiaste tu matrícula a:",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATES"] = "No tienes las llaves de este vehículo",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCK"] = "Has bloqueado el vehículo",
|
||||
["VEHICLEKEYS_NOTIFICATION_UNLOCK"] = "Has desbloqueado el vehículo",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_MONEY"] = "No tienes suficiente dinero",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_SUCCESS"] = "Has logrado abrir la cerradura",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_BROKEN"] = "Tu ganzúa está rota",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_FAIL"] = "No pudiste abrir la cerradura",
|
||||
["VEHICLEKEYS_NOTIFICATION_TITLE"] = "Robo de Vehículo",
|
||||
["VEHICLEKEYS_NOTIFICATION_POLICE_DISPATCH"] = "He activado una alarma en:",
|
||||
["VEHICLEKEYS_NOTIFICATION_ALARM"] = "La alarma del vehículo ha empezado a sonar",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_POLICES"] = "No hay suficientes policías en la ciudad",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NPC_KEYS"] = "El civil te ha dado las llaves de su vehículo",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_VEHICLE"] = "Debes estar en un vehículo para cargar tu teléfono",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_KEYS"] = "No tienes las llaves de este vehículo",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_BATTERY_FULL"] = "La batería ya está al 100%",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_CHARGED"] = "Tu teléfono se cargó en:",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_PHONE"] = "No tienes un Smartphone para cargar",
|
||||
["VEHICLEKEYS_NOTIFICATION_NOT_OWNED"] = "No tienes llaves para este vehiculo",
|
||||
|
||||
["VEHICLEKEYS_HOTWIRE_STEAL"] = "Robando llaves",
|
||||
["VEHICLEKEYS_HOTWIRE_TAKING_KEYS"] = "Tomando llaves",
|
||||
["VEHICLEKEYS_HOTWIRE"] = "Presiona %s para encender con cables",
|
||||
|
||||
["VEHICLEKEYS_CHANGING_PLATE"] = 'Cambio de matrícula',
|
||||
["VEHICLEKEYS_MENU_TITLE_PLATE"] = 'Tienda de platos',
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE"] = 'Comprar un plato',
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE_DESCRIPTION"] = 'Compre un plato por',
|
||||
["VEHICLEKEYS_MENU_BUY_CHANGEPLATE_DESCRIPTION"] = 'Compre un destornillador',
|
||||
["VEHICLEKEYS_MENU_NO_CHANGER_ITEM"] = 'Sin herramientas',
|
||||
["VEHICLEKEYS_PLATE_LOCKED"] = '¡El vehículo está bloqueado!',
|
||||
|
||||
["VEHICLEKEYS_LOCKPICK_WHITELIST"] = 'La cerradura de este auto no puede ser abierta',
|
||||
["VEHICLEKEYS_LOCKPICK_UNLOCKED"] = 'Este coche no está cerrado.',
|
||||
["VEHICLEKEYS_LOCKPICK_INSIDE"] = 'No puedes forzar un coche desde el interior.',
|
||||
["VEHICLEKEYS_LOCKPICK_PREPARING"] = 'Preparación...',
|
||||
|
||||
["ADMINCOMMAND_NO_VEHICLE"] = "No estás en un vehículo",
|
||||
["ADMINCOMMAND_GIVED_VEHICLE"] = "Has entregado las llaves del auto correctamente",
|
||||
["ADMINCOMMAND_PLAYER"] = "Jugador",
|
||||
["ADMINCOMMAND_HELP"] = "Dar Llaves de Vehículo",
|
||||
["ADMINCOMMAND_COMMAND"] = "darllave",
|
||||
["ADMINCOMMAND_RANGE"] = "admin",
|
||||
["ADMINCOMMAND_NO_PLAYER"] = "ID incorrecta",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_VEHICLE_LABEL"] = "Vehículo",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEKEYS_LABEL"] = "Claves",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLESEATBELT_LABEL"] = "Cinturón",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLECHAIRS_LABEL"] = "Asientos",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEWINDOWS_LABEL"] = "Windows",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEDOORS_LABEL"] = "Puertas",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEENGINE_LABEL"] = "Motor",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_REARLEFT_LABEL"] = "Trasero izquierdo",
|
||||
["VEHICLEKEYS_RADIAL_REARRIGHT_LABEL"] = "Trasero derecho",
|
||||
["VEHICLEKEYS_RADIAL_HOOD_LABEL"] = "Capó",
|
||||
["VEHICLEKEYS_RADIAL_TRUNK_LABEL"] = "Maletero",
|
||||
["VEHICLEKEYS_RADIAL_DRIVER_LABEL"] = "Conductor",
|
||||
["VEHICLEKEYS_RADIAL_PASSENGER_LABEL"] = "Pasajero",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_ANCHOR"] = "Ancla",
|
||||
|
||||
["VEHICLEKEYS_MAIN_MENU_TITLE"] = 'Gestión de Claves',
|
||||
["VEHICLEKEYS_NEARBY_PLAYERS_MENU_TITLE"] = 'Jugador(es) Cercano(s)',
|
||||
["VEHICLEKEYS_NO_PLAYERS_FOUND"] = 'Ningún jugador encontrado cerca',
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_HEADER"] = 'Clave Seleccionada',
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_MODEL"] = 'Modelo:',
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_PLATE"] = 'Matrícula:',
|
||||
["VEHICLEKEYS_MENU_USE_KEY_TITLE"] = 'Usar Clave',
|
||||
["VEHICLEKEYS_MENU_USE_KEY_DESCRIPTION"] = 'Usa la clave seleccionada en el vehículo más cercano.',
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_TITLE"] = 'Dar Clave',
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_DESCRIPTION"] = 'Da la clave a los jugadores cercanos',
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_TITLE"] = 'Eliminar Clave',
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_DESCRIPTION"] = 'Elimina la clave seleccionada',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_TITLE"] = 'Limpiar Claves de Vehículos',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_ERROR"] = 'No hay claves para eliminar',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_SUCCESS"] = 'Todas las claves se han eliminado correctamente',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_DESCRIPTION"] = 'Eliminar todas las claves de los vehículos que no posees',
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_TITLE"] = 'Acceder a la Lista de Claves',
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_DESCRIPTION"] = 'Muestra la lista de claves que posees',
|
||||
["VEHICLEKEYS_ALL_KEYS_MENU_TITLE"] = 'Lista de Claves',
|
||||
|
||||
["VEHICLEKEYS_RADIAL_CHANGE_SEAT_PROGRESS"] = "Cambio de asiento",
|
||||
|
||||
["VEHICLEKEYS_COMMAND_ENGINE"] = 'Desbloquear/bloquear vehículo',
|
||||
["VEHICLEKEYS_COMMAND_USEKEY"] = 'Control del motor',
|
||||
|
||||
["VEHICLEKEYS_PLATE_SHOP_LABEL"] = 'Tienda de placas',
|
||||
["VEHICLEKEYS_PLATE_SHOP_NAME"] = 'Tienda de placas',
|
||||
|
||||
["VEHICLEKEYS_OPEN_PLATE"] = 'Abrir tienda',
|
||||
["VEHICLEKEYS_OPEN_PLATE_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_COPY_KEYS"] = 'Copia de llaves',
|
||||
["VEHICLEKEYS_COPY_KEYS_TARGET_ICON"] = 'fas fa-copy',
|
||||
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET"] = 'Abrir/Cerrar vehículo',
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET_ICON"] = 'fas fa-key',
|
||||
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET"] = 'Forzar vehículo',
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET_ICON"] = 'fas fa-user-lock',
|
||||
|
||||
["VEHICLEKEYS_PLATE_TARGET"] = 'Cambiar placa',
|
||||
["VEHICLEKEYS_PLATE_TARGET_ICON"] = 'fas fa-screwdriver',
|
||||
|
||||
["VEHICLEKEYS_GIVEKEYS_TARGET_ADMIN"] = 'Obtener las llaves',
|
||||
["VEHICLEKEYS_GIVEKEYS_TARGET_ICON_ADMIN"] = 'fas fa-key',
|
||||
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET_ADMIN"] = 'Abrir/Cerrar vehículo',
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET_ICON_ADMIN"] = 'fas fa-key',
|
||||
|
||||
["VEHICLEKEYS_ANCHOR_PICKED_PROGRESS"] = 'Levantar ancla',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED_PROGRESS"] = 'Bajar ancla',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED"] = 'Ancla bajada',
|
||||
["VEHICLEKEYS_ANCHOR_PICKED"] = 'Ancla levantada',
|
||||
["VEHICLEKEYS_ANCHOR_CANCELLED"] = 'Ancla cancelada',
|
||||
["VEHICLEKEYS_ANCHOR_SLOW_DOWN"] = 'Reducir velocidad para usar el ancla',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_LEFT_WHEEL"] = 'Rueda delantera izquierda',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_LEFT_WHEEL"] = 'Rueda trasera izquierda',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_RIGHT_WHEEL"] = 'Rueda delantera derecha',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_RIGHT_WHEEL"] = 'Rueda trasera derecha',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_RIGHT_WHEEL"] = 'Rueda central derecha',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_LEFT_WHEEL"] = 'Rueda central izquierda',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_PROGRESS"] = 'Escaneando vehículo...',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_TITLE"] = 'Estado del vehículo',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MODEL_TITLE"] = 'Modelo: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_TITLE"] = 'Número de placa: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_DESCRIPTION"] = 'Presiona para copiar',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_NOTIFICATION"] = '¡Has copiado la placa de matrícula!',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TEMPERATURE_TITLE"] = 'Temperatura del motor',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_OIL_TITLE"] = 'Nivel de aceite',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FUEL_TITLE"] = 'Nivel de combustible',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE_TITLE"] = 'Salud del motor',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BODY_TITLE"] = 'Salud de la carrocería',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TYRES_TITLE"] = 'Salud de los neumáticos:',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_STOCK"] = 'Defecto',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_LVL"] = 'Nivel: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE"] = 'Motor',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BRAKES"] = 'Frenos',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SUSPENSION"] = 'Suspensión',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TRANSMISSION"] = 'Transmisión',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO"] = 'Turbo',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_ON"] = 'Instalado',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_OFF"] = 'No instalado',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET"] = 'Diagnosticar',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEASURE"] = 'Medir el tintado de la ventana',
|
||||
["VEHICLEKEYS_MEASURING_TINT_PROGRESS"] = 'Medición en progreso...',
|
||||
["VEHICLEKEYS_WINDOW_TINT_NONE"] = 'Sin tintado',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIGHT"] = 'Claro (De fábrica)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEDIUM"] = 'Medio (25%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DARK"] = 'Oscuro (50%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIMO"] = 'Limo (100%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_UNKNOWN"] = 'Desconocido',
|
||||
["VEHICLEKEYS_WINDOW_TINT_TITLE"] = 'Tintado de ventanas',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DESCRIPTION"] = 'Nivel de tintado: ',
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STARTED"] = "Motor encendido",
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STOPPED"] = "Motor apagado",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PERMISSION"] = "No tienes permiso para controlar el motor",
|
||||
|
||||
['VEHICLEKEYS_ENGINE_TOGGLE'] = 'Encender/Apagar el motor',
|
||||
['VEHICLEKEYS_USE_KEY'] = 'Abrir/Cerrar el vehículo',
|
||||
['VEHICLEKEYS_HOTWIRE'] = 'Iniciar el puenteo',
|
||||
['VEHICLEKEYS_ANCHOR_BOAT'] = 'Anclar el barco',
|
||||
|
||||
['VEHICLEKEYS_NOTIFICATION_TOO_FAR'] = 'Demasiado lejos del vehículo',
|
||||
['VEHICLEKEYS_USING_GPS'] = 'Usando GPS',
|
||||
['VEHICLEKEYS_GPS_ALREADY_IN_USE'] = 'Este vehículo ya está siendo rastreado',
|
||||
['VEHICLEKEYS_GPS_BLIP_NAME'] = 'Pulso GPS: %s',
|
||||
['VEHICLEKEYS_TRACKER_MENU_TITLE'] = 'Menú de rastreo',
|
||||
['VEHICLEKEYS_TRACKER_NO_VEHICLES'] = 'No hay vehículos rastreados',
|
||||
['VEHICLEKEYS_TRACKER_MENU_DESC'] = 'Placa: %s',
|
||||
|
||||
['VEHICLEKEYS_REMOVE_GPS_TARGET_ICON'] = 'fa-solid fa-magnifying-glass',
|
||||
['VEHICLEKEYS_REMOVE_GPS'] = 'Eliminar GPS',
|
||||
|
||||
['VEHICLEKEYS_GPS_REMOVED'] = 'GPS eliminado del vehículo con matrícula %s',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_FAILED'] = 'No se pudo eliminar el GPS del vehículo con matrícula %s',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_PROGRESSBAR'] = 'Eliminando GPS',
|
||||
['VEHICLEKEYS_NOTIFICATION_GPS_REMOVAL_FAILED'] = 'No se pudo eliminar el GPS',
|
||||
|
||||
}
|
||||
@@ -0,0 +1,212 @@
|
||||
Locales["fr"] = {
|
||||
["VEHICLEKEYS_MENU_TITLE"] = "Copie de clé",
|
||||
["VEHICLEKEYS_MENU_MODEL"] = "Modèle :",
|
||||
["VEHICLEKEYS_MENU_PLATE"] = "Plaque :",
|
||||
["VEHICLEKEYS_MENU_CHOICE_TITLE"] = "Choix du menu",
|
||||
["VEHICLEKEYS_MENU_OWNED_VEHICLES"] = "Véhicules possédés",
|
||||
["VEHICLEKEYS_MENU_OWNED_KEYS"] = "Clés possédées",
|
||||
["BACK_TO_PREVIOUS_MENU"] = "Retour au menu précédent",
|
||||
["NO_KEYS_FOUND"] = "Aucune clé trouvée dans l'inventaire",
|
||||
|
||||
["VEHICLEKEYS_DRAWTEXT_COPYKEYS"] = "E - Copier la clé",
|
||||
["VEHICLEKEYS_DRAWTEXT_PLATE"] = "E - Acheter une plaque",
|
||||
|
||||
["VEHICLEKEYS_DRAWTEXT_CHARGE"] = "Charger :",
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_VEHICLES"] = "Pas de véhicules à proximité...",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATE_IN_CAR"] = "Vous ne pouvez pas utiliser une plaque depuis un véhicule.",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_KEYS"] = "Vous n'avez pas les clés de ce véhicule...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHANGE_PLATE"] = "Vous avez changé votre plaque d'immatriculation en :",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATES"] = "Vous n'avez pas les clés de ce véhicule...",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCK"] = "Vous avez verrouillé le véhicule.",
|
||||
["VEHICLEKEYS_NOTIFICATION_UNLOCK"] = "Vous avez déverrouillé le véhicule.",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_MONEY"] = "Vous n'avez pas assez d'argent...",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_SUCCESS"] = "Vous avez réussi à crocheter la serrure !",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_BROKEN"] = "Votre crochet est cassé !",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_FAIL"] = "Vous n'avez pas réussi à crocheter le véhicule...",
|
||||
["VEHICLEKEYS_NOTIFICATION_TITLE"] = "Vol de véhicule",
|
||||
["VEHICLEKEYS_NOTIFICATION_POLICE_DISPATCH"] = "J'ai déclenché une alarme sur :",
|
||||
["VEHICLEKEYS_NOTIFICATION_ALARM"] = "L'alarme du véhicule a commencé à retentir !",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_POLICES"] = "Il n'y a pas assez de policiers en ville...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NPC_KEYS"] = "Le civil vous a donné les clés de son véhicule !",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_VEHICLE"] = "Vous devez être dans un véhicule pour charger votre smartphone.",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_KEYS"] = "Vous n'avez pas les clés de ce véhicule...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_BATTERY_FULL"] = "La batterie est déjà à 100 %",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_CHARGED"] = "Votre téléphone a été chargé à :",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_PHONE"] = "Vous n'avez pas de smartphone à charger.",
|
||||
["VEHICLEKEYS_NOTIFICATION_NOT_OWNED"] = "Vous n'avez pas les cléfs de ce véhicule.",
|
||||
|
||||
["VEHICLEKEYS_HOTWIRE_STEAL"] = "Vol de clés",
|
||||
["VEHICLEKEYS_HOTWIRE_TAKING_KEYS"] = "Récupération des clés",
|
||||
["VEHICLEKEYS_HOTWIRE"] = "%s - Récupérer les cléfs",
|
||||
|
||||
["VEHICLEKEYS_CHANGING_PLATE"] = 'Changement de plaque d\'immatriculation',
|
||||
["VEHICLEKEYS_MENU_TITLE_PLATE"] = 'Boutique de plaques',
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE"] = 'Acheter une plaque',
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE_DESCRIPTION"] = 'Acheter une plaque',
|
||||
["VEHICLEKEYS_MENU_BUY_CHANGEPLATE_DESCRIPTION"] = 'Acheter un tournevis',
|
||||
["VEHICLEKEYS_MENU_NO_CHANGER_ITEM"] = 'Aucun outil',
|
||||
["VEHICLEKEYS_PLATE_LOCKED"] = 'Le véhicule est vérouillé !',
|
||||
|
||||
["VEHICLEKEYS_LOCKPICK_WHITELIST"] = 'La serrure de cette voiture ne peut pas être ouverte.',
|
||||
["VEHICLEKEYS_LOCKPICK_UNLOCKED"] = 'Cette voiture n\'est pas verrouillée.',
|
||||
["VEHICLEKEYS_LOCKPICK_INSIDE"] = 'Vous ne pouvez pas crocheter une voiture depuis l\'intérieur.',
|
||||
["VEHICLEKEYS_LOCKPICK_PREPARING"] = 'Préparation...',
|
||||
|
||||
["ADMINCOMMAND_NO_VEHICLE"] = "Vous n'êtes pas dans un véhicule",
|
||||
["ADMINCOMMAND_GIVED_VEHICLE"] = "Vous avez correctement donné les clés du véhicule",
|
||||
["ADMINCOMMAND_PLAYER"] = "Joueur",
|
||||
["ADMINCOMMAND_HELP"] = "Donner les clés du véhicule",
|
||||
["ADMINCOMMAND_COMMAND"] = "adminkeys",
|
||||
["ADMINCOMMAND_RANGE"] = "admin",
|
||||
["ADMINCOMMAND_NO_PLAYER"] = "ID incorrect",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_VEHICLE_LABEL"] = "Véhicule",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEKEYS_LABEL"] = "Cléfs",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLESEATBELT_LABEL"] = "Ceinture",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLECHAIRS_LABEL"] = "Sièges",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEWINDOWS_LABEL"] = "Fenêtres",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEDOORS_LABEL"] = "Portes",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEENGINE_LABEL"] = "Moteur",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_REARLEFT_LABEL"] = "Arrière gauche",
|
||||
["VEHICLEKEYS_RADIAL_REARRIGHT_LABEL"] = "Arrière droite",
|
||||
["VEHICLEKEYS_RADIAL_HOOD_LABEL"] = "Capôt",
|
||||
["VEHICLEKEYS_RADIAL_TRUNK_LABEL"] = "Coffre",
|
||||
["VEHICLEKEYS_RADIAL_DRIVER_LABEL"] = "Conducteur",
|
||||
["VEHICLEKEYS_RADIAL_PASSENGER_LABEL"] = "Passager",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_ANCHOR"] = "Ancre",
|
||||
|
||||
["VEHICLEKEYS_MAIN_MENU_TITLE"] = 'Gestion des clés',
|
||||
["VEHICLEKEYS_NEARBY_PLAYERS_MENU_TITLE"] = 'Joueur(s) à proximité',
|
||||
["VEHICLEKEYS_NO_PLAYERS_FOUND"] = 'Aucun joueur à proximité',
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_HEADER"] = 'Clé sélectionnée',
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_MODEL"] = 'Modèle :',
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_PLATE"] = 'Plaque :',
|
||||
["VEHICLEKEYS_MENU_USE_KEY_TITLE"] = 'Utiliser la clé',
|
||||
["VEHICLEKEYS_MENU_USE_KEY_DESCRIPTION"] = 'Utiliser la clé séléctionnée sur le véhicule le plus proche.',
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_TITLE"] = 'Donner la clé',
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_DESCRIPTION"] = 'Donner la clé au(x) joueur(s) à proximité',
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_TITLE"] = 'Supprimer la clé',
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_DESCRIPTION"] = 'Supprimer la clé séléctionnée',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_TITLE"] = 'Nettoyer les clés de véhicule',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_ERROR"] = 'Aucune clé à supprimer',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_SUCCESS"] = 'Toutes les clés ont été supprimées avec succès',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_DESCRIPTION"] = 'Supprimer toutes les clés des véhicules qui ne vous appartienent pas',
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_TITLE"] = 'Accéder à la liste des clés',
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_DESCRIPTION"] = 'Affiche la liste des clés que vous possédez sur vous',
|
||||
["VEHICLEKEYS_ALL_KEYS_MENU_TITLE"] = 'Liste des clés',
|
||||
|
||||
["VEHICLEKEYS_RADIAL_CHANGE_SEAT_PROGRESS"] = "Changement de siège",
|
||||
|
||||
["VEHICLEKEYS_COMMAND_ENGINE"] = 'Déverrouiller/verrouiller le véhicule',
|
||||
["VEHICLEKEYS_COMMAND_USEKEY"] = 'Contrôle moteur',
|
||||
|
||||
["VEHICLEKEYS_PLATE_SHOP_LABEL"] = 'Boutique de plaques',
|
||||
["VEHICLEKEYS_PLATE_SHOP_NAME"] = 'Boutique de plaques',
|
||||
|
||||
["VEHICLEKEYS_OPEN_PLATE"] = 'Ouvrir le magasin',
|
||||
["VEHICLEKEYS_OPEN_PLATE_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_COPY_KEYS"] = 'Copie de clé',
|
||||
["VEHICLEKEYS_COPY_KEYS_TARGET_ICON"] = 'fas fa-copy',
|
||||
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET"] = 'Ouvrir / Fermer le véhicule',
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET_ICON"] = 'fas fa-key',
|
||||
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET"] = 'Crocheter le véhicule',
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET_ICON"] = 'fas fa-user-lock',
|
||||
|
||||
["VEHICLEKEYS_PLATE_TARGET"] = 'Changer de plaque',
|
||||
["VEHICLEKEYS_PLATE_TARGET_ICON"] = 'fas fa-screwdriver',
|
||||
|
||||
["VEHICLEKEYS_GIVEKEYS_TARGET"] = 'Donner les clés',
|
||||
["VEHICLEKEYS_GIVEKEYS_TARGET_ICON"] = 'fas fa-hand-holding-hand',
|
||||
|
||||
["VEHICLEKEYS_GIVEKEYS_TARGET_ADMIN"] = 'Obtenir les clés',
|
||||
["VEHICLEKEYS_GIVEKEYS_TARGET_ICON_ADMIN"] = 'fas fa-key',
|
||||
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET_ADMIN"] = 'Ouvrir / Fermer le véhicule',
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET_ICON_ADMIN"] = 'fas fa-key',
|
||||
|
||||
["VEHICLEKEYS_ANCHOR_PICKED_PROGRESS"] = 'Relever l\'ancre',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED_PROGRESS"] = 'Abaisser l\'ancre',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED"] = 'Ancre baissée',
|
||||
["VEHICLEKEYS_ANCHOR_PICKED"] = 'Ancre levée',
|
||||
["VEHICLEKEYS_ANCHOR_CANCELLED"] = 'Ancre annulée',
|
||||
["VEHICLEKEYS_ANCHOR_SLOW_DOWN"] = 'Ralentissez pour utiliser l\'ancre',
|
||||
["VEHICLEKEYS_IS_ANCHORED"] = 'Ce bateau est ancré',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_LEFT_WHEEL"] = 'Roue avant gauche',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_LEFT_WHEEL"] = 'Roue arrière gauche',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_RIGHT_WHEEL"] = 'Roue avant droite',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_RIGHT_WHEEL"] = 'Roue arrière droite',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_RIGHT_WHEEL"] = 'Roue centrale droite',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_LEFT_WHEEL"] = 'Roue centrale gauche',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_PROGRESS"] = 'Scan du véhicule...',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_TITLE"] = 'Statut du véhicule',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MODEL_TITLE"] = 'Modèle: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_TITLE"] = 'Numéro de plaque: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_DESCRIPTION"] = 'Appuyez pour copier',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_NOTIFICATION"] = 'Vous avez copié la plaque d\'immatriculation !',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TEMPERATURE_TITLE"] = 'Température du moteur',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_OIL_TITLE"] = 'Niveau d\'huile',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FUEL_TITLE"] = 'Niveau de carburant',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE_TITLE"] = 'Santé du moteur',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BODY_TITLE"] = 'Santé de la carosserie',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TYRES_TITLE"] = 'Santé des pneus:',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_STOCK"] = 'Défaut',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_LVL"] = 'Niveau: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE"] = 'Moteur',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BRAKES"] = 'Freins',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SUSPENSION"] = 'Suspension',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TRANSMISSION"] = 'Transmission',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO"] = 'Turbo',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_ON"] = 'Installé',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_OFF"] = 'Non installé',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET"] = 'Diagnostiquer',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEASURE"] = 'Mesurer la teinte de la vitre',
|
||||
["VEHICLEKEYS_MEASURING_TINT_PROGRESS"] = 'Mesure en cours...',
|
||||
["VEHICLEKEYS_WINDOW_TINT_NONE"] = 'Aucune teinte',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIGHT"] = 'Léger (Usine)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEDIUM"] = 'Moyen (25%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DARK"] = 'Sombre (50%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIMO"] = 'Limo (100%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_UNKNOWN"] = 'Inconnu',
|
||||
["VEHICLEKEYS_WINDOW_TINT_TITLE"] = 'Teinte des fenêtres',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DESCRIPTION"] = 'Niveau de teinte: ',
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STARTED"] = "Moteur démarré",
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STOPPED"] = "Moteur arrêté",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PERMISSION"] = "Vous n'avez pas la permission de contrôler le moteur",
|
||||
|
||||
['VEHICLEKEYS_ENGINE_TOGGLE'] = 'Démarrer/Arrêter le moteur',
|
||||
['VEHICLEKEYS_USE_KEY'] = 'Ouvrir/Fermer le véhicule',
|
||||
['VEHICLEKEYS_HOTWIRE'] = 'Commencer le démarrage forcé',
|
||||
['VEHICLEKEYS_ANCHOR_BOAT'] = 'Ancrer le bateau',
|
||||
|
||||
['VEHICLEKEYS_NOTIFICATION_TOO_FAR'] = 'Trop loin du véhicule',
|
||||
|
||||
['VEHICLEKEYS_NOTIFICATION_TOO_FAR'] = 'Trop loin du véhicule',
|
||||
['VEHICLEKEYS_USING_GPS'] = 'Utilisation du GPS',
|
||||
['VEHICLEKEYS_GPS_ALREADY_IN_USE'] = 'Ce véhicule est déjà suivi',
|
||||
['VEHICLEKEYS_GPS_BLIP_NAME'] = 'Pulse GPS: %s',
|
||||
['VEHICLEKEYS_TRACKER_MENU_TITLE'] = 'Menu de suivi',
|
||||
['VEHICLEKEYS_TRACKER_NO_VEHICLES'] = 'Aucun véhicule suivi',
|
||||
['VEHICLEKEYS_TRACKER_MENU_DESC'] = 'Plaque: %s',
|
||||
|
||||
['VEHICLEKEYS_REMOVE_GPS_TARGET_ICON'] = 'fa-solid fa-magnifying-glass',
|
||||
['VEHICLEKEYS_REMOVE_GPS'] = 'Supprimer le GPS',
|
||||
|
||||
['VEHICLEKEYS_GPS_REMOVED'] = 'GPS supprimé du véhicule avec la plaque %s',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_FAILED'] = 'Échec de la suppression du GPS du véhicule avec la plaque %s',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_PROGRESSBAR'] = 'Suppression du GPS',
|
||||
['VEHICLEKEYS_NOTIFICATION_GPS_REMOVAL_FAILED'] = 'Échec de la suppression du GPS',
|
||||
|
||||
}
|
||||
@@ -0,0 +1,201 @@
|
||||
Locales["it"] = {
|
||||
["VEHICLEKEYS_MENU_TITLE"] = "Copia Chiavi",
|
||||
["VEHICLEKEYS_MENU_MODEL"] = "Modello :",
|
||||
["VEHICLEKEYS_MENU_PLATE"] = "Targa :",
|
||||
["VEHICLEKEYS_MENU_CHOICE_TITLE"] = "Scelta Menu",
|
||||
["VEHICLEKEYS_MENU_OWNED_VEHICLES"] = "Veicoli Posseduti",
|
||||
["VEHICLEKEYS_MENU_OWNED_KEYS"] = "Chiavi Possedute",
|
||||
["BACK_TO_PREVIOUS_MENU"] = "Torna al Menu Precedente",
|
||||
["NO_KEYS_FOUND"] = "Nessuna chiave trovata nell'inventario",
|
||||
|
||||
["VEHICLEKEYS_DRAWTEXT_COPYKEYS"] = "E - Copia la Chiave",
|
||||
["VEHICLEKEYS_DRAWTEXT_PLATE"] = "E - Acquista una Targa",
|
||||
|
||||
["VEHICLEKEYS_DRAWTEXT_CHARGE"] = "Carica :",
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_VEHICLES"] = "Nessun veicolo nelle vicinanze...",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATE_IN_CAR"] = "Non puoi utilizzare una targa da dentro un veicolo.",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_KEYS"] = "Non possiedi le chiavi di questo veicolo...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHANGE_PLATE"] = "Hai cambiato la tua targa in:",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATES"] = "Non possiedi le chiavi di questo veicolo...",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCK"] = "Hai bloccato il veicolo.",
|
||||
["VEHICLEKEYS_NOTIFICATION_UNLOCK"] = "Hai sbloccato il veicolo.",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_MONEY"] = "Non hai abbastanza soldi...",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_SUCCESS"] = "Sei riuscito a forzare la serratura!",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_BROKEN"] = "Il tuo attrezzo si è rotto!",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_FAIL"] = "Non sei riuscito a forzare il veicolo...",
|
||||
["VEHICLEKEYS_NOTIFICATION_TITLE"] = "Furto di Veicoli",
|
||||
["VEHICLEKEYS_NOTIFICATION_POLICE_DISPATCH"] = "Ho attivato un allarme su:",
|
||||
["VEHICLEKEYS_NOTIFICATION_ALARM"] = "L'allarme del veicolo è iniziato a suonare!",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_POLICES"] = "Non ci sono abbastanza poliziotti in città...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NPC_KEYS"] = "Il cittadino ti ha dato le chiavi del suo veicolo!",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_VEHICLE"] = "Devi essere in un veicolo per caricare il tuo smartphone.",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_KEYS"] = "Non possiedi le chiavi di questo veicolo...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_BATTERY_FULL"] = "La batteria è già al 100 %",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_CHARGED"] = "Il tuo telefono è stato caricato a:",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_PHONE"] = "Non hai un telefono da caricare.",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_MATCH"] = "La targa o il modello non corrispondono.",
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_NOT_OWNED"] = "Non possiedi le chiavi di questo veicolo.",
|
||||
|
||||
["VEHICLEKEYS_HOTWIRE_STEAL"] = "Rubare le Chiavi",
|
||||
["VEHICLEKEYS_HOTWIRE_TAKING_KEYS"] = "Recupero Chiavi",
|
||||
["VEHICLEKEYS_HOTWIRE"] = "%s - Recupera le Chiavi",
|
||||
|
||||
["VEHICLEKEYS_CHANGING_PLATE"] = 'Cambiando Targa',
|
||||
["VEHICLEKEYS_MENU_TITLE_PLATE"] = 'Negozio di Targhe',
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE"] = 'Acquista una Targa',
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE_DESCRIPTION"] = 'Acquista una Targa',
|
||||
["VEHICLEKEYS_MENU_BUY_CHANGEPLATE_DESCRIPTION"] = 'Acquista un Cacciavite',
|
||||
["VEHICLEKEYS_MENU_NO_CHANGER_ITEM"] = 'Nessun Attrezzo',
|
||||
["VEHICLEKEYS_PLATE_LOCKED"] = 'Il veicolo è bloccato!',
|
||||
|
||||
["VEHICLEKEYS_MAIN_MENU_TITLE"] = 'Gestione Chiavi',
|
||||
["VEHICLEKEYS_NEARBY_PLAYERS_MENU_TITLE"] = 'Giocatore(i) Vicino',
|
||||
["VEHICLEKEYS_NO_PLAYERS_FOUND"] = 'Nessun giocatore nelle vicinanze',
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_HEADER"] = 'Chiave Selezionata',
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_MODEL"] = 'Modello :',
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_PLATE"] = 'Targa :',
|
||||
["VEHICLEKEYS_MENU_USE_KEY_TITLE"] = 'Usa la Chiave',
|
||||
["VEHICLEKEYS_MENU_USE_KEY_DESCRIPTION"] = 'Usa la chiave selezionata sul veicolo più vicino.',
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_TITLE"] = 'Dai la Chiave',
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_DESCRIPTION"] = 'Dai la chiave ai giocatori vicini',
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_TITLE"] = 'Elimina la Chiave',
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_DESCRIPTION"] = 'Elimina la chiave selezionata',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_TITLE"] = 'Pulisci le Chiavi dei Veicoli',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_ERROR"] = 'Nessuna chiave da eliminare',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_SUCCESS"] = 'Tutte le chiavi sono state eliminate con successo',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_DESCRIPTION"] = 'Elimina tutte le chiavi dai veicoli che non possiedi',
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_TITLE"] = 'Accedi alla Lista delle Chiavi',
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_DESCRIPTION"] = 'Mostra la lista delle chiavi che possiedi',
|
||||
["VEHICLEKEYS_ALL_KEYS_MENU_TITLE"] = 'Lista delle Chiavi',
|
||||
|
||||
["VEHICLEKEYS_LOCKPICK_WHITELIST"] = 'La serratura di questa macchina non può essere aperta.',
|
||||
["VEHICLEKEYS_LOCKPICK_UNLOCKED"] = 'Questo veicolo non è bloccato.',
|
||||
["VEHICLEKEYS_LOCKPICK_INSIDE"] = 'Non puoi forzare una macchina da dentro.',
|
||||
|
||||
["ADMINCOMMAND_NO_VEHICLE"] = "Non sei in un veicolo",
|
||||
["ADMINCOMMAND_GIVED_VEHICLE"] = "Hai dato correttamente le chiavi del veicolo",
|
||||
["ADMINCOMMAND_PLAYER"] = "Giocatore",
|
||||
["ADMINCOMMAND_HELP"] = "Dai le chiavi del veicolo",
|
||||
["ADMINCOMMAND_COMMAND"] = "adminkeys",
|
||||
["ADMINCOMMAND_RANGE"] = "admin",
|
||||
["ADMINCOMMAND_NO_PLAYER"] = "ID non valido",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_VEHICLE_LABEL"] = "Veicolo",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEKEYS_LABEL"] = "Chiavi",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLESEATBELT_LABEL"] = "Cintura",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLECHAIRS_LABEL"] = "Posti",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEWINDOWS_LABEL"] = "Finestre",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEDOORS_LABEL"] = "Porte",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEENGINE_LABEL"] = "Motore",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_REARLEFT_LABEL"] = "Posteriore Sinistra",
|
||||
["VEHICLEKEYS_RADIAL_REARRIGHT_LABEL"] = "Posteriore Destra",
|
||||
["VEHICLEKEYS_RADIAL_HOOD_LABEL"] = "Cofano",
|
||||
["VEHICLEKEYS_RADIAL_TRUNK_LABEL"] = "Bagagliaio",
|
||||
["VEHICLEKEYS_RADIAL_DRIVER_LABEL"] = "Conducente",
|
||||
["VEHICLEKEYS_RADIAL_PASSENGER_LABEL"] = "Passeggero",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_CHANGE_SEAT_PROGRESS"] = "Cambio di posto",
|
||||
|
||||
["VEHICLEKEYS_COMMAND_ENGINE"] = 'Sblocca/Blocca veicolo',
|
||||
["VEHICLEKEYS_COMMAND_USEKEY"] = 'Controllo motore',
|
||||
|
||||
["VEHICLEKEYS_PLATE_SHOP_LABEL"] = 'Negozio di targhe',
|
||||
["VEHICLEKEYS_PLATE_SHOP_NAME"] = 'Negozio di targhe',
|
||||
|
||||
["VEHICLEKEYS_OPEN_PLATE"] = 'Apri negozio',
|
||||
["VEHICLEKEYS_OPEN_PLATE_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_COPY_KEYS"] = 'Copia chiavi',
|
||||
["VEHICLEKEYS_COPY_KEYS_TARGET_ICON"] = 'fas fa-copy',
|
||||
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET"] = 'Apri/Chiudi veicolo',
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET_ICON"] = 'fas fa-key',
|
||||
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET"] = 'Forzare veicolo',
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET_ICON"] = 'fas fa-user-lock',
|
||||
|
||||
["VEHICLEKEYS_PLATE_TARGET"] = 'Cambia targa',
|
||||
["VEHICLEKEYS_PLATE_TARGET_ICON"] = 'fas fa-screwdriver',
|
||||
|
||||
["VEHICLEKEYS_ANCHOR_PICKED_PROGRESS"] = 'Solleva l\'ancora',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED_PROGRESS"] = 'Abbassa l\'ancora',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED"] = 'Ancora abbassata',
|
||||
["VEHICLEKEYS_ANCHOR_PICKED"] = 'Ancora sollevata',
|
||||
["VEHICLEKEYS_ANCHOR_CANCELLED"] = 'Ancora annullata',
|
||||
["VEHICLEKEYS_ANCHOR_SLOW_DOWN"] = 'Ridurre la velocità per usare l\'ancora',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_LEFT_WHEEL"] = 'Ruota anteriore sinistra',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_LEFT_WHEEL"] = 'Ruota posteriore sinistra',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_RIGHT_WHEEL"] = 'Ruota anteriore destra',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_RIGHT_WHEEL"] = 'Ruota posteriore destra',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_RIGHT_WHEEL"] = 'Ruota centrale destra',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_LEFT_WHEEL"] = 'Ruota centrale sinistra',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_PROGRESS"] = 'Scansione veicolo...',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_TITLE"] = 'Stato del veicolo',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MODEL_TITLE"] = 'Modello: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_TITLE"] = 'Numero di targa: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_DESCRIPTION"] = 'Premere per copiare',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_NOTIFICATION"] = 'Hai copiato il numero di targa!',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TEMPERATURE_TITLE"] = 'Temperatura del motore',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_OIL_TITLE"] = 'Livello dell\'olio',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FUEL_TITLE"] = 'Livello del carburante',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE_TITLE"] = 'Salute del motore',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BODY_TITLE"] = 'Salute della carrozzeria',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TYRES_TITLE"] = 'Salute dei pneumatici:',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_STOCK"] = 'Difetto',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_LVL"] = 'Livello: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE"] = 'Motore',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BRAKES"] = 'Freni',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SUSPENSION"] = 'Sospensioni',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TRANSMISSION"] = 'Trasmissione',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO"] = 'Turbo',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_ON"] = 'Installato',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_OFF"] = 'Non installato',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET"] = 'Diagnostica',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEASURE"] = 'Misurare la tinta del finestrino',
|
||||
["VEHICLEKEYS_MEASURING_TINT_PROGRESS"] = 'Misurazione in corso...',
|
||||
["VEHICLEKEYS_WINDOW_TINT_NONE"] = 'Nessuna tinta',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIGHT"] = 'Leggera (Di fabbrica)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEDIUM"] = 'Media (25%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DARK"] = 'Scura (50%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIMO"] = 'Limo (100%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_UNKNOWN"] = 'Sconosciuta',
|
||||
["VEHICLEKEYS_WINDOW_TINT_TITLE"] = 'Tinta dei finestrini',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DESCRIPTION"] = 'Livello di tinta: ',
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STARTED"] = "Motore avviato",
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STOPPED"] = "Motore spento",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PERMISSION"] = "Non hai il permesso per controllare il motore",
|
||||
|
||||
['VEHICLEKEYS_ENGINE_TOGGLE'] = 'Accendi/Spegni il motore',
|
||||
['VEHICLEKEYS_USE_KEY'] = 'Apri/Chiudi il veicolo',
|
||||
['VEHICLEKEYS_HOTWIRE'] = 'Avvia il collegamento diretto',
|
||||
['VEHICLEKEYS_ANCHOR_BOAT'] = 'Ancora la barca',
|
||||
|
||||
['VEHICLEKEYS_NOTIFICATION_TOO_FAR'] = 'Troppo lontano dal veicolo',
|
||||
|
||||
['VEHICLEKEYS_NOTIFICATION_TOO_FAR'] = 'Troppo lontano dal veicolo',
|
||||
['VEHICLEKEYS_USING_GPS'] = 'Uso del GPS',
|
||||
['VEHICLEKEYS_GPS_ALREADY_IN_USE'] = 'Questo veicolo è già tracciato',
|
||||
['VEHICLEKEYS_GPS_BLIP_NAME'] = 'Pulsazione GPS: %s',
|
||||
['VEHICLEKEYS_TRACKER_MENU_TITLE'] = 'Menu di tracciamento',
|
||||
['VEHICLEKEYS_TRACKER_NO_VEHICLES'] = 'Nessun veicolo tracciato',
|
||||
['VEHICLEKEYS_TRACKER_MENU_DESC'] = 'Targa: %s',
|
||||
|
||||
['VEHICLEKEYS_REMOVE_GPS_TARGET_ICON'] = 'fa-solid fa-magnifying-glass',
|
||||
['VEHICLEKEYS_REMOVE_GPS'] = 'Rimuovere il GPS',
|
||||
|
||||
['VEHICLEKEYS_GPS_REMOVED'] = 'GPS rimosso dal veicolo con targa %s',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_FAILED'] = 'Impossibile rimuovere il GPS dal veicolo con targa %s',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_PROGRESSBAR'] = 'Rimozione GPS',
|
||||
['VEHICLEKEYS_NOTIFICATION_GPS_REMOVAL_FAILED'] = 'Rimozione GPS fallita',
|
||||
|
||||
}
|
||||
@@ -0,0 +1,187 @@
|
||||
Locales["jp"] = {
|
||||
["VEHICLEKEYS_MENU_TITLE"] = "キーコピー",
|
||||
["VEHICLEKEYS_MENU_MODEL"] = "モデル:",
|
||||
["VEHICLEKEYS_MENU_PLATE"] = "プレート:",
|
||||
["VEHICLEKEYS_MENU_CHOICE_TITLE"] = "メニュー選択",
|
||||
["VEHICLEKEYS_MENU_OWNED_VEHICLES"] = "所有している車両",
|
||||
["VEHICLEKEYS_MENU_OWNED_KEYS"] = "所有しているキー",
|
||||
["BACK_TO_PREVIOUS_MENU"] = "前のメニューに戻る",
|
||||
["NO_KEYS_FOUND"] = "インベントリにキーが見つかりません",
|
||||
["VEHICLEKEYS_DRAWTEXT_COPYKEYS"] = "E - キーをコピー",
|
||||
["VEHICLEKEYS_DRAWTEXT_PLATE"] = "E - プレートを購入",
|
||||
["VEHICLEKEYS_DRAWTEXT_CHARGE"] = "充電:",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_VEHICLES"] = "近くに車両がありません...",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATE_IN_CAR"] = "車両内からプレートを使用することはできません。",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_KEYS"] = "この車両のキーを持っていません...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHANGE_PLATE"] = "プレートを次に変更しました:",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATES"] = "この車両のキーを持っていません...",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCK"] = "車両をロックしました。",
|
||||
["VEHICLEKEYS_NOTIFICATION_UNLOCK"] = "車両のロックを解除しました。",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_MONEY"] = "お金が十分ありません...",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_SUCCESS"] = "ロックを成功裏に開けました!",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_BROKEN"] = "ロックピックが壊れました!",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_FAIL"] = "車両のロックを解除できませんでした...",
|
||||
["VEHICLEKEYS_NOTIFICATION_TITLE"] = "車両の窃盗",
|
||||
["VEHICLEKEYS_NOTIFICATION_POLICE_DISPATCH"] = "次にアラームが鳴りました:",
|
||||
["VEHICLEKEYS_NOTIFICATION_ALARM"] = "車両のアラームが鳴り始めました!",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_POLICES"] = "街には十分な警官がいません...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NPC_KEYS"] = "市民があなたに車両のキーを渡しました!",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_VEHICLE"] = "スマートフォンを充電するには車両にいる必要があります。",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_KEYS"] = "この車両のキーを持っていません...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_BATTERY_FULL"] = "バッテリーはすでに100%充電されています",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_CHARGED"] = "スマートフォンが次に充電されました:",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_PHONE"] = "充電するスマートフォンがありません。",
|
||||
["VEHICLEKEYS_NOTIFICATION_NOT_OWNED"] = "この車両のキーを持っていません。",
|
||||
["VEHICLEKEYS_HOTWIRE_STEAL"] = "キー窃盗",
|
||||
["VEHICLEKEYS_HOTWIRE_TAKING_KEYS"] = "キー受け取り",
|
||||
["VEHICLEKEYS_HOTWIRE"] = "%s - キーを受け取る",
|
||||
["VEHICLEKEYS_CHANGING_PLATE"] = "プレート変更",
|
||||
["VEHICLEKEYS_MENU_TITLE_PLATE"] = "プレートショップ",
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE"] = "プレートを購入",
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE_DESCRIPTION"] = "プレートを購入",
|
||||
["VEHICLEKEYS_MENU_BUY_CHANGEPLATE_DESCRIPTION"] = "ドライバーを購入",
|
||||
["VEHICLEKEYS_MENU_NO_CHANGER_ITEM"] = "ツールなし",
|
||||
["VEHICLEKEYS_PLATE_LOCKED"] = "車両がロックされています!",
|
||||
["VEHICLEKEYS_LOCKPICK_WHITELIST"] = "この車のロックを解除することはできません。",
|
||||
["VEHICLEKEYS_LOCKPICK_UNLOCKED"] = "この車はロックされていません。",
|
||||
["VEHICLEKEYS_LOCKPICK_INSIDE"] = "車内から車両を解錠することはできません。",
|
||||
["ADMINCOMMAND_NO_VEHICLE"] = "車両に乗っていません",
|
||||
["ADMINCOMMAND_GIVED_VEHICLE"] = "車両のキーを正常に渡しました",
|
||||
["ADMINCOMMAND_PLAYER"] = "プレイヤー",
|
||||
["ADMINCOMMAND_HELP"] = "車両のキーを渡す",
|
||||
["ADMINCOMMAND_COMMAND"] = "adminkeys",
|
||||
["ADMINCOMMAND_RANGE"] = "admin",
|
||||
["ADMINCOMMAND_NO_PLAYER"] = "無効なID",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLE_LABEL"] = "車両",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEKEYS_LABEL"] = "キー",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLESEATBELT_LABEL"] = "シートベルト",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLECHAIRS_LABEL"] = "シート",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEWINDOWS_LABEL"] = "ウィンドウ",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEDOORS_LABEL"] = "ドア",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEENGINE_LABEL"] = "エンジン",
|
||||
["VEHICLEKEYS_RADIAL_REARLEFT_LABEL"] = "後ろ左",
|
||||
["VEHICLEKEYS_RADIAL_REARRIGHT_LABEL"] = "後ろ右",
|
||||
["VEHICLEKEYS_RADIAL_HOOD_LABEL"] = "フード",
|
||||
["VEHICLEKEYS_RADIAL_TRUNK_LABEL"] = "トランク",
|
||||
["VEHICLEKEYS_RADIAL_DRIVER_LABEL"] = "ドライバー",
|
||||
["VEHICLEKEYS_RADIAL_PASSENGER_LABEL"] = "乗客",
|
||||
["VEHICLEKEYS_MAIN_MENU_TITLE"] = "キー管理",
|
||||
["VEHICLEKEYS_NEARBY_PLAYERS_MENU_TITLE"] = "近くのプレイヤー",
|
||||
["VEHICLEKEYS_NO_PLAYERS_FOUND"] = "近くにプレイヤーが見つかりませんでした",
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_HEADER"] = "選択したキー",
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_MODEL"] = "モデル:",
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_PLATE"] = "プレート:",
|
||||
["VEHICLEKEYS_MENU_USE_KEY_TITLE"] = "キーを使用する",
|
||||
["VEHICLEKEYS_MENU_USE_KEY_DESCRIPTION"] = "最も近い車両で選択したキーを使用します。",
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_TITLE"] = "キーを渡す",
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_DESCRIPTION"] = "近くのプレイヤーにキーを渡します",
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_TITLE"] = "キーを削除",
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_DESCRIPTION"] = "選択したキーを削除します",
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_TITLE"] = "車両のキーをクリア",
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_ERROR"] = "削除するキーはありません",
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_SUCCESS"] = "すべてのキーが正常に削除されました",
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_DESCRIPTION"] = "所有していない車両のすべてのキーを削除します",
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_TITLE"] = "すべてのキーリストにアクセス",
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_DESCRIPTION"] = "所有しているキーのリストを表示します",
|
||||
["VEHICLEKEYS_ALL_KEYS_MENU_TITLE"] = "すべてのキーのリスト",
|
||||
["VEHICLEKEYS_RADIAL_CHANGE_SEAT_PROGRESS"] = "シート変更中",
|
||||
|
||||
["VEHICLEKEYS_COMMAND_ENGINE"] = '車両のロック/アンロック',
|
||||
["VEHICLEKEYS_COMMAND_USEKEY"] = 'エンジン制御',
|
||||
|
||||
["VEHICLEKEYS_PLATE_SHOP_LABEL"] = 'ナンバープレートショップ',
|
||||
["VEHICLEKEYS_PLATE_SHOP_NAME"] = 'ナンバープレートショップ',
|
||||
|
||||
["VEHICLEKEYS_OPEN_PLATE"] = 'ショップを開く',
|
||||
["VEHICLEKEYS_OPEN_PLATE_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_COPY_KEYS"] = 'キーのコピー',
|
||||
["VEHICLEKEYS_COPY_KEYS_TARGET_ICON"] = 'fas fa-copy',
|
||||
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET"] = '車両のオープン/クローズ',
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET_ICON"] = 'fas fa-key',
|
||||
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET"] = '車両のロックピック',
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET_ICON"] = 'fas fa-user-lock',
|
||||
|
||||
["VEHICLEKEYS_PLATE_TARGET"] = 'ナンバープレートの変更',
|
||||
["VEHICLEKEYS_PLATE_TARGET_ICON"] = 'fas fa-screwdriver',
|
||||
|
||||
["VEHICLEKEYS_ANCHOR_PICKED_PROGRESS"] = 'アンカーを上げる',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED_PROGRESS"] = 'アンカーを下げる',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED"] = 'アンカーが下がっている',
|
||||
["VEHICLEKEYS_ANCHOR_PICKED"] = 'アンカーが上がっている',
|
||||
["VEHICLEKEYS_ANCHOR_CANCELLED"] = 'アンカーキャンセル',
|
||||
["VEHICLEKEYS_ANCHOR_SLOW_DOWN"] = 'アンカーを使用するには速度を落としてください',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_LEFT_WHEEL"] = '前左ホイール',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_LEFT_WHEEL"] = '後左ホイール',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_RIGHT_WHEEL"] = '前右ホイール',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_RIGHT_WHEEL"] = '後右ホイール',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_RIGHT_WHEEL"] = '中央右ホイール',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_LEFT_WHEEL"] = '中央左ホイール',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_PROGRESS"] = '車両をスキャン中...',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_TITLE"] = '車両の状態',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MODEL_TITLE"] = 'モデル: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_TITLE"] = 'ナンバープレート番号: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_DESCRIPTION"] = 'コピーするには押してください',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_NOTIFICATION"] = 'ナンバープレートをコピーしました!',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TEMPERATURE_TITLE"] = 'エンジン温度',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_OIL_TITLE"] = 'オイルレベル',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FUEL_TITLE"] = '燃料レベル',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE_TITLE"] = 'エンジンの健康状態',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BODY_TITLE"] = 'ボディの健康状態',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TYRES_TITLE"] = 'タイヤの健康状態:',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_STOCK"] = 'デフォルト',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_LVL"] = 'レベル: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE"] = 'エンジン',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BRAKES"] = 'ブレーキ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SUSPENSION"] = 'サスペンション',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TRANSMISSION"] = 'トランスミッション',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO"] = 'ターボ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_ON"] = 'インストール済み',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_OFF"] = '未インストール',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET"] = '診断',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEASURE"] = 'ウィンドウの色合いを測定する',
|
||||
["VEHICLEKEYS_MEASURING_TINT_PROGRESS"] = '測定中...',
|
||||
["VEHICLEKEYS_WINDOW_TINT_NONE"] = '色なし',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIGHT"] = 'ライト(工場出荷時)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEDIUM"] = 'ミディアム(25%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DARK"] = 'ダーク(50%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIMO"] = 'リムジン(100%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_UNKNOWN"] = '不明',
|
||||
["VEHICLEKEYS_WINDOW_TINT_TITLE"] = 'ウィンドウの色合い',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DESCRIPTION"] = '色合いのレベル:',
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STARTED"] = "エンジンが始動しました",
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STOPPED"] = "エンジンが停止しました",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PERMISSION"] = "エンジンを操作する権限がありません",
|
||||
|
||||
['VEHICLEKEYS_ENGINE_TOGGLE'] = 'エンジンのオン/オフ',
|
||||
['VEHICLEKEYS_USE_KEY'] = '車両を開閉する',
|
||||
['VEHICLEKEYS_HOTWIRE'] = 'ホットワイヤリングを開始する',
|
||||
['VEHICLEKEYS_ANCHOR_BOAT'] = 'ボートを停泊する',
|
||||
|
||||
['VEHICLEKEYS_NOTIFICATION_TOO_FAR'] = '車両から離れすぎています',
|
||||
|
||||
['VEHICLEKEYS_NOTIFICATION_TOO_FAR'] = '車両から遠すぎます',
|
||||
['VEHICLEKEYS_USING_GPS'] = 'GPSを使用中',
|
||||
['VEHICLEKEYS_GPS_ALREADY_IN_USE'] = 'この車両はすでに追跡されています',
|
||||
['VEHICLEKEYS_GPS_BLIP_NAME'] = 'GPSパルス: %s',
|
||||
['VEHICLEKEYS_TRACKER_MENU_TITLE'] = 'トラッカーメニュー',
|
||||
['VEHICLEKEYS_TRACKER_NO_VEHICLES'] = '追跡されている車両はありません',
|
||||
['VEHICLEKEYS_TRACKER_MENU_DESC'] = 'ナンバープレート: %s',
|
||||
|
||||
['VEHICLEKEYS_REMOVE_GPS_TARGET_ICON'] = 'fa-solid fa-magnifying-glass',
|
||||
['VEHICLEKEYS_REMOVE_GPS'] = 'GPSを削除',
|
||||
|
||||
['VEHICLEKEYS_GPS_REMOVED'] = '車両のGPSがプレート%sから削除されました',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_FAILED'] = '車両のGPSをプレート%sから削除できませんでした',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_PROGRESSBAR'] = 'GPSを削除中',
|
||||
['VEHICLEKEYS_NOTIFICATION_GPS_REMOVAL_FAILED'] = 'GPSの削除に失敗しました'
|
||||
}
|
||||
@@ -0,0 +1,207 @@
|
||||
Locales["ro"] = {
|
||||
["VEHICLEKEYS_MENU_TITLE"] = "Copie a Cheilor",
|
||||
["VEHICLEKEYS_MENU_MODEL"] = "Model:",
|
||||
["VEHICLEKEYS_MENU_PLATE"] = "Numar:",
|
||||
["VEHICLEKEYS_MENU_CHOICE_TITLE"] = "Alegere Meniu",
|
||||
["VEHICLEKEYS_MENU_OWNED_VEHICLES"] = "Vehicule Detinute",
|
||||
["VEHICLEKEYS_MENU_OWNED_KEYS"] = "Chei Detinute",
|
||||
["BACK_TO_PREVIOUS_MENU"] = "Inapoi la Meniul Anterior",
|
||||
["NO_KEYS_FOUND"] = "Nu s-au gasit chei in inventar",
|
||||
|
||||
["VEHICLEKEYS_DRAWTEXT_COPYKEYS"] = "[E] - Copiere Cheie",
|
||||
["VEHICLEKEYS_DRAWTEXT_PLATE"] = "[E] - Cumpara un numar",
|
||||
|
||||
["VEHICLEKEYS_DRAWTEXT_CHARGE"] = "Incarcare:",
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_VEHICLES"] = "Nu sunt vehicule in apropiere",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATE_IN_CAR"] = "Nu poti folosi un numar dintr-un vehicul.",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_KEYS"] = "Nu ai cheile pentru acel vehicul",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHANGE_PLATE"] = "Ti-ai schimbat numarul in:",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATES"] = "Nu ai cheile pentru acest vehicul",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCK"] = "Ai incuiat vehiculul",
|
||||
["VEHICLEKEYS_NOTIFICATION_UNLOCK"] = "Ai descuiat vehiculul",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_MONEY"] = "Nu ai suficienti bani",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_SUCCESS"] = "Ai spart incuietoarea cu succes",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_BROKEN"] = "Speraclul tau s-a rupt",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_FAIL"] = "Nu ai reusit sa spargi incuietoarea vehiculului",
|
||||
["VEHICLEKEYS_NOTIFICATION_TITLE"] = "Furt de Vehicul",
|
||||
["VEHICLEKEYS_NOTIFICATION_POLICE_DISPATCH"] = "Am declansat o alarma pe:",
|
||||
["VEHICLEKEYS_NOTIFICATION_ALARM"] = "Alarma vehiculului a inceput sa sune",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_POLICES"] = "Nu sunt suficienti politisti in oras",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NPC_KEYS"] = "Civilul ti-a dat cheile vehiculului sau",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_VEHICLE"] = "Trebuie sa fii intr-un vehicul pentru a-ti incarca telefonul",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_KEYS"] = "Nu ai cheile pentru acest vehicul",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_BATTERY_FULL"] = "Bateria este deja la 100%",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_CHARGED"] = "Telefonul tau a fost incarcat la:",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_PHONE"] = "Nu ai un Smartphone de incarcat",
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_NOT_OWNED"] = "Nu ai chei pentru acest vehicul.",
|
||||
|
||||
["VEHICLEKEYS_HOTWIRE_STEAL"] = "Furarea cheilor",
|
||||
["VEHICLEKEYS_HOTWIRE_TAKING_KEYS"] = "Preluarea cheilor",
|
||||
["VEHICLEKEYS_HOTWIRE"] = "Apasa %s pentru a porni manual.",
|
||||
|
||||
["VEHICLEKEYS_CHANGING_PLATE"] = 'Schimbare numar de inmatriculare',
|
||||
["VEHICLEKEYS_MENU_TITLE_PLATE"] = 'Magazin de Numere',
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE"] = 'Cumpara un numar',
|
||||
["VEHICLEKEYS_MENU_BUY_SCREWDRIVER"] = 'Cumpara o surubelnita',
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE_DESCRIPTION"] = 'Cumpara un numar',
|
||||
["VEHICLEKEYS_MENU_BUY_CHANGEPLATE_DESCRIPTION"] = 'Cumpara o surubelnita',
|
||||
["VEHICLEKEYS_MENU_NO_CHANGER_ITEM"] = 'Fara unelte',
|
||||
["VEHICLEKEYS_PLATE_LOCKED"] = 'Vehiculul este incuiat!',
|
||||
|
||||
["VEHICLEKEYS_LOCKPICK_WHITELIST"] = 'Incuietoarea acestei masini nu poate fi deschisa.',
|
||||
["VEHICLEKEYS_LOCKPICK_UNLOCKED"] = 'Aceasta masina nu este incuiata.',
|
||||
["VEHICLEKEYS_LOCKPICK_INSIDE"] = 'Nu poti sparge o masina din interior.',
|
||||
["VEHICLEKEYS_LOCKPICK_PREPARING"] = 'Pregatire...',
|
||||
|
||||
["ADMINCOMMAND_NO_VEHICLE"] = "Nu esti intr-un vehicul",
|
||||
["ADMINCOMMAND_GIVED_VEHICLE"] = "Ai dat cheile masinii corect",
|
||||
["ADMINCOMMAND_PLAYER"] = "Jucator",
|
||||
["ADMINCOMMAND_HELP"] = "Da Cheile Vehiculului",
|
||||
["ADMINCOMMAND_COMMAND"] = "givekey",
|
||||
["ADMINCOMMAND_RANGE"] = "admin",
|
||||
["ADMINCOMMAND_NO_PLAYER"] = "ID incorect",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_VEHICLE_LABEL"] = "Vehicul",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEKEYS_LABEL"] = "Chei",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLESEATBELT_LABEL"] = "Centura",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLECHAIRS_LABEL"] = "Scaune",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEWINDOWS_LABEL"] = "Geamuri",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEDOORS_LABEL"] = "Usi",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEENGINE_LABEL"] = "Motor",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_REARLEFT_LABEL"] = "Spate stanga",
|
||||
["VEHICLEKEYS_RADIAL_REARRIGHT_LABEL"] = "Spate dreapta",
|
||||
["VEHICLEKEYS_RADIAL_HOOD_LABEL"] = "Capota",
|
||||
["VEHICLEKEYS_RADIAL_TRUNK_LABEL"] = "Portbagaj",
|
||||
["VEHICLEKEYS_RADIAL_DRIVER_LABEL"] = "Sofer",
|
||||
["VEHICLEKEYS_RADIAL_PASSENGER_LABEL"] = "Pasager",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_ANCHOR"] = "Ancora",
|
||||
|
||||
["VEHICLEKEYS_MAIN_MENU_TITLE"] = 'Gestionare Chei',
|
||||
["VEHICLEKEYS_NEARBY_PLAYERS_MENU_TITLE"] = 'Jucator(i) din Apropiere',
|
||||
["VEHICLEKEYS_NO_PLAYERS_FOUND"] = 'Nu s-au gasit jucatori in apropiere',
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_HEADER"] = 'Cheie Selectata',
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_MODEL"] = 'Model:',
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_PLATE"] = 'Numar:',
|
||||
["VEHICLEKEYS_MENU_USE_KEY_TITLE"] = 'Foloseste Cheia',
|
||||
["VEHICLEKEYS_MENU_USE_KEY_DESCRIPTION"] = 'Foloseste cheia selectata pe vehiculul cel mai apropiat.',
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_TITLE"] = 'Da Cheia',
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_DESCRIPTION"] = 'Da cheia jucatorilor din apropiere',
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_TITLE"] = 'Sterge Cheia',
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_DESCRIPTION"] = 'Sterge cheia selectata',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_TITLE"] = 'Curata Cheile Vehiculelor',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_ERROR"] = 'Nu exista chei de sters',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_SUCCESS"] = 'Toate cheile au fost sterse cu succes',
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_DESCRIPTION"] = 'Sterge toate cheile de la vehicule pe care nu le detii',
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_TITLE"] = 'Acceseaza Lista de Chei',
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_DESCRIPTION"] = 'Afiseaza lista de chei pe care le ai asupra ta',
|
||||
["VEHICLEKEYS_ALL_KEYS_MENU_TITLE"] = 'Lista de Chei',
|
||||
|
||||
["VEHICLEKEYS_RADIAL_CHANGE_SEAT_PROGRESS"] = "Schimbare loc in curs",
|
||||
|
||||
["VEHICLEKEYS_COMMAND_ENGINE"] = 'Incuie/Descuie Vehiculul',
|
||||
["VEHICLEKEYS_COMMAND_USEKEY"] = 'Control Motor',
|
||||
|
||||
["VEHICLEKEYS_PLATE_SHOP_LABEL"] = 'Magazin de Numere',
|
||||
["VEHICLEKEYS_PLATE_SHOP_NAME"] = 'Magazin de Numere',
|
||||
|
||||
["VEHICLEKEYS_OPEN_PLATE"] = 'Deschide Magazinul',
|
||||
["VEHICLEKEYS_OPEN_PLATE_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_COPY_KEYS"] = 'Copiere Cheie',
|
||||
["VEHICLEKEYS_COPY_KEYS_TARGET_ICON"] = 'fas fa-copy',
|
||||
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET"] = 'Deschide/Inchide Vehiculul',
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET_ICON"] = 'fas fa-key',
|
||||
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET"] = 'Sparge Incuietoarea Vehiculului',
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET_ICON"] = 'fas fa-user-lock',
|
||||
|
||||
["VEHICLEKEYS_PLATE_TARGET"] = 'Schimba Numarul',
|
||||
["VEHICLEKEYS_PLATE_TARGET_ICON"] = 'fas fa-screwdriver',
|
||||
|
||||
["VEHICLEKEYS_GIVEKEYS_TARGET_ADMIN"] = 'Obtine cheile',
|
||||
["VEHICLEKEYS_GIVEKEYS_TARGET_ICON_ADMIN"] = 'fas fa-key',
|
||||
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET_ADMIN"] = 'Deschide / Inchide vehiculul',
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET_ICON_ADMIN"] = 'fas fa-key',
|
||||
|
||||
["VEHICLEKEYS_ANCHOR_PICKED_PROGRESS"] = 'Ridicare Ancora',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED_PROGRESS"] = 'Coborare Ancora',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED"] = 'Ancora Coborata',
|
||||
["VEHICLEKEYS_ANCHOR_PICKED"] = 'Ancora Ridicata',
|
||||
["VEHICLEKEYS_ANCHOR_CANCELLED"] = 'Ancora Anulata',
|
||||
["VEHICLEKEYS_ANCHOR_SLOW_DOWN"] = 'Incetineste pentru a Folosi Ancora',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_LEFT_WHEEL"] = 'Roata Fata Stanga',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_LEFT_WHEEL"] = 'Roata Spate Stanga',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_RIGHT_WHEEL"] = 'Roata Fata Dreapta',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_RIGHT_WHEEL"] = 'Roata Spate Dreapta',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_RIGHT_WHEEL"] = 'Roata Mijloc Dreapta',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_LEFT_WHEEL"] = 'Roata Mijloc Stanga',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_PROGRESS"] = 'Scanare Vehicul...',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_TITLE"] = 'Stare Vehicul',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MODEL_TITLE"] = 'Model: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_TITLE"] = 'Numar de Inmatriculare: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_DESCRIPTION"] = 'Apasa pentru a Copia',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_NOTIFICATION"] = 'Ai copiat numarul de inmatriculare!',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TEMPERATURE_TITLE"] = 'Temperatura Motorului',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_OIL_TITLE"] = 'Nivel Ulei',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FUEL_TITLE"] = 'Nivel Combustibil',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE_TITLE"] = 'Sanatate Motor',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BODY_TITLE"] = 'Sanatate Caroserie',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TYRES_TITLE"] = 'Sanatate Anvelope:',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_STOCK"] = 'Standard',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_LVL"] = 'Nivel: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE"] = 'Motor',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BRAKES"] = 'Frane',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SUSPENSION"] = 'Suspensie',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TRANSMISSION"] = 'Transmisie',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO"] = 'Turbo',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_ON"] = 'Instalat',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_OFF"] = 'Neinstalat',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET"] = 'Diagnosticare',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEASURE"] = 'Masoara nuanta geamurilor',
|
||||
["VEHICLEKEYS_MEASURING_TINT_PROGRESS"] = 'Masurare in curs...',
|
||||
["VEHICLEKEYS_WINDOW_TINT_NONE"] = 'Fara nuanta',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIGHT"] = 'Usoara (Din fabrica)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEDIUM"] = 'Medie (25%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DARK"] = 'Inchisa (50%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIMO"] = 'Limuzina (100%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_UNKNOWN"] = 'Necunoscuta',
|
||||
["VEHICLEKEYS_WINDOW_TINT_TITLE"] = 'Nuanta Geamuri',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DESCRIPTION"] = 'Nivel nuanta: ',
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STARTED"] = "Motorul a pornit",
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STOPPED"] = "Motorul s-a oprit",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PERMISSION"] = "Nu ai permisiunea de a controla motorul",
|
||||
|
||||
['VEHICLEKEYS_ENGINE_TOGGLE'] = 'Pornire/Oprire Motor',
|
||||
['VEHICLEKEYS_USE_KEY'] = 'Deschide/Inchide vehiculul',
|
||||
['VEHICLEKEYS_HOTWIRE'] = 'Incepe Hotwiring-ul',
|
||||
['VEHICLEKEYS_ANCHOR_BOAT'] = 'Ancorare barca',
|
||||
|
||||
['VEHICLEKEYS_NOTIFICATION_TOO_FAR'] = 'Prea departe de vehicul',
|
||||
['VEHICLEKEYS_USING_GPS'] = 'Folosire GPS',
|
||||
['VEHICLEKEYS_GPS_ALREADY_IN_USE'] = 'Acest vehicul este deja urmarit',
|
||||
['VEHICLEKEYS_GPS_BLIP_NAME'] = 'Semnal GPS: %s',
|
||||
['VEHICLEKEYS_TRACKER_MENU_TITLE'] = 'Meniu Tracker',
|
||||
['VEHICLEKEYS_TRACKER_NO_VEHICLES'] = 'Nu sunt vehicule urmarite',
|
||||
['VEHICLEKEYS_TRACKER_MENU_DESC'] = 'Numar: %s',
|
||||
|
||||
['VEHICLEKEYS_REMOVE_GPS_TARGET_ICON'] = 'fa-solid fa-magnifying-glass',
|
||||
['VEHICLEKEYS_REMOVE_GPS'] = 'Elimina GPS',
|
||||
|
||||
['VEHICLEKEYS_GPS_REMOVED'] = 'GPS eliminat de pe vehiculul cu numarul %s',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_FAILED'] = 'Nu s-a putut elimina GPS-ul de pe vehiculul cu numarul %s',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_PROGRESSBAR'] = 'Eliminare GPS',
|
||||
['VEHICLEKEYS_NOTIFICATION_GPS_REMOVAL_FAILED'] = 'Nu s-a putut elimina GPS-ul',
|
||||
}
|
||||
@@ -0,0 +1,202 @@
|
||||
Locales["tr"] = {
|
||||
["VEHICLEKEYS_MENU_TITLE"] = "Anahtar Kopyası",
|
||||
["VEHICLEKEYS_MENU_MODEL"] = "Model:",
|
||||
["VEHICLEKEYS_MENU_PLATE"] = "Plaka:",
|
||||
["VEHICLEKEYS_MENU_CHOICE_TITLE"] = "Menü Seçimi",
|
||||
["VEHICLEKEYS_MENU_OWNED_VEHICLES"] = "Sahip Olunan Araçlar",
|
||||
["VEHICLEKEYS_MENU_OWNED_KEYS"] = "Sahip Olunan Anahtarlar",
|
||||
["BACK_TO_PREVIOUS_MENU"] = "Önceki Menüye Dön",
|
||||
["NO_KEYS_FOUND"] = "Envanterde anahtar bulunamadı",
|
||||
|
||||
["VEHICLEKEYS_DRAWTEXT_COPYKEYS"] = "E - Anahtarı Kopyala",
|
||||
["VEHICLEKEYS_DRAWTEXT_PLATE"] = "E - Plaka Satın Al",
|
||||
|
||||
["VEHICLEKEYS_DRAWTEXT_CHARGE"] = "Şarj:",
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_VEHICLES"] = "Yakınında araç yok...",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATE_IN_CAR"] = "Araç içinde plaka kullanamazsınız.",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_KEYS"] = "Bu aracın anahtarına sahip değilsiniz...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHANGE_PLATE"] = "Plaka değiştirildi:",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATES"] = "Bu aracın anahtarına sahip değilsiniz...",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCK"] = "Araç kilitlendi.",
|
||||
["VEHICLEKEYS_NOTIFICATION_UNLOCK"] = "Araç kilidi açıldı.",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_MONEY"] = "Yeterli paranız yok...",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_SUCCESS"] = "Kilit açma başarılı!",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_BROKEN"] = "Kilit açma aracı kırıldı!",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_FAIL"] = "Araç kilidi açılamadı...",
|
||||
["VEHICLEKEYS_NOTIFICATION_TITLE"] = "Araç Hırsızlığı",
|
||||
["VEHICLEKEYS_NOTIFICATION_POLICE_DISPATCH"] = "Alarmı tetikledi:",
|
||||
["VEHICLEKEYS_NOTIFICATION_ALARM"] = "Araç alarmı çalmaya başladı!",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_POLICES"] = "Şehirde yeterli polis yok...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NPC_KEYS"] = "Sivil size aracının anahtarını verdi!",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_VEHICLE"] = "Telefonunuzu şarj etmek için bir araçta olmalısınız.",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_KEYS"] = "Bu aracın anahtarına sahip değilsiniz...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_BATTERY_FULL"] = "Batarya zaten %100 dolu",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_CHARGED"] = "Telefonunuz şarj edildi:",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_PHONE"] = "Şarj edilecek bir telefonunuz yok.",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_MATCH"] = "Plaka veya model eşleşmiyor.",
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_NOT_OWNED"] = "Bu aracın anahtarına sahip değilsiniz.",
|
||||
|
||||
["VEHICLEKEYS_HOTWIRE_STEAL"] = "Anahtar Hırsızlığı",
|
||||
["VEHICLEKEYS_HOTWIRE_TAKING_KEYS"] = "Anahtar Alınıyor",
|
||||
["VEHICLEKEYS_HOTWIRE"] = "%s - Anahtarları Al",
|
||||
|
||||
["VEHICLEKEYS_CHANGING_PLATE"] = "Plaka Değiştirme",
|
||||
["VEHICLEKEYS_MENU_TITLE_PLATE"] = "Plaka Dükkanı",
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE"] = "Plaka Satın Al",
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE_DESCRIPTION"] = "Plaka Satın Al",
|
||||
["VEHICLEKEYS_MENU_BUY_CHANGEPLATE_DESCRIPTION"] = "Tornavida Satın Al",
|
||||
["VEHICLEKEYS_MENU_NO_CHANGER_ITEM"] = "Araç yok",
|
||||
["VEHICLEKEYS_PLATE_LOCKED"] = "Araç kilitli!",
|
||||
|
||||
-- Bağlam menüsü için yeni çeviriler.
|
||||
["VEHICLEKEYS_MAIN_MENU_TITLE"] = "Anahtar Yönetimi",
|
||||
["VEHICLEKEYS_NEARBY_PLAYERS_MENU_TITLE"] = "Yakındaki Oyuncular",
|
||||
["VEHICLEKEYS_NO_PLAYERS_FOUND"] = "Yakınlarda oyuncu bulunamadı",
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_HEADER"] = "Seçilen Anahtar",
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_MODEL"] = "Model:",
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_PLATE"] = "Plaka:",
|
||||
["VEHICLEKEYS_MENU_USE_KEY_TITLE"] = "Anahtarı Kullan",
|
||||
["VEHICLEKEYS_MENU_USE_KEY_DESCRIPTION"] = "En yakındaki araçta seçilen anahtarı kullanın.",
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_TITLE"] = "Anahtarı Ver",
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_DESCRIPTION"] = "Yakındaki oyunculara anahtarı verin",
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_TITLE"] = "Anahtarı Sil",
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_DESCRIPTION"] = "Seçilen anahtarı sil",
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_TITLE"] = "Araç Anahtarlarını Temizle",
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_ERROR"] = "Silinecek anahtar yok",
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_SUCCESS"] = "Tüm anahtarlar başarıyla silindi",
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_DESCRIPTION"] = "Sahip olmadığınız araçlardan tüm anahtarları sil",
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_TITLE"] = "Tüm Anahtar Listesine Eriş",
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_DESCRIPTION"] = "Üzerinizde bulunan tüm anahtarları göster",
|
||||
["VEHICLEKEYS_ALL_KEYS_MENU_TITLE"] = "Tüm Anahtarlar Listesi",
|
||||
|
||||
["VEHICLEKEYS_LOCKPICK_WHITELIST"] = "Bu aracın kilidi açılamaz.",
|
||||
["VEHICLEKEYS_LOCKPICK_UNLOCKED"] = "Bu araç kilitli değil.",
|
||||
["VEHICLEKEYS_LOCKPICK_INSIDE"] = "Araç içinden kilit açılamaz.",
|
||||
|
||||
["ADMINCOMMAND_NO_VEHICLE"] = "Bir araçta değilsiniz",
|
||||
["ADMINCOMMAND_GIVED_VEHICLE"] = "Araç anahtarları başarıyla verildi",
|
||||
["ADMINCOMMAND_PLAYER"] = "Oyuncu",
|
||||
["ADMINCOMMAND_HELP"] = "Araç anahtarlarını ver",
|
||||
["ADMINCOMMAND_COMMAND"] = "adminkeys",
|
||||
["ADMINCOMMAND_RANGE"] = "admin",
|
||||
["ADMINCOMMAND_NO_PLAYER"] = "Geçersiz kimlik",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_VEHICLE_LABEL"] = "Araç",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEKEYS_LABEL"] = "Anahtarlar",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLESEATBELT_LABEL"] = "Kemer",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLECHAIRS_LABEL"] = "Koltuklar",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEWINDOWS_LABEL"] = "Pencereler",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEDOORS_LABEL"] = "Kapılar",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEENGINE_LABEL"] = "Motor",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_REARLEFT_LABEL"] = "Arka sol",
|
||||
["VEHICLEKEYS_RADIAL_REARRIGHT_LABEL"] = "Arka sağ",
|
||||
["VEHICLEKEYS_RADIAL_HOOD_LABEL"] = "Kaput",
|
||||
["VEHICLEKEYS_RADIAL_TRUNK_LABEL"] = "Bagaj",
|
||||
["VEHICLEKEYS_RADIAL_DRIVER_LABEL"] = "Sürücü",
|
||||
["VEHICLEKEYS_RADIAL_PASSENGER_LABEL"] = "Yolcu",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_CHANGE_SEAT_PROGRESS"] = "Koltuk Değiştirme İlerlemesi",
|
||||
|
||||
["VEHICLEKEYS_COMMAND_ENGINE"] = 'Araç Kilidini Aç/Kitle',
|
||||
["VEHICLEKEYS_COMMAND_USEKEY"] = 'Motor Kontrolü',
|
||||
|
||||
["VEHICLEKEYS_PLATE_SHOP_LABEL"] = 'Plaka Mağazası',
|
||||
["VEHICLEKEYS_PLATE_SHOP_NAME"] = 'Plaka Mağazası',
|
||||
|
||||
["VEHICLEKEYS_OPEN_PLATE"] = 'Mağazayı Aç',
|
||||
["VEHICLEKEYS_OPEN_PLATE_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_COPY_KEYS"] = 'Anahtar Kopyala',
|
||||
["VEHICLEKEYS_COPY_KEYS_TARGET_ICON"] = 'fas fa-copy',
|
||||
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET"] = 'Araç Aç/Kapa',
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET_ICON"] = 'fas fa-key',
|
||||
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET"] = 'Araç Kilitleme',
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET_ICON"] = 'fas fa-user-lock',
|
||||
|
||||
["VEHICLEKEYS_PLATE_TARGET"] = 'Plaka Değiştir',
|
||||
["VEHICLEKEYS_PLATE_TARGET_ICON"] = 'fas fa-screwdriver',
|
||||
|
||||
["VEHICLEKEYS_ANCHOR_PICKED_PROGRESS"] = 'Çapa Yükseltme',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED_PROGRESS"] = 'Çapa Alçaltma',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED"] = 'Alçaltılmış Çapa',
|
||||
["VEHICLEKEYS_ANCHOR_PICKED"] = 'Yükseltilmiş Çapa',
|
||||
["VEHICLEKEYS_ANCHOR_CANCELLED"] = 'Çapa İptal Edildi',
|
||||
["VEHICLEKEYS_ANCHOR_SLOW_DOWN"] = 'Çapayı Kullanmak için Yavaşlayın',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_LEFT_WHEEL"] = 'Ön Sol Tekerlek',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_LEFT_WHEEL"] = 'Arka Sol Tekerlek',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_RIGHT_WHEEL"] = 'Ön Sağ Tekerlek',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_RIGHT_WHEEL"] = 'Arka Sağ Tekerlek',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_RIGHT_WHEEL"] = 'Orta Sağ Tekerlek',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_LEFT_WHEEL"] = 'Orta Sol Tekerlek',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_PROGRESS"] = 'Araç Taranıyor...',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_TITLE"] = 'Araç Durumu',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MODEL_TITLE"] = 'Model: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_TITLE"] = 'Plaka Numarası: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_DESCRIPTION"] = 'Kopyalamak için Basın',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_NOTIFICATION"] = 'Plaka numarasını kopyaladınız!',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TEMPERATURE_TITLE"] = 'Motor Sıcaklığı',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_OIL_TITLE"] = 'Yağ Seviyesi',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FUEL_TITLE"] = 'Yakıt Seviyesi',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE_TITLE"] = 'Motor Sağlığı',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BODY_TITLE"] = 'Gövde Sağlığı',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TYRES_TITLE"] = 'Lastik Sağlığı:',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_STOCK"] = 'Varsayılan',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_LVL"] = 'Seviye: ',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE"] = 'Motor',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BRAKES"] = 'Frenler',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SUSPENSION"] = 'Süspansiyon',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TRANSMISSION"] = 'Şanzıman',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO"] = 'Turbo',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_ON"] = 'Kurulu',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_OFF"] = 'Kurulu Değil',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET"] = 'Teşhis',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEASURE"] = 'Pencere karartmasını ölç',
|
||||
["VEHICLEKEYS_MEASURING_TINT_PROGRESS"] = 'Ölçüm devam ediyor...',
|
||||
["VEHICLEKEYS_WINDOW_TINT_NONE"] = 'Karartma yok',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIGHT"] = 'Hafif (Fabrika)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEDIUM"] = 'Orta (25%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DARK"] = 'Koyu (50%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIMO"] = 'Limo (100%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_UNKNOWN"] = 'Bilinmiyor',
|
||||
["VEHICLEKEYS_WINDOW_TINT_TITLE"] = 'Pencere Karartması',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DESCRIPTION"] = 'Karartma seviyesi: ',
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STARTED"] = "Motor çalıştı",
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STOPPED"] = "Motor durdu",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PERMISSION"] = "Motoru kontrol etme izniniz yok",
|
||||
|
||||
['VEHICLEKEYS_ENGINE_TOGGLE'] = 'Motoru Aç/Kapat',
|
||||
['VEHICLEKEYS_USE_KEY'] = 'Aracı Aç/Kapat',
|
||||
['VEHICLEKEYS_HOTWIRE'] = 'Düz Kontak Başlat',
|
||||
['VEHICLEKEYS_ANCHOR_BOAT'] = 'Tekneyi Demirle',
|
||||
|
||||
['VEHICLEKEYS_NOTIFICATION_TOO_FAR'] = 'Araçtan çok uzaktasınız',
|
||||
|
||||
['VEHICLEKEYS_NOTIFICATION_TOO_FAR'] = 'Araçtan çok uzaktasınız',
|
||||
['VEHICLEKEYS_USING_GPS'] = 'GPS kullanılıyor',
|
||||
['VEHICLEKEYS_GPS_ALREADY_IN_USE'] = 'Bu araç zaten izleniyor',
|
||||
['VEHICLEKEYS_GPS_BLIP_NAME'] = 'GPS Dalgası: %s',
|
||||
['VEHICLEKEYS_TRACKER_MENU_TITLE'] = 'İzleyici Menüsü',
|
||||
['VEHICLEKEYS_TRACKER_NO_VEHICLES'] = 'İzlenen araç yok',
|
||||
['VEHICLEKEYS_TRACKER_MENU_DESC'] = 'Plaka: %s',
|
||||
|
||||
['VEHICLEKEYS_REMOVE_GPS_TARGET_ICON'] = 'fa-solid fa-magnifying-glass',
|
||||
['VEHICLEKEYS_REMOVE_GPS'] = 'GPS’i Kaldır',
|
||||
|
||||
['VEHICLEKEYS_GPS_REMOVED'] = 'Plakası %s olan araçtan GPS kaldırıldı',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_FAILED'] = 'Plakası %s olan araçtan GPS kaldırılamadı',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_PROGRESSBAR'] = 'GPS Kaldırılıyor',
|
||||
['VEHICLEKEYS_NOTIFICATION_GPS_REMOVAL_FAILED'] = 'GPS kaldırılamadı',
|
||||
|
||||
}
|
||||
@@ -0,0 +1,196 @@
|
||||
Locales["zh-CN"] = {
|
||||
["VEHICLEKEYS_MENU_TITLE"] = "复制钥匙",
|
||||
["VEHICLEKEYS_MENU_MODEL"] = "模型:",
|
||||
["VEHICLEKEYS_MENU_PLATE"] = "车牌:",
|
||||
["VEHICLEKEYS_MENU_CHOICE_TITLE"] = "菜单选择",
|
||||
["VEHICLEKEYS_MENU_OWNED_VEHICLES"] = "拥有的车辆",
|
||||
["VEHICLEKEYS_MENU_OWNED_KEYS"] = "拥有的钥匙",
|
||||
["BACK_TO_PREVIOUS_MENU"] = "返回上一个菜单",
|
||||
["NO_KEYS_FOUND"] = "在库存中找不到钥匙",
|
||||
|
||||
["VEHICLEKEYS_DRAWTEXT_COPYKEYS"] = "E - 复制钥匙",
|
||||
["VEHICLEKEYS_DRAWTEXT_PLATE"] = "E - 购买车牌",
|
||||
|
||||
["VEHICLEKEYS_DRAWTEXT_CHARGE"] = "充电:",
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_VEHICLES"] = "附近没有车辆...",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATE_IN_CAR"] = "您不能在车辆中使用车牌。",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_KEYS"] = "您没有这辆车的钥匙...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHANGE_PLATE"] = "您已更改车牌至:",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PLATES"] = "您没有这辆车的钥匙...",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCK"] = "您已锁定车辆。",
|
||||
["VEHICLEKEYS_NOTIFICATION_UNLOCK"] = "您已解锁车辆。",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_MONEY"] = "您没有足够的钱...",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_SUCCESS"] = "您成功撬开了锁!",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_BROKEN"] = "您的撬棍断了!",
|
||||
["VEHICLEKEYS_NOTIFICATION_LOCKPICK_FAIL"] = "您未能撬开车辆...",
|
||||
["VEHICLEKEYS_NOTIFICATION_TITLE"] = "车辆盗窃",
|
||||
["VEHICLEKEYS_NOTIFICATION_POLICE_DISPATCH"] = "我触发了警报:",
|
||||
["VEHICLEKEYS_NOTIFICATION_ALARM"] = "车辆警报已开始响起!",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_POLICES"] = "城市中没有足够的警察...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NPC_KEYS"] = "平民给了你他的车钥匙!",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_VEHICLE"] = "您必须在车辆中才能给您的智能手机充电。",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_KEYS"] = "您没有这辆车的钥匙...",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_BATTERY_FULL"] = "电池已经充满100%",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_CHARGED"] = "您的手机已充电至:",
|
||||
["VEHICLEKEYS_NOTIFICATION_CHARGE_NO_PHONE"] = "您没有智能手机可充电。",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_MATCH"] = "车牌或型号不匹配。",
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_NOT_OWNED"] = "您没有这辆车的钥匙。",
|
||||
|
||||
["VEHICLEKEYS_HOTWIRE_STEAL"] = "钥匙盗窃",
|
||||
["VEHICLEKEYS_HOTWIRE_TAKING_KEYS"] = "拿走钥匙",
|
||||
["VEHICLEKEYS_HOTWIRE"] = "%s - 拿取钥匙",
|
||||
|
||||
["VEHICLEKEYS_CHANGING_PLATE"] = "更换车牌",
|
||||
["VEHICLEKEYS_MENU_TITLE_PLATE"] = "车牌商店",
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE"] = "购买车牌",
|
||||
["VEHICLEKEYS_MENU_BUY_PLATE_DESCRIPTION"] = "购买车牌",
|
||||
["VEHICLEKEYS_MENU_BUY_CHANGEPLATE_DESCRIPTION"] = "购买螺丝刀",
|
||||
["VEHICLEKEYS_MENU_NO_CHANGER_ITEM"] = "无工具",
|
||||
["VEHICLEKEYS_PLATE_LOCKED"] = "车辆已锁定!",
|
||||
|
||||
["VEHICLEKEYS_MAIN_MENU_TITLE"] = "钥匙管理",
|
||||
["VEHICLEKEYS_NEARBY_PLAYERS_MENU_TITLE"] = "附近玩家",
|
||||
["VEHICLEKEYS_NO_PLAYERS_FOUND"] = "附近没有玩家",
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_HEADER"] = "选择的钥匙",
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_MODEL"] = "模型:",
|
||||
["VEHICLEKEYS_MENU_KEY_MENU_PLATE"] = "车牌:",
|
||||
["VEHICLEKEYS_MENU_USE_KEY_TITLE"] = "使用钥匙",
|
||||
["VEHICLEKEYS_MENU_USE_KEY_DESCRIPTION"] = "在最近的车辆上使用所选的钥匙。",
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_TITLE"] = "给予钥匙",
|
||||
["VEHICLEKEYS_MENU_GIVE_KEY_DESCRIPTION"] = "将钥匙给附近的玩家",
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_TITLE"] = "删除钥匙",
|
||||
["VEHICLEKEYS_MENU_TRASH_KEY_DESCRIPTION"] = "删除所选的钥匙",
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_TITLE"] = "清理车辆钥匙",
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_ERROR"] = "没有要删除的钥匙",
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_SUCCESS"] = "所有钥匙已成功删除",
|
||||
["VEHICLEKEYS_MENU_CLEAN_KEYS_DESCRIPTION"] = "删除所有不属于您的车辆的钥匙",
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_TITLE"] = "访问钥匙列表",
|
||||
["VEHICLEKEYS_MENU_ACCESS_ALL_KEYS_DESCRIPTION"] = "显示您携带的所有钥匙的列表",
|
||||
["VEHICLEKEYS_ALL_KEYS_MENU_TITLE"] = "所有钥匙列表",
|
||||
|
||||
["VEHICLEKEYS_LOCKPICK_WHITELIST"] = "此车辆的锁无法打开。",
|
||||
["VEHICLEKEYS_LOCKPICK_UNLOCKED"] = "此车辆未锁定。",
|
||||
["VEHICLEKEYS_LOCKPICK_INSIDE"] = "您不能从内部打开车辆。",
|
||||
|
||||
["ADMINCOMMAND_NO_VEHICLE"] = "您不在车辆中",
|
||||
["ADMINCOMMAND_GIVED_VEHICLE"] = "您已成功给予车辆钥匙",
|
||||
["ADMINCOMMAND_PLAYER"] = "玩家",
|
||||
["ADMINCOMMAND_HELP"] = "给予车辆钥匙",
|
||||
["ADMINCOMMAND_COMMAND"] = "adminkeys",
|
||||
["ADMINCOMMAND_RANGE"] = "管理员",
|
||||
["ADMINCOMMAND_NO_PLAYER"] = "无效的ID",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_VEHICLE_LABEL"] = "车辆",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEKEYS_LABEL"] = "钥匙",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLESEATBELT_LABEL"] = "安全带",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLECHAIRS_LABEL"] = "座位",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEWINDOWS_LABEL"] = "车窗",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEDOORS_LABEL"] = "车门",
|
||||
["VEHICLEKEYS_RADIAL_VEHICLEENGINE_LABEL"] = "引擎",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_REARLEFT_LABEL"] = "后左",
|
||||
["VEHICLEKEYS_RADIAL_REARRIGHT_LABEL"] = "后右",
|
||||
["VEHICLEKEYS_RADIAL_HOOD_LABEL"] = "引擎盖",
|
||||
["VEHICLEKEYS_RADIAL_TRUNK_LABEL"] = "行李箱",
|
||||
["VEHICLEKEYS_RADIAL_DRIVER_LABEL"] = "驾驶员",
|
||||
["VEHICLEKEYS_RADIAL_PASSENGER_LABEL"] = "乘客",
|
||||
|
||||
["VEHICLEKEYS_RADIAL_CHANGE_SEAT_PROGRESS"] = "座位变更进行中",
|
||||
|
||||
["VEHICLEKEYS_COMMAND_ENGINE"] = '解锁/锁定车辆',
|
||||
["VEHICLEKEYS_COMMAND_USEKEY"] = '引擎控制',
|
||||
|
||||
["VEHICLEKEYS_PLATE_SHOP_LABEL"] = '车牌店',
|
||||
["VEHICLEKEYS_PLATE_SHOP_NAME"] = '车牌店',
|
||||
|
||||
["VEHICLEKEYS_OPEN_PLATE"] = '打开店铺',
|
||||
["VEHICLEKEYS_OPEN_PLATE_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_COPY_KEYS"] = '复制钥匙',
|
||||
["VEHICLEKEYS_COPY_KEYS_TARGET_ICON"] = 'fas fa-copy',
|
||||
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET"] = '打开/关闭车辆',
|
||||
["VEHICLEKEYS_OPEN_CLOSE_TARGET_ICON"] = 'fas fa-key',
|
||||
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET"] = '撬锁车辆',
|
||||
["VEHICLEKEYS_LOCKPICK_TARGET_ICON"] = 'fas fa-user-lock',
|
||||
|
||||
["VEHICLEKEYS_PLATE_TARGET"] = '更改车牌',
|
||||
["VEHICLEKEYS_PLATE_TARGET_ICON"] = 'fas fa-screwdriver',
|
||||
|
||||
["VEHICLEKEYS_ANCHOR_PICKED_PROGRESS"] = '提升锚',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED_PROGRESS"] = '放下锚',
|
||||
["VEHICLEKEYS_ANCHOR_LOWERED"] = '锚已放下',
|
||||
["VEHICLEKEYS_ANCHOR_PICKED"] = '锚已提升',
|
||||
["VEHICLEKEYS_ANCHOR_CANCELLED"] = '锚已取消',
|
||||
["VEHICLEKEYS_ANCHOR_SLOW_DOWN"] = '减速使用锚',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_LEFT_WHEEL"] = '前左轮',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_LEFT_WHEEL"] = '后左轮',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FRONT_RIGHT_WHEEL"] = '前右轮',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_REAR_RIGHT_WHEEL"] = '后右轮',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_RIGHT_WHEEL"] = '中右轮',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MIDDLE_LEFT_WHEEL"] = '中左轮',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_PROGRESS"] = '扫描车辆中...',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SCAN_TITLE"] = '车辆状态',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_MODEL_TITLE"] = '模型:',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_TITLE"] = '车牌号码:',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_DESCRIPTION"] = '点击复制',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_PLATE_NOTIFICATION"] = '您已复制车牌号码!',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TEMPERATURE_TITLE"] = '发动机温度',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_OIL_TITLE"] = '机油等级',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_FUEL_TITLE"] = '燃油等级',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE_TITLE"] = '发动机健康状况',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BODY_TITLE"] = '车身健康状况',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TYRES_TITLE"] = '轮胎健康状况:',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_STOCK"] = '默认',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_LVL"] = '等级:',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_ENGINE"] = '发动机',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_BRAKES"] = '刹车',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_SUSPENSION"] = '悬挂',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TRANSMISSION"] = '传动',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO"] = '涡轮增压器',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_ON"] = '已安装',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TURBO_OFF"] = '未安装',
|
||||
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET"] = '诊断',
|
||||
["VEHICLEKEYS_DIAGNOSTIC_TARGET_ICON"] = 'fas fa-clipboard',
|
||||
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEASURE"] = '测量车窗颜色',
|
||||
["VEHICLEKEYS_MEASURING_TINT_PROGRESS"] = '测量中...',
|
||||
["VEHICLEKEYS_WINDOW_TINT_NONE"] = '无颜色',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIGHT"] = '浅色(工厂)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_MEDIUM"] = '中等(25%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DARK"] = '深色(50%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_LIMO"] = '豪华轿车(100%)',
|
||||
["VEHICLEKEYS_WINDOW_TINT_UNKNOWN"] = '未知',
|
||||
["VEHICLEKEYS_WINDOW_TINT_TITLE"] = '车窗颜色',
|
||||
["VEHICLEKEYS_WINDOW_TINT_DESCRIPTION"] = '颜色等级:',
|
||||
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STARTED"] = "引擎启动",
|
||||
["VEHICLEKEYS_NOTIFICATION_ENGINE_STOPPED"] = "引擎停止",
|
||||
["VEHICLEKEYS_NOTIFICATION_NO_PERMISSION"] = "您没有控制引擎的权限",
|
||||
|
||||
['VEHICLEKEYS_NOTIFICATION_TOO_FAR'] = '距离车辆太远',
|
||||
|
||||
['VEHICLEKEYS_NOTIFICATION_TOO_FAR'] = '离车辆太远',
|
||||
['VEHICLEKEYS_USING_GPS'] = '正在使用GPS',
|
||||
['VEHICLEKEYS_GPS_ALREADY_IN_USE'] = '该车辆已经在被跟踪',
|
||||
['VEHICLEKEYS_GPS_BLIP_NAME'] = 'GPS脉冲: %s',
|
||||
['VEHICLEKEYS_TRACKER_MENU_TITLE'] = '追踪菜单',
|
||||
['VEHICLEKEYS_TRACKER_NO_VEHICLES'] = '没有跟踪的车辆',
|
||||
['VEHICLEKEYS_TRACKER_MENU_DESC'] = '车牌: %s',
|
||||
|
||||
['VEHICLEKEYS_REMOVE_GPS_TARGET_ICON'] = 'fa-solid fa-magnifying-glass',
|
||||
['VEHICLEKEYS_REMOVE_GPS'] = '移除 GPS',
|
||||
|
||||
['VEHICLEKEYS_GPS_REMOVED'] = '已从车牌为 %s 的车辆移除 GPS',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_FAILED'] = '无法从车牌为 %s 的车辆移除 GPS',
|
||||
['VEHICLEKEYS_GPS_REMOVAL_PROGRESSBAR'] = '正在移除GPS',
|
||||
['VEHICLEKEYS_NOTIFICATION_GPS_REMOVAL_FAILED'] = '移除GPS失败',
|
||||
|
||||
}
|
||||
+191
@@ -0,0 +1,191 @@
|
||||
--[[
|
||||
Hi dear customer or developer, here you can fully configure your server's
|
||||
framework or you could even duplicate this file to create your own framework.
|
||||
If you do not have much experience, we recommend you download the base version
|
||||
of the framework that you use in its latest version and it will work perfectly.
|
||||
]]
|
||||
|
||||
if Config.Framework ~= 'esx' then
|
||||
return
|
||||
end
|
||||
|
||||
local version = GetResourceMetadata('es_extended', 'version', 0)
|
||||
|
||||
if version == '1.1.0' or version == '1.2.0' or version == 'legacy' then
|
||||
ESX = nil
|
||||
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
|
||||
else
|
||||
ESX = exports['es_extended']:getSharedObject()
|
||||
end
|
||||
|
||||
identifierTypes = 'owner'
|
||||
vehiclesTable = 'owned_vehicles'
|
||||
plateTable = 'plate'
|
||||
inventoryTrunk = 'inventory_trunk'
|
||||
inventoryGlovebox = 'inventory_glovebox'
|
||||
|
||||
function RegisterServerCallback(name, cb)
|
||||
ESX.RegisterServerCallback(name, cb)
|
||||
end
|
||||
|
||||
function GetPlayerFromIdFramework(player)
|
||||
local Player = ESX.GetPlayerFromId(player)
|
||||
return Player
|
||||
end
|
||||
|
||||
function GetPlayerIdentifier(player)
|
||||
return ESX.GetPlayerFromId(player).identifier
|
||||
end
|
||||
|
||||
function GetPlayerJob(player)
|
||||
return player.getJob().name
|
||||
end
|
||||
|
||||
function GetPlayerDuty(player)
|
||||
return true
|
||||
end
|
||||
|
||||
function GetPlayers()
|
||||
return ESX.GetPlayers()
|
||||
end
|
||||
|
||||
function GetMoney(player)
|
||||
return player.getMoney()
|
||||
end
|
||||
|
||||
function RemoveMoney(player, mount)
|
||||
return player.removeMoney(mount)
|
||||
end
|
||||
|
||||
function GetAccountMoney(player, account)
|
||||
return player.getAccount(account).money
|
||||
end
|
||||
|
||||
function RemoveAccountMoney(player, account, mount)
|
||||
return player.removeAccountMoney(account, mount)
|
||||
end
|
||||
|
||||
function RegisterUsableItem(name, cb)
|
||||
ESX.RegisterUsableItem(name, cb)
|
||||
end
|
||||
|
||||
function GetItem(player, item)
|
||||
return player.getInventoryItem(item)
|
||||
end
|
||||
|
||||
function GetItemCount(player, item)
|
||||
if Config.InventoryScript == 'codem' then
|
||||
return player.getInventoryItem(item).amount
|
||||
else
|
||||
return player.getInventoryItem(item).count
|
||||
end
|
||||
end
|
||||
|
||||
function AddItem(player, item, metadata)
|
||||
player.addInventoryItem(item, 1, metadata)
|
||||
end
|
||||
|
||||
function RemoveItem(player, item)
|
||||
player.removeInventoryItem(item, 1, metadata)
|
||||
end
|
||||
|
||||
function SetInventoryItem(player)
|
||||
return true
|
||||
end
|
||||
|
||||
function AddItemMetadata(player, item, slot, metadata)
|
||||
if not player then return end
|
||||
if Config.InventoryScript == 'qs' then
|
||||
exports['qs-inventory']:AddItem(player.source, item, 1, nil, metadata)
|
||||
elseif Config.InventoryScript == 'qb' then
|
||||
player.Functions.AddItem(item, 1, false, metadata)
|
||||
elseif Config.InventoryScript == 'ox' then
|
||||
if exports.ox_inventory:CanCarryItem(player.source, item, 1, metadata) then
|
||||
exports.ox_inventory:AddItem(player.source, item, 1, metadata)
|
||||
end
|
||||
elseif Config.InventoryScript == 'origen' then
|
||||
exports['origen_inventory']:AddItem(player.source, item, 1, metadata)
|
||||
elseif Config.InventoryScript == 'core_inventory' then
|
||||
local inv = 'content-' .. player.identifier:gsub(':', '')
|
||||
exports['core_inventory']:addItem(inv, item, 1, metadata)
|
||||
elseif Config.InventoryScript == 'codem' then
|
||||
exports['codem-inventory']:AddItem(player.source, item, 1, nil, metadata)
|
||||
elseif Config.InventoryScript == 'tgiannInv' then
|
||||
exports['tgiann-inventory']:AddItem(player.source, item, 1, nil, metadata, false)
|
||||
elseif Config.InventoryScript == 'ak47' then
|
||||
exports['ak47_inventory']:AddItem(player.source, item, 1, nil, metadata)
|
||||
else
|
||||
print('Inventory not properly configured')
|
||||
end
|
||||
end
|
||||
|
||||
function GetMetadata(player, item, slot, metadata)
|
||||
if not player then return end
|
||||
if Config.InventoryScript == 'qs' then
|
||||
return exports['qs-inventory']:GetInventory(player.source)
|
||||
elseif Config.InventoryScript == 'qb' then
|
||||
return player.PlayerData.items
|
||||
elseif Config.InventoryScript == 'origen' then
|
||||
return exports['origen_inventory']:GetInventoryItems(player.source)
|
||||
elseif Config.InventoryScript == 'ox' then
|
||||
return ox_inventory:GetInventoryItems(player.source)
|
||||
elseif Config.InventoryScript == 'core_inventory' then
|
||||
local inv = 'content-' .. player.identifier:gsub(':', '')
|
||||
return exports['core_inventory']:getInventory(inv)
|
||||
elseif Config.InventoryScript == 'codem' then
|
||||
return exports['codem-inventory']:GetInventory(false, player.source)
|
||||
elseif Config.InventoryScript == 'tgiannInv' then
|
||||
return exports['tgiann-inventory']:GetPlayerItems(player.source)
|
||||
elseif Config.InventoryScript == 'ak47' then
|
||||
return exports['ak47_inventory']:GetInventory(player.source)
|
||||
else
|
||||
print('Inventory not properly configured')
|
||||
end
|
||||
end
|
||||
|
||||
function RemoveItemMetadata(player, item, slot, metadata)
|
||||
if not player then return end
|
||||
if Config.InventoryScript == 'qs' then
|
||||
exports['qs-inventory']:RemoveItem(player.source, item, 1, slot, metadata)
|
||||
elseif Config.InventoryScript == 'qb' then
|
||||
player.Functions.RemoveItem(item, 1, false)
|
||||
elseif Config.InventoryScript == 'ox' then
|
||||
ox_inventory:RemoveItem(player.source, item, 1, metadata, slot)
|
||||
elseif Config.InventoryScript == 'origen' then
|
||||
exports['origen_inventory']:RemoveItem(player.source, item, 1, metadata, slot)
|
||||
elseif Config.InventoryScript == 'core_inventory' then
|
||||
coreInventoryRemoveItemWithMetadata(player, item, metadata)
|
||||
elseif Config.InventoryScript == 'codem' then
|
||||
exports['codem-inventory']:RemoveItem(player.source, item, 1, slot)
|
||||
elseif Config.InventoryScript == 'tgiannInv' then
|
||||
exports['tgiann-inventory']:RemoveItem(player.source, item, 1, nil)
|
||||
elseif Config.InventoryScript == 'ak47' then
|
||||
exports['ak47_inventory']:RemoveItem(player.source, item, 1, slot, metadata)
|
||||
else
|
||||
print('Inventory not properly configured')
|
||||
end
|
||||
end
|
||||
|
||||
function coreInventoryRemoveItemWithMetadata(player, item, metadata)
|
||||
local inv = 'content-' .. player.identifier:gsub(':', '')
|
||||
if metadata and type(metadata) == 'table' and metadata.id then
|
||||
exports['core_inventory']:removeItemExact(inv, metadata.id, 1)
|
||||
elseif metadata and type(metadata) ~= 'table' then
|
||||
local inventoryData = exports['core_inventory']:getInventory(inv)
|
||||
for k, v in pairs(inventoryData) do
|
||||
if v.name == item and v.metadata and v.metadata.plate then
|
||||
if string.find(v.metadata.plate, metadata) then
|
||||
exports['core_inventory']:removeItemExact(inv, v.id, 1)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
RegisterServerEvent('CheckPlayerItem')
|
||||
AddEventHandler('CheckPlayerItem', function(item)
|
||||
local source = source
|
||||
local hasItem = CheckIfPlayerHasItem(source, item)
|
||||
TriggerClientEvent('CheckPlayerItemResult', source, hasItem)
|
||||
end)
|
||||
+184
@@ -0,0 +1,184 @@
|
||||
--[[
|
||||
Hi dear customer or developer, here you can fully configure your server's
|
||||
framework or you could even duplicate this file to create your own framework.
|
||||
If you do not have much experience, we recommend you download the base version
|
||||
of the framework that you use in its latest version and it will work perfectly.
|
||||
]]
|
||||
|
||||
if Config.Framework ~= 'qb' then
|
||||
return
|
||||
end
|
||||
|
||||
QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
identifierTypes = 'citizenid'
|
||||
vehiclesTable = 'player_vehicles'
|
||||
plateTable = 'plate'
|
||||
inventoryTrunk = 'inventory_trunk'
|
||||
inventoryGlovebox = 'inventory_glovebox'
|
||||
|
||||
function RegisterServerCallback(name, cb)
|
||||
QBCore.Functions.CreateCallback(name, cb)
|
||||
end
|
||||
|
||||
function GetPlayerIdentifier(player)
|
||||
return QBCore.Functions.GetPlayer(player).PlayerData.citizenid
|
||||
end
|
||||
|
||||
function GetPlayerFromIdFramework(player)
|
||||
local Player = QBCore.Functions.GetPlayer(player)
|
||||
if Player then
|
||||
Player.citizenid = Player.PlayerData.citizenid
|
||||
Player.identifier = Player.PlayerData.citizenid
|
||||
Player.source = Player.PlayerData.source
|
||||
end
|
||||
return Player
|
||||
end
|
||||
|
||||
function GetPlayers()
|
||||
return QBCore.Functions.GetPlayers()
|
||||
end
|
||||
|
||||
function GetPlayerJob(player)
|
||||
local data = player.PlayerData.job
|
||||
return data.name
|
||||
end
|
||||
|
||||
function GetPlayerDuty(player)
|
||||
local data = player.PlayerData.job
|
||||
return data.onduty
|
||||
end
|
||||
|
||||
function GetMoney(player)
|
||||
return player.PlayerData.money['cash']
|
||||
end
|
||||
|
||||
function GetAccountMoney(player, account)
|
||||
return player.PlayerData.money[account]
|
||||
end
|
||||
|
||||
function RemoveAccountMoney(player, account, mount)
|
||||
return player.Functions.RemoveMoney(account, mount)
|
||||
end
|
||||
|
||||
function RemoveMoney(player, mount)
|
||||
return player.Functions.RemoveMoney('cash', mount)
|
||||
end
|
||||
|
||||
function RegisterUsableItem(name, cb)
|
||||
QBCore.Functions.CreateUseableItem(name, cb)
|
||||
end
|
||||
|
||||
function GetItem(player, item)
|
||||
return player.Functions.GetItemByName(item)
|
||||
end
|
||||
|
||||
function GetItemCount(player, item)
|
||||
if Config.InventoryScript == 'codem' then
|
||||
return player.getInventoryItem(item).amount
|
||||
else
|
||||
return player.Functions.GetItemByName(item).amount
|
||||
end
|
||||
end
|
||||
|
||||
function AddItem(player, item, metadata)
|
||||
player.Functions.AddItem(item, 1, false, metadata)
|
||||
end
|
||||
|
||||
function RemoveItem(player, item, metadata)
|
||||
player.Functions.RemoveItem(item, 1, false, metadata or nil)
|
||||
end
|
||||
|
||||
function SetInventoryItem(player)
|
||||
player.Functions.SetInventory(player.PlayerData.items, true)
|
||||
end
|
||||
|
||||
function AddItemMetadata(player, item, slot, metadata)
|
||||
if not player then return end
|
||||
if Config.InventoryScript == 'qs' then
|
||||
exports['qs-inventory']:AddItem(player.source, item, 1, nil, metadata)
|
||||
elseif Config.InventoryScript == 'qb' then
|
||||
player.Functions.AddItem(item, 1, false, metadata)
|
||||
elseif Config.InventoryScript == 'ox' then
|
||||
if exports.ox_inventory:CanCarryItem(player.source, item, 1, metadata) then
|
||||
exports.ox_inventory:AddItem(player.source, item, 1, metadata)
|
||||
end
|
||||
elseif Config.InventoryScript == 'origen' then
|
||||
exports['origen_inventory']:AddItem(player.source, item, 1, metadata)
|
||||
elseif Config.InventoryScript == 'core_inventory' then
|
||||
local inv = 'content-' .. player.identifier:gsub(':', '')
|
||||
exports['core_inventory']:addItem(inv, item, 1, metadata)
|
||||
elseif Config.InventoryScript == 'codem' then
|
||||
exports['codem-inventory']:AddItem(player.source, item, 1, nil, metadata)
|
||||
elseif Config.InventoryScript == 'tgiannInv' then
|
||||
exports['tgiann-inventory']:AddItem(player.source, item, 1, nil, metadata, false)
|
||||
elseif Config.InventoryScript == 'ak47' then
|
||||
exports['ak47_inventory']:AddItem(player.source, item, 1, nil, metadata)
|
||||
else
|
||||
print('Inventory not properly configured')
|
||||
end
|
||||
end
|
||||
|
||||
function GetMetadata(player, item, slot, metadata)
|
||||
if not player then return end
|
||||
if Config.InventoryScript == 'qs' then
|
||||
return exports['qs-inventory']:GetInventory(player.source)
|
||||
elseif Config.InventoryScript == 'qb' then
|
||||
return player.PlayerData.items
|
||||
elseif Config.InventoryScript == 'origen' then
|
||||
return exports['origen_inventory']:GetInventoryItems(player.source)
|
||||
elseif Config.InventoryScript == 'ox' then
|
||||
return ox_inventory:GetInventoryItems(player.source)
|
||||
elseif Config.InventoryScript == 'core_inventory' then
|
||||
local inv = 'content-' .. player.identifier:gsub(':', '')
|
||||
return exports['core_inventory']:getInventory(inv)
|
||||
elseif Config.InventoryScript == 'codem' then
|
||||
return exports['codem-inventory']:GetInventory(false, player.source)
|
||||
elseif Config.InventoryScript == 'tgiannInv' then
|
||||
return exports['tgiann-inventory']:GetPlayerItems(player.source)
|
||||
elseif Config.InventoryScript == 'ak47' then
|
||||
return exports['ak47_inventory']:GetInventory(player.source)
|
||||
else
|
||||
print('Inventory not properly configured')
|
||||
end
|
||||
end
|
||||
|
||||
function RemoveItemMetadata(player, item, slot, metadata)
|
||||
if not player then return end
|
||||
if Config.InventoryScript == 'qs' then
|
||||
exports['qs-inventory']:RemoveItem(player.source, item, 1, slot, metadata)
|
||||
elseif Config.InventoryScript == 'qb' then
|
||||
player.Functions.RemoveItem(item, 1, false)
|
||||
elseif Config.InventoryScript == 'ox' then
|
||||
ox_inventory:RemoveItem(player.source, item, 1, metadata, slot)
|
||||
elseif Config.InventoryScript == 'origen' then
|
||||
exports['origen_inventory']:RemoveItem(player.source, item, 1, metadata, slot)
|
||||
elseif Config.InventoryScript == 'core_inventory' then
|
||||
coreInventoryRemoveItemWithMetadata(player, item, metadata)
|
||||
elseif Config.InventoryScript == 'codem' then
|
||||
exports['codem-inventory']:RemoveItem(player.source, item, 1, slot)
|
||||
elseif Config.InventoryScript == 'tgiannInv' then
|
||||
exports['tgiann-inventory']:RemoveItem(player.source, item, 1, nil)
|
||||
elseif Config.InventoryScript == 'ak47' then
|
||||
exports['ak47_inventory']:RemoveItem(player.source, item, 1, slot, metadata)
|
||||
else
|
||||
print('Inventory not properly configured')
|
||||
end
|
||||
end
|
||||
|
||||
function coreInventoryRemoveItemWithMetadata(player, item, metadata)
|
||||
local inv = 'content-' .. player.identifier:gsub(':', '')
|
||||
if metadata and type(metadata) == 'table' and metadata.id then
|
||||
exports['core_inventory']:removeItemExact(inv, metadata.id, 1)
|
||||
elseif metadata and type(metadata) ~= 'table' then
|
||||
local inventoryData = exports['core_inventory']:getInventory(inv)
|
||||
for k, v in pairs(inventoryData) do
|
||||
if v.name == item and v.metadata and v.metadata.plate then
|
||||
if string.find(v.metadata.plate, metadata) then
|
||||
exports['core_inventory']:removeItemExact(inv, v.id, 1)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
+188
@@ -0,0 +1,188 @@
|
||||
--[[
|
||||
Hi dear customer or developer, here you can fully configure your server's
|
||||
framework or you could even duplicate this file to create your own framework.
|
||||
If you do not have much experience, we recommend you download the base version
|
||||
of the framework that you use in its latest version and it will work perfectly.
|
||||
]]
|
||||
|
||||
if Config.Framework ~= 'qbx' then
|
||||
return
|
||||
end
|
||||
|
||||
QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
identifierTypes = 'citizenid'
|
||||
vehiclesTable = 'player_vehicles'
|
||||
plateTable = 'plate'
|
||||
inventoryTrunk = 'inventory_trunk'
|
||||
inventoryGlovebox = 'inventory_glovebox'
|
||||
|
||||
function RegisterServerCallback(name, cb)
|
||||
QBCore.Functions.CreateCallback(name, cb)
|
||||
end
|
||||
|
||||
function GetPlayerIdentifier(player)
|
||||
return QBCore.Functions.GetPlayer(player).PlayerData.citizenid
|
||||
end
|
||||
|
||||
function GetPlayerFromIdentifier(identifier)
|
||||
return exports.qbx_core:GetPlayerByCitizenId(identifier)
|
||||
end
|
||||
|
||||
function GetPlayerFromIdFramework(player)
|
||||
local Player = QBCore.Functions.GetPlayer(player)
|
||||
if Player then
|
||||
Player.citizenid = Player.PlayerData.citizenid
|
||||
Player.identifier = Player.PlayerData.citizenid
|
||||
Player.source = Player.PlayerData.source
|
||||
end
|
||||
return Player
|
||||
end
|
||||
|
||||
function GetPlayers()
|
||||
return QBCore.Functions.GetPlayers()
|
||||
end
|
||||
|
||||
function GetPlayerJob(player)
|
||||
local data = player.PlayerData.job
|
||||
return data.name
|
||||
end
|
||||
|
||||
function GetPlayerDuty(player)
|
||||
local data = player.PlayerData.job
|
||||
return data.onduty
|
||||
end
|
||||
|
||||
function GetMoney(player)
|
||||
return player.PlayerData.money['cash']
|
||||
end
|
||||
|
||||
function GetAccountMoney(player, account)
|
||||
return player.PlayerData.money[account]
|
||||
end
|
||||
|
||||
function RemoveAccountMoney(player, account, mount)
|
||||
return player.Functions.RemoveMoney(account, mount)
|
||||
end
|
||||
|
||||
function RemoveMoney(player, mount)
|
||||
return player.Functions.RemoveMoney('cash', mount)
|
||||
end
|
||||
|
||||
function RegisterUsableItem(name, cb)
|
||||
QBCore.Functions.CreateUseableItem(name, cb)
|
||||
end
|
||||
|
||||
function GetItem(player, item)
|
||||
return player.Functions.GetItemByName(item)
|
||||
end
|
||||
|
||||
function GetItemCount(player, item)
|
||||
if Config.InventoryScript == 'codem' then
|
||||
return player.getInventoryItem(item).amount
|
||||
else
|
||||
return player.Functions.GetItemByName(item).amount
|
||||
end
|
||||
end
|
||||
|
||||
function AddItem(player, item, metadata)
|
||||
player.Functions.AddItem(item, 1, false, metadata)
|
||||
end
|
||||
|
||||
function RemoveItem(player, item, metadata)
|
||||
player.Functions.RemoveItem(item, 1, false, metadata or nil)
|
||||
end
|
||||
|
||||
function SetInventoryItem(player)
|
||||
player.Functions.SetInventory(player.PlayerData.items, true)
|
||||
end
|
||||
|
||||
function AddItemMetadata(player, item, slot, metadata)
|
||||
if not player then return end
|
||||
if Config.InventoryScript == 'qs' then
|
||||
exports['qs-inventory']:AddItem(player.source, item, 1, nil, metadata)
|
||||
elseif Config.InventoryScript == 'qb' then
|
||||
player.Functions.AddItem(item, 1, false, metadata)
|
||||
elseif Config.InventoryScript == 'ox' then
|
||||
if exports.ox_inventory:CanCarryItem(player.source, item, 1, metadata) then
|
||||
exports.ox_inventory:AddItem(player.source, item, 1, metadata)
|
||||
end
|
||||
elseif Config.InventoryScript == 'origen' then
|
||||
exports['origen_inventory']:AddItem(player.source, item, 1, metadata)
|
||||
elseif Config.InventoryScript == 'core_inventory' then
|
||||
local inv = 'content-' .. player.identifier:gsub(':', '')
|
||||
exports['core_inventory']:addItem(inv, item, 1, metadata)
|
||||
elseif Config.InventoryScript == 'codem' then
|
||||
exports['codem-inventory']:AddItem(player.source, item, 1, nil, metadata)
|
||||
elseif Config.InventoryScript == 'tgiannInv' then
|
||||
exports['tgiann-inventory']:AddItem(player.source, item, 1, nil, metadata, false)
|
||||
elseif Config.InventoryScript == 'ak47' then
|
||||
exports['ak47_inventory']:AddItem(player.source, item, 1, nil, metadata)
|
||||
else
|
||||
print('Inventory not properly configured')
|
||||
end
|
||||
end
|
||||
|
||||
function GetMetadata(player, item, slot, metadata)
|
||||
if not player then return end
|
||||
if Config.InventoryScript == 'qs' then
|
||||
return exports['qs-inventory']:GetInventory(player.source)
|
||||
elseif Config.InventoryScript == 'qb' then
|
||||
return player.PlayerData.items
|
||||
elseif Config.InventoryScript == 'origen' then
|
||||
return exports['origen_inventory']:GetInventoryItems(player.source)
|
||||
elseif Config.InventoryScript == 'ox' then
|
||||
return ox_inventory:GetInventoryItems(player.source)
|
||||
elseif Config.InventoryScript == 'core_inventory' then
|
||||
local inv = 'content-' .. player.identifier:gsub(':', '')
|
||||
return exports['core_inventory']:getInventory(inv)
|
||||
elseif Config.InventoryScript == 'codem' then
|
||||
return exports['codem-inventory']:GetInventory(false, player.source)
|
||||
elseif Config.InventoryScript == 'tgiannInv' then
|
||||
return exports['tgiann-inventory']:GetPlayerItems(player.source)
|
||||
elseif Config.InventoryScript == 'ak47' then
|
||||
return exports['ak47_inventory']:GetInventory(player.source)
|
||||
else
|
||||
print('Inventory not properly configured')
|
||||
end
|
||||
end
|
||||
|
||||
function RemoveItemMetadata(player, item, slot, metadata)
|
||||
if not player then return end
|
||||
if Config.InventoryScript == 'qs' then
|
||||
exports['qs-inventory']:RemoveItem(player.source, item, 1, slot, metadata)
|
||||
elseif Config.InventoryScript == 'qb' then
|
||||
player.Functions.RemoveItem(item, 1, false)
|
||||
elseif Config.InventoryScript == 'ox' then
|
||||
ox_inventory:RemoveItem(player.source, item, 1, metadata, slot)
|
||||
elseif Config.InventoryScript == 'origen' then
|
||||
exports['origen_inventory']:RemoveItem(player.source, item, 1, metadata, slot)
|
||||
elseif Config.InventoryScript == 'core_inventory' then
|
||||
coreInventoryRemoveItemWithMetadata(player, item, metadata)
|
||||
elseif Config.InventoryScript == 'codem' then
|
||||
exports['codem-inventory']:RemoveItem(player.source, item, 1, slot)
|
||||
elseif Config.InventoryScript == 'tgiannInv' then
|
||||
exports['tgiann-inventory']:RemoveItem(player.source, item, 1, nil)
|
||||
elseif Config.InventoryScript == 'ak47' then
|
||||
exports['ak47_inventory']:RemoveItem(player.source, item, 1, slot, metadata)
|
||||
else
|
||||
print('Inventory not properly configured')
|
||||
end
|
||||
end
|
||||
|
||||
function coreInventoryRemoveItemWithMetadata(player, item, metadata)
|
||||
local inv = 'content-' .. player.identifier:gsub(':', '')
|
||||
if metadata and type(metadata) == 'table' and metadata.id then
|
||||
exports['core_inventory']:removeItemExact(inv, metadata.id, 1)
|
||||
elseif metadata and type(metadata) ~= 'table' then
|
||||
local inventoryData = exports['core_inventory']:getInventory(inv)
|
||||
for k, v in pairs(inventoryData) do
|
||||
if v.name == item and v.metadata and v.metadata.plate then
|
||||
if string.find(v.metadata.plate, metadata) then
|
||||
exports['core_inventory']:removeItemExact(inv, v.id, 1)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,69 @@
|
||||
if Config.Framework == 'esx' then
|
||||
ESX.RegisterCommand(Lang("ADMINCOMMAND_COMMAND"), Lang("ADMINCOMMAND_RANGE"), function(xPlayer, args, showError)
|
||||
if args.playerId then
|
||||
local target = args.playerId == "me" and xPlayer.source or args.playerId
|
||||
local PedVehicle = GetVehiclePedIsIn(GetPlayerPed(xPlayer.source), false)
|
||||
|
||||
if DoesEntityExist(PedVehicle) then
|
||||
local plate = GetVehicleNumberPlateText(PedVehicle)
|
||||
local model = GetEntityModel(PedVehicle)
|
||||
TriggerClientEvent(Config.Eventprefix..":client:sendMessage", xPlayer.source, Lang("ADMINCOMMAND_GIVED_VEHICLE"), "success")
|
||||
target.triggerEvent(Config.Eventprefix..":admin:giveKeys", plate, model, true)
|
||||
else
|
||||
TriggerClientEvent(Config.Eventprefix..":client:sendMessage", src, Lang("ADMINCOMMAND_NO_VEHICLE"), "error")
|
||||
end
|
||||
else
|
||||
TriggerClientEvent(Config.Eventprefix..":client:sendMessage", xPlayer.source, Lang("ADMINCOMMAND_NO_PLAYER"), "success")
|
||||
end
|
||||
end, false, {help = Lang("ADMINCOMMAND_HELP"), validate = true, arguments = {
|
||||
{name = 'playerId', validate = true, help = Lang("ADMINCOMMAND_PLAYER"), type = 'player'}
|
||||
}})
|
||||
|
||||
elseif Config.Framework == 'qb' then
|
||||
QBCore.Commands.Add(Lang("ADMINCOMMAND_COMMAND"), Lang("ADMINCOMMAND_HELP"), { { name = Lang("ADMINCOMMAND_PLAYER"), help = Lang("ADMINCOMMAND_PLAYER") } }, true, function(source, args)
|
||||
local target = args[1] == "me" and source or tonumber(args[1])
|
||||
if target ~= 0 then
|
||||
local PedVehicle = GetVehiclePedIsIn(GetPlayerPed(source), false)
|
||||
|
||||
if DoesEntityExist(PedVehicle) then
|
||||
local plate = GetVehicleNumberPlateText(PedVehicle)
|
||||
local model = GetEntityModel(PedVehicle)
|
||||
|
||||
TriggerClientEvent(Config.Eventprefix..":client:sendMessage", source, Lang("ADMINCOMMAND_GIVED_VEHICLE"), "success")
|
||||
TriggerClientEvent(Config.Eventprefix..":admin:giveKeys", target, plate, model, true)
|
||||
else
|
||||
TriggerClientEvent(Config.Eventprefix..":client:sendMessage", source, Lang("ADMINCOMMAND_NO_VEHICLE"), "error")
|
||||
end
|
||||
else
|
||||
TriggerClientEvent(Config.Eventprefix..":client:sendMessage", source, Lang("ADMINCOMMAND_NO_PLAYER"), "success")
|
||||
end
|
||||
end, Lang("ADMINCOMMAND_RANGE"))
|
||||
elseif Config.Framework == 'qbx' then
|
||||
lib.addCommand(Lang("ADMINCOMMAND_COMMAND"), {
|
||||
help = Lang("ADMINCOMMAND_HELP"),
|
||||
params = {
|
||||
{ name = Lang("ADMINCOMMAND_PLAYER"), help = Lang("ADMINCOMMAND_PLAYER"), optional = true },
|
||||
},
|
||||
restricted = 'group.admin'
|
||||
}, function(source, args)
|
||||
local target = args[1] == "me" and source or tonumber(args[1])
|
||||
if target == nil then
|
||||
target = source
|
||||
end
|
||||
if target ~= 0 then
|
||||
local PedVehicle = GetVehiclePedIsIn(GetPlayerPed(source), false)
|
||||
|
||||
if DoesEntityExist(PedVehicle) then
|
||||
local plate = GetVehicleNumberPlateText(PedVehicle)
|
||||
local model = GetEntityModel(PedVehicle)
|
||||
|
||||
TriggerClientEvent(Config.Eventprefix..":client:sendMessage", source, Lang("ADMINCOMMAND_GIVED_VEHICLE"), "success")
|
||||
TriggerClientEvent(Config.Eventprefix..":admin:giveKeys", target, plate, model, true)
|
||||
else
|
||||
TriggerClientEvent(Config.Eventprefix..":client:sendMessage", source, Lang("ADMINCOMMAND_NO_VEHICLE"), "error")
|
||||
end
|
||||
else
|
||||
TriggerClientEvent(Config.Eventprefix..":client:sendMessage", source, Lang("ADMINCOMMAND_NO_PLAYER"), "success")
|
||||
end
|
||||
end)
|
||||
end
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
RegisterNetEvent(Config.Eventprefix..':server:phoneDispatch', function(coords, street2)
|
||||
local alertData = {
|
||||
title = Lang("VEHICLEKEYS_NOTIFICATION_TITLE"),
|
||||
coords = {x = coords.x, y = coords.y, z = coords.z},
|
||||
description = Lang("VEHICLEKEYS_NOTIFICATION_POLICE_DISPATCH").." "..street2
|
||||
}
|
||||
TriggerClientEvent("qs-smartphone:client:addPoliceAlert", -1, alertData)
|
||||
end)
|
||||
|
||||
RegisterNetEvent(Config.Eventprefix..':server:Dispatch', function()
|
||||
local PlayerID = source
|
||||
|
||||
exports['qs-dispatch']:GetPlayerInfo(PlayerID, function(playerData)
|
||||
if (not playerData) then
|
||||
ErrorPrint("Error getting player data")
|
||||
return
|
||||
end
|
||||
|
||||
TriggerEvent('qs-dispatch:server:CreateDispatchCall', {
|
||||
job = { Config.JobPolice },
|
||||
callLocation = playerData.coords,
|
||||
callCode = { code = "10-42", snippet = "Vehicle Theft" },
|
||||
message = 'A ' .. playerData.sex .. ' has solten a vehicle near ' .. playerData.street_1 .. '.',
|
||||
flashes = false,
|
||||
image = nil,
|
||||
blip = {
|
||||
sprite = 490,
|
||||
scale = 1.5,
|
||||
colour = 1,
|
||||
flashes = false,
|
||||
text = "Vehicle Theft",
|
||||
time = (3 * 60 * 1000),
|
||||
},
|
||||
otherData = {
|
||||
{
|
||||
text = 'Vehicle Theft',
|
||||
icon = 'fas fa-car-side',
|
||||
}
|
||||
}
|
||||
})
|
||||
end)
|
||||
end)
|
||||
|
||||
RegisterNetEvent(Config.Eventprefix..':server:DispatchOrigen', function(coords)
|
||||
exports['origen_police']:SendAlert({
|
||||
coords = coords,
|
||||
title = 'Vehicle Theft',
|
||||
type = 'GENERAL',
|
||||
message = 'Vehicle Theft',
|
||||
job = Config.JobPolice,
|
||||
})
|
||||
end)
|
||||
@@ -0,0 +1,11 @@
|
||||
exports('GiveKeysServer', function(player, plate, model)
|
||||
GiveKeysServer(player, plate, model)
|
||||
end)
|
||||
|
||||
exports('RemoveKeysServer', function(player, plate, model)
|
||||
RemoveKeysServer(player, plate, model)
|
||||
end)
|
||||
|
||||
exports('GetKeyServer', function(player, plate)
|
||||
return GetKeyServer(player, plate)
|
||||
end)
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
if Config.InventoryScript == 'ox' then
|
||||
return
|
||||
end
|
||||
|
||||
RegisterUsableItem(Config.LockpickItem, function(source)
|
||||
local src = source
|
||||
TriggerClientEvent(Config.Eventprefix..":client:useLockpick", src, false)
|
||||
end)
|
||||
|
||||
RegisterUsableItem(Config.AdvancedLockpickItem, function(source)
|
||||
local src = source
|
||||
TriggerClientEvent(Config.Eventprefix..":client:useLockpick", src, true)
|
||||
end)
|
||||
|
||||
RegisterUsableItem(Config.VehicleKeysItem, function(source, item, itemData)
|
||||
local plate = item.info.plate
|
||||
local model = item.info.description
|
||||
TriggerClientEvent(Config.Eventprefix .. ':client:UseKey', source, plate, model)
|
||||
end)
|
||||
|
||||
RegisterUsableItem(Config.PlateItem, function(source, item)
|
||||
local plate = item.info.plate
|
||||
TriggerClientEvent(Config.Eventprefix..':client:UsePlate', source, plate)
|
||||
end)
|
||||
|
||||
RegisterUsableItem(Config.GPSItem, function(source)
|
||||
TriggerClientEvent(Config.Eventprefix..':client:UseGPS', source)
|
||||
end)
|
||||
|
||||
RegisterUsableItem(Config.TrackerItem, function(source)
|
||||
TriggerClientEvent(Config.Eventprefix..':client:UseTracker', source)
|
||||
end)
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user