forked from Simnation/Main
ed
This commit is contained in:
parent
6d22d5f77c
commit
63fbc60a00
86 changed files with 8352 additions and 3428 deletions
|
@ -1,488 +1,488 @@
|
||||||
-- logs text to the console
|
-- logs text to the console
|
||||||
function Log(text)
|
function Log(text)
|
||||||
if (Config.isDebug) then
|
if (Config.isDebug) then
|
||||||
Log(text)
|
Log(text)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Return all vehicle modifications in an array
|
-- Return all vehicle modifications in an array
|
||||||
function GetVehicleModifications(vehicle)
|
function GetVehicleModifications(vehicle)
|
||||||
local color1, color2 = GetVehicleColours(vehicle)
|
local color1, color2 = GetVehicleColours(vehicle)
|
||||||
local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
|
local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
|
||||||
|
|
||||||
local extras = {}
|
local extras = {}
|
||||||
for i = 0, 20, 1 do
|
for i = 0, 20, 1 do
|
||||||
if (DoesExtraExist(vehicle, i)) then
|
if (DoesExtraExist(vehicle, i)) then
|
||||||
if (IsVehicleExtraTurnedOn(vehicle, i)) then
|
if (IsVehicleExtraTurnedOn(vehicle, i)) then
|
||||||
table.insert(extras, { i, 0 })
|
table.insert(extras, { i, 0 })
|
||||||
else
|
else
|
||||||
table.insert(extras, { i, 1 })
|
table.insert(extras, { i, 1 })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local tiresBurst = {}
|
local tiresBurst = {}
|
||||||
for i = 0, 5, 1 do
|
for i = 0, 5, 1 do
|
||||||
if (IsVehicleTyreBurst(vehicle, i, true)) then
|
if (IsVehicleTyreBurst(vehicle, i, true)) then
|
||||||
table.insert(tiresBurst, { i, true })
|
table.insert(tiresBurst, { i, true })
|
||||||
elseif (IsVehicleTyreBurst(vehicle, i, false)) then
|
elseif (IsVehicleTyreBurst(vehicle, i, false)) then
|
||||||
table.insert(tiresBurst, { i, false })
|
table.insert(tiresBurst, { i, false })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local doorsMissing = {}
|
local doorsMissing = {}
|
||||||
for i = 0, 7, 1 do
|
for i = 0, 7, 1 do
|
||||||
if (IsVehicleDoorDamaged(vehicle, i)) then
|
if (IsVehicleDoorDamaged(vehicle, i)) then
|
||||||
table.insert(doorsMissing, i)
|
table.insert(doorsMissing, i)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local windowsBroken = {}
|
local windowsBroken = {}
|
||||||
--for i = 0, 13, 1 do
|
--for i = 0, 13, 1 do
|
||||||
-- if (not IsVehicleWindowIntact(vehicle, i)) then
|
-- if (not IsVehicleWindowIntact(vehicle, i)) then
|
||||||
-- table.insert(windowsBroken, i)
|
-- table.insert(windowsBroken, i)
|
||||||
-- end
|
-- end
|
||||||
--end
|
--end
|
||||||
|
|
||||||
-- custom colors
|
-- custom colors
|
||||||
local hasCustomPrimaryColor = GetIsVehiclePrimaryColourCustom(vehicle)
|
local hasCustomPrimaryColor = GetIsVehiclePrimaryColourCustom(vehicle)
|
||||||
local customPrimaryColor = nil
|
local customPrimaryColor = nil
|
||||||
if (hasCustomPrimaryColor) then
|
if (hasCustomPrimaryColor) then
|
||||||
local r, g, b = GetVehicleCustomPrimaryColour(vehicle)
|
local r, g, b = GetVehicleCustomPrimaryColour(vehicle)
|
||||||
customPrimaryColor = { r, g, b }
|
customPrimaryColor = { r, g, b }
|
||||||
end
|
end
|
||||||
|
|
||||||
local hasCustomSecondaryColor = GetIsVehicleSecondaryColourCustom(vehicle)
|
local hasCustomSecondaryColor = GetIsVehicleSecondaryColourCustom(vehicle)
|
||||||
local customSecondaryColor = nil
|
local customSecondaryColor = nil
|
||||||
if (hasCustomSecondaryColor) then
|
if (hasCustomSecondaryColor) then
|
||||||
local r, g, b = GetVehicleCustomSecondaryColour(vehicle)
|
local r, g, b = GetVehicleCustomSecondaryColour(vehicle)
|
||||||
customSecondaryColor = { r, g, b }
|
customSecondaryColor = { r, g, b }
|
||||||
end
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
-- 1 model
|
-- 1 model
|
||||||
GetEntityModel(vehicle),
|
GetEntityModel(vehicle),
|
||||||
|
|
||||||
-- 2 lockStatus
|
-- 2 lockStatus
|
||||||
GetVehicleDoorLockStatus(vehicle),
|
GetVehicleDoorLockStatus(vehicle),
|
||||||
|
|
||||||
-- 3 health
|
-- 3 health
|
||||||
math.floor(GetEntityHealth(vehicle) * 10.0) / 10.0,
|
math.floor(GetEntityHealth(vehicle) * 10.0) / 10.0,
|
||||||
-- 4 bodyHealth
|
-- 4 bodyHealth
|
||||||
math.floor(GetVehicleBodyHealth(vehicle) * 10.0) / 10.0,
|
math.floor(GetVehicleBodyHealth(vehicle) * 10.0) / 10.0,
|
||||||
-- 5 engineHealth
|
-- 5 engineHealth
|
||||||
math.floor(GetVehicleEngineHealth(vehicle) * 10.0) / 10.0,
|
math.floor(GetVehicleEngineHealth(vehicle) * 10.0) / 10.0,
|
||||||
-- 6 petrolTankHealth
|
-- 6 petrolTankHealth
|
||||||
math.floor(GetVehiclePetrolTankHealth(vehicle) * 10.0) / 10.0,
|
math.floor(GetVehiclePetrolTankHealth(vehicle) * 10.0) / 10.0,
|
||||||
|
|
||||||
-- 7 dirtLevel
|
-- 7 dirtLevel
|
||||||
math.floor(GetVehicleDirtLevel(vehicle) * 10.0) / 10.0,
|
math.floor(GetVehicleDirtLevel(vehicle) * 10.0) / 10.0,
|
||||||
-- 8 fuelLevel
|
-- 8 fuelLevel
|
||||||
math.floor(exports[Config.exports]:GetFuel(vehicle) * 10.0) / 10.0,
|
math.floor(exports[Config.exports]:GetFuel(vehicle) * 10.0) / 10.0,
|
||||||
|
|
||||||
---------------------------------------------------------------------- Implementierung Miho
|
---------------------------------------------------------------------- Implementierung Miho
|
||||||
--math.floor(DecorGetFloat(vehicle, Config.FuelDecor)*10) / 10.0,
|
--math.floor(DecorGetFloat(vehicle, Config.FuelDecor)*10) / 10.0,
|
||||||
---------------------------------------------------------------------- Implementierung Miho ENDE
|
---------------------------------------------------------------------- Implementierung Miho ENDE
|
||||||
|
|
||||||
-- 9 plateIndex
|
-- 9 plateIndex
|
||||||
GetVehicleNumberPlateTextIndex(vehicle),
|
GetVehicleNumberPlateTextIndex(vehicle),
|
||||||
|
|
||||||
-- 10 primaryColor
|
-- 10 primaryColor
|
||||||
color1,
|
color1,
|
||||||
-- 11 secondaryColor
|
-- 11 secondaryColor
|
||||||
color2,
|
color2,
|
||||||
-- 12 pearlescentColor
|
-- 12 pearlescentColor
|
||||||
pearlescentColor,
|
pearlescentColor,
|
||||||
-- 13 wheelColor
|
-- 13 wheelColor
|
||||||
wheelColor,
|
wheelColor,
|
||||||
|
|
||||||
-- 14 wheelType
|
-- 14 wheelType
|
||||||
GetVehicleWheelType(vehicle),
|
GetVehicleWheelType(vehicle),
|
||||||
-- 15 customWheelsFront
|
-- 15 customWheelsFront
|
||||||
GetVehicleModVariation(vehicle, 23);
|
GetVehicleModVariation(vehicle, 23);
|
||||||
-- 16 customWheelsBack
|
-- 16 customWheelsBack
|
||||||
GetVehicleModVariation(vehicle, 24);
|
GetVehicleModVariation(vehicle, 24);
|
||||||
-- 17 windowTint
|
-- 17 windowTint
|
||||||
GetVehicleWindowTint(vehicle),
|
GetVehicleWindowTint(vehicle),
|
||||||
-- 18 enabledNeon
|
-- 18 enabledNeon
|
||||||
{
|
{
|
||||||
IsVehicleNeonLightEnabled(vehicle, 0),
|
IsVehicleNeonLightEnabled(vehicle, 0),
|
||||||
IsVehicleNeonLightEnabled(vehicle, 1),
|
IsVehicleNeonLightEnabled(vehicle, 1),
|
||||||
IsVehicleNeonLightEnabled(vehicle, 2),
|
IsVehicleNeonLightEnabled(vehicle, 2),
|
||||||
IsVehicleNeonLightEnabled(vehicle, 3),
|
IsVehicleNeonLightEnabled(vehicle, 3),
|
||||||
},
|
},
|
||||||
-- 19 neonColor
|
-- 19 neonColor
|
||||||
table.pack(GetVehicleNeonLightsColour(vehicle)),
|
table.pack(GetVehicleNeonLightsColour(vehicle)),
|
||||||
-- 20 tireSmokeColor
|
-- 20 tireSmokeColor
|
||||||
table.pack(GetVehicleTyreSmokeColor(vehicle)),
|
table.pack(GetVehicleTyreSmokeColor(vehicle)),
|
||||||
|
|
||||||
-- 21 extras
|
-- 21 extras
|
||||||
extras,
|
extras,
|
||||||
|
|
||||||
-- 22-32 mods
|
-- 22-32 mods
|
||||||
GetVehicleMod(vehicle, 0),
|
GetVehicleMod(vehicle, 0),
|
||||||
GetVehicleMod(vehicle, 1),
|
GetVehicleMod(vehicle, 1),
|
||||||
GetVehicleMod(vehicle, 2),
|
GetVehicleMod(vehicle, 2),
|
||||||
GetVehicleMod(vehicle, 3),
|
GetVehicleMod(vehicle, 3),
|
||||||
GetVehicleMod(vehicle, 4),
|
GetVehicleMod(vehicle, 4),
|
||||||
GetVehicleMod(vehicle, 5),
|
GetVehicleMod(vehicle, 5),
|
||||||
GetVehicleMod(vehicle, 6),
|
GetVehicleMod(vehicle, 6),
|
||||||
GetVehicleMod(vehicle, 7),
|
GetVehicleMod(vehicle, 7),
|
||||||
GetVehicleMod(vehicle, 8),
|
GetVehicleMod(vehicle, 8),
|
||||||
GetVehicleMod(vehicle, 9),
|
GetVehicleMod(vehicle, 9),
|
||||||
GetVehicleMod(vehicle, 10),
|
GetVehicleMod(vehicle, 10),
|
||||||
|
|
||||||
-- 33-38 mods
|
-- 33-38 mods
|
||||||
GetVehicleMod(vehicle, 11),
|
GetVehicleMod(vehicle, 11),
|
||||||
GetVehicleMod(vehicle, 12),
|
GetVehicleMod(vehicle, 12),
|
||||||
GetVehicleMod(vehicle, 13),
|
GetVehicleMod(vehicle, 13),
|
||||||
GetVehicleMod(vehicle, 14),
|
GetVehicleMod(vehicle, 14),
|
||||||
GetVehicleMod(vehicle, 15),
|
GetVehicleMod(vehicle, 15),
|
||||||
GetVehicleMod(vehicle, 16),
|
GetVehicleMod(vehicle, 16),
|
||||||
|
|
||||||
-- 39-41 mods
|
-- 39-41 mods
|
||||||
IsToggleModOn(vehicle, 18),
|
IsToggleModOn(vehicle, 18),
|
||||||
IsToggleModOn(vehicle, 20),
|
IsToggleModOn(vehicle, 20),
|
||||||
IsToggleModOn(vehicle, 22),
|
IsToggleModOn(vehicle, 22),
|
||||||
|
|
||||||
-- 42-43 mods
|
-- 42-43 mods
|
||||||
GetVehicleMod(vehicle, 23),
|
GetVehicleMod(vehicle, 23),
|
||||||
GetVehicleMod(vehicle, 24),
|
GetVehicleMod(vehicle, 24),
|
||||||
|
|
||||||
-- 44-66 mods
|
-- 44-66 mods
|
||||||
GetVehicleMod(vehicle, 25),
|
GetVehicleMod(vehicle, 25),
|
||||||
GetVehicleMod(vehicle, 26),
|
GetVehicleMod(vehicle, 26),
|
||||||
GetVehicleMod(vehicle, 27),
|
GetVehicleMod(vehicle, 27),
|
||||||
GetVehicleMod(vehicle, 28),
|
GetVehicleMod(vehicle, 28),
|
||||||
GetVehicleMod(vehicle, 29),
|
GetVehicleMod(vehicle, 29),
|
||||||
GetVehicleMod(vehicle, 30),
|
GetVehicleMod(vehicle, 30),
|
||||||
GetVehicleMod(vehicle, 31),
|
GetVehicleMod(vehicle, 31),
|
||||||
GetVehicleMod(vehicle, 32),
|
GetVehicleMod(vehicle, 32),
|
||||||
GetVehicleMod(vehicle, 33),
|
GetVehicleMod(vehicle, 33),
|
||||||
GetVehicleMod(vehicle, 34),
|
GetVehicleMod(vehicle, 34),
|
||||||
GetVehicleMod(vehicle, 35),
|
GetVehicleMod(vehicle, 35),
|
||||||
GetVehicleMod(vehicle, 36),
|
GetVehicleMod(vehicle, 36),
|
||||||
GetVehicleMod(vehicle, 37),
|
GetVehicleMod(vehicle, 37),
|
||||||
GetVehicleMod(vehicle, 38),
|
GetVehicleMod(vehicle, 38),
|
||||||
GetVehicleMod(vehicle, 39),
|
GetVehicleMod(vehicle, 39),
|
||||||
GetVehicleMod(vehicle, 40),
|
GetVehicleMod(vehicle, 40),
|
||||||
GetVehicleMod(vehicle, 41),
|
GetVehicleMod(vehicle, 41),
|
||||||
GetVehicleMod(vehicle, 42),
|
GetVehicleMod(vehicle, 42),
|
||||||
GetVehicleMod(vehicle, 43),
|
GetVehicleMod(vehicle, 43),
|
||||||
GetVehicleMod(vehicle, 44),
|
GetVehicleMod(vehicle, 44),
|
||||||
GetVehicleMod(vehicle, 45),
|
GetVehicleMod(vehicle, 45),
|
||||||
GetVehicleMod(vehicle, 46),
|
GetVehicleMod(vehicle, 46),
|
||||||
GetVehicleMod(vehicle, 48),
|
GetVehicleMod(vehicle, 48),
|
||||||
|
|
||||||
-- 67 livery
|
-- 67 livery
|
||||||
GetVehicleLivery(vehicle),
|
GetVehicleLivery(vehicle),
|
||||||
|
|
||||||
-- 68 missingDoors
|
-- 68 missingDoors
|
||||||
doorsMissing,
|
doorsMissing,
|
||||||
|
|
||||||
-- 69 bulletproofTires
|
-- 69 bulletproofTires
|
||||||
not GetVehicleTyresCanBurst(vehicle),
|
not GetVehicleTyresCanBurst(vehicle),
|
||||||
-- 70 tiresBurst
|
-- 70 tiresBurst
|
||||||
tiresBurst,
|
tiresBurst,
|
||||||
|
|
||||||
-- 71 brokenWindows
|
-- 71 brokenWindows
|
||||||
windowsBroken,
|
windowsBroken,
|
||||||
|
|
||||||
-- 72 xenon lights
|
-- 72 xenon lights
|
||||||
GetVehicleXenonLightsColour(vehicle),
|
GetVehicleXenonLightsColour(vehicle),
|
||||||
|
|
||||||
-- 73 custom primary color
|
-- 73 custom primary color
|
||||||
customPrimaryColor,
|
customPrimaryColor,
|
||||||
-- 74 custom secondary color
|
-- 74 custom secondary color
|
||||||
customSecondaryColor,
|
customSecondaryColor,
|
||||||
|
|
||||||
-- 75 interior color
|
-- 75 interior color
|
||||||
GetVehicleInteriorColor(vehicle)
|
GetVehicleInteriorColor(vehicle)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Apply all modifications to a vehicle entity
|
-- Apply all modifications to a vehicle entity
|
||||||
function SetVehicleModifications(vehicle, plate, modifications)
|
function SetVehicleModifications(vehicle, plate, modifications)
|
||||||
SetVehicleModKit(vehicle, 0)
|
SetVehicleModKit(vehicle, 0)
|
||||||
|
|
||||||
-- plate
|
-- plate
|
||||||
SetVehicleNumberPlateText(vehicle, plate)
|
SetVehicleNumberPlateText(vehicle, plate)
|
||||||
SetVehicleNumberPlateTextIndex(vehicle, modifications[9])
|
SetVehicleNumberPlateTextIndex(vehicle, modifications[9])
|
||||||
|
|
||||||
-- lockStatus
|
-- lockStatus
|
||||||
SetVehicleDoorsLocked(vehicle, modifications[2])
|
SetVehicleDoorsLocked(vehicle, modifications[2])
|
||||||
|
|
||||||
-- colours
|
-- colours
|
||||||
SetVehicleColours(vehicle, modifications[10], modifications[11])
|
SetVehicleColours(vehicle, modifications[10], modifications[11])
|
||||||
if (modifications[73]) then
|
if (modifications[73]) then
|
||||||
SetVehicleCustomPrimaryColour(vehicle, modifications[73][1], modifications[73][2], modifications[73][3])
|
SetVehicleCustomPrimaryColour(vehicle, modifications[73][1], modifications[73][2], modifications[73][3])
|
||||||
end
|
end
|
||||||
if (modifications[74]) then
|
if (modifications[74]) then
|
||||||
SetVehicleCustomSecondaryColour(vehicle, modifications[74][1], modifications[74][2], modifications[74][3])
|
SetVehicleCustomSecondaryColour(vehicle, modifications[74][1], modifications[74][2], modifications[74][3])
|
||||||
end
|
end
|
||||||
if (modifications[75]) then
|
if (modifications[75]) then
|
||||||
SetVehicleInteriorColor(vehicle, modifications[75])
|
SetVehicleInteriorColor(vehicle, modifications[75])
|
||||||
end
|
end
|
||||||
|
|
||||||
SetVehicleExtraColours(vehicle, modifications[12], modifications[13])
|
SetVehicleExtraColours(vehicle, modifications[12], modifications[13])
|
||||||
|
|
||||||
SetVehicleTyreSmokeColor(vehicle, modifications[20][1], modifications[20][2], modifications[20][3])
|
SetVehicleTyreSmokeColor(vehicle, modifications[20][1], modifications[20][2], modifications[20][3])
|
||||||
|
|
||||||
-- wheels
|
-- wheels
|
||||||
SetVehicleWheelType(vehicle, modifications[14])
|
SetVehicleWheelType(vehicle, modifications[14])
|
||||||
|
|
||||||
-- windows
|
-- windows
|
||||||
SetVehicleWindowTint(vehicle, modifications[17])
|
SetVehicleWindowTint(vehicle, modifications[17])
|
||||||
|
|
||||||
-- neonlight
|
-- neonlight
|
||||||
SetVehicleNeonLightEnabled(vehicle, 0, modifications[18][1])
|
SetVehicleNeonLightEnabled(vehicle, 0, modifications[18][1])
|
||||||
SetVehicleNeonLightEnabled(vehicle, 1, modifications[18][2])
|
SetVehicleNeonLightEnabled(vehicle, 1, modifications[18][2])
|
||||||
SetVehicleNeonLightEnabled(vehicle, 2, modifications[18][3])
|
SetVehicleNeonLightEnabled(vehicle, 2, modifications[18][3])
|
||||||
SetVehicleNeonLightEnabled(vehicle, 3, modifications[18][4])
|
SetVehicleNeonLightEnabled(vehicle, 3, modifications[18][4])
|
||||||
|
|
||||||
SetVehicleNeonLightsColour(vehicle, modifications[19][1], modifications[19][2], modifications[19][3])
|
SetVehicleNeonLightsColour(vehicle, modifications[19][1], modifications[19][2], modifications[19][3])
|
||||||
|
|
||||||
-- mods
|
-- mods
|
||||||
SetVehicleMod(vehicle, 0, modifications[22], modifications[15])
|
SetVehicleMod(vehicle, 0, modifications[22], modifications[15])
|
||||||
SetVehicleMod(vehicle, 1, modifications[23], modifications[15])
|
SetVehicleMod(vehicle, 1, modifications[23], modifications[15])
|
||||||
SetVehicleMod(vehicle, 2, modifications[24], modifications[15])
|
SetVehicleMod(vehicle, 2, modifications[24], modifications[15])
|
||||||
SetVehicleMod(vehicle, 3, modifications[25], modifications[15])
|
SetVehicleMod(vehicle, 3, modifications[25], modifications[15])
|
||||||
SetVehicleMod(vehicle, 4, modifications[26], modifications[15])
|
SetVehicleMod(vehicle, 4, modifications[26], modifications[15])
|
||||||
SetVehicleMod(vehicle, 5, modifications[27], modifications[15])
|
SetVehicleMod(vehicle, 5, modifications[27], modifications[15])
|
||||||
SetVehicleMod(vehicle, 6, modifications[28], modifications[15])
|
SetVehicleMod(vehicle, 6, modifications[28], modifications[15])
|
||||||
SetVehicleMod(vehicle, 7, modifications[29], modifications[15])
|
SetVehicleMod(vehicle, 7, modifications[29], modifications[15])
|
||||||
SetVehicleMod(vehicle, 8, modifications[30], modifications[15])
|
SetVehicleMod(vehicle, 8, modifications[30], modifications[15])
|
||||||
SetVehicleMod(vehicle, 9, modifications[31], modifications[15])
|
SetVehicleMod(vehicle, 9, modifications[31], modifications[15])
|
||||||
SetVehicleMod(vehicle, 10, modifications[32], modifications[15])
|
SetVehicleMod(vehicle, 10, modifications[32], modifications[15])
|
||||||
|
|
||||||
SetVehicleMod(vehicle, 11, modifications[33], modifications[15])
|
SetVehicleMod(vehicle, 11, modifications[33], modifications[15])
|
||||||
SetVehicleMod(vehicle, 12, modifications[34], modifications[15])
|
SetVehicleMod(vehicle, 12, modifications[34], modifications[15])
|
||||||
SetVehicleMod(vehicle, 13, modifications[35], modifications[15])
|
SetVehicleMod(vehicle, 13, modifications[35], modifications[15])
|
||||||
|
|
||||||
SetVehicleMod(vehicle, 14, modifications[36], modifications[15])
|
SetVehicleMod(vehicle, 14, modifications[36], modifications[15])
|
||||||
|
|
||||||
SetVehicleMod(vehicle, 15, modifications[37], modifications[15])
|
SetVehicleMod(vehicle, 15, modifications[37], modifications[15])
|
||||||
SetVehicleMod(vehicle, 16, modifications[38], modifications[15])
|
SetVehicleMod(vehicle, 16, modifications[38], modifications[15])
|
||||||
|
|
||||||
ToggleVehicleMod(vehicle, 18, modifications[39])
|
ToggleVehicleMod(vehicle, 18, modifications[39])
|
||||||
ToggleVehicleMod(vehicle, 20, modifications[40])
|
ToggleVehicleMod(vehicle, 20, modifications[40])
|
||||||
ToggleVehicleMod(vehicle, 22, modifications[41])
|
ToggleVehicleMod(vehicle, 22, modifications[41])
|
||||||
|
|
||||||
SetVehicleMod(vehicle, 23, modifications[42], modifications[15])
|
SetVehicleMod(vehicle, 23, modifications[42], modifications[15])
|
||||||
SetVehicleMod(vehicle, 24, modifications[43], modifications[16])
|
SetVehicleMod(vehicle, 24, modifications[43], modifications[16])
|
||||||
|
|
||||||
SetVehicleMod(vehicle, 25, modifications[44], modifications[15])
|
SetVehicleMod(vehicle, 25, modifications[44], modifications[15])
|
||||||
SetVehicleMod(vehicle, 26, modifications[45], modifications[15])
|
SetVehicleMod(vehicle, 26, modifications[45], modifications[15])
|
||||||
SetVehicleMod(vehicle, 27, modifications[46], modifications[15])
|
SetVehicleMod(vehicle, 27, modifications[46], modifications[15])
|
||||||
SetVehicleMod(vehicle, 28, modifications[47], modifications[15])
|
SetVehicleMod(vehicle, 28, modifications[47], modifications[15])
|
||||||
SetVehicleMod(vehicle, 29, modifications[48], modifications[15])
|
SetVehicleMod(vehicle, 29, modifications[48], modifications[15])
|
||||||
SetVehicleMod(vehicle, 30, modifications[49], modifications[15])
|
SetVehicleMod(vehicle, 30, modifications[49], modifications[15])
|
||||||
SetVehicleMod(vehicle, 31, modifications[50], modifications[15])
|
SetVehicleMod(vehicle, 31, modifications[50], modifications[15])
|
||||||
SetVehicleMod(vehicle, 32, modifications[51], modifications[15])
|
SetVehicleMod(vehicle, 32, modifications[51], modifications[15])
|
||||||
SetVehicleMod(vehicle, 33, modifications[52], modifications[15])
|
SetVehicleMod(vehicle, 33, modifications[52], modifications[15])
|
||||||
SetVehicleMod(vehicle, 34, modifications[53], modifications[15])
|
SetVehicleMod(vehicle, 34, modifications[53], modifications[15])
|
||||||
SetVehicleMod(vehicle, 35, modifications[54], modifications[15])
|
SetVehicleMod(vehicle, 35, modifications[54], modifications[15])
|
||||||
SetVehicleMod(vehicle, 36, modifications[55], modifications[15])
|
SetVehicleMod(vehicle, 36, modifications[55], modifications[15])
|
||||||
SetVehicleMod(vehicle, 37, modifications[56], modifications[15])
|
SetVehicleMod(vehicle, 37, modifications[56], modifications[15])
|
||||||
SetVehicleMod(vehicle, 38, modifications[57], modifications[15])
|
SetVehicleMod(vehicle, 38, modifications[57], modifications[15])
|
||||||
SetVehicleMod(vehicle, 39, modifications[58], modifications[15])
|
SetVehicleMod(vehicle, 39, modifications[58], modifications[15])
|
||||||
SetVehicleMod(vehicle, 40, modifications[59], modifications[15])
|
SetVehicleMod(vehicle, 40, modifications[59], modifications[15])
|
||||||
SetVehicleMod(vehicle, 41, modifications[60], modifications[15])
|
SetVehicleMod(vehicle, 41, modifications[60], modifications[15])
|
||||||
SetVehicleMod(vehicle, 42, modifications[61], modifications[15])
|
SetVehicleMod(vehicle, 42, modifications[61], modifications[15])
|
||||||
SetVehicleMod(vehicle, 43, modifications[62], modifications[15])
|
SetVehicleMod(vehicle, 43, modifications[62], modifications[15])
|
||||||
SetVehicleMod(vehicle, 44, modifications[63], modifications[15])
|
SetVehicleMod(vehicle, 44, modifications[63], modifications[15])
|
||||||
SetVehicleMod(vehicle, 45, modifications[64], modifications[15])
|
SetVehicleMod(vehicle, 45, modifications[64], modifications[15])
|
||||||
SetVehicleMod(vehicle, 46, modifications[65], modifications[15])
|
SetVehicleMod(vehicle, 46, modifications[65], modifications[15])
|
||||||
SetVehicleMod(vehicle, 48, modifications[66], modifications[15])
|
SetVehicleMod(vehicle, 48, modifications[66], modifications[15])
|
||||||
|
|
||||||
SetVehicleLivery(vehicle, modifications[67])
|
SetVehicleLivery(vehicle, modifications[67])
|
||||||
|
|
||||||
-- extras
|
-- extras
|
||||||
for i = 1, #modifications[21], 1 do
|
for i = 1, #modifications[21], 1 do
|
||||||
SetVehicleExtra(vehicle, modifications[21][i][1], modifications[21][i][2])
|
SetVehicleExtra(vehicle, modifications[21][i][1], modifications[21][i][2])
|
||||||
end
|
end
|
||||||
|
|
||||||
-- stats
|
-- stats
|
||||||
SetEntityHealth(vehicle, modifications[3])
|
SetEntityHealth(vehicle, modifications[3])
|
||||||
SetVehicleBodyHealth(vehicle, modifications[4])
|
SetVehicleBodyHealth(vehicle, modifications[4])
|
||||||
SetVehicleEngineHealth(vehicle, modifications[5])
|
SetVehicleEngineHealth(vehicle, modifications[5])
|
||||||
SetVehiclePetrolTankHealth(vehicle, modifications[6])
|
SetVehiclePetrolTankHealth(vehicle, modifications[6])
|
||||||
if (Config.renderScorched and (modifications[5] < -3999.0 or modifications[6] < -999.0)) then
|
if (Config.renderScorched and (modifications[5] < -3999.0 or modifications[6] < -999.0)) then
|
||||||
TriggerServerEvent("mh_Parking:renderScorched", NetworkGetNetworkIdFromEntity(vehicle), true)
|
TriggerServerEvent("mh_Parking:renderScorched", NetworkGetNetworkIdFromEntity(vehicle), true)
|
||||||
end
|
end
|
||||||
|
|
||||||
SetVehicleDirtLevel(vehicle, modifications[7])
|
SetVehicleDirtLevel(vehicle, modifications[7])
|
||||||
exports[Config.exports]:SetFuel(vehicle, modifications[8])
|
exports[Config.exports]:SetFuel(vehicle, modifications[8])
|
||||||
|
|
||||||
---------------------------------------------------------------------- Implementierung Miho
|
---------------------------------------------------------------------- Implementierung Miho
|
||||||
--[[
|
--[[
|
||||||
fuel = modifications[8]
|
fuel = modifications[8]
|
||||||
if type(fuel) == 'number' and fuel >= 0 and fuel <= 100 then
|
if type(fuel) == 'number' and fuel >= 0 and fuel <= 100 then
|
||||||
SetVehicleFuelLevel(vehicle, fuel + 0.0)
|
SetVehicleFuelLevel(vehicle, fuel + 0.0)
|
||||||
DecorSetFloat(vehicle, Config.FuelDecor, GetVehicleFuelLevel(vehicle))
|
DecorSetFloat(vehicle, Config.FuelDecor, GetVehicleFuelLevel(vehicle))
|
||||||
end
|
end
|
||||||
]]
|
]]
|
||||||
---------------------------------------------------------------------- Implementierung Miho ENDE
|
---------------------------------------------------------------------- Implementierung Miho ENDE
|
||||||
|
|
||||||
|
|
||||||
-- doors
|
-- doors
|
||||||
for i = 1, #modifications[68], 1 do
|
for i = 1, #modifications[68], 1 do
|
||||||
SetVehicleDoorBroken(vehicle, modifications[68][i], true)
|
SetVehicleDoorBroken(vehicle, modifications[68][i], true)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- tires
|
-- tires
|
||||||
SetVehicleTyresCanBurst(vehicle, not modifications[69])
|
SetVehicleTyresCanBurst(vehicle, not modifications[69])
|
||||||
if (not modifications[69]) then
|
if (not modifications[69]) then
|
||||||
for i = 1, #modifications[70], 1 do
|
for i = 1, #modifications[70], 1 do
|
||||||
SetVehicleTyreBurst(vehicle, modifications[70][i][1], modifications[70][i][2], 1000.0)
|
SetVehicleTyreBurst(vehicle, modifications[70][i][1], modifications[70][i][2], 1000.0)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- windows
|
-- windows
|
||||||
for i = 1, #modifications[71], 1 do
|
for i = 1, #modifications[71], 1 do
|
||||||
SmashVehicleWindow(vehicle, modifications[71][i])
|
SmashVehicleWindow(vehicle, modifications[71][i])
|
||||||
end
|
end
|
||||||
|
|
||||||
-- xenon lights
|
-- xenon lights
|
||||||
if (modifications[72]) then
|
if (modifications[72]) then
|
||||||
SetVehicleXenonLightsColour(vehicle, modifications[72])
|
SetVehicleXenonLightsColour(vehicle, modifications[72])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Return closest loaded vehicle entity or nil if no vehicle is found
|
-- Return closest loaded vehicle entity or nil if no vehicle is found
|
||||||
function GetClosestVehicle(position, maxRadius)
|
function GetClosestVehicle(position, maxRadius)
|
||||||
local vehicles = GetAllVehicles()
|
local vehicles = GetAllVehicles()
|
||||||
local dist = maxRadius
|
local dist = maxRadius
|
||||||
local closestVehicle = nil
|
local closestVehicle = nil
|
||||||
|
|
||||||
for i=1, #vehicles, 1 do
|
for i=1, #vehicles, 1 do
|
||||||
local vehicleCoords = GetEntityCoords(vehicles[i])
|
local vehicleCoords = GetEntityCoords(vehicles[i])
|
||||||
local tempDist = Vdist(vehicleCoords.x, vehicleCoords.y, vehicleCoords.z, position.x, position.y, position.z)
|
local tempDist = Vdist(vehicleCoords.x, vehicleCoords.y, vehicleCoords.z, position.x, position.y, position.z)
|
||||||
if (tempDist < dist) then
|
if (tempDist < dist) then
|
||||||
dist = tempDist
|
dist = tempDist
|
||||||
closestVehicle = vehicles[i]
|
closestVehicle = vehicles[i]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if (closestVehicle ~= nil and DoesEntityExist(closestVehicle)) then
|
if (closestVehicle ~= nil and DoesEntityExist(closestVehicle)) then
|
||||||
return closestVehicle
|
return closestVehicle
|
||||||
else
|
else
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Returns all loaded vehicles on client side
|
-- Returns all loaded vehicles on client side
|
||||||
function GetAllVehicles()
|
function GetAllVehicles()
|
||||||
local vehicles = {}
|
local vehicles = {}
|
||||||
|
|
||||||
for vehicle in EnumerateVehicles() do
|
for vehicle in EnumerateVehicles() do
|
||||||
table.insert(vehicles, vehicle)
|
table.insert(vehicles, vehicle)
|
||||||
end
|
end
|
||||||
|
|
||||||
return vehicles
|
return vehicles
|
||||||
end
|
end
|
||||||
|
|
||||||
function IsVehicleBlacklisted(vehicle)
|
function IsVehicleBlacklisted(vehicle)
|
||||||
-- check class
|
-- check class
|
||||||
local class = GetVehicleClass(vehicle)
|
local class = GetVehicleClass(vehicle)
|
||||||
for i = 1, #Config.classesBlacklist, 1 do
|
for i = 1, #Config.classesBlacklist, 1 do
|
||||||
if (class == Config.classesBlacklist[i]) then
|
if (class == Config.classesBlacklist[i]) then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- check model
|
-- check model
|
||||||
local modelHash = GetEntityModel(vehicle)
|
local modelHash = GetEntityModel(vehicle)
|
||||||
for i = 1, #Config.vehiclesBlacklist, 1 do
|
for i = 1, #Config.vehiclesBlacklist, 1 do
|
||||||
if (modelHash == Config.vehiclesBlacklist[i]) then
|
if (modelHash == Config.vehiclesBlacklist[i]) then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
function GetVehiclePosition(plate)
|
function GetVehiclePosition(plate)
|
||||||
if (GetResourceState("kimi_callbacks") ~= "started") then
|
if (GetResourceState("kimi_callbacks") ~= "started") then
|
||||||
Log("^1[ERROR] \"kimi_callbacks\" is either not installed properly or hasn't been started!")
|
Log("^1[ERROR] \"kimi_callbacks\" is either not installed properly or hasn't been started!")
|
||||||
Log("^1[ERROR] The export \"GetVehiclePosition\" can only be used when having this resource installed.")
|
Log("^1[ERROR] The export \"GetVehiclePosition\" can only be used when having this resource installed.")
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
if (plate == nil) then
|
if (plate == nil) then
|
||||||
Log("^1[ERROR] \"plate\" was nil while trying to call export \"GetVehiclePosition\"!")
|
Log("^1[ERROR] \"plate\" was nil while trying to call export \"GetVehiclePosition\"!")
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
if (type(plate) ~= "string") then
|
if (type(plate) ~= "string") then
|
||||||
Log("^1[ERROR] \"plate\" (\"" .. plate .. "\") needs to be of type string when calling export \"GetVehiclePosition\"!")
|
Log("^1[ERROR] \"plate\" (\"" .. plate .. "\") needs to be of type string when calling export \"GetVehiclePosition\"!")
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
local position = exports["kimi_callbacks"]:Trigger("AP:getVehiclePosition", plate:upper())
|
local position = exports["kimi_callbacks"]:Trigger("AP:getVehiclePosition", plate:upper())
|
||||||
|
|
||||||
return position
|
return position
|
||||||
end
|
end
|
||||||
|
|
||||||
function GetVehiclePositions(...)
|
function GetVehiclePositions(...)
|
||||||
if (GetResourceState("kimi_callbacks") ~= "started") then
|
if (GetResourceState("kimi_callbacks") ~= "started") then
|
||||||
Log("^1[ERROR] \"kimi_callbacks\" is either not installed properly or hasn't been started!")
|
Log("^1[ERROR] \"kimi_callbacks\" is either not installed properly or hasn't been started!")
|
||||||
Log("^1[ERROR] The export \"GetVehiclePositions\" can only be used when having this resource installed.")
|
Log("^1[ERROR] The export \"GetVehiclePositions\" can only be used when having this resource installed.")
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
local plates = { ... }
|
local plates = { ... }
|
||||||
|
|
||||||
for i, plate in ipairs(plates) do
|
for i, plate in ipairs(plates) do
|
||||||
if (plate == nil) then
|
if (plate == nil) then
|
||||||
Log("^1[ERROR] \"plate\" (Index: \"" .. i .. "\") was nil while trying to call export \"GetVehiclePositions\"!")
|
Log("^1[ERROR] \"plate\" (Index: \"" .. i .. "\") was nil while trying to call export \"GetVehiclePositions\"!")
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
if (type(plate) ~= "string") then
|
if (type(plate) ~= "string") then
|
||||||
Log("^1[ERROR] \"plate\" (\"" .. plate .. "\") (Index: " .. i .. ") needs to be of type string when calling export \"GetVehiclePositions\"!")
|
Log("^1[ERROR] \"plate\" (\"" .. plate .. "\") (Index: " .. i .. ") needs to be of type string when calling export \"GetVehiclePositions\"!")
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
plates[i] = plates[i]:upper()
|
plates[i] = plates[i]:upper()
|
||||||
end
|
end
|
||||||
|
|
||||||
local data = exports["kimi_callbacks"]:Trigger("AP:getVehiclePositions", plates)
|
local data = exports["kimi_callbacks"]:Trigger("AP:getVehiclePositions", plates)
|
||||||
|
|
||||||
return data
|
return data
|
||||||
end
|
end
|
||||||
|
|
||||||
-- getting all vehicles
|
-- getting all vehicles
|
||||||
function EnumerateVehicles()
|
function EnumerateVehicles()
|
||||||
return EnumerateEntities(FindFirstVehicle, FindNextVehicle, EndFindVehicle)
|
return EnumerateEntities(FindFirstVehicle, FindNextVehicle, EndFindVehicle)
|
||||||
end
|
end
|
||||||
function EnumerateEntities(initFunc, moveFunc, disposeFunc)
|
function EnumerateEntities(initFunc, moveFunc, disposeFunc)
|
||||||
return coroutine.wrap(function()
|
return coroutine.wrap(function()
|
||||||
local iter, id = initFunc()
|
local iter, id = initFunc()
|
||||||
if not id or id == 0 then
|
if not id or id == 0 then
|
||||||
disposeFunc(iter)
|
disposeFunc(iter)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local enum = {handle = iter, destructor = disposeFunc}
|
local enum = {handle = iter, destructor = disposeFunc}
|
||||||
setmetatable(enum, entityEnumerator)
|
setmetatable(enum, entityEnumerator)
|
||||||
|
|
||||||
local next = true
|
local next = true
|
||||||
repeat
|
repeat
|
||||||
coroutine.yield(id)
|
coroutine.yield(id)
|
||||||
next, id = moveFunc(iter)
|
next, id = moveFunc(iter)
|
||||||
until not next
|
until not next
|
||||||
|
|
||||||
enum.destructor, enum.handle = nil, nil
|
enum.destructor, enum.handle = nil, nil
|
||||||
disposeFunc(iter)
|
disposeFunc(iter)
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
local entityEnumerator = {
|
local entityEnumerator = {
|
||||||
__gc = function(enum)
|
__gc = function(enum)
|
||||||
if enum.destructor and enum.handle then
|
if enum.destructor and enum.handle then
|
||||||
enum.destructor(enum.handle)
|
enum.destructor(enum.handle)
|
||||||
end
|
end
|
||||||
enum.destructor = nil
|
enum.destructor = nil
|
||||||
enum.handle = nil
|
enum.handle = nil
|
||||||
end
|
end
|
||||||
}
|
}
|
|
@ -1,210 +1,210 @@
|
||||||
local enabled = true
|
local enabled = true
|
||||||
|
|
||||||
Citizen.CreateThread(function()
|
Citizen.CreateThread(function()
|
||||||
while (true) do
|
while (true) do
|
||||||
local playerPed = PlayerPedId()
|
local playerPed = PlayerPedId()
|
||||||
if (DoesEntityExist(playerPed)) then
|
if (DoesEntityExist(playerPed)) then
|
||||||
TriggerServerEvent("mh_Parking:syncPlayerPosition", GetEntityCoords(playerPed))
|
TriggerServerEvent("mh_Parking:syncPlayerPosition", GetEntityCoords(playerPed))
|
||||||
end
|
end
|
||||||
|
|
||||||
Citizen.Wait(3000)
|
Citizen.Wait(3000)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
Citizen.CreateThread(function()
|
Citizen.CreateThread(function()
|
||||||
while (true) do
|
while (true) do
|
||||||
Citizen.Wait(5 * 60 * 1000)
|
Citizen.Wait(5 * 60 * 1000)
|
||||||
|
|
||||||
local vehicle = GetVehiclePedIsIn(PlayerPedId())
|
local vehicle = GetVehiclePedIsIn(PlayerPedId())
|
||||||
if (DoesEntityExist(vehicle)) then
|
if (DoesEntityExist(vehicle)) then
|
||||||
TriggerEvent("mh_Parking:updateVehicle", vehicle)
|
TriggerEvent("mh_Parking:updateVehicle", vehicle)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
Citizen.CreateThread(function()
|
Citizen.CreateThread(function()
|
||||||
Citizen.Wait(3000)
|
Citizen.Wait(3000)
|
||||||
|
|
||||||
local isInVehicle = false
|
local isInVehicle = false
|
||||||
local currentVehiclePlate = nil
|
local currentVehiclePlate = nil
|
||||||
local wasDead = false
|
local wasDead = false
|
||||||
|
|
||||||
while (true) do
|
while (true) do
|
||||||
Citizen.Wait(50)
|
Citizen.Wait(50)
|
||||||
|
|
||||||
local playerPed = PlayerPedId()
|
local playerPed = PlayerPedId()
|
||||||
|
|
||||||
if (not isInVehicle and IsPedInAnyVehicle(playerPed)) then
|
if (not isInVehicle and IsPedInAnyVehicle(playerPed)) then
|
||||||
-- entered vehicle
|
-- entered vehicle
|
||||||
|
|
||||||
isInVehicle = true
|
isInVehicle = true
|
||||||
|
|
||||||
if (enabled) then
|
if (enabled) then
|
||||||
local vehicle = GetVehiclePedIsIn(playerPed, false)
|
local vehicle = GetVehiclePedIsIn(playerPed, false)
|
||||||
if (NetworkGetEntityIsNetworked(vehicle) and not IsVehicleBlacklisted(vehicle)) then
|
if (NetworkGetEntityIsNetworked(vehicle) and not IsVehicleBlacklisted(vehicle)) then
|
||||||
local networkId = NetworkGetNetworkIdFromEntity(vehicle)
|
local networkId = NetworkGetNetworkIdFromEntity(vehicle)
|
||||||
SetNetworkIdCanMigrate(netId, true)
|
SetNetworkIdCanMigrate(netId, true)
|
||||||
local modifications = GetVehicleModifications(vehicle)
|
local modifications = GetVehicleModifications(vehicle)
|
||||||
|
|
||||||
currentVehiclePlate = GetVehicleNumberPlateText(vehicle)
|
currentVehiclePlate = GetVehicleNumberPlateText(vehicle)
|
||||||
|
|
||||||
TriggerServerEvent("mh_Parking:enteredVehicle", networkId, currentVehiclePlate, modifications)
|
TriggerServerEvent("mh_Parking:enteredVehicle", networkId, currentVehiclePlate, modifications)
|
||||||
|
|
||||||
Log("Vehicle " .. currentVehiclePlate .. " entered")
|
Log("Vehicle " .. currentVehiclePlate .. " entered")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
elseif (isInVehicle and not IsPedInAnyVehicle(playerPed, false)) then
|
elseif (isInVehicle and not IsPedInAnyVehicle(playerPed, false)) then
|
||||||
-- left vehicle
|
-- left vehicle
|
||||||
|
|
||||||
isInVehicle = false
|
isInVehicle = false
|
||||||
|
|
||||||
if (enabled and not wasDead) then
|
if (enabled and not wasDead) then
|
||||||
local vehicle = GetVehiclePedIsIn(playerPed, true)
|
local vehicle = GetVehiclePedIsIn(playerPed, true)
|
||||||
|
|
||||||
if (vehicle ~= 0) then
|
if (vehicle ~= 0) then
|
||||||
if (NetworkGetEntityIsNetworked(vehicle) and not IsVehicleBlacklisted(vehicle)) then
|
if (NetworkGetEntityIsNetworked(vehicle) and not IsVehicleBlacklisted(vehicle)) then
|
||||||
local networkId = NetworkGetNetworkIdFromEntity(vehicle)
|
local networkId = NetworkGetNetworkIdFromEntity(vehicle)
|
||||||
SetNetworkIdCanMigrate(netId, true)
|
SetNetworkIdCanMigrate(netId, true)
|
||||||
local modifications = GetVehicleModifications(vehicle)
|
local modifications = GetVehicleModifications(vehicle)
|
||||||
|
|
||||||
TriggerServerEvent("mh_Parking:leftVehicle", networkId, modifications)
|
TriggerServerEvent("mh_Parking:leftVehicle", networkId, modifications)
|
||||||
|
|
||||||
Log("Vehicle " .. GetVehicleNumberPlateText(vehicle) .. " left")
|
Log("Vehicle " .. GetVehicleNumberPlateText(vehicle) .. " left")
|
||||||
|
|
||||||
-- if vehicle is deleted soon after
|
-- if vehicle is deleted soon after
|
||||||
Citizen.CreateThread(function()
|
Citizen.CreateThread(function()
|
||||||
local veh = vehicle
|
local veh = vehicle
|
||||||
local plate = GetVehicleNumberPlateText(veh)
|
local plate = GetVehicleNumberPlateText(veh)
|
||||||
local startTime = GetGameTimer()
|
local startTime = GetGameTimer()
|
||||||
local playerPed = PlayerPedId()
|
local playerPed = PlayerPedId()
|
||||||
local playerPos
|
local playerPos
|
||||||
|
|
||||||
while (true) do
|
while (true) do
|
||||||
Citizen.Wait(0)
|
Citizen.Wait(0)
|
||||||
|
|
||||||
if (GetGameTimer() - startTime >= 1000) then
|
if (GetGameTimer() - startTime >= 1000) then
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
|
|
||||||
if (not DoesEntityExist(veh)) then
|
if (not DoesEntityExist(veh)) then
|
||||||
TriggerServerEvent("mh_Parking:deleteVehicle", plate, false)
|
TriggerServerEvent("mh_Parking:deleteVehicle", plate, false)
|
||||||
|
|
||||||
Log("Vehicle " .. currentVehiclePlate .. " left and deleted after exit")
|
Log("Vehicle " .. currentVehiclePlate .. " left and deleted after exit")
|
||||||
|
|
||||||
currentVehiclePlate = nil
|
currentVehiclePlate = nil
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
|
|
||||||
playerPed = PlayerPedId()
|
playerPed = PlayerPedId()
|
||||||
playerPos = GetEntityCoords(playerPed)
|
playerPos = GetEntityCoords(playerPed)
|
||||||
vehPos = GetEntityCoords(veh)
|
vehPos = GetEntityCoords(veh)
|
||||||
|
|
||||||
if (Vdist(playerPos.x, playerPos.y, playerPos.z, vehPos.x, vehPos.y, vehPos.z) > 50.0) then
|
if (Vdist(playerPos.x, playerPos.y, playerPos.z, vehPos.x, vehPos.y, vehPos.z) > 50.0) then
|
||||||
currentVehiclePlate = nil
|
currentVehiclePlate = nil
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
currentVehiclePlate = nil
|
currentVehiclePlate = nil
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
elseif (currentVehiclePlate) then
|
elseif (currentVehiclePlate) then
|
||||||
TriggerServerEvent("mh_Parking:deleteVehicle", currentVehiclePlate, false)
|
TriggerServerEvent("mh_Parking:deleteVehicle", currentVehiclePlate, false)
|
||||||
|
|
||||||
Log("Vehicle " .. currentVehiclePlate .. " left and deleted")
|
Log("Vehicle " .. currentVehiclePlate .. " left and deleted")
|
||||||
|
|
||||||
currentVehiclePlate = nil
|
currentVehiclePlate = nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if (not wasDead and IsPlayerDead(PlayerId())) then
|
if (not wasDead and IsPlayerDead(PlayerId())) then
|
||||||
wasDead = true
|
wasDead = true
|
||||||
elseif (wasDead and not IsPlayerDead(PlayerId())) then
|
elseif (wasDead and not IsPlayerDead(PlayerId())) then
|
||||||
Citizen.CreateThread(function()
|
Citizen.CreateThread(function()
|
||||||
Citizen.Wait(1000)
|
Citizen.Wait(1000)
|
||||||
|
|
||||||
wasDead = false
|
wasDead = false
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
RegisterNetEvent("mh_Parking:setVehicleMods")
|
RegisterNetEvent("mh_Parking:setVehicleMods")
|
||||||
AddEventHandler("mh_Parking:setVehicleMods", function(netId, plate, modifications)
|
AddEventHandler("mh_Parking:setVehicleMods", function(netId, plate, modifications)
|
||||||
if (not IsModelInCdimage(modifications[1])) then
|
if (not IsModelInCdimage(modifications[1])) then
|
||||||
Log("Setting mods for " .. plate .. " failed. The model does NOT exist.")
|
Log("Setting mods for " .. plate .. " failed. The model does NOT exist.")
|
||||||
TriggerServerEvent("mh_Parking:modelDoesNotExist", plate)
|
TriggerServerEvent("mh_Parking:modelDoesNotExist", plate)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local timer = GetGameTimer()
|
local timer = GetGameTimer()
|
||||||
while (not NetworkDoesEntityExistWithNetworkId(netId)) do
|
while (not NetworkDoesEntityExistWithNetworkId(netId)) do
|
||||||
Citizen.Wait(0)
|
Citizen.Wait(0)
|
||||||
|
|
||||||
if (GetGameTimer() - 10000 > timer) then
|
if (GetGameTimer() - 10000 > timer) then
|
||||||
Log("Setting mods for " .. plate .. " failed after 10s")
|
Log("Setting mods for " .. plate .. " failed after 10s")
|
||||||
TriggerServerEvent("mh_Parking:setVehicleModsFailed", plate)
|
TriggerServerEvent("mh_Parking:setVehicleModsFailed", plate)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local vehicle = NetworkGetEntityFromNetworkId(netId)
|
local vehicle = NetworkGetEntityFromNetworkId(netId)
|
||||||
|
|
||||||
if (DoesEntityExist(vehicle) and NetworkHasControlOfEntity(vehicle)) then
|
if (DoesEntityExist(vehicle) and NetworkHasControlOfEntity(vehicle)) then
|
||||||
Log("Setting modifications for vehicle " .. plate)
|
Log("Setting modifications for vehicle " .. plate)
|
||||||
|
|
||||||
SetVehicleModifications(vehicle, plate, modifications)
|
SetVehicleModifications(vehicle, plate, modifications)
|
||||||
TriggerServerEvent("mh_Parking:setVehicleModsSuccess", plate)
|
TriggerServerEvent("mh_Parking:setVehicleModsSuccess", plate)
|
||||||
else
|
else
|
||||||
Log("Setting mods failed for vehicle " .. plate .. ". Vehicle does not exist")
|
Log("Setting mods failed for vehicle " .. plate .. ". Vehicle does not exist")
|
||||||
TriggerServerEvent("mh_Parking:setVehicleModsFailed", plate)
|
TriggerServerEvent("mh_Parking:setVehicleModsFailed", plate)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
AddEventHandler("mh_Parking:updateVehicle", function(vehicle)
|
AddEventHandler("mh_Parking:updateVehicle", function(vehicle)
|
||||||
if (vehicle == nil) then
|
if (vehicle == nil) then
|
||||||
Log("^1[ERROR] \"vehicle\" was nil while trying to update a vehicle!")
|
Log("^1[ERROR] \"vehicle\" was nil while trying to update a vehicle!")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if (DoesEntityExist(vehicle) and NetworkGetEntityIsNetworked(vehicle) and not IsVehicleBlacklisted(vehicle)) then
|
if (DoesEntityExist(vehicle) and NetworkGetEntityIsNetworked(vehicle) and not IsVehicleBlacklisted(vehicle)) then
|
||||||
Log("Triggering manual update of vehicle")
|
Log("Triggering manual update of vehicle")
|
||||||
|
|
||||||
local networkId = NetworkGetNetworkIdFromEntity(vehicle)
|
local networkId = NetworkGetNetworkIdFromEntity(vehicle)
|
||||||
local modifications = GetVehicleModifications(vehicle)
|
local modifications = GetVehicleModifications(vehicle)
|
||||||
|
|
||||||
TriggerServerEvent("mh_Parking:updateVehicle", networkId, modifications)
|
TriggerServerEvent("mh_Parking:updateVehicle", networkId, modifications)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
RegisterNetEvent("mh_Parking:enable")
|
RegisterNetEvent("mh_Parking:enable")
|
||||||
AddEventHandler("mh_Parking:enable", function(enable)
|
AddEventHandler("mh_Parking:enable", function(enable)
|
||||||
if (enable == nil) then
|
if (enable == nil) then
|
||||||
Log("^1[ERROR] \"enable\" was nil while trying to enable/disable script!")
|
Log("^1[ERROR] \"enable\" was nil while trying to enable/disable script!")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
enabled = enable
|
enabled = enable
|
||||||
|
|
||||||
if (enabled) then
|
if (enabled) then
|
||||||
Log("AdvancedParking enabled")
|
Log("AdvancedParking enabled")
|
||||||
else
|
else
|
||||||
Log("AdvancedParking disabled")
|
Log("AdvancedParking disabled")
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
RegisterNetEvent("mh_Parking:notification")
|
RegisterNetEvent("mh_Parking:notification")
|
||||||
AddEventHandler("mh_Parking:notification", function(msg)
|
AddEventHandler("mh_Parking:notification", function(msg)
|
||||||
SetNotificationTextEntry('STRING')
|
SetNotificationTextEntry('STRING')
|
||||||
AddTextComponentSubstringPlayerName(msg)
|
AddTextComponentSubstringPlayerName(msg)
|
||||||
DrawNotification(false, true)
|
DrawNotification(false, true)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
RegisterNetEvent("mh_Parking:renderScorched")
|
RegisterNetEvent("mh_Parking:renderScorched")
|
||||||
AddEventHandler("mh_Parking:renderScorched", function(vehicleNetId, scorched)
|
AddEventHandler("mh_Parking:renderScorched", function(vehicleNetId, scorched)
|
||||||
local vehicle = NetworkGetEntityFromNetworkId(vehicleNetId)
|
local vehicle = NetworkGetEntityFromNetworkId(vehicleNetId)
|
||||||
if (DoesEntityExist(vehicle)) then
|
if (DoesEntityExist(vehicle)) then
|
||||||
SetEntityRenderScorched(vehicle, scorched)
|
SetEntityRenderScorched(vehicle, scorched)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
|
@ -1,64 +1,64 @@
|
||||||
Config = {}
|
Config = {}
|
||||||
|
|
||||||
Config.exports = "lc_fuel" -- LegacyFuel
|
Config.exports = "lc_fuel" -- LegacyFuel
|
||||||
|
|
||||||
-- set this to true if you want to see debug messages on client and server side
|
-- set this to true if you want to see debug messages on client and server side
|
||||||
Config.isDebug = false
|
Config.isDebug = false
|
||||||
|
|
||||||
-- this controls the distance at which vehicles will spawn to the closest player
|
-- this controls the distance at which vehicles will spawn to the closest player
|
||||||
-- (in meters)
|
-- (in meters)
|
||||||
Config.spawnDistance = 200.0
|
Config.spawnDistance = 200.0
|
||||||
|
|
||||||
-- this controls when a vehicle will be removed from the database table when
|
-- this controls when a vehicle will be removed from the database table when
|
||||||
-- calling the cleanup function (in hours; so 24 * 7 = one week)
|
-- calling the cleanup function (in hours; so 24 * 7 = one week)
|
||||||
Config.cleanUpThresholdTime = 24 * 7
|
Config.cleanUpThresholdTime = 24 * 7
|
||||||
|
|
||||||
-- set this to false if you do not want entities render as scorched when they
|
-- set this to false if you do not want entities render as scorched when they
|
||||||
-- are completely broken
|
-- are completely broken
|
||||||
Config.renderScorched = true
|
Config.renderScorched = true
|
||||||
|
|
||||||
-- vehicle classes that you do not want to save go here (remove the -- in front
|
-- vehicle classes that you do not want to save go here (remove the -- in front
|
||||||
-- of the number if you want it blacklisted)
|
-- of the number if you want it blacklisted)
|
||||||
Config.classesBlacklist = {
|
Config.classesBlacklist = {
|
||||||
-- 0, -- Compacts
|
-- 0, -- Compacts
|
||||||
-- 1, -- Sedans
|
-- 1, -- Sedans
|
||||||
-- 2, -- SUVs
|
-- 2, -- SUVs
|
||||||
-- 3, -- Coupes
|
-- 3, -- Coupes
|
||||||
-- 4, -- Muscle
|
-- 4, -- Muscle
|
||||||
-- 5, -- Sports Classics
|
-- 5, -- Sports Classics
|
||||||
-- 6, -- Sports
|
-- 6, -- Sports
|
||||||
-- 7, -- Super
|
-- 7, -- Super
|
||||||
-- 8, -- Motorcycles
|
-- 8, -- Motorcycles
|
||||||
-- 9, -- Off-road
|
-- 9, -- Off-road
|
||||||
--10, -- Industrial
|
--10, -- Industrial
|
||||||
--11, -- Utility
|
--11, -- Utility
|
||||||
--12, -- Vans
|
--12, -- Vans
|
||||||
--13, -- Cycles
|
--13, -- Cycles
|
||||||
--14, -- Boats
|
--14, -- Boats
|
||||||
--15, -- Helicopters
|
--15, -- Helicopters
|
||||||
--16, -- Planes
|
--16, -- Planes
|
||||||
--17, -- Service
|
--17, -- Service
|
||||||
--18, -- Emergency
|
--18, -- Emergency
|
||||||
--19, -- Military
|
--19, -- Military
|
||||||
--20, -- Commercial
|
--20, -- Commercial
|
||||||
21, -- Trains
|
21, -- Trains
|
||||||
}
|
}
|
||||||
-- other vehicles that you do not want to save can be inserted here (use `MODELNAME`
|
-- other vehicles that you do not want to save can be inserted here (use `MODELNAME`
|
||||||
-- when you put them in there)
|
-- when you put them in there)
|
||||||
Config.vehiclesBlacklist = {
|
Config.vehiclesBlacklist = {
|
||||||
--`blista`,
|
--`blista`,
|
||||||
}
|
}
|
||||||
|
|
||||||
-- this lets you control if vehicles should be deleted (in minutes; 0 if you do not
|
-- this lets you control if vehicles should be deleted (in minutes; 0 if you do not
|
||||||
-- want to use it; this is useful for large servers with a lot of players)
|
-- want to use it; this is useful for large servers with a lot of players)
|
||||||
Config.deleteTimer = 0
|
Config.deleteTimer = 0
|
||||||
-- despawns all vehicles that are more than x meters away from a player
|
-- despawns all vehicles that are more than x meters away from a player
|
||||||
Config.deleteDistance = 25.0
|
Config.deleteDistance = 25.0
|
||||||
-- when the notifications should be shown before the despawning
|
-- when the notifications should be shown before the despawning
|
||||||
-- needs to be in descending order in minutes and lower than Config.deleteTimer
|
-- needs to be in descending order in minutes and lower than Config.deleteTimer
|
||||||
Config.deleteNotificationTimes = { 5, 3, 2, 1 }
|
Config.deleteNotificationTimes = { 5, 3, 2, 1 }
|
||||||
-- notification to show players before deleting vehicles
|
-- notification to show players before deleting vehicles
|
||||||
-- (use %s as placeholder for time left in minutes)
|
-- (use %s as placeholder for time left in minutes)
|
||||||
Config.timeLeftNotification = "Fahrzeuge Despawn in %s Minuten."
|
Config.timeLeftNotification = "Fahrzeuge Despawn in %s Minuten."
|
||||||
-- notification to show players when deleting vehicles
|
-- notification to show players when deleting vehicles
|
||||||
Config.deleteNotification = "Lösche Fahrzeuge..."
|
Config.deleteNotification = "Lösche Fahrzeuge..."
|
|
@ -1,24 +1,24 @@
|
||||||
fx_version 'cerulean'
|
fx_version 'cerulean'
|
||||||
games { 'gta5' }
|
games { 'gta5' }
|
||||||
|
|
||||||
author 'Mîhó'
|
author 'Mîhó'
|
||||||
description 'Park all your vehicles anywhere!'
|
description 'Park all your vehicles anywhere!'
|
||||||
version '1.0.0'
|
version '1.0.0'
|
||||||
|
|
||||||
server_scripts {
|
server_scripts {
|
||||||
'@oxmysql/lib/MySQL.lua',
|
'@oxmysql/lib/MySQL.lua',
|
||||||
'config.lua',
|
'config.lua',
|
||||||
'sv_utils.lua',
|
'sv_utils.lua',
|
||||||
'server.lua'
|
'server.lua'
|
||||||
}
|
}
|
||||||
|
|
||||||
client_scripts {
|
client_scripts {
|
||||||
'config.lua',
|
'config.lua',
|
||||||
'cl_utils.lua',
|
'cl_utils.lua',
|
||||||
'client.lua'
|
'client.lua'
|
||||||
}
|
}
|
||||||
|
|
||||||
exports {
|
exports {
|
||||||
'GetVehiclePosition',
|
'GetVehiclePosition',
|
||||||
'GetVehiclePositions'
|
'GetVehiclePositions'
|
||||||
}
|
}
|
|
@ -1,32 +1,32 @@
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
-- Host: 127.0.0.1
|
-- Host: 127.0.0.1
|
||||||
-- Server version: 10.1.28-MariaDB - mariadb.org binary distribution
|
-- Server version: 10.1.28-MariaDB - mariadb.org binary distribution
|
||||||
-- Server OS: Win32
|
-- Server OS: Win32
|
||||||
-- HeidiSQL Version: 11.0.0.5919
|
-- HeidiSQL Version: 11.0.0.5919
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
/*!40101 SET NAMES utf8 */;
|
/*!40101 SET NAMES utf8 */;
|
||||||
/*!50503 SET NAMES utf8mb4 */;
|
/*!50503 SET NAMES utf8mb4 */;
|
||||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||||
|
|
||||||
-- Dumping structure for table fivem_testserver.vehicle_parking
|
-- Dumping structure for table fivem_testserver.vehicle_parking
|
||||||
CREATE TABLE IF NOT EXISTS `vehicle_parking` (
|
CREATE TABLE IF NOT EXISTS `vehicle_parking` (
|
||||||
`plate` varchar(8) NOT NULL,
|
`plate` varchar(8) NOT NULL,
|
||||||
`modifications` text NOT NULL,
|
`modifications` text NOT NULL,
|
||||||
`posX` float NOT NULL,
|
`posX` float NOT NULL,
|
||||||
`posY` float NOT NULL,
|
`posY` float NOT NULL,
|
||||||
`posZ` float NOT NULL,
|
`posZ` float NOT NULL,
|
||||||
`rotX` float NOT NULL,
|
`rotX` float NOT NULL,
|
||||||
`rotY` float NOT NULL,
|
`rotY` float NOT NULL,
|
||||||
`rotZ` float NOT NULL,
|
`rotZ` float NOT NULL,
|
||||||
`lastUpdate` int(11) NOT NULL DEFAULT '0',
|
`lastUpdate` int(11) NOT NULL DEFAULT '0',
|
||||||
PRIMARY KEY (`plate`)
|
PRIMARY KEY (`plate`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
-- Data exporting was unselected.
|
-- Data exporting was unselected.
|
||||||
|
|
||||||
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
|
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
|
||||||
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
|
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
|
||||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
File diff suppressed because it is too large
Load diff
|
@ -1,151 +1,151 @@
|
||||||
activePlayerPositions = {}
|
activePlayerPositions = {}
|
||||||
|
|
||||||
-- returns a loaded vehicled with a given number plate
|
-- returns a loaded vehicled with a given number plate
|
||||||
function TryGetLoadedVehicle(plate, loadedVehicles)
|
function TryGetLoadedVehicle(plate, loadedVehicles)
|
||||||
for i = 1, #loadedVehicles, 1 do
|
for i = 1, #loadedVehicles, 1 do
|
||||||
if (plate == GetVehicleNumberPlateText(loadedVehicles[i]) and DoesEntityExist(loadedVehicles[i])) then
|
if (plate == GetVehicleNumberPlateText(loadedVehicles[i]) and DoesEntityExist(loadedVehicles[i])) then
|
||||||
return loadedVehicles[i]
|
return loadedVehicles[i]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
function ContainsPlate(plate, vehiclePlates)
|
function ContainsPlate(plate, vehiclePlates)
|
||||||
for i = 1, #vehiclePlates, 1 do
|
for i = 1, #vehiclePlates, 1 do
|
||||||
if (plate == vehiclePlates[i]) then
|
if (plate == vehiclePlates[i]) then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Logs text to the server console
|
-- Logs text to the server console
|
||||||
function Log(text)
|
function Log(text)
|
||||||
if (Config.isDebug) then
|
if (Config.isDebug) then
|
||||||
Print(GetCurrentResourceName() .. ": " .. text)
|
Print(GetCurrentResourceName() .. ": " .. text)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- return the distance between two positions (Vector3)
|
-- return the distance between two positions (Vector3)
|
||||||
function Vector3Dist(v1, v2)
|
function Vector3Dist(v1, v2)
|
||||||
return math.sqrt( (v2.x - v1.x) * (v2.x - v1.x) + (v2.y - v1.y) * (v2.y - v1.y) + (v2.z - v1.z) * (v2.z - v1.z) )
|
return math.sqrt( (v2.x - v1.x) * (v2.x - v1.x) + (v2.y - v1.y) * (v2.y - v1.y) + (v2.z - v1.z) * (v2.z - v1.z) )
|
||||||
end
|
end
|
||||||
|
|
||||||
-- return the distance between two positions without sqrt (Vector3)
|
-- return the distance between two positions without sqrt (Vector3)
|
||||||
function Vector3DistFast(v1, v2)
|
function Vector3DistFast(v1, v2)
|
||||||
return (v2.x - v1.x) * (v2.x - v1.x) + (v2.y - v1.y) * (v2.y - v1.y) + (v2.z - v1.z) * (v2.z - v1.z)
|
return (v2.x - v1.x) * (v2.x - v1.x) + (v2.y - v1.y) * (v2.y - v1.y) + (v2.z - v1.z) * (v2.z - v1.z)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- returns the difference in degrees from the axis with the highest difference
|
-- returns the difference in degrees from the axis with the highest difference
|
||||||
function GetRotationDifference(r1, r2)
|
function GetRotationDifference(r1, r2)
|
||||||
local x = math.abs(r1.x - r2.x)
|
local x = math.abs(r1.x - r2.x)
|
||||||
local y = math.abs(r1.y - r2.y)
|
local y = math.abs(r1.y - r2.y)
|
||||||
local z = math.abs(r1.z - r2.z)
|
local z = math.abs(r1.z - r2.z)
|
||||||
|
|
||||||
if (x > y and x > z) then
|
if (x > y and x > z) then
|
||||||
return x
|
return x
|
||||||
elseif (y > z) then
|
elseif (y > z) then
|
||||||
return y
|
return y
|
||||||
else
|
else
|
||||||
return z
|
return z
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- get the amount of currently active players
|
-- get the amount of currently active players
|
||||||
function GetActivePlayerCount()
|
function GetActivePlayerCount()
|
||||||
local playerCount = 0
|
local playerCount = 0
|
||||||
for k, v in pairs(activePlayerPositions) do
|
for k, v in pairs(activePlayerPositions) do
|
||||||
playerCount = playerCount + 1
|
playerCount = playerCount + 1
|
||||||
end
|
end
|
||||||
return playerCount
|
return playerCount
|
||||||
end
|
end
|
||||||
|
|
||||||
-- return the ID of the closest player
|
-- return the ID of the closest player
|
||||||
function GetClosestPlayerId(position)
|
function GetClosestPlayerId(position)
|
||||||
local closestDistance = 1000000.0
|
local closestDistance = 1000000.0
|
||||||
local closestPlayerID = nil
|
local closestPlayerID = nil
|
||||||
local closestPos = nil
|
local closestPos = nil
|
||||||
|
|
||||||
for playerID, pos in pairs(activePlayerPositions) do
|
for playerID, pos in pairs(activePlayerPositions) do
|
||||||
local distance = Vector3DistFast(position, pos)
|
local distance = Vector3DistFast(position, pos)
|
||||||
|
|
||||||
if (distance < closestDistance) then
|
if (distance < closestDistance) then
|
||||||
closestDistance = distance
|
closestDistance = distance
|
||||||
closestPlayerID = playerID
|
closestPlayerID = playerID
|
||||||
closestPos = pos
|
closestPos = pos
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local distance = nil
|
local distance = nil
|
||||||
if (closestPlayerID ~= nil) then
|
if (closestPlayerID ~= nil) then
|
||||||
distance = Vector3Dist(position, closestPos)
|
distance = Vector3Dist(position, closestPos)
|
||||||
end
|
end
|
||||||
|
|
||||||
return closestPlayerID, distance
|
return closestPlayerID, distance
|
||||||
end
|
end
|
||||||
|
|
||||||
function IsAnyPlayerInsideVehicle(vehicle, playerPeds)
|
function IsAnyPlayerInsideVehicle(vehicle, playerPeds)
|
||||||
for i = 1, #playerPeds, 1 do
|
for i = 1, #playerPeds, 1 do
|
||||||
local veh = GetVehiclePedIsIn(playerPeds[i], false)
|
local veh = GetVehiclePedIsIn(playerPeds[i], false)
|
||||||
|
|
||||||
if (DoesEntityExist(veh) and veh == vehicle) then
|
if (DoesEntityExist(veh) and veh == vehicle) then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
-- return the ped of the closest player
|
-- return the ped of the closest player
|
||||||
function GetClosestPlayerPed(position, playerPeds)
|
function GetClosestPlayerPed(position, playerPeds)
|
||||||
local closestDistance = 1000000.0
|
local closestDistance = 1000000.0
|
||||||
local closestPlayerPed = nil
|
local closestPlayerPed = nil
|
||||||
local closestPos = nil
|
local closestPos = nil
|
||||||
|
|
||||||
for k, playerPed in pairs(playerPeds) do
|
for k, playerPed in pairs(playerPeds) do
|
||||||
local pos = GetEntityCoords(playerPed)
|
local pos = GetEntityCoords(playerPed)
|
||||||
local distance = Vector3DistFast(position, pos)
|
local distance = Vector3DistFast(position, pos)
|
||||||
|
|
||||||
if (distance < closestDistance) then
|
if (distance < closestDistance) then
|
||||||
closestDistance = distance
|
closestDistance = distance
|
||||||
closestPlayerPed = playerPed
|
closestPlayerPed = playerPed
|
||||||
closestPos = pos
|
closestPos = pos
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local distance = 0.0
|
local distance = 0.0
|
||||||
if (closestPlayerPed ~= nil) then
|
if (closestPlayerPed ~= nil) then
|
||||||
distance = Vector3Dist(position, closestPos)
|
distance = Vector3Dist(position, closestPos)
|
||||||
end
|
end
|
||||||
|
|
||||||
return closestPlayerPed, distance
|
return closestPlayerPed, distance
|
||||||
end
|
end
|
||||||
|
|
||||||
-- returns true if a player is active on the server with the specified license
|
-- returns true if a player is active on the server with the specified license
|
||||||
function IsPlayerWithLicenseActive(license)
|
function IsPlayerWithLicenseActive(license)
|
||||||
for playerId, playerPos in pairs(activePlayerPositions) do
|
for playerId, playerPos in pairs(activePlayerPositions) do
|
||||||
if (GetPlayerIdentifiersSorted(playerId)["license"] == license) then
|
if (GetPlayerIdentifiersSorted(playerId)["license"] == license) then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Return an array with all identifiers - e.g. ids["license"] = license:xxxxxxxxxxxxxxxx
|
-- Return an array with all identifiers - e.g. ids["license"] = license:xxxxxxxxxxxxxxxx
|
||||||
function GetPlayerIdentifiersSorted(playerServerId)
|
function GetPlayerIdentifiersSorted(playerServerId)
|
||||||
local ids = {}
|
local ids = {}
|
||||||
|
|
||||||
local identifiers = GetPlayerIdentifiers(playerServerId)
|
local identifiers = GetPlayerIdentifiers(playerServerId)
|
||||||
|
|
||||||
for k, identifier in pairs (identifiers) do
|
for k, identifier in pairs (identifiers) do
|
||||||
local i, j = string.find(identifier, ":")
|
local i, j = string.find(identifier, ":")
|
||||||
local idType = string.sub(identifier, 1, i-1)
|
local idType = string.sub(identifier, 1, i-1)
|
||||||
|
|
||||||
ids[idType] = identifier
|
ids[idType] = identifier
|
||||||
end
|
end
|
||||||
|
|
||||||
return ids
|
return ids
|
||||||
end
|
end
|
File diff suppressed because it is too large
Load diff
|
@ -1,149 +1,149 @@
|
||||||
|
|
||||||
Config = {}
|
Config = {}
|
||||||
|
|
||||||
-- set at least one to false, otherwise both menus will clash
|
-- set at least one to false, otherwise both menus will clash
|
||||||
-- and don't forget to comment the menu in the fxmanifest.lua if you don't use it!
|
-- and don't forget to comment the menu in the fxmanifest.lua if you don't use it!
|
||||||
-- Setting both to true does not work!
|
-- Setting both to true does not work!
|
||||||
-- setting both to false results in no menu being usable at all
|
-- setting both to false results in no menu being usable at all
|
||||||
-- you can then just include the exports in your own menu if you have one
|
-- you can then just include the exports in your own menu if you have one
|
||||||
Config.useContextMenu = false
|
Config.useContextMenu = false
|
||||||
Config.useNativeUI = true
|
Config.useNativeUI = true
|
||||||
|
|
||||||
-- set to nil if you don't want to use the command
|
-- set to nil if you don't want to use the command
|
||||||
Config.lockCommand = "lock"
|
Config.lockCommand = "lock"
|
||||||
-- set to nil if you don't want to use the button (303, U)
|
-- set to nil if you don't want to use the button (303, U)
|
||||||
Config.lockKey = 10 -- PageUp
|
Config.lockKey = 10 -- PageUp
|
||||||
|
|
||||||
-- set to nil if you don't want to use the command
|
-- set to nil if you don't want to use the command
|
||||||
Config.keyMenuCommand = "keys"
|
Config.keyMenuCommand = "keys"
|
||||||
-- set to nil if you don't want to use the button (311, K)
|
-- set to nil if you don't want to use the button (311, K)
|
||||||
Config.keyMenuKey = 56 -- F9
|
Config.keyMenuKey = 56 -- F9
|
||||||
|
|
||||||
-- maximum distance (in meters) between the player and ContextMenu interaction point
|
-- maximum distance (in meters) between the player and ContextMenu interaction point
|
||||||
Config.maxDistance = 5.0
|
Config.maxDistance = 5.0
|
||||||
|
|
||||||
-- you can define more keymakers by just adding additional entries
|
-- you can define more keymakers by just adding additional entries
|
||||||
Config.Keymakers = {
|
Config.Keymakers = {
|
||||||
{
|
{
|
||||||
-- ped model (yes, the ` symbols are correct)
|
-- ped model (yes, the ` symbols are correct)
|
||||||
model = `s_m_m_autoshop_01`,
|
model = `s_m_m_autoshop_01`,
|
||||||
-- position and heading vector4(x, y, z, heading)
|
-- position and heading vector4(x, y, z, heading)
|
||||||
pos = vector4(170.33, -1799.13, 28.32, 313.0)
|
pos = vector4(170.33, -1799.13, 28.32, 313.0)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
-- define costs for creating a new key and exchanging locks
|
-- define costs for creating a new key and exchanging locks
|
||||||
Config.Costs = {
|
Config.Costs = {
|
||||||
GetMoney = "cash", -- cash or bank
|
GetMoney = "cash", -- cash or bank
|
||||||
newKey = 150,
|
newKey = 150,
|
||||||
exchangeLocks = 650
|
exchangeLocks = 650
|
||||||
}
|
}
|
||||||
|
|
||||||
-- define job vehicles like this (this acts as a key for those vehicles)
|
-- define job vehicles like this (this acts as a key for those vehicles)
|
||||||
-- models in ``
|
-- models in ``
|
||||||
-- either exact plates or just a string that should be in the vehicles plate
|
-- either exact plates or just a string that should be in the vehicles plate
|
||||||
-- e.g. "LSPD" will let a police officer lock/unlock any vehicle with the plate "LSPD1337" or "13LSPD37"
|
-- e.g. "LSPD" will let a police officer lock/unlock any vehicle with the plate "LSPD1337" or "13LSPD37"
|
||||||
Config.JobVehicles = {
|
Config.JobVehicles = {
|
||||||
-- examples:
|
-- examples:
|
||||||
--["police"] = {
|
--["police"] = {
|
||||||
--models = {
|
--models = {
|
||||||
--`police`,
|
--`police`,
|
||||||
--`policeb`,
|
--`policeb`,
|
||||||
--`pbus`
|
--`pbus`
|
||||||
--},
|
--},
|
||||||
--plates = {
|
--plates = {
|
||||||
--""
|
--""
|
||||||
--}
|
--}
|
||||||
--},
|
--},
|
||||||
--["mechanic"] = {
|
--["mechanic"] = {
|
||||||
-- models = {
|
-- models = {
|
||||||
-- `flatbed`
|
-- `flatbed`
|
||||||
-- },
|
-- },
|
||||||
-- plates = {
|
-- plates = {
|
||||||
-- "MECH"
|
-- "MECH"
|
||||||
-- }
|
-- }
|
||||||
--},
|
--},
|
||||||
}
|
}
|
||||||
|
|
||||||
Config.Strings = {
|
Config.Strings = {
|
||||||
keymaker = "Schlüsseldienst",
|
keymaker = "Schlüsseldienst",
|
||||||
|
|
||||||
helpText = "~w~Drück ~g~E ~w~um mit den Schlüsseldienst zu reden",
|
helpText = "~w~Drück ~g~E ~w~um mit den Schlüsseldienst zu reden",
|
||||||
|
|
||||||
lockNotif = "~r~Fahrzeug Abgeschlossen",
|
lockNotif = "~r~Fahrzeug Abgeschlossen",
|
||||||
unlockNotif = "~g~Fahrzeug Aufgeschlossen",
|
unlockNotif = "~g~Fahrzeug Aufgeschlossen",
|
||||||
|
|
||||||
createSuccess = "~g~Ersatzschlüssel Nachgemacht %s.",
|
createSuccess = "~g~Ersatzschlüssel Nachgemacht %s.",
|
||||||
createNoMoney = "~r~Schlüssel kann nicht nachgemacht werden, du hast zu wenig Geld dabei",
|
createNoMoney = "~r~Schlüssel kann nicht nachgemacht werden, du hast zu wenig Geld dabei",
|
||||||
createFailed = "~r~Ersatzschlüssel machen Fehlgeschlagen %s!",
|
createFailed = "~r~Ersatzschlüssel machen Fehlgeschlagen %s!",
|
||||||
|
|
||||||
giveSuccess = "~g~Schlüssel an %s Weitergegeben.",
|
giveSuccess = "~g~Schlüssel an %s Weitergegeben.",
|
||||||
giveSuccessPly = "~g~Schlüssel von %s erhalten ",
|
giveSuccessPly = "~g~Schlüssel von %s erhalten ",
|
||||||
giveFailed = "~r~Schlüssel geben von %s Fehlgeschlagen",
|
giveFailed = "~r~Schlüssel geben von %s Fehlgeschlagen",
|
||||||
|
|
||||||
removeSuccess = "~r~Schlüssel für ~g~%s ~r~aus deiner Tasche Entfernt",
|
removeSuccess = "~r~Schlüssel für ~g~%s ~r~aus deiner Tasche Entfernt",
|
||||||
removeNoMoney = "~r~Schloss kann nicht bezahlt werden, du hast kein Geld dabei",
|
removeNoMoney = "~r~Schloss kann nicht bezahlt werden, du hast kein Geld dabei",
|
||||||
removeFailed = "~r~Entfernen von Schlüssel für ~g~%s ~r~Fehgeschlagen!",
|
removeFailed = "~r~Entfernen von Schlüssel für ~g~%s ~r~Fehgeschlagen!",
|
||||||
|
|
||||||
deleteKeys = "~r~Du hast für dein ~g~%s ~r~Das Schloss ausgetasucht, und somit sind jetzt alle Schlüssel nicht mehr Gültig.",
|
deleteKeys = "~r~Du hast für dein ~g~%s ~r~Das Schloss ausgetasucht, und somit sind jetzt alle Schlüssel nicht mehr Gültig.",
|
||||||
|
|
||||||
|
|
||||||
-- NativeUI
|
-- NativeUI
|
||||||
NUI = {
|
NUI = {
|
||||||
-- keymaker menu
|
-- keymaker menu
|
||||||
keymakerMenuTitle = "Schlüssel-System",
|
keymakerMenuTitle = "Schlüssel-System",
|
||||||
keymakerMenuSub = "~g~Erstelle Schlüssel und Tausche deine Fahrzeug Schlösser aus",
|
keymakerMenuSub = "~g~Erstelle Schlüssel und Tausche deine Fahrzeug Schlösser aus",
|
||||||
|
|
||||||
-- create key
|
-- create key
|
||||||
createKeyTitle = "~g~Ersatzschlüssel erstellen",
|
createKeyTitle = "~g~Ersatzschlüssel erstellen",
|
||||||
createKeyDesc = "Erstelle einen neuen Schlüssel für eines Ihrer Fahrzeuge ",
|
createKeyDesc = "Erstelle einen neuen Schlüssel für eines Ihrer Fahrzeuge ",
|
||||||
createVehicleKey = "Erstelle einen Schlüssel für Ihr %s mit den Kennzeichen %s. ~g~Preis "..Config.Costs.newKey.."$",
|
createVehicleKey = "Erstelle einen Schlüssel für Ihr %s mit den Kennzeichen %s. ~g~Preis "..Config.Costs.newKey.."$",
|
||||||
|
|
||||||
-- invalidate Key
|
-- invalidate Key
|
||||||
invalKeyTitle = "~r~Fahrzeug Schlöss Tauschen",
|
invalKeyTitle = "~r~Fahrzeug Schlöss Tauschen",
|
||||||
invalKeyDesc = "Tausche die Schlösser von Ihren Auto aus, alle schlüssel sind damit nicht mehr Gültig!",
|
invalKeyDesc = "Tausche die Schlösser von Ihren Auto aus, alle schlüssel sind damit nicht mehr Gültig!",
|
||||||
invalVehicleKey = "Schloss Tauschen von %s mit den Kennzeichen %s. ~g~Preis "..Config.Costs.exchangeLocks.."$",
|
invalVehicleKey = "Schloss Tauschen von %s mit den Kennzeichen %s. ~g~Preis "..Config.Costs.exchangeLocks.."$",
|
||||||
|
|
||||||
-- key Inventory
|
-- key Inventory
|
||||||
keyInventoryTitle = "Schlüssel",
|
keyInventoryTitle = "Schlüssel",
|
||||||
keyInventorySub = "~g~Da sind alle deine Schlüssel",
|
keyInventorySub = "~g~Da sind alle deine Schlüssel",
|
||||||
|
|
||||||
-- master keys
|
-- master keys
|
||||||
masterKeysTitle = "Hauptschlüssel",
|
masterKeysTitle = "Hauptschlüssel",
|
||||||
masterKeysDesc = "~g~Zeigt alle deine Hauptschlüssel an",
|
masterKeysDesc = "~g~Zeigt alle deine Hauptschlüssel an",
|
||||||
|
|
||||||
-- additional keys
|
-- additional keys
|
||||||
keysTitle = "Ersatzschlüssel",
|
keysTitle = "Ersatzschlüssel",
|
||||||
keysDesc = "~g~Zeigt alle deine Ersatzschlüssel an",
|
keysDesc = "~g~Zeigt alle deine Ersatzschlüssel an",
|
||||||
giveKeyTitle = "~g~Ersatzschlüssel Geben",
|
giveKeyTitle = "~g~Ersatzschlüssel Geben",
|
||||||
giveKeyDesc = "~g~Ersatzschlüssel Geben",
|
giveKeyDesc = "~g~Ersatzschlüssel Geben",
|
||||||
removeKeyTitle = "~r~Schlüssel Entfernen",
|
removeKeyTitle = "~r~Schlüssel Entfernen",
|
||||||
removeKeyDesc = "~r~Schlüssel Entfernen",
|
removeKeyDesc = "~r~Schlüssel Entfernen",
|
||||||
transferVehicleTitle = "~g~Fahrzeug übergeben",
|
transferVehicleTitle = "~g~Fahrzeug übergeben",
|
||||||
transferVehicleDesc = "~g~Übertrage ein Fahrzeug an einen Spieler in der Nähe",
|
transferVehicleDesc = "~g~Übertrage ein Fahrzeug an einen Spieler in der Nähe",
|
||||||
transferVehicleSuccess = "~g~Fahrzeug erfolgreich übergeben an %s",
|
transferVehicleSuccess = "~g~Fahrzeug erfolgreich übergeben an %s",
|
||||||
transferVehicleFailed = "~r~Fahrzeugübergabe fehlgeschlagen",
|
transferVehicleFailed = "~r~Fahrzeugübergabe fehlgeschlagen",
|
||||||
transferVehicleReceived = "~g~Du hast ein Fahrzeug erhalten",
|
transferVehicleReceived = "~g~Du hast ein Fahrzeug erhalten",
|
||||||
noPlayersNearby = "~r~Keine Spieler in der Nähe",
|
noPlayersNearby = "~r~Keine Spieler in der Nähe",
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
-- ContextMenu
|
-- ContextMenu
|
||||||
CM = {
|
CM = {
|
||||||
-- keymaker menu
|
-- keymaker menu
|
||||||
createKeyTitle = "Ersatzschlüssel",
|
createKeyTitle = "Ersatzschlüssel",
|
||||||
invalKeyTitle = "Schlossaustauschen",
|
invalKeyTitle = "Schlossaustauschen",
|
||||||
|
|
||||||
-- key inventory
|
-- key inventory
|
||||||
masterKeysTitle = "~g~Hauptschlüssel",
|
masterKeysTitle = "~g~Hauptschlüssel",
|
||||||
keysTitle = "~b~Ersatzschlüssel",
|
keysTitle = "~b~Ersatzschlüssel",
|
||||||
|
|
||||||
-- other player
|
-- other player
|
||||||
giveKey = "~r~Gebe ein Schlüssel, an der Person",
|
giveKey = "~r~Gebe ein Schlüssel, an der Person",
|
||||||
|
|
||||||
transferVehicleTitle = "Fahrzeug übergeben",
|
transferVehicleTitle = "Fahrzeug übergeben",
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,57 +1,57 @@
|
||||||
fx_version 'cerulean'
|
fx_version 'cerulean'
|
||||||
games { 'gta5' }
|
games { 'gta5' }
|
||||||
|
|
||||||
author 'Mîhó'
|
author 'Mîhó'
|
||||||
description 'Manage vehicle keys!'
|
description 'Manage vehicle keys!'
|
||||||
version '1.1.1'
|
version '1.1.1'
|
||||||
|
|
||||||
dependency 'kimi_callbacks'
|
dependency 'kimi_callbacks'
|
||||||
dependency 'NativeUI'
|
dependency 'NativeUI'
|
||||||
|
|
||||||
server_scripts {
|
server_scripts {
|
||||||
--'@mysql-async/lib/MySQL.lua',
|
--'@mysql-async/lib/MySQL.lua',
|
||||||
'@oxmysql/lib/MySQL.lua',
|
'@oxmysql/lib/MySQL.lua',
|
||||||
|
|
||||||
'config.lua',
|
'config.lua',
|
||||||
'server.lua'
|
'server.lua'
|
||||||
}
|
}
|
||||||
|
|
||||||
client_scripts {
|
client_scripts {
|
||||||
-- comment these lines if not using the ContextMenu
|
-- comment these lines if not using the ContextMenu
|
||||||
--'@ContextMenu/screenToWorld.lua',
|
--'@ContextMenu/screenToWorld.lua',
|
||||||
--'@ContextMenu/Drawables/Color.lua',
|
--'@ContextMenu/Drawables/Color.lua',
|
||||||
--'@ContextMenu/Drawables/Rect.lua',
|
--'@ContextMenu/Drawables/Rect.lua',
|
||||||
--'@ContextMenu/Drawables/Text.lua',
|
--'@ContextMenu/Drawables/Text.lua',
|
||||||
--'@ContextMenu/Drawables/Sprite.lua',
|
--'@ContextMenu/Drawables/Sprite.lua',
|
||||||
--'@ContextMenu/Menu/Item.lua',
|
--'@ContextMenu/Menu/Item.lua',
|
||||||
--'@ContextMenu/Menu/TextItem.lua',
|
--'@ContextMenu/Menu/TextItem.lua',
|
||||||
--'@ContextMenu/Menu/CheckboxItem.lua',
|
--'@ContextMenu/Menu/CheckboxItem.lua',
|
||||||
--'@ContextMenu/Menu/SubmenuItem.lua',
|
--'@ContextMenu/Menu/SubmenuItem.lua',
|
||||||
--'@ContextMenu/Menu/Separator.lua',
|
--'@ContextMenu/Menu/Separator.lua',
|
||||||
--'@ContextMenu/Menu/Border.lua',
|
--'@ContextMenu/Menu/Border.lua',
|
||||||
--'@ContextMenu/Menu/Menu.lua',
|
--'@ContextMenu/Menu/Menu.lua',
|
||||||
--'@ContextMenu/Menu/MenuPool.lua',
|
--'@ContextMenu/Menu/MenuPool.lua',
|
||||||
|
|
||||||
-- comment this line if not using NativeUILua
|
-- comment this line if not using NativeUILua
|
||||||
'@NativeUI/NativeUI.lua',
|
'@NativeUI/NativeUI.lua',
|
||||||
'@ox_lib/init.lua',
|
'@ox_lib/init.lua',
|
||||||
|
|
||||||
'config.lua',
|
'config.lua',
|
||||||
'client.lua'
|
'client.lua'
|
||||||
}
|
}
|
||||||
|
|
||||||
server_exports {
|
server_exports {
|
||||||
'IsVehicleOwner',
|
'IsVehicleOwner',
|
||||||
'IsKeyOwner',
|
'IsKeyOwner',
|
||||||
'IsVehicleOrKeyOwner',
|
'IsVehicleOrKeyOwner',
|
||||||
'GetPlayerKeys',
|
'GetPlayerKeys',
|
||||||
'GetPlayerVehicles'
|
'GetPlayerVehicles'
|
||||||
}
|
}
|
||||||
|
|
||||||
exports {
|
exports {
|
||||||
'IsVehicleOwner',
|
'IsVehicleOwner',
|
||||||
'IsKeyOwner',
|
'IsKeyOwner',
|
||||||
'IsVehicleOrKeyOwner',
|
'IsVehicleOrKeyOwner',
|
||||||
'GetAllKeys',
|
'GetAllKeys',
|
||||||
'GetAllVehicles'
|
'GetAllVehicles'
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load diff
|
@ -1,27 +1,27 @@
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
-- Host: 127.0.0.1
|
-- Host: 127.0.0.1
|
||||||
-- Server version: 10.1.28-MariaDB - mariadb.org binary distribution
|
-- Server version: 10.1.28-MariaDB - mariadb.org binary distribution
|
||||||
-- Server OS: Win32
|
-- Server OS: Win32
|
||||||
-- HeidiSQL Version: 11.0.0.5919
|
-- HeidiSQL Version: 11.0.0.5919
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
/*!40101 SET NAMES utf8 */;
|
/*!40101 SET NAMES utf8 */;
|
||||||
/*!50503 SET NAMES utf8mb4 */;
|
/*!50503 SET NAMES utf8mb4 */;
|
||||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||||
|
|
||||||
-- Dumping structure for table essentialmode.vehicle_keys
|
-- Dumping structure for table essentialmode.vehicle_keys
|
||||||
CREATE TABLE IF NOT EXISTS `vehicle_keys` (
|
CREATE TABLE IF NOT EXISTS `vehicle_keys` (
|
||||||
`owner` varchar(60) NOT NULL,
|
`owner` varchar(60) NOT NULL,
|
||||||
`plate` varchar(8) NOT NULL,
|
`plate` varchar(8) NOT NULL,
|
||||||
`count` smallint(6) NOT NULL,
|
`count` smallint(6) NOT NULL,
|
||||||
KEY `plate` (`plate`),
|
KEY `plate` (`plate`),
|
||||||
KEY `owner` (`owner`)
|
KEY `owner` (`owner`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
-- Data exporting was unselected.
|
-- Data exporting was unselected.
|
||||||
|
|
||||||
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
|
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
|
||||||
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
|
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
|
||||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
BIN
resources/[carscripts]/jg-advancedgarages/.fxap
Normal file
BIN
resources/[carscripts]/jg-advancedgarages/.fxap
Normal file
Binary file not shown.
17
resources/[carscripts]/jg-advancedgarages/README.md
Normal file
17
resources/[carscripts]/jg-advancedgarages/README.md
Normal 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!
|
|
@ -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
|
BIN
resources/[carscripts]/jg-advancedgarages/client/cl-garage.lua
Normal file
BIN
resources/[carscripts]/jg-advancedgarages/client/cl-garage.lua
Normal file
Binary file not shown.
BIN
resources/[carscripts]/jg-advancedgarages/client/cl-impound.lua
Normal file
BIN
resources/[carscripts]/jg-advancedgarages/client/cl-impound.lua
Normal file
Binary file not shown.
BIN
resources/[carscripts]/jg-advancedgarages/client/cl-interior.lua
Normal file
BIN
resources/[carscripts]/jg-advancedgarages/client/cl-interior.lua
Normal file
Binary file not shown.
|
@ -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)
|
BIN
resources/[carscripts]/jg-advancedgarages/client/cl-main.lua
Normal file
BIN
resources/[carscripts]/jg-advancedgarages/client/cl-main.lua
Normal file
Binary file not shown.
Binary file not shown.
BIN
resources/[carscripts]/jg-advancedgarages/client/cl-spawn.lua
Normal file
BIN
resources/[carscripts]/jg-advancedgarages/client/cl-spawn.lua
Normal file
Binary file not shown.
BIN
resources/[carscripts]/jg-advancedgarages/client/cl-vehicle.lua
Normal file
BIN
resources/[carscripts]/jg-advancedgarages/client/cl-vehicle.lua
Normal file
Binary file not shown.
|
@ -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)
|
|
@ -0,0 +1 @@
|
||||||
|
-- Add your own server code in here for custom functionality
|
669
resources/[carscripts]/jg-advancedgarages/config/config.lua
Normal file
669
resources/[carscripts]/jg-advancedgarages/config/config.lua
Normal 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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
61
resources/[carscripts]/jg-advancedgarages/framework/main.lua
Normal file
61
resources/[carscripts]/jg-advancedgarages/framework/main.lua
Normal 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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
56
resources/[carscripts]/jg-advancedgarages/fxmanifest.lua
Normal file
56
resources/[carscripts]/jg-advancedgarages/fxmanifest.lua
Normal 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'
|
|
@ -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`)
|
||||||
|
);
|
25
resources/[carscripts]/jg-advancedgarages/install/run-qb.sql
Normal file
25
resources/[carscripts]/jg-advancedgarages/install/run-qb.sql
Normal 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`)
|
||||||
|
);
|
142
resources/[carscripts]/jg-advancedgarages/locales/ar.lua
Normal file
142
resources/[carscripts]/jg-advancedgarages/locales/ar.lua
Normal 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 = "إنشاء كراج خاص للاعب",
|
||||||
|
}
|
142
resources/[carscripts]/jg-advancedgarages/locales/cn.lua
Normal file
142
resources/[carscripts]/jg-advancedgarages/locales/cn.lua
Normal 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 = "为玩家创建私人车库",
|
||||||
|
}
|
143
resources/[carscripts]/jg-advancedgarages/locales/cs.lua
Normal file
143
resources/[carscripts]/jg-advancedgarages/locales/cs.lua
Normal 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",
|
||||||
|
}
|
143
resources/[carscripts]/jg-advancedgarages/locales/da.lua
Normal file
143
resources/[carscripts]/jg-advancedgarages/locales/da.lua
Normal 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",
|
||||||
|
}
|
143
resources/[carscripts]/jg-advancedgarages/locales/de.lua
Normal file
143
resources/[carscripts]/jg-advancedgarages/locales/de.lua
Normal 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",
|
||||||
|
}
|
142
resources/[carscripts]/jg-advancedgarages/locales/en.lua
Normal file
142
resources/[carscripts]/jg-advancedgarages/locales/en.lua
Normal 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",
|
||||||
|
}
|
141
resources/[carscripts]/jg-advancedgarages/locales/es.lua
Normal file
141
resources/[carscripts]/jg-advancedgarages/locales/es.lua
Normal 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",
|
||||||
|
}
|
143
resources/[carscripts]/jg-advancedgarages/locales/fi.lua
Normal file
143
resources/[carscripts]/jg-advancedgarages/locales/fi.lua
Normal 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",
|
||||||
|
}
|
142
resources/[carscripts]/jg-advancedgarages/locales/fr.lua
Normal file
142
resources/[carscripts]/jg-advancedgarages/locales/fr.lua
Normal 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",
|
||||||
|
}
|
143
resources/[carscripts]/jg-advancedgarages/locales/hu.lua
Normal file
143
resources/[carscripts]/jg-advancedgarages/locales/hu.lua
Normal 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",
|
||||||
|
}
|
143
resources/[carscripts]/jg-advancedgarages/locales/it.lua
Normal file
143
resources/[carscripts]/jg-advancedgarages/locales/it.lua
Normal 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",
|
||||||
|
}
|
142
resources/[carscripts]/jg-advancedgarages/locales/ja.lua
Normal file
142
resources/[carscripts]/jg-advancedgarages/locales/ja.lua
Normal 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 = "プレイヤー用のプライベートガレージを作成",
|
||||||
|
}
|
142
resources/[carscripts]/jg-advancedgarages/locales/lt.lua
Normal file
142
resources/[carscripts]/jg-advancedgarages/locales/lt.lua
Normal 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 = "iš",
|
||||||
|
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žą",
|
||||||
|
}
|
143
resources/[carscripts]/jg-advancedgarages/locales/nl.lua
Normal file
143
resources/[carscripts]/jg-advancedgarages/locales/nl.lua
Normal 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",
|
||||||
|
}
|
141
resources/[carscripts]/jg-advancedgarages/locales/pt.lua
Normal file
141
resources/[carscripts]/jg-advancedgarages/locales/pt.lua
Normal 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",
|
||||||
|
}
|
142
resources/[carscripts]/jg-advancedgarages/locales/ro.lua
Normal file
142
resources/[carscripts]/jg-advancedgarages/locales/ro.lua
Normal 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",
|
||||||
|
}
|
143
resources/[carscripts]/jg-advancedgarages/locales/sv.lua
Normal file
143
resources/[carscripts]/jg-advancedgarages/locales/sv.lua
Normal 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",
|
||||||
|
}
|
142
resources/[carscripts]/jg-advancedgarages/locales/vi.lua
Normal file
142
resources/[carscripts]/jg-advancedgarages/locales/vi.lua
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
Locales = Locales or {}
|
||||||
|
|
||||||
|
Locales['vi'] = {
|
||||||
|
yes = "Có",
|
||||||
|
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",
|
||||||
|
}
|
BIN
resources/[carscripts]/jg-advancedgarages/server/sv-garage.lua
Normal file
BIN
resources/[carscripts]/jg-advancedgarages/server/sv-garage.lua
Normal file
Binary file not shown.
BIN
resources/[carscripts]/jg-advancedgarages/server/sv-impound.lua
Normal file
BIN
resources/[carscripts]/jg-advancedgarages/server/sv-impound.lua
Normal file
Binary file not shown.
BIN
resources/[carscripts]/jg-advancedgarages/server/sv-initsql.lua
Normal file
BIN
resources/[carscripts]/jg-advancedgarages/server/sv-initsql.lua
Normal file
Binary file not shown.
BIN
resources/[carscripts]/jg-advancedgarages/server/sv-interior.lua
Normal file
BIN
resources/[carscripts]/jg-advancedgarages/server/sv-interior.lua
Normal file
Binary file not shown.
Binary file not shown.
BIN
resources/[carscripts]/jg-advancedgarages/server/sv-main.lua
Normal file
BIN
resources/[carscripts]/jg-advancedgarages/server/sv-main.lua
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
resources/[carscripts]/jg-advancedgarages/server/sv-spawn.lua
Normal file
BIN
resources/[carscripts]/jg-advancedgarages/server/sv-spawn.lua
Normal file
Binary file not shown.
BIN
resources/[carscripts]/jg-advancedgarages/server/sv-vehicle.lua
Normal file
BIN
resources/[carscripts]/jg-advancedgarages/server/sv-vehicle.lua
Normal file
Binary file not shown.
Binary file not shown.
|
@ -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
|
BIN
resources/[carscripts]/jg-advancedgarages/shared/main.lua
Normal file
BIN
resources/[carscripts]/jg-advancedgarages/shared/main.lua
Normal file
Binary file not shown.
|
@ -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
|
55
resources/[carscripts]/jg-advancedgarages/web/dist/assets/index-CZ7rsOCg.js
vendored
Normal file
55
resources/[carscripts]/jg-advancedgarages/web/dist/assets/index-CZ7rsOCg.js
vendored
Normal file
File diff suppressed because one or more lines are too long
5
resources/[carscripts]/jg-advancedgarages/web/dist/assets/index-DURuzDZl.css
vendored
Normal file
5
resources/[carscripts]/jg-advancedgarages/web/dist/assets/index-DURuzDZl.css
vendored
Normal file
File diff suppressed because one or more lines are too long
14
resources/[carscripts]/jg-advancedgarages/web/dist/index.html
vendored
Normal file
14
resources/[carscripts]/jg-advancedgarages/web/dist/index.html
vendored
Normal 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>
|
1
resources/[carscripts]/jg-advancedgarages/web/dist/vite.svg
vendored
Normal file
1
resources/[carscripts]/jg-advancedgarages/web/dist/vite.svg
vendored
Normal 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 |
Loading…
Add table
Add a link
Reference in a new issue