1
0
Fork 0
forked from Simnation/Main
This commit is contained in:
Nordi98 2025-08-06 15:36:50 +02:00
parent 6d22d5f77c
commit 63fbc60a00
86 changed files with 8352 additions and 3428 deletions

Binary file not shown.

View file

@ -0,0 +1,17 @@
# JG Scripts Advanced Garages v3
Hey there! Thanks so much for purchasing, it really means a lot to me. I've spent a lot of time on this script, and I hope you love it. This document has a bunch of the essential information that should help you out:
## Useful Links
🔧 Configure Advanced Garages in just minutes: https://configurator.jgscripts.com/advanced-garages
📚 Documentation: https://docs.jgscripts.com/advanced-garages/introduction
🔗 Official Website: https://jgscripts.com
🛒 Store: https://store.jgscripts.com
## Support
Join Discord https://discord.jgscripts.com, and we will do whatever it takes to help you out and get you up and running!

View file

@ -0,0 +1,90 @@
-- A modified version of "VehicleDeformation" v1.0.1, by Kiminaze. Full credits go to him, so adibe by the license below.
-- Check out his other work: https://kiminazes-script-gems.tebex.io/
--
-- VehicleDeformation License:
--
-- Copyright (c) 2021 Philipp Decker /// FiveM: Kiminaze / Discord: Kiminaze#9097
-- By acquiring a copy of this code snippet for the "FiveM" modification for "Grand Theft
-- Auto V" you are granted permission to use and modify all of its parts.
-- You are allowed to (re-)distribute and sell resources that have been created with the
-- help of this code snippet. You have to include this license when doing so.
-- This code snippet is provided "as is" and the copyright holder of this code snippet can
-- not be held accountable for any damages occuring during the usage or modification of
-- this code snippet.
local MAX_DEFORM_ITERATIONS = 50 -- iterations for damage application
local DEFORMATION_DAMAGE_THRESHOLD = 0.05 -- the minimum damage value at a deformation point
function getVehicleDeformation(vehicle)
assert(vehicle ~= nil and DoesEntityExist(vehicle), "Parameter \"vehicle\" must be a valid vehicle entity!")
-- check vehicle size and pre-calc values for offsets
local min, max = GetModelDimensions(GetEntityModel(vehicle))
local X = (max.x - min.x) * 0.5
local Y = (max.y - min.y) * 0.5
local Z = (max.z - min.z) * 0.5
local halfY = Y * 0.5
-- offsets for deformation check
local positions = {vector3(-X, Y, 0.0), vector3(-X, Y, Z), vector3(0.0, Y, 0.0), vector3(0.0, Y, Z), vector3(X, Y, 0.0), vector3(X, Y, Z), vector3(-X, halfY, 0.0), vector3(-X, halfY, Z), vector3(0.0, halfY, 0.0), vector3(0.0, halfY, Z), vector3(X, halfY, 0.0), vector3(X, halfY, Z),
vector3(-X, 0.0, 0.0), vector3(-X, 0.0, Z), vector3(0.0, 0.0, 0.0), vector3(0.0, 0.0, Z), vector3(X, 0.0, 0.0), vector3(X, 0.0, Z), vector3(-X, -halfY, 0.0), vector3(-X, -halfY, Z), vector3(0.0, -halfY, 0.0), vector3(0.0, -halfY, Z), vector3(X, -halfY, 0.0),
vector3(X, -halfY, Z), vector3(-X, -Y, 0.0), vector3(-X, -Y, Z), vector3(0.0, -Y, 0.0), vector3(0.0, -Y, Z), vector3(X, -Y, 0.0), vector3(X, -Y, Z)}
-- get deformation from vehicle
local deformationPoints = {}
for i, pos in ipairs(positions) do
-- translate damage from vector3 to a float
local dmg = #(GetVehicleDeformationAtPos(vehicle, pos.x, pos.y, pos.z))
if (dmg > DEFORMATION_DAMAGE_THRESHOLD) then
table.insert(deformationPoints, {pos, dmg})
end
end
return {
deformation = deformationPoints,
dirt = GetVehicleDirtLevel(vehicle)
}
end
function setVehicleDeformation(vehicle, deformation)
assert(vehicle ~= nil and DoesEntityExist(vehicle), "Parameter \"vehicle\" must be a valid vehicle entity!")
assert(deformation ~= nil and type(deformation) == "table", "Parameter \"deformation\" must be a table!")
local deformationPoints = deformation.deformation
local dirt = deformation.dirt
CreateThread(function()
local handlingMult, damageMult = GetVehicleHandlingFloat(vehicle, "CHandlingData", "fDeformationDamageMult"), 20.0
if handlingMult <= 0.55 then damageMult = 1000.0
elseif handlingMult <= 0.65 then damageMult = 400.0
elseif handlingMult <= 0.75 then damageMult = 200.0 end
for _, def in ipairs(deformationPoints) do
def[1] = vector3(def[1].x, def[1].y, def[1].z)
end
-- iterate over all deformation points and check if more than one application is necessary
-- looping is necessary for most vehicles that have a really bad damage model or take a lot of damage (e.g. neon, phantom3)
local deform = true
local iteration = 0
while deform and iteration < MAX_DEFORM_ITERATIONS do
if not DoesEntityExist(vehicle) then return end
deform = false
for _, def in ipairs(deformationPoints) do
if #(GetVehicleDeformationAtPos(vehicle, def[1].x, def[1].y, def[1].z)) < def[2] then
local offset = def[1] * 2.0
SetVehicleDamage(vehicle, offset.x, offset.y, offset.z, def[2] * damageMult, 1000.0, true)
deform = true
end
end
iteration = iteration + 1
Wait(100)
end
SetVehicleDirtLevel(vehicle, dirt)
end)
end

View file

@ -0,0 +1,186 @@
local GARAGE_ZONE_Z_DIST = 4.0
local inVehicle, blips, zones, peds = nil, {}, {}, {}
local cachedGarageLocations
function getAvailableGarageLocations()
if not cachedGarageLocations then
cachedGarageLocations = lib.callback.await("jg-advancedgarages:server:get-available-garage-locations", false)
end
return cachedGarageLocations or {}
end
---@param coords vector3
---@param marker table
function drawMarkerOnFrame(coords, marker)
---@diagnostic disable-next-line: missing-parameter
DrawMarker(marker.id, coords.x, coords.y, coords.z, 0, 0, 0, 0, 0, 0, marker.size.x, marker.size.y, marker.size.z, marker.color.r, marker.color.g, marker.color.b, marker.color.a, marker.bobUpAndDown, marker.faceCamera, 0, marker.rotate, marker.drawOnEnts)
end
---@param name string
---@param coords vector3
---@param blipId integer
---@param blipColour integer
---@param blipScale number
local function createBlip(name, coords, blipId, blipColour, blipScale)
local blip = AddBlipForCoord(coords.x, coords.y, coords.z)
SetBlipSprite(blip, blipId)
SetBlipColour(blip, blipColour)
SetBlipScale(blip, blipScale)
SetBlipAsShortRange(blip, true)
BeginTextCommandSetBlipName("STRING")
AddTextComponentString(name)
EndTextCommandSetBlipName(blip)
return blip
end
---@param garageId string
---@param coords vector3|vector4
---@param dist number
---@param marker? table | false | nil
---@param onEnter? function
---@param onExit? function
---@param inside? function
local function createLocation(garageId, coords, dist, marker, onEnter, onExit, inside)
local point = lib.zones.box({
coords = coords,
size = vector3(dist, dist, GARAGE_ZONE_Z_DIST),
rotation = coords.w or 0,
garageId = garageId,
onEnter = onEnter,
onExit = onExit,
inside = inside
})
zones[#zones+1] = point
local markerPoint = lib.points.new({
coords = coords,
distance = dist * 4,
garageId = garageId
})
if not marker then return end
function markerPoint:nearby()
drawMarkerOnFrame(coords, marker)
end
zones[#zones+1] = markerPoint
end
---Runs on tick while ped is in a garage zone
---@param garageId string
---@param garageType "car"|"sea"|"air"
---@param isImpound boolean
local function pedIsInGarageZone(garageId, garageType, isImpound)
local pedIsInVehicle = cache.vehicle and GetPedInVehicleSeat(cache.vehicle, -1) == cache.ped
local prompt = isImpound and Config.OpenImpoundPrompt or (pedIsInVehicle and Config.InsertVehiclePrompt or Config.OpenGaragePrompt)
local action = function()
if pedIsInVehicle then
TriggerEvent("jg-advancedgarages:client:store-vehicle", garageId, garageType, false)
else
TriggerEvent("jg-advancedgarages:client:open-garage", garageId, garageType, false)
end
end
if inVehicle ~= pedIsInVehicle then
if Config.UseRadialMenu then
Framework.Client.RadialMenuAdd(garageId, prompt, action)
else
Framework.Client.ShowTextUI(prompt)
end
inVehicle = pedIsInVehicle
end
if Config.UseRadialMenu then return end
if IsControlJustPressed(0, isImpound and Config.OpenImpoundKeyBind or (pedIsInVehicle and Config.InsertVehicleKeyBind or Config.OpenGarageKeyBind)) then
action()
end
end
---@param garages table
local function createTargetZones(garages)
for _, ped in ipairs(peds) do
Framework.Client.RemoveTarget(ped)
end
for garageId, garage in pairs(garages) do
for _, zone in ipairs(zones) do zone:remove() end -- Remove existing zones
entity = Framework.Client.RegisterTarget(false, garage.coords, garageId, garage.type, garage.garageType)
peds[#peds+1] = entity
end
end
---@param garages table
local function createZones(garages)
for _, zone in ipairs(zones) do zone:remove() end -- Remove existing zones
for garageId, garage in pairs(garages) do
if garage then
-- Zone
createLocation(
garageId,
garage.coords,
garage.distance,
not garage.hideMarkers and garage.markers or false,
nil,
function()
if Config.UseRadialMenu then
Framework.Client.RadialMenuRemove(garageId)
else
Framework.Client.HideTextUI()
end
inVehicle = nil
end,
function()
pedIsInGarageZone(garageId, garage.type, garage.garageType == "impound")
end
)
end
end
end
local function createGarageZonesAndBlips()
for _, blip in ipairs(blips) do RemoveBlip(blip) end -- Remove existing blips
local garages = getAvailableGarageLocations()
if Config.UseTarget then
createTargetZones(garages)
else
createZones(garages)
end
for garageId, garage in pairs(garages) do
if garage then
-- Blip
if not garage.hideBlip then
local blipName = garage.garageType == "impound" and Locale.impound or garage.garageType == "job" and Locale.jobGarage or garage.garageType == "gang" and Locale.gangGarage or Locale.garage
if garage.uniqueBlips then blipName = blipName .. ": " .. garageId end
local blip = createBlip(blipName, garage.coords, garage.blip.id, garage.blip.color, garage.blip.scale)
blips[#blips + 1] = blip
end
end
end
end
RegisterNetEvent("jg-advancedgarages:client:update-blips-text-uis", function()
cachedGarageLocations = lib.callback.await("jg-advancedgarages:server:get-available-garage-locations", false)
createGarageZonesAndBlips()
end)
CreateThread(function()
Wait(2500)
createGarageZonesAndBlips()
end)
-- Delete peds in case the script restarts
AddEventHandler("onResourceStop", function(resourceName)
if (GetCurrentResourceName() == resourceName) then
for _, ped in ipairs(peds) do DeleteEntity(ped) end
end
end)

View file

@ -0,0 +1,67 @@
--
-- Custom code for common events
--
---@param vehicle integer Vehicle entity
---@param vehicleDbData table Vehicle row from the database
---@param type "personal" | "job" | "gang"
RegisterNetEvent("jg-advancedgarages:client:InsertVehicle:config", function(vehicle, vehicleDbData, type)
-- Code placed in here will be run when the player inserts their vehicle (if the vehicle is owned; and passes all the checks)
end)
---@param vehicle integer Vehicle entity
RegisterNetEvent("jg-advancedgarages:client:ImpoundVehicle:config", function(vehicle)
-- Code placed in here will be run just before the vehicle is set to impounded in the DB, and before the entity is deleted
end)
---@param vehicle integer Vehicle entity
---@param vehicleDbData table Vehicle row from the database
---@param type "personal" | "job" | "gang"
RegisterNetEvent("jg-advancedgarages:client:TakeOutVehicle:config", function(vehicle, vehicleDbData, type)
-- Code placed in here will be run after a vehicle has been taken out of a garage
end)
---@param plate string
---@param newOwnerPlayerId integer
RegisterNetEvent("jg-advancedgarages:client:TransferVehicle:config", function(plate, newOwnerPlayerId)
-- Code placed in here will be fired when a vehicle is transferred to another player via a public garage
end)
---@param vehicle integer Vehicle entity
---@param plate string
---@param garageId string
---@param vehicleDbData table Vehicle row from the database
---@param props table Vehicle properties
---@param fuel integer Fuel level
---@param body integer Body health
---@param engine integer Engine health
---@param damageModel table Damage model
RegisterNetEvent('jg-advancedgarages:client:insert-vehicle-verification', function(vehicle, plate, garageId, vehicleDbData, props, fuel, body, engine, damageModel, cb)
cb(true)
end)
---@param plate string
---@param vehicleDbData table Vehicle row from the database
---@param garageId string
lib.callback.register("jg-advancedgarages:client:takeout-vehicle-verification", function(plate, vehicleDbData, garageId)
return true
end)
-- Check whether a vehicle can be transferred between players, return false to prevent
---@param fromPlayerSrc integer
---@param toPlayerSrc integer
---@param plate string
---@return boolean allowTransfer
lib.callback.register("jg-advancedgarages:client:transfer-vehicle-verification", function(fromPlayerSrc, toPlayerSrc, plate)
return true
end)
-- Check whether a vehicle can be transferred between garages, return false to prevent
---@param currentGarageId string
---@param fromGarageId string
---@param toGarageId string
---@param plate string
---@return boolean allowTransfer
lib.callback.register("jg-advancedgarages:client:transfer-garage-verification", function(currentGarageId, fromGarageId, toGarageId, plate)
return true
end)

View file

@ -0,0 +1 @@
-- Add your own server code in here for custom functionality

View file

@ -0,0 +1,669 @@
-- Generated with https://configurator.jgscripts.com at 8/6/2025, 1:32:52 PM
Config = {}
Config.Locale = 'de'
Config.NumberAndDateFormat = 'en-US'
Config.Currency = 'USD'
Config.Framework = 'QBCore'
Config.FuelSystem = 'none'
Config.VehicleKeys = 'qb-vehiclekeys'
Config.Notifications = 'ox_lib'
Config.DrawText = 'jg-textui'
Config.OpenGarageKeyBind = 38
Config.OpenGaragePrompt = '[E] Open Garage'
Config.OpenImpoundKeyBind = 38
Config.OpenImpoundPrompt = '[E] Open Impound'
Config.InsertVehicleKeyBind = 38
Config.InsertVehiclePrompt = '[E] Store Vehicle'
Config.ExitInteriorKeyBind = 38
Config.ExitInteriorPrompt = '[E] Exit Garage'
Config.UseTarget = true
Config.TargetPed = 's_m_y_valet_01'
Config.Target = 'ox_target'
Config.UseRadialMenu = false
Config.RadialMenu = 'ox_lib'
Config.ShowVehicleImages = false
Config.DoNotSpawnInsideVehicle = false
Config.SaveVehicleDamage = true
Config.AdvancedVehicleDamage = true
Config.SaveVehiclePropsOnInsert = true
Config.SpawnVehiclesWithServerSetter = false
Config.TransferHidePlayerNames = false
Config.GarageVehicleTransferCost = 0
Config.EnableTransfers = {
betweenGarages = false,
betweenPlayers = true,
}
Config.AllowInfiniteVehicleSpawns = false
Config.JobGaragesAllowInfiniteVehicleSpawns = false
Config.GangGaragesAllowInfiniteVehicleSpawns = false
Config.GarageVehicleReturnCost = 0
Config.GarageVehicleReturnCostSocietyFund = false
Config.GarageShowBlips = true
Config.GarageUniqueBlips = false
Config.GarageUniqueLocations = true
Config.GarageEnableInteriors = true
Config.GarageLocations = {
['Legion Square'] = {
coords = vector3(215.09, -805.17, 30.81),
spawn = vector4(212.42, -798.77, 30.88, 336.61),
distance = 15,
type = 'car',
hideBlip = false,
blip = {
id = 357,
color = 0,
scale = 0.6,
},
hideMarkers = true,
markers = {
id = 21,
size = {
x = 0.3,
y = 0.3,
z = 0.3,
},
color = {
r = 255,
g = 255,
b = 255,
a = 120,
},
bobUpAndDown = 0,
faceCamera = 0,
rotate = 1,
drawOnEnts = 0,
},
},
['Islington South'] = {
coords = vector3(273.0, -343.85, 44.91),
spawn = vector4(270.75, -340.51, 44.92, 342.03),
distance = 15,
type = 'car',
hideBlip = false,
blip = {
id = 357,
color = 0,
scale = 0.6,
},
hideMarkers = true,
markers = {
id = 21,
size = {
x = 0.3,
y = 0.3,
z = 0.3,
},
color = {
r = 255,
g = 255,
b = 255,
a = 120,
},
bobUpAndDown = 0,
faceCamera = 0,
rotate = 1,
drawOnEnts = 0,
},
},
['Grove Street'] = {
coords = vector3(14.66, -1728.52, 29.3),
spawn = vector4(23.93, -1722.9, 29.3, 310.58),
distance = 15,
type = 'car',
hideBlip = false,
blip = {
id = 357,
color = 0,
scale = 0.6,
},
hideMarkers = true,
markers = {
id = 21,
size = {
x = 0.3,
y = 0.3,
z = 0.3,
},
color = {
r = 255,
g = 255,
b = 255,
a = 120,
},
bobUpAndDown = 0,
faceCamera = 0,
rotate = 1,
drawOnEnts = 0,
},
},
['Mirror Park'] = {
coords = vector3(1032.84, -765.1, 58.18),
spawn = vector4(1023.2, -764.27, 57.96, 319.66),
distance = 15,
type = 'car',
hideBlip = false,
blip = {
id = 357,
color = 0,
scale = 0.6,
},
hideMarkers = true,
markers = {
id = 21,
size = {
x = 0.3,
y = 0.3,
z = 0.3,
},
color = {
r = 255,
g = 255,
b = 255,
a = 120,
},
bobUpAndDown = 0,
faceCamera = 0,
rotate = 1,
drawOnEnts = 0,
},
},
Beach = {
coords = vector3(-1248.69, -1425.71, 4.32),
spawn = vector4(-1244.27, -1422.08, 4.32, 37.12),
distance = 15,
type = 'car',
hideBlip = false,
blip = {
id = 357,
color = 0,
scale = 0.6,
},
hideMarkers = true,
markers = {
id = 21,
size = {
x = 0.3,
y = 0.3,
z = 0.3,
},
color = {
r = 255,
g = 255,
b = 255,
a = 120,
},
bobUpAndDown = 0,
faceCamera = 0,
rotate = 1,
drawOnEnts = 0,
},
},
['Great Ocean Highway'] = {
coords = vector3(-2961.58, 375.93, 15.02),
spawn = vector4(-2964.96, 372.07, 14.78, 86.07),
distance = 15,
type = 'car',
hideBlip = false,
blip = {
id = 357,
color = 0,
scale = 0.6,
},
hideMarkers = true,
markers = {
id = 21,
size = {
x = 0.3,
y = 0.3,
z = 0.3,
},
color = {
r = 255,
g = 255,
b = 255,
a = 120,
},
bobUpAndDown = 0,
faceCamera = 0,
rotate = 1,
drawOnEnts = 0,
},
},
['Sandy South'] = {
coords = vector3(217.33, 2605.65, 46.04),
spawn = vector4(216.94, 2608.44, 46.33, 14.07),
distance = 15,
type = 'car',
hideBlip = false,
blip = {
id = 357,
color = 0,
scale = 0.6,
},
hideMarkers = true,
markers = {
id = 21,
size = {
x = 0.3,
y = 0.3,
z = 0.3,
},
color = {
r = 255,
g = 255,
b = 255,
a = 120,
},
bobUpAndDown = 0,
faceCamera = 0,
rotate = 1,
drawOnEnts = 0,
},
},
['Sandy North'] = {
coords = vector3(1878.44, 3760.1, 32.94),
spawn = vector4(1880.14, 3757.73, 32.93, 215.54),
distance = 15,
type = 'car',
hideBlip = false,
blip = {
id = 357,
color = 0,
scale = 0.6,
},
hideMarkers = true,
markers = {
id = 21,
size = {
x = 0.3,
y = 0.3,
z = 0.3,
},
color = {
r = 255,
g = 255,
b = 255,
a = 120,
},
bobUpAndDown = 0,
faceCamera = 0,
rotate = 1,
drawOnEnts = 0,
},
},
['North Vinewood Blvd'] = {
coords = vector3(365.21, 295.65, 103.46),
spawn = vector4(364.84, 289.73, 103.42, 164.23),
distance = 15,
type = 'car',
hideBlip = false,
blip = {
id = 357,
color = 0,
scale = 0.6,
},
hideMarkers = true,
markers = {
id = 21,
size = {
x = 0.3,
y = 0.3,
z = 0.3,
},
color = {
r = 255,
g = 255,
b = 255,
a = 120,
},
bobUpAndDown = 0,
faceCamera = 0,
rotate = 1,
drawOnEnts = 0,
},
},
Grapeseed = {
coords = vector3(1713.06, 4745.32, 41.96),
spawn = vector4(1710.64, 4746.94, 41.95, 90.11),
distance = 15,
type = 'car',
hideBlip = false,
blip = {
id = 357,
color = 0,
scale = 0.6,
},
hideMarkers = true,
markers = {
id = 21,
size = {
x = 0.3,
y = 0.3,
z = 0.3,
},
color = {
r = 255,
g = 255,
b = 255,
a = 120,
},
bobUpAndDown = 0,
faceCamera = 0,
rotate = 1,
drawOnEnts = 0,
},
},
['Paleto Bay'] = {
coords = vector3(107.32, 6611.77, 31.98),
spawn = vector4(110.84, 6607.82, 31.86, 265.28),
distance = 15,
type = 'car',
hideBlip = false,
blip = {
id = 357,
color = 0,
scale = 0.6,
},
hideMarkers = true,
markers = {
id = 21,
size = {
x = 0.3,
y = 0.3,
z = 0.3,
},
color = {
r = 255,
g = 255,
b = 255,
a = 120,
},
bobUpAndDown = 0,
faceCamera = 0,
rotate = 1,
drawOnEnts = 0,
},
},
Boats = {
coords = vector3(-795.15, -1510.79, 1.6),
spawn = vector4(-798.66, -1507.73, -0.47, 102.23),
distance = 20,
type = 'sea',
hideBlip = false,
blip = {
id = 410,
color = 0,
scale = 0.6,
},
hideMarkers = true,
markers = {
id = 21,
size = {
x = 0.3,
y = 0.3,
z = 0.3,
},
color = {
r = 255,
g = 255,
b = 255,
a = 120,
},
bobUpAndDown = 0,
faceCamera = 0,
rotate = 1,
drawOnEnts = 0,
},
},
Hangar = {
coords = vector3(-1243.49, -3391.88, 13.94),
spawn = vector4(-1258.4, -3394.56, 13.94, 328.23),
distance = 20,
type = 'air',
hideBlip = false,
blip = {
id = 423,
color = 0,
scale = 0.6,
},
hideMarkers = true,
markers = {
id = 21,
size = {
x = 0.3,
y = 0.3,
z = 0.3,
},
color = {
r = 255,
g = 255,
b = 255,
a = 120,
},
bobUpAndDown = 0,
faceCamera = 0,
rotate = 1,
drawOnEnts = 0,
},
},
}
Config.PrivGarageCreateCommand = 'privategarages'
Config.PrivGarageCreateJobRestriction = {
'realestate',
}
Config.PrivGarageEnableInteriors = true
Config.PrivGarageHideBlips = false
Config.PrivGarageBlip = {
id = 357,
color = 0,
scale = 0.7,
}
Config.JobGarageShowBlips = true
Config.JobGarageUniqueBlips = false
Config.JobGarageSetVehicleCommand = 'setjobvehicle'
Config.JobGarageRemoveVehicleCommand = 'removejobvehicle'
Config.JobGarageUniqueLocations = true
Config.JobGarageEnableInteriors = true
Config.JobGarageLocations = {
Mechanic = {
coords = vector3(157.86, -3005.9, 7.03),
spawn = vector4(165.26, -3014.94, 5.9, 268.8),
distance = 15,
job = {
'mechanic',
},
type = 'car',
vehiclesType = 'owned',
blip = {
id = 357,
color = 0,
scale = 0.6,
},
hideBlip = false,
hideMarkers = true,
markers = {
id = 21,
size = {
x = 0.3,
y = 0.3,
z = 0.3,
},
color = {
r = 255,
g = 255,
b = 255,
a = 120,
},
bobUpAndDown = 0,
faceCamera = 0,
rotate = 1,
drawOnEnts = 0,
},
},
Police = {
coords = vector3(434.48, -1016.97, 28.83),
spawn = {
vector4(434.55, -1014.54, 28.49, 91.56),
},
distance = 15,
type = 'car',
job = {
'police',
},
hideBlip = false,
vehiclesType = 'personal',
vehicles = {
{
model = 'police',
plate = 'PD',
minJobGrade = 0,
},
{
model = 'police2',
plate = false,
minJobGrade = 3,
},
},
blip = {
id = 357,
color = 0,
scale = 0.6,
},
hideMarkers = true,
markers = {
id = 21,
size = {
x = 0.3,
y = 0.3,
z = 0.3,
},
color = {
r = 255,
g = 255,
b = 255,
a = 120,
},
bobUpAndDown = 0,
faceCamera = 0,
rotate = 1,
drawOnEnts = 0,
},
showLiveriesExtrasMenu = true,
},
}
Config.GangGarageShowBlips = true
Config.GangGarageUniqueBlips = false
Config.GangGarageSetVehicleCommand = 'setgangvehicle'
Config.GangGarageRemoveVehicleCommand = 'removegangvehicle'
Config.GangGarageUniqueLocations = true
Config.GangGarageEnableInteriors = true
Config.GangGarageLocations = {}
Config.ImpoundCommand = 'iv'
Config.ImpoundFeesSocietyFund = false
Config.ImpoundShowBlips = true
Config.ImpoundUniqueBlips = false
Config.ImpoundTimeOptions = {
0,
1,
4,
12,
24,
72,
168,
}
Config.ImpoundLocations = {
['Impound A'] = {
coords = vector3(410.8, -1626.26, 29.29),
spawn = vector4(408.44, -1630.88, 29.29, 136.88),
distance = 15,
type = 'car',
job = {
'police',
},
blip = {
id = 68,
color = 0,
scale = 0.6,
},
hideBlip = false,
hideMarkers = true,
markers = {
id = 21,
size = {
x = 0.3,
y = 0.3,
z = 0.3,
},
color = {
r = 255,
g = 255,
b = 255,
a = 120,
},
bobUpAndDown = 0,
faceCamera = 0,
rotate = 1,
drawOnEnts = 0,
},
},
['Impound B'] = {
coords = vector3(1649.71, 3789.61, 34.79),
spawn = vector4(1643.66, 3798.36, 34.49, 216.16),
distance = 15,
type = 'car',
job = {
'police',
},
blip = {
id = 68,
color = 0,
scale = 0.6,
},
hideBlip = false,
hideMarkers = true,
markers = {
id = 21,
size = {
x = 0.3,
y = 0.3,
z = 0.3,
},
color = {
r = 255,
g = 255,
b = 255,
a = 120,
},
bobUpAndDown = 0,
faceCamera = 0,
rotate = 1,
drawOnEnts = 0,
},
},
}
Config.GarageInteriorEntrance = vector4(227.96, -1003.06, -99.0, 358.0)
Config.GarageInteriorVehiclePositions = {
vec4(233.000000, -984.000000, -99.410004, 118.000000),
vec4(233.000000, -988.500000, -99.410004, 118.000000),
vec4(233.000000, -993.000000, -99.410004, 118.000000),
vec4(233.000000, -997.500000, -99.410004, 118.000000),
vec4(233.000000, -1002.000000, -99.410004, 118.000000),
vec4(223.600006, -979.000000, -99.410004, 235.199997),
vec4(223.600006, -983.599976, -99.410004, 235.199997),
vec4(223.600006, -988.200012, -99.410004, 235.199997),
vec4(223.600006, -992.799988, -99.410004, 235.199997),
vec4(223.600006, -997.400024, -99.410004, 235.199997),
vec4(223.600006, -1002.000000, -99.410004, 235.199997),
}
Config.ChangeVehiclePlate = 'vplate'
Config.DeleteVehicleFromDB = 'dvdb'
Config.ReturnVehicleToGarage = 'vreturn'
Config.VehicleLabels = {
spawnName = 'Pretty Vehicle Label',
}
Config.PlayerTransferBlacklist = {
'spawnName',
}
Config.ReturnToPreviousRoutingBucket = false
Config.__v3Config = true

View file

@ -0,0 +1,535 @@
---@param text string
function Framework.Client.ShowTextUI(text)
if (Config.DrawText == "auto" and GetResourceState("jg-textui") == "started") or Config.DrawText == "jg-textui" then
exports["jg-textui"]:DrawText(text)
elseif (Config.DrawText == "auto" and GetResourceState("ox_lib") == "started") or Config.DrawText == "ox_lib" then
exports["ox_lib"]:showTextUI(text, {
position = "left-center"
})
elseif (Config.DrawText == "auto" and GetResourceState("okokTextUI") == "started") or Config.DrawText == "okokTextUI" then
exports["okokTextUI"]:Open(text, "lightblue", "left")
elseif (Config.DrawText == "auto" and GetResourceState("ps-ui") == "started") or Config.DrawText == "ps-ui" then
exports["ps-ui"]:DisplayText(text, "primary")
elseif Config.Framework == "QBCore" then
exports["qb-core"]:DrawText(text)
else
error("You do not have a TextUI system set up!")
end
end
function Framework.Client.HideTextUI()
if (Config.DrawText == "auto" and GetResourceState("jg-textui") == "started") or Config.DrawText == "jg-textui" then
exports["jg-textui"]:HideText()
elseif (Config.DrawText == "auto" and GetResourceState("ox_lib") == "started") or Config.DrawText == "ox_lib" then
exports["ox_lib"]:hideTextUI()
elseif (Config.DrawText == "auto" and GetResourceState("okokTextUI") == "started") or Config.DrawText == "okokTextUI" then
exports["okokTextUI"]:Close()
elseif (Config.DrawText == "auto" and GetResourceState("ps-ui") == "started") or Config.DrawText == "ps-ui" then
exports["ps-ui"]:HideText()
elseif Config.Framework == "QBCore" then
exports["qb-core"]:HideText()
else
error("You do not have a TextUI system set up!")
end
end
---@param garageId string
---@param text string
---@param onSelect function
function Framework.Client.RadialMenuAdd(garageId, text, onSelect)
if not Config.UseRadialMenu then return end
if (Config.RadialMenu == "auto" and GetResourceState("ox_lib") == "started") or Config.RadialMenu == "ox_lib" then
lib.addRadialItem({
id = garageId,
icon = "warehouse",
label = text,
onSelect = onSelect
})
else
error("You do not have a radial menu system set up!")
end
end
---@param garageId string
function Framework.Client.RadialMenuRemove(garageId)
if not Config.UseRadialMenu then return end
if (Config.RadialMenu == "auto" and GetResourceState("ox_lib") == "started") or Config.RadialMenu == "ox_lib" then
lib.removeRadialItem(garageId)
else
error("You do not have a radial menu system set up!")
end
end
---@param entity? integer|false
---@param coords vector4|vector3
---@param garageId string
---@param vehicleType "car"|"air"|"sea"
---@param garageType "personal"|"job"|"gang"|"impound"
---@return integer
function Framework.Client.RegisterTarget(entity, coords, garageId, vehicleType, garageType)
if not entity then
entity = createPedForTarget(coords)
end
if (Config.Target == "auto" and GetResourceState("ox_target") == "started") or Config.Target == "ox_target" then
exports.ox_target:addLocalEntity(entity, {
{
label = garageType == "impound" and Config.OpenImpoundPrompt or Config.OpenGaragePrompt,
icon = "warehouse",
onSelect = function()
TriggerEvent("jg-advancedgarages:client:open-garage", garageId, vehicleType, false)
end
},
garageType ~= "impound" and {
label = Config.InsertVehiclePrompt,
icon = "warehouse",
onSelect = function()
TriggerEvent("jg-advancedgarages:client:store-vehicle", garageId, vehicleType, false)
end
} or nil
})
elseif (Config.Target == "auto" and GetResourceState("qb-target") == "started") or Config.Target == "qb-target" then
exports["qb-target"]:AddTargetEntity(entity, {
options = {
{
label = garageType == "impound" and Config.OpenImpoundPrompt or Config.OpenGaragePrompt,
targeticon = "fas fa-warehouse",
action = function()
TriggerEvent("jg-advancedgarages:client:open-garage", garageId, vehicleType, false)
end
},
garageType ~= "impound" and {
label = Config.InsertVehiclePrompt,
targeticon = "fas fa-warehouse",
action = function()
TriggerEvent("jg-advancedgarages:client:store-vehicle", garageId, vehicleType, false)
end
} or nil
},
distance = 10.0
})
else
error("You do not have a target system set up!")
end
return entity
end
---@param entity integer
function Framework.Client.RemoveTarget(entity)
if not entity then return end
DeleteEntity(entity)
if (Config.Target == "auto" and GetResourceState("ox_target") == "started") or Config.Target == "ox_target" then
exports.ox_target:removeLocalEntity(entity)
elseif (Config.Target == "auto" and GetResourceState("qb-target") == "started") or Config.Target == "qb-target" then
exports["qb-target"]:RemoveTargetEntity(entity)
else
error("You do not have a target system set up!")
end
end
---@param msg string
---@param type? "success" | "warning" | "error"
---@param time? number
function Framework.Client.Notify(msg, type, time)
type = type or "success"
time = time or 5000
if (Config.Notifications == "auto" and GetResourceState("okokNotify") == "started") or Config.Notifications == "okokNotify" then
exports["okokNotify"]:Alert("Garages", msg, time, type)
elseif (Config.Notifications == "auto" and GetResourceState("ps-ui") == "started") or Config.Notifications == "ps-ui" then
exports["ps-ui"]:Notify(msg, type, time)
elseif (Config.Notifications == "auto" and GetResourceState("ox_lib") == "started") or Config.Notifications == "ox_lib" then
exports["ox_lib"]:notify({
title = "Garages",
description = msg,
type = type
})
else
if Config.Framework == "QBCore" then
return QBCore.Functions.Notify(msg, type, time)
elseif Config.Framework == "Qbox" then
exports.qbx_core:Notify(msg, type, time)
elseif Config.Framework == "ESX" then
return ESX.ShowNotification(msg, type)
end
end
end
RegisterNetEvent("jg-advancedgarages:client:notify", function(...)
Framework.Client.Notify(...)
end)
--
-- Player Functions
--
---@return table | false playerData
function Framework.Client.GetPlayerData()
if Config.Framework == "QBCore" then
return QBCore.Functions.GetPlayerData()
elseif Config.Framework == "Qbox" then
return exports.qbx_core:GetPlayerData()
elseif Config.Framework == "ESX" then
return ESX.GetPlayerData()
end
return false
end
---@return string | false identifier
function Framework.Client.GetPlayerIdentifier()
local playerData = Framework.Client.GetPlayerData()
if not playerData then return false end
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
return playerData.citizenid
elseif Config.Framework == "ESX" then
return playerData.identifier
end
return false
end
---@param type "cash" | "bank" | "money"
function Framework.Client.GetBalance(type)
if Config.Framework == "QBCore" then
return QBCore.Functions.GetPlayerData().money[type]
elseif Config.Framework == "Qbox" then
return exports.qbx_core:GetPlayerData().money[type]
elseif Config.Framework == "ESX" then
if type == "cash" then type = "money" end
for i, acc in pairs(ESX.GetPlayerData().accounts) do
if acc.name == type then
return acc.money
end
end
return 0
end
end
---@return {name: string, grade: number} | false job
function Framework.Client.GetPlayerJob()
local player = Framework.Client.GetPlayerData()
if not player or not player.job then return {} end
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
return {
name = player.job.name,
label = player.job.label,
grade = player.job.grade.level
}
elseif Config.Framework == "ESX" then
return {
name = player.job.name,
label = player.job.label,
grade = player.job.grade
}
end
return false
end
---@return {name: string, grade: number} | false gang
function Framework.Client.GetPlayerGang()
if (Config.Gangs == "auto" and GetResourceState("rcore_gangs") == "started") or Config.Gangs == "rcore_gangs" then
local gang = exports.rcore_gangs:GetPlayerGang()
if not gang then return {} end
return {
name = gang.name,
label = gang.name,
grade = 0 -- rcore_gangs' grade system are only strings
}
elseif (Config.Gangs == "auto" and GetResourceState("qb-gangs") == "started") or Config.Gangs == "qb-gangs" or Config.Framework == "QBCore" or Config.Framework == "Qbox" then
local player = Framework.Client.GetPlayerData()
if not player or not player.gang then return {} end
return {
name = player.gang.name,
label = player.gang.label,
grade = player.gang.grade.level
}
elseif Config.Framework == "ESX" then
-- To implement gangs in ESX, enable Config.GangEnableCustomESXIntegration & then add the necessary exports here.
-- It must return the same data structure as QB/X above, with { name, label, grade }
-- Heads up, you must also add the exports to sv-functions.lua -> Framework.Server.GetPlayerGang
error("ESX does not natively support gangs.");
end
return false
end
---@return boolean dead
function Framework.Client.IsPlayerDead()
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
local player = Framework.Client.GetPlayerData()
if not player then return false end
if player.metadata.isdead or player.metadata.inlaststand then
return true
end
elseif Config.Framework == "ESX" then
return IsEntityDead(cache.ped)
end
return false
end
--
-- Vehicle Functions
--
---@param vehicle integer
---@return number fuelLevel
function Framework.Client.VehicleGetFuel(vehicle)
if not DoesEntityExist(vehicle) then return 0 end
if (Config.FuelSystem == "LegacyFuel" or Config.FuelSystem == "ps-fuel" or Config.FuelSystem == "lj-fuel" or Config.FuelSystem == "cdn-fuel" or Config.FuelSystem == "hyon_gas_station" or Config.FuelSystem == "okokGasStation" or Config.FuelSystem == "nd_fuel" or Config.FuelSystem == "myFuel") then
return exports[Config.FuelSystem]:GetFuel(vehicle)
elseif Config.FuelSystem == "ti_fuel" then
local level, type = exports["ti_fuel"]:getFuel(vehicle)
TriggerServerEvent("jg-advancedgarages:server:save-ti-fuel-type", Framework.Client.GetPlate(vehicle), type)
return level
elseif Config.FuelSystem == "ox_fuel" or Config.FuelSystem == "Renewed-Fuel" then
return GetVehicleFuelLevel(vehicle)
elseif Config.FuelSystem == "rcore_fuel" then
return exports.rcore_fuel:GetVehicleFuelPercentage(vehicle)
else
return 65 -- or set up custom fuel system here...
end
end
---@param vehicle integer
---@param fuel number
function Framework.Client.VehicleSetFuel(vehicle, fuel)
if not DoesEntityExist(vehicle) then return false end
if (Config.FuelSystem == "LegacyFuel" or Config.FuelSystem == "ps-fuel" or Config.FuelSystem == "lj-fuel" or Config.FuelSystem == "cdn-fuel" or Config.FuelSystem == "hyon_gas_station" or Config.FuelSystem == "okokGasStation" or Config.FuelSystem == "nd_fuel" or Config.FuelSystem == "myFuel" or Config.FuelSystem == "Renewed-Fuel") then
exports[Config.FuelSystem]:SetFuel(vehicle, fuel)
elseif Config.FuelSystem == "ti_fuel" then
local fuelType = lib.callback.await("jg-advancedgarages:server:get-ti-fuel-type", false, Framework.Client.GetPlate(vehicle))
exports["ti_fuel"]:setFuel(vehicle, fuel, fuelType or nil)
elseif Config.FuelSystem == "ox_fuel" then
Entity(vehicle).state.fuel = fuel
elseif Config.FuelSystem == "rcore_fuel" then
exports.rcore_fuel:SetVehicleFuel(vehicle, fuel)
else
-- Setup custom fuel system here
end
end
---@param plate string
---@param vehicleEntity integer
---@param origin "personal" | "job" | "gang"
function Framework.Client.VehicleGiveKeys(plate, vehicleEntity, origin)
if not DoesEntityExist(vehicleEntity) then return false end
if not plate or plate == "" then
print("^1[ERROR] No plate provided to VehicleGiveKeys function^0")
return false
end
plate = plate:upper()
if Config.VehicleKeys == "qb-vehiclekeys" then
TriggerEvent("vehiclekeys:client:SetOwner", plate)
elseif Config.VehicleKeys == "qbx_vehiclekeys" then
TriggerEvent("vehiclekeys:client:SetOwner", plate)
-- lib.callback.await("qbx_vehiclekeys:server:giveKeys", false, VehToNet(vehicleEntity))
elseif Config.VehicleKeys == "jaksam-vehicles-keys" then
TriggerServerEvent("vehicles_keys:selfGiveVehicleKeys", plate)
elseif Config.VehicleKeys == "mk_vehiclekeys" then
exports["mk_vehiclekeys"]:AddKey(vehicleEntity)
elseif Config.VehicleKeys == "qs-vehiclekeys" then
local model = GetDisplayNameFromVehicleModel(GetEntityModel(vehicleEntity))
exports["qs-vehiclekeys"]:GiveKeys(plate, model)
elseif Config.VehicleKeys == "wasabi_carlock" then
exports.wasabi_carlock:GiveKey(plate)
elseif Config.VehicleKeys == "cd_garage" then
TriggerEvent("cd_garage:AddKeys", plate)
elseif Config.VehicleKeys == "okokGarage" then
TriggerServerEvent("okokGarage:GiveKeys", plate)
elseif Config.VehicleKeys == "t1ger_keys" then
if origin == "job" then
local vehicleName = GetDisplayNameFromVehicleModel(GetEntityModel(vehicleEntity))
exports['t1ger_keys']:GiveJobKeys(plate, vehicleName, true)
else
TriggerServerEvent("t1ger_keys:updateOwnedKeys", plate, true)
end
elseif Config.VehicleKeys == "MrNewbVehicleKeys" then
exports.MrNewbVehicleKeys:GiveKeys(vehicleEntity)
elseif Config.VehicleKeys == "Renewed" then
exports["Renewed-Vehiclekeys"]:addKey(plate)
elseif Config.VehicleKeys == "tgiann-hotwire" then
exports["tgiann-hotwire"]:CheckKeyInIgnitionWhenSpawn(vehicleEntity, plate)
else
-- Setup custom key system here...
end
end
---@param plate string
---@param vehicleEntity integer
---@param origin "personal" | "job" | "gang"
function Framework.Client.VehicleRemoveKeys(plate, vehicleEntity, origin)
if not DoesEntityExist(vehicleEntity) then return false end
if not plate or plate == "" then
print("^1[ERROR] No plate provided to VehicleRemoveKeys function^0")
return false
end
plate = plate:upper()
if Config.VehicleKeys == "qs-vehiclekeys" then
local model = GetDisplayNameFromVehicleModel(GetEntityModel(vehicleEntity))
exports["qs-vehiclekeys"]:RemoveKeys(plate, model)
elseif Config.VehicleKeys == "wasabi_carlock" then
exports.wasabi_carlock:RemoveKey(plate)
elseif Config.VehicleKeys == "t1ger_keys" then
TriggerServerEvent("t1ger_keys:updateOwnedKeys", plate, false)
elseif Config.VehicleKeys == "MrNewbVehicleKeys" then
exports.MrNewbVehicleKeys:RemoveKeys(vehicleEntity)
elseif Config.VehicleKeys == "Renewed" then
exports["Renewed-Vehiclekeys"]:removeKey(plate)
else
-- Setup custom key system here...
end
end
---@param vehicle table
---@return string|number|false model
function Framework.Client.GetModelColumn(vehicle)
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
return vehicle.vehicle or tonumber(vehicle.hash) or false
elseif Config.Framework == "ESX" then
if not vehicle or not vehicle.vehicle then return false end
if type(vehicle.vehicle) == "string" then
if not json.decode(vehicle.vehicle) then return false end
return json.decode(vehicle.vehicle).model
else
return vehicle.vehicle.model
end
end
return false
end
---@param vehicle integer
---@return table | false
function Framework.Client.GetModsColumn(vehicle)
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
if type(vehicle.mods) == "string" then
return json.decode(vehicle.mods)
else
return vehicle.mods
end
elseif Config.Framework == "ESX" then
if type(vehicle.vehicle) == "string" then
return json.decode(vehicle.vehicle)
else
return vehicle.vehicle
end
end
return false
end
---@param vehicle integer
---@return table|false props
function Framework.Client.GetVehicleProperties(vehicle)
if GetResourceState("jg-mechanic") == "started" then
return exports["jg-mechanic"]:getVehicleProperties(vehicle)
else
if Config.Framework == "QBCore" then
return QBCore.Functions.GetVehicleProperties(vehicle)
elseif Config.Framework == "Qbox" then
return lib.getVehicleProperties(vehicle) or false
elseif Config.Framework == "ESX" then
return ESX.Game.GetVehicleProperties(vehicle)
end
end
return false
end
---@param vehicle integer
---@param props table
function Framework.Client.SetVehicleProperties(vehicle, props)
if GetResourceState("jg-mechanic") == "started" then
return exports["jg-mechanic"]:setVehicleProperties(vehicle, props)
else
if Config.Framework == "QBCore" then
return QBCore.Functions.SetVehicleProperties(vehicle, props)
elseif Config.Framework == "Qbox" then
return lib.setVehicleProperties(vehicle, props)
elseif Config.Framework == "ESX" then
return ESX.Game.SetVehicleProperties(vehicle, props)
end
end
end
---@param vehicle integer
---@return string|false plate
function Framework.Client.GetPlate(vehicle)
local plate = GetVehicleNumberPlateText(vehicle)
if not plate or plate == nil or plate == "" then return false end
if GetResourceState("brazzers-fakeplates") == "started" then
local originalPlate = lib.callback.await("jg-advancedgarages:server:brazzers-get-plate-from-fakeplate", false, plate)
if originalPlate then plate = originalPlate end
end
local trPlate = string.gsub(plate, "^%s*(.-)%s*$", "%1")
return trPlate
end
-- Get a nice vehicle label from either QBCore shared or GTA natives
---@param model string | number
function Framework.Client.GetVehicleLabel(model)
local hash = convertModelToHash(model)
if Config.VehicleLabels[model] then
return Config.VehicleLabels[model]
end
if Config.VehicleLabels[tostring(hash)] then
return Config.VehicleLabels[tostring(hash)]
end
if type(model) == "string" and Config.Framework == "QBCore" then
local vehShared = QBCore.Shared.Vehicles?[model]
if vehShared then
return vehShared.brand .. " " .. vehShared.name
end
end
if Config.Framework == "Qbox" then
local vehShared = exports.qbx_core:GetVehiclesByHash()?[hash]
if vehShared then
return vehShared.brand .. " " .. vehShared.name
end
end
local makeName = GetMakeNameFromVehicleModel(hash)
local modelName = GetDisplayNameFromVehicleModel(hash)
local label = GetLabelText(makeName) .. " " .. GetLabelText(modelName)
if makeName == "CARNOTFOUND" or modelName == "CARNOTFOUND" then
label = tostring(model)
else
if GetLabelText(modelName) == "NULL" and GetLabelText(makeName) == "NULL" then
label = (makeName or "") .. " " .. (modelName or "")
elseif GetLabelText(makeName) == "NULL" then
label = GetLabelText(modelName)
end
end
return label
end

View file

@ -0,0 +1,37 @@
if (Config.Framework == "auto" and GetResourceState("es_extended") == "started") or Config.Framework == "ESX" then
-- Player data
Globals.PlayerData = ESX.GetPlayerData()
RegisterNetEvent("esx:playerLoaded")
AddEventHandler("esx:playerLoaded", function(xPlayer)
Globals.PlayerData = xPlayer
TriggerEvent("jg-advancedgarages:client:update-blips-text-uis")
end)
RegisterNetEvent("esx:setJob")
AddEventHandler("esx:setJob", function(job)
Globals.PlayerData.job = job
TriggerEvent("jg-advancedgarages:client:update-blips-text-uis")
end)
-- ESX admincar replacement
RegisterNetEvent("jg-advancedgarages:client:set-vehicle-owned", function()
local vehicle = cache.vehicle
local vehicleProps = Framework.Client.GetVehicleProperties(vehicle)
if not vehicleProps then return end
if not vehicle or vehicle == 0 then
return Framework.Client.Notify(Locale.notInsideVehicleError, "error")
end
local plate = vehicleProps.plate
local vehicleModel = GetEntityArchetypeName(vehicle)
local veh = lib.callback.await("jg-advancedgarages:server:get-vehicle", false, vehicleModel, plate)
if veh then
return Framework.Client.Notify(Locale.vehiclePlateExistsError, "error")
end
TriggerServerEvent("jg-advancedgarages:server:set-vehicle-owned", vehicleProps)
end)
end

View file

@ -0,0 +1,23 @@
if (Config.Framework == "auto" and GetResourceState("es_extended") == "started") or Config.Framework == "ESX" then
-- /admincar db insert
RegisterNetEvent("jg-advancedgarages:server:set-vehicle-owned", function(vehicleProps)
local src = source
if not Framework.Server.IsAdmin(src) then
return Framework.Server.Notify(src, "INSUFFICIENT_PERMISSIONS", "error")
end
local player = ESX.GetPlayerFromId(src)
MySQL.insert.await("INSERT INTO owned_vehicles (owner, plate, vehicle) VALUES (?, ?, ?)", {
player.identifier, vehicleProps.plate, json.encode(vehicleProps)
})
Framework.Server.Notify(src, string.gsub(Locale.vehicleReceived, "%%{value}", vehicleProps.plate))
end)
-- /admincar command
ESX.RegisterCommand("admincar", "admin", function(xPlayer)
TriggerClientEvent("jg-advancedgarages:client:set-vehicle-owned", xPlayer.source)
end, false)
end

View file

@ -0,0 +1,61 @@
QBCore, ESX = nil, nil
Framework = {
Client = {},
Server = {},
Queries = {
GetVehicles = "SELECT * FROM %s WHERE %s = ? AND job_vehicle = 0 AND gang_vehicle = 0",
GetJobVehicles = "SELECT * FROM %s WHERE %s = ? AND job_vehicle = 1 AND job_vehicle_rank <= ?",
GetGangVehicles = "SELECT * FROM %s WHERE %s = ? AND gang_vehicle = 1 AND gang_vehicle_rank <= ?",
GetImpoundVehiclesWhitelist = "SELECT * FROM %s WHERE garage_id = ? AND impound = 1",
GetImpoundVehiclesPublic = "SELECT * FROM %s WHERE garage_id = ? AND impound = 1 AND impound_retrievable = 1 AND (%s = ? OR %s = ? OR %s = ?)",
GetVehicle = "SELECT * FROM %s WHERE %s = ? AND plate = ?",
GetVehicleNoIdentifier = "SELECT * FROM %s WHERE plate = ?",
GetVehiclePlateOnly = "SELECT plate FROM %s WHERE plate = ?",
GetPrivateGarages = "SELECT * FROM player_priv_garages WHERE owners LIKE ?",
StoreVehicle = "UPDATE %s SET in_garage = 1, garage_id = ?, fuel = ?, body = ?, engine = ?, damage = ? WHERE %s IN (?) AND plate = ?",
SetInGarage = "UPDATE %s SET in_garage = 1 WHERE plate = ?",
UpdateProps = "UPDATE %s SET %s = ? WHERE plate = ?",
VehicleDriveOut = "UPDATE %s SET in_garage = 0 WHERE %s = ? AND plate = ?",
UpdateGarageId = "UPDATE %s SET garage_id = ? WHERE %s = ? AND plate = ?",
UpdatePlayerId = "UPDATE %s SET %s = ? WHERE %s = ? AND plate = ?",
UpdateVehicleNickname = "UPDATE %s SET nickname = ? WHERE %s = ? AND plate = ?",
UpdateVehiclePlate = "UPDATE %s SET plate = ?, %s = ? WHERE plate = ?",
ImpoundVehicle = "UPDATE %s SET impound = 1, impound_retrievable = ?, impound_data = ?, garage_id = ?, fuel = ?, body = ?, engine = ?, damage = ? WHERE plate = ?",
ImpoundReturnToGarage = "UPDATE %s SET impound = 0, impound_data = '', garage_id = ?, in_garage = ? WHERE plate = ?",
SetJobVehicle = "UPDATE %s SET %s = ?, job_vehicle = 1, job_vehicle_rank = ? WHERE plate = ?",
SetGangVehicle = "UPDATE %s SET %s = ?, gang_vehicle = 1, gang_vehicle_rank = ? WHERE plate = ?",
SetSocietyVehicleAsPlayerOwned = "UPDATE %s SET %s = ?, job_vehicle = 0, gang_vehicle = 0 WHERE plate = ?",
DeleteVehicle = "DELETE FROM %s WHERE plate = ?",
}
}
if (Config.Framework == "auto" and GetResourceState("qbx_core") == "started") or Config.Framework == "Qbox" then
Config.Framework = "Qbox"
Framework.VehiclesTable = "player_vehicles"
Framework.PlayerIdentifier = "citizenid"
Framework.VehProps = "mods"
Framework.PlayersTable = "players"
Framework.PlayersTableId = "citizenid"
elseif (Config.Framework == "auto" and GetResourceState("qb-core") == "started") or Config.Framework == "QBCore" then
QBCore = exports['qb-core']:GetCoreObject()
Config.Framework = "QBCore"
Framework.VehiclesTable = "player_vehicles"
Framework.PlayerIdentifier = "citizenid"
Framework.VehProps = "mods"
Framework.PlayersTable = "players"
Framework.PlayersTableId = "citizenid"
elseif (Config.Framework == "auto" and GetResourceState("es_extended") == "started") or Config.Framework == "ESX" then
ESX = exports["es_extended"]:getSharedObject()
Config.Framework = "ESX"
Framework.VehiclesTable = "owned_vehicles"
Framework.PlayerIdentifier = "owner"
Framework.VehProps = "vehicle"
Framework.PlayersTable = "users"
Framework.PlayersTableId = "identifier"
else
error("You need to set the Config.Framework to either \"QBCore\" or \"ESX\" or \"Qbox\"!")
end

View file

@ -0,0 +1,22 @@
if (Config.Framework == "auto" and GetResourceState("qb-core") == "started") or Config.Framework == "QBCore" then
-- Player data
Globals.PlayerData = QBCore.Functions.GetPlayerData()
RegisterNetEvent("QBCore:Client:OnPlayerLoaded")
AddEventHandler("QBCore:Client:OnPlayerLoaded", function()
Globals.PlayerData = QBCore.Functions.GetPlayerData()
TriggerEvent("jg-advancedgarages:client:update-blips-text-uis")
end)
RegisterNetEvent("QBCore:Client:OnJobUpdate")
AddEventHandler("QBCore:Client:OnJobUpdate", function(job)
Globals.PlayerData.job = job
TriggerEvent("jg-advancedgarages:client:update-blips-text-uis")
end)
RegisterNetEvent("QBCore:Client:OnGangUpdate")
AddEventHandler("QBCore:Client:OnGangUpdate", function(gang)
Globals.PlayerData.gang = gang
TriggerEvent("jg-advancedgarages:client:update-blips-text-uis")
end)
end

View file

@ -0,0 +1,55 @@
if (Config.Framework == "auto" and GetResourceState("qb-core") == "started") or Config.Framework == "QBCore" then
-- qb-phone fix
QBCore.Functions.CreateCallback("jg-advancedgarages:server:GetVehiclesPhone", function(source, cb)
local Player = QBCore.Functions.GetPlayer(source)
local vehicles = MySQL.query.await("SELECT * FROM player_vehicles WHERE citizenid = ? AND job_vehicle = ? AND gang_vehicle = ?", {Player.PlayerData.citizenid, 0, 0})
for i, vehicle in pairs(vehicles) do
local vehShared = QBCore.Shared.Vehicles[vehicle.vehicle]
local vehBrand, vehName, vehState
local vehGarage = vehicle.garage_id
if vehShared then
vehBrand = vehShared.brand
vehName = vehShared.name
else
vehBrand = ""
vehName = vehicle.vehicle
end
if vehicle.impound == 1 then
vehGarage = Locale.impound
vehState = json.decode(vehicle.impound_data).reason
elseif vehicle.in_garage then
vehState = Locale.inGarage
else
vehState = Locale.notInGarage
end
vehicles[i] = {
fullname = vehBrand .. " " .. vehName,
brand = vehBrand,
model = vehName,
garage = vehGarage,
state = vehState,
plate = vehicle.plate,
fuel = vehicle.fuel,
engine = vehicle.engine,
body = vehicle.body
}
end
cb(vehicles)
end)
-- qb-vehiclesales fix
QBCore.Functions.CreateCallback("qb-garage:server:checkVehicleOwner", function(source, cb, plate)
local src = source
local pData = QBCore.Functions.GetPlayer(src)
local result = MySQL.single.await("SELECT * FROM player_vehicles WHERE plate = ? AND citizenid = ?", {plate, pData.PlayerData.citizenid})
if result then cb(true, result.balance)
else cb(false) end
end)
end

View file

@ -0,0 +1,22 @@
if (Config.Framework == "auto" and GetResourceState("qbx_core") == "started") or Config.Framework == "Qbox" then
-- Player data
Globals.PlayerData = exports.qbx_core:GetPlayerData()
RegisterNetEvent("QBCore:Client:OnPlayerLoaded")
AddEventHandler("QBCore:Client:OnPlayerLoaded", function()
Globals.PlayerData = exports.qbx_core:GetPlayerData()
TriggerEvent("jg-advancedgarages:client:update-blips-text-uis")
end)
RegisterNetEvent("QBCore:Client:OnJobUpdate")
AddEventHandler("QBCore:Client:OnJobUpdate", function(job)
Globals.PlayerData.job = job
TriggerEvent("jg-advancedgarages:client:update-blips-text-uis")
end)
RegisterNetEvent("QBCore:Client:OnGangUpdate")
AddEventHandler("QBCore:Client:OnGangUpdate", function(gang)
Globals.PlayerData.gang = gang
TriggerEvent("jg-advancedgarages:client:update-blips-text-uis")
end)
end

View file

@ -0,0 +1,317 @@
--
-- Core Functions
--
---@param src integer
---@param msg string
---@param type "success" | "warning" | "error"
function Framework.Server.Notify(src, msg, type)
TriggerClientEvent("jg-advancedgarages:client:notify", src, msg, type, 5000)
end
---@param src integer
---@returns boolean
function Framework.Server.IsAdmin(src)
return IsPlayerAceAllowed(tostring(src), "command") or false
end
function Framework.Server.PayIntoSocietyFund(jobName, money)
local usingNewQBBanking = GetResourceState("qb-banking") == "started" and tonumber(string.sub(GetResourceMetadata("qb-banking", "version", 0), 1, 3)) >= 2
if (Config.Banking == "auto" and GetResourceState("Renewed-Banking") == "started") or Config.Banking == "Renewed-Banking" then
exports['Renewed-Banking']:addAccountMoney(jobName, money)
elseif (Config.Banking == "auto" and GetResourceState("okokBanking") == "started") or Config.Banking == "okokBanking" then
exports['okokBanking']:AddMoney(jobName, money)
elseif (Config.Banking == "auto" and GetResourceState("fd_banking") == "started") or Config.banking == "fd_banking" then
exports.fd_banking:AddMoney(jobName, money)
elseif (Config.Banking == "auto" and (Config.Framework == "QBCore" or Config.Framework == "Qbox")) then
if usingNewQBBanking then
exports["qb-banking"]:AddMoney(jobName, money)
else
exports["qb-management"]:AddMoney(jobName, money)
end
elseif Config.Banking == "qb-banking" then
exports["qb-banking"]:AddMoney(jobName, money)
elseif Config.Banking == "qb-management" then
exports["qb-management"]:AddMoney(jobName, money)
elseif (Config.Banking == "auto" and Config.Framework == "ESX") or Config.Banking == "esx_addonaccount" then
TriggerEvent("esx_society:getSociety", jobName, function(society)
TriggerEvent("esx_addonaccount:getSharedAccount", society.account, function(account)
account.addMoney(money)
end)
end)
end
end
--
-- Player Functions
--
---@param src integer
function Framework.Server.GetPlayer(src)
if Config.Framework == "QBCore" then
return QBCore.Functions.GetPlayer(src)
elseif Config.Framework == "Qbox" then
return exports.qbx_core:GetPlayer(src)
elseif Config.Framework == "ESX" then
return ESX.GetPlayerFromId(src)
end
end
---@param src integer
function Framework.Server.GetPlayerInfo(src)
local player = Framework.Server.GetPlayer(src)
if not player then return false end
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
return {
name = player.PlayerData.charinfo.firstname .. " " .. player.PlayerData.charinfo.lastname
}
elseif Config.Framework == "ESX" then
return {
name = player.getName()
}
end
end
---@param src integer
---@return {name:string,label:string,grade:number} | false
function Framework.Server.GetPlayerJob(src)
local player = Framework.Server.GetPlayer(src)
if not player then return false end
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
if not player.PlayerData then return false end
return {
name = player.PlayerData.job.name,
label = player.PlayerData.job.label,
grade = player.PlayerData.job.grade?.level or 0,
}
elseif Config.Framework == "ESX" then
return {
name = player.job.name,
label = player.job.label,
grade = player.job.grade
}
end
return false
end
---@param src integer
---@return {name:string,label:string,grade:number} | false
function Framework.Server.GetPlayerGang(src)
if (Config.Gangs == "auto" and GetResourceState("rcore_gangs") == "started") or Config.Gangs == "rcore_gangs" then
local gang = exports.rcore_gangs:GetPlayerGang(src)
if not gang then return {} end
return {
name = gang.name,
label = gang.name,
grade = 0 -- rcore_gangs' grade system are only strings
}
elseif (Config.Gangs == "auto" and GetResourceState("qb-gangs") == "started") or Config.Gangs == "qb-gangs" or Config.Framework == "QBCore" or Config.Framework == "Qbox" then
local player = Framework.Server.GetPlayer(src)
if not player then return false end
return {
name = player.PlayerData.gang.name,
label = player.PlayerData.gang.label,
grade = player.PlayerData.gang.grade.level
}
elseif Config.Framework == "ESX" then
-- To implement gangs in ESX, enable Config.GangEnableCustomESXIntegration & then add the necessary exports here.
-- It must return the same data structure as QB/X above, with { name, label, grade }
-- Heads up, you must also add the exports to cl-functions.lua -> Framework.Client.GetPlayerGang
error("ESX does not natively support gangs.");
end
return false
end
---@param src integer
function Framework.Server.GetPlayerIdentifier(src)
local player = Framework.Server.GetPlayer(src)
if not player then return false end
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
return player.PlayerData.citizenid
elseif Config.Framework == "ESX" then
return player.getIdentifier()
end
end
---@param identifier string
function Framework.Server.GetSrcFromIdentifier(identifier)
if Config.Framework == "QBCore" then
local player = QBCore.Functions.GetPlayerByCitizenId(identifier)
if not player then return false end
return player.PlayerData.source
elseif Config.Framework == "Qbox" then
local player = exports.qbx_core:GetPlayerByCitizenId(identifier)
if not player then return false end
return player.PlayerData.source
elseif Config.Framework == "ESX" then
local xPlayer = ESX.GetPlayerFromIdentifier(identifier)
if not xPlayer then return false end
return xPlayer.source
end
end
---@param src integer
---@param type "cash" | "bank" | "money"
function Framework.Server.GetPlayerBalance(src, type)
local player = Framework.Server.GetPlayer(src)
if not player then return 0 end
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
return player.PlayerData.money[type]
elseif Config.Framework == "ESX" then
if type == "cash" then type = "money" end
for i, acc in pairs(player.getAccounts()) do
if acc.name == type then
return acc.money
end
end
return 0
end
end
---@param src integer
---@param amount number
---@param account "cash" | "bank" | "money"
---@return boolean success
function Framework.Server.PlayerRemoveMoney(src, amount, account)
local player = Framework.Server.GetPlayer(src)
account = account or "bank"
if Framework.Server.GetPlayerBalance(src, account) < amount then
Framework.Server.Notify(src, Locale.notEnoughMoneyError, "error")
return false
end
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
player.Functions.RemoveMoney(account, round(amount, 0))
elseif Config.Framework == "ESX" then
if account == "cash" then account = "money" end
player.removeAccountMoney(account, round(amount, 0))
end
return true
end
---@return {id:number,identifier:string,name:string}[] players
function Framework.Server.GetPlayers()
local players = {}
for _, playerId in ipairs(GetPlayers()) do
players[#players+1] = {
id = tonumber(playerId),
identifier = Framework.Server.GetPlayerIdentifier(tonumber(playerId, 10)),
name = Framework.Server.GetPlayerInfo(tonumber(playerId, 10))?.name
}
end
return players
end
---@return table | false jobs
function Framework.Server.GetJobs()
if Config.Framework == "QBCore" then
return QBCore.Shared.Jobs
elseif Config.Framework == "Qbox" then
return exports.qbx_core:GetJobs()
elseif Config.Framework == "ESX" then
return ESX.GetJobs()
end
return false
end
---@return table | false gangs
function Framework.Server.GetGangs()
if (Config.Gangs == "auto" and GetResourceState("rcore_gangs") == "started") or Config.Gangs == "rcore_gangs" then
local gangs = MySQL.query.await("SELECT name FROM gangs")
return gangs or {}
elseif (Config.Gangs == "auto" and GetResourceState("qb-gangs") == "started") or Config.Gangs == "qb-gangs" then
if Config.Framework == "QBCore" then
return QBCore.Shared.Gangs
elseif Config.Framework == "Qbox" then
return exports.qbx_core:GetGangs()
end
elseif Config.Framework == "ESX" then
error("ESX does not natively support gangs.");
end
return false
end
---@param vehicle integer
---@return string | false plate
function Framework.Server.GetPlate(vehicle)
local plate = GetVehicleNumberPlateText(vehicle)
if not plate or plate == nil or plate == "" then return false end
if GetResourceState("brazzers-fakeplates") == "started" then
local originalPlate = MySQL.scalar.await("SELECT plate FROM player_vehicles WHERE fakeplate = ?", {plate})
if originalPlate then plate = originalPlate end
end
local trPlate = string.gsub(plate, "^%s*(.-)%s*$", "%1")
return trPlate
end
---@param vehicle boolean|QueryResult|unknown|{ [number]: { [string]: unknown }|{ [string]: unknown }}
---@return string | number | false model
function Framework.Server.GetModelColumn(vehicle)
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
return vehicle.vehicle or tonumber(vehicle.hash) or false
elseif Config.Framework == "ESX" then
if not vehicle or not vehicle.vehicle then return false end
if type(vehicle.vehicle) == "string" then
if not json.decode(vehicle.vehicle) then return false end
return json.decode(vehicle.vehicle).model
else
return vehicle.vehicle.model
end
end
return false
end
--
-- ti_fuel
--
RegisterNetEvent("jg-advancedgarages:server:save-ti-fuel-type", function(plate, type)
MySQL.query.await("ALTER TABLE " .. Framework.VehiclesTable .. " ADD COLUMN IF NOT EXISTS `ti_fuel_type` VARCHAR(100) DEFAULT '';")
MySQL.update.await("UPDATE " .. Framework.VehiclesTable .. " SET ti_fuel_type = ? WHERE plate = ?", {type, plate});
end)
lib.callback.register("jg-advancedgarages:server:get-ti-fuel-type", function(src, plate)
MySQL.query.await("ALTER TABLE " .. Framework.VehiclesTable .. " ADD COLUMN IF NOT EXISTS `ti_fuel_type` VARCHAR(100) DEFAULT '';")
return MySQL.scalar.await("SELECT ti_fuel_type FROM " .. Framework.VehiclesTable .. " WHERE plate = ?", {plate}) or false
end)
--
-- Brazzers-FakePlates
--
if GetResourceState("brazzers-fakeplates") == "started" then
lib.callback.register("jg-advancedgarages:server:brazzers-get-plate-from-fakeplate", function(_, fakeplate)
local result = MySQL.scalar.await("SELECT plate FROM player_vehicles WHERE fakeplate = ?", {fakeplate})
if result then return result end
return false
end)
lib.callback.register("jg-advancedgarages:server:brazzers-get-fakeplate-from-plate", function(_, plate)
local result = MySQL.scalar.await("SELECT fakeplate FROM player_vehicles WHERE plate = ?", {plate})
if result then return result end
return false
end)
end

View file

@ -0,0 +1,56 @@
fx_version "cerulean"
game "gta5"
lua54 "yes"
description "For support or other queries: discord.gg/jgscripts"
version 'v3.2.3'
author "JG Scripts"
dependencies {
"oxmysql",
"ox_lib",
"/server:7290",
"/onesync",
}
shared_scripts {
"@ox_lib/init.lua",
"config/config.lua",
"locales/*.lua",
"shared/main.lua",
"framework/main.lua"
}
client_scripts {
"framework/**/cl-*.lua",
"config/config-cl.lua",
"client/cl-main.lua",
"client/*.lua"
}
server_scripts {
"@oxmysql/lib/MySQL.lua",
"framework/**/sv-*.lua",
"config/config-sv.lua",
"server/sv-main.lua",
"server/*.lua"
}
ui_page "web/dist/index.html"
files {
"web/dist/index.html",
"web/dist/**/*",
"vehicle_images/*"
}
escrow_ignore {
"config/**/*",
"framework/**/*",
"locales/*.lua",
"client/cl-deformation.lua",
"client/cl-locations.lua",
"server/sv-webhooks.lua"
}
dependency '/assetpacks'

View file

@ -0,0 +1,28 @@
-- player_vehicles
ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `fuel` INT(10) DEFAULT '100';
ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `engine` INT(10) DEFAULT '1000';
ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `body` INT(10) DEFAULT '1000';
ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `damage` LONGTEXT DEFAULT '';
ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `in_garage` TINYINT(1) DEFAULT '1';
ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `garage_id` VARCHAR(255) DEFAULT 'Legion Square';
ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `job_vehicle` TINYINT(1) DEFAULT '0';
ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `job_vehicle_rank` INT(10) DEFAULT '0';
ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `gang_vehicle` TINYINT(1) DEFAULT '0';
ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `gang_vehicle_rank` INT(10) DEFAULT '0';
ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `impound` INT(10) DEFAULT '0';
ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `impound_retrievable` INT(10) DEFAULT '0';
ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `impound_data` LONGTEXT DEFAULT '';
ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `nickname` VARCHAR(255) DEFAULT '';
CREATE TABLE IF NOT EXISTS `player_priv_garages` (
`id` INT(11) unsigned NOT NULL AUTO_INCREMENT,
`owners` longtext,
`name` VARCHAR(255),
`type` VARCHAR(50),
`x` FLOAT,
`y` FLOAT,
`z` FLOAT,
`h` FLOAT,
`distance` INT(11) DEFAULT '10',
PRIMARY KEY (`id`)
);

View file

@ -0,0 +1,25 @@
-- player_vehicles
ALTER TABLE `player_vehicles` ADD COLUMN IF NOT EXISTS `damage` LONGTEXT DEFAULT '';
ALTER TABLE `player_vehicles` ADD COLUMN IF NOT EXISTS `in_garage` TINYINT(1) DEFAULT '1';
ALTER TABLE `player_vehicles` ADD COLUMN IF NOT EXISTS `garage_id` VARCHAR(255) DEFAULT 'Legion Square';
ALTER TABLE `player_vehicles` ADD COLUMN IF NOT EXISTS `job_vehicle` TINYINT(1) DEFAULT '0';
ALTER TABLE `player_vehicles` ADD COLUMN IF NOT EXISTS `job_vehicle_rank` INT(10) DEFAULT '0'; -- NEW
ALTER TABLE `player_vehicles` ADD COLUMN IF NOT EXISTS `gang_vehicle` TINYINT(1) DEFAULT '0';
ALTER TABLE `player_vehicles` ADD COLUMN IF NOT EXISTS `gang_vehicle_rank` INT(10) DEFAULT '0';
ALTER TABLE `player_vehicles` ADD COLUMN IF NOT EXISTS `impound` INT(10) DEFAULT '0';
ALTER TABLE `player_vehicles` ADD COLUMN IF NOT EXISTS `impound_retrievable` INT(10) DEFAULT '0';
ALTER TABLE `player_vehicles` ADD COLUMN IF NOT EXISTS `impound_data` LONGTEXT DEFAULT '';
ALTER TABLE `player_vehicles` ADD COLUMN IF NOT EXISTS `nickname` VARCHAR(255) DEFAULT '';
CREATE TABLE IF NOT EXISTS `player_priv_garages` (
`id` INT(11) unsigned NOT NULL AUTO_INCREMENT,
`owners` longtext,
`name` VARCHAR(255),
`type` VARCHAR(50),
`x` FLOAT,
`y` FLOAT,
`z` FLOAT,
`h` FLOAT,
`distance` INT(11) DEFAULT '10',
PRIMARY KEY (`id`)
);

View file

@ -0,0 +1,142 @@
Locales = Locales or {}
Locales['ar'] = {
yes = "نعم",
no = "لا",
garage = "كراج",
jobGarage = "كراج الوظيفة",
gangGarage = "كراج العصابة",
player = "لاعب",
impound = "حجز",
inGarage = "في الكراج",
notInGarage = "ليست في الكراج",
car = "سيارة",
air = "جوي",
sea = "بحري",
fuel = "وقود",
engine = "محرك",
body = "هيكل",
day = "يوم",
days = "أيام",
hour = "ساعة",
hours = "ساعات",
mins = "دقائق",
-- User Interface
noVehicles = "لا توجد مركبات في هذا الكراج",
noVehiclesAvailableToDrive = "لا توجد مركبات متاحة للقيادة",
vehicles = "مركبة/مركبات",
vehiclePlate = "لوحة المركبة",
vehicleNotInGarage = "المركبة تُركت بالخارج",
vehicleTakeOut = "قيادة",
vehicleReturnAndTakeOut = "إرجاع وقيادة",
vehicleReturnToOwnersGarage = "إرجاع إلى كراج المالك",
transferToGarageOrPlayer = "نقل إلى كراج أو لاعب",
transferToGarage = "نقل إلى كراج",
transferToPlayer = "نقل إلى لاعب",
vehicleTransfer = "نقل",
noAvailableGarages = "لا توجد كراجات متاحة",
currentGarage = "الكراج الحالي",
noPlayersOnline = "لا يوجد لاعبين متصلين",
createPrivateGarage = "إنشاء كراج خاص",
pgAlertHeadsUp = "تنبيه!",
pgAlertText = "سيتم إنشاء الكراج وستظهر المركبات في الموقع والاتجاه الذي تقف فيه حاليًا.",
garageName = "اسم الكراج",
impoundInformation = "معلومات الحجز",
impoundedBy = "حجز بواسطة",
impoundedReason = "السبب",
impoundPlayerCanCollect = "يمكنك استلام مركبتك من الحجز.",
impoundCollectionContact = "يرجى الاتصال بـ %{value} لاستلام مركبتك.",
impoundNoVehicles = "لا توجد مركبات في الحجز",
impoundAvailable = "متاح",
impoundRetrievableByOwner = "يمكن استردادها بواسطة المالك",
impoundNoReason = "لم يتم تقديم سبب",
impoundVehicle = "حجز المركبة",
impoundReasonField = "السبب (اختياري)",
impoundTime = "وقت الحجز",
impoundAvailableImmediately = "متاح فورا",
impoundCost = "التكلفة",
changeVehiclePlate = "تغيير لوحة المركبة",
newPlate = "لوحة جديدة",
search = "البحث بالاسم أو اللوحة",
noPrivateGarages = "لا توجد كراجات خاصة",
editPrivateGarage = "تعديل الكراج الخاص",
owners = "المالك/المالكون",
location = "الموقع",
next = "التالي",
previous = "السابق",
page = "صفحة",
of = "من",
show = "عرض",
save = "حفظ",
edit = "تعديل",
delete = "حذف",
garageDeleteConfirm = "هل أنت متأكد أنك تريد حذف هذا الكراج؟",
privGarageSearch = "البحث بالاسم",
garageUpdatedSuccess = "تم تحديث الكراج بنجاح!",
getCurrentCoords = "احصل على الإحداثيات الحالية",
identifier = "المعرف",
name = "الاسم",
noPlayers = "لا يوجد لاعبين مضافين",
addPlayer = "إضافة لاعب",
loadingVehicle = "جارٍ تحميل المركبة...",
vehicleSetup = "إعداد المركبة",
extras = "إضافات",
extra = "إضافة",
liveries = "الطلاءات",
livery = "طلاء",
noLiveries = "لا توجد طلاءات متاحة",
noExtras = "لا توجد إضافات متاحة",
none = "لا شيء",
vehicleNeedsService = "تحتاج إلى صيانة",
type = "النوع",
goInside = "ادخل إلى الداخل",
-- Notifications
insertVehicleTypeError = "يمكنك تخزين أنواع المركبات %{value} فقط في هذا الكراج",
insertVehiclePublicError = "لا يمكنك تخزين مركبات الوظيفة أو العصابة في الكراجات العامة",
vehicleParkedSuccess = "تم ركن المركبة في الكراج",
vehicleNotOwnedError = "أنت لا تملك هذه المركبة",
vehicleNotOwnedByPlayerError = "المركبة ليست مملوكة للاعب",
notEnoughMoneyError = "ليس لديك ما يكفي من المال في البنك",
vehicleNotYoursError = "المركبة لا تخصك",
notJobOrGangVehicle = "هذه ليست مركبة %{value}",
invalidGangError = "لم تقدم عصابة صالحة",
invalidJobError = "لم تقدم وظيفة صالحة",
notInsideVehicleError = "أنت لست جالسًا في مركبة",
vehicleAddedToGangGarageSuccess = "تمت إضافة المركبة إلى كراج العصابة %{value}!",
vehicleAddedToJobGarageSuccess = "تمت إضافة المركبة إلى كراج الوظيفة %{value}!",
moveCloserToVehicleError = "تحتاج إلى الاقتراب من المركبة",
noVehiclesNearbyError = "لا توجد مركبات قريبة",
commandPermissionsError = "غير مسموح لك باستخدام هذا الأمر",
actionNotAllowedError = "غير مسموح لك بفعل هذا",
garageNameExistsError = "اسم الكراج موجود بالفعل",
vehiclePlateExistsError = "لوحة المركبة مستخدمة بالفعل",
playerNotOnlineError = "اللاعب غير متصل",
vehicleTransferSuccess = "تم نقل المركبة إلى %{value}",
vehicleTransferSuccessGeneral = "تم نقل المركبة بنجاح",
vehicleReceived = "تلقيت مركبة باللوحة %{value}",
vehicleImpoundSuccess = "تم حجز المركبة بنجاح",
vehicleImpoundRemoveSuccess = "تم إزالة المركبة من الحجز",
vehicleImpoundReturnedToOwnerSuccess = "تم إرجاع المركبة إلى كراج المالك",
garageCreatedSuccess = "تم إنشاء الكراج بنجاح!",
vehiclePlateUpdateSuccess = "تم تعيين لوحة المركبة إلى %{value}",
vehicleDeletedSuccess = "تم حذف المركبة من قاعدة البيانات %{value}",
playerIsDead = "لا يمكنك فعل هذا وأنت ميت",
vehicleStoreError = "لا يمكنك تخزين هذه المركبة هنا",
-- Commands
cmdSetGangVehicle = "إضافة المركبة الحالية إلى كراج العصابة",
cmdRemoveGangVehicle = "إعادة مركبة العصابة إلى ملكية اللاعب",
cmdSetJobVehicle = "إضافة المركبة الحالية إلى كراج الوظيفة",
cmdRemoveJobVehicle = "إعادة مركبة الوظيفة إلى ملكية اللاعب",
cmdArgGangName = "اسم العصابة",
cmdArgJobName = "اسم الوظيفة",
cmgArgMinGangRank = "الرتبة الدنيا للعصابة",
cmgArgMinJobRank = "الرتبة الدنيا للوظيفة",
cmdArgPlayerId = "معرف اللاعب للمالك الجديد",
cmdImpoundVehicle = "حجز مركبة",
cmdChangePlate = "تغيير لوحة المركبة (للمسؤولين فقط)",
cmdDeleteVeh = "حذف المركبة من قاعدة البيانات (للمسؤولين فقط)",
cmdCreatePrivGarage = "إنشاء كراج خاص للاعب",
}

View file

@ -0,0 +1,142 @@
Locales = Locales or {}
Locales['cn'] = {
yes = "",
no = "",
garage = "车库",
jobGarage = "工作车库",
gangGarage = "帮派车库",
player = "玩家",
impound = "扣押",
inGarage = "在车库中",
notInGarage = "不在车库中",
car = "汽车",
air = "空中",
sea = "海洋",
fuel = "燃油",
engine = "引擎",
body = "车身",
day = "",
days = "",
hour = "小时",
hours = "小时",
mins = "分钟",
-- 用户界面
noVehicles = "此车库没有车辆",
noVehiclesAvailableToDrive = "没有可供驾驶的车辆",
vehicles = "辆车",
vehiclePlate = "车牌",
vehicleNotInGarage = "车辆已被取出",
vehicleTakeOut = "驾驶",
vehicleReturnAndTakeOut = "归还并驾驶",
vehicleReturnToOwnersGarage = "返回车主的车库",
transferToGarageOrPlayer = "转移到车库或玩家",
transferToGarage = "转移到车库",
transferToPlayer = "转移到玩家",
vehicleTransfer = "车辆转移",
noAvailableGarages = "没有可用车库",
currentGarage = "当前车库",
noPlayersOnline = "当前没有在线玩家",
createPrivateGarage = "创建私人车库",
pgAlertHeadsUp = "提示!",
pgAlertText = "车库将会创建,车辆将会在您当前位置和方向生成。",
garageName = "车库名称",
impoundInformation = "扣押信息",
impoundedBy = "扣押者",
impoundedReason = "原因",
impoundPlayerCanCollect = "您可以从扣押处取回您的车辆。",
impoundCollectionContact = "请联系 %{value} 以便取回您的车辆。",
impoundNoVehicles = "扣押处没有车辆",
impoundAvailable = "可用",
impoundRetrievableByOwner = "车主可取回",
impoundNoReason = "未提供原因",
impoundVehicle = "扣押车辆",
impoundReasonField = "原因(可选)",
impoundTime = "扣押时间",
impoundAvailableImmediately = "可立即取回",
impoundCost = "费用",
changeVehiclePlate = "更改车牌",
newPlate = "新车牌",
search = "按名称或车牌搜索",
noPrivateGarages = "没有私人车库",
editPrivateGarage = "编辑私人车库",
owners = "车主",
location = "位置",
next = "下一页",
previous = "上一页",
page = "",
of = "",
show = "显示",
save = "保存",
edit = "编辑",
delete = "删除",
garageDeleteConfirm = "您确定要删除此车库吗?",
privGarageSearch = "按名称搜索",
garageUpdatedSuccess = "车库更新成功!",
getCurrentCoords = "获取当前坐标",
identifier = "标识符",
name = "名称",
noPlayers = "没有添加玩家",
addPlayer = "添加玩家",
loadingVehicle = "正在加载车辆...",
vehicleSetup = "车辆设置",
extras = "额外配件",
extra = "额外配件",
liveries = "涂装",
livery = "涂装",
noLiveries = "没有可用涂装",
noExtras = "没有可用配件",
none = "",
vehicleNeedsService = "需要维修",
type = "类型",
goInside = "室内车库",
-- 通知
insertVehicleTypeError = "此车库只能存储 %{value} 类型的车辆",
insertVehiclePublicError = "您不能将工作或帮派车辆存入公共车库",
vehicleParkedSuccess = "车辆已停入车库",
vehicleNotOwnedError = "您不拥有这辆车",
vehicleNotOwnedByPlayerError = "此车辆不属于玩家",
notEnoughMoneyError = "您的银行余额不足",
vehicleNotYoursError = "这辆车不属于您",
notJobOrGangVehicle = "这不是 %{value} 车辆",
invalidGangError = "您没有提供有效的帮派",
invalidJobError = "您没有提供有效的工作",
notInsideVehicleError = "您没有坐在车辆内",
vehicleAddedToGangGarageSuccess = "车辆已添加到 %{value} 帮派车库!",
vehicleAddedToJobGarageSuccess = "车辆已添加到 %{value} 工作车库!",
moveCloserToVehicleError = "您需要靠近车辆",
noVehiclesNearbyError = "附近没有车辆",
commandPermissionsError = "您没有权限使用此命令",
actionNotAllowedError = "您没有权限执行此操作",
garageNameExistsError = "车库名称已存在",
vehiclePlateExistsError = "车牌已被使用",
playerNotOnlineError = "玩家不在线",
vehicleTransferSuccess = "车辆已转移给 %{value}",
vehicleTransferSuccessGeneral = "车辆转移成功",
vehicleReceived = "您已收到车牌为 %{value} 的车辆",
vehicleImpoundSuccess = "车辆成功扣押",
vehicleImpoundRemoveSuccess = "车辆已从扣押处移除",
vehicleImpoundReturnedToOwnerSuccess = "车辆已归还至车主的车库",
garageCreatedSuccess = "车库创建成功!",
vehiclePlateUpdateSuccess = "车牌已更新为 %{value}",
vehicleDeletedSuccess = "车辆已从数据库删除 %{value}",
playerIsDead = "您死了无法执行此操作",
vehicleStoreError = "您无法将此车辆存储在此处",
-- 命令
cmdSetGangVehicle = "将当前车辆添加到帮派车库",
cmdRemoveGangVehicle = "将帮派车辆归还为玩家车辆",
cmdSetJobVehicle = "将当前车辆添加到工作车库",
cmdRemoveJobVehicle = "将工作车辆归还为玩家车辆",
cmdArgGangName = "帮派名称",
cmdArgJobName = "工作名称",
cmgArgMinGangRank = "最低帮派等级",
cmgArgMinJobRank = "最低工作等级",
cmdArgPlayerId = "新车主的玩家ID",
cmdImpoundVehicle = "扣押一辆车辆",
cmdChangePlate = "更改车辆车牌(仅限管理员)",
cmdDeleteVeh = "删除车辆(仅限管理员)",
cmdCreatePrivGarage = "为玩家创建私人车库",
}

View file

@ -0,0 +1,143 @@
Locales = Locales or {}
Locales['cs'] = {
yes = "Ano",
ne = "Ne",
garage = "Garáž",
jobGarage = "Frakční Garáž",
gangGarage = "Gang Garáž",
player = "Hráč",
impound = "Odtahovka",
inGarage = "V garáži",
notInGarage = "Mimo garáž",
car = "Car",
air = "Air",
sea = "Sea",
fuel = "Palivo",
engine = "Motor",
body = "Karoserie",
day = "den",
days = "dní",
hour = "hodiny",
hours = "hodin",
-- User Interface
noVehicles = "V této garáži nejsou žádná vozidla",
vehicles = "vozidlo(a)",
vehiclePlate = "SPZ vozidla",
vehicleNotInGarage = "Vozidlo není v garáži",
vehicleTakeOut = "Vytáhnout vozidlo",
vehicleReturnAndTakeOut = "Vyzvednout z odtahovky",
vehicleReturnToOwnersGarage = "Návrat do garáže majitele",
transferToGarageOrPlayer = "Převést do garáže nebo hráči",
transferToGarage = "Převést do garáže",
transferToPlayer = "Převést na hráče",
vehicleTransfer = "Převod",
noAvailableGarages = "Žádné dostupné garáže",
currentGarage = "Aktuální garáž",
noPlayersOnline = "Žádní hráči online",
createPrivateGarage = "Vytvořit soukromou garáž",
pgAlertHeadsUp = "Heads up!",
pgAlertText = "Vytvoří se garáž a vozidla se budou spawnovat přesně v místě a směru, kde právě stojíte.",
garageName = "Název garáže",
impoundInformation = "Informace o zabavení",
impoundedBy = "Zabaveno do",
impoundedReason = "Důvod",
impoundPlayerCanCollect = "Můžete si vyzvednout své vozidlo na odtahovce.",
impoundCollectionContact = "Kontaktujte prosím %{value}, abyste si mohli vyzvednout své vozidlo.",
impoundNoVehicles = "V blízkosti nejsou žádná vozidla",
impoundAvailable = "K dispozici",
impoundRetrievableByOwner = "Vyzvednutelné vlastníkem",
impoundNoReason = "Není uveden důvod",
impoundVehicle = "Zabavené vozidlo",
impoundReasonField = "Důvod (nepovinný)",
impoundTime = "Doba zabavení",
impoundAvailableImmediately = "K dispozici ihned",
impoundCost = "Cena",
changeVehiclePlate = "Vyměnit registrační značku vozidla",
newPlate = "Nová registrační značka",
search = "Hledejte podle jména nebo štítku",
noPrivateGarages = "Žádné soukromé garáže",
editPrivateGarage = "Upravit soukromou garáž",
owners = "Majitel(é)",
location = "Umístění",
next = "Další",
previous = "Předchozí",
page = "Stránka",
of = "z",
show = "Zobrazit",
save = "Uložit",
edit = "Upravit",
delete = "Odstranit",
garageDeleteConfirm = "Opravdu chcete tuto garáž odstranit?",
privGarageSearch = "Vyhledávání podle jména",
garageUpdatedSuccess = "Garáž úspěšně aktualizována!",
getCurrentCoords = "Získání aktuálních souřadnic",
identifier = "Identifikátor",
name = "Název",
noPlayers = "Nebyli přidáni žádní hráči",
addPlayer = "Přidat hráče",
loadingVehicle = "Nakládací vozidlo...",
vehicleSetup = "Nastavení vozidla",
extras = "Doplňky",
extra = "Extra",
liveries = "Liveries",
livery = "Livery",
noLiveries = "Nejsou k dispozici žádné livreje",
noExtras = "Žádné doplňky nejsou k dispozici",
none = "Žádné",
vehicleNeedsService = "Needs Service",
type = "Type",
-- Notifications
insertVehicleTypeError = "V této garáži lze uložit pouze %{value} typů vozidel",
insertVehiclePublicError = "Do veřejných garáží nelze ukládat frakční vozidla",
vehicleParkedSuccess = "Vozidlo bylo zaparkováno do garáže",
vehicleNotOwnedError = "Toto vozidlo nevlastníte",
vehicleNotOwnedByPlayerError = "Vozidlo není ve vlastnictví tohoto hráče",
notEnoughMoneyError = "Nemáte v bance dostatek peněz",
vehicleNotYoursError = "Toto vozidlo vám nepatří",
notJobOrGangVehicle = "Toto není vozidlo %{value}",
invalidGangError = "Nezadali jste platný gang",
invalidJobError = "Nezadali jste platnou frakci",
notInsideVehicleError = "Nesedíte ve vozidle",
vehicleAddedToGangGarageSuccess = "Vozidlo bylo přidáno do garáže gangu %{value}!",
vehicleAddedToJobGarageSuccess = "Vozidlo bylo přidáno do garáže frakce %{value}!",
moveCloserToVehicleError = "Musíte se přiblížit k vozidlu",
noVehiclesNearbyError = "V blízkosti nejsou žádná vozidla",
commandPermissionsError = "Nemáte oprávnění na použítí tohoto příkazu",
actionNotAllowedError = "Nejste opravněn(a) provádět tuto akci",
garageNameExistsError = "Název garáže již existuje",
vehiclePlateExistsError = "SPZ vozidla je již použita",
playerNotOnlineError = "Hráč není online",
vehicleTransferSuccess = "Vozidlo převedeno na %{value}",
vehicleTransferSuccessGeneral = "Vozidlo bylo úspěšně převedeno",
vehicleReceived = "Získal jsi vozidlo se %{value}",
vehicleImpoundSuccess = "Vozidlo bylo úspěšně zabaveno",
vehicleImpoundRemoveSuccess = "Vozidlo bylo odstraněno z odtahovky",
vehicleImpoundReturnedToOwnerSuccess = "Vozidlo bylo vráceno do garáže majitele",
garageCreatedSuccess = "Garáž byla úspěšně vytvořena!",
vehiclePlateUpdateSuccess = "SPZ vozidla nastavena na %{value}",
vehicleDeletedSuccess = "Vozidlo bylo odstraněno z databáze %{value}",
playerIsDead = "Nemůžeš to udělat, dokud jsi mrtvý",
-- Commands
cmdSetGangVehicle = "Přidat aktuální vozidlo do gang garáže",
cmdRemoveGangVehicle = "Nastavit vozidlo gangu zpět do vlastnictví hráče",
cmdSetJobVehicle = "Přidat aktuální vozidlo do garáže pro frakci",
cmdRemoveJobVehicle = "Nastavit frakční vozidlo zpět do vlastnictví hráče",
cmdArgGangName = "Název gangu",
cmdArgJobName = "Název jobu",
cmgArgMinGangRank = "Minimální hodnost gangu",
cmgArgMinJobRank = "Minimální pracovní zařazení",
cmdArgPlayerId = "ID hráče nového vlastníka",
cmdImpoundVehicle = "Zabavit vozidlo",
cmdChangePlate = "Změnit registrační značku vozidla (pouze pro administrátory)",
cmdDeleteVeh = "Odstranit vozidlo z databáze (pouze pro administrátory)",
cmdCreatePrivGarage = "Vytvořit soukromou garáž pro hráče",
-- v3
vehicleStoreError = "You cannot store this vehicle here",
mins = "mins",
noVehiclesAvailableToDrive = "There are no vehicles available to drive",
}

View file

@ -0,0 +1,143 @@
Locales = Locales or {}
Locales['da'] = {
yes = "Ja",
no = "Nej",
garage = "Garage",
jobGarage = "Job Garage",
gangGarage = "Bande Garage",
player = "Spiller",
impound = "Impound",
inGarage = "I garage",
notInGarage = "Ikke i garage",
car = "Bil",
air = "Fly",
sea = "Båd",
fuel = "Brændstof",
engine = "Motor",
body = "Karosseri",
day = "dag",
days = "dage",
hour = "time",
hours = "timer",
-- User Interface
noVehicles = "Der er ingen køretøjer i denne garage",
vehicles = "køretøj(er)",
vehiclePlate = "Nummerplade",
vehicleNotInGarage = "Køretøj er ikke i denne garage",
vehicleTakeOut = "Tag ud",
vehicleReturnAndTakeOut = "Parker og tag ud",
vehicleReturnToOwnersGarage = "Send tilbage til ejers garage",
transferToGarageOrPlayer = "Overfør til en garage eller en spiller",
transferToGarage = "Overfør til garage",
transferToPlayer = "Overfør til spiller",
vehicleTransfer = "Overfør",
noAvailableGarages = "Ingen tilgængelige garager",
currentGarage = "Nuværende garage",
noPlayersOnline = "Ingen spillere online",
createPrivateGarage = "Opret privat garage",
pgAlertHeadsUp = "Pas på!",
pgAlertText = "The garage will be created and vehicles will spawn in the exact location and direction are you are currently standing.",
garageName = "Garage Navn",
impoundInformation = "Impound Information",
impoundedBy = "Impoundet af",
impoundedReason = "Grund",
impoundPlayerCanCollect = "Du kan hente dit køretøj hos impound.",
impoundCollectionContact = "Kontakt venligst %{value} for at hente dit køretøj.",
impoundNoVehicles = "Der er ingen køretøjer i dette impound",
impoundAvailable = "Tilgængelig",
impoundRetrievableByOwner = "Kan afhentes af ejer",
impoundNoReason = "Ingen grund angivet",
impoundVehicle = "Impound Køretøj",
impoundReasonField = "Grund (valgfri)",
impoundTime = "Impound Tid",
impoundAvailableImmediately = "Tilgængelig øjeblikkeligt",
impoundCost = "Pris",
changeVehiclePlate = "Skift nummerplade",
newPlate = "Ny nummerplade",
search = "Søg efter navn eller nummerplade",
noPrivateGarages = "Ingen private garager",
editPrivateGarage = "Rediger privat garage",
owners = "Ejer(e)",
location = "Placering",
next = "Næste",
previous = "Tidligere",
page = "Side",
of = "af",
show = "Vis",
save = "Gem",
edit = "Rediger",
delete = "Slet",
garageDeleteConfirm = "Er du sikker på, at du vil slette denne garage?",
privGarageSearch = "Søg efter navn",
garageUpdatedSuccess = "Garagen er blevet opdateret!",
getCurrentCoords = "Hent aktuelle koordinater",
identifier = "Identifikator",
name = "Navn",
noPlayers = "Der er ikke tilføjet nogen spillere",
addPlayer = "Tilføj spiller",
loadingVehicle = "Indlæser køretøj...",
vehicleSetup = "Opsætning af køretøj",
extras = "Ekstraudstyr",
extra = "Ekstra",
liveries = "Liveries",
livery = "Livery",
noLiveries = "Ingen liveries tilgængelige",
noExtras = "Ingen ekstraudstyr til rådighed",
none = "Ingen",
vehicleNeedsService = "Needs Service",
type = "Type",
-- Notifications
insertVehicleTypeError = "Du kan kun opbevare %{value} i denne garage",
insertVehiclePublicError = "You can't store job or gang vehicles in public garages",
vehicleParkedSuccess = "Vehicle parked in garage",
vehicleNotOwnedError = "You don't own this vehicle",
vehicleNotOwnedByPlayerError = "Vehicle is not owned by a player",
notEnoughMoneyError = "Du har ikke nok penge i din bank",
vehicleNotYoursError = "Køretøj tilhører ikke dig",
notJobOrGangVehicle = "Dette er ikke en %{value}",
invalidGangError = "Du har ikke angivet en gyldig bande",
invalidJobError = "Du har ikke givet et gyldigt job",
notInsideVehicleError = "Du sidder ikke i et køretøj",
vehicleAddedToGangGarageSuccess = "Køretøj tilføjet til %{value} bande garagen!",
vehicleAddedToJobGarageSuccess = "Køretøj tilføjet til %{value} job garagen!",
moveCloserToVehicleError = "Du skal være tættere på køretøjet",
noVehiclesNearbyError = "Der er ingen køretøjer i nærheden",
commandPermissionsError = "Du må ikke bruge denne kommando",
actionNotAllowedError = "Du må ikke gøre dette",
garageNameExistsError = "Garagenavn eksisterer allerede",
vehiclePlateExistsError = "Nummerplade er allerede i brug",
playerNotOnlineError = "Spiller er ikke online",
vehicleTransferSuccess = "Køretøj overført til %{value}",
vehicleTransferSuccessGeneral = "Køretøj blev overført",
vehicleReceived = "Du modtog et køretøj med nummerpladen %{value}",
vehicleImpoundSuccess = "Køretøj blev impounded",
vehicleImpoundRemoveSuccess = "Køretøj blev fjernet fra impound",
vehicleImpoundReturnedToOwnerSuccess = "Køretøjet blev returneret til ejerens garage",
garageCreatedSuccess = "Garage oprettet!",
vehiclePlateUpdateSuccess = "Nummerplade ændret til %{value}",
vehicleDeletedSuccess = "Køretøj blev slettet fra databasen %{value}",
playerIsDead = "Du kan ikke gøre dette, mens du er død",
-- Commands
cmdSetGangVehicle = "Tilføj dette køretøj til bandegaragen",
cmdRemoveGangVehicle = "Fjern bandekøretøjet og returner det til ejeren",
cmdSetJobVehicle = "Tilføj dette køretøj til jobgaragen",
cmdRemoveJobVehicle = "Fjern jobkøretøjet og returner det til ejeren",
cmdArgGangName = "Bande navn",
cmdArgJobName = "Job navn",
cmgArgMinGangRank = "Minimum bande rang",
cmgArgMinJobRank = "Minimum jobrangering",
cmdArgPlayerId = "Spiller-ID på ejeren",
cmdImpoundVehicle = "Impound et køretøj",
cmdChangePlate = "Skift nummerplade (Kun admin)",
cmdDeleteVeh = "Fjern køretøj fra databasen (Kun admin)",
cmdCreatePrivGarage = "Opret en privat garage til en spiller",
-- v3
vehicleStoreError = "You cannot store this vehicle here",
mins = "mins",
noVehiclesAvailableToDrive = "There are no vehicles available to drive",
}

View file

@ -0,0 +1,143 @@
Locales = Locales or {}
Locales['de'] = {
yes = "Ja",
no = "Nein",
garage = "Garage",
jobGarage = "Jobgarage",
gangGarage = "Ganggarage",
player = "Spieler",
impound = "Impound",
inGarage = "In der Garage",
notInGarage = "Nicht in der Garage",
car = "Auto",
air = "Flugzeug",
sea = "Boot",
fuel = "Tank",
engine = "Motor",
body = "Schaden",
day = "Tag",
days = "Tage",
hour = "Stunde",
hours = "Stunden",
-- User Interface
noVehicles = "Keine Fahrzeuge in der Garage",
vehicles = "Fahrzeug(e)",
vehiclePlate = "Kennzeichen",
vehicleNotInGarage = "Nicht in der Garage",
vehicleTakeOut = "Ausparken",
vehicleReturnAndTakeOut = "Einparken und Ausparken",
vehicleReturnToOwnersGarage = "Zurück in die Privatgarage",
transferToGarageOrPlayer = "Transfer in eine andere Garage oder an einen Spieler",
transferToGarage = "Transfer in eine andere Garage",
transferToPlayer = "Transfer zu einem Spieler",
vehicleTransfer = "Transfer",
noAvailableGarages = "Keine Verfügbaren Garagen",
currentGarage = "Aktuelle Garage",
noPlayersOnline = "Kein Spieler online",
createPrivateGarage = "Private Garage erstellen",
pgAlertHeadsUp = "Kopf hoch!",
pgAlertText = "Garage wird erstellt und Fahrzeuge spawnen an der Stelle und in die Richtung die du schaust",
garageName = "Garagenname",
impoundInformation = "Impound Information",
impoundedBy = "Beschlagnahmt von",
impoundedReason = "Grund",
impoundPlayerCanCollect = "Fahrzeug kann am Impound ausgelöst werden",
impoundCollectionContact = "Kontaktiere %{value} um dein Fahrzeug auszulösen",
impoundNoVehicles = "Keine Fahrzeuge im Impound",
impoundAvailable = "Verfügbar",
impoundRetrievableByOwner = "Kann vom Eigentümer ausgelöst werden",
impoundNoReason = "Kein Grund angegeben",
impoundVehicle = "Fahrzeug beschlagnahmen",
impoundReasonField = "Grund (optional)",
impoundTime = "Impound Zeit",
impoundAvailableImmediately = "Sofort verfügbar",
impoundCost = "Kosten",
changeVehiclePlate = "Kennzeichen ändern",
newPlate = "Neues Kennzeichen",
search = "Suche nach Name oder Kennzeichen",
noPrivateGarages = "Keine privaten Garagen",
editPrivateGarage = "Private Garage bearbeiten",
owners = "Eigentümer(n)",
location = "Standort",
next = "Weiter",
previous = "Vorherige",
page = "Seite",
of = "von",
show = "Anzeigen",
save = "Speichern Sie",
edit = "Bearbeiten",
delete = "Löschen",
garageDeleteConfirm = "Sind Sie sicher, dass Sie diese Garage löschen wollen?",
privGarageSearch = "Suche nach Name",
garageUpdatedSuccess = "Garage erfolgreich aktualisiert!",
getCurrentCoords = "Aktuelle Koordinaten abrufen",
identifier = "Kennung",
name = "Name",
noPlayers = "Es sind keine Spieler hinzugefügt worden",
addPlayer = "Spieler hinzufügen",
loadingVehicle = "Fahrzeug laden...",
vehicleSetup = "Fahrzeug-Setup",
extras = "Extras",
extra = "Extra",
liveries = "Livreen",
livery = "Leihwagen",
noLiveries = "Keine Lackierungen verfügbar",
noExtras = "Keine Extras verfügbar",
none = "Keine",
vehicleNeedsService = "Needs Service",
type = "Type",
-- Notifications
insertVehicleTypeError = "Du kannst hier nur %{value} einparken",
insertVehiclePublicError = "Du kannst keine Jobfahrzeuge in Öffentliche Garagen einparken",
vehicleParkedSuccess = "Erfolgreich eingeparkt",
vehicleNotOwnedError = "Du hast keinen Schlüssel",
vehicleNotOwnedByPlayerError = "Kein registriertes Fahrzeug",
notEnoughMoneyError = "Nicht genug Geld auf dem Konto",
vehicleNotYoursError = "Fahrzeug gehört nicht dir",
notJobOrGangVehicle = "Kein %{value} Fahrzeug",
invalidGangError = "Keine gültige Gang",
invalidJobError = "Kein gültiger Job",
notInsideVehicleError = "Du sitzt nicht in einem Fahrzeug",
vehicleAddedToGangGarageSuccess = "Fahrzeug zur %{value} Ganggarage hinzugefügt",
vehicleAddedToJobGarageSuccess = "Fahrzeug zur %{value} Jobgarage hinzugefügt",
moveCloserToVehicleError = "Du musst näher ans Fahrzeug",
noVehiclesNearbyError = "Kein Fahrzeug in der nähe",
commandPermissionsError = "Keine Berechtigung für diesen Command",
actionNotAllowedError = "Keine Berechtigung",
garageNameExistsError = "Garagenname exestiert bereites",
vehiclePlateExistsError = "Kennzeichen exestiert bereites",
playerNotOnlineError = "Spieler ist offline",
vehicleTransferSuccess = "Fahrzeug an %{value} übertragen",
vehicleTransferSuccessGeneral = "Fahrzeug erfolgreich übertragen",
vehicleReceived = "Fahrzeug mit dem Kennzeichen %{value} erhalten",
vehicleImpoundSuccess = "Fahrzeug erfolgreich beschlagnahmt",
vehicleImpoundRemoveSuccess = "Fahrzeug wurde aus dem Impound ausgelöst",
vehicleImpoundReturnedToOwnerSuccess = "Fahrzeug zurück in der Eigentümergarage",
garageCreatedSuccess = "Garage erfolgreich erstellt",
vehiclePlateUpdateSuccess = "Kennzeichen wurde zu %{value} geändert",
vehicleDeletedSuccess = "Fahrzeug aus der Datenbank %{value} gelöscht",
playerIsDead = "Sie können dies nicht tun, während Sie tot sind",
-- Commands
cmdSetGangVehicle = "Aktuelles Fahrzeug einer Ganggarage hinzufügen",
cmdRemoveGangVehicle = "Setze das Gang-Fahrzeug wieder in den Besitz des Spielers",
cmdSetJobVehicle = "Aktuelles Fahrzeug einer Jobgarage hinzufügen",
cmdRemoveJobVehicle = "Setze das Job-Fahrzeug wieder in den Besitz des Spielers",
cmdArgGangName = "Gangname",
cmdArgJobName = "Jobname",
cmgArgMinGangRank = "Minimaler Gangrang",
cmgArgMinJobRank = "Mindestjobrang",
cmdArgPlayerId = "Spieler ID vom Eigentümer",
cmdImpoundVehicle = "Fahrzeug beschlagnahmen",
cmdChangePlate = "Kennzeichen ändern (Admin only)",
cmdDeleteVeh = "Fahrzeug aus der Datenbank löschen (Admin only)",
cmdCreatePrivGarage = "Private Garage erstellen",
-- v3
vehicleStoreError = "You cannot store this vehicle here",
mins = "mins",
noVehiclesAvailableToDrive = "There are no vehicles available to drive",
}

View file

@ -0,0 +1,142 @@
Locales = Locales or {}
Locales['en'] = {
yes = "Yes",
no = "No",
garage = "Garage",
jobGarage = "Job Garage",
gangGarage = "Gang Garage",
player = "Player",
impound = "Impound",
inGarage = "In garage",
notInGarage = "Not in garage",
car = "Car",
air = "Air",
sea = "Sea",
fuel = "Fuel",
engine = "Engine",
body = "Body",
day = "day",
days = "days",
hour = "hour",
hours = "hours",
mins = "mins",
-- User Interface
noVehicles = "There are no vehicles in this garage",
noVehiclesAvailableToDrive = "There are no vehicles available to drive",
vehicles = "vehicle(s)",
vehiclePlate = "Vehicle Plate",
vehicleNotInGarage = "Vehicle has been left out",
vehicleTakeOut = "Drive",
vehicleReturnAndTakeOut = "Return & Drive",
vehicleReturnToOwnersGarage = "Return to Owner's Garage",
transferToGarageOrPlayer = "Transfer to a Garage or Player",
transferToGarage = "Transfer to a Garage",
transferToPlayer = "Transfer to a Player",
vehicleTransfer = "Transfer",
noAvailableGarages = "No available garages",
currentGarage = "Current garage",
noPlayersOnline = "No players online",
createPrivateGarage = "Create Private Garage",
pgAlertHeadsUp = "Heads up!",
pgAlertText = "The garage will be created and vehicles will spawn in the exact location and direction are you are currently standing.",
garageName = "Garage Name",
impoundInformation = "Impound Information",
impoundedBy = "Impounded by",
impoundedReason = "Reason",
impoundPlayerCanCollect = "You can collect your vehicle from the impound.",
impoundCollectionContact = "Please contact %{value} in order to collect your vehicle.",
impoundNoVehicles = "There are no vehicles in the impound",
impoundAvailable = "Available",
impoundRetrievableByOwner = "Retrievable by owner",
impoundNoReason = "No reason provided",
impoundVehicle = "Impound Vehicle",
impoundReasonField = "Reason (optional)",
impoundTime = "Impound Time",
impoundAvailableImmediately = "Available immediately",
impoundCost = "Cost",
changeVehiclePlate = "Change Vehicle Plate",
newPlate = "New Plate",
search = "Search by name or plate",
noPrivateGarages = "No private garages",
editPrivateGarage = "Edit Private Garage",
owners = "Owner(s)",
location = "Location",
next = "Next",
previous = "Previous",
page = "Page",
of = "of",
show = "Show",
save = "Save",
edit = "Edit",
delete = "Delete",
garageDeleteConfirm = "Are you sure you want to delete this garage?",
privGarageSearch = "Search by name",
garageUpdatedSuccess = "Garage successfully updated!",
getCurrentCoords = "Get current coordinates",
identifier = "Identifier",
name = "Name",
noPlayers = "There are no players added",
addPlayer = "Add player",
loadingVehicle = "Loading vehicle...",
vehicleSetup = "Vehicle Setup",
extras = "Extras",
extra = "Extra",
liveries = "Liveries",
livery = "Livery",
noLiveries = "No liveries available",
noExtras = "No extras available",
none = "None",
vehicleNeedsService = "Needs Service",
type = "Type",
goInside = "Go inside",
-- Notifications
insertVehicleTypeError = "You can only store %{value} vehicle types in this garage",
insertVehiclePublicError = "You can't store job or gang vehicles in public garages",
vehicleParkedSuccess = "Vehicle parked in garage",
vehicleNotOwnedError = "You don't own this vehicle",
vehicleNotOwnedByPlayerError = "Vehicle is not owned by a player",
notEnoughMoneyError = "You don't have enough money in your bank",
vehicleNotYoursError = "Vehicle does not belong to you",
notJobOrGangVehicle = "This is not a %{value} vehicle",
invalidGangError = "You have not provided a valid gang",
invalidJobError = "You have not provided a valid job",
notInsideVehicleError = "You are not sat in a vehicle",
vehicleAddedToGangGarageSuccess = "Vehicle added to the %{value} gang garage!",
vehicleAddedToJobGarageSuccess = "Vehicle added to the %{value} job garage!",
moveCloserToVehicleError = "You need to move closer to the vehicle",
noVehiclesNearbyError = "There are no vehicles nearby",
commandPermissionsError = "You are not allowed to use this command",
actionNotAllowedError = "You are not allowed to do this",
garageNameExistsError = "Garage name already exists",
vehiclePlateExistsError = "Vehicle plate is already in use",
playerNotOnlineError = "Player is not online",
vehicleTransferSuccess = "Vehicle transferred to %{value}",
vehicleTransferSuccessGeneral = "Vehicle successfully transferred",
vehicleReceived = "You recieved a vehicle with the plate %{value}",
vehicleImpoundSuccess = "Vehicle successfully impounded",
vehicleImpoundRemoveSuccess = "Vehicle removed from impound",
vehicleImpoundReturnedToOwnerSuccess = "Vehicle returned to owner's garage",
garageCreatedSuccess = "Garage successfully created!",
vehiclePlateUpdateSuccess = "Vehicle plate set to %{value}",
vehicleDeletedSuccess = "Vehicle deleted from database %{value}",
playerIsDead = "You cannot do this while you are dead",
vehicleStoreError = "You cannot store this vehicle here",
-- Commands
cmdSetGangVehicle = "Add current vehicle to a gang garage",
cmdRemoveGangVehicle = "Set gang vehicle back to player owned",
cmdSetJobVehicle = "Add current vehicle to a job garage",
cmdRemoveJobVehicle = "Set job vehicle back to player owned",
cmdArgGangName = "Gang name",
cmdArgJobName = "Job name",
cmgArgMinGangRank = "Minimum gang rank",
cmgArgMinJobRank = "Minimum job rank",
cmdArgPlayerId = "Player ID of new owner",
cmdImpoundVehicle = "Impound a vehicle",
cmdChangePlate = "Change vehicle plate (Admin only)",
cmdDeleteVeh = "Delete vehicle from database (Admin only)",
cmdCreatePrivGarage = "Create a private garage for a player",
}

View file

@ -0,0 +1,141 @@
Locales = Locales or {}
Locales['es'] = {
yes = "Si",
no = "No",
garage = "Garaje",
jobGarage = "Garaje Laboral",
gangGarage = "Garaje de Banda/Pandilla",
player = "Jugador",
impound = "Deposito",
inGarage = "En Garaje",
notInGarage = "No en Garaje",
car = "Coche",
air = "Aereo",
sea = "Maritimo",
fuel = "Combustible",
engine = "Motor",
body = "Carroceria",
day = "dia",
days = "dias",
hour = "hora",
hours = "horas",
-- User Interface
noVehicles = "No hay vehículos en este garaje.",
vehicles = "Vehículo(s)",
vehiclePlate = "Matrícula del Vehículo",
vehicleNotInGarage = "Vehículo no en garaje",
vehicleTakeOut = "Conducir",
vehicleReturnAndTakeOut = "Devuelve y Conduce",
vehicleReturnToOwnersGarage = "Devolver al garaje del propietario",
transferToGarageOrPlayer = "Transferir a Garaje o Jugador",
transferToGarage = "Transferir a un Garaje",
transferToPlayer = "Transferir a un Jugador",
vehicleTransfer = "Transferir",
noAvailableGarages = "No hay garajes disponibles",
currentGarage = "Garaje Actual",
noPlayersOnline = "No hay jugadores en línea",
createPrivateGarage = "Crear Garaje Privado",
pgAlertHeadsUp = "Advertencia!",
pgAlertText = "Se creará el garaje y los vehículos aparecerán en la ubicación y dirección exactas en las que se encuentra actualmente.",
garageName = "Nombre del Garaje",
impoundInformation = "Información de Incautacion",
impoundedBy = "Incautado por ",
impoundedReason = "Razón",
impoundPlayerCanCollect = "Puedes recoger tu vehículo en el depósito.",
impoundCollectionContact = "Haga el favor de contactar con %{value} para poder reclamar su vehiculo.",
impoundNoVehicles = "No hay vehículos en el depósito.",
impoundAvailable = "Disponible",
impoundRetrievableByOwner = "Recuperable por el propietario",
impoundNoReason = "No se proporcionó ninguna razón",
impoundVehicle = "Incautar Vehiculo",
impoundReasonField = "Razon (opcional)",
impoundTime = "Tiempo de Incautacion",
impoundAvailableImmediately = "Disponible inmediatamente",
impoundCost = "Coste",
changeVehiclePlate = "Cambio de Matricula",
newPlate = "Matricula Nueva",
search = "Buscar por nombre o placa",
noPrivateGarages = "Sin garajes privados",
editPrivateGarage = "Editar Garaje Privado",
owners = "Propietario(s)",
location = "Ubicación",
next = "Siguiente",
previous = "Anterior",
page = "Página",
of = "de",
show = "Mostrar",
save = "Guardar",
edit = "Editar",
delete = "Borrar",
garageDeleteConfirm = "¿Estás seguro de que quieres borrar este garaje?",
privGarageSearch = "Buscar por nombre",
garageUpdatedSuccess = "¡Garaje actualizado con éxito!",
getCurrentCoords = "Obtener coordenadas actuales",
identifier = "Identificador",
name = "Nombre",
noPlayers = "No hay jugadores añadidos",
addPlayer = "Añadir jugador",
loadingVehicle = "Cargando vehículo...",
vehicleSetup = "Configuración del vehículo",
extras = "Extras",
extra = "Extra",
liveries = "Diseños",
livery = "Vinilo",
noLiveries = "No hay vinilos disponibles",
noExtras = "No hay extras disponibles",
none = "Ninguno",
vehicleNeedsService = "Needs Service",
type = "Type",
-- Notifications
insertVehicleTypeError = "Solo puedes almacenar vehículos de tipo %{value} en este garaje",
insertVehiclePublicError = "No puede almacenar vehículos de trabajo o de banda en garajes públicos",
vehicleParkedSuccess = "Vehículo estacionado en garaje",
vehicleNotOwnedError = "No eres dueño de este vehículo",
vehicleNotOwnedByPlayerError = "El vehículo no es propiedad de un jugador.",
notEnoughMoneyError = "No tienes suficiente dinero en tu banco",
vehicleNotYoursError = "El vehículo no te pertenece",
notJobOrGangVehicle = "Este no es un vehículo de %{value}",
invalidGangError = "No ha proporcionado una banda válida",
invalidJobError = "No ha proporcionado un trabajo válido",
notInsideVehicleError = "No estás sentado en un vehículo.",
vehicleAddedToGangGarageSuccess = "Vehículo agregado al garaje de banda de %{value}!",
vehicleAddedToJobGarageSuccess = "Vehículo agregado al taller de trabajo de %{value}!",
moveCloserToVehicleError = "Necesitas acercarte al vehículo.",
noVehiclesNearbyError = "No hay vehículos cerca.",
commandPermissionsError = "No tienes permiso para usar este comando.",
actionNotAllowedError = "No tienes permitido hacer esto.",
garageNameExistsError = "El nombre del garaje ya existe",
vehiclePlateExistsError = "La placa del vehículo ya está en uso",
playerNotOnlineError = "El jugador no está en línea",
vehicleTransferSuccess = "Vehículo transferido a %{value}",
vehicleTransferSuccessGeneral = "Vehículo transferido con éxito",
vehicleReceived = "Recibiste un vehículo con matricula %{value}",
vehicleImpoundSuccess = "Vehículo incautado con éxito",
vehicleImpoundRemoveSuccess = "Vehículo retirado del depósito",
vehicleImpoundReturnedToOwnerSuccess = "Vehículo devuelto al garaje del propietario.",
garageCreatedSuccess = "¡Garaje creado con éxito!",
vehiclePlateUpdateSuccess = "Matrícula del vehículo establecida a %{value}",
vehicleDeletedSuccess = "Vehículo eliminado de la base de datos %{value}",
playerIsDead = "No puedes hacer esto mientras estás muerto",
-- Commands
cmdSetGangVehicle = "Agregar el vehículo actual a un garaje de banda",
cmdRemoveGangVehicle = "Devolver el vehículo de la banda a propiedad del jugador",
cmdSetJobVehicle = "Agregar vehículo actual a un taller de trabajo",
cmdRemoveJobVehicle = "Devolver el vehículo de trabajo a propiedad del jugador",
cmdArgGangName = "Nombre de Banda",
cmdArgJobName = "Nombre de Trabajo",
cmdArgPlayerId = "ID de Jugador del nuevo propietario",
cmdImpoundVehicle = "Incautar un Vehículo",
cmdChangePlate = "Cambiar Matricula del Vehiculo (Solo Administracion)",
cmdDeleteVeh = "Eliminar vehículo de la base de datos (Solo Administracion)",
cmdCreatePrivGarage = "Crea un garaje privado para un jugador.",
-- v3
vehicleStoreError = "You cannot store this vehicle here",
mins = "mins",
noVehiclesAvailableToDrive = "There are no vehicles available to drive",
}

View file

@ -0,0 +1,143 @@
Locales = Locales or {}
Locales['fi'] = {
yes = "Kyllä",
no = "Ei",
garage = "Autotalli",
jobGarage = "Työn Autotalli",
gangGarage = "Jengin Autotalli",
player = "Pelaaja",
impound = "Varikko",
inGarage = "Autotallissa",
notInGarage = "Ulkona tallista",
car = "Maa Ajoneuvo",
air = "Ilma Ajoneuvo",
sea = "Vesi Ajoneuvo",
fuel = "Bensa",
engine = "Moottori",
body = "Keho",
day = "päivä",
days = "päivät",
hour = "tunti",
hours = "tunnit",
-- User Interface
noVehicles = "Ei ajoneuvoja tallissa",
vehicles = "Ajoneuvot",
vehiclePlate = "Rekisterikilpi",
vehicleNotInGarage = "Ajoneuvo ei ole tallissa",
vehicleTakeOut = "Aja",
vehicleReturnAndTakeOut = "Palauta talliin ja aja",
vehicleReturnToOwnersGarage = "Palauta omistajan talliin",
transferToGarageOrPlayer = "Siirrä autotalliin tai pelaajalle",
transferToGarage = "Siirrä autotalliin",
transferToPlayer = "Siirrä pelaajalle",
vehicleTransfer = "Siirrä",
noAvailableGarages = "Ei vapaita autotalleja",
currentGarage = "Tämän hetkinen talli",
noPlayersOnline = "Ei pelaajia kaupungissa",
createPrivateGarage = "Luo yksityinen autotalli",
pgAlertHeadsUp = "Heads up!",
pgAlertText = "The garage will be created and vehicles will spawn in the exact location and direction are you are currently standing.",
garageName = "Autotallin nimi",
impoundInformation = "Varkki tiedot",
impoundedBy = "Varikoijja",
impoundedReason = "Syy",
impoundPlayerCanCollect = "Voit hakea ajoneuvosi varikolta.",
impoundCollectionContact = "Ota yhteyttä %{value} saadaksesi ajoneuvon takaisin.",
impoundNoVehicles = "Ei ajoneivoja varikolla",
impoundAvailable = "Vapaa",
impoundRetrievableByOwner = "Omistaja voi hakea",
impoundNoReason = "Syytä ei ole annettu",
impoundVehicle = "Takavarikoi ajoneuvo",
impoundReasonField = "Syy",
impoundTime = "Varikoinnin pituus",
impoundAvailableImmediately = "Saatavilla heti",
impoundCost = "Hinta",
changeVehiclePlate = "Vaihda ajoneuvon kilpeä",
newPlate = "Uusi kilpi",
search = "Hae nimellä tai ajoneuvokilven mukaan",
noPrivateGarages = "Ei yksityisiä autotalleja",
editPrivateGarage = "Edit Yksityinen autotalli",
owners = "Omistaja(t)",
location = "Sijainti",
next = "Seuraava",
previous = "Edellinen",
page = "Sivu",
of = "of",
show = "Näytä",
save = "Tallenna",
edit = "Muokkaa",
delete = "Poista",
garageDeleteConfirm = "Haluatko varmasti poistaa tämän autotallin?",
privGarageSearch = "Haku nimen mukaan",
garageUpdatedSuccess = "Autotalli onnistuneesti päivitetty!",
getCurrentCoords = "Hae nykyiset koordinaatit",
identifier = "Tunniste",
name = "Nimi",
noPlayers = "Pelaajia ei ole lisätty",
addPlayer = "Lisää pelaaja",
loadingVehicle = "Ajoneuvon lastaus...",
vehicleSetup = "Ajoneuvon asennus",
extras = "Lisävarusteet",
extra = "Extra",
liveries = "maalaukset",
livery = "maksullisuus",
noLiveries = "Maalauksia ei ole saatavilla",
noExtras = "Ei lisävarusteita saatavilla",
none = "Ei ole",
vehicleNeedsService = "Needs Service",
type = "Type",
-- Notifications
insertVehicleTypeError = "Voit ainoastaan tallettaa %{value} ajoneuvo tyyppejä tähän talliin",
insertVehiclePublicError = "Et voi tallettaa työn ajoneuvoja julkisiin talleihin",
vehicleParkedSuccess = "Ajoneuvo parkkeerattu talliin",
vehicleNotOwnedError = "Et omista tätä autoa",
vehicleNotOwnedByPlayerError = "Pelaaja ei omista tätä autoa",
notEnoughMoneyError = "Ei tarpeeksi rahaa pankissa",
vehicleNotYoursError = "Et omista ajoneuvoa",
notJobOrGangVehicle = "Tämä ei ole %{value} ajoneuvo",
invalidGangError = "You have not provided a valid gang",
invalidJobError = "You have not provided a valid job",
notInsideVehicleError = "Et ole ajoneuvossa",
vehicleAddedToGangGarageSuccess = "Vehicle added to the %{value} gang garage!",
vehicleAddedToJobGarageSuccess = "Vehicle added to the %{value} job garage!",
moveCloserToVehicleError = "Mene lähemmäs ajoneuvoa",
noVehiclesNearbyError = "Ei autoja lähellä",
commandPermissionsError = "Et saa käyttää tätä komentoa",
actionNotAllowedError = "Et saa tehdä tätä",
garageNameExistsError = "Tallin nimi on jo olemassa",
vehiclePlateExistsError = "Ajoneuvon kilpi on jo käytössä",
playerNotOnlineError = "Pelaaja ei ole kaupungissa",
vehicleTransferSuccess = "Ajoneuvo on siirretty: %{value}",
vehicleTransferSuccessGeneral = "Ajoneuvo on onnistuneesti siirretty",
vehicleReceived = "Sait ajoneuvon kilvellä %{value}",
vehicleImpoundSuccess = "Ajoneuvo on onnistuneesti Takavarikoitu",
vehicleImpoundRemoveSuccess = "Ajoneuvo on poistettu takavatikolta",
vehicleImpoundReturnedToOwnerSuccess = "Ajoneuvo on palautettu omistajan talliin",
garageCreatedSuccess = "Autotalli onnistuneesti luotu!",
vehiclePlateUpdateSuccess = "Ajoneuvon kilpi on laitettu %{value}",
vehicleDeletedSuccess = "Ajoneuvo on poistettu databasesta %{value}",
playerIsDead = "Et voi tehdä tätä, kun olet kuollut",
-- Commands
cmdSetGangVehicle = "Add current vehicle to a gang garage",
cmdRemoveGangVehicle = "Set gang vehicle back to player owned",
cmdSetJobVehicle = "Add current vehicle to a job garage",
cmdRemoveJobVehicle = "Set job vehicle back to player owned",
cmdArgGangName = "Gang name",
cmdArgJobName = "Job name",
cmgArgMinGangRank = "Minimum gang rank",
cmgArgMinJobRank = "Minimum job rank",
cmdArgPlayerId = "Player ID of new owner",
cmdImpoundVehicle = "Impound a vehicle",
cmdChangePlate = "Change vehicle plate (Admin only)",
cmdDeleteVeh = "Delete vehicle from database (Admin only)",
cmdCreatePrivGarage = "Create a private garage for a player",
-- v3
vehicleStoreError = "You cannot store this vehicle here",
mins = "mins",
noVehiclesAvailableToDrive = "There are no vehicles available to drive",
}

View file

@ -0,0 +1,142 @@
Locales = Locales or {}
Locales['fr'] = {
yes = "Oui",
no = "Non",
garage = "Garage",
jobGarage = "Garage métier",
gangGarage = "Garage Gang",
player = "Joueurs",
impound = "Fourriere",
inGarage = "Dans le garage",
notInGarage = "Pas dans le garage",
car = "Voiture",
air = "Air",
sea = "Mer",
fuel = "Essence",
engine = "Moteur",
body = "Carroserie",
day = "Jour",
days = "Jours",
hour = "Heure",
hours = "Heures",
mins = "mins",
-- User Interface
noVehicles = "Il n'y a aucun véhicule dans ce garage",
noVehiclesAvailableToDrive = "Aucun véhicule n'est disponible pour conduire",
vehicles = "Voiture(s)",
vehiclePlate = "Plaque du véhicule",
vehicleNotInGarage = "Le véhicule a été laissé de côté",
vehicleTakeOut = "Conduire",
vehicleReturnAndTakeOut = "Retour et conduite",
vehicleReturnToOwnersGarage = "Retour au garage du propriétaire",
transferToGarageOrPlayer = "Transfert vers un garage ou un joueur",
transferToGarage = "Transfert vers un garage",
transferToPlayer = "Transférer vers un joueur",
vehicleTransfer = "Transfert",
noAvailableGarages = "Aucun garage disponible",
currentGarage = "Garage actuel",
noPlayersOnline = "Aucun joueur en ligne",
createPrivateGarage = "Créer un garage privé",
pgAlertHeadsUp = "Attention !",
pgAlertText = "Le garage sera créé et les véhicules apparaîtront à l'emplacement et dans la direction exacts où vous vous trouvez actuellement.",
garageName = "Nom du garage",
impoundInformation = "Informations de mise en fourrière",
impoundedBy = "Mise en fourrière par",
impoundedReason = "Raison",
impoundPlayerCanCollect = "Vous pouvez récupérer votre véhicule à la fourrière.",
impoundCollectionContact = "Veuillez contacter %{value} afin de récupérer votre véhicule.",
impoundNoVehicles = "Il n'y a aucun véhicule dans la fourrière",
impoundAvailable = "Disponible",
impoundRetrievableByOwner = "Récupérable par le propriétaire",
impoundNoReason = "Aucune raison fournie",
impoundVehicle = "Véhicule mis en fourrière",
impoundReasonField = "Raison (facultatif)",
impoundTime = "Durée de mise en fourrière",
impoundAvailableImmediately = "Disponible immédiatement",
impoundCost = "Coût",
changeVehiclePlate = "Changer la plaque du véhicule",
newPlate = "Nouvelle plaque",
search = "Recherche par nom ou plaque",
noPrivateGarages = "Pas de garages privés",
editPrivateGarage = "Modifier le garage privé",
owners = "Propriétaire(s)",
location = "Location",
next = "Suivant",
previous = "Precedent",
page = "Page",
of = "de",
show = "Montrer",
save = "Sauvegarde",
edit = "Editer",
delete = "Supprimer",
garageDeleteConfirm = "Etes-vous sûr de vouloir supprimer ce garage ?",
privGarageSearch = "Rechercher par nom",
garageUpdatedSuccess = "Garage mis à jour avec succès !",
getCurrentCoords = "Obtenir les coordonnées actuelles",
identifier = "Identifiant",
name = "Nom",
noPlayers = "Aucun joueur n'a été ajouté",
addPlayer = "Ajouter un joueur",
chargementVehicle = "Chargement du véhicule...",
vehicleSetup = "Configuration du véhicule",
extras = "Suppléments",
extra = "Supplément",
liveries = "Livrées",
livery = "Livrée",
noLiveries = "Aucune livrée disponible",
noExtras = "Aucun extra disponible",
none = "Aucun(e)",
vehicleNeedsService = "Besoin de services",
type = "Genre",
goInside = "Aller à l'intérieur",
-- Notifications
insertVehicleTypeError = "Vous ne pouvez stocker que %{value} types de véhicules dans ce garage",
insertVehiclePublicError = "Vous ne pouvez pas stocker de véhicules de travail ou de gang dans les garages publics",
vehicleParkedSuccess = "Véhicule garé dans le garage",
vehicleNotOwnedError = "Vous n'êtes pas propriétaire de ce véhicule",
vehicleNotOwnedByPlayerError = "Le véhicule n'appartient à aucun joueur",
notEnoughMoneyError = "Vous n'avez pas assez d'argent en banque",
vehicleNotYoursError = "Le véhicule ne vous appartient pas",
notJobOrGangVehicle = "Ceci n'est pas un véhicule %{value}",
invalidGangError = "Vous n'avez pas fourni de gang valide",
invalidJobError = "Vous n'avez pas fourni d'emploi valide",
notInsideVehicleError = "Vous n'êtes pas assis dans un véhicule",
vehicleAddedToGangGarageSuccess = "Véhicule ajouté au garage du gang %{value} !",
vehicleAddedToJobGarageSuccess = "Véhicule ajouté au garage de travail %{value} !",
moveCloserToVehicleError = "Vous devez vous rapprocher du véhicule",
noVehiclesNearbyError = "Il n'y a aucun véhicule à proximité",
commandPermissionsError = "Vous n'êtes pas autorisé à utiliser cette commande",
actionNotAllowedError = "Vous n'êtes pas autorisé à faire cela",
garageNameExistsError = "Le nom du garage existe déjà",
VehiclePlateExistsError = "La plaque du véhicule est déjà utilisée",
playerNotOnlineError = "Le joueur n'est pas en ligne",
vehicleTransferSuccess = "Véhicule transféré à %{value}",
vehicleTransferSuccessGeneral = "Véhicule transféré avec succès",
vehicleReceived = "Vous avez reçu un véhicule avec la plaque %{value}",
vehicleImpoundSuccess = "Véhicule mis en fourrière avec succès",
vehicleImpoundRemoveSuccess = "Véhicule retiré de la fourrière",
vehicleImpoundReturnedToOwnerSuccess = "Véhicule restitué au garage du propriétaire",
garageCreatedSuccess = "Garage créé avec succès !",
vehiclePlateUpdateSuccess = "Plaque du véhicule réglée sur %{value}",
vehicleDeletedSuccess = "Véhicule supprimé de la base de données %{value}",
playerIsDead = "Vous ne pouvez pas faire ça tant que vous êtes mort",
vehicleStoreError = "Vous ne pouvez pas stocker ce véhicule ici",
-- Commands
cmdSetGangVehicle = "Ajouter le véhicule actuel à un garage collectif",
cmdRemoveGangVehicle = "Remettre le véhicule du gang comme appartenant au joueur",
cmdSetJobVehicle = "Ajouter le véhicule actuel à un garage",
cmdRemoveJobVehicle = "Remettre le véhicule de travail comme appartenant au joueur",
cmdArgGangName = "Nom du gang",
cmdArgJobName = "Nom du travail",
cmgArgMinGangRank = "Rang minimum du gang",
cmgArgMinJobRank = "Classement minimum du poste",
cmdArgPlayerId = "ID du joueur du nouveau propriétaire",
cmdImpoundVehicle = "Mise en fourrière d'un véhicule",
cmdChangePlate = "Changer la plaque du véhicule (Administrateur uniquement)",
cmdDeleteVeh = "Supprimer le véhicule de la base de données (Administrateur uniquement)",
cmdCreatePrivGarage = "Créer un garage privé pour un joueur",
}

View file

@ -0,0 +1,143 @@
Locales = Locales or {} -- Translated by: PSYCHO#0281 (psycho0281)
Locales['hu'] = { -- Erre a sorra is figyelj oda!!! Ez nem en.lua, hanem hu.lua, ezt fxmanifest, vagy resource lua-ban is említeni kell :)
yes = "Igen",
no = "Nem",
garage = "Garázs",
jobGarage = "Munka garázs",
gangGarage = "Banda garázs",
player = "Játékos",
impound = "Lefoglalt",
inGarage = "Garázsban",
notInGarage = "Nincs a garázsban",
car = "Autó",
air = "Repülő",
sea = "Hajó",
fuel = "Üzemanyag",
engine = "Motor",
body = "Karosszéria",
day = "nap",
days = "napok",
hour = "óra",
hours = "órák",
-- User Interface
noVehicles = "Ebben a garázsban nincsenek járművek",
vehicles = "jármű(vek)",
vehiclePlate = "Rendszám",
vehicleNotInGarage = "A jármű nincs garázsban",
vehicleTakeOut = "Vezetés",
vehicleReturnAndTakeOut = "Vissza és vezetés",
vehicleReturnToOwnersGarage = "Visszarakás a tulajdonos garázsába",
transferToGarageOrPlayer = "Átszállítás egy garázsba vagy a játékosnak",
transferToGarage = "Átszállítás garázsba",
transferToPlayer = "Átszállítás játékosnak",
vehicleTransfer = "Átadás",
noAvailableGarages = "Nincs szabad garázs",
currentGarage = "Jelenlegi garázs",
noPlayersOnline = "Nincs ilyen elérhető játékos",
createPrivateGarage = "Privát garázs készítése",
pgAlertHeadsUp = "Fel a fejjel!",
pgAlertText = "A garázs létrejön, és a járművek pontosan azon a helyen és irányban fognak megjelenni, ahol éppen áll.",
garageName = "Garázs neve",
impoundInformation = "Lefoglaltak információ",
impoundedBy = "Lefoglalta",
impoundedReason = "Indok",
impoundPlayerCanCollect = "Gépkocsiját átveheti a lefoglaltakban.",
impoundCollectionContact = "Kérjük, vegye fel a kapcsolatot %{value} a jármű átvétele érdekében.",
impoundNoVehicles = "Nincs lefoglalt autó",
impoundAvailable = "Elérhető",
impoundRetrievableByOwner = "Tulajdonos által átvehető",
impoundNoReason = "Indoklás nélkül",
impoundVehicle = "Lefoglalt jármű",
impoundReasonField = "Indok (nem kötelező)",
impoundTime = "Lefoglalt idő",
impoundAvailableImmediately = "Azonnal elérhető",
impoundCost = "Költség",
changeVehiclePlate = "Rendszámtábla cserélése",
newPlate = "Új rendszám",
search = "Keresés név vagy rendszám alapján",
noPrivateGarages = "Nincs privát garázsod",
editPrivateGarage = "Privát garázs szerkesztése",
owners = "Tulajdonos(ok)",
location = "Elhelyezkedés",
next = "Következő",
previous = "Előző",
page = "Oldal",
of = "nak,-nek",
show = "Mutatás",
save = "Mentés",
edit = "Szerkesztés",
delete = "Törlés",
garageDeleteConfirm = "Biztosan törli ezt a garázst?",
privGarageSearch = "Keresés név alapján",
garageUpdatedSuccess = "Garázs sikeresen frissítve!",
getCurrentCoords = "Jelenlegi koordináták lekérdezése",
identifier = "Azonosító",
name = "Név",
noPlayers = "Nincsenek hozzáadott játékosok",
addPlayer = "Játékos hozzáadása",
loadingVehicle = "Jármű betöltése...",
vehicleSetup = "Járműbeállítás",
extras = "Extrák",
extra = "Extra",
liveries = "Festések",
livery = "Festés",
noLiveries = "Nincs elérhető festés",
noExtras = "Nincsenek extrák",
none = "Semmi",
vehicleNeedsService = "Needs Service",
type = "Type",
-- Notifications
insertVehicleTypeError = "Ebben a garázsban csak %{value} járműtípusokat tárolhat",
insertVehiclePublicError = "Nem tárolhat munkahelyi vagy bandajárműveket nyilvános garázsokban",
vehicleParkedSuccess = "Jármű leparkolva",
vehicleNotOwnedError = "Nem Ön a tulajdonosa ennek a járműnek",
vehicleNotOwnedByPlayerError = "A jármű nem játékos tulajdonában van",
notEnoughMoneyError = "Nincs elég pénzed a bankodban",
vehicleNotYoursError = "A jármű nem az Öné",
notJobOrGangVehicle = "Ez nem %{value} jármű",
invalidGangError = "Nem adott meg érvényes bandát",
invalidJobError = "Nem adott meg érvényes állást",
notInsideVehicleError = "Nem ülsz járműben",
vehicleAddedToGangGarageSuccess = "A jármű bekerült a %{value} banda garázsba!",
vehicleAddedToJobGarageSuccess = "A jármű bekerült a %{value} munka garázsba!",
moveCloserToVehicleError = "Közelebb kell mennie a járműhöz",
noVehiclesNearbyError = "A közelben nincsenek járművek",
commandPermissionsError = "Nem használhatja ezt a parancsot",
actionNotAllowedError = "Ehhez nincs engedélye",
garageNameExistsError = "A garázsnév már létezik",
vehiclePlateExistsError = "A jármű táblája már használatban van",
playerNotOnlineError = "Játékos nincs online",
vehicleTransferSuccess = "Jármű átadva neki: %{value}",
vehicleTransferSuccessGeneral = "A jármű sikeresen átadva",
vehicleReceived = "Te kaptál egy járművet, ezzel a rendszámmal %{value}",
vehicleImpoundSuccess = "Sikeresen lefoglalták a járművet",
vehicleImpoundRemoveSuccess = "Sikeresen kilett véve a lefoglaltakból",
vehicleImpoundReturnedToOwnerSuccess = "A jármű visszakerült a tulajdonos garázsába",
garageCreatedSuccess = "Garázs sikeresen létrehozva!",
vehiclePlateUpdateSuccess = "Rendszám beállítva erre: %{value}",
vehicleDeletedSuccess = "Jármű törölve az adatbázisból %{value}",
playerIsDead = "Ezt nem teheted, amíg halott vagy",
-- Commands
cmdSetGangVehicle = "Jelenlegi jármű hozzáadása a banda garázshoz",
cmdRemoveGangVehicle = "Banda garázsból visszarakás a játékos tulajdonába",
cmdSetJobVehicle = "Jelenlegi jármű hozzáadása a munka garázshoz",
cmdRemoveJobVehicle = "Munka garázsból visszarakás a játékos tulajdonába",
cmdArgGangName = "Banda neve",
cmdArgJobName = "Mubka neve",
cmgArgMinGangRank = "Minimum banda rang",
cmgArgMinJobRank = "Minimum beosztás",
cmdArgPlayerId = "Az új tulajdonos játékosazonosítója",
cmdImpoundVehicle = "Jármű lefoglalása",
cmdChangePlate = "Rendszámtábla cseréje (csak rendszergazda)",
cmdDeleteVeh = "Jármű törlése az adatbázisból (csak rendszergazda)",
cmdCreatePrivGarage = "Privát garázs létrehozása egy játékos számára",
-- v3
vehicleStoreError = "You cannot store this vehicle here",
mins = "mins",
noVehiclesAvailableToDrive = "There are no vehicles available to drive",
}

View file

@ -0,0 +1,143 @@
Locales = Locales or {}
Locales['it'] = {
yes = "Si",
no = "No",
garage = "Garage",
jobGarage = "Garage Lavoro",
gangGarage = "Garage Gang",
player = "Giocatore",
impound = "Sequestro",
inGarage = "In Garage",
notInGarage = "Fuori dal Garage",
car = "Macchina",
air = "Aereo",
sea = "Barche",
fuel = "Benzina",
engine = "Motore",
body = "Carrozzeria",
day = "Giorno",
days = "Giorni",
hour = "Ora",
hours = "Ore",
-- User Interface
noVehicles = "Non ci sono veicoli in questo garage",
vehicles = "Veicoli",
vehiclePlate = "Targa Veicolo",
vehicleNotInGarage = "Veicolo non in garage",
vehicleTakeOut = "Prendi il Veicolo",
vehicleReturnAndTakeOut = "Ritorna e prendi il veicolo",
vehicleReturnToOwnersGarage = "Ritorna nel garage del propietario",
transferToGarageOrPlayer = "Trasferisci al garage o al giocatore",
transferToGarage = "Trasferisci al Garage",
transferToPlayer = "Trasferisci al Giocatore",
vehicleTransfer = "Trasferisci",
noAvailableGarages = "Nessun Garage Disponibile",
currentGarage = "Garage Attuale",
noPlayersOnline = "Nessun Giocatore Online",
createPrivateGarage = "Crea Garage Privato",
pgAlertHeadsUp = "Dritta!",
pgAlertText = "Il garage verrà creato e i veicoli appariranno nella posizione e nella direzione esatte in cui ti trovi attualmente.",
garageName = "Nome Garage",
impoundInformation = "Informazioni Sequestro",
impoundedBy = "Sequestrato da",
impoundedReason = "Motivo",
impoundPlayerCanCollect = "Non puoi prelevare il veicolo dal sequestro.",
impoundCollectionContact = "Contatta %{value} per prelevare il tuo veicolo.",
impoundNoVehicles = "Nessun Veicolo Sequestrato",
impoundAvailable = "Disponibile",
impoundRetrievableByOwner = "Ritirabile dal Propietario",
impoundNoReason = "Nessun Motivo Segnalato",
impoundVehicle = "Sequestra Veicolo",
impoundReasonField = "Motivo (Opzionale)",
impoundTime = "Tempo Sequestro",
impoundAvailableImmediately = "Disponibile Ora",
impoundCost = "Costo",
changeVehiclePlate = "Cambia Targa Veicolo",
newPlate = "Nuova Targa",
search = "Ricerca per nome o targa",
noPrivateGarages = "Nessun garage privato",
editPrivateGarage = "Modifica garage privato",
owners = "Proprietario/i",
location = "Posizione",
next = "Successivo",
previous = "Precedente",
page = "Pagina",
of = "di",
show = "Mostra",
save = "Salva",
edit = "Modifica",
delete = "Elimina",
garageDeleteConfirm = "Sei sicuro di voler cancellare questo garage?",
privGarageSearch = "Ricerca per nome",
garageUpdatedSuccess = "Garage aggiornato con successo!",
getCurrentCoords = "Ottenere le coordinate attuali",
identifier = "Identificativo",
name = "Nome",
noPlayers = "Non sono stati aggiunti giocatori",
addPlayer = "Aggiungi giocatore",
loadingVehicle = "Caricamento del veicolo...",
vehicleSetup = "Configurazione del veicolo",
extras = "Extras",
extra = "Extra",
liveries = "Livree",
livery = "Livrea",
noLiveries = "Nessuna livrea disponibile",
noExtras = "Nessun extra disponibile",
none = "Nessuno",
vehicleNeedsService = "Serve Manutenzione",
type = "Tipo",
-- Notifications
insertVehicleTypeError = "Puoi depositare %{value} tipi di veicoli in questo garage",
insertVehiclePublicError = "Non puoi depositare veicoli gang o lavorativi in garage pubblici",
vehicleParkedSuccess = "Veicolo Parcheggiato",
vehicleNotOwnedError = "Non sei il propietario del veicolo",
vehicleNotOwnedByPlayerError = "Il veicolo non è tuo",
notEnoughMoneyError = "Non hai abbastanza soldi in banca",
vehicleNotYoursError = "Il veicolo non ti appartiene",
notJobOrGangVehicle = "Questo non è un %{value} veicolo",
invalidGangError = "Gang non valida",
invalidJobError = "Lavoro non valido",
notInsideVehicleError = "Non sei in un veicolo",
vehicleAddedToGangGarageSuccess = "Veicolo aggiunto al %{value} garage gang!",
vehicleAddedToJobGarageSuccess = "Veicolo aggiunto al %{value} garage lavorativo!",
moveCloserToVehicleError = "Devi avvicinarti al Veicolo",
noVehiclesNearbyError = "Nessun veicolo vicino",
commandPermissionsError = "Non sei autorizzato ad usare questo comando",
actionNotAllowedError = "Non sei autorizzato a fare questo",
garageNameExistsError = "Nome garage esistente",
vehiclePlateExistsError = "Targa veicolo già esistente",
playerNotOnlineError = "Giocatore Offline",
vehicleTransferSuccess = "Veicolo trasferito a %{value}",
vehicleTransferSuccessGeneral = "Veicolo trasferito correttamente",
vehicleReceived = "Hai ricevuto un veicolo con targa %{value}",
vehicleImpoundSuccess = "Veicolo sequestrato correttamente",
vehicleImpoundRemoveSuccess = "Veicolo rimosso dal sequestro",
vehicleImpoundReturnedToOwnerSuccess = "Veicolo restituito al garage del propietario",
garageCreatedSuccess = "Garage creato correttamente!",
vehiclePlateUpdateSuccess = "Targa cambiata in %{value}",
vehicleDeletedSuccess = "Veicolo eliminato dal database %{value}",
playerIsDead = "Sei morto! Non puoi farlo",
-- Commands
cmdSetGangVehicle = "Aggiungi veicolo attuale al garage gang",
cmdRemoveGangVehicle = "Ritorna veicolo gang al propietario",
cmdSetJobVehicle = "Aggiungi veicolo attuale al garage lavorativo",
cmdRemoveJobVehicle = "Ritorna veicolo lavorativo al propietario",
cmdArgGangName = "Nome gang",
cmdArgJobName = "Nome lavoro",
cmgArgMinGangRank = "Grado minimo gang",
cmgArgMinJobRank = "Grado minimo lavoro",
cmdArgPlayerId = "ID giocatore del destinatario",
cmdImpoundVehicle = "Sequestra veicolo",
cmdChangePlate = "Cambia targa veicolo (Solo Admin)",
cmdDeleteVeh = "Cancella veicolo dal database (Solo Admin)",
cmdCreatePrivGarage = "Crea un garage privato per il giocatore",
-- v3
vehicleStoreError = "Non puoi depositare il tuo veicolo qui",
mins = "minuti",
noVehiclesAvailableToDrive = "Non ci sono veicoli disponibili da guidare",
}

View file

@ -0,0 +1,142 @@
Locales = Locales or {}
Locales['ja'] = {
yes = "はい",
no = "いいえ",
garage = "ガレージ",
jobGarage = "仕事用ガレージ",
gangGarage = "ギャング用ガレージ",
player = "プレイヤー",
impound = "押収",
inGarage = "ガレージ内",
notInGarage = "ガレージ外",
car = "",
air = "",
sea = "",
fuel = "燃料",
engine = "エンジン",
body = "ボディ",
day = "",
days = "日々",
hour = "時間",
hours = "時間",
mins = "",
-- ユーザーインターフェース
noVehicles = "このガレージには車両がありません",
noVehiclesAvailableToDrive = "運転可能な車両はありません",
vehicles = "車両",
vehiclePlate = "ナンバープレート",
vehicleNotInGarage = "車両はガレージに入っていません",
vehicleTakeOut = "運転する",
vehicleReturnAndTakeOut = "返却 & 運転",
vehicleReturnToOwnersGarage = "オーナーのガレージに返却",
transferToGarageOrPlayer = "ガレージまたはプレイヤーに転送",
transferToGarage = "ガレージに転送",
transferToPlayer = "プレイヤーに転送",
vehicleTransfer = "転送",
noAvailableGarages = "利用可能なガレージはありません",
currentGarage = "現在のガレージ",
noPlayersOnline = "オンラインのプレイヤーがありません",
createPrivateGarage = "プライベートガレージを作成",
pgAlertHeadsUp = "注意!",
pgAlertText = "ガレージは作成され、車両は現在立っている位置と方向に出現します。",
garageName = "ガレージ名",
impoundInformation = "押収情報",
impoundedBy = "押収者",
impoundedReason = "理由",
impoundPlayerCanCollect = "車両を押収所から受け取ることができます。",
impoundCollectionContact = "%{value} に連絡して車両を受け取ってください。",
impoundNoVehicles = "押収所には車両がありません",
impoundAvailable = "利用可能",
impoundRetrievableByOwner = "オーナーが回収可能",
impoundNoReason = "理由なし",
impoundVehicle = "車両を押収",
impoundReasonField = "理由(任意)",
impoundTime = "押収時間",
impoundAvailableImmediately = "すぐに利用可能",
impoundCost = "費用",
changeVehiclePlate = "車両ナンバープレートの変更",
newPlate = "新しいナンバープレート",
search = "名前またはナンバープレートで検索",
noPrivateGarages = "プライベートガレージはありません",
editPrivateGarage = "プライベートガレージを編集",
owners = "オーナー",
location = "場所",
next = "",
previous = "",
page = "ページ",
of = "",
show = "表示",
save = "保存",
edit = "編集",
delete = "削除",
garageDeleteConfirm = "本当にこのガレージを削除してもよろしいですか?",
privGarageSearch = "名前で検索",
garageUpdatedSuccess = "ガレージが正常に更新されました!",
getCurrentCoords = "現在の座標を取得",
identifier = "識別子",
name = "名前",
noPlayers = "プレイヤーが追加されていません",
addPlayer = "プレイヤーを追加",
loadingVehicle = "車両を読み込み中...",
vehicleSetup = "車両設定",
extras = "エクストラ",
extra = "エクストラ",
liveries = "ラッピング",
livery = "ラッピング",
noLiveries = "利用可能なラッピングはありません",
noExtras = "利用可能なエクストラはありません",
none = "なし",
vehicleNeedsService = "整備が必要",
type = "タイプ",
goInside = "中に入る",
-- 通知
insertVehicleTypeError = "このガレージには %{value} の車両タイプのみ収納できます",
insertVehiclePublicError = "公共ガレージには仕事用またはギャング車両を収納できません",
vehicleParkedSuccess = "車両がガレージに駐車されました",
vehicleNotOwnedError = "この車両はあなたのものではありません",
vehicleNotOwnedByPlayerError = "この車両はプレイヤーが所有していません",
notEnoughMoneyError = "銀行に十分なお金がありません",
vehicleNotYoursError = "この車両はあなたのものではありません",
notJobOrGangVehicle = "これは %{value} 車両ではありません",
invalidGangError = "有効なギャング名が提供されていません",
invalidJobError = "有効な仕事名が提供されていません",
notInsideVehicleError = "車両に乗っていません",
vehicleAddedToGangGarageSuccess = "車両が %{value} ギャングガレージに追加されました!",
vehicleAddedToJobGarageSuccess = "車両が %{value} 仕事用ガレージに追加されました!",
moveCloserToVehicleError = "車両に近づく必要があります",
noVehiclesNearbyError = "近くに車両がありません",
commandPermissionsError = "このコマンドを使用する権限がありません",
actionNotAllowedError = "この行動は許可されていません",
garageNameExistsError = "ガレージ名はすでに存在します",
vehiclePlateExistsError = "この車両のナンバープレートはすでに使用されています",
playerNotOnlineError = "プレイヤーはオンラインではありません",
vehicleTransferSuccess = "車両が %{value} に転送されました",
vehicleTransferSuccessGeneral = "車両が正常に転送されました",
vehicleReceived = "車両 %{value} のナンバープレートを受け取りました",
vehicleImpoundSuccess = "車両が正常に押収されました",
vehicleImpoundRemoveSuccess = "車両が押収所から削除されました",
vehicleImpoundReturnedToOwnerSuccess = "車両がオーナーのガレージに返却されました",
garageCreatedSuccess = "ガレージが正常に作成されました!",
vehiclePlateUpdateSuccess = "車両ナンバープレートが %{value} に設定されました",
vehicleDeletedSuccess = "車両がデータベースから削除されました %{value}",
playerIsDead = "死んでいるため、この操作はできません",
vehicleStoreError = "この車両はここに保管できません",
-- コマンド
cmdSetGangVehicle = "現在の車両をギャングガレージに追加",
cmdRemoveGangVehicle = "ギャング車両をプレイヤー所有に戻す",
cmdSetJobVehicle = "現在の車両を仕事用ガレージに追加",
cmdRemoveJobVehicle = "仕事車両をプレイヤー所有に戻す",
cmdArgGangName = "ギャング名",
cmdArgJobName = "仕事名",
cmgArgMinGangRank = "最低ギャングランク",
cmgArgMinJobRank = "最低仕事ランク",
cmdArgPlayerId = "新しいオーナーのプレイヤーID",
cmdImpoundVehicle = "車両を押収",
cmdChangePlate = "車両ナンバープレートを変更(管理者のみ)",
cmdDeleteVeh = "車両をデータベースから削除(管理者のみ)",
cmdCreatePrivGarage = "プレイヤー用のプライベートガレージを作成",
}

View file

@ -0,0 +1,142 @@
Locales = Locales or {}
Locales['lt'] = {
yes = "Taip",
no = "Ne",
garage = "Garažas",
jobGarage = "Darbo garažas",
gangGarage = "Gaujos garažas",
player = "Asmuo",
impound = "Konfiskavimo aikštelė",
inGarage = "Šiuo metu garaže",
notInGarage = "Garaže nėra",
car = "Transporto priemonė",
air = "Lėktuvas",
sea = "Laivas",
fuel = "Degalai",
engine = "Variklis",
body = "Kėbulas",
day = "diena",
days = "dienos",
hour = "valanda",
hours = "valandos",
mins = "mins",
-- User Interface
noVehicles = "Šiame garaže nėra transporto priemonių",
noVehiclesAvailableToDrive = "Šiuo metu nėra transporto priemonių, kurias galėtumėte vairuoti",
vehicles = "tr.priemonė-(s)",
vehiclePlate = "Numeriai",
vehicleNotInGarage = "Tr.priemonės nėra garaže",
vehicleTakeOut = "Vairuoti",
vehicleReturnAndTakeOut = "Gražinti & Vairuoti",
vehicleReturnToOwnersGarage = "Grąžinti savininkui į garažą",
transferToGarageOrPlayer = "Perkelti į garažą arba asmeniui",
transferToGarage = "Perkelti į garažą",
transferToPlayer = "Perleisti žaidėjui",
vehicleTransfer = "Perkelti",
noAvailableGarages = "Nėra galimų garažų",
currentGarage = "Dabartinis garažas",
noPlayersOnline = "Nėra prisijungusių žaidėjų",
createPrivateGarage = "Sukurti privatų garažą",
pgAlertHeadsUp = "Dėmesio!",
pgAlertText = "Garažas bus sukurtas, o transporto priemonė atsiras tiklsiai ten, kur dabar stovite.",
garageName = "Garažo pavadinimas",
impoundInformation = "Konfiskavimo informacija",
impoundedBy = "Konfiskavo",
impoundedReason = "Priežastis",
impoundPlayerCanCollect = "Savo transporto priemonę galite atsiimti iš konfiskavimo aikštelės.",
impoundCollectionContact = "Prašome susisiekti su %{value}, kad galėtumėte atsiimti savo transporto priemonę.",
impoundNoVehicles = "Konfiskavimo aikštelėje nėra transporto priemonių",
impoundAvailable = "Galima",
impoundRetrievableByOwner = "Atsiimti gali savininkas?",
impoundNoReason = "Priežastis nenurodyta",
impoundVehicle = "Transporto priemonės konfiskavimas",
impoundReasonField = "Priežastis (nebūtina)",
impoundTime = "Konfiskavimo laikas",
impoundAvailableImmediately = "Atsiimti gali iškart",
impoundCost = "Atsiėmimo kaina",
changeVehiclePlate = "Numerių keitimas",
newPlate = "Nauji numeriai",
search = "Ieškoti pagal pavadinimą arba numerius",
noPrivateGarages = "Privačių garažų nėra",
editPrivateGarage = "Redaguoti privatų garažą",
owners = "Savininkas(-ai)",
location = "Vietovė",
next = "Kitas",
previous = "Praeitas",
page = "Puslapis",
of = "",
show = "Rodyti",
save = "Išsaugoti",
edit = "Redaguoti",
delete = "Ištrinti",
garageDeleteConfirm = "Ar tikrai norite ištrinti garažą?",
privGarageSearch = "Ieškoti pagal pavadinima",
garageUpdatedSuccess = "Garažas sėkmingai atnaujintas!",
getCurrentCoords = "Išgauti koordinates",
identifier = "Identifikatorius",
name = "Vardas",
noPlayers = "Žaidėjų nėra pridėta",
addPlayer = "Pridėti žaidėją",
loadingVehicle = "Užkraunama...",
vehicleSetup = "Papildiniai",
extras = "Extra",
extra = "Extra",
liveries = "Lipdukai",
livery = "Lipdukas",
noLiveries = "Lipdukų nėra",
noExtras = "Extra papildinių nėra",
none = "Nėra",
vehicleNeedsService = "Reikia serviso",
type = "Tipas",
goInside = "Eiti į vidų",
-- Notifications
insertVehicleTypeError = "Šiame garaže galite laikyti tik %{value} transporto priemonių tipus",
insertVehiclePublicError = "Negalite pastatyti darbo arba gaujų transporto priemonių tarp viešojo garažo",
vehicleParkedSuccess = "Transporto priemonė pastatyta į garažą",
vehicleNotOwnedError = "Ši transporto priemonė nepriklauso jums",
vehicleNotOwnedByPlayerError = "Transporto priemonė nepriklauso jokiam asmeniui",
notEnoughMoneyError = "Neturite pakankamai pinigų banke",
vehicleNotYoursError = "Transporto priemonė jums nepriklauso",
notJobOrGangVehicle = "Tai nėra %{value} transporto priemonė",
invalidGangError = "Jūs nenurodėte tinkamos gaujos",
invalidJobError = "Jūs nenurodėte tinkamo darbo",
notInsideVehicleError = "Jūs nesate transporto priemonėje",
vehicleAddedToGangGarageSuccess = "Transporto priemonė pridėta į %{value} gaujos garažą!",
vehicleAddedToJobGarageSuccess = "Transporto priemonė pridėta į %{value} darbo garažą!",
moveCloserToVehicleError = "Turite prieiti arčiau transporto priemonės",
noVehiclesNearbyError = "Šalia transporto priemonės nėra",
commandPermissionsError = "Neturite leidimo naudoti šios komandos",
actionNotAllowedError = "Šio veiksmo atlikti negalite",
garageNameExistsError = "Garažo pavadinimas jau yra užimtas",
vehiclePlateExistsError = "Transporto priemonės numeriai jau yra užimti",
playerNotOnlineError = "Žaidėjas nėra prisijungęs",
vehicleTransferSuccess = "Transporto priemonė perkelta į %{value}",
vehicleTransferSuccessGeneral = "Transporto priemonė sėkmingai perleista",
vehicleReceived = "Jūs gavote transporto priemonę kurios numeriai yra %{value}",
vehicleImpoundSuccess = "Transporto priemonė sėkmingai konfiskuota",
vehicleImpoundRemoveSuccess = "Transporto priemonė buvo ištraukta iš konfiskavimo aikštelės",
vehicleImpoundReturnedToOwnerSuccess = "Transporto priemonė grąžinta savininkui į garažą",
garageCreatedSuccess = "Garažas sėkmingai sukurtas!",
vehiclePlateUpdateSuccess = "Transporto priemonės numeriai pakeisti į %{value}",
vehicleDeletedSuccess = "Transporto priemonė sėkmingai pašalinta iš duomenu bazės %{value}",
playerIsDead = "Šio veiksmo negalite atlikti kol esate negyvas",
vehicleStoreError = "Šios transporto priemonės laikyti čia negalite",
-- Commands
cmdSetGangVehicle = "Pridėti dabartinę transporto priemonę į gaujos garažą",
cmdRemoveGangVehicle = "Grąžinti gaujos transporto priemonę savininkui",
cmdSetJobVehicle = "Pridėti dabartine transporto priemonę į darbo garažą",
cmdRemoveJobVehicle = "Gražinti darbinę transporto priemonę savininkui",
cmdArgGangName = "Gaujos pavadinimas",
cmdArgJobName = "Darbo pavadinimas",
cmgArgMinGangRank = "Minimalus gaujos rangas",
cmgArgMinJobRank = "Minimalus darbo rangas",
cmdArgPlayerId = "Naujo savininko ID",
cmdImpoundVehicle = "Konfiskuoti transporto priemonę",
cmdChangePlate = "Keisit transporto priemonės numerius (Tik administracija)",
cmdDeleteVeh = "Ištrinti transporto priemonę iš duomenų bazės (Tik administracija)",
cmdCreatePrivGarage = "Sukurti privatų garažą",
}

View file

@ -0,0 +1,143 @@
Locales = Locales or {}
Locales['nl'] = {
yes = "Ja",
no = "Nee",
garage = "Garage",
jobGarage = "Baan Garage",
gangGarage = "Bende Garage",
player = "Speler",
impound = "Inbeslagname",
inGarage = "In garage",
notInGarage = "Niet in garage",
car = "Auto",
air = "Lucht",
sea = "Zee",
fuel = "Brandstof",
engine = "Motor",
body = "Carrosserie",
day = "dag",
days = "dagen",
hour = "uur",
hours = "uren",
-- User Interface
noVehicles = "Er zijn geen voertuigen beschikbaar in deze garage",
vehicles = "voertuigen",
vehiclePlate = "Kenteken",
vehicleNotInGarage = "Voertuig is niet in aanwezig in de garage",
vehicleTakeOut = "Uitnemen",
vehicleReturnAndTakeOut = "Retour & Afhaal",
vehicleReturnToOwnersGarage = "Terug brengen naar de Garage van de Eigenaar",
transferToGarageOrPlayer = "Overdracht naar een Garage of Speler",
transferToGarage = "Overdracht naar een Garage",
transferToPlayer = "Overdracht naar een Speler",
vehicleTransfer = "Overdracht",
noAvailableGarages = "Geen beschikbare garages",
currentGarage = "Huidige garage",
noPlayersOnline = "Geen spelers online",
createPrivateGarage = "Privégarage creëren",
pgAlertHeadsUp = "Let op!",
pgAlertText = "De garage wordt gemaakt en voertuigen spawnen in de exacte locatie en richting waarin u zich momenteel bevindt.",
garageName = "Garage Naam",
impoundInformation = "Inbeslagname Informatie",
impoundedBy = "In beslag genomen door",
impoundedReason = "Reden",
impoundPlayerCanCollect = "U kunt uw voertuig ophalen bij de inbeslagname.",
impoundCollectionContact = "Neem contact op met %{value} om uw voertuig op te halen.",
impoundNoVehicles = "Er zijn geen voertuigen in de inbeslagneming",
impoundAvailable = "Beschikbaar",
impoundRetrievableByOwner = "Ophaalbaar door de eigenaar",
impoundNoReason = "Geen reden opgegeven",
impoundVehicle = "Voertuig in beslag nemen",
impoundReasonField = "Reden (optioneel)",
impoundTime = "Inbeslagnemingstijd",
impoundAvailableImmediately = "Onmiddellijk beschikbaar",
impoundCost = "Kosten",
changeVehiclePlate = "Voertuigkenteken wijzigen",
newPlate = "Nieuw Kenteken",
search = "Zoek op naam of plaat",
noPrivateGarages = "Geen privégarages",
editPrivateGarage = "Bewerk privégarage",
owners = "Eigenaar(s)",
location = "Locatie",
next = "Volgende",
previous = "Vorige",
page = "Pagina",
of = "van",
show = "Toon",
save = "Opslaan",
edit = "Bewerk",
delete = "Verwijder",
garageDeleteConfirm = "Weet je zeker dat je deze garage wilt verwijderen?",
privGarageSearch = "Zoeken op naam",
garageUpdatedSuccess = "Garage succesvol bijgewerkt!",
getCurrentCoords = "Huidige coördinaten ophalen",
identifier = "Identificatie",
name = "Naam",
noPlayers = "Er zijn geen spelers toegevoegd",
addPlayer = "Speler toevoegen",
loadingVehicle = "Voertuig laden...",
vehicleSetup = "Voertuig instellen",
extras = "Extra's",
extra = "Extra",
liveries = "Liveries",
livery = "Livery",
noLiveries = "Geen liveries beschikbaar",
noExtras = "Geen extra's beschikbaar",
none = "Geen",
vehicleNeedsService = "Needs Service",
type = "Type",
-- Notifications
insertVehicleTypeError = "U kunt alleen opslaan %{value} voertuigtypes in deze garage",
insertVehiclePublicError = "Je kunt geen baan- of bendevoertuigen opslaan in openbare garages",
vehicleParkedSuccess = "Voertuig geparkeerd in garage",
vehicleNotOwnedError = "U bent niet de eigenaar van dit voertuig",
vehicleNotOwnedByPlayerError = "Dit voertuig is geen eigendom van een speler",
notEnoughMoneyError = "U heeft niet genoeg geld op uw bank",
vehicleNotYoursError = "Dit voertuig is niet van jou",
notJobOrGangVehicle = "Dit is geen %{value} voertuig",
invalidGangError = "Je heeft geen geldige bende opgegeven",
invalidJobError = "Je heeft geen geldige baan opgegeven",
notInsideVehicleError = "Je zit niet in een voertuig",
vehicleAddedToGangGarageSuccess = "Voertuig toegevoegd aan de %{value} bende garage!",
vehicleAddedToJobGarageSuccess = "Voertuig toegevoegd aan de %{value} baan garage!",
moveCloserToVehicleError = "Je moet dichter bij het voertuig gaan staan",
noVehiclesNearbyError = "Er zijn geen voertuigen in de buurt",
commandPermissionsError = "Je hebt de rechten niet om dit commando te gebruiken",
actionNotAllowedError = "Dit mag je niet doen",
garageNameExistsError = "Garagenaam is al in gebruik",
vehiclePlateExistsError = "Voertuigkenteken is al in gebruik",
playerNotOnlineError = "Speler is niet online",
vehicleTransferSuccess = "Voertuig overgedragen aan %{value}",
vehicleTransferSuccessGeneral = "Voertuig succesvol overgedragen",
vehicleReceived = "U heeft een voertuig met kenteken %{value} ontvangen",
vehicleImpoundSuccess = "Voertuig succesvol in beslag genomen",
vehicleImpoundRemoveSuccess = "Voertuig uit beslag genomen",
vehicleImpoundReturnedToOwnerSuccess = "Voertuig teruggebracht naar de garage van de eigenaar",
garageCreatedSuccess = "Garage succesvol aangemaakt!",
vehiclePlateUpdateSuccess = "Voertuigkenteken ingesteld op %{value}",
vehicleDeletedSuccess = "Voertuig verwijderd uit de database %{value}",
playerIsDead = "Je kunt dit niet doen als je dood bent",
-- Commands
cmdSetGangVehicle = "Huidig voertuig toevoegen aan een bendegarage",
cmdRemoveGangVehicle = "Stel bendevoertuig terug in als eigendom van de speler",
cmdSetJobVehicle = "Huidig voertuig toevoegen aan een baangarage",
cmdRemoveJobVehicle = "Stel baanvoertuig terug in als eigendom van de speler",
cmdArgGangName = "Bende naam",
cmdArgJobName = "Baan naam",
cmgArgMinGangRank = "Minimale benderang",
cmgArgMinJobRank = "Minimale functierang",
cmdArgPlayerId = "Speler-ID van nieuwe eigenaar",
cmdImpoundVehicle = "Een voertuig in beslag nemen",
cmdChangePlate = "Wijzig kentekenplaat (Alleen beheerder)",
cmdDeleteVeh = "Voertuig verwijderen uit de database (Alleen beheerder)",
cmdCreatePrivGarage = "Privégarage creëren voor een Speler",
-- v3
vehicleStoreError = "You cannot store this vehicle here",
mins = "mins",
noVehiclesAvailableToDrive = "There are no vehicles available to drive",
}

View file

@ -0,0 +1,141 @@
Locales = Locales or {}
Locales['pt'] = {
yes = "Sim",
no = "Não",
garage = "Garagem",
jobGarage = "Garagem de Trabalho",
gangGarage = "Garagem de Organização",
player = "Jogador",
impound = "Apreendidos",
inGarage = "Na Garagem",
notInGarage = "Fora da Garagem",
car = "Garagem",
air = "Garagem",
sea = "Garagem",
fuel = "Combustível",
engine = "Motor",
body = "Chassi",
day = "Dia",
days = "Dias",
hour = "Hora",
hours = "Horas",
-- User Interface
noVehicles = "Não há veículos nesta garagem",
vehicles = "Total de Viaturas",
vehiclePlate = "Matrícula do veículo",
vehicleNotInGarage = "Veículo não está na garagem",
vehicleTakeOut = "Retirar",
vehicleReturnAndTakeOut = "Voltar a Retirar",
vehicleReturnToOwnersGarage = "Voltar à garagem do proprietário",
transferToGarageOrPlayer = "Transferir para uma Garagem ou Jogador",
transferToGarage = "Transferir para uma Garagem",
transferToPlayer = "Transferir para um Jogador",
vehicleTransfer = "Transferir",
noAvailableGarages = "Sem garagens disponíveis",
currentGarage = "Garagem atual",
noPlayersOnline = "Sem jogadores online",
createPrivateGarage = "Criar Garagem Privada",
pgAlertHeadsUp = "Atenção!",
pgAlertText = "A garagem será criada e os veículos aparecerão na localização e direção exatas que você está atualmente.",
garageName = "Nome da Garagem",
impoundInformation = "Informações da Apreensão",
impoundedBy = "Apreendido por",
impoundedReason = "Razão",
impoundPlayerCanCollect = "Você pode retirar o seu veículo dos Apreendidos.",
impoundCollectionContact = "Por favor entre em contato %{value} Para retirar o seu veículo.",
impoundNoVehicles = "Não há veículos nos Apreendidos",
impoundAvailable = "Disponível",
impoundRetrievableByOwner = "Recuperável pelo proprietário",
impoundNoReason = "Nenhuma razão fornecida",
impoundVehicle = "Apreender o Veículo",
impoundReasonField = "Razão",
impoundTime = "Tempo de Apreensão",
impoundAvailableImmediately = "Disponível imediatamente",
impoundCost = "Preço",
changeVehiclePlate = "Mudar a Matrícula",
newPlate = "Nova Matrícula",
search = "Pesquise por nome ou placa",
noPrivateGarages = "Sem garagens privadas",
editPrivateGarage = "Editar garagem privada",
owners = "Proprietário(s)",
location = "Localização",
next = "Seguinte",
previous = "Anterior",
page = "Página",
of = "de",
show = "Mostrar",
save = "Guardar",
edit = "Editar",
delete = "Eliminar",
garageDeleteConfirm = "Tem a certeza de que pretende apagar esta garagem?",
privGarageSearch = "Procurar por nome",
garageUpdatedSuccess = "Garagem actualizada com sucesso!",
getCurrentCoords = "Obter as coordenadas actuais",
identifier = "Identificador",
name = "Nome",
noPlayers = "Não há jogadores adicionados",
addPlayer = "Adicionar jogador",
loadingVehicle = "Carregamento do veículo...",
vehicleSetup = "Configuração do veículo",
extras = "Suplementos",
extra = "Suplemento",
liveries = "Fígados",
livery = "Fígado",
noLiveries = "Não existem pinturas disponíveis",
noExtras = "Não há extras disponíveis",
none = "Nenhum",
vehicleNeedsService = "Needs Service",
type = "Type",
-- Notifications
insertVehicleTypeError = "Não pode guardar nesta garagem.",
insertVehiclePublicError = "Você não pode armazenar veículos de emprego ou gangues em garagens públicas",
vehicleParkedSuccess = "Veículo guardado na garagem",
vehicleNotOwnedError = "Você não é dono este veículo",
vehicleNotOwnedByPlayerError = "O veículo não é de propriedade de um jogador",
notEnoughMoneyError = "Você não tem dinheiro suficiente em seu banco",
vehicleNotYoursError = "Veículo não pertence a você",
notJobOrGangVehicle = "Isso não é um %{value} veículo",
invalidGangError = "Você não forneceu uma gangue válida",
invalidJobError = "Você não forneceu um trabalho válido",
notInsideVehicleError = "Você não está sentado em um veículo",
vehicleAddedToGangGarageSuccess = "Veículo adicionado ao %{value} Garagem de gangues!",
vehicleAddedToJobGarageSuccess = "Veículo adicionado ao %{value} Jó Garage!",
moveCloserToVehicleError = "Você precisa se aproximar do veículo",
noVehiclesNearbyError = "Não há veículos próximos",
commandPermissionsError = "Você não tem permissão para usar este comando",
actionNotAllowedError = "Você não tem permissão para fazer isso",
garageNameExistsError = "O nome da garagem já existe",
vehiclePlateExistsError = "A placa do veículo já está em uso",
playerNotOnlineError = "Jogador não está online",
vehicleTransferSuccess = "Veículo transferido para %{value}",
vehicleTransferSuccessGeneral = "Veículo transferido com sucesso",
vehicleReceived = "Você recebeu um veículo com a matricula %{value}",
vehicleImpoundSuccess = "Veículo foi apreendido",
vehicleImpoundRemoveSuccess = "Veículo foi removido dos Apreenndidos!",
vehicleImpoundReturnedToOwnerSuccess = "Veículo voltou à garagem do proprietário",
garageCreatedSuccess = "Garagem criada com sucesso!",
vehiclePlateUpdateSuccess = "Placa do veículo definido para %{value}",
vehicleDeletedSuccess = "Veículo excluído do banco de dados %{value}",
playerIsDead = "Você não pode fazer isso enquanto estiver morto",
-- Commands
cmdSetGangVehicle = "Adicione o veículo atual a uma garagem de gangue",
cmdRemoveGangVehicle = "Defina o veículo de gangue de volta ao jogador de propriedade",
cmdSetJobVehicle = "Adicione o veículo atual a uma garagem de Trabalho",
cmdRemoveJobVehicle = "Defina o veículo de trabalho de volta para o jogador de propriedade",
cmdArgGangName = "Gang Nome",
cmdArgJobName = "Trabalho Nome",
cmdArgPlayerId = "ID do jogador do novo proprietário",
cmdImpoundVehicle = "Apreender um veículo",
cmdChangePlate = "Altere a placa do veículo (Admin apenas)",
cmdDeleteVeh = "Excluir veículo do banco de dados (Admin apenas)",
cmdCreatePrivGarage = "Criar uma garagem privada para um jogador",
-- v3
vehicleStoreError = "You cannot store this vehicle here",
mins = "mins",
noVehiclesAvailableToDrive = "There are no vehicles available to drive",
}

View file

@ -0,0 +1,142 @@
Locales = Locales or {}
Locales['ro'] = {
yes = "Da",
no = "Nu",
garage = "Garaj",
jobGarage = "Garaj de serviciu",
gangGarage = "Garajul bandei",
player = "Jucător",
impound = "Depozit",
inGarage = "În garaj",
notInGarage = "Nu este în garaj",
car = "Mașină",
air = "Aer",
sea = "Mare",
fuel = "Combustibil",
engine = "Motor",
body = "Caroserie",
day = "zi",
days = "zile",
hour = "oră",
hours = "ore",
mins = "minute",
-- Interfața utilizatorului
noVehicles = "Nu există vehicule în acest garaj",
noVehiclesAvailableToDrive = "Nu există vehicule disponibile pentru a conduce",
vehicles = "vehicul(e)",
vehiclePlate = "Număr de înmatriculare",
vehicleNotInGarage = "Vehiculul a fost lăsat afară",
vehicleTakeOut = "Condu",
vehicleReturnAndTakeOut = "Întoarce & Condu",
vehicleReturnToOwnersGarage = "Întoarce la garajul proprietarului",
transferToGarageOrPlayer = "Transferă la un garaj sau jucător",
transferToGarage = "Transferă la un garaj",
transferToPlayer = "Transferă la un jucător",
vehicleTransfer = "Transfer",
noAvailableGarages = "Nu există garaje disponibile",
currentGarage = "Garaj curent",
noPlayersOnline = "Nu sunt jucători online",
createPrivateGarage = "Creează un garaj privat",
pgAlertHeadsUp = "Atenție!",
pgAlertText = "Garajul va fi creat și vehiculele vor apărea exact în locația și direcția în care te afli în prezent.",
garageName = "Nume Garaj",
impoundInformation = "Informații despre depozit",
impoundedBy = "Depozitat de",
impoundedReason = "Motiv",
impoundPlayerCanCollect = "Poți să îți recuperezi vehiculul din depozit.",
impoundCollectionContact = "Te rugăm să contactezi %{value} pentru a-ți recupera vehiculul.",
impoundNoVehicles = "Nu există vehicule în depozit",
impoundAvailable = "Disponibil",
impoundRetrievableByOwner = "Poate fi recuperat de proprietar",
impoundNoReason = "Niciun motiv furnizat",
impoundVehicle = "Depozitează vehiculul",
impoundReasonField = "Motiv (opțional)",
impoundTime = "Timp de depozitare",
impoundAvailableImmediately = "Disponibil imediat",
impoundCost = "Cost",
changeVehiclePlate = "Schimbă numărul de înmatriculare",
newPlate = "Număr nou",
search = "Caută după nume sau număr",
noPrivateGarages = "Nu există garaje private",
editPrivateGarage = "Editează Garaj Privat",
owners = "Proprietar(i)",
location = "Locație",
next = "Următor",
previous = "Anterior",
page = "Pagină",
of = "din",
show = "Arată",
save = "Salvează",
edit = "Editează",
delete = "Șterge",
garageDeleteConfirm = "Ești sigur că vrei să ștergi acest garaj?",
privGarageSearch = "Caută după nume",
garageUpdatedSuccess = "Garaj actualizat cu succes!",
getCurrentCoords = "Obține coordonatele curente",
identifier = "Identificator",
name = "Nume",
noPlayers = "Nu există jucători adăugați",
addPlayer = "Adaugă jucător",
loadingVehicle = "Se încarcă vehiculul...",
vehicleSetup = "Configurare Vehicul",
extras = "Extraopțiuni",
extra = "Extraopțiune",
liveries = "Livree",
livery = "Livrea",
noLiveries = "Nu există livree disponibile",
noExtras = "Nu există extraopțiuni disponibile",
none = "Niciunul",
vehicleNeedsService = "Necesită service",
type = "Tip",
goInside = "Intră înăuntru",
-- Notificări
insertVehicleTypeError = "Poți depozita doar vehicule de tip %{value} în acest garaj",
insertVehiclePublicError = "Nu poți depozita vehicule de serviciu sau de bandă în garajele publice",
vehicleParkedSuccess = "Vehicul parcat în garaj",
vehicleNotOwnedError = "Nu deții acest vehicul",
vehicleNotOwnedByPlayerError = "Vehiculul nu este deținut de un jucător",
notEnoughMoneyError = "Nu ai destui bani în bancă",
vehicleNotYoursError = "Vehiculul nu îți aparține",
notJobOrGangVehicle = "Acesta nu este un vehicul %{value}",
invalidGangError = "Nu ai furnizat o bandă validă",
invalidJobError = "Nu ai furnizat un job valid",
notInsideVehicleError = "Nu ești într-un vehicul",
vehicleAddedToGangGarageSuccess = "Vehicul adăugat în garajul bandei %{value}!",
vehicleAddedToJobGarageSuccess = "Vehicul adăugat în garajul de serviciu %{value}!",
moveCloserToVehicleError = "Trebuie să te apropii de vehicul",
noVehiclesNearbyError = "Nu există vehicule în apropiere",
commandPermissionsError = "Nu ai permisiunea de a folosi această comandă",
actionNotAllowedError = "Nu ai permisiunea să faci asta",
garageNameExistsError = "Numele garajului există deja",
vehiclePlateExistsError = "Numărul de înmatriculare este deja utilizat",
playerNotOnlineError = "Jucătorul nu este online",
vehicleTransferSuccess = "Vehicul transferat la %{value}",
vehicleTransferSuccessGeneral = "Vehicul transferat cu succes",
vehicleReceived = "Ai primit un vehicul cu numărul %{value}",
vehicleImpoundSuccess = "Vehicul depozitat cu succes",
vehicleImpoundRemoveSuccess = "Vehicul eliminat din depozit",
vehicleImpoundReturnedToOwnerSuccess = "Vehiculul a fost returnat în garajul proprietarului",
garageCreatedSuccess = "Garaj creat cu succes!",
vehiclePlateUpdateSuccess = "Numărul de înmatriculare a fost schimbat în %{value}",
vehicleDeletedSuccess = "Vehicul șters din baza de date %{value}",
playerIsDead = "Nu poți face asta când ești mort",
vehicleStoreError = "Nu poți depozita acest vehicul aici",
-- Comenzi
cmdSetGangVehicle = "Adaugă vehiculul curent în garajul bandei",
cmdRemoveGangVehicle = "Setează vehiculul bandei înapoi ca deținut de jucător",
cmdSetJobVehicle = "Adaugă vehiculul curent în garajul de serviciu",
cmdRemoveJobVehicle = "Setează vehiculul de serviciu înapoi ca deținut de jucător",
cmdArgGangName = "Numele bandei",
cmdArgJobName = "Numele jobului",
cmgArgMinGangRank = "Rangul minim în bandă",
cmgArgMinJobRank = "Rangul minim la job",
cmdArgPlayerId = "ID-ul jucătorului noului proprietar",
cmdImpoundVehicle = "Depozitează un vehicul",
cmdChangePlate = "Schimbă numărul de înmatriculare (doar Admin)",
cmdDeleteVeh = "Șterge vehicul din baza de date (doar Admin)",
cmdCreatePrivGarage = "Creează un garaj privat pentru un jucător",
}

View file

@ -0,0 +1,143 @@
Locales = Locales or {}
Locales['sv'] = {
yes = "Ja",
no = "Nej",
garage = "garage",
jobGarage = "jobb Garage",
gangGarage = "gäng Garage",
player = "spelare",
impound = "bärgare",
inGarage = "i garaget",
notInGarage = "inte i garaget",
car = "bil",
air = "luft",
sea = "vatten",
fuel = "bränsle",
engine = "motor",
body = "chassie",
day = "dag",
days = "dagar",
hour = "timme",
hours = "timmar",
-- User Interface
noVehicles = "Det finns inga fordon i detta garaget",
vehicles = "bil(ar)",
vehiclePlate = "Registreringsskylt",
vehicleNotInGarage = "Fordonet är inte i garaget",
vehicleTakeOut = "Ta ut",
vehicleReturnAndTakeOut = "Flytta & Kör",
vehicleReturnToOwnersGarage = "Lämna tillbaka till ägarens garage",
transferToGarageOrPlayer = "Flytta till ett garage eller spelare",
transferToGarage = "Flytta till ett garage",
transferToPlayer = "Flytta till en spelare",
vehicleTransfer = "Flytta",
noAvailableGarages = "Inga tillgängliga garage",
currentGarage = "Nuvarande garage",
noPlayersOnline = "Inga spelare online",
createPrivateGarage = "Skapa privat garage",
pgAlertHeadsUp = "Akta!",
pgAlertText = "Garaget skapas och fordon kommer att spawnas på din position och åt det håll du står.",
garageName = "Garage Namn",
impoundInformation = "Bärgar Information",
impoundedBy = "Bärgad av",
impoundedReason = "Orsak",
impoundPlayerCanCollect = "Du kan hämta din bil från bärgaren.",
impoundCollectionContact = "Kontakta %{value} för att hämta ditt fordon.",
impoundNoVehicles = "Det finns inga fordon hos bärgaren.",
impoundAvailable = "Tillgänglig",
impoundRetrievableByOwner = "Kan hämtas av ägaren",
impoundNoReason = "Ingen anledning tillgänglig",
impoundVehicle = "Bärgat fordon",
impoundReasonField = "Orsak (valfritt)",
impoundTime = "Tid hos bärgaren",
impoundAvailableImmediately = "Tillgänglig direkt",
impoundCost = "Kostnad",
changeVehiclePlate = "Ändra registreringsnummer",
newPlate = "Nytt registreringsnummer",
search = "Sök med namn eller registreringsskylt",
noPrivateGarages = "Inga privata garage",
editPrivateGarage = "Ändra privat garage",
owners = "Ägare(n)",
location = "Plats",
next = "Nästa",
previous = "Tidigare",
page = "Sida",
of = "av",
show = "Visa",
save = "Spara",
edit = "Redigera",
delete = "Radera",
garageDeleteConfirm = "Är du säker på att du vill ta bort detta garage?",
privGarageSearch = "Sök efter namn",
garageUpdatedSuccess = "Garaget har uppdaterats framgångsrikt!",
getCurrentCoords = "Hämta aktuella koordinater",
identifier = "Identifierare",
name = "Namn",
noPlayers = "Inga spelare har tillkommit",
addPlayer = "Lägg till spelare",
loadingVehicle = "Lastning av fordon...",
vehicleSetup = "Inställning av fordon",
extras = "Extramaterial",
extra = "Extra",
liveries = "Liveries",
livery = "livery",
noLiveries = "Inga liveries tillgängliga",
noExtras = "Inga extrafunktioner tillgängliga",
none = "Ingen",
vehicleNeedsService = "Dags för service",
type = "Typ",
-- Notifications
insertVehicleTypeError = "Du kan endast förvara %{value} fordonstyp i detta garage",
insertVehiclePublicError = "Du kan inte förvara Gäng eller Jobbfordon i allmänna garaget",
vehicleParkedSuccess = "Fordonet är parkerat i garaget",
vehicleNotOwnedError = "Du äger inte detta fordon",
vehicleNotOwnedByPlayerError = "Fordonet ägs inte av en spelare",
notEnoughMoneyError = "Du har inte nog med pengar på banken",
vehicleNotYoursError = "Fordonet tillhör inte dig",
notJobOrGangVehicle = "Detta är inte ett %{value} fordon",
invalidGangError = "Du har inte angett ett giltigt gäng",
invalidJobError = "Du har inte angett ett giltigt jobb",
notInsideVehicleError = "Du sitter inte i fordonet",
vehicleAddedToGangGarageSuccess = "Fordonet är inlagt i %{value} Gäng garage!",
vehicleAddedToJobGarageSuccess = "Fordonet är inlagt %{value} jobb garage!",
moveCloserToVehicleError = "Du måste vara närmare fordonet",
noVehiclesNearbyError = "Det finns inga fordon i närheten",
commandPermissionsError = "Du får inte använda detta kommando",
actionNotAllowedError = "Du får inte göra detta",
garageNameExistsError = "Garagenamnet existerar redan",
vehiclePlateExistsError = "Registreringsnummer finns redan",
playerNotOnlineError = "Spelaren är inte online",
vehicleTransferSuccess = "Fordonet fördes över till %{value}",
vehicleTransferSuccessGeneral = "Fordonet har överförts",
vehicleReceived = "Du fick ett fordon med skylten %{value}",
vehicleImpoundSuccess = "Fordonet är bärgad",
vehicleImpoundRemoveSuccess = "Fordonet hämtad från bärgaren",
vehicleImpoundReturnedToOwnerSuccess = "Fordonet återlämnades till ägarens garage",
garageCreatedSuccess = "Garage har skapats!",
vehiclePlateUpdateSuccess = "Fordonsskylt är uppdaterad till %{value}",
vehicleDeletedSuccess = "Fordonet raderat från databasen %{value}",
playerIsDead = "Du kan inte göra detta då du är död",
-- Commands
cmdSetGangVehicle = "Lägg till nuvarande fordon till ett gänggarage",
cmdRemoveGangVehicle = "Sätt tillbaka gängfordonet till spelarägt",
cmdSetJobVehicle = "Lägg till aktuellt fordon till ett jobbgarage",
cmdRemoveJobVehicle = "Sätt tillbaka Jobbfordonet till spelarägt",
cmdArgGangName = "Gängnamn",
cmdArgJobName = "Jobbnamn",
cmgArgMinGangRank = "Minimum gäng rank",
cmgArgMinJobRank = "Minimum jobb rank",
cmdArgPlayerId = "SpelarID för nya ägare",
cmdImpoundVehicle = "Bärga ett fordon",
cmdChangePlate = "Ändra fordonsskylt (Admin endast)",
cmdDeleteVeh = "Ta bort fordon från databasen (Admin endast)",
cmdCreatePrivGarage = "Gör ett privatgarage till en spelare",
-- v3
vehicleStoreError = "Du kan inte ställa in detta fordonet här",
mins = "minuter",
noVehiclesAvailableToDrive = "Det finns inga fordon i detta garaget",
}

View file

@ -0,0 +1,142 @@
Locales = Locales or {}
Locales['vi'] = {
yes = "",
no = "Không",
garage = "Bãi đậu xe",
jobGarage = "Bãi đậu xe công việc",
gangGarage = "Gang Garage",
player = "Người chơi",
impound = "Bị giam",
inGarage = "Trong gara",
notInGarage = "Bên ngoài",
car = "Xe",
air = "Máy bay",
sea = "Thuyền",
fuel = "Xăng",
engine = "Động cơ",
body = "Thân vỏ",
day = "ngày",
days = "ngày",
hour = "giờ",
hours = "giờ",
-- User Interface
noVehicles = "Không có xe nào trong gara này",
vehicles = "Xe",
vehiclePlate = "Biển số xe",
vehicleNotInGarage = "Xe không ở trong gara",
vehicleTakeOut = "Lấy xe",
vehicleReturnAndTakeOut = "Thanh toán và lấy xe",
vehicleReturnToOwnersGarage = "Gửi về garage",
transferToGarageOrPlayer = "Transfer to a Garage or Player",
transferToGarage = "Transfer to a Garage",
transferToPlayer = "",
vehicleTransfer = "Chuyển nhượng",
noAvailableGarages = "Không có gara",
currentGarage = "Gara hiện tại",
noPlayersOnline = "Không có người chơi online",
createPrivateGarage = "Tạo gara cá nhân",
pgAlertHeadsUp = "Đứng lên!",
pgAlertText = "Gara sẽ được tạo ra và xe được lấy ra sẽ xuất hiện ngay vị trí mà bạn đang đứng.",
garageName = "Tên Gara",
impoundInformation = "Thông tin giam xe",
impoundedBy = "Giam bởi",
impoundedReason = "Lý do",
impoundPlayerCanCollect = "Bạn có thể lấy xe của mình từ bãi giam xe.",
impoundCollectionContact = "Vui lòng liên hệ %{value} hoặc Police để chuộc lại xe của bạn.",
impoundNoVehicles = "Bạn không có Xe nào bị giam giữ",
impoundAvailable = "Được phép lấy vào lúc ",
impoundAvailableGreen = "Có thể lấy",
impoundRetrievableByOwner = "Chủ xe có thể tự lấy xe ra",
impoundNoReason = "Lý do trống",
impoundVehicle = "Tạm giữ xe",
impoundReasonField = "Lý do",
impoundTime = "Thời gian giam",
impoundAvailableImmediately = "Không có",
impoundCost = "Giá",
changeVehiclePlate = "Đổi biển số xe",
newPlate = "Biển số mới",
search = "Tìm kiếm theo tên hoặc biển số xe",
noPrivateGarages = "Không có nhà để xe riêng",
editPrivateGarage = "Chỉnh sửa nhà để xe riêng",
owners = "Những chủ sở hữu)",
location = "Vị trí",
next = "Kế tiếp",
previous = "Trước",
page = "Trang",
of = "của",
show = "Trình diễn",
save = "Cứu",
edit = "Biên tập",
delete = "Xóa bỏ",
garageDeleteConfirm = "Bạn có chắc chắn muốn xóa gara này không?",
privGarageSearch = "Tìm kiếm theo tên",
garageUpdatedSuccess = "Nhà để xe được cập nhật thành công!",
getCurrentCoords = "Nhận tọa độ hiện tại",
identifier = "định danh",
name = "Tên",
noPlayers = "Không có người chơi nào được thêm vào",
addPlayer = "thêm người chơi",
loadingVehicle = "Tải xe...",
vehicleSetup = "Thiết lập xe",
extras = "Tiện ích bổ sung",
extra = "Thêm",
liveries = "gan",
livery = "gan",
noLiveries = "không có gan",
noExtras = "Không có tính năng bổ sung",
none = "Không có",
vehicleNeedsService = "Needs Service",
type = "Type",
-- Notifications
insertVehicleTypeError = "Bạn chỉ có thể để %{value} vào trong gara này!",
insertVehiclePublicError = "Bạn không thể cất xe tổ chức vào trong gara công cộng!",
vehicleParkedSuccess = "Cất xe vào gara thành công",
vehicleNotOwnedError = "Bạn không phải là chủ sở hữu của chiếc xe này!",
vehicleNotOwnedByPlayerError = "Xe này không thuộc sở hữu của người chơi nào!",
notEnoughMoneyError = "Bạn không đủ tiền trong ngân hàng!",
vehicleNotYoursError = "Xe này không thuộc về bạn!",
notJobOrGangVehicle = "Đây không phải là xe của %{value}",
invalidGangError = "Tên gang không hợp lệ!",
invalidJobError = "Tên job không hợp lệ!",
notInsideVehicleError = "Bạn không ngồi trên xe",
vehicleAddedToGangGarageSuccess = "Xe này đã được thêm vào %{value}!",
vehicleAddedToJobGarageSuccess = "Xe này đã được thêm vào %{value}!",
moveCloserToVehicleError = "Bạn cần di chuyển đến gần xe hơn!",
noVehiclesNearbyError = "Không có chiếc xe nào gần bạn!",
commandPermissionsError = "Bạn không thể sử dụng lệnh này!",
actionNotAllowedError = "Bạn không được phép làm điều này!",
garageNameExistsError = "Tên gara này đã tồn tại!",
vehiclePlateExistsError = "Biển số xe này đã tồn tại",
playerNotOnlineError = "Người chơi này không online",
vehicleTransferSuccess = "Xe được chuyển đến %{value}",
vehicleTransferSuccessGeneral = "Xe của bạn đã được chuyển thành công!",
vehicleReceived = "Bạn đã nhận được một chiếc xe với biển số %{value}",
vehicleImpoundSuccess = "Tạm giữ xe thành công!",
vehicleImpoundRemoveSuccess = "Xe đã được chuộc thành công",
vehicleImpoundReturnedToOwnerSuccess = "Xe này đã được chuyển về gara chủ sở hữu",
garageCreatedSuccess = "Tạo gara thành công!",
vehiclePlateUpdateSuccess = "Biển số xe được đổi thành: %{value}",
vehicleDeletedSuccess = "Xe này đã được xoá khỏi database %{value}",
playerIsDead = "Bạn không thể làm điều này trong khi bạn đã chết",
-- Commands
cmdSetGangVehicle = "Thêm Xe hiện tại vào một Gang",
cmdRemoveGangVehicle = "Đặt xe gang thành xe cá nhân",
cmdSetJobVehicle = "Thêm xe hiện tại vào một nghề nào đó",
cmdRemoveJobVehicle = "Đặt xe nghề thành xe cá nhân",
cmdArgGangName = "Tên Gang",
cmdArgJobName = "Tên Job",
cmdArgPlayerId = "ID của chủ sỡ hữu mới",
cmdImpoundVehicle = "Giam giữ xe",
cmdChangePlate = "Đổi biển số xe (Admin only)",
cmdDeleteVeh = "Xoá xe khỏi dữ liệu máy chủ (Admin only)",
cmdCreatePrivGarage = "Tạo gara cá nhân",
-- v3
vehicleStoreError = "You cannot store this vehicle here",
mins = "mins",
noVehiclesAvailableToDrive = "There are no vehicles available to drive",
}

View file

@ -0,0 +1,70 @@
--
-- Discord Webhooks
--
Webhooks = {}
Webhooks.VehicleTakeOutAndInsert = ""
Webhooks.VehiclePlayerTransfer = ""
Webhooks.VehicleGarageTransfer = ""
Webhooks.Impound = ""
Webhooks.PrivateGarages = ""
--[[
EXAMPLE WEBHOOK CALL
sendWebhook(src, Webhooks.VehicleTakeOutAndInsert, "Webhook Title", "success", {
{ key = "Data fields", value = "Data value" },
{ key = "Data fields 2", value = "Data value 2" }
})
]]--
function sendWebhook(playerId, webhookUrl, title, type, data)
if not webhookUrl then return end
local identifier = Framework.Server.GetPlayerIdentifier(playerId)
if not identifier then return false end
local color = 0xff6700
if type == "success" then color = 0x2ecc71 end
if type == "danger" then color = 0xe74c3c end
local player = Framework.Server.GetPlayerInfo(playerId)
if not player then return false end
local fields = {
{
name = "Player",
value = string.format("%s (%s)", player.name, identifier),
inline = false
}
}
for _, row in pairs(data) do
fields[#fields + 1] = {
name = row.key,
value = tostring(row.value),
inline = true
}
end
local body = {
username = "JG Advanced Garages Webhook",
avatar_url = "https://forum.cfx.re/user_avatar/forum.cfx.re/jgscripts/288/3621910_2.png",
content = "",
embeds = {
{
type = "rich",
title = title,
description = "",
color = color,
fields = fields
}
}
}
PerformHttpRequest(
webhookUrl,
function(err, text, header) end,
"POST",
json.encode(body),
{["Content-Type"] = "application/json"}
)
end

View file

@ -0,0 +1,6 @@
This is where you can add custom vehicle thumbnails. But first:
1. You must have this feature enabled in config.lua `Config.ShowVehicleImages = true`
2. All images must be a png and a small file size. Ideally a 16:9 aspect ratio too
Learn more: https://docs.jgscripts.com/advanced-garages/vehicle-images

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,14 @@
<!DOCTYPE html>
<html lang="en" data-bs-theme="dark">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/web/dist/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>jg-advancedgarages-web</title>
<script type="module" crossorigin src="/web/dist/assets/index-CZ7rsOCg.js"></script>
<link rel="stylesheet" crossorigin href="/web/dist/assets/index-DURuzDZl.css">
</head>
<body>
<div id="root"></div>
</body>
</html>

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB