diff --git a/server-data/resources/[bpt_addons]/bpt_crafting/bpt_crafting.sql b/server-data/resources/[bpt_addons]/bpt_crafting/bpt_crafting.sql
index 4ccad6315..48174e672 100644
--- a/server-data/resources/[bpt_addons]/bpt_crafting/bpt_crafting.sql
+++ b/server-data/resources/[bpt_addons]/bpt_crafting/bpt_crafting.sql
@@ -60,4 +60,5 @@ INSERT INTO `bpt_items` (`name`, `label`) VALUES
('medikit', 'Medikit'),
('salmon_fillet', 'Salmon Fillet'),
('armour', 'armour'),
+ ('WEAPON_FLASHLIGHT', 'WEAPON FLASHLIGHT')
;
\ No newline at end of file
diff --git a/server-data/resources/[bpt_addons]/bpt_crafting/config.lua b/server-data/resources/[bpt_addons]/bpt_crafting/config.lua
index 7ccd5d61d..32bf59c0c 100644
--- a/server-data/resources/[bpt_addons]/bpt_crafting/config.lua
+++ b/server-data/resources/[bpt_addons]/bpt_crafting/config.lua
@@ -440,6 +440,24 @@ Config = {
},
},
+ ["WEAPON_FLASHLIGHT"] = {
+ Level = 10,
+ Category = "ammu",
+ isGun = false,
+ Jobs = { "ammu" },
+ JobGrades = {},
+ Amount = 1,
+ SuccessRate = 100,
+ requireBlueprint = false,
+ Time = 60,
+ Ingredients = {
+ ["diamond"] = 1,
+ ["copper"] = 1,
+ ["hammer"] = 1,
+ ["recycled_plastic"] = 1,
+ },
+ },
+
["WEAPON_NIGHTSTICK"] = {
Level = 10,
Category = "ammu",
@@ -596,6 +614,7 @@ Config = {
"WEAPON_NIGHTSTICK",
"WEAPON_PISTOL",
"armour",
+ "WEAPON_FLASHLIGHT",
},
radius = 1.0,
},
diff --git a/server-data/resources/[bpt_addons]/bpt_crafting/localization/bpt_crafting_it.sql b/server-data/resources/[bpt_addons]/bpt_crafting/localization/bpt_crafting_it.sql
index 318a03752..bc1088873 100644
--- a/server-data/resources/[bpt_addons]/bpt_crafting/localization/bpt_crafting_it.sql
+++ b/server-data/resources/[bpt_addons]/bpt_crafting/localization/bpt_crafting_it.sql
@@ -59,5 +59,6 @@ INSERT INTO `bpt_items` (`name`, `label`) VALUES
('marijuana_extract', 'Estratto di marijuana'),
('medikit', 'Medikit'),
('salmon_fillet', 'Filetto di salmone'),
- ('armour', 'giubbotto antiproiettile')
+ ('armour', 'giubbotto antiproiettile'),
+ ('WEAPON_FLASHLIGHT', 'Torcia')
;
\ No newline at end of file
diff --git a/server-data/resources/[esx]/es_extended/README.md b/server-data/resources/[esx]/es_extended/README.md
new file mode 100644
index 000000000..e87907a40
--- /dev/null
+++ b/server-data/resources/[esx]/es_extended/README.md
@@ -0,0 +1,13 @@
+
es_extended
Discord - Documentation
+
+## Legal
+
+es_extended
+
+Copyright (C) 2015-2024
+
+This program Is free software: you can redistribute it And/Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option) any later version.
+
+This program Is distributed In the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty Of MERCHANTABILITY Or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License For more details.
+
+You should have received a copy Of the GNU General Public License along with this program. If Not, see .
diff --git a/server-data/resources/[esx]/es_extended/client/common.lua b/server-data/resources/[esx]/es_extended/client/common.lua
index 7a896201c..e2792c2bd 100644
--- a/server-data/resources/[esx]/es_extended/client/common.lua
+++ b/server-data/resources/[esx]/es_extended/client/common.lua
@@ -4,5 +4,5 @@ end)
AddEventHandler("esx:getSharedObject", function()
local Invoke = GetInvokingResource()
- print(("[^1ERROR^7] Resource ^5%s^7 Used the ^5getSharedObject^7 Event, this event ^1no longer exists!^7 Visit https://bitpredator.github.io/bptdevelopment/docs/esx-tutorial/sharedevent for how to fix!"):format(Invoke))
+ error(("Resource ^5%s^7 Used the ^5getSharedObject^7 Event, this event ^1no longer exists!^7 Visit https://bitpredator.github.io/bptdevelopment/docs/FiveM/sharedevent/ for how to fix!"):format(Invoke))
end)
diff --git a/server-data/resources/[esx]/es_extended/client/functions.lua b/server-data/resources/[esx]/es_extended/client/functions.lua
index ac5482076..6c9c5ab11 100644
--- a/server-data/resources/[esx]/es_extended/client/functions.lua
+++ b/server-data/resources/[esx]/es_extended/client/functions.lua
@@ -7,13 +7,10 @@ ESX.UI = {}
ESX.UI.Menu = {}
ESX.UI.Menu.RegisteredTypes = {}
ESX.UI.Menu.Opened = {}
-
ESX.Game = {}
ESX.Game.Utils = {}
-
ESX.Scaleform = {}
ESX.Scaleform.Utils = {}
-
ESX.Streaming = {}
function ESX.IsPlayerLoaded()
@@ -24,19 +21,38 @@ function ESX.GetPlayerData()
return ESX.PlayerData
end
+local addonResourcesState = {
+ ["esx_progressbar"] = GetResourceState("esx_progressbar") ~= "missing",
+ ["esx_notify"] = GetResourceState("esx_notify") ~= "missing",
+ ["esx_textui"] = GetResourceState("esx_textui") ~= "missing",
+ ["esx_context"] = GetResourceState("esx_context") ~= "missing",
+}
+
+local function IsResourceFound(resource)
+ return addonResourcesState[resource] or print(("[^1ERROR^7] ^5%s^7 is Missing!"):format(resource))
+end
+
function ESX.SearchInventory(items, count)
- items = type(items) == "string" and { items } or items
+ local item
+ if type(items) == "string" then
+ item, items = items, { items }
+ end
local data = {}
- for i = 1, #items do
- for c = 1, #ESX.PlayerData.inventory do
- if ESX.PlayerData.inventory[c].name == items[i] then
- data[items[i]] = (count and ESX.PlayerData.inventory[c].count) or ESX.PlayerData.inventory[c]
+ for i = 1, #ESX.PlayerData.inventory do
+ local e = ESX.PlayerData.inventory[i]
+ for ii = 1, #items do
+ if e.name == items[ii] then
+ data[table.remove(items, ii)] = count and e.count or e
+ break
end
end
+ if #items == 0 then
+ break
+ end
end
- return #items == 1 and data[items[1]] or data
+ return not item and data or data[item]
end
function ESX.SetPlayerData(key, val)
@@ -49,62 +65,39 @@ function ESX.SetPlayerData(key, val)
end
end
-function ESX.Progressbar(message, length, Options)
- if GetResourceState("esx_progressbar") ~= "missing" then
- return exports["esx_progressbar"]:Progressbar(message, length, Options)
- end
-
- print("[^1ERROR^7] ^5ESX Progressbar^7 is Missing!")
+function ESX.Progressbar(...)
+ return IsResourceFound("esx_progressbar") and exports["esx_progressbar"]:Progressbar(...)
end
function ESX.ShowNotification(message, notifyType, length)
- if GetResourceState("esx_notify") ~= "missing" then
- return exports["esx_notify"]:Notify(notifyType, length, message)
- end
-
- print("[^1ERROR^7] ^5ESX Notify^7 is Missing!")
+ return IsResourceFound("esx_notify") and exports["esx_notify"]:Notify(notifyType, length, message)
end
-function ESX.TextUI(message, notifyType)
- if GetResourceState("esx_textui") ~= "missing" then
- return exports["esx_textui"]:TextUI(message, notifyType)
- end
-
- print("[^1ERROR^7] ^5ESX TextUI^7 is Missing!")
+function ESX.TextUI(...)
+ return IsResourceFound("esx_textui") and exports["esx_textui"]:TextUI(...)
end
function ESX.HideUI()
- if GetResourceState("esx_textui") ~= "missing" then
- return exports["esx_textui"]:HideUI()
- end
-
- print("[^1ERROR^7] ^5ESX TextUI^7 is Missing!")
+ return IsResourceFound("esx_textui") and exports["esx_textui"]:HideUI()
end
function ESX.ShowAdvancedNotification(sender, subject, msg, textureDict, iconType, flash, saveToBrief, hudColorIndex)
- if saveToBrief == nil then
- saveToBrief = true
- end
AddTextEntry("esxAdvancedNotification", msg)
BeginTextCommandThefeedPost("esxAdvancedNotification")
if hudColorIndex then
ThefeedSetNextPostBackgroundColor(hudColorIndex)
end
EndTextCommandThefeedPostMessagetext(textureDict, textureDict, false, iconType, sender, subject)
- EndTextCommandThefeedPostTicker(flash or false, saveToBrief)
+ EndTextCommandThefeedPostTicker(flash, saveToBrief == nil or saveToBrief)
end
function ESX.ShowHelpNotification(msg, thisFrame, beep, duration)
AddTextEntry("esxHelpNotification", msg)
-
if thisFrame then
- DisplayHelpTextThisFrame("esxHelpNotification", false)
+ DisplayHelpTextThisFrame("esxHelpNotification")
else
- if beep == nil then
- beep = true
- end
BeginTextCommandDisplayHelp("esxHelpNotification")
- EndTextCommandDisplayHelp(0, false, beep, duration or -1)
+ EndTextCommandDisplayHelp(0, false, beep == nil or beep, duration or -1)
end
end
@@ -116,42 +109,41 @@ function ESX.ShowFloatingHelpNotification(msg, coords)
EndTextCommandDisplayHelp(2, false, false, -1)
end
-ESX.HashString = function(str)
- local format = string.format
- local upper = string.upper
- local gsub = string.gsub
- local hash = joaat(str)
- local input_map = format("~INPUT_%s~", upper(format("%x", hash)))
- input_map = gsub(input_map, "FFFFFFFF", "")
-
- return input_map
+function ESX.DrawMissionText(msg, time)
+ ClearPrints()
+ BeginTextCommandPrint("STRING")
+ AddTextComponentSubstringPlayerName(msg)
+ EndTextCommandPrint(time, true)
end
-local contextAvailable = GetResourceState("esx_context") ~= "missing"
+function ESX.HashString(str)
+ return ("~INPUT_%s~"):format(("%x"):format(joaat(str) & 0x7fffffff + 2 ^ 31):upper())
+end
function ESX.OpenContext(...)
- return contextAvailable and exports["esx_context"]:Open(...) or not contextAvailable and print("[^1ERROR^7] Tried to ^5open^7 context menu, but ^5esx_context^7 is missing!")
+ return IsResourceFound("esx_context") and exports["esx_context"]:Open(...)
end
function ESX.PreviewContext(...)
- return contextAvailable and exports["esx_context"]:Preview(...) or not contextAvailable and print("[^1ERROR^7] Tried to ^5preview^7 context menu, but ^5esx_context^7 is missing!")
+ return IsResourceFound("esx_context") and exports["esx_context"]:Preview(...)
end
function ESX.CloseContext(...)
- return contextAvailable and exports["esx_context"]:Close(...) or not contextAvailable and print("[^1ERROR^7] Tried to ^5close^7 context menu, but ^5esx_context^7 is missing!")
+ return IsResourceFound("esx_context") and exports["esx_context"]:Close(...)
end
function ESX.RefreshContext(...)
- return contextAvailable and exports["esx_context"]:Refresh(...) or not contextAvailable and print("[^1ERROR^7] Tried to ^5Refresh^7 context menu, but ^5esx_context^7 is missing!")
+ return IsResourceFound("esx_context") and exports["esx_context"]:Refresh(...)
end
-ESX.RegisterInput = function(command_name, label, input_group, key, on_press, on_release)
- RegisterCommand(on_release ~= nil and "+" .. command_name or command_name, on_press)
- Core.Input[command_name] = on_release ~= nil and ESX.HashString("+" .. command_name) or ESX.HashString(command_name)
+function ESX.RegisterInput(command_name, label, input_group, key, on_press, on_release)
+ local command = on_release and "+" .. command_name or command_name
+ RegisterCommand(command, on_press)
+ Core.Input[command_name] = ESX.HashString(command)
if on_release then
RegisterCommand("-" .. command_name, on_release)
end
- RegisterKeyMapping(on_release ~= nil and "+" .. command_name or command_name, label, input_group, key)
+ RegisterKeyMapping(command, label or "", input_group or "keyboard", key or "")
end
function ESX.UI.Menu.RegisterType(menuType, open, close)
@@ -242,21 +234,29 @@ function ESX.UI.Menu.Open(menuType, namespace, name, data, submit, cancel, chang
return menu
end
-function ESX.UI.Menu.Close(menuType, namespace, name)
+function ESX.UI.Menu.Close(menuType, namespace, name, cancel)
for i = 1, #ESX.UI.Menu.Opened, 1 do
if ESX.UI.Menu.Opened[i] then
if ESX.UI.Menu.Opened[i].type == menuType and ESX.UI.Menu.Opened[i].namespace == namespace and ESX.UI.Menu.Opened[i].name == name then
- ESX.UI.Menu.Opened[i].close()
+ if not cancel then
+ ESX.UI.Menu.Opened[i].close()
+ else
+ ESX.UI.Menu.Opened[i].cancel()
+ end
ESX.UI.Menu.Opened[i] = nil
end
end
end
end
-function ESX.UI.Menu.CloseAll()
+function ESX.UI.Menu.CloseAll(cancel)
for i = 1, #ESX.UI.Menu.Opened, 1 do
if ESX.UI.Menu.Opened[i] then
- ESX.UI.Menu.Opened[i].close()
+ if not cancel then
+ ESX.UI.Menu.Opened[i].close()
+ else
+ ESX.UI.Menu.Opened[i].cancel()
+ end
ESX.UI.Menu.Opened[i] = nil
end
end
@@ -276,9 +276,7 @@ function ESX.UI.Menu.GetOpenedMenus()
return ESX.UI.Menu.Opened
end
-function ESX.UI.Menu.IsOpen(menuType, namespace, name)
- return ESX.UI.Menu.GetOpened(menuType, namespace, name) ~= nil
-end
+ESX.UI.Menu.IsOpen = ESX.UI.Menu.GetOpened
function ESX.UI.ShowInventoryItemNotification(add, item, count)
SendNUIMessage({
@@ -321,18 +319,8 @@ function ESX.Game.Teleport(entity, coords, cb)
end
function ESX.Game.SpawnObject(object, coords, cb, networked)
- networked = networked == nil and true or networked
-
- local model = type(object) == "number" and object or joaat(object)
- local vector = type(coords) == "vector3" and coords or vec(coords.x, coords.y, coords.z)
- CreateThread(function()
- ESX.Streaming.RequestModel(model)
-
- local obj = CreateObject(model, vector.xyz, networked, false, true)
- if cb then
- cb(obj)
- end
- end)
+ local obj = CreateObject(ESX.Streaming.RequestModel(object), coords.x, coords.y, coords.z, networked == nil or networked, false, true)
+ return cb and cb(obj) or obj
end
function ESX.Game.SpawnLocalObject(object, coords, cb)
@@ -362,7 +350,7 @@ function ESX.Game.SpawnVehicle(vehicleModel, coords, heading, cb, networked)
local dist = #(playerCoords - vector)
if dist > 424 then -- Onesync infinity Range (https://docs.fivem.net/docs/scripting-reference/onesync/)
local executingResource = GetInvokingResource() or "Unknown"
- return print(("[^1ERROR^7] Resource ^5%s^7 Tried to spawn vehicle on the client but the position is too far away (Out of onesync range)."):format(executingResource))
+ return error(("Resource ^5%s^7 Tried to spawn vehicle on the client but the position is too far away (Out of onesync range)."):format(executingResource))
end
CreateThread(function()
@@ -396,10 +384,7 @@ function ESX.Game.SpawnLocalVehicle(vehicle, coords, heading, cb)
end
function ESX.Game.IsVehicleEmpty(vehicle)
- local passengers = GetVehicleNumberOfPassengers(vehicle)
- local driverSeatFree = IsVehicleSeatFree(vehicle, -1)
-
- return passengers == 0 and driverSeatFree
+ return GetVehicleNumberOfPassengers(vehicle) == 0 and IsVehicleSeatFree(vehicle, -1)
end
function ESX.Game.GetObjects() -- Leave the function for compatibility
@@ -495,6 +480,21 @@ function ESX.Game.IsSpawnPointClear(coords, maxDistance)
return #ESX.Game.GetVehiclesInArea(coords, maxDistance) == 0
end
+function ESX.Game.GetShapeTestResultSync(shape)
+ local handle, hit, coords, normal, material, entity
+ repeat
+ handle, hit, coords, normal, material, entity = GetShapeTestResultIncludingMaterial(shape)
+ until handle ~= 1 or Wait()
+ return hit, coords, normal, material, entity
+end
+
+function ESX.Game.RaycastScreen(depth, ...)
+ local world, normal = GetWorldCoordFromScreenCoord(0.5, 0.5)
+ local origin = world + normal
+ local target = world + normal * depth
+ return target, ESX.Game.GetShapeTestResultSync(StartShapeTestLosProbe(origin.x, origin.y, origin.z, target.x, target.y, target.z, ...))
+end
+
function ESX.Game.GetClosestEntity(entities, isPlayerEntities, coords, modelFilter)
local closestEntity, closestEntityDistance, filteredEntities = -1, -1, nil
@@ -527,18 +527,10 @@ function ESX.Game.GetClosestEntity(entities, isPlayerEntities, coords, modelFilt
end
function ESX.Game.GetVehicleInDirection()
- local playerPed = ESX.PlayerData.ped
- local playerCoords = GetEntityCoords(playerPed)
- local inDirection = GetOffsetFromEntityInWorldCoords(playerPed, 0.0, 5.0, 0.0)
- local rayHandle = StartExpensiveSynchronousShapeTestLosProbe(playerCoords, inDirection, 10, playerPed, 0)
- local _, hit, _, _, entityHit = GetShapeTestResult(rayHandle)
-
- if hit == 1 and GetEntityType(entityHit) == 2 then
- local entityCoords = GetEntityCoords(entityHit)
- return entityHit, entityCoords
+ local _, hit, coords, _, _, entity = ESX.Game.RaycastScreen(5, 10, ESX.PlayerData.ped)
+ if hit and IsEntityAVehicle(entity) then
+ return entity, coords
end
-
- return nil
end
function ESX.Game.GetVehicleProperties(vehicle)
@@ -576,11 +568,19 @@ function ESX.Game.GetVehicleProperties(vehicle)
end
local doorsBroken, windowsBroken, tyreBurst = {}, {}, {}
+ local numWheels = tostring(GetVehicleNumberOfWheels(vehicle))
- local wheel_count = GetVehicleNumberOfWheels(vehicle)
+ local TyresIndex = { -- Wheel index list according to the number of vehicle wheels.
+ ["2"] = { 0, 4 }, -- Bike and cycle.
+ ["3"] = { 0, 1, 4, 5 }, -- Vehicle with 3 wheels (get for wheels because some 3 wheels vehicles have 2 wheels on front and one rear or the reverse).
+ ["4"] = { 0, 1, 4, 5 }, -- Vehicle with 4 wheels.
+ ["6"] = { 0, 1, 2, 3, 4, 5 }, -- Vehicle with 6 wheels.
+ }
- for wheel_index = 0, wheel_count - 1 do
- tyreBurst[tostring(wheel_index)] = IsVehicleTyreBurst(vehicle, wheel_index, false)
+ if TyresIndex[numWheels] then
+ for _, idx in pairs(TyresIndex[numWheels]) do
+ tyreBurst[tostring(idx)] = IsVehicleTyreBurst(vehicle, idx, false)
+ end
end
for windowId = 0, 7 do -- 13
@@ -1254,20 +1254,11 @@ function ESX.ShowInventory()
end)
end
-RegisterNetEvent("esx:showNotification")
-AddEventHandler("esx:showNotification", function(msg, notifyType, length)
- ESX.ShowNotification(msg, notifyType, length)
-end)
+RegisterNetEvent("esx:showNotification", ESX.ShowNotification)
-RegisterNetEvent("esx:showAdvancedNotification")
-AddEventHandler("esx:showAdvancedNotification", function(sender, subject, msg, textureDict, iconType, flash, saveToBrief, hudColorIndex)
- ESX.ShowAdvancedNotification(sender, subject, msg, textureDict, iconType, flash, saveToBrief, hudColorIndex)
-end)
+RegisterNetEvent("esx:showAdvancedNotification", ESX.ShowAdvancedNotification)
-RegisterNetEvent("esx:showHelpNotification")
-AddEventHandler("esx:showHelpNotification", function(msg, thisFrame, beep, duration)
- ESX.ShowHelpNotification(msg, thisFrame, beep, duration)
-end)
+RegisterNetEvent("esx:showHelpNotification", ESX.ShowHelpNotification)
AddEventHandler("onResourceStop", function(resourceName)
for i = 1, #ESX.UI.Menu.Opened, 1 do
diff --git a/server-data/resources/[esx]/es_extended/client/main.lua b/server-data/resources/[esx]/es_extended/client/main.lua
index e28e84afd..ee6504ec9 100644
--- a/server-data/resources/[esx]/es_extended/client/main.lua
+++ b/server-data/resources/[esx]/es_extended/client/main.lua
@@ -25,14 +25,19 @@ function ESX.SpawnPlayer(skin, coords, cb)
end)
Citizen.Await(p)
+ RequestCollisionAtCoord(coords.x, coords.y, coords.z)
+
local playerPed = PlayerPedId()
+ local timer = GetGameTimer()
+
FreezeEntityPosition(playerPed, true)
SetEntityCoordsNoOffset(playerPed, coords.x, coords.y, coords.z, false, false, false, true)
SetEntityHeading(playerPed, coords.heading)
- while not HasCollisionLoadedAroundEntity(playerPed) do
+
+ while not HasCollisionLoadedAroundEntity(playerPed) and (GetGameTimer() - timer) < 5000 do
Wait(0)
end
- FreezeEntityPosition(playerPed, false)
+
NetworkResurrectLocalPlayer(coords.x, coords.y, coords.z, coords.heading, true, true, false)
TriggerEvent("playerSpawned", coords)
cb()
@@ -204,6 +209,10 @@ AddEventHandler("esx:playerLoaded", function(xPlayer, _, skin)
end
end
+ if not Config.Multichar then
+ FreezeEntityPosition(ESX.PlayerData.ped, false)
+ end
+
if IsScreenFadedOut() then
DoScreenFadeIn(500)
end
@@ -327,17 +336,17 @@ if not Config.OxInventory then
RegisterNetEvent("esx:addWeapon")
AddEventHandler("esx:addWeapon", function()
- print("[^1ERROR^7] event ^5'esx:addWeapon'^7 Has Been Removed. Please use ^5xPlayer.addWeapon^7 Instead!")
+ error("event ^5'esx:addWeapon'^7 Has Been Removed. Please use ^5xPlayer.addWeapon^7 Instead!")
end)
RegisterNetEvent("esx:addWeaponComponent")
AddEventHandler("esx:addWeaponComponent", function()
- print("[^1ERROR^7] event ^5'esx:addWeaponComponent'^7 Has Been Removed. Please use ^5xPlayer.addWeaponComponent^7 Instead!")
+ error("event ^5'esx:addWeaponComponent'^7 Has Been Removed. Please use ^5xPlayer.addWeaponComponent^7 Instead!")
end)
RegisterNetEvent("esx:setWeaponAmmo")
AddEventHandler("esx:setWeaponAmmo", function()
- print("[^1ERROR^7] event ^5'esx:setWeaponAmmo'^7 Has Been Removed. Please use ^5xPlayer.addWeaponAmmo^7 Instead!")
+ error("event ^5'esx:setWeaponAmmo'^7 Has Been Removed. Please use ^5xPlayer.addWeaponAmmo^7 Instead!")
end)
RegisterNetEvent("esx:setWeaponTint")
@@ -347,7 +356,7 @@ if not Config.OxInventory then
RegisterNetEvent("esx:removeWeapon")
AddEventHandler("esx:removeWeapon", function()
- print("[^1ERROR^7] event ^5'esx:removeWeapon'^7 Has Been Removed. Please use ^5xPlayer.removeWeapon^7 Instead!")
+ error("event ^5'esx:removeWeapon'^7 Has Been Removed. Please use ^5xPlayer.removeWeapon^7 Instead!")
end)
RegisterNetEvent("esx:removeWeaponComponent")
diff --git a/server-data/resources/[esx]/es_extended/client/modules/callback.lua b/server-data/resources/[esx]/es_extended/client/modules/callback.lua
index cf58c391c..337b26b76 100644
--- a/server-data/resources/[esx]/es_extended/client/modules/callback.lua
+++ b/server-data/resources/[esx]/es_extended/client/modules/callback.lua
@@ -16,7 +16,7 @@ end
RegisterNetEvent("esx:serverCallback", function(requestId, invoker, ...)
if not serverRequests[requestId] then
- return print(("[^1ERROR^7] Server Callback with requestId ^5%s^7 Was Called by ^5%s^7 but does not exist."):format(requestId, invoker))
+ return error(("Server Callback with requestId ^5%s^7 Was Called by ^5%s^7 but does not exist."):format(requestId, invoker))
end
serverRequests[requestId](...)
@@ -31,7 +31,7 @@ end
RegisterNetEvent("esx:triggerClientCallback", function(eventName, requestId, invoker, ...)
if not clientCallbacks[eventName] then
- return print(("[^1ERROR^7] Client Callback not registered, name: ^5%s^7, invoker resource: ^5%s^7"):format(eventName, invoker))
+ return error(("Client Callback not registered, name: ^5%s^7, invoker resource: ^5%s^7"):format(eventName, invoker))
end
clientCallbacks[eventName](function(...)
diff --git a/server-data/resources/[esx]/es_extended/client/modules/streaming.lua b/server-data/resources/[esx]/es_extended/client/modules/streaming.lua
index 958509783..46cf16bd9 100644
--- a/server-data/resources/[esx]/es_extended/client/modules/streaming.lua
+++ b/server-data/resources/[esx]/es_extended/client/modules/streaming.lua
@@ -1,85 +1,37 @@
function ESX.Streaming.RequestModel(modelHash, cb)
- modelHash = (type(modelHash) == "number" and modelHash or joaat(modelHash))
-
- if not HasModelLoaded(modelHash) and IsModelInCdimage(modelHash) then
- RequestModel(modelHash)
-
- while not HasModelLoaded(modelHash) do
- Wait(0)
- end
- end
-
- if cb ~= nil then
- cb()
- end
+ modelHash = type(modelHash) == "number" and modelHash or joaat(modelHash)
+ if not IsModelInCdimage(modelHash) then return end
+ RequestModel(modelHash)
+ while not HasModelLoaded(modelHash) do Wait() end
+ return cb and cb(modelHash) or modelHash
end
function ESX.Streaming.RequestStreamedTextureDict(textureDict, cb)
- if not HasStreamedTextureDictLoaded(textureDict) then
- RequestStreamedTextureDict(textureDict)
-
- while not HasStreamedTextureDictLoaded(textureDict) do
- Wait(0)
- end
- end
-
- if cb ~= nil then
- cb()
- end
+ RequestStreamedTextureDict(textureDict)
+ while not HasStreamedTextureDictLoaded(textureDict) do Wait() end
+ return cb and cb(textureDict) or textureDict
end
function ESX.Streaming.RequestNamedPtfxAsset(assetName, cb)
- if not HasNamedPtfxAssetLoaded(assetName) then
- RequestNamedPtfxAsset(assetName)
-
- while not HasNamedPtfxAssetLoaded(assetName) do
- Wait(0)
- end
- end
-
- if cb ~= nil then
- cb()
- end
+ RequestNamedPtfxAsset(assetName)
+ while not HasNamedPtfxAssetLoaded(assetName) do Wait() end
+ return cb and cb(assetName) or assetName
end
function ESX.Streaming.RequestAnimSet(animSet, cb)
- if not HasAnimSetLoaded(animSet) then
- RequestAnimSet(animSet)
-
- while not HasAnimSetLoaded(animSet) do
- Wait(0)
- end
- end
-
- if cb ~= nil then
- cb()
- end
+ RequestAnimSet(animSet)
+ while not HasAnimSetLoaded(animSet) do Wait() end
+ return cb and cb(animSet) or animSet
end
function ESX.Streaming.RequestAnimDict(animDict, cb)
- if not HasAnimDictLoaded(animDict) then
- RequestAnimDict(animDict)
-
- while not HasAnimDictLoaded(animDict) do
- Wait(0)
- end
- end
-
- if cb ~= nil then
- cb()
- end
+ RequestAnimDict(animDict)
+ while not HasAnimDictLoaded(animDict) do Wait() end
+ return cb and cb(animDict) or animDict
end
function ESX.Streaming.RequestWeaponAsset(weaponHash, cb)
- if not HasWeaponAssetLoaded(weaponHash) then
- RequestWeaponAsset(weaponHash)
-
- while not HasWeaponAssetLoaded(weaponHash) do
- Wait(0)
- end
- end
-
- if cb ~= nil then
- cb()
- end
+ RequestWeaponAsset(weaponHash)
+ while not HasWeaponAssetLoaded(weaponHash) do Wait() end
+ return cb and cb(weaponHash) or weaponHash
end
diff --git a/server-data/resources/[esx]/es_extended/config.lua b/server-data/resources/[esx]/es_extended/config.lua
index cec603fbc..217130094 100644
--- a/server-data/resources/[esx]/es_extended/config.lua
+++ b/server-data/resources/[esx]/es_extended/config.lua
@@ -1,7 +1,11 @@
Config = {}
-Config.Locale = GetConvar("esx:locale", "it")
-Config.OxInventory = GetResourceState("ox_inventory") ~= 'missing'
+local txAdminLocale = GetConvar("txAdmin-locale", "it")
+local esxLocale = GetConvar("esx:locale", "invalid")
+
+Config.Locale = (esxLocale ~= "invalid") and esxLocale or (txAdminLocale ~= "custom" and txAdminLocale) or "it"
+
+Config.OxInventory = GetResourceState("ox_inventory") ~= "missing"
Config.Accounts = {
bank = {
diff --git a/server-data/resources/[esx]/es_extended/fxmanifest.lua b/server-data/resources/[esx]/es_extended/fxmanifest.lua
index db651f165..29883ecf1 100644
--- a/server-data/resources/[esx]/es_extended/fxmanifest.lua
+++ b/server-data/resources/[esx]/es_extended/fxmanifest.lua
@@ -3,7 +3,7 @@ fx_version("cerulean")
game("gta5")
description("The Core resource that provides the functionalities for all other resources.")
lua54("yes")
-version("1.0.1")
+version("1.0.2")
shared_scripts({
"locale.lua",
diff --git a/server-data/resources/[esx]/es_extended/locale.lua b/server-data/resources/[esx]/es_extended/locale.lua
index f9a29e9bd..cb857f3d7 100644
--- a/server-data/resources/[esx]/es_extended/locale.lua
+++ b/server-data/resources/[esx]/es_extended/locale.lua
@@ -2,7 +2,7 @@ Locales = {}
function Translate(str, ...) -- Translate string
if not str then
- print(("[^1ERROR^7] Resource ^5%s^7 You did not specify a parameter for the Translate function or the value is nil!"):format(GetInvokingResource() or GetCurrentResourceName()))
+ error(("Resource ^5%s^7 You did not specify a parameter for the Translate function or the value is nil!"):format(GetInvokingResource() or GetCurrentResourceName()))
return "Given translate function parameter is nil!"
end
if Locales[Config.Locale] then
diff --git a/server-data/resources/[esx]/es_extended/locales/cs.lua b/server-data/resources/[esx]/es_extended/locales/cs.lua
new file mode 100644
index 000000000..0e9d3a92b
--- /dev/null
+++ b/server-data/resources/[esx]/es_extended/locales/cs.lua
@@ -0,0 +1,371 @@
+Locales["cs"] = {
+ -- Inventory
+ ["inventory"] = "Inventář ( Váha %s / %s )",
+ ["use"] = "Použít",
+ ["give"] = "Darovat",
+ ["remove"] = "Odhodit",
+ ["return"] = "Vrátit",
+ ["give_to"] = "Darováno",
+ ["amount"] = "Počet",
+ ["giveammo"] = "Podat náboje",
+ ["amountammo"] = "Počet nábojů",
+ ["noammo"] = "Nedostatek!",
+ ["gave_item"] = "Daroval %sx %s pro %s",
+ ["received_item"] = "Získáno %sx %s od %s",
+ ["gave_weapon"] = "Předání %s pro %s",
+ ["gave_weapon_ammo"] = "Darování ~o~%sx %s do %s pro %s",
+ ["gave_weapon_withammo"] = "Darování %s s ~o~%sx %s pro %s",
+ ["gave_weapon_hasalready"] = "%s již vlastní %s",
+ ["gave_weapon_noweapon"] = "%s nemá tuto zbraň",
+ ["received_weapon"] = "Obdrženo %s od %s",
+ ["received_weapon_ammo"] = "Obdrženo ~o~%sx %s pro zbraň %s od %s",
+ ["received_weapon_withammo"] = "Obdrženo %s s ~o~%sx %s od %s",
+ ["received_weapon_hasalready"] = "%s se snažil darovat %s, ale již tuto zbraň máš",
+ ["received_weapon_noweapon"] = "%s se snažil ti dát náboje %s, ale nemáš potřebnou zbrań",
+ ["gave_account_money"] = "Darováno $%s (%s) pro %s",
+ ["received_account_money"] = "Získáno $%s (%s) od %s",
+ ["amount_invalid"] = "Špatné množství",
+ ["players_nearby"] = "Žádný hráč není poblíž",
+ ["ex_inv_lim"] = "Nelze sebrat,protože máš plné kapsy %s",
+ ["imp_invalid_quantity"] = "Neplatné množství",
+ ["imp_invalid_amount"] = "Nelze provést, neplatné množství",
+ ["threw_standard"] = "Zahozeno %sx %s",
+ ["threw_account"] = "Zahozeno $%s %s",
+ ["threw_weapon"] = "Zahozeno %s",
+ ["threw_weapon_ammo"] = "Zahozeno %s s ~o~%sx %s",
+ ["threw_weapon_already"] = "Již vlastníš tuto zbraň",
+ ["threw_cannot_pickup"] = "Kapsy máš plné, nemůžeš sebrat!",
+ ["threw_pickup_prompt"] = "Zmáčkni E pro sebrání!",
+
+ -- Key mapping
+ ["keymap_showinventory"] = "Otevřít inventář",
+
+ -- Salary related
+ ["received_salary"] = "Obdržel jsi: $%s",
+ ["received_help"] = "Obdržel jsi svůj podíl: $%s",
+ ["company_nomoney"] = "Firma kde pracujete je příliš chudá, aby vám zaplatila",
+ ["received_paycheck"] = "Obdržena platba",
+ ["bank"] = "Banka",
+ ["account_bank"] = "V bance",
+ ["account_black_money"] = "Špináve peníze",
+ ["account_money"] = "V kapse",
+
+ ["act_imp"] = "Nelze provést",
+ ["in_vehicle"] = "Nelze provést, hráč je v autě",
+ ["not_in_vehicle"] = "Cannot Perform Action, Player isn't in a vehicle",
+
+ -- Commands
+ ["command_bring"] = "Přivolat si hráče k sobě",
+ ["command_car"] = "Spawnout vozidlo",
+ ["command_car_car"] = "Zadej jméno vozidla nebo spawnname",
+ ["command_cardel"] = "Odstranění vozidla v okolí",
+ ["command_cardel_radius"] = "Odstranění vozidla v určeném dosahu",
+ ["command_repair"] = "Repair your vehicle",
+ ["command_repair_success"] = "Successfully repaired vehicle",
+ ["command_repair_success_target"] = "An admin repaired your vehicle",
+ ["command_clear"] = "Vymazat text v chatu",
+ ["command_clearall"] = "Vymazat chet pro všechny hráče",
+ ["command_clearinventory"] = "Vymazat všechny věci z invetáře hráče",
+ ["command_clearloadout"] = "Vymazat všechny zbraně z inventáře hráče",
+ ["command_freeze"] = "Zmrazit hráče",
+ ["command_unfreeze"] = "Odmrazit hráče",
+ ["command_giveaccountmoney"] = "Poslat peníze na účet ",
+ ["command_giveaccountmoney_account"] = "Převést peníze na účet",
+ ["command_giveaccountmoney_amount"] = "Částka k poslání",
+ ["command_giveaccountmoney_invalid"] = "Neplátné jméno",
+ ["command_giveitem"] = "Darovat věc hráči",
+ ["command_giveitem_item"] = "Název věci",
+ ["command_giveitem_count"] = "Množství",
+ ["command_giveweapon"] = "Dát zbraň hráči",
+ ["command_giveweapon_weapon"] = "Název zbraně",
+ ["command_giveweapon_ammo"] = "Množství náboje",
+ ["command_giveweapon_hasalready"] = "Hráč již má tuto zbraň",
+ ["command_giveweaponcomponent"] = "Darovat přídavek na zbraň",
+ ["command_giveweaponcomponent_component"] = "Název zbraně",
+ ["command_giveweaponcomponent_invalid"] = "Špatné jméno přídavku",
+ ["command_giveweaponcomponent_hasalready"] = "Hráč již má tento přídavek",
+ ["command_giveweaponcomponent_missingweapon"] = "Hráč nemá tuto zbrań",
+ ["command_goto"] = "Teleportování sebe k hráči",
+ ["command_kill"] = "Zabití hráče",
+ ["command_save"] = "Uložení dat hráče",
+ ["command_saveall"] = "Uložení veškerých dat hráče",
+ ["command_setaccountmoney"] = "Nastavení určeného počtu peněz",
+ ["command_setaccountmoney_amount"] = "Počet peněz",
+ ["command_setcoords"] = "Teleportování na určené souřadnice",
+ ["command_setcoords_x"] = "Hodnota X",
+ ["command_setcoords_y"] = "Hodnota Y",
+ ["command_setcoords_z"] = "Hodnota Z",
+ ["command_setjob"] = "Nastavit práci hráči",
+ ["command_setjob_job"] = "Název práce",
+ ["command_setjob_grade"] = "Pozice ve firmě",
+ ["command_setjob_invalid"] = "Špatné zadání práce,hodnosti nebo i obou hodnot",
+ ["command_setgroup"] = "Nastavení práv hráči",
+ ["command_setgroup_group"] = "Název skupiny",
+ ["commanderror_argumentmismatch"] = "Chybný počet hodnot (správně %s, potřebných %s)",
+ ["commanderror_argumentmismatch_number"] = "Chybně zadaná hodnot #%s (správně, špatně)",
+ ["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
+ ["commanderror_invaliditem"] = "Špatný předmět",
+ ["commanderror_invalidweapon"] = "Špatná zbraň",
+ ["commanderror_console"] = "příkaz nelze být zpracován v konzoli",
+ ["commanderror_invalidcommand"] = "Špatný příkaz - /%s",
+ ["commanderror_invalidplayerid"] = "Hráč není dostupný",
+ ["commandgeneric_playerid"] = "Id hráče",
+ ["command_giveammo_noweapon_found"] = "%s nemá tuto zbraň",
+ ["command_giveammo_weapon"] = "Název zbraně",
+ ["command_giveammo_ammo"] = "Počet nábojů",
+
+ -- Locale settings
+ ["locale_digit_grouping_symbol"] = ",",
+ ["locale_currency"] = "£%s",
+
+ -- Weapons
+
+ -- Melee
+ ["weapon_dagger"] = "Dýka",
+ ["weapon_bat"] = "Baseballová pálka",
+ ["weapon_battleaxe"] = "Bitevní sekera",
+ ["weapon_bottle"] = "Rozbitá lahve",
+ ["weapon_crowbar"] = "Páčidlo",
+ ["weapon_flashlight"] = "Baterka",
+ ["weapon_golfclub"] = "Golfová hůl",
+ ["weapon_hammer"] = "Kladivo",
+ ["weapon_hatchet"] = "Sekera",
+ ["weapon_knife"] = "Nůž",
+ ["weapon_knuckle"] = "Boxer",
+ ["weapon_machete"] = "Mačeta",
+ ["weapon_nightstick"] = "Policejní obušek",
+ ["weapon_wrench"] = "Francouzský klíč",
+ ["weapon_poolcue"] = "Kulečníkové tágo",
+ ["weapon_stone_hatchet"] = "Kamenná sekera",
+ ["weapon_switchblade"] = "Vystřelovací nůž",
+
+ -- Handguns
+ ["weapon_appistol"] = "AP pistol",
+ ["weapon_ceramicpistol"] = "Ceramic pistol",
+ ["weapon_combatpistol"] = "Combat pistol",
+ ["weapon_doubleaction"] = "Double-Action Revolver",
+ ["weapon_navyrevolver"] = "Navy Revolver",
+ ["weapon_flaregun"] = "Flaregun",
+ ["weapon_gadgetpistol"] = "Gadget Pistol",
+ ["weapon_heavypistol"] = "Heavy Pistol",
+ ["weapon_revolver"] = "Heavy Revolver",
+ ["weapon_revolver_mk2"] = "Heavy Revolver MK2",
+ ["weapon_marksmanpistol"] = "Marksman Pistol",
+ ["weapon_pistol"] = "Pistol",
+ ["weapon_pistol_mk2"] = "Pistol MK2",
+ ["weapon_pistol50"] = "Pistol .50",
+ ["weapon_snspistol"] = "SNS Pistol",
+ ["weapon_snspistol_mk2"] = "SNS Pistol MK2",
+ ["weapon_stungun"] = "Taser",
+ ["weapon_raypistol"] = "Up-N-Atomizer",
+ ["weapon_vintagepistol"] = "Vintage Pistol",
+
+ -- Shotguns
+ ["weapon_assaultshotgun"] = "Assault Shotgun",
+ ["weapon_autoshotgun"] = "Auto Shotgun",
+ ["weapon_bullpupshotgun"] = "Bullpup Shotgun",
+ ["weapon_combatshotgun"] = "Combat Shotgun",
+ ["weapon_dbshotgun"] = "Double Barrel Shotgun",
+ ["weapon_heavyshotgun"] = "Heavy Shotgun",
+ ["weapon_musket"] = "Musket",
+ ["weapon_pumpshotgun"] = "Pump Shotgun",
+ ["weapon_pumpshotgun_mk2"] = "Pump Shotgun MK2",
+ ["weapon_sawnoffshotgun"] = "Sawed Off Shotgun",
+
+ -- SMG & LMG
+ ["weapon_assaultsmg"] = "Assault SMG",
+ ["weapon_combatmg"] = "Combat MG",
+ ["weapon_combatmg_mk2"] = "Combat MG MK2",
+ ["weapon_combatpdw"] = "Combat PDW",
+ ["weapon_gusenberg"] = "Gusenberg Sweeper",
+ ["weapon_machinepistol"] = "Machine Pistol",
+ ["weapon_mg"] = "MG",
+ ["weapon_microsmg"] = "Micro SMG",
+ ["weapon_minismg"] = "Mini SMG",
+ ["weapon_smg"] = "SMG",
+ ["weapon_smg_mk2"] = "SMG MK2",
+ ["weapon_raycarbine"] = "Unholy Hellbringer",
+
+ -- Rifles
+ ["weapon_advancedrifle"] = "Advanced Rifle",
+ ["weapon_assaultrifle"] = "Assault Rifle",
+ ["weapon_assaultrifle_mk2"] = "Assault Rifle MK2",
+ ["weapon_bullpuprifle"] = "Bullpup Rifle",
+ ["weapon_bullpuprifle_mk2"] = "Bullpup Rifle MK2",
+ ["weapon_carbinerifle"] = "Carbine Rifle",
+ ["weapon_carbinerifle_mk2"] = "Carbine Rifle MK2",
+ ["weapon_compactrifle"] = "Compact Rifle",
+ ["weapon_militaryrifle"] = "Military Rifle",
+ ["weapon_specialcarbine"] = "Special Carbine",
+ ["weapon_specialcarbine_mk2"] = "Special Carbine MK2",
+ ["weapon_heavyrifle"] = "Heavy Rifle", -- Not Translated
+
+ -- Sniper
+ ["weapon_heavysniper"] = "Heavy Sniper",
+ ["weapon_heavysniper_mk2"] = "Heavy Sniper MK2",
+ ["weapon_marksmanrifle"] = "Marksman Rifle",
+ ["weapon_marksmanrifle_mk2"] = "Marksman Rifle MK2",
+ ["weapon_sniperrifle"] = "Sniper Rifle",
+
+ -- Heavy / Launchers
+ ["weapon_compactlauncher"] = "Compact Launcher",
+ ["weapon_firework"] = "Firework Launcher",
+ ["weapon_grenadelauncher"] = "Grenade Launcher",
+ ["weapon_hominglauncher"] = "Homing Launcher",
+ ["weapon_minigun"] = "Minigun",
+ ["weapon_railgun"] = "Railgun",
+ ["weapon_rpg"] = "Rocket Launcher",
+ ["weapon_rayminigun"] = "Widowmaker",
+
+ -- Criminal Enterprises DLC
+ ["weapon_metaldetector"] = "Detektor kovu",
+ ["weapon_precisionrifle"] = "Precision Rifle",
+ ["weapon_tactilerifle"] = "Service Carbine",
+
+ -- Drug Wars DLC
+ ["weapon_candycane"] = "Candy Cane", -- not translated
+ ["weapon_acidpackage"] = "Acid Package", -- not translated
+ ["weapon_pistolxm3"] = "WM 29 Pistol", -- not translated
+ ["weapon_railgunxm3"] = "Railgun", -- not translated
+
+ -- Thrown
+ ["weapon_ball"] = "Míček",
+ ["weapon_bzgas"] = "Smrtící slzný plyn",
+ ["weapon_flare"] = "Světlice",
+ ["weapon_grenade"] = "Granát",
+ ["weapon_petrolcan"] = "Kanistr",
+ ["weapon_hazardcan"] = "Hazardous Jerrycan",
+ ["weapon_molotov"] = "Molotův koktejl",
+ ["weapon_proxmine"] = "Pohybová mina",
+ ["weapon_pipebomb"] = "Trubková bomba",
+ ["weapon_snowball"] = "Sněhová koule",
+ ["weapon_stickybomb"] = "C4",
+ ["weapon_smokegrenade"] = "Slzný plyn",
+
+ -- Special
+ ["weapon_fireextinguisher"] = "Hasící přístroj",
+ ["weapon_digiscanner"] = "Skener",
+ ["weapon_garbagebag"] = "Odpadkový pytel",
+ ["weapon_handcuffs"] = "Pouta",
+ ["gadget_nightvision"] = "Noční vidění",
+ ["gadget_parachute"] = "Padák",
+
+ -- Weapon Components
+ ["component_knuckle_base"] = "base Model",
+ ["component_knuckle_pimp"] = "the Pimp",
+ ["component_knuckle_ballas"] = "the Ballas",
+ ["component_knuckle_dollar"] = "the Hustler",
+ ["component_knuckle_diamond"] = "the Rock",
+ ["component_knuckle_hate"] = "the Hater",
+ ["component_knuckle_love"] = "the Lover",
+ ["component_knuckle_player"] = "the Player",
+ ["component_knuckle_king"] = "the King",
+ ["component_knuckle_vagos"] = "the Vagos",
+
+ ["component_luxary_finish"] = "luxary Weapon Finish",
+
+ ["component_handle_default"] = "default Handle",
+ ["component_handle_vip"] = "vIP Handle",
+ ["component_handle_bodyguard"] = "bodyguard Handle",
+
+ ["component_vip_finish"] = "vIP Finish",
+ ["component_bodyguard_finish"] = "bodyguard Finish",
+
+ ["component_camo_finish"] = "digital Camo",
+ ["component_camo_finish2"] = "brushstroke Camo",
+ ["component_camo_finish3"] = "woodland Camo",
+ ["component_camo_finish4"] = "skull Camo",
+ ["component_camo_finish5"] = "sessanta Nove Camo",
+ ["component_camo_finish6"] = "perseus Camo",
+ ["component_camo_finish7"] = "leopard Camo",
+ ["component_camo_finish8"] = "zebra Camo",
+ ["component_camo_finish9"] = "geometric Camo",
+ ["component_camo_finish10"] = "boom Camo",
+ ["component_camo_finish11"] = "patriotic Camo",
+
+ ["component_camo_slide_finish"] = "digital Slide Camo",
+ ["component_camo_slide_finish2"] = "brushstroke Slide Camo",
+ ["component_camo_slide_finish3"] = "woodland Slide Camo",
+ ["component_camo_slide_finish4"] = "skull Slide Camo",
+ ["component_camo_slide_finish5"] = "sessanta Nove Slide Camo",
+ ["component_camo_slide_finish6"] = "perseus Slide Camo",
+ ["component_camo_slide_finish7"] = "leopard Slide Camo",
+ ["component_camo_slide_finish8"] = "zebra Slide Camo",
+ ["component_camo_slide_finish9"] = "geometric Slide Camo",
+ ["component_camo_slide_finish10"] = "boom Slide Camo",
+ ["component_camo_slide_finish11"] = "patriotic Slide Camo",
+
+ ["component_clip_default"] = "default Magazine",
+ ["component_clip_extended"] = "extended Magazine",
+ ["component_clip_drum"] = "drum Magazine",
+ ["component_clip_box"] = "box Magazine",
+
+ ["component_scope_holo"] = "holographic Scope",
+ ["component_scope_small"] = "small Scope",
+ ["component_scope_medium"] = "medium Scope",
+ ["component_scope_large"] = "large Scope",
+ ["component_scope"] = "mounted Scope",
+ ["component_scope_advanced"] = "advanced Scope",
+ ["component_ironsights"] = "ironsights",
+
+ ["component_suppressor"] = "suppressor",
+ ["component_compensator"] = "compensator",
+
+ ["component_muzzle_flat"] = "flat Muzzle Brake",
+ ["component_muzzle_tactical"] = "tactical Muzzle Brake",
+ ["component_muzzle_fat"] = "fat-End Muzzle Brake",
+ ["component_muzzle_precision"] = "precision Muzzle Brake",
+ ["component_muzzle_heavy"] = "heavy Duty Muzzle Brake",
+ ["component_muzzle_slanted"] = "slanted Muzzle Brake",
+ ["component_muzzle_split"] = "split-End Muzzle Brake",
+ ["component_muzzle_squared"] = "squared Muzzle Brake",
+
+ ["component_flashlight"] = "flashlight",
+ ["component_grip"] = "grip",
+
+ ["component_barrel_default"] = "default Barrel",
+ ["component_barrel_heavy"] = "heavy Barrel",
+
+ ["component_ammo_tracer"] = "tracer Ammo",
+ ["component_ammo_incendiary"] = "incendiary Ammo",
+ ["component_ammo_hollowpoint"] = "hollowpoint Ammo",
+ ["component_ammo_fmj"] = "fMJ Ammo",
+ ["component_ammo_armor"] = "armor Piercing Ammo",
+ ["component_ammo_explosive"] = "armor Piercing Incendiary Ammo",
+
+ ["component_shells_default"] = "default Shells",
+ ["component_shells_incendiary"] = "dragons Breath Shells",
+ ["component_shells_armor"] = "steel Buckshot Shells",
+ ["component_shells_hollowpoint"] = "flechette Shells",
+ ["component_shells_explosive"] = "explosive Slug Shells",
+
+ -- Weapon Ammo
+ ["ammo_rounds"] = "round(s)",
+ ["ammo_shells"] = "shell(s)",
+ ["ammo_charge"] = "charge",
+ ["ammo_petrol"] = "gallons of fuel",
+ ["ammo_firework"] = "firework(s)",
+ ["ammo_rockets"] = "rocket(s)",
+ ["ammo_grenadelauncher"] = "grenade(s)",
+ ["ammo_grenade"] = "grenade(s)",
+ ["ammo_stickybomb"] = "bomb(s)",
+ ["ammo_pipebomb"] = "bomb(s)",
+ ["ammo_smokebomb"] = "bomb(s)",
+ ["ammo_molotov"] = "cocktail(s)",
+ ["ammo_proxmine"] = "mine(s)",
+ ["ammo_bzgas"] = "can(s)",
+ ["ammo_ball"] = "ball(s)",
+ ["ammo_snowball"] = "snowball(s)",
+ ["ammo_flare"] = "flare(s)",
+ ["ammo_flaregun"] = "flare(s)",
+
+ -- Weapon Tints
+ ["tint_default"] = "default skin",
+ ["tint_green"] = "green skin",
+ ["tint_gold"] = "gold skin",
+ ["tint_pink"] = "pink skin",
+ ["tint_army"] = "army skin",
+ ["tint_lspd"] = "blue skin",
+ ["tint_orange"] = "orange skin",
+ ["tint_platinum"] = "platinum skin",
+}
diff --git a/server-data/resources/[esx]/es_extended/locales/de.lua b/server-data/resources/[esx]/es_extended/locales/de.lua
new file mode 100644
index 000000000..cbdb524dd
--- /dev/null
+++ b/server-data/resources/[esx]/es_extended/locales/de.lua
@@ -0,0 +1,381 @@
+Locales["de"] = {
+ -- Inventory
+ ["inventory"] = "Inventar ( Gewicht %s / %s )",
+ ["use"] = "Benutzen",
+ ["give"] = "Geben",
+ ["remove"] = "Entsorgen",
+ ["return"] = "Zurück",
+ ["give_to"] = "Geben an",
+ ["amount"] = "Anzahl",
+ ["giveammo"] = "Munition geben",
+ ["amountammo"] = "Munitions Anzahl",
+ ["noammo"] = "Nicht Genug!",
+ ["gave_item"] = "Du gibst %sx %s an %s",
+ ["received_item"] = "Du bekommst %sx %s von %s",
+ ["gave_weapon"] = "Du gibst %s an %s",
+ ["gave_weapon_ammo"] = "Du gibst ~o~%sx %s für %s an %s",
+ ["gave_weapon_withammo"] = "Du gibst %s mit ~o~%sx %s an %s",
+ ["gave_weapon_hasalready"] = "%s hat bereits %s",
+ ["gave_weapon_noweapon"] = "%s hat diese Waffe nicht",
+ ["received_weapon"] = "Du bekommst %s von %s",
+ ["received_weapon_ammo"] = "Du bekommst ~o~%sx %s für deine %s von %s",
+ ["received_weapon_withammo"] = "Du bekommst %s mit ~o~%sx %s von %s",
+ ["received_weapon_hasalready"] = "%s hat versucht dir eine %s zu geben, jedoch hast du diese Waffe bereits!",
+ ["received_weapon_noweapon"] = "%s hat versucht dir Munition für eine %s zu geben, jedoch hast du diese Waffe bereits!",
+ ["gave_account_money"] = "Du gibst %s€ (%s) an %s",
+ ["received_account_money"] = "Du bekommst %s€ (%s) von %s",
+ ["amount_invalid"] = "Ungültige Anzahl",
+ ["players_nearby"] = "Keine Personen in der Nähe!",
+ ["ex_inv_lim"] = "Du kannst diese Aktion nicht ausführen!, Inventarlimit für %s überschritten.",
+ ["imp_invalid_quantity"] = "Du kannst diese Aktion nicht ausführen!, Ungültige Anzahl!",
+ ["imp_invalid_amount"] = "Du kannst diese Aktion nicht ausführen!, Ungültige Anzahl",
+ ["threw_standard"] = "Du entsorgst %sx %s",
+ ["threw_account"] = "Du Entsorgst %s€ %s",
+ ["threw_weapon"] = "Du entsorgst %s",
+ ["threw_weapon_ammo"] = "Du entsorgst %s mit ~o~%sx %s",
+ ["threw_weapon_already"] = "Du hast diese Waffe bereits!",
+ ["threw_cannot_pickup"] = "Inventar ist voll! Du kannst dies nicht aufheben",
+ ["threw_pickup_prompt"] = "Drücke [E] zum aufheben",
+
+ -- Key mapping
+ ["keymap_showinventory"] = "Inventar Anzeigen",
+
+ -- Salary related
+ ["received_salary"] = "Dein Gehaltscheck ist angekommen!: %s€",
+ ["received_help"] = "Deine Sozialhilfe ist angekommen: %s€",
+ ["company_nomoney"] = "Die Firma an der du Angestellt bist, ist leider Arm und kann dich nicht bezahlen :(",
+ ["received_paycheck"] = "Gehaltscheck erhalten",
+ ["bank"] = "Maze Bank",
+ ["account_bank"] = "Bank",
+ ["account_black_money"] = "Schwarzgeld",
+ ["account_money"] = "Bargeld",
+
+ ["act_imp"] = "Du kannst diese Aktion nicht ausführen!",
+ ["in_vehicle"] = "Person darf nicht in einem Fahrzeug sein!",
+ ["not_in_vehicle"] = "Person muss in einem Fahrzeug sein!",
+
+ -- Commands
+ ["command_bring"] = "Person zu dir bringen",
+ ["command_car"] = "Fahrzeug Spawnen",
+ ["command_car_car"] = "Fahrzeug Model oder Hash",
+ ["command_cardel"] = "Fahrzeuge entfernen",
+ ["command_cardel_radius"] = "Entfernt alle Fahrzeuge in einem bestimmten Radius",
+ ["command_repair"] = "Fahrzeug reparieren",
+ ["command_repair_success"] = "Fahrzeug erfolgreich repariert.",
+ ["command_repair_success_target"] = "Ein Admin hat dein Fahrzeug repariert.",
+ ["command_clear"] = "Textchat leeren",
+ ["command_clearall"] = "Textchat für alle Spieler leeren",
+ ["command_clearinventory"] = "Alle Gegenstände vom Inventar eines Spielers entfernen",
+ ["command_clearloadout"] = "Alle Waffen vom Loadout eines Spielers entfernen",
+ ["command_freeze"] = "Spieler Freezen",
+ ["command_unfreeze"] = "Spieler Entfreezen",
+ ["command_giveaccountmoney"] = "Geld an ein bestimmtes Konto geben",
+ ["command_giveaccountmoney_account"] = "Konto, wohin das Geld hinzugefügt werden soll",
+ ["command_giveaccountmoney_amount"] = "Menge zum Hinzufügen",
+ ["command_giveaccountmoney_invalid"] = "Accountname ungültig!",
+ ["command_giveitem"] = "Spieler ein Gegenstand geben",
+ ["command_giveitem_item"] = "Gegenstand Name",
+ ["command_giveitem_count"] = "Menge",
+ ["command_giveweapon"] = "Spieler eine Waffe geben",
+ ["command_giveweapon_weapon"] = "Waffenname",
+ ["command_giveweapon_ammo"] = "Munitionsanzahl",
+ ["command_giveweapon_hasalready"] = "Spieler hat diese Waffe bereits!",
+ ["command_giveweaponcomponent"] = "Waffenkomponent an einen Spieler geben",
+ ["command_giveweaponcomponent_component"] = "Komponentenname",
+ ["command_giveweaponcomponent_invalid"] = "Ungültiger Komponentenname",
+ ["command_giveweaponcomponent_hasalready"] = "Spieler hat diese Komponente bereits!",
+ ["command_giveweaponcomponent_missingweapon"] = "Spieler hat diese Waffe nicht!",
+ ["command_goto"] = "Teleportiere dich zu einem Spieler",
+ ["command_kill"] = "Spieler Töten",
+ ["command_save"] = "Von einem bestimmten Spieler die Spielerdaten speichern",
+ ["command_saveall"] = "Von allen Spielern die Spielerdaten speichern",
+ ["command_setaccountmoney"] = "Geld auf einem bestimmten Konto festlegen",
+ ["command_setaccountmoney_amount"] = "Menge",
+ ["command_setcoords"] = "Zu den bestimmten Koordinaten teleportieren",
+ ["command_setcoords_x"] = "X Koordinate",
+ ["command_setcoords_y"] = "Y Koordinate",
+ ["command_setcoords_z"] = "Z Koordinate",
+ ["command_setjob"] = "Job eines Spielers setzen",
+ ["command_setjob_job"] = "Name",
+ ["command_setjob_grade"] = "Job Rang",
+ ["command_setjob_invalid"] = "Der Rang oder der Name und Rang sind ungültig",
+ ["command_setgroup"] = "Setzt eine Berechtigungs Gruppe für einen Benutzer",
+ ["command_setgroup_group"] = "Name der Gruppe",
+ ["command_removeaccountmoney"] = "Entfernt Geld von einem bestimmten Konto",
+ ["command_removeaccountmoney_account"] = "Konto von dem es entfernt werden soll",
+ ["command_removeaccountmoney_amount"] = "Menge, die entfernt werden soll",
+ ["command_removeaccountmoney_invalid"] = "Name des Kontos ungültig",
+ ["commanderror_argumentmismatch"] = "Ungültiges Argument (gegeben %s, gewollt %s)",
+ ["commanderror_argumentmismatch_number"] = "Ungültiges Argument #%s Datentyp (String gegeben, Nummer gefordert)",
+ ["commanderror_argumentmismatch_string"] = "Ungültiges Argument #%s Datentyp (Nummer gegeben, String gefordert)",
+ ["commanderror_invaliditem"] = "Ungültiger Gegenstand",
+ ["commanderror_invalidweapon"] = "Ungültige Waffe",
+ ["commanderror_console"] = "Befehl kann nicht von der Konsole aus ausgeführt werden!",
+ ["commanderror_invalidcommand"] = "Ungültiger Befehl - /%s",
+ ["commanderror_invalidplayerid"] = "Angegebener Spieler ist nicht online!",
+ ["commandgeneric_playerid"] = "Spieler ID",
+ ["command_giveammo_noweapon_found"] = "%s besitzt diese Waffe nicht!",
+ ["command_giveammo_weapon"] = "Waffenname",
+ ["command_giveammo_ammo"] = "Munitionsanzahl",
+ ["tpm_nowaypoint"] = "Kein Wegpunkt gesetzt!",
+ ["tpm_success"] = "Erfolgreich teleportiert.",
+
+ ["noclip_message"] = "Noclip wurde %s",
+ ["enabled"] = "~g~Aktiviert~s~",
+ ["disabled"] = "~r~Deaktiviert~s~",
+
+ -- Locale settings
+ ["locale_digit_grouping_symbol"] = ",",
+ ["locale_currency"] = "%s€",
+
+ -- Weapons
+
+ -- Melee
+ ["weapon_dagger"] = "Dolch",
+ ["weapon_bat"] = "Baseballschläger",
+ ["weapon_battleaxe"] = "Kampfaxt",
+ ["weapon_bottle"] = "Flasche",
+ ["weapon_crowbar"] = "Brechstange",
+ ["weapon_flashlight"] = "Taschenlampe",
+ ["weapon_golfclub"] = "Golfschläger",
+ ["weapon_hammer"] = "Hammer",
+ ["weapon_hatchet"] = "Beil",
+ ["weapon_knife"] = "Messer",
+ ["weapon_knuckle"] = "Schlagring",
+ ["weapon_machete"] = "Machete",
+ ["weapon_nightstick"] = "Schlagstock",
+ ["weapon_wrench"] = "Rohrzange",
+ ["weapon_poolcue"] = "Billiardstange",
+ ["weapon_stone_hatchet"] = "Steinbeil",
+ ["weapon_switchblade"] = "Springmesser",
+
+ -- Handguns
+ ["weapon_appistol"] = "AP Pistole",
+ ["weapon_ceramicpistol"] = "Keramikpistole",
+ ["weapon_combatpistol"] = "Kampfpistole",
+ ["weapon_doubleaction"] = "Double-Action Revolver",
+ ["weapon_navyrevolver"] = "Navy Revolver",
+ ["weapon_flaregun"] = "Flaregun",
+ ["weapon_gadgetpistol"] = "Gadgetpistole",
+ ["weapon_heavypistol"] = "Schwere Pistole",
+ ["weapon_revolver"] = "Schwerer Revolver",
+ ["weapon_revolver_mk2"] = "Schwerer Revolver MK2",
+ ["weapon_marksmanpistol"] = "Scharfschützen Pistole",
+ ["weapon_pistol"] = "Pistole",
+ ["weapon_pistol_mk2"] = "Pistole MK2",
+ ["weapon_pistol50"] = "Pistole 50 Kaliber",
+ ["weapon_snspistol"] = "SNS Pistol",
+ ["weapon_snspistol_mk2"] = "SNS Pistol MK2",
+ ["weapon_stungun"] = "Taser",
+ ["weapon_raypistol"] = "Up-N-Atomizer",
+ ["weapon_vintagepistol"] = "Vintagepistole",
+
+ -- Shotguns
+ ["weapon_assaultshotgun"] = "Sturmschrotflinte",
+ ["weapon_autoshotgun"] = "Automatische Schrotflinte",
+ ["weapon_bullpupshotgun"] = "Bullpup-Schrotflinte",
+ ["weapon_combatshotgun"] = "Kampfschrotfline",
+ ["weapon_dbshotgun"] = "Doppelbarrel Schrotflinte",
+ ["weapon_heavyshotgun"] = "Schwere Schrotflinte",
+ ["weapon_musket"] = "Muskete",
+ ["weapon_pumpshotgun"] = "Pump Schrotflinte",
+ ["weapon_pumpshotgun_mk2"] = "Pump Schrotflinte MK2",
+ ["weapon_sawnoffshotgun"] = "Abgesägte Schrotflinte",
+
+ -- SMG & LMG
+ ["weapon_assaultsmg"] = "Sturm SMG",
+ ["weapon_combatmg"] = "Kampf MG",
+ ["weapon_combatmg_mk2"] = "Kampf MG MK2",
+ ["weapon_combatpdw"] = "Kampf PDW",
+ ["weapon_gusenberg"] = "Gusenberg Sweeper",
+ ["weapon_machinepistol"] = "Maschinenpistole",
+ ["weapon_mg"] = "MG",
+ ["weapon_microsmg"] = "Mikro SMG",
+ ["weapon_minismg"] = "Mini SMG",
+ ["weapon_smg"] = "SMG",
+ ["weapon_smg_mk2"] = "SMG MK2",
+ ["weapon_raycarbine"] = "Unheiliger Höllenbringer",
+
+ -- Rifles
+ ["weapon_advancedrifle"] = "Fortgeschrittenes Gewehr",
+ ["weapon_assaultrifle"] = "Sturmgewehr",
+ ["weapon_assaultrifle_mk2"] = "Sturmgewehr MK2",
+ ["weapon_bullpuprifle"] = "Bullpup Gewehr",
+ ["weapon_bullpuprifle_mk2"] = "Bullpup Gewehr MK2",
+ ["weapon_carbinerifle"] = "Karabinergewehr",
+ ["weapon_carbinerifle_mk2"] = "Karabinergewehr MK2",
+ ["weapon_compactrifle"] = "Kompaktesgewehr",
+ ["weapon_militaryrifle"] = "Militärgewehr",
+ ["weapon_specialcarbine"] = "Spezialkarabiner",
+ ["weapon_specialcarbine_mk2"] = "Spezialkarabiner MK2",
+ ["weapon_heavyrifle"] = "Schweres Gewehr",
+
+ -- Sniper
+ ["weapon_heavysniper"] = "Schwere Sniper",
+ ["weapon_heavysniper_mk2"] = "Schwere Sniper MK2",
+ ["weapon_marksmanrifle"] = "Scharfschützengewehr",
+ ["weapon_marksmanrifle_mk2"] = "Scharfschützengewehr MK2",
+ ["weapon_sniperrifle"] = "Sniper",
+
+ -- Heavy / Launchers
+ ["weapon_compactlauncher"] = "Kompaktlauncher",
+ ["weapon_firework"] = "Feuerwerklauncher",
+ ["weapon_grenadelauncher"] = "Granatwerfer",
+ ["weapon_hominglauncher"] = "Lenkraketenwerfer",
+ ["weapon_minigun"] = "Minigun",
+ ["weapon_railgun"] = "Railgun",
+ ["weapon_rpg"] = "Raketenwerfer",
+ ["weapon_rayminigun"] = "Witwenmacher",
+
+ -- Criminal Enterprises DLC
+ ["weapon_metaldetector"] = "Metalldetektor",
+ ["weapon_precisionrifle"] = "Präzisionsgewehr",
+ ["weapon_tactilerifle"] = "Service Karabiner",
+
+ -- Drug Wars DLC
+ ["weapon_candycane"] = "Zuckerstange",
+ ["weapon_acidpackage"] = "Säure Paket",
+ ["weapon_pistolxm3"] = "WM 29 Pistole",
+ ["weapon_railgunxm3"] = "Railgun",
+
+ -- Thrown
+ ["weapon_ball"] = "Baseball",
+ ["weapon_bzgas"] = "BZ Gas",
+ ["weapon_flare"] = "Leuchtfackel",
+ ["weapon_grenade"] = "Granate",
+ ["weapon_petrolcan"] = "Benzinkanister",
+ ["weapon_hazardcan"] = "Gefährliche Kanister",
+ ["weapon_molotov"] = "Molotov Cocktail",
+ ["weapon_proxmine"] = "Annährungsmine",
+ ["weapon_pipebomb"] = "Rohrbombe",
+ ["weapon_snowball"] = "Schneeball",
+ ["weapon_stickybomb"] = "Haftbombe",
+ ["weapon_smokegrenade"] = "Tränengas",
+
+ -- Special
+ ["weapon_fireextinguisher"] = "Feuerlöscher",
+ ["weapon_digiscanner"] = "Digitalscanner",
+ ["weapon_garbagebag"] = "Müllsack",
+ ["weapon_handcuffs"] = "Handschelle",
+ ["gadget_nightvision"] = "Nachtsicht",
+ ["gadget_parachute"] = "Fallschirm",
+
+ -- Weapon Components
+ ["component_knuckle_base"] = "Basismodell",
+ ["component_knuckle_pimp"] = "Der Pimp",
+ ["component_knuckle_ballas"] = "Die Ballas",
+ ["component_knuckle_dollar"] = "Der Hustler",
+ ["component_knuckle_diamond"] = "Der Stein",
+ ["component_knuckle_hate"] = "Der Hater",
+ ["component_knuckle_love"] = "Der Lover",
+ ["component_knuckle_player"] = "Der Player",
+ ["component_knuckle_king"] = "Der King",
+ ["component_knuckle_vagos"] = "Die Vagos",
+
+ ["component_luxary_finish"] = "Luxuswaffenlackierung",
+
+ ["component_handle_default"] = "Normaler Handgriff",
+ ["component_handle_vip"] = "VIP Handgriff",
+ ["component_handle_bodyguard"] = "Bodyguard Handgriff",
+
+ ["component_vip_finish"] = "VIP Lackierung",
+ ["component_bodyguard_finish"] = "Bodyguard Lackierung",
+
+ ["component_camo_finish"] = "Digitales Camouflage",
+ ["component_camo_finish2"] = "Pinselstrich Camouflage",
+ ["component_camo_finish3"] = "Holzland Camouflage",
+ ["component_camo_finish4"] = "Kopf Camouflage",
+ ["component_camo_finish5"] = "Sessebta-Nove Camouflage",
+ ["component_camo_finish6"] = "Perseus Camouflage",
+ ["component_camo_finish7"] = "Leopard Camouflage",
+ ["component_camo_finish8"] = "Zebra Camouflage",
+ ["component_camo_finish9"] = "Geometrisch Camouflage",
+ ["component_camo_finish10"] = "BOOM Camouflage",
+ ["component_camo_finish11"] = "Patriotisch Camouflage",
+
+ ["component_camo_slide_finish"] = "Digital Rutschen Camouflage",
+ ["component_camo_slide_finish2"] = "Pinselstrich Rutschen Camouflage",
+ ["component_camo_slide_finish3"] = "Holzland Rutschen Camouflage",
+ ["component_camo_slide_finish4"] = "Kopf Rutschen Camouflage",
+ ["component_camo_slide_finish5"] = "Sessebta-Nove Nove Rutschen Camouflage",
+ ["component_camo_slide_finish6"] = "Perseus Rutschen Camouflage",
+ ["component_camo_slide_finish7"] = "Leopard Rutschen Camouflage",
+ ["component_camo_slide_finish8"] = "Zebra Rutschen Camouflage",
+ ["component_camo_slide_finish9"] = "Geometrisch Rutschen Camouflage",
+ ["component_camo_slide_finish10"] = "BOOM Rutschen Camouflage",
+ ["component_camo_slide_finish11"] = "Patriotisch Rutschen Camouflage",
+
+ ["component_clip_default"] = "Standard Magazin",
+ ["component_clip_extended"] = "Erweiterters Magazin",
+ ["component_clip_drum"] = "Trommelmagazin",
+ ["component_clip_box"] = "Kastenmagazin",
+
+ ["component_scope_holo"] = "Holographisches Zielfernrohr",
+ ["component_scope_small"] = "Kleines Zielfernrohr",
+ ["component_scope_medium"] = "Mittleres Zielfernrohr",
+ ["component_scope_large"] = "Großes Zielfernrohr",
+ ["component_scope"] = "Montiertes Zielfernrohr",
+ ["component_scope_advanced"] = "Fortgeschrittenes Zielfernrohr",
+ ["component_ironsights"] = "Ironsights",
+
+ ["component_suppressor"] = "Entstörer",
+ ["component_compensator"] = "Kompensator",
+
+ ["component_muzzle_flat"] = "Flache Mündung",
+ ["component_muzzle_tactical"] = "Taktische Mündung",
+ ["component_muzzle_fat"] = "Fettes-Ende Mündung",
+ ["component_muzzle_precision"] = "Präzision Mündung",
+ ["component_muzzle_heavy"] = "Schwere Mündung",
+ ["component_muzzle_slanted"] = "Schräge Mündung",
+ ["component_muzzle_split"] = "Geteiletes-Ende Mündung",
+ ["component_muzzle_squared"] = "Quadratische Mündung",
+
+ ["component_flashlight"] = "Taschenlampe",
+ ["component_grip"] = "Grip",
+
+ ["component_barrel_default"] = "Normales Fass",
+ ["component_barrel_heavy"] = "Schweres Fass",
+
+ ["component_ammo_tracer"] = "Tracer Munition",
+ ["component_ammo_incendiary"] = "Aufruhr Munition",
+ ["component_ammo_hollowpoint"] = "Hohlspitze Munition",
+ ["component_ammo_fmj"] = "FMJ Munition",
+ ["component_ammo_armor"] = "Panzerbrechende Munition",
+ ["component_ammo_explosive"] = "Panzerbrechende brennende Munition",
+
+ ["component_shells_default"] = "Normale Hülsen",
+ ["component_shells_incendiary"] = "Drachenatem Hülsen",
+ ["component_shells_armor"] = "Stahlschrot Hülsen",
+ ["component_shells_hollowpoint"] = "Flechette Hülsen",
+ ["component_shells_explosive"] = "Explosives Geschoss Hülsen",
+
+ -- Weapon Ammo
+ ["ammo_rounds"] = "Kugel(n)",
+ ["ammo_shells"] = "Schrotpatrone(n)",
+ ["ammo_charge"] = "Nachladen",
+ ["ammo_petrol"] = "Benzinkanister",
+ ["ammo_firework"] = "Feuerwerksrakete(n)",
+ ["ammo_rockets"] = "Rakete(n)",
+ ["ammo_grenadelauncher"] = "Granate(n)",
+ ["ammo_grenade"] = "Granate(n)",
+ ["ammo_stickybomb"] = "C4(s)",
+ ["ammo_pipebomb"] = "Rohrbombe(n)",
+ ["ammo_smokebomb"] = "Rauchgranate(n)",
+ ["ammo_molotov"] = "Molotovcocktail(s)",
+ ["ammo_proxmine"] = "Annäherungsmine(n)",
+ ["ammo_bzgas"] = "Bzgas",
+ ["ammo_ball"] = "Ball",
+ ["ammo_snowball"] = "Schneebälle",
+ ["ammo_flare"] = "Signalfackel(n)",
+ ["ammo_flaregun"] = "Signalfackeln(munition)",
+
+ -- Weapon Tints
+ ["tint_default"] = "Standard",
+ ["tint_green"] = "Grün",
+ ["tint_gold"] = "Gold",
+ ["tint_pink"] = "Pink",
+ ["tint_army"] = "Camouflage",
+ ["tint_lspd"] = "Blau",
+ ["tint_orange"] = "Orange",
+ ["tint_platinum"] = "Platin",
+}
diff --git a/server-data/resources/[esx]/es_extended/locales/el.lua b/server-data/resources/[esx]/es_extended/locales/el.lua
new file mode 100644
index 000000000..1de660c6f
--- /dev/null
+++ b/server-data/resources/[esx]/es_extended/locales/el.lua
@@ -0,0 +1,381 @@
+Locales["el"] = {
+ -- Inventory
+ ["inventory"] = "Αποθήκη ( Βάρος %s / %s )",
+ ["use"] = "Χρήση",
+ ["give"] = "Δώσε",
+ ["remove"] = "Πέτα",
+ ["return"] = "Επιστροφή",
+ ["give_to"] = "Δώσε σε",
+ ["amount"] = "Ποσότητα",
+ ["giveammo"] = "Δώσε σφαίρες",
+ ["amountammo"] = "Ποσότητα σφαιρών",
+ ["noammo"] = "Δεν υπάρχουν αρκετές σφαίρες!",
+ ["gave_item"] = "Δώσατε %sx %s στον/στην %s",
+ ["received_item"] = "Λάβατε %sx %s από τον/την %s",
+ ["gave_weapon"] = "Δίνετε %s στον/στην %s",
+ ["gave_weapon_ammo"] = "Δίνετε ~o~%sx %s για %s στον/στην %s",
+ ["gave_weapon_withammo"] = "Δίνετε %s με ~o~%sx %s στον/στην %s",
+ ["gave_weapon_hasalready"] = "Ο/Η %s έχει ήδη ένα %s",
+ ["gave_weapon_noweapon"] = "Ο/Η %s δεν έχει αυτό το όπλο",
+ ["received_weapon"] = "Λάβατε %s από τον/την %s",
+ ["received_weapon_ammo"] = "Λάβατε ~o~%sx %s για το %s από τον/την %s",
+ ["received_weapon_withammo"] = "Λάβατε %s για ~o~%sx %s από τον/την %s",
+ ["received_weapon_hasalready"] = "Ο/Η %s προσπάθησε να σας δώσει ένα %s, αλλά το έχετε ήδη",
+ ["received_weapon_noweapon"] = "Ο/Η %s προσπάθησε να σας δώσει σφαίρες για το %s, αλλά δεν έχετε αυτό το όπλο",
+ ["gave_account_money"] = "Δίνετε $%s (%s) στον/στην %s",
+ ["received_account_money"] = "Λάβατε $%s (%s) από τον/την %s",
+ ["amount_invalid"] = "Μη έγκυρη ποσότητα",
+ ["players_nearby"] = "Δεν υπάρχουν κοντινοί παίκτες",
+ ["ex_inv_lim"] = "Δεν είναι δυνατή η ενέργεια, υπέρβαση του μέγιστου βάρους των %s",
+ ["imp_invalid_quantity"] = "Δεν είναι δυνατή η ενέργεια, η ποσότητα δεν είναι έγκυρη",
+ ["imp_invalid_amount"] = "Δεν είναι δυνατή η ενέργεια, το ποσό δεν είναι έγκυρο",
+ ["threw_standard"] = "Ρίχνοντας %sx %s",
+ ["threw_account"] = "Ρίχνοντας $%s %s",
+ ["threw_weapon"] = "Ρίχνοντας %s",
+ ["threw_weapon_ammo"] = "Ρίχνοντας %s με ~o~%sx %s",
+ ["threw_weapon_already"] = "Ήδη έχετε αυτό το όπλο",
+ ["threw_cannot_pickup"] = "Η αποθήκη είναι γεμάτη, δεν μπορείτε να σηκώσετε!",
+ ["threw_pickup_prompt"] = "Πατήστε E για να σηκώσετε",
+
+ -- Key mapping
+ ["keymap_showinventory"] = "Εμφάνιση Αποθήκης",
+
+ -- Salary related
+ ["received_salary"] = "Έχετε λάβει μισθό: $%s",
+ ["received_help"] = "Έχετε λάβει το βοήθημά σας: $%s",
+ ["company_nomoney"] = "Η εταιρεία στην οποία είστε απασχολούμενος/η δεν έχει αρκετά χρήματα για να καταβάλει τον μισθό σας",
+ ["received_paycheck"] = "λάβατε μισθό",
+ ["bank"] = "Τράπεζα Maze",
+ ["account_bank"] = "Τραπεζικός Λογαριασμός",
+ ["account_black_money"] = "Βρώμικα Χρήματα",
+ ["account_money"] = "Μετρητά",
+
+ ["act_imp"] = "Δεν είναι δυνατή η εκτέλεση της ενέργειας",
+ ["in_vehicle"] = "Δεν είναι δυνατή η εκτέλεση της ενέργειας, ο παίκτης βρίσκεται σε όχημα",
+ ["not_in_vehicle"] = "Δεν είναι δυνατή η εκτέλεση της ενέργειας, ο παίκτης δεν βρίσκεται σε κάποιο όχημα",
+
+ -- Commands
+ ["command_bring"] = "Φέρτε τον παίκτη σε εσάς",
+ ["command_car"] = "Κλήση οχήματος",
+ ["command_car_car"] = "Μοντέλο ή κωδικός οχήματος",
+ ["command_cardel"] = "Κατάργηση οχημάτων κοντά",
+ ["command_cardel_radius"] = "Καταργεί όλα τα οχήματα εντός της καθορισμένης ακτίνας",
+ ["command_repair"] = "Επισκέυασε το όχημα σου",
+ ["command_repair_success"] = "Το όχημα σου επισκευάστηκε",
+ ["command_repair_success_target"] = "Ένας διαχειριστής επισκεύασε το όχημα σου",
+ ["command_clear"] = "Καθαρισμός κειμένου στο chat",
+ ["command_clearall"] = "Καθαρισμός κειμένου στο chat για όλους τους παίκτες",
+ ["command_clearinventory"] = "Κατάργηση όλων των αντικειμένων από την αποθήκη των παικτών",
+ ["command_clearloadout"] = "Κατάργηση όλων των όπλων από την εξάρτηση των παικτών",
+ ["command_freeze"] = "Πάγωμα ενός παίκτη",
+ ["command_unfreeze"] = "Ξεπάγωμα ενός παίκτη",
+ ["command_giveaccountmoney"] = "Δώστε χρήματα σε καθορισμένο λογαριασμό",
+ ["command_giveaccountmoney_account"] = "Λογαριασμός προς προσθήκη",
+ ["command_giveaccountmoney_amount"] = "Ποσό προς προσθήκη",
+ ["command_giveaccountmoney_invalid"] = "Μη έγκυρο όνομα λογαριασμού",
+ ["command_removeaccountmoney"] = "Κατάργηση χρημάτων από καθορισμένο λογαριασμό",
+ ["command_removeaccountmoney_account"] = "Λογαριασμός από τον οποίο θα καταργηθούν τα χρήματα",
+ ["command_removeaccountmoney_amount"] = "Ποσό προς αφαίρεση",
+ ["command_removeaccountmoney_invalid"] = "Μη έγκυρο όνομα λογαριασμού",
+ ["command_giveitem"] = "Δώστε σε έναν παίκτη ένα αντικείμενο",
+ ["command_giveitem_item"] = "Όνομα αντικειμένου",
+ ["command_giveitem_count"] = "Ποσότητα",
+ ["command_giveweapon"] = "Δώστε σε έναν παίκτη ένα όπλο",
+ ["command_giveweapon_weapon"] = "Όνομα όπλου",
+ ["command_giveweapon_ammo"] = "Ποσότητα πυρομαχικών",
+ ["command_giveweapon_hasalready"] = "Ο παίκτης έχει ήδη αυτό το όπλο",
+ ["command_giveweaponcomponent"] = "Δώστε σε έναν παίκτη μια εξάρτηση όπλου",
+ ["command_giveweaponcomponent_component"] = "Όνομα εξάρτησης",
+ ["command_giveweaponcomponent_invalid"] = "Μη έγκυρη εξάρτηση όπλου",
+ ["command_giveweaponcomponent_hasalready"] = "Ο παίκτης έχει ήδη αυτήν την εξάρτηση όπλου",
+ ["command_giveweaponcomponent_missingweapon"] = "Ο παίκτης δεν έχει αυτό το όπλο",
+ ["command_goto"] = "Τηλεμεταφέρεστε σε έναν παίκτη",
+ ["command_kill"] = "Σκοτώστε έναν παίκτη",
+ ["command_save"] = "Εξαναγκαστική αποθήκευση δεδομένων ενός παίκτη",
+ ["command_saveall"] = "Εξαναγκαστική αποθήκευση όλων των δεδομένων των παικτών",
+ ["command_setaccountmoney"] = "Ορίστε τα χρήματα σε έναν καθορισμένο λογαριασμό",
+ ["command_setaccountmoney_amount"] = "Ποσό",
+ ["command_setcoords"] = "Τηλεμεταφερθείτε σε καθορισμένες συντεταγμένες",
+ ["command_setcoords_x"] = "Τιμή X",
+ ["command_setcoords_y"] = "Τιμή Y",
+ ["command_setcoords_z"] = "Τιμή Z",
+ ["command_setjob"] = "Ορίστε το επάγγελμα ενός παίκτη",
+ ["command_setjob_job"] = "Όνομα",
+ ["command_setjob_grade"] = "Βαθμός επαγγέλματος",
+ ["command_setjob_invalid"] = "Το επάγγελμα, ο βαθμός ή και οι δύο είναι μη έγκυρα",
+ ["command_setgroup"] = "Ορίστε την ομάδα δικαιωμάτων ενός παίκτη",
+ ["command_setgroup_group"] = "Όνομα Ομάδας",
+ ["commanderror_argumentmismatch"] = "Μη έγκυρος αριθμός ορισμάτων (δόθηκαν %s, αναμενόμενα %s)",
+ ["commanderror_argumentmismatch_number"] = "Μη έγκυρος τύπος δεδομένων για το όρισμα #%s (δόθηκε συμβολοσειρά, αναμενόμενος αριθμός)",
+ ["commanderror_argumentmismatch_string"] = "Μη έγκυρος τύπος δεδομένων για το όρισμα #%s (δόθηκε αριθμός, αναμενόμενη συμβολοσειρά)",
+ ["commanderror_invaliditem"] = "Μη έγκυρο αντικείμενο",
+ ["commanderror_invalidweapon"] = "Μη έγκυρο όπλο",
+ ["commanderror_console"] = "Η εντολή δεν μπορεί να εκτελεστεί από την κονσόλα",
+ ["commanderror_invalidcommand"] = "Μη έγκυρη εντολή - /%s",
+ ["commanderror_invalidplayerid"] = "Ο καθορισμένος παίκτης δεν είναι συνδεδεμένος",
+ ["commandgeneric_playerid"] = "Αναγνωριστικό διακομιστή του παίκτη",
+ ["command_giveammo_noweapon_found"] = "Ο %s δεν έχει αυτό το όπλο",
+ ["command_giveammo_weapon"] = "Όνομα όπλου",
+ ["command_giveammo_ammo"] = "Ποσότητα πυρομαχικών",
+ ["tpm_nowaypoint"] = "Δεν έχει οριστεί σημείο προορισμού.",
+ ["tpm_success"] = "Επιτυχής τηλεμεταφορά",
+
+ ["noclip_message"] = "Το Noclip έχει %s",
+ ["enabled"] = "~g~ενεργοποιήθηκε~s~",
+ ["disabled"] = "~r~απενεργοποιήθηκε~s~",
+
+ -- Ρυθμίσεις τοπικής γλώσσας
+ ["locale_digit_grouping_symbol"] = ",",
+ ["locale_currency"] = "£%s",
+
+ -- Όπλα
+
+ -- Χειροποίητα
+ ["weapon_dagger"] = "Στιλέτο",
+ ["weapon_bat"] = "Μπαστούνι",
+ ["weapon_battleaxe"] = "Πολεμική σείρα",
+ ["weapon_bottle"] = "Μπουκάλι",
+ ["weapon_crowbar"] = "Ροπαλάκι",
+ ["weapon_flashlight"] = "Φακός",
+ ["weapon_golfclub"] = "Γκολφ",
+ ["weapon_hammer"] = "Σφυρί",
+ ["weapon_hatchet"] = "Πέλεκυς",
+ ["weapon_knife"] = "Μαχαίρι",
+ ["weapon_knuckle"] = "Χειροπέδες",
+ ["weapon_machete"] = "Μαχαίρι μαχαιροπίρουνου",
+ ["weapon_nightstick"] = "Ρόπαλο νυχτερίδας",
+ ["weapon_wrench"] = "Ροκανίδι",
+ ["weapon_poolcue"] = "Καστήλα",
+ ["weapon_stone_hatchet"] = "Πέλεκυς από πέτρα",
+ ["weapon_switchblade"] = "Ξυραφάκι",
+
+ -- Πιστόλια
+ ["weapon_appistol"] = "AP Πιστόλι",
+ ["weapon_ceramicpistol"] = "Κεραμικό πιστόλι",
+ ["weapon_combatpistol"] = "Πολεμικό πιστόλι",
+ ["weapon_doubleaction"] = "Διπλής δράσης Ριβόλβερ",
+ ["weapon_navyrevolver"] = "Ναυτικό Ρεβόλβερ",
+ ["weapon_flaregun"] = "Πιστόλι αστραπών",
+ ["weapon_gadgetpistol"] = "Πιστόλι συσκευών",
+ ["weapon_heavypistol"] = "Βαρύ πιστόλι",
+ ["weapon_revolver"] = "Βαρύ Ρεβόλβερ",
+ ["weapon_revolver_mk2"] = "Βαρύ Ρεβόλβερ MK2",
+ ["weapon_marksmanpistol"] = "Πιστόλι μονομάχου",
+ ["weapon_pistol"] = "Πιστόλι",
+ ["weapon_pistol_mk2"] = "Πιστόλι MK2",
+ ["weapon_pistol50"] = "Πιστόλι .50",
+ ["weapon_snspistol"] = "Πιστόλι SNS",
+ ["weapon_snspistol_mk2"] = "Πιστόλι SNS MK2",
+ ["weapon_stungun"] = "Ηλεκτροπληξία",
+ ["weapon_raypistol"] = "Up-N-Atomizer",
+ ["weapon_vintagepistol"] = "Βιομηχανικό πιστόλι",
+
+ -- Καραμπίνες
+ ["weapon_assaultshotgun"] = "Πολεμική Καραμπίνα",
+ ["weapon_autoshotgun"] = "Αυτόματη Καραμπίνα",
+ ["weapon_bullpupshotgun"] = "Bullpup Καραμπίνα",
+ ["weapon_combatshotgun"] = "Καραμπίνα πολέμου",
+ ["weapon_dbshotgun"] = "Διπλής κάννης Καραμπίνα",
+ ["weapon_heavyshotgun"] = "Βαριά Καραμπίνα",
+ ["weapon_musket"] = "Μουσκέτα",
+ ["weapon_pumpshotgun"] = "Καραμπίνα αντλίας",
+ ["weapon_pumpshotgun_mk2"] = "Καραμπίνα αντλίας MK2",
+ ["weapon_sawnoffshotgun"] = "Καραμπίνα με κοντά κάννη",
+
+ -- SMG & LMG
+ ["weapon_assaultsmg"] = "Πολεμικό SMG",
+ ["weapon_combatmg"] = "Πολεμικό MG",
+ ["weapon_combatmg_mk2"] = "Πολεμικό MG MK2",
+ ["weapon_combatpdw"] = "Πολεμικό PDW",
+ ["weapon_gusenberg"] = "Gusenberg Sweeper",
+ ["weapon_machinepistol"] = "Πιστόλι Αυτόματης Καραμπίνας",
+ ["weapon_mg"] = "MG",
+ ["weapon_microsmg"] = "Μικρό SMG",
+ ["weapon_minismg"] = "Μικρό SMG",
+ ["weapon_smg"] = "SMG",
+ ["weapon_smg_mk2"] = "SMG MK2",
+ ["weapon_raycarbine"] = "Ανεξίτηλο Hellbringer",
+
+ -- Καραμπίνες
+ ["weapon_advancedrifle"] = "Προηγμένη Καραμπίνα",
+ ["weapon_assaultrifle"] = "Καραμπίνα Επίθεσης",
+ ["weapon_assaultrifle_mk2"] = "Καραμπίνα Επίθεσης MK2",
+ ["weapon_bullpuprifle"] = "Bullpup Καραμπίνα",
+ ["weapon_bullpuprifle_mk2"] = "Bullpup Καραμπίνα MK2",
+ ["weapon_carbinerifle"] = "Καραμπίνα",
+ ["weapon_carbinerifle_mk2"] = "Καραμπίνα MK2",
+ ["weapon_compactrifle"] = "Συμπαγής Καραμπίνα",
+ ["weapon_militaryrifle"] = "Στρατιωτική Καραμπίνα",
+ ["weapon_specialcarbine"] = "Ειδική Καραμπίνα",
+ ["weapon_specialcarbine_mk2"] = "Ειδική Καραμπίνα MK2",
+
+ -- Κυνηγετικά
+ ["weapon_heavysniper"] = "Βαρύ Κυνηγετικό Ρίφλε",
+ ["weapon_heavysniper_mk2"] = "Βαρύ Κυνηγετικό Ρίφλε MK2",
+ ["weapon_marksmanrifle"] = "Ρίφλε Επαγγελματία Σκοπευτή",
+ ["weapon_marksmanrifle_mk2"] = "Ρίφλε Επαγγελματία Σκοπευτή MK2",
+ ["weapon_sniperrifle"] = "Κυνηγετικό Ρίφλε",
+ ["weapon_heavyrifle"] = "βαρύ τουφέκι",
+
+ -- Βαριά / Εκτοξευτές
+ ["weapon_compactlauncher"] = "Συμπαγής Εκτοξευτής",
+ ["weapon_firework"] = "Εκτοξευτής Πυροτεχνημάτων",
+ ["weapon_grenadelauncher"] = "Εκτοξευτής Γρανατών",
+ ["weapon_hominglauncher"] = "Εκτοξευτής Εξόρυξης",
+ ["weapon_minigun"] = "Minigun",
+ ["weapon_railgun"] = "Railgun",
+ ["weapon_rpg"] = "Εκτοξευτής Πυραύλων",
+ ["weapon_rayminigun"] = "Widowmaker",
+
+ -- Επιπλέον Όπλα από το Criminal Enterprises DLC
+ ["weapon_metaldetector"] = "Ανιχνευτής Μετάλλων",
+ ["weapon_precisionrifle"] = "Όπλο Ακρίβειας",
+ ["weapon_tactilerifle"] = "Όπλο Εξυπηρέτησης",
+
+ -- Drug wars dlc
+ ["weapon_candycane"] = "Candycane",
+ ["weapon_acidpackage"] = "Acid Package",
+ ["weapon_pistolxm3"] = "Pistol8 x3m",
+ ["weapon_railgunxm3"] = "Railgun",
+
+ -- Ρίψεις
+ ["weapon_ball"] = "Μπάλα",
+ ["weapon_bzgas"] = "BZ Gas",
+ ["weapon_flare"] = "Πυροτεχνήματα",
+ ["weapon_grenade"] = "Χειροβομβίδα",
+ ["weapon_petrolcan"] = "Κανέλα Βενζίνης",
+ ["weapon_hazardcan"] = "Κανέλα Επικίνδυνης Υλικότητας",
+ ["weapon_molotov"] = "Μολότοφ",
+ ["weapon_proxmine"] = "Νάρκη Εγγύτητας",
+ ["weapon_pipebomb"] = "Βόμβα Σωλήνα",
+ ["weapon_snowball"] = "Χιονόμπαλα",
+ ["weapon_stickybomb"] = "Κολλητή Βόμβα",
+ ["weapon_smokegrenade"] = "Δακρυγόνο",
+
+ -- Ειδικά
+ ["weapon_fireextinguisher"] = "Πυροσβεστήρας",
+ ["weapon_digiscanner"] = "Ψηφιακός Σαρωτής",
+ ["weapon_garbagebag"] = "Σακούλα Απορριμμάτων",
+ ["weapon_handcuffs"] = "Χειροπέδες",
+ ["gadget_nightvision"] = "Νυχτερινή Όραση",
+ ["gadget_parachute"] = "Αλεξίπτωτο",
+
+ -- Συστατικά Όπλων
+ ["component_knuckle_base"] = "Βασικό Μοντέλο",
+ ["component_knuckle_pimp"] = "Ο Φιλότιμος",
+ ["component_knuckle_ballas"] = "Οι Ballas",
+ ["component_knuckle_dollar"] = "Ο Εξαπατητής",
+ ["component_knuckle_diamond"] = "Η Ρόκα",
+ ["component_knuckle_hate"] = "Ο Μισητός",
+ ["component_knuckle_love"] = "Ο Εραστής",
+ ["component_knuckle_player"] = "Ο Παίκτης",
+ ["component_knuckle_king"] = "Ο Βασιλιάς",
+ ["component_knuckle_vagos"] = "Οι Vagos",
+
+ ["component_luxary_finish"] = "Πολυτελές Φινίρισμα Όπλου",
+
+ ["component_handle_default"] = "Προεπιλεγμένη Χειρολαβή",
+ ["component_handle_vip"] = "Χειρολαβή VIP",
+ ["component_handle_bodyguard"] = "Χειρολαβή Σωματοφύλακα",
+
+ ["component_vip_finish"] = "Πολυτελές Φινίρισμα VIP",
+ ["component_bodyguard_finish"] = "Πολυτελές Φινίρισμα Σωματοφύλακα",
+
+ ["component_camo_finish"] = "Ψηφιακό Καμουφλάζ",
+ ["component_camo_finish2"] = "Καμουφλάζ Πινελίου",
+ ["component_camo_finish3"] = "Καμουφλάζ Δάσους",
+ ["component_camo_finish4"] = "Καμουφλάζ Κρανίου",
+ ["component_camo_finish5"] = "Καμουφλάζ Sessanta Nove",
+ ["component_camo_finish6"] = "Καμουφλάζ Perseus",
+ ["component_camo_finish7"] = "Καμουφλάζ Λεοπάρδαλης",
+ ["component_camo_finish8"] = "Καμουφλάζ Ζέβρας",
+ ["component_camo_finish9"] = "Γεωμετρικό Καμουφλάζ",
+ ["component_camo_finish10"] = "Καμουφλάζ Boom",
+ ["component_camo_finish11"] = "Πατριωτικό Καμουφλάζ",
+
+ ["component_camo_slide_finish"] = "Ψηφιακό Καμουφλάζ Slide",
+ ["component_camo_slide_finish2"] = "Καμουφλάζ Πινελίου Slide",
+ ["component_camo_slide_finish3"] = "Καμουφλάζ Δάσους Slide",
+ ["component_camo_slide_finish4"] = "Καμουφλάζ Κρανίου Slide",
+ ["component_camo_slide_finish5"] = "Καμουφλάζ Sessanta Nove Slide",
+ ["component_camo_slide_finish6"] = "Καμουφλάζ Perseus Slide",
+ ["component_camo_slide_finish7"] = "Καμουφλάζ Λεοπάρδαλης Slide",
+ ["component_camo_slide_finish8"] = "Καμουφλάζ Ζέβρας Slide",
+ ["component_camo_slide_finish9"] = "Γεωμετρικό Καμουφλάζ Slide",
+ ["component_camo_slide_finish10"] = "Καμουφλάζ Boom Slide",
+ ["component_camo_slide_finish11"] = "Πατριωτικό Καμουφλάζ Slide",
+
+ ["component_clip_default"] = "Προεπιλεγμένο Περιοδικό",
+ ["component_clip_extended"] = "Επέκταση Περιοδικού",
+ ["component_clip_drum"] = "Περιοδικό Κάδος",
+ ["component_clip_box"] = "Περιοδικό Κιβώτιο",
+
+ ["component_scope_holo"] = "Ολογραφική Σκοπευτική Συσκευή",
+ ["component_scope_small"] = "Μικρή Σκοπευτική Συσκευή",
+ ["component_scope_medium"] = "Μεσαία Σκοπευτική Συσκευή",
+ ["component_scope_large"] = "Μεγάλη Σκοπευτική Συσκευή",
+ ["component_scope"] = "Σκοπευτική Συσκευή Εγκατεστημένη",
+ ["component_scope_advanced"] = "Προηγμένη Σκοπευτική Συσκευή",
+ ["component_ironsights"] = "Σκοπευτικά Σιδερά",
+
+ ["component_suppressor"] = "Καταστεναγματοποιητής",
+ ["component_compensator"] = "Αποζημιωτής",
+
+ ["component_muzzle_flat"] = "Επίπεδο Φρένο Αέρα",
+ ["component_muzzle_tactical"] = "Τακτικό Φρένο Αέρα",
+ ["component_muzzle_fat"] = "Φρένο Αέρα Παχύ Άκρο",
+ ["component_muzzle_precision"] = "Φρένο Αέρα Ακρίβειας",
+ ["component_muzzle_heavy"] = "Φρένο Αέρα Βαρέως Τύπου",
+ ["component_muzzle_slanted"] = "Φρένο Αέρα Ανοιγοκλειστό",
+ ["component_muzzle_split"] = "Φρένο Αέρα Υποκλιμακούμενο",
+ ["component_muzzle_squared"] = "Φρένο Αέρα Τετραγωνισμένο",
+
+ ["component_flashlight"] = "Φακός",
+ ["component_grip"] = "Λαβή",
+
+ ["component_barrel_default"] = "Προεπιλεγμένο Κάννα",
+ ["component_barrel_heavy"] = "Βαριά Κάννα",
+
+ ["component_ammo_tracer"] = "Σφαίρες με Ιχνηθέν Φωτός",
+ ["component_ammo_incendiary"] = "Σφαίρες Φωτιάς",
+ ["component_ammo_hollowpoint"] = "Σφαίρες Κενές Άκρες",
+ ["component_ammo_fmj"] = "Σφαίρες FMJ",
+ ["component_ammo_armor"] = "Σφαίρες Διάτρησης Θωράκισης",
+ ["component_ammo_explosive"] = "Εκρηκτικές Σφαίρες Διάτρησης Θωράκισης",
+
+ ["component_shells_default"] = "Προεπιλεγμένες Φυσίγγια",
+ ["component_shells_incendiary"] = "Φυσίγγια Διαμαντινών",
+ ["component_shells_armor"] = "Φυσίγγια Θωράκισης Χάλυβα",
+ ["component_shells_hollowpoint"] = "Φυσίγγια Κενών Άκρων",
+ ["component_shells_explosive"] = "Φυσίγγια Εκρηκτικών",
+
+ -- Πυρομαχικά Όπλων
+ ["ammo_rounds"] = "σφαιρίδιο(α)",
+ ["ammo_shells"] = "φυσίγγιο(α)",
+ ["ammo_charge"] = "φορτίο",
+ ["ammo_petrol"] = "γαλόνια καυσίμου",
+ ["ammo_firework"] = "πυροτεχνήματο(α)",
+ ["ammo_rockets"] = "πύραυλο(ι)",
+ ["ammo_grenadelauncher"] = "χειροβομβίδα(ες)",
+ ["ammo_grenade"] = "χειροβομβίδα(ες)",
+ ["ammo_stickybomb"] = "βόμβα(ες)",
+ ["ammo_pipebomb"] = "βόμβα(ες)",
+ ["ammo_smokebomb"] = "βόμβα(ες) καπνού",
+ ["ammo_molotov"] = "κοκτέιλ μολότοφ(α)",
+ ["ammo_proxmine"] = "μίνα(ες) εγγύτητας",
+ ["ammo_bzgas"] = "κανίστρα(ες)",
+ ["ammo_ball"] = "μπάλα(ες)",
+ ["ammo_snowball"] = "χιονόμπαλα(ες)",
+ ["ammo_flare"] = "φλογοβολίδα(ες)",
+ ["ammo_flaregun"] = "φλογοβολίδα(ες)",
+
+ -- Επιστρώσεις Όπλων
+ ["tint_default"] = "προεπιλεγμένο δέρμα",
+ ["tint_green"] = "πράσινο δέρμα",
+ ["tint_gold"] = "χρυσό δέρμα",
+ ["tint_pink"] = "ροζ δέρμα",
+ ["tint_army"] = "στρατιωτικό δέρμα",
+ ["tint_lspd"] = "μπλε δέρμα",
+ ["tint_orange"] = "πορτοκαλί δέρμα",
+ ["tint_platinum"] = "πλατίνενο δέρμα",
+}
diff --git a/server-data/resources/[esx]/es_extended/locales/es.lua b/server-data/resources/[esx]/es_extended/locales/es.lua
new file mode 100644
index 000000000..9ee9a33b2
--- /dev/null
+++ b/server-data/resources/[esx]/es_extended/locales/es.lua
@@ -0,0 +1,370 @@
+Locales["es"] = {
+ -- Inventory
+ ["inventory"] = "Inventario %s / %s",
+ ["use"] = "Usar",
+ ["give"] = "Dar",
+ ["remove"] = "Tirar",
+ ["return"] = "Volver",
+ ["give_to"] = "Dar a",
+ ["amount"] = "Cantidad",
+ ["giveammo"] = "Dar munición",
+ ["amountammo"] = "Cantidad de munición",
+ ["noammo"] = "No tienes suficiente munición!",
+ ["gave_item"] = "Has dado %sx %s a %s",
+ ["received_item"] = "Has recibido %sx %s de %s",
+ ["gave_weapon"] = "Has dado %s a %s",
+ ["gave_weapon_ammo"] = "Has dado ~o~%sx %s para %s a %s",
+ ["gave_weapon_withammo"] = "Has dado %s con ~o~%sx %s a %s",
+ ["gave_weapon_hasalready"] = "%s ya tiene un/a %s",
+ ["gave_weapon_noweapon"] = "%s no tiene ese arma",
+ ["received_weapon"] = "Has recibido %s de %s",
+ ["received_weapon_ammo"] = "Has recibido ~o~%sx %s para su %s de %s",
+ ["received_weapon_withammo"] = "Has recibido %s con ~o~%sx %s de %s",
+ ["received_weapon_hasalready"] = "%s intentó darle un/a %s, pero ya tienes uno",
+ ["received_weapon_noweapon"] = "%s intentó darles munición para un %s, pero no tiene uno",
+ ["gave_account_money"] = "Has dado $%s (%s) a %s",
+ ["received_account_money"] = "Has recibido $%s (%s) de %s",
+ ["amount_invalid"] = "Cantidad inválida",
+ ["players_nearby"] = "No hay jugadores cerca",
+ ["ex_inv_lim"] = "Acción no posible, excediendo el límite de inventario para %s",
+ ["imp_invalid_quantity"] = "Acción imposible, cantidad inválida",
+ ["imp_invalid_amount"] = "Acción imposible, cantidad inválida",
+ ["threw_standard"] = "Has tirado %sx %s",
+ ["threw_account"] = "Has tirado $%s %s",
+ ["threw_weapon"] = "Has tirado %s",
+ ["threw_weapon_ammo"] = "Has tirado %s con ~o~%sx %s",
+ ["threw_weapon_already"] = "Ya llevas el mismo arma",
+ ["threw_cannot_pickup"] = "No puedes recogerlo porque tu inventario está lleno!",
+ ["threw_pickup_prompt"] = "Pulsa E para recoger",
+
+ -- Key mapping
+ ["keymap_showinventory"] = "Ver Inventario",
+
+ -- Salary related
+ ["received_salary"] = "Has recibido tu sueldo: $%s",
+ ["received_help"] = "Has recibido su cheque de bienestar: $%s",
+ ["company_nomoney"] = "La empresa en la que trabajas no tiene dinero para pagar tu sueldo",
+ ["received_paycheck"] = "Recibió su paga",
+ ["bank"] = "Banco",
+ ["account_bank"] = "Banco",
+ ["account_black_money"] = "Dinero Negro",
+ ["account_money"] = "Efectivo",
+
+ ["act_imp"] = "No se pudo realizar la acción.",
+ ["in_vehicle"] = "Acción rechazada. El jugador se encuentra en un vehículo",
+ ["not_in_vehicle"] = "Cannot Perform Action, Player isn't in a vehicle",
+
+ -- Commands
+ ["command_bring"] = "Traer un jugador hacia ti",
+ ["command_car"] = "Spawnear un vehículo",
+ ["command_car_car"] = "Nombre del vehículo",
+ ["command_cardel"] = "Eliminar vehículos cercanos",
+ ["command_cardel_radius"] = "Opcional, eliminar todos los vehículos en el radio especificado",
+ ["command_repair"] = "Reparar tu vehiculo",
+ ["command_repair_success"] = "Vehiculo reparado correctamente",
+ ["command_repair_success_target"] = "Un administrador reparo tu vehiculo",
+ ["command_clear"] = "Limpiar chat para ti",
+ ["command_clearall"] = "Limpiar chat para todos los jugadores",
+ ["command_clearinventory"] = "Limpiar el inventario del jugador",
+ ["command_clearloadout"] = "Limpiar inventario de un jugador",
+ ["command_freeze"] = "Congelar un jugador",
+ ["command_unfreeze"] = "Descongelar un jugador",
+ ["command_giveaccountmoney"] = "Dar dinero",
+ ["command_giveaccountmoney_account"] = "Nombre de cuenta válido",
+ ["command_giveaccountmoney_amount"] = "Cantidad a añadir",
+ ["command_giveaccountmoney_invalid"] = "Nombre de cuenta no existente. [bank, money, black_money]",
+ ["command_giveitem"] = "Dar un objeto a un jugador",
+ ["command_giveitem_item"] = "Nombre del artículo",
+ ["command_giveitem_count"] = "Cantidad de articulos",
+ ["command_giveweapon"] = "Dar un arma a un jugador",
+ ["command_giveweapon_weapon"] = "Nombre del arma",
+ ["command_giveweapon_ammo"] = "Cantidad de municion",
+ ["command_giveweapon_hasalready"] = "El jugador ya tiene esa arma",
+ ["command_giveweaponcomponent"] = "Dar el componente del arma",
+ ["command_giveweaponcomponent_component"] = "Nombre del componente",
+ ["command_giveweaponcomponent_invalid"] = "Componente del arma no válido",
+ ["command_giveweaponcomponent_hasalready"] = "El jugador ya tiene ese componente del arma",
+ ["command_giveweaponcomponent_missingweapon"] = "El jugador no tiene esa arma",
+ ["command_goto"] = "Teletransportarte hacia un jugador",
+ ["command_kill"] = "Matar un jugador",
+ ["command_save"] = "Guardar la informacion de un jugador en la base de datos.",
+ ["command_saveall"] = "Guardar toda la informacion de jugadores en la base de datos.",
+ ["command_setaccountmoney"] = "Establecer el dinero de la cuenta para un jugador",
+ ["command_setaccountmoney_amount"] = "Cantidad de dinero a establecer",
+ ["command_setcoords"] = "Teletransporte a coordenadas",
+ ["command_setcoords_x"] = "Eje X",
+ ["command_setcoords_y"] = "Eje Y",
+ ["command_setcoords_z"] = "Eje Z",
+ ["command_setjob"] = "Dar un trabajo a un jugador",
+ ["command_setjob_job"] = "Nombre del trabajo",
+ ["command_setjob_grade"] = "Rango del trabajo",
+ ["command_setjob_invalid"] = "El trabajo o el rango no son válidos",
+ ["command_setgroup"] = "Establecer el grupo de un jugador",
+ ["command_setgroup_group"] = "Nombre del grupo",
+ ["commanderror_argumentmismatch"] = "Error en el recuento de argumentos (pasado %s, deseado %s)",
+ ["commanderror_argumentmismatch_number"] = "Argumento #%s tipo no coincide (cadena pasada, número deseado)",
+ ["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
+ ["commanderror_invaliditem"] = "Nombre del artículo no válido",
+ ["commanderror_invalidweapon"] = "Arma inválida",
+ ["commanderror_console"] = "Ese comando no se puede ejecutar desde la consola",
+ ["commanderror_invalidcommand"] = "/%s ¡No es un comando válido!",
+ ["commanderror_invalidplayerid"] = "No hay ningún jugador online con la ID especificada",
+ ["commandgeneric_playerid"] = "ID del jugador",
+ ["command_giveammo_noweapon_found"] = "%s no posee esa arma",
+ ["command_giveammo_weapon"] = "Nombre del arma",
+ ["command_giveammo_ammo"] = "Cantidad de municion",
+
+ -- Locale settings
+ ["locale_digit_grouping_symbol"] = ",",
+ ["locale_currency"] = "$%s",
+
+ -- Weapons
+
+ -- Drug Wars DLC
+ ["weapon_candycane"] = "Hacha de Caramelo ",
+ ["weapon_acidpackage"] = "Paquete de Acido",
+ ["weapon_pistolxm3"] = "Pistola WM 29",
+ ["weapon_railgunxm3"] = "Fusil electromagnético",
+
+ -- Melee
+ ["weapon_dagger"] = "Daga",
+ ["weapon_bat"] = "Bate",
+ ["weapon_battleaxe"] = "Hacha de combate",
+ ["weapon_bottle"] = "Botella",
+ ["weapon_crowbar"] = "Palanca",
+ ["weapon_flashlight"] = "Linterna",
+ ["weapon_golfclub"] = "Palo de Golf",
+ ["weapon_hammer"] = "Martillo",
+ ["weapon_hatchet"] = "Hacha",
+ ["weapon_knife"] = "Cuchillo",
+ ["weapon_knuckle"] = "Puño Americano",
+ ["weapon_machete"] = "Machete",
+ ["weapon_nightstick"] = "Porra",
+ ["weapon_wrench"] = "Llave Inglesa",
+ ["weapon_poolcue"] = "Taco de Billar",
+ ["weapon_stone_hatchet"] = "Hacha de Piedra",
+ ["weapon_switchblade"] = "Navaja",
+
+ -- Handguns
+ ["weapon_appistol"] = "Pistola AP",
+ ["weapon_ceramicpistol"] = "Pistola de Ceramica",
+ ["weapon_combatpistol"] = "Pistola de Combate",
+ ["weapon_doubleaction"] = "Revólver de Doble Acción",
+ ["weapon_navyrevolver"] = "Revólver de la Armada",
+ ["weapon_flaregun"] = "Pistola de Bengalas",
+ ["weapon_gadgetpistol"] = "Pistola de Perico",
+ ["weapon_heavypistol"] = "Pistola Pesada",
+ ["weapon_revolver"] = "Revólver Pesado",
+ ["weapon_revolver_mk2"] = "Revólver Pesado MK2",
+ ["weapon_marksmanpistol"] = "Pistola Marksman",
+ ["weapon_pistol"] = "Pistola 9mm",
+ ["weapon_pistol_mk2"] = "Pistola MK2",
+ ["weapon_pistol50"] = "Pistola .50",
+ ["weapon_snspistol"] = "Pistola SNS",
+ ["weapon_snspistol_mk2"] = "Pistola SNS MK2",
+ ["weapon_stungun"] = "Taser",
+ ["weapon_raypistol"] = "Up-N-Atomizer",
+ ["weapon_vintagepistol"] = "Pistola Vintage",
+
+ -- Shotguns
+ ["weapon_assaultshotgun"] = "Escopeta de Asalto",
+ ["weapon_autoshotgun"] = "Escopeta Automática",
+ ["weapon_bullpupshotgun"] = "Escopeta Bullpup",
+ ["weapon_combatshotgun"] = "Escopeta Combate",
+ ["weapon_dbshotgun"] = "Escopeta de Doble Barril",
+ ["weapon_heavyshotgun"] = "Escopeta Pesada",
+ ["weapon_musket"] = "Mosquete",
+ ["weapon_pumpshotgun"] = "Escopeta de Bombeo",
+ ["weapon_pumpshotgun_mk2"] = "Escopeta de Bombeo MK2",
+ ["weapon_sawnoffshotgun"] = "Escopeta Recortada",
+
+ -- SMG & LMG
+ ["weapon_assaultsmg"] = "Subfusil de Asalto",
+ ["weapon_combatmg"] = "Ametralladora de Combate",
+ ["weapon_combatmg_mk2"] = "Ametralladora MK2",
+ ["weapon_combatpdw"] = "Subfusil PDW",
+ ["weapon_gusenberg"] = "Subfusil de Barril",
+ ["weapon_machinepistol"] = "Pistola Ametralladora",
+ ["weapon_mg"] = "Ametralladora",
+ ["weapon_microsmg"] = "Micro Subfusil",
+ ["weapon_minismg"] = "Mini Subfusil",
+ ["weapon_smg"] = "Subfusil",
+ ["weapon_smg_mk2"] = "Subfusil MK2",
+ ["weapon_raycarbine"] = "Ametralladora de Rayos",
+
+ -- Rifles
+ ["weapon_advancedrifle"] = "Rifle Avanzado",
+ ["weapon_assaultrifle"] = "Rifle de Asalto",
+ ["weapon_assaultrifle_mk2"] = "Rifle de Asalto MK2",
+ ["weapon_bullpuprifle"] = "Rifle Bullpup",
+ ["weapon_bullpuprifle_mk2"] = "Rifle Bullpup MK2",
+ ["weapon_carbinerifle"] = "Carabina",
+ ["weapon_carbinerifle_mk2"] = "Carabina MK2",
+ ["weapon_compactrifle"] = "Rifle Compacto",
+ ["weapon_militaryrifle"] = "Rifle Militar",
+ ["weapon_specialcarbine"] = "Carabina Especial",
+ ["weapon_specialcarbine_mk2"] = "Carabina Especial MK2",
+ ["weapon_heavyrifle"] = "Rifle Pesado",
+
+ -- Sniper
+ ["weapon_heavysniper"] = "Francotirador Pesado",
+ ["weapon_heavysniper_mk2"] = "Francotirador Pesado MK2",
+ ["weapon_marksmanrifle"] = "Rifle Marksman",
+ ["weapon_marksmanrifle_mk2"] = "Rifle Marksman MK2",
+ ["weapon_sniperrifle"] = "Rifle de Francotirador",
+
+ -- Heavy / Launchers
+ ["weapon_compactlauncher"] = "Lanzador Compacto",
+ ["weapon_firework"] = "Lanzador de Fuegos Artificiales",
+ ["weapon_grenadelauncher"] = "Lanzagranadas",
+ ["weapon_hominglauncher"] = "Lanzacohetes Guiado",
+ ["weapon_minigun"] = "Minigun",
+ ["weapon_railgun"] = "Cañón de riel",
+ ["weapon_rpg"] = "Lanzador de cohetes",
+ ["weapon_rayminigun"] = "Minigun de Rayos",
+
+ -- Thrown
+ ["weapon_ball"] = "Pelota de Beisbol",
+ ["weapon_bzgas"] = "Gas Pimienta",
+ ["weapon_flare"] = "Bengala",
+ ["weapon_grenade"] = "Granada",
+ ["weapon_petrolcan"] = "Bidon de Gasolina",
+ ["weapon_hazardcan"] = "Bidón de Gasolina Peligroso",
+ ["weapon_molotov"] = "Molotov",
+ ["weapon_proxmine"] = "Mina de Proximidad ",
+ ["weapon_pipebomb"] = "Bomba casera",
+ ["weapon_snowball"] = "Bola de nieve",
+ ["weapon_stickybomb"] = "C4",
+ ["weapon_smokegrenade"] = "Granada de Humo",
+
+ -- Special
+ ["weapon_fireextinguisher"] = "Extintor",
+ ["weapon_digiscanner"] = "Escaner Digital",
+ ["weapon_garbagebag"] = "Bolsa de Basura",
+ ["weapon_handcuffs"] = "Grilletes",
+ ["gadget_nightvision"] = "Vision Nocturna",
+ ["gadget_parachute"] = "Paracaidas",
+
+ -- Weapon Components
+ ["component_knuckle_base"] = "Modelo Basico",
+ ["component_knuckle_pimp"] = "el Proxeneta",
+ ["component_knuckle_ballas"] = "los Ballas",
+ ["component_knuckle_dollar"] = "el Buscavidas",
+ ["component_knuckle_diamond"] = "la Roca",
+ ["component_knuckle_hate"] = "el Hater",
+ ["component_knuckle_love"] = "el Amante",
+ ["component_knuckle_player"] = "el Jugador",
+ ["component_knuckle_king"] = "el Rey",
+ ["component_knuckle_vagos"] = "los Vagos",
+
+ ["component_luxary_finish"] = "Acabado de Armas de Lujo",
+
+ ["component_handle_default"] = "Mango Default",
+ ["component_handle_vip"] = "Mango VIP",
+ ["component_handle_bodyguard"] = "Mango de Guardaespaldas",
+
+ ["component_vip_finish"] = "Acabado VIP",
+ ["component_bodyguard_finish"] = "Acabado Guardaespaldas",
+
+ ["component_camo_finish"] = "Camuflaje Digital",
+ ["component_camo_finish2"] = "Camuflaje Pincelada",
+ ["component_camo_finish3"] = "Camuflaje Bosque",
+ ["component_camo_finish4"] = "Camuflaje Calavera",
+ ["component_camo_finish5"] = "Camuflaje Sessanta Nove",
+ ["component_camo_finish6"] = "Camuflaje Perseo",
+ ["component_camo_finish7"] = "Camuflaje Leopardo",
+ ["component_camo_finish8"] = "Camuflaje Zebra",
+ ["component_camo_finish9"] = "Camuflaje Geométrico",
+ ["component_camo_finish10"] = "Camuflaje Boom",
+ ["component_camo_finish11"] = "Camuflaje Patriotico",
+
+ ["component_camo_slide_finish"] = "Camuflaje Digital Deslizante",
+ ["component_camo_slide_finish2"] = "Camuflaje Pincelada Deslizante",
+ ["component_camo_slide_finish3"] = "Camuflaje Bosque Deslizante",
+ ["component_camo_slide_finish4"] = "Camuflaje Calavera Deslizante",
+ ["component_camo_slide_finish5"] = "Camuflaje Sessanta Nove Deslizante",
+ ["component_camo_slide_finish6"] = "Camuflaje Perseo Deslizante",
+ ["component_camo_slide_finish7"] = "Camuflaje Leopardo Deslizante",
+ ["component_camo_slide_finish8"] = "Camuflaje Zebra Deslizante",
+ ["component_camo_slide_finish9"] = "Camuflaje Geométrico Deslizante",
+ ["component_camo_slide_finish10"] = "Camuflaje Boom Deslizante",
+ ["component_camo_slide_finish11"] = "Camuflaje Patriotico Deslizante",
+
+ ["component_clip_default"] = "Cargador Default",
+ ["component_clip_extended"] = "Cargador Extendido",
+ ["component_clip_drum"] = "Cargador Barril",
+ ["component_clip_box"] = "Caja de Cargador",
+
+ ["component_scope_holo"] = "Mira Holográfica",
+ ["component_scope_small"] = "Mira Pequeña",
+ ["component_scope_medium"] = "Mira Mediana",
+ ["component_scope_large"] = "Mira Larga",
+ ["component_scope"] = "Mira",
+ ["component_scope_advanced"] = "Mira Avanzada",
+ ["component_ironsights"] = "Mira de Hierro",
+
+ ["component_suppressor"] = "Silenciador",
+ ["component_compensator"] = "Estabilizador",
+
+ ["component_muzzle_flat"] = "Boquilla de Freno Plana",
+ ["component_muzzle_tactical"] = "Boquilla de Freno Tactica",
+ ["component_muzzle_fat"] = "Boquilla de Freno Punta Gorda",
+ ["component_muzzle_precision"] = "Boquilla de Freno de Precision",
+ ["component_muzzle_heavy"] = "Boquilla de Freno Pesada",
+ ["component_muzzle_slanted"] = "Boquilla de Freno inclinada",
+ ["component_muzzle_split"] = "Boquilla de Freno de Puntas Abiertas",
+ ["component_muzzle_squared"] = "Boquilla de Freno Cuadrada",
+
+ ["component_flashlight"] = "Linterna",
+ ["component_grip"] = "Agarre",
+
+ ["component_barrel_default"] = "Barril Por Defecto",
+ ["component_barrel_heavy"] = "Barril Pesado",
+
+ ["component_ammo_tracer"] = "Munición de Rastreo",
+ ["component_ammo_incendiary"] = "Munición Incendiaria",
+ ["component_ammo_hollowpoint"] = "Munición de Punta Hueca",
+ ["component_ammo_fmj"] = "Munición fMJ",
+ ["component_ammo_armor"] = "Munición Perforante para Blindaje",
+ ["component_ammo_explosive"] = "Munición Incendiaria Perforadora de Blindajes",
+
+ ["component_shells_default"] = "Casquillos Por Defecto",
+ ["component_shells_incendiary"] = "Casquillos Aliento de Dragón",
+ ["component_shells_armor"] = "Casquillos Perdigones de Acero",
+ ["component_shells_hollowpoint"] = "Casquillos Punta Hueca",
+ ["component_shells_explosive"] = "Casquillos Posta Explosiva",
+
+ -- Weapon Ammo
+ ["ammo_rounds"] = "Redonda/s",
+ ["ammo_shells"] = "Casquillo/s",
+ ["ammo_charge"] = "Carga",
+ ["ammo_petrol"] = "Galones de Combustible",
+ ["ammo_firework"] = "Fuegos Artificiale/s",
+ ["ammo_rockets"] = "Cohete/s",
+ ["ammo_grenadelauncher"] = "Granada/s",
+ ["ammo_grenade"] = "Granada/s",
+ ["ammo_stickybomb"] = "Bomba/s",
+ ["ammo_pipebomb"] = "Bomba/s",
+ ["ammo_smokebomb"] = "Bomba/s",
+ ["ammo_molotov"] = "Molotov/s",
+ ["ammo_proxmine"] = "Mina(s)",
+ ["ammo_bzgas"] = "Lata(s)",
+ ["ammo_ball"] = "Bola(s)",
+ ["ammo_snowball"] = "Bola(s)",
+ ["ammo_flare"] = "Bengala(s)",
+ ["ammo_flaregun"] = "Bengala(s)",
+
+ -- Weapon Tints
+ ["tint_default"] = "Skin común",
+ ["tint_green"] = "Skin Verde",
+ ["tint_gold"] = "Skin Oro",
+ ["tint_pink"] = "Skin Rosa",
+ ["tint_army"] = "Skin Militar",
+ ["tint_lspd"] = "Skin Azul",
+ ["tint_orange"] = "Skin Naranja",
+ ["tint_platinum"] = "Skin Plata",
+
+ -- Duty related
+ ["stopped_duty"] = "Has salido de servicio.",
+ ["started_duty"] = "Has entrado de servicio.",
+}
diff --git a/server-data/resources/[esx]/es_extended/locales/fi.lua b/server-data/resources/[esx]/es_extended/locales/fi.lua
new file mode 100644
index 000000000..983fa79b8
--- /dev/null
+++ b/server-data/resources/[esx]/es_extended/locales/fi.lua
@@ -0,0 +1,240 @@
+Locales["fi"] = {
+ -- Inventory
+ ["inventory"] = "Reppu %s / %s",
+ ["use"] = "Käytä",
+ ["give"] = "Anna",
+ ["remove"] = "Poista",
+ ["return"] = "Takaisin",
+ ["give_to"] = "Anna henkilölle",
+ ["amount"] = "Määrä",
+ ["giveammo"] = "Anna ammuksia",
+ ["amountammo"] = "Ammusten määrä",
+ ["noammo"] = "Sinulla ei ole ammuksia!",
+ ["gave_item"] = "Sinä annoit %sx %s henkilölle %s",
+ ["received_item"] = "Sinä sait %sx %s henkilöltä %s",
+ ["gave_weapon"] = "Sinä annoit 1x %s henkilölle %s",
+ ["gave_weapon_ammo"] = "Annoit ~o~%sx %s kohteelle %s henkilölle %s",
+ ["gave_weapon_withammo"] = "Sinä annoit 1x %s ammuksella ~o~%sx %s henkilölle %s",
+ ["gave_weapon_hasalready"] = "%s omistaa jo %s",
+ ["gave_weapon_noweapon"] = "%s ei ole kyseistä asetta",
+ ["received_weapon"] = "Vastaanotit 1x %s henkilöltä %s",
+ ["received_weapon_ammo"] = "Sinä sait ~o~%sx %s sinun %s varten henkilöltä %s",
+ ["received_weapon_withammo"] = "Sinä sait 1x %s ammuksella ~o~%sx %s henkilöltä %s",
+ ["received_weapon_hasalready"] = "%s yritti antaa sinulle %s, mutta sinulla on jo sellainen",
+ ["received_weapon_noweapon"] = "%s yritti antaa sinulle ammuksia %s:lle, mutta sinulla ei ole sellaista",
+ ["gave_account_money"] = "Sinä annoit $%s (%s) henkilölle %s",
+ ["received_account_money"] = "Sinä sait $%s (%s) henkilöltä %s",
+ ["amount_invalid"] = "Virheellinen määrä",
+ ["players_nearby"] = "Ei pelaajia lähettyvillä",
+ ["ex_inv_lim"] = "Toiminto mahdoton, reppu alkaa olla täysi %s",
+ ["imp_invalid_quantity"] = "Toiminto mahdoton, virheellinen määrä",
+ ["imp_invalid_amount"] = "Toiminto mahdoton, virhellinen summa",
+ ["threw_standard"] = "Sinä heitit %sx %s",
+ ["threw_account"] = "Sinä heitit $%s %s",
+ ["threw_weapon"] = "Sinä heitit 1x %s",
+ ["threw_weapon_ammo"] = "Heitit 1x %s ammuksella ~o~%sx %s",
+ ["threw_weapon_already"] = "Sinulla on jo sama ase",
+ ["threw_cannot_pickup"] = "Et voi kerätä sitä, koska reppusi on täynnä",
+ ["threw_pickup_prompt"] = "Paina E kerätäksesi",
+
+ -- Key mapping
+ ["keymap_showinventory"] = "Avaa reppu",
+
+ -- Salary related
+ ["received_salary"] = "Vastaanotit palkkaa: $%s",
+ ["received_help"] = "Vastaanotit valtion tukea: $%s",
+ ["company_nomoney"] = "Yrityksellä jolle teet töitä ei ole varaa maksaa palkkaasi",
+ ["received_paycheck"] = "Sait palkan",
+ ["bank"] = "Pankki",
+ ["account_bank"] = "Pankki",
+ ["account_black_money"] = "Likainen raha",
+ ["account_money"] = "Käteinen",
+
+ ["act_imp"] = "Toiminto mahdoton",
+ ["in_vehicle"] = "Et voi antaa ajoneuvossa olevalle mitään",
+ ["not_in_vehicle"] = "Toimintoa ei voida suorittaa, pelaaja ei ole ajoneuvossa",
+
+ -- Commands
+ ["command_car"] = "Luo ajoneuvo",
+ ["command_car_car"] = "Ajoneuvon nimi tai hash",
+ ["command_cardel"] = "Poistaa ajoneuvon läheltä",
+ ["command_cardel_radius"] = "Valinnainen, poista kaikki ajoneuvot määritetyllä säteellä",
+ ["command_repair"] = "Repair your vehicle",
+ ["command_repair_success"] = "Successfully repaired vehicle",
+ ["command_repair_success_target"] = "An admin repaired your vehicle",
+ ["command_clear"] = "Tyhjennä keskustelu",
+ ["command_clearall"] = "Tyhjennä keskustelu kaikilta pelaajilta",
+ ["command_clearinventory"] = "Tyhjennä pelaajan reppu",
+ ["command_clearloadout"] = "Tyhjennä pelaajan varustus",
+ ["command_giveaccountmoney"] = "Anna tilirahaa",
+ ["command_giveaccountmoney_account"] = "Kelvollinen tilin nimi",
+ ["command_giveaccountmoney_amount"] = "Lisättävä määrä",
+ ["command_giveaccountmoney_invalid"] = "Virheellinen tili nimi",
+ ["command_giveitem"] = "Anna pelaajalle esine",
+ ["command_giveitem_item"] = "Esineen nimi",
+ ["command_giveitem_count"] = "Esineiden määrä",
+ ["command_giveweapon"] = "Anna pelaajalle ase",
+ ["command_giveweapon_weapon"] = "Aseen nimi",
+ ["command_giveweapon_ammo"] = "Ammusten määrä",
+ ["command_giveweapon_hasalready"] = "Pelaajalla on jo kyseinen ase",
+ ["command_giveweaponcomponent"] = "Anna aseen komponentti",
+ ["command_giveweaponcomponent_component"] = "Komponentin nimi",
+ ["command_giveweaponcomponent_invalid"] = "Virheellinen aseen komponentti",
+ ["command_giveweaponcomponent_hasalready"] = "Pelaajalla on jo kyseinen asekomponentti",
+ ["command_giveweaponcomponent_missingweapon"] = "Pelaajalla ei ole kyseistä asetta",
+ ["command_save"] = "Talenna pelaaja tietokantaan",
+ ["command_saveall"] = "Tallenna kaikki pelaajat tietokantaan",
+ ["command_setaccountmoney"] = "Aseta tilirahaa pelaajalle",
+ ["command_setaccountmoney_amount"] = "Asetettava rahamäärä",
+ ["command_setcoords"] = "Teleporttaa koordinaatteihin",
+ ["command_setcoords_x"] = "x akseli",
+ ["command_setcoords_y"] = "y akseli",
+ ["command_setcoords_z"] = "z akseli",
+ ["command_setjob"] = "Aseta pelaajalle ammatti",
+ ["command_setjob_job"] = "Ammatti",
+ ["command_setjob_grade"] = "Arvo",
+ ["command_setjob_invalid"] = "Ammatti ja arvo tai molemmat ovat virheellisiä",
+ ["command_setgroup"] = "Aseta pelaajan ryhmä",
+ ["command_setgroup_group"] = "Ryhmän nimi",
+ ["commanderror_argumentmismatch"] = "Argumenttien määrä ei täsmää (hyväksytty %s, haluttu %s)",
+ ["commanderror_argumentmismatch_number"] = "Argumentin #%s tyyppi ei täsmää (syötetty merkkijono, haluttu numero)",
+ ["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
+ ["commanderror_invaliditem"] = "Virheellinen esineen nimi",
+ ["commanderror_invalidweapon"] = "Virheellinen ase",
+ ["commanderror_console"] = "Komentoa ei voi suorittaa konsolissa",
+ ["commanderror_invalidcommand"] = "/%s ei ole kelvollinen komento!",
+ ["commanderror_invalidplayerid"] = "Palvelimella ei ole pelaajaa, joka vastaa annetua ID",
+ ["commandgeneric_playerid"] = "Pelaajan ID",
+ ["command_giveammo_noweapon_found"] = "%s ei ole sitä asetta",
+ ["command_giveammo_weapon"] = "Aseen nimi",
+ ["command_giveammo_ammo"] = "Ammusten määrä",
+
+ -- Locale settings
+ ["locale_digit_grouping_symbol"] = "",
+ ["locale_currency"] = "€%s",
+
+ -- Drug Wars DLC
+ ["weapon_candycane"] = "Karkkitanko",
+ ["weapon_acidpackage"] = "Happo pakkaus",
+ ["weapon_pistolxm3"] = "WM 29 Pistooli",
+ ["weapon_railgunxm3"] = "Raidetykki",
+
+ -- Weapons
+ ["weapon_knife"] = "Veitsi",
+ ["weapon_nightstick"] = "Pamppu",
+ ["weapon_hammer"] = "Vasara",
+ ["weapon_bat"] = "Pesäpallomaila",
+ ["weapon_golfclub"] = "Golf maila",
+ ["weapon_crowbar"] = "Sorkkarauta",
+ ["weapon_pistol"] = "Pistooli",
+ ["weapon_combatpistol"] = "Taistelu pistooli",
+ ["weapon_appistol"] = "Automaatti pistooli",
+ ["weapon_pistol50"] = "50 kaliiperinen pistooli",
+ ["weapon_microsmg"] = "Mikro konepistooli",
+ ["weapon_smg"] = "Konepistooli",
+ ["weapon_assaultsmg"] = "Rynnäkkö konepistooli",
+ ["weapon_assaultrifle"] = "Rynnäkkökivääri",
+ ["weapon_carbinerifle"] = "Karbiini kivääri",
+ ["weapon_advancedrifle"] = "Edistynyt kivääri",
+ ["weapon_mg"] = "Konekivääri",
+ ["weapon_combatmg"] = "Rynnäkkö konekivääri",
+ ["weapon_pumpshotgun"] = "Pumppu haulikko",
+ ["weapon_sawnoffshotgun"] = "Katkaistuhaulikko",
+ ["weapon_assaultshotgun"] = "Hyökkäyshaulikko",
+ ["weapon_bullpupshotgun"] = "Bullpup haulikko",
+ ["weapon_stungun"] = "Tainutusase",
+ ["weapon_sniperrifle"] = "Tarkkuuskivääri",
+ ["weapon_heavysniper"] = "Raskas tarkkuuskivääri",
+ ["weapon_grenadelauncher"] = "Kranaatinheitin",
+ ["weapon_rpg"] = "Raketinheitin",
+ ["weapon_minigun"] = "Minigun",
+ ["weapon_grenade"] = "Kranaatti",
+ ["weapon_stickybomb"] = "Tahma pommi",
+ ["weapon_smokegrenade"] = "Savukranaatti",
+ ["weapon_bzgas"] = "Bz-kaasu",
+ ["weapon_molotov"] = "Polttopullo",
+ ["weapon_fireextinguisher"] = "Palosammutin",
+ ["weapon_petrolcan"] = "Jerrykannu",
+ ["weapon_ball"] = "Pallo",
+ ["weapon_snspistol"] = "Pienpistooli",
+ ["weapon_bottle"] = "Pullo",
+ ["weapon_gusenberg"] = "Thompson-konepistooli",
+ ["weapon_specialcarbine"] = "G86C",
+ ["weapon_heavypistol"] = "Raskas pistooli",
+ ["weapon_bullpuprifle"] = "Bullpup kivääri",
+ ["weapon_dagger"] = "Tikari",
+ ["weapon_vintagepistol"] = "Vanha pistooli",
+ ["weapon_firework"] = "Ilotulite",
+ ["weapon_musket"] = "Musketti",
+ ["weapon_heavyshotgun"] = "Raskas haulikko",
+ ["weapon_marksmanrifle"] = "Marksman kivääri",
+ ["weapon_hominglauncher"] = "Ohjautuva raketinheitin",
+ ["weapon_proxmine"] = "Lähellä räjähtävä miina",
+ ["weapon_snowball"] = "Lumipallo",
+ ["weapon_flaregun"] = "Valopistooli",
+ ["weapon_combatpdw"] = "Rynnäkkö pdw",
+ ["weapon_marksmanpistol"] = "Marksman pistooli",
+ ["weapon_knuckle"] = "Nyrkkirauta",
+ ["weapon_hatchet"] = "Kirves",
+ ["weapon_railgun"] = "Raidetykki",
+ ["weapon_machete"] = "Viidakkoveitsi",
+ ["weapon_machinepistol"] = "Konepistooli",
+ ["weapon_switchblade"] = "Stiletti",
+ ["weapon_revolver"] = "Raskas revolveri",
+ ["weapon_dbshotgun"] = "Kaksipiippunen haulikko",
+ ["weapon_compactrifle"] = "Pikku AK",
+ ["weapon_autoshotgun"] = "Automaattinen haulikko",
+ ["weapon_battleaxe"] = "Taistelukirves",
+ ["weapon_compactlauncher"] = "Pien kranaatinheitin",
+ ["weapon_minismg"] = "Mini konepistooli",
+ ["weapon_pipebomb"] = "Putkipommi",
+ ["weapon_poolcue"] = "Biljardimaila",
+ ["weapon_wrench"] = "Putkipihdit",
+ ["weapon_flashlight"] = "Taskulamppu",
+ ["gadget_parachute"] = "Laskuvarjo",
+ ["weapon_flare"] = "Hätäraketti",
+ ["weapon_doubleaction"] = "Double action revolveri",
+ ["weapon_heavyrifle"] = "Raskas kivääri",
+
+ -- Weapon Components
+ ["component_clip_default"] = "Oletus lipas",
+ ["component_clip_extended"] = "Paranneltu lipas",
+ ["component_clip_drum"] = "Rumpulipas",
+ ["component_clip_box"] = "Laatikkolipas",
+ ["component_flashlight"] = "Taskulamppu",
+ ["component_scope"] = "Tähtäin",
+ ["component_scope_advanced"] = "Paranneltu tähtäin",
+ ["component_suppressor"] = "Äänenvaimennin",
+ ["component_grip"] = "Kahva",
+ ["component_luxary_finish"] = "Luksus ulkokuori",
+
+ -- Weapon Ammo
+ ["ammo_rounds"] = "Ammukset(s)",
+ ["ammo_shells"] = "Hylsy(s)",
+ ["ammo_charge"] = "Lataa",
+ ["ammo_petrol"] = "Gallonaa polttoainetta",
+ ["ammo_firework"] = "Ilotulite(s)",
+ ["ammo_rockets"] = "Raketti(s)",
+ ["ammo_grenadelauncher"] = "Kranaatti(s)",
+ ["ammo_grenade"] = "Kranaatti(s)",
+ ["ammo_stickybomb"] = "Pommi(s)",
+ ["ammo_pipebomb"] = "Pommi(s)",
+ ["ammo_smokebomb"] = "Pommi(s)",
+ ["ammo_molotov"] = "Polttopullo(s)",
+ ["ammo_proxmine"] = "Miina(s)",
+ ["ammo_bzgas"] = "Tölkki(s)",
+ ["ammo_ball"] = "Pallo(s)",
+ ["ammo_snowball"] = "Lumipallo(s)",
+ ["ammo_flare"] = "Valoraketti(s)",
+ ["ammo_flaregun"] = "Valoraketti(s)",
+
+ -- Weapon Tints
+ ["tint_default"] = "Oletus ulkokuori",
+ ["tint_green"] = "Vihreä ulkokuori",
+ ["tint_gold"] = "Kultainen ulkokuori",
+ ["tint_pink"] = "Vaaleanpunainen ulkokuori",
+ ["tint_army"] = "Armeija ulkokuori",
+ ["tint_lspd"] = "Sininen ulkokuori",
+ ["tint_orange"] = "Oranssi ulkokuori",
+ ["tint_platinum"] = "Platina ulkokuori",
+}
diff --git a/server-data/resources/[esx]/es_extended/locales/fr.lua b/server-data/resources/[esx]/es_extended/locales/fr.lua
new file mode 100644
index 000000000..44760c691
--- /dev/null
+++ b/server-data/resources/[esx]/es_extended/locales/fr.lua
@@ -0,0 +1,381 @@
+Locales["fr"] = {
+ -- Inventory
+ ["inventory"] = "Inventaire ( Poids %s / %s )",
+ ["use"] = "Utiliser",
+ ["give"] = "Donner",
+ ["remove"] = "Jeter",
+ ["return"] = "Retour",
+ ["give_to"] = "Donner à",
+ ["amount"] = "Quantité",
+ ["giveammo"] = "Donner des munitions",
+ ["amountammo"] = "Nombre de munitions",
+ ["noammo"] = "Vous n'avez pas autant de munitions!",
+ ["gave_item"] = "Vous avez donné %sx %s à %s",
+ ["received_item"] = "Vous avez reçu %sx %s de %s",
+ ["gave_weapon"] = "Vous avez donné 1x %s à %s",
+ ["gave_weapon_ammo"] = "Vous avez donné ~o~%sx %s pour %s à %s",
+ ["gave_weapon_withammo"] = "Vous avez donné 1x %s avec ~o~%sx %s à %s",
+ ["gave_weapon_hasalready"] = "%s a déjà 1x %s",
+ ["gave_weapon_noweapon"] = "%s n'a pas cette arme",
+ ["received_weapon"] = "Vous avez reçu 1x %s de %s",
+ ["received_weapon_ammo"] = "Vous avez reçu ~o~%sx %s pour votre %s de %s",
+ ["received_weapon_withammo"] = "Vous avez reçu 1x %s avec ~o~%sx %s de %s",
+ ["received_weapon_hasalready"] = "%s a tenté de vous donner 1x %s, mais vous en aviez déjà un exemplaire",
+ ["received_weapon_noweapon"] = "%s a tenté de vous donner des munitions pour %s, mais vous n'avez pas cette arme",
+ ["gave_account_money"] = "Vous avez donné $%s (%s) à %s",
+ ["received_account_money"] = "Vous avez reçu $%s (%s) de %s",
+ ["amount_invalid"] = "Le montant est invalide",
+ ["players_nearby"] = "Aucun joueur n'est à proximité",
+ ["ex_inv_lim"] = "Action impossible, dépassement du poids maximum de %s",
+ ["imp_invalid_quantity"] = "Action impossible, la quantité est invalide",
+ ["imp_invalid_amount"] = "Action impossible, le montant est invalide",
+ ["threw_standard"] = "Vous avez jeté %sx %s",
+ ["threw_account"] = "Vous avez jeté $%s %s",
+ ["threw_weapon"] = "Vous avez jeté 1x %s",
+ ["threw_weapon_ammo"] = "Vous avez jeté 1x %s avec ~o~%sx %s",
+ ["threw_weapon_already"] = "Vous avez déjà cette arme",
+ ["threw_cannot_pickup"] = "Votre inventaire est plein, vous ne pouvez donc pas ramasser cela!",
+ ["threw_pickup_prompt"] = "Appuyez sur E pour ramasser",
+
+ -- Key mapping
+ ["keymap_showinventory"] = "Afficher l'inventaire",
+
+ -- Salary related
+ ["received_salary"] = "Vous avez reçu votre salaire: $%s",
+ ["received_help"] = "Vous avez reçu une aide de l'état: $%s",
+ ["company_nomoney"] = "Votre entreprise n'a pas assez d'argent pour vous payer",
+ ["received_paycheck"] = "Paiement reçu",
+ ["bank"] = "Banque",
+ ["account_bank"] = "Banque",
+ ["account_black_money"] = "Argent sale",
+ ["account_money"] = "Espèces",
+
+ ["act_imp"] = "Action impossible",
+ ["in_vehicle"] = "Action impossible, le joueur est dans un véhicule",
+ ["not_in_vehicle"] = "Action impossible, le joueur n'est pas dans un véhicule",
+
+ -- Commands
+ ["command_bring"] = "Téléporter un joueur sur vous",
+ ["command_car"] = "Faire appaitre un véhicule",
+ ["command_car_car"] = "Nom ou hash du véhicule",
+ ["command_cardel"] = "Supprimer les véhicules à proximité",
+ ["command_cardel_radius"] = "Supprime tous les véhicules dans un rayon spécifié",
+ ["command_repair"] = "Réparer votre véhicule",
+ ["command_repair_success"] = "Véhicule réparé avec succès",
+ ["command_repair_success_target"] = "Votre véhicule a été réparé par un membre du staff",
+ ["command_clear"] = "Effacer le chat",
+ ["command_clearall"] = "Effacer le chat de tous les joueurs",
+ ["command_clearinventory"] = "Retirer tous les objets de l'inventaire du joueur",
+ ["command_clearloadout"] = "Retirer toutes les armes du joueur",
+ ["command_freeze"] = "Geler un joueur sur place",
+ ["command_unfreeze"] = "Dégeler un joueur",
+ ["command_giveaccountmoney"] = "Donner de l'argent à un compte spécifique",
+ ["command_giveaccountmoney_account"] = "Compte à créditer",
+ ["command_giveaccountmoney_amount"] = "Quantité d'argent à créditer",
+ ["command_giveaccountmoney_invalid"] = "Le nom de compte spécifié est invalide",
+ ["command_removeaccountmoney"] = "Retirer de l'argent d'un compte spécifique",
+ ["command_removeaccountmoney_account"] = "Compte à débiter",
+ ["command_removeaccountmoney_amount"] = "Quantité d'argent à débiter",
+ ["command_removeaccountmoney_invalid"] = "Le nom de compte spécifié est invalide",
+ ["command_giveitem"] = "Donner un objet à un joueur",
+ ["command_giveitem_item"] = "Nom de l'objet à donner",
+ ["command_giveitem_count"] = "Quantité à donner",
+ ["command_giveweapon"] = "Donner une arme à un joueur",
+ ["command_giveweapon_weapon"] = "Nom de l'arme à donner",
+ ["command_giveweapon_ammo"] = "Quantité de munitions à donner",
+ ["command_giveweapon_hasalready"] = "Le joueur a déjà cette arme",
+ ["command_giveweaponcomponent"] = "Donner un accessoire d'arme à un joueur",
+ ["command_giveweaponcomponent_component"] = "Nom de l'accessoire à donner",
+ ["command_giveweaponcomponent_invalid"] = "Le nom de l'accessoire d'arme spécifié est invalide",
+ ["command_giveweaponcomponent_hasalready"] = "Le joueur a déjà cet accessoire",
+ ["command_giveweaponcomponent_missingweapon"] = "Le joueur n'a pas l'arme associée à cet accessoire",
+ ["command_goto"] = "Se téléporter vers un joueur",
+ ["command_kill"] = "Tuer un joueur",
+ ["command_save"] = "Forcer la sauvegarde des données d'un joueur",
+ ["command_saveall"] = "Forcer la sauvegarde des données de tous les joueurs",
+ ["command_setaccountmoney"] = "Définir le montant d'argent d'un compte spécifique",
+ ["command_setaccountmoney_amount"] = "Montant d'argent à définir",
+ ["command_setcoords"] = "Se téléporter à des coordonnées spécifiques",
+ ["command_setcoords_x"] = "Valeur de l'axe X",
+ ["command_setcoords_y"] = "Valeur de l'axe Y",
+ ["command_setcoords_z"] = "Valeur de l'axe Z",
+ ["command_setjob"] = "Définir le métier d'un joueur",
+ ["command_setjob_job"] = "Nom du métier à définir",
+ ["command_setjob_grade"] = "Grade du métier",
+ ["command_setjob_invalid"] = "Le métier, le grade, ou les deux sont invalides",
+ ["command_setgroup"] = "Définir le groupe de permissions d'un joueur",
+ ["command_setgroup_group"] = "Nom du groupe à définir",
+ ["commanderror_argumentmismatch"] = "Le nombre d'arguments est invalide (Argument·s donné·s: %s, Argument·s demandé·s: %s)",
+ ["commanderror_argumentmismatch_number"] = "Type de données de l'argument #%s invalide (Type donné: texte, Type demandé: nombre)",
+ ["commanderror_argumentmismatch_string"] = "Type de données de l'argument #%s invalide (Type donné: nombre, Type demandé: texte)",
+ ["commanderror_invaliditem"] = "Le nom de l'objet est invalide",
+ ["commanderror_invalidweapon"] = "Le nom de l'arme est invalide",
+ ["commanderror_console"] = "Cette commande ne peut pas être éxécutée depuis la console",
+ ["commanderror_invalidcommand"] = "Commande invalide - /%s",
+ ["commanderror_invalidplayerid"] = "Le joueur spécifié n'est pas connecté",
+ ["commandgeneric_playerid"] = "Identifiant serveur du joueur",
+ ["command_giveammo_noweapon_found"] = "%s n'a pas cette arme",
+ ["command_giveammo_weapon"] = "Nom de l'arme",
+ ["command_giveammo_ammo"] = "Quantité de munitions",
+ ["tpm_nowaypoint"] = "Aucun point n'est défini sur la carte",
+ ["tpm_success"] = "Vous avez bien été téléporté",
+
+ ["noclip_message"] = "Le mode noclip a été %s",
+ ["enabled"] = "~g~activé~s~",
+ ["disabled"] = "~r~désactivé~s~",
+
+ -- Locale settings
+ ["locale_digit_grouping_symbol"] = " ",
+ ["locale_currency"] = "$%s",
+
+ -- Weapons
+
+ -- Melee
+ ["weapon_dagger"] = "Dague",
+ ["weapon_bat"] = "Batte",
+ ["weapon_battleaxe"] = "Hache de combat",
+ ["weapon_bottle"] = "Bouteille",
+ ["weapon_crowbar"] = "Pied de biche",
+ ["weapon_flashlight"] = "Lampte torche",
+ ["weapon_golfclub"] = "Club de golf",
+ ["weapon_hammer"] = "Marteau",
+ ["weapon_hatchet"] = "Hachette",
+ ["weapon_knife"] = "Couteau",
+ ["weapon_knuckle"] = "Poing américain",
+ ["weapon_machete"] = "Machette",
+ ["weapon_nightstick"] = "Matraque",
+ ["weapon_wrench"] = "Clé à pipe",
+ ["weapon_poolcue"] = "Queue de billard",
+ ["weapon_stone_hatchet"] = "Hachette en pierre",
+ ["weapon_switchblade"] = "Couteau à cran d'arrêt",
+
+ -- Handguns
+ ["weapon_appistol"] = "Pistolet automatique",
+ ["weapon_ceramicpistol"] = "Pistolet en céramique",
+ ["weapon_combatpistol"] = "Pistolet de combat",
+ ["weapon_doubleaction"] = "Revolver à double action",
+ ["weapon_navyrevolver"] = "Revolver de marine",
+ ["weapon_flaregun"] = "Pistolet de détresse",
+ ["weapon_gadgetpistol"] = "Pistolet gadget",
+ ["weapon_heavypistol"] = "Pistolet lourd",
+ ["weapon_revolver"] = "Revolver lourd",
+ ["weapon_revolver_mk2"] = "Revolver lourd MK2",
+ ["weapon_marksmanpistol"] = "Pistolet Marksman",
+ ["weapon_pistol"] = "Pistolet",
+ ["weapon_pistol_mk2"] = "Pistolet MK2",
+ ["weapon_pistol50"] = "Pistolet .50",
+ ["weapon_snspistol"] = "Pistolet SNS",
+ ["weapon_snspistol_mk2"] = "Pistolet SNS MK2",
+ ["weapon_stungun"] = "Taser",
+ ["weapon_raypistol"] = "Atomiseur",
+ ["weapon_vintagepistol"] = "Pistolet vintage",
+
+ -- Shotguns
+ ["weapon_assaultshotgun"] = "Fusil d'assaut",
+ ["weapon_autoshotgun"] = "Fusil à pompe automatique",
+ ["weapon_bullpupshotgun"] = "Fusil à pompe Bullpup",
+ ["weapon_combatshotgun"] = "Fusil de combat",
+ ["weapon_dbshotgun"] = "Fusil à pompe à double canon",
+ ["weapon_heavyshotgun"] = "Fusil à pompe lourd",
+ ["weapon_musket"] = "Mousquet",
+ ["weapon_pumpshotgun"] = "Fusil à pompe",
+ ["weapon_pumpshotgun_mk2"] = "Fusil à pompe MK2",
+ ["weapon_sawnoffshotgun"] = "Fusil à canon scié",
+
+ -- SMG & LMG
+ ["weapon_assaultsmg"] = "SMG s'assaut",
+ ["weapon_combatmg"] = "MG de combat",
+ ["weapon_combatmg_mk2"] = "MG de combat MK2",
+ ["weapon_combatpdw"] = "PDW de combat",
+ ["weapon_gusenberg"] = "Balayeuse Gusenberg",
+ ["weapon_machinepistol"] = "Pistolet-mitrailleur",
+ ["weapon_mg"] = "MG",
+ ["weapon_microsmg"] = "Micro SMG",
+ ["weapon_minismg"] = "Mini SMG",
+ ["weapon_smg"] = "SMG",
+ ["weapon_smg_mk2"] = "SMG MK2",
+ ["weapon_raycarbine"] = "Carabine à rayons",
+
+ -- Rifles
+ ["weapon_advancedrifle"] = "Fusil avancé",
+ ["weapon_assaultrifle"] = "Fusil d'assaut",
+ ["weapon_assaultrifle_mk2"] = "Fusil d'assaut MK2",
+ ["weapon_bullpuprifle"] = "Fusil Bullpup",
+ ["weapon_bullpuprifle_mk2"] = "Fusil Bullpup MK2",
+ ["weapon_carbinerifle"] = "Fusil carabine",
+ ["weapon_carbinerifle_mk2"] = "Fusil carabine MK2",
+ ["weapon_compactrifle"] = "Fusil compacte",
+ ["weapon_militaryrifle"] = "Fusil militaire",
+ ["weapon_specialcarbine"] = "Carabine spéciale",
+ ["weapon_specialcarbine_mk2"] = "Carabine spéciale MK2",
+ ["weapon_heavyrifle"] = "Fusil lourd",
+
+ -- Sniper
+ ["weapon_heavysniper"] = "Sniper lourd",
+ ["weapon_heavysniper_mk2"] = "Sniper lourd MK2",
+ ["weapon_marksmanrifle"] = "Fusil Marksman",
+ ["weapon_marksmanrifle_mk2"] = "Fusil Marksman MK2",
+ ["weapon_sniperrifle"] = "Fusil sniper",
+
+ -- Heavy / Launchers
+ ["weapon_compactlauncher"] = "Lanceur compacte",
+ ["weapon_firework"] = "Lanceur de feu d'artifice",
+ ["weapon_grenadelauncher"] = "Lanceur de grenade",
+ ["weapon_hominglauncher"] = "Lanceur de tête chercheuse",
+ ["weapon_minigun"] = "Minigun",
+ ["weapon_railgun"] = "Fusil à rail",
+ ["weapon_rpg"] = "Lanceur de rockette",
+ ["weapon_rayminigun"] = "Exterminateur",
+
+ -- Criminal Enterprises DLC
+ ["weapon_metaldetector"] = "Détecteur de métaux",
+ ["weapon_precisionrifle"] = "Fusil de précision",
+ ["weapon_tactilerifle"] = "Carabine tactique",
+
+ -- Drug wars dlc
+ ["weapon_candycane"] = "Sucre d'orge",
+ ["weapon_acidpackage"] = "Paquet d'acide",
+ ["weapon_pistolxm3"] = "Pistolet 8 x3m",
+ ["weapon_railgunxm3"] = "Fusil électro-magnétique",
+
+ -- Thrown
+ ["weapon_ball"] = "Base-ball",
+ ["weapon_bzgas"] = "Gaz BZ",
+ ["weapon_flare"] = "Fusée éclairante",
+ ["weapon_grenade"] = "Grenade",
+ ["weapon_petrolcan"] = "Jerrycan",
+ ["weapon_hazardcan"] = "Jerrycan dangereux",
+ ["weapon_molotov"] = "Cocktail Molotov",
+ ["weapon_proxmine"] = "Mine de proximité",
+ ["weapon_pipebomb"] = "Bombe tuyau",
+ ["weapon_snowball"] = "Boule de neige",
+ ["weapon_stickybomb"] = "Bombe collante",
+ ["weapon_smokegrenade"] = "Gaz lacrymogène",
+
+ -- Special
+ ["weapon_fireextinguisher"] = "Extincteur",
+ ["weapon_digiscanner"] = "Scanner",
+ ["weapon_garbagebag"] = "Sac d'ordures",
+ ["weapon_handcuffs"] = "Menottes",
+ ["gadget_nightvision"] = "Vision nocturne",
+ ["gadget_parachute"] = "Parachute",
+
+ -- Weapon Components
+ ["component_knuckle_base"] = "Modèle par défaut",
+ ["component_knuckle_pimp"] = "le Pimp",
+ ["component_knuckle_ballas"] = "le Ballas",
+ ["component_knuckle_dollar"] = "le Hustler",
+ ["component_knuckle_diamond"] = "le Rock",
+ ["component_knuckle_hate"] = "le Hater",
+ ["component_knuckle_love"] = "le Lover",
+ ["component_knuckle_player"] = "le Joueur",
+ ["component_knuckle_king"] = "le Roi",
+ ["component_knuckle_vagos"] = "le Vagos",
+
+ ["component_luxary_finish"] = "Finition d'arme de luxe",
+
+ ["component_handle_default"] = "Poignée par défaut",
+ ["component_handle_vip"] = "Poignée VIP",
+ ["component_handle_bodyguard"] = "Poignée bodyguard",
+
+ ["component_vip_finish"] = "Finition VIP",
+ ["component_bodyguard_finish"] = "Finition bodyguard",
+
+ ["component_camo_finish"] = "Camouflage numérique",
+ ["component_camo_finish2"] = "Camouflage pinceau",
+ ["component_camo_finish3"] = "Camouflage des bois",
+ ["component_camo_finish4"] = "Camouflage crâne",
+ ["component_camo_finish5"] = "Camouflage sessanta Nove",
+ ["component_camo_finish6"] = "Camouflage perseus",
+ ["component_camo_finish7"] = "Camouflage léopard",
+ ["component_camo_finish8"] = "Camouflage zèbre",
+ ["component_camo_finish9"] = "Camouflage géométrique",
+ ["component_camo_finish10"] = "Camouflage explosif",
+ ["component_camo_finish11"] = "Camouflage patriotique",
+
+ ["component_camo_slide_finish"] = "Finitions slide à camouflage numérique",
+ ["component_camo_slide_finish2"] = "Finitions slide à camouflage pinceau",
+ ["component_camo_slide_finish3"] = "Finitions slide à camouflage des bois",
+ ["component_camo_slide_finish4"] = "Finitions slide à camouflage crâne",
+ ["component_camo_slide_finish5"] = "Finitions slide à camouflage sessanta Nove",
+ ["component_camo_slide_finish6"] = "Finitions slide à camouflage perseus",
+ ["component_camo_slide_finish7"] = "Finitions slide à camouflage léopard",
+ ["component_camo_slide_finish8"] = "Finitions slide à camouflage zèbre",
+ ["component_camo_slide_finish9"] = "Finitions slide à camouflage géométrique",
+ ["component_camo_slide_finish10"] = "Finitions slide à camouflage explosive",
+ ["component_camo_slide_finish11"] = "Finitions slide à camouflage patriotique",
+
+ ["component_clip_default"] = "Chargeur par défaut",
+ ["component_clip_extended"] = "Chargeur à grande capacité",
+ ["component_clip_drum"] = "Chargeur à tambour",
+ ["component_clip_box"] = "Chargeur à très grande capacité",
+
+ ["component_scope_holo"] = "Viseur holographique",
+ ["component_scope_small"] = "Viseur de petite taille",
+ ["component_scope_medium"] = "Viseur de taille moyenne",
+ ["component_scope_large"] = "Viseur de grande taille",
+ ["component_scope"] = "Viseur monté",
+ ["component_scope_advanced"] = "Viseur avancé",
+ ["component_ironsights"] = "Viseur à marqueurs alignés",
+
+ ["component_suppressor"] = "silencieux",
+ ["component_compensator"] = "compensateur",
+
+ ["component_muzzle_flat"] = "Frein plat",
+ ["component_muzzle_tactical"] = "Frein tactique",
+ ["component_muzzle_fat"] = "Frein large",
+ ["component_muzzle_precision"] = "Frein de précision",
+ ["component_muzzle_heavy"] = "Frein polyvalent",
+ ["component_muzzle_slanted"] = "Frein incliné",
+ ["component_muzzle_split"] = "Frein fendu",
+ ["component_muzzle_squared"] = "Frein carré",
+
+ ["component_flashlight"] = "lampe torche",
+ ["component_grip"] = "poignée",
+
+ ["component_barrel_default"] = "Canon par défaut",
+ ["component_barrel_heavy"] = "Canon lourd",
+
+ ["component_ammo_tracer"] = "Munition traceuse",
+ ["component_ammo_incendiary"] = "Munition incendiaire",
+ ["component_ammo_hollowpoint"] = "Munition à pointe creuse",
+ ["component_ammo_fmj"] = "Munition fMJ",
+ ["component_ammo_armor"] = "Munition perforante",
+ ["component_ammo_explosive"] = "Munition perforante et Munition incendiaire",
+
+ ["component_shells_default"] = "Coque par défaut",
+ ["component_shells_incendiary"] = "Coque souffle de dragon",
+ ["component_shells_armor"] = "Coque à chevrotine en acier",
+ ["component_shells_hollowpoint"] = "Coque à fléchettes",
+ ["component_shells_explosive"] = "Coque à limaces explosives",
+
+ -- Weapon Ammo
+ ["ammo_rounds"] = "cartouche(s)",
+ ["ammo_shells"] = "obus",
+ ["ammo_charge"] = "charge·s",
+ ["ammo_petrol"] = "jerrican d'essence",
+ ["ammo_firework"] = "feu·x d'artifice",
+ ["ammo_rockets"] = "roquette·s",
+ ["ammo_grenadelauncher"] = "grenade·s",
+ ["ammo_grenade"] = "grenade·s",
+ ["ammo_stickybomb"] = "bombe·s",
+ ["ammo_pipebomb"] = "bombe·s",
+ ["ammo_smokebomb"] = "bombe·s",
+ ["ammo_molotov"] = "cocktail·s",
+ ["ammo_proxmine"] = "mine·s",
+ ["ammo_bzgas"] = "grenade·s",
+ ["ammo_ball"] = "balle·s",
+ ["ammo_snowball"] = "boule·s de neige",
+ ["ammo_flare"] = "fusée·s éclairante·s",
+ ["ammo_flaregun"] = "fusée·s",
+
+ -- Weapon Tints
+ ["tint_default"] = "skin par défaut",
+ ["tint_green"] = "skin vert",
+ ["tint_gold"] = "skin doré",
+ ["tint_pink"] = "skin rose",
+ ["tint_army"] = "skin militaire",
+ ["tint_lspd"] = "skin bleu",
+ ["tint_orange"] = "skin orange",
+ ["tint_platinum"] = "skin platine",
+}
diff --git a/server-data/resources/[esx]/es_extended/locales/he.lua b/server-data/resources/[esx]/es_extended/locales/he.lua
new file mode 100644
index 000000000..12ebc9e5f
--- /dev/null
+++ b/server-data/resources/[esx]/es_extended/locales/he.lua
@@ -0,0 +1,375 @@
+Locales["he"] = {
+ -- Inventory
+ ["inventory"] = "מלאי ( משקל %s / %s )",
+ ["use"] = "השתמש",
+ ["give"] = "תן",
+ ["remove"] = "זרוק",
+ ["return"] = "חזור",
+ ["give_to"] = "תן ל",
+ ["amount"] = "כמות",
+ ["giveammo"] = "תן תחמושת",
+ ["amountammo"] = "כמות תחמושת",
+ ["noammo"] = "לא מספיק!",
+ ["gave_item"] = "ניתן %sx %s ל %s",
+ ["received_item"] = "קיבלת %sx %s מ %s",
+ ["gave_weapon"] = "ניתן %s ל %s",
+ ["gave_weapon_ammo"] = "ניתן ~o~%sx %s ל %s ל %s",
+ ["gave_weapon_withammo"] = "ניתן %s עם ~o~%sx %s ל %s",
+ ["gave_weapon_hasalready"] = "%s כבר יש לו %s",
+ ["gave_weapon_noweapon"] = "%s אין לו את הנשק הזה",
+ ["received_weapon"] = "קיבלת %s מ %s",
+ ["received_weapon_ammo"] = "קיבלת ~o~%sx %s ל %s שלך מ %s",
+ ["received_weapon_withammo"] = "קיבלת %s עם ~o~%sx %s מ %s",
+ ["received_weapon_hasalready"] = "%s ניסה לתת לך %s, אך יש לך כבר נשק זה",
+ ["received_weapon_noweapon"] = "%s ניסה לתת לך תחמושת ל %s, אך אין לך נשק זה",
+ ["gave_account_money"] = "ניתן $%s (%s) ל %s",
+ ["received_account_money"] = "קיבלת $%s (%s) מ %s",
+ ["amount_invalid"] = "כמות לא חוקית",
+ ["players_nearby"] = "אין שחקנים קרובים",
+ ["ex_inv_lim"] = "לא ניתן לבצע פעולה, חורג מהמשקל המרבי של %s",
+ ["imp_invalid_quantity"] = "לא ניתן לבצע פעולה, הכמות אינה חוקית",
+ ["imp_invalid_amount"] = "לא ניתן לבצע פעולה, הסכום אינו חוקי",
+ ["threw_standard"] = "זורק %sx %s",
+ ["threw_account"] = "זורק $%s %s",
+ ["threw_weapon"] = "זורק %s",
+ ["threw_weapon_ammo"] = "זורק %s עם ~o~%sx %s",
+ ["threw_weapon_already"] = "כבר יש לך נשק זה",
+ ["threw_cannot_pickup"] = "המלאי מלא, לא ניתן לאסוף!",
+ ["threw_pickup_prompt"] = "לחץ E כדי לאסוף",
+ -- Key mapping
+ ["keymap_showinventory"] = "הצג מלאי",
+
+ -- Salary related
+ ["received_salary"] = "קיבלת שכר: $%s",
+ ["received_help"] = "קיבלת הטבה: $%s",
+ ["company_nomoney"] = "החברה בה אתה עובד אינה יכולה לשלם לך את השכר",
+ ["received_paycheck"] = "קיבלת תלוש",
+ ["bank"] = "בנק מעץ",
+ ["account_bank"] = "בנק",
+ ["account_black_money"] = "כסף מטונף",
+ ["account_money"] = "מזומן",
+
+ ["act_imp"] = "לא ניתן לבצע פעולה",
+ ["in_vehicle"] = "לא ניתן לבצע פעולה, השחקן ברכב",
+ ["not_in_vehicle"] = "לא ניתן לבצע פעולה, השחקן לא ברכב",
+
+ -- Commands
+ ["command_bring"] = "הבא שחקן אליך",
+ ["command_car"] = "צור רכב",
+ ["command_car_car"] = "דגם הרכב או האש",
+ ["command_cardel"] = "הסר רכבים בקרבת מקום",
+ ["command_cardel_radius"] = "הסר את כל הרכבים ברדיוס המצוין",
+ ["command_repair"] = "תקן את הרכב שלך",
+ ["command_repair_success"] = "רכב תוקן בהצלחה",
+ ["command_repair_success_target"] = "אדמין תיקן לך את הרכב",
+ ["command_clear"] = 'נקה טקסט צ"אט',
+ ["command_clearall"] = 'נקה טקסט צ"אט לכל השחקנים',
+ ["command_clearinventory"] = "הסר את כל הפריטים מהמלאי של השחקן",
+ ["command_clearloadout"] = "הסר את כל הנשקים מהשחקן",
+ ["command_freeze"] = "הקפא שחקן",
+ ["command_unfreeze"] = "בטל הקפאה של שחקן",
+ ["command_giveaccountmoney"] = "תן כסף לחשבון מסוים",
+ ["command_giveaccountmoney_account"] = "חשבון להוספה",
+ ["command_giveaccountmoney_amount"] = "כמות להוספה",
+ ["command_giveaccountmoney_invalid"] = "שם חשבון לא חוקי",
+ ["command_removeaccountmoney"] = "הסר כסף מחשבון מסוים",
+ ["command_removeaccountmoney_account"] = "חשבון להסרה ממנו",
+ ["command_removeaccountmoney_amount"] = "כמות להסרה",
+ ["command_removeaccountmoney_invalid"] = "שם חשבון לא חוקי",
+ ["command_giveitem"] = "תן לשחקן פריט",
+ ["command_giveitem_item"] = "שם הפריט",
+ ["command_giveitem_count"] = "כמות",
+ ["command_giveweapon"] = "תן לשחקן נשק",
+ ["command_giveweapon_weapon"] = "שם הנשק",
+ ["command_giveweapon_ammo"] = "כמות תחמושת",
+ ["command_giveweapon_hasalready"] = "לשחקן כבר יש נשק זה",
+ ["command_giveweaponcomponent"] = "תן רכיב נשק לשחקן",
+ ["command_giveweaponcomponent_component"] = "שם הרכיב",
+ ["command_giveweaponcomponent_invalid"] = "רכיב נשק לא חוקי",
+ ["command_giveweaponcomponent_hasalready"] = "לשחקן כבר יש רכיב נשק זה",
+ ["command_giveweaponcomponent_missingweapon"] = "לשחקן אין נשק זה",
+ ["command_goto"] = "התעבר אל שחקן",
+ ["command_kill"] = "הרוג שחקן",
+ ["command_save"] = "שמור נתונים של שחקן בכפיה",
+ ["command_saveall"] = "שמור נתונים של כל השחקנים",
+ ["command_setaccountmoney"] = "קבע כמות כסף בחשבון מסוים",
+ ["command_setaccountmoney_amount"] = "כמות כסף להגדרה",
+ ["command_setcoords"] = "התעבר לקואורדינטות מסוימות",
+ ["command_setcoords_x"] = "ערך x",
+ ["command_setcoords_y"] = "ערך y",
+ ["command_setcoords_z"] = "ערך z",
+ ["command_setjob"] = "קבע משרה לשחקן",
+ ["command_setjob_job"] = "שם המשרה",
+ ["command_setjob_grade"] = "דרגת המשרה",
+ ["command_setjob_invalid"] = "המשרה, הדרגה או שניהם אינם חוקיים",
+ ["command_setgroup"] = "קבע קבוצת הרשאות לשחקן",
+ ["command_setgroup_group"] = "שם קבוצת הפקודות",
+ ["commanderror_argumentmismatch"] = "כמות וסוגי הארגומנטים אינם תואמים (נשלח %s, נדרש %s)",
+ ["commanderror_argumentmismatch_number"] = "טיפוס ארגומנט #%s לא תקין (נשלח מחרוזת, נדרש מספר)",
+ ["commanderror_argumentmismatch_string"] = "טיפוס ארגומנט #%s לא תקין (נשלח מספר, נדרש מחרוזת)",
+ ["commanderror_invaliditem"] = "שם פריט לא חוקי",
+ ["commanderror_invalidweapon"] = "נשק לא חוקי",
+ ["commanderror_console"] = "לא ניתן להפעיל פקודה מהקונסול",
+ ["commanderror_invalidcommand"] = "פקודה לא חוקית - /%s",
+ ["commanderror_invalidplayerid"] = "אין שחקן עם מזהה זה מחובר",
+ ["commandgeneric_playerid"] = "מזהה השחקן בשרת",
+ ["command_giveammo_noweapon_found"] = "ל-%s אין נשק כזה",
+ ["command_giveammo_weapon"] = "שם הנשק",
+ ["command_giveammo_ammo"] = "כמות תחמושת",
+ ["tpm_nowaypoint"] = "אין נקודת דרך מוגדרת",
+ ["tpm_success"] = "הועברת בהצלחה",
+
+ ["noclip_message"] = "מצב Noclip %s",
+ ["enabled"] = "~g~מאופשר~s~",
+ ["disabled"] = "~r~מנוטרל~s~",
+
+ -- Locale settings
+ ["locale_digit_grouping_symbol"] = ",",
+ ["locale_currency"] = "₪%s",
+
+ -- Weapons
+
+ -- Melee
+ ["weapon_dagger"] = "סכין",
+ ["weapon_bat"] = "כותרת",
+ ["weapon_battleaxe"] = "גרזן קרב",
+ ["weapon_bottle"] = "בקבוק",
+ ["weapon_crowbar"] = "מפתח ברזל",
+ ["weapon_flashlight"] = "פנס יד",
+ ["weapon_golfclub"] = "מקל גולף",
+ ["weapon_hammer"] = "פטיש",
+ ["weapon_hatchet"] = "גרזן",
+ ["weapon_knife"] = "סכין",
+ ["weapon_knuckle"] = "עצמאות",
+ ["weapon_machete"] = 'מאצ"טה',
+ ["weapon_nightstick"] = "מקל לילה",
+ ["weapon_wrench"] = "מפתח אינגליזי",
+ ["weapon_poolcue"] = "מקל בריכה",
+ ["weapon_stone_hatchet"] = "גרזן אבן",
+ ["weapon_switchblade"] = "סכין קפיצית",
+ -- Handguns
+ ["weapon_appistol"] = "אקדח AP",
+ ["weapon_ceramicpistol"] = "אקדח קרמי",
+ ["weapon_combatpistol"] = "אקדח קרב",
+ ["weapon_doubleaction"] = "רבולבר פעולה כפולה",
+ ["weapon_navyrevolver"] = "רבולבר צי",
+ ["weapon_flaregun"] = "אקדח זיקוקים",
+ ["weapon_gadgetpistol"] = "אקדח חומרה",
+ ["weapon_heavypistol"] = "אקדח כבד",
+ ["weapon_revolver"] = "רבולבר כבד",
+ ["weapon_revolver_mk2"] = "רבולבר כבד MK2",
+ ["weapon_marksmanpistol"] = "אקדח צלף",
+ ["weapon_pistol"] = "אקדח",
+ ["weapon_pistol_mk2"] = "אקדח MK2",
+ ["weapon_pistol50"] = "אקדח .50",
+ ["weapon_snspistol"] = "אקדח SNS",
+ ["weapon_snspistol_mk2"] = "אקדח SNS MK2",
+ ["weapon_stungun"] = "טייזר",
+ ["weapon_raypistol"] = "Up-N-Atomizer",
+ ["weapon_vintagepistol"] = "אקדח וינטג",
+
+ -- Shotguns
+ ["weapon_assaultshotgun"] = "רובה סטורם",
+ ["weapon_autoshotgun"] = "רובה אוטומטי",
+ ["weapon_bullpupshotgun"] = "רובה Bullpup",
+ ["weapon_combatshotgun"] = "רובה קרב",
+ ["weapon_dbshotgun"] = "רובה קנה כפול",
+ ["weapon_heavyshotgun"] = "רובה כבד",
+ ["weapon_musket"] = "רובה חלילי",
+ ["weapon_pumpshotgun"] = "רובה פומפה",
+ ["weapon_pumpshotgun_mk2"] = "רובה פומפה MK2",
+ ["weapon_sawnoffshotgun"] = "רובה חתוך",
+
+ -- SMG & LMG
+ ["weapon_assaultsmg"] = "רובה סטורם SMG",
+ ["weapon_combatmg"] = "רובה סטורם MG",
+ ["weapon_combatmg_mk2"] = "רובה סטורם MG MK2",
+ ["weapon_combatpdw"] = "רובה סטורם PDW",
+ ["weapon_gusenberg"] = "רובה גוזנברג",
+ ["weapon_machinepistol"] = "אקדח מכונה",
+ ["weapon_mg"] = "רובה מכונה",
+ ["weapon_microsmg"] = "רובה מכונה מיקרו",
+ ["weapon_minismg"] = "רובה מכונה מיני",
+ ["weapon_smg"] = "רובה מכונה",
+ ["weapon_smg_mk2"] = "רובה מכונה MK2",
+ ["weapon_raycarbine"] = "רובה אור",
+ -- Rifles
+ ["weapon_advancedrifle"] = "רובה מתקדם",
+ ["weapon_assaultrifle"] = "רובה סטורם",
+ ["weapon_assaultrifle_mk2"] = "רובה סטורם MK2",
+ ["weapon_bullpuprifle"] = "רובה Bullpup",
+ ["weapon_bullpuprifle_mk2"] = "רובה Bullpup MK2",
+ ["weapon_carbinerifle"] = "רובה קרבין",
+ ["weapon_carbinerifle_mk2"] = "רובה קרבין MK2",
+ ["weapon_compactrifle"] = "רובה קומפקטי",
+ ["weapon_militaryrifle"] = "רובה צבאי",
+ ["weapon_specialcarbine"] = "רובה קרבין מיוחד",
+ ["weapon_specialcarbine_mk2"] = "רובה קרבין מיוחד MK2",
+ ["weapon_heavyrifle"] = "רובה כבד",
+
+ -- Sniper
+ ["weapon_heavysniper"] = "רובה צלפים כבד",
+ ["weapon_heavysniper_mk2"] = "רובה צלפים כבד MK2",
+ ["weapon_marksmanrifle"] = "רובה צלפים",
+ ["weapon_marksmanrifle_mk2"] = "רובה צלפים MK2",
+ ["weapon_sniperrifle"] = "רובה צלפים",
+
+ -- Heavy / Launchers
+ ["weapon_compactlauncher"] = "משגר קומפקטי",
+ ["weapon_firework"] = "משגר זיקוקים",
+ ["weapon_grenadelauncher"] = "משגר רימונים",
+ ["weapon_hominglauncher"] = "משגר חפצים",
+ ["weapon_minigun"] = "מיניגן",
+ ["weapon_railgun"] = "רובה רכבת",
+ ["weapon_rpg"] = "משגר רקטות",
+ ["weapon_rayminigun"] = "Widowmaker",
+
+ -- Criminal Enterprises DLC
+ ["weapon_metaldetector"] = "גלאי מתכות",
+ ["weapon_precisionrifle"] = "רובה דיוק",
+ ["weapon_tactilerifle"] = "רובה טקטילי",
+
+ -- Drug wars dlc
+ ["weapon_candycane"] = "מקל סוכר",
+ ["weapon_acidpackage"] = "חומצה",
+ ["weapon_pistolxm3"] = "אקדח xm3",
+ ["weapon_railgunxm3"] = "רובה רכבת xm3",
+ -- Thrown
+ ["weapon_ball"] = "כדור בייסבול",
+ ["weapon_bzgas"] = "גז BZ",
+ ["weapon_flare"] = "זיקוק",
+ ["weapon_grenade"] = "רימון",
+ ["weapon_petrolcan"] = "גררון דלק",
+ ["weapon_hazardcan"] = "גררון מסוכן",
+ ["weapon_molotov"] = "קוקטייל מולוטוב",
+ ["weapon_proxmine"] = "מוקש קרבה",
+ ["weapon_pipebomb"] = "פצצת צינור",
+ ["weapon_snowball"] = "כדור שלג",
+ ["weapon_stickybomb"] = "פצצה דביקה",
+ ["weapon_smokegrenade"] = "גז דמעות",
+
+ -- Special
+ ["weapon_fireextinguisher"] = "מטף כיבוי",
+ ["weapon_digiscanner"] = "סורק דיגיטלי",
+ ["weapon_garbagebag"] = "שקית זבל",
+ ["weapon_handcuffs"] = "כפפות",
+ ["gadget_nightvision"] = "ראיה לילית",
+ ["gadget_parachute"] = "צניחה",
+
+ -- Weapon Components
+ ["component_knuckle_base"] = "דגם בסיסי",
+ ["component_knuckle_pimp"] = "הפימפ",
+ ["component_knuckle_ballas"] = "הבאלס",
+ ["component_knuckle_dollar"] = "ההאסטלר",
+ ["component_knuckle_diamond"] = "הרוק",
+ ["component_knuckle_hate"] = "השונא",
+ ["component_knuckle_love"] = "האוהב",
+ ["component_knuckle_player"] = "השחקן",
+ ["component_knuckle_king"] = "המלך",
+ ["component_knuckle_vagos"] = "הואגוס",
+ ["component_luxary_finish"] = "גימור מפואר",
+
+ ["component_handle_default"] = "ידית רגילה",
+ ["component_handle_vip"] = "ידית VIP",
+ ["component_handle_bodyguard"] = "ידית שומר גוף",
+
+ ["component_vip_finish"] = "גימור VIP",
+ ["component_bodyguard_finish"] = "גימור שומר גוף",
+
+ ["component_camo_finish"] = "צפיעה דיגיטלית",
+ ["component_camo_finish2"] = "צפיעה צבעים מעורבים",
+ ["component_camo_finish3"] = "צפיעה יערותית",
+ ["component_camo_finish4"] = "צפיעה גולגולת",
+ ["component_camo_finish5"] = "צפיעה Sessanta Nove",
+ ["component_camo_finish6"] = "צפיעה Perseus",
+ ["component_camo_finish7"] = "צפיעה נמרים",
+ ["component_camo_finish8"] = "צפיעה זברה",
+ ["component_camo_finish9"] = "צפיעה גיאומטרית",
+ ["component_camo_finish10"] = "צפיעה Boom",
+ ["component_camo_finish11"] = "צפיעה פטריוטית",
+
+ ["component_camo_slide_finish"] = "צפיעה דיגיטלית למחצלה",
+ ["component_camo_slide_finish2"] = "צפיעה צבעים מעורבים למחצלה",
+ ["component_camo_slide_finish3"] = "צפיעה יערותית למחצלה",
+ ["component_camo_slide_finish4"] = "צפיעה גולגולת למחצלה",
+ ["component_camo_slide_finish5"] = "צפיעה Sessanta Nove למחצלה",
+ ["component_camo_slide_finish6"] = "צפיעה Perseus למחצלה",
+ ["component_camo_slide_finish7"] = "צפיעה נמרים למחצלה",
+ ["component_camo_slide_finish8"] = "צפיעה זברה למחצלה",
+ ["component_camo_slide_finish9"] = "צפיעה גיאומטרית למחצלה",
+ ["component_camo_slide_finish10"] = "צפיעה Boom למחצלה",
+ ["component_camo_slide_finish11"] = "צפיעה פטריוטית למחצלה",
+ ["component_clip_default"] = "מחצירה רגילה",
+ ["component_clip_extended"] = "מחצירה מורחבת",
+ ["component_clip_drum"] = "מחצירה תוף",
+ ["component_clip_box"] = "מחצירה קופסה",
+
+ ["component_scope_holo"] = "כוונת הולוגרפית",
+ ["component_scope_small"] = "כוונת קטנה",
+ ["component_scope_medium"] = "כוונת בינונית",
+ ["component_scope_large"] = "כוונת גדולה",
+ ["component_scope"] = "כוונת מותקנת",
+ ["component_scope_advanced"] = "כוונת מתקדמת",
+ ["component_ironsights"] = "כוונת ברזל",
+
+ ["component_suppressor"] = "מרגיע",
+ ["component_compensator"] = "פיצוי",
+
+ ["component_muzzle_flat"] = "מרסור שטוח",
+ ["component_muzzle_tactical"] = "מרסור טקטי",
+ ["component_muzzle_fat"] = "מרסור עגלגל",
+ ["component_muzzle_precision"] = "מרסור מדויק",
+ ["component_muzzle_heavy"] = "מרסור כבד",
+ ["component_muzzle_slanted"] = "מרסור מוטה",
+ ["component_muzzle_split"] = "מרסור פצול",
+ ["component_muzzle_squared"] = "מרסור מרובע",
+
+ ["component_flashlight"] = "פנס",
+ ["component_grip"] = "אחיזה",
+
+ ["component_barrel_default"] = "עצם רגיל",
+ ["component_barrel_heavy"] = "עצם כבד",
+
+ ["component_ammo_tracer"] = "כדורים עקובים",
+ ["component_ammo_incendiary"] = "כדורים מדליקים",
+ ["component_ammo_hollowpoint"] = "כדורים חדים",
+ ["component_ammo_fmj"] = "כדורים FMJ",
+ ["component_ammo_armor"] = "כדורים חודרי משרוע",
+ ["component_ammo_explosive"] = "כדורים חודרי משרוע מדליקים",
+
+ ["component_shells_default"] = "גלעינים רגילים",
+ ["component_shells_incendiary"] = "גלעינים מדליקים",
+ ["component_shells_armor"] = "גלעינים פלדלים",
+ ["component_shells_hollowpoint"] = "גלעינים חדים",
+ ["component_shells_explosive"] = "גלעינים מתפוצצים",
+
+ -- Weapon Ammo
+ ["ammo_rounds"] = "כדור(ים)",
+ ["ammo_shells"] = "גלעין(ים)",
+ ["ammo_charge"] = "טעינה",
+ ["ammo_petrol"] = "גלונים של דלק",
+ ["ammo_firework"] = "זיקוק(ים)",
+ ["ammo_rockets"] = "טיל(ים)",
+ ["ammo_grenadelauncher"] = "רימון(ים)",
+ ["ammo_grenade"] = "רימון(ים)",
+ ["ammo_stickybomb"] = "פצצה/ות",
+ ["ammo_pipebomb"] = "פצצה/ות",
+ ["ammo_smokebomb"] = "פצצה/ות",
+ ["ammo_molotov"] = "קוקטייל(ים)",
+ ["ammo_proxmine"] = "מוקש/ים",
+ ["ammo_bzgas"] = "פח/ית",
+ ["ammo_ball"] = "כדור/ים",
+ ["ammo_snowball"] = "כדור/ים שלג",
+ ["ammo_flare"] = "זיקוק/ים",
+ ["ammo_flaregun"] = "זיקוק/ים",
+
+ -- Weapon Tints
+ ["tint_default"] = "צבע רגיל",
+ ["tint_green"] = "צבע ירוק",
+ ["tint_gold"] = "צבע זהב",
+ ["tint_pink"] = "צבע ורוד",
+ ["tint_army"] = "צבע צבאי",
+ ["tint_lspd"] = "צבע כחול",
+ ["tint_orange"] = "צבע כתום",
+ ["tint_platinum"] = "צבע פלטינה",
+}
diff --git a/server-data/resources/[esx]/es_extended/locales/hu.lua b/server-data/resources/[esx]/es_extended/locales/hu.lua
new file mode 100644
index 000000000..6971d6623
--- /dev/null
+++ b/server-data/resources/[esx]/es_extended/locales/hu.lua
@@ -0,0 +1,381 @@
+Locales["hu"] = {
+ -- Inventory
+ ["inventory"] = "Inventory ( Súly %s / %s )",
+ ["use"] = "Használ",
+ ["give"] = "Átad",
+ ["remove"] = "Eldob",
+ ["return"] = "Visszatérés",
+ ["give_to"] = "Adni valakinek",
+ ["amount"] = "Mennyiség",
+ ["giveammo"] = "Lőszer adás",
+ ["amountammo"] = "Lőszer mennyiség",
+ ["noammo"] = "Nincsen több lövedéked!",
+ ["gave_item"] = "Átadtál: %sx %s neki: %s",
+ ["received_item"] = "Kaptál: %sx %s töle: %s",
+ ["gave_weapon"] = "Átadtál: %s neki: %s",
+ ["gave_weapon_ammo"] = "Átadtál ~o~%sx %s %s neki: %s",
+ ["gave_weapon_withammo"] = "Átadtál %s ~o~%sx %s neki: %s",
+ ["gave_weapon_hasalready"] = "%s már rendelkezik %s",
+ ["gave_weapon_noweapon"] = "%s nincsen ilyen fegyere",
+ ["received_weapon"] = "Kaptál: %s töle: %s",
+ ["received_weapon_ammo"] = "Kaptál ~o~%sx %s %s töle: %s",
+ ["received_weapon_withammo"] = "Kaptál %s ~o~%sx %s töle: %s",
+ ["received_weapon_hasalready"] = "%s megpróbálta átadni a következöt: %s, nem már van rendelkezel egy ilyennel",
+ ["received_weapon_noweapon"] = "%s átakart adni %s, de nincsen ilyen fegyvered",
+ ["gave_account_money"] = "Átadtál: $%s (%s) neki: %s",
+ ["received_account_money"] = "Kaptál: $%s (%s) töle: %s",
+ ["amount_invalid"] = "Érvénytelen mennyiség",
+ ["players_nearby"] = "Nincsen játékos a közeledben",
+ ["ex_inv_lim"] = "Nincsen elég szabad helyed %s",
+ ["imp_invalid_quantity"] = "Érvénytelen mennyiség",
+ ["imp_invalid_amount"] = "Érvénytelen összeg",
+ ["threw_standard"] = "Kidobtál: %sx %s",
+ ["threw_account"] = "Kidobtál: $%s %s",
+ ["threw_weapon"] = "Kidobtál: %s",
+ ["threw_weapon_ammo"] = "Kidobtál: %s ~o~%sx %s",
+ ["threw_weapon_already"] = "Van már ilyen fegyvered",
+ ["threw_cannot_pickup"] = "Nincsen elég szabad helyed",
+ ["threw_pickup_prompt"] = "E hogy felvedd",
+
+ -- Key mapping
+ ["keymap_showinventory"] = "Leltár mutatása",
+
+ -- Salary related
+ ["received_salary"] = "Megkaptad a fizetésed: $%s",
+ ["received_help"] = "Megkaptad a segélyt: $%s",
+ ["company_nomoney"] = "Nem kaptál fizetést, mert a frakciónak nincs elég pénze!",
+ ["received_paycheck"] = "Fizetésed érkezett!",
+ ["bank"] = "maze Bank",
+ ["account_bank"] = "bank",
+ ["account_black_money"] = "Piszkos pénz",
+ ["account_money"] = "Készpénz",
+
+ ["act_imp"] = "Érvénytelen mennyiség",
+ ["in_vehicle"] = "Nem tudod átadni, mivel benne ül a jármüben",
+ ["not_in_vehicle"] = "Cannot Perform Action, Player isn't in a vehicle",
+
+ -- Commands
+ ["command_bring"] = "Játékos magadhoz teleportálása",
+ ["command_car"] = "Jármű lehívása",
+ ["command_car_car"] = "Jármű név vagy hash",
+ ["command_cardel"] = "Közeli járművek törlése",
+ ["command_cardel_radius"] = "Megadott radiusban lévő járművek törlése",
+ ["command_repair"] = "Repair your vehicle",
+ ["command_repair_success"] = "Successfully repaired vehicle",
+ ["command_repair_success_target"] = "An admin repaired your vehicle",
+ ["command_clear"] = "Chat ürítése",
+ ["command_clearall"] = "Chat ürítése minden játékosnál",
+ ["command_clearinventory"] = "Minden tárgy törlése a játékos inventoryból",
+ ["command_clearloadout"] = "Minden fegyver elvétele a játékostól",
+ ["command_freeze"] = "Játékos fagyasztása",
+ ["command_unfreeze"] = "Játékos kiolvasztása",
+ ["command_giveaccountmoney"] = "Pénz adás a megadott típusban",
+ ["command_giveaccountmoney_account"] = "Típus",
+ ["command_giveaccountmoney_amount"] = "Mennyiség",
+ ["command_giveaccountmoney_invalid"] = "Megadott típus hibás",
+ ["command_giveitem"] = "Tárgy adás a játékosnak",
+ ["command_giveitem_item"] = "Tárgy neve",
+ ["command_giveitem_count"] = "Mennyiség",
+ ["command_giveweapon"] = "Fegyver adás játékosnak",
+ ["command_giveweapon_weapon"] = "Fegyver neve",
+ ["command_giveweapon_ammo"] = "Lőszer mennyiség",
+ ["command_giveweapon_hasalready"] = "Játékosnak már van ilyen fegyvere",
+ ["command_giveweaponcomponent"] = "Fegyver kiegészítő adás a játékosnak",
+ ["command_giveweaponcomponent_component"] = "Kiegészítő neve",
+ ["command_giveweaponcomponent_invalid"] = "Érvénytelen fegyver kiegészítő",
+ ["command_giveweaponcomponent_hasalready"] = "Játékosnak már van ilyen fegyver kiegészítője",
+ ["command_giveweaponcomponent_missingweapon"] = "Játékosnak nincs ilyen fegyvere",
+ ["command_goto"] = "Teleportálás játékoshoz",
+ ["command_kill"] = "Játékos megölése",
+ ["command_save"] = "Játékos adatainak mentése",
+ ["command_saveall"] = "Összes játékos adatainak mentése",
+ ["command_setaccountmoney"] = "Játékos pénzének beállítása megadott típusban",
+ ["command_setaccountmoney_amount"] = "Mennyiség",
+ ["command_setcoords"] = "Teleportálás megadott kordinátára",
+ ["command_setcoords_x"] = "X érték",
+ ["command_setcoords_y"] = "Y érték",
+ ["command_setcoords_z"] = "Z érték",
+ ["command_setjob"] = "Játékos munkájának beállítása",
+ ["command_setjob_job"] = "Munka neve",
+ ["command_setjob_grade"] = "Rang",
+ ["command_setjob_invalid"] = "Munka név vagy rang érvénytelen",
+ ["command_setgroup"] = "Játékos jogosultsági csoportjának beállítása",
+ ["command_setgroup_group"] = "Csoport neve",
+ ["commanderror_argumentmismatch"] = "Érvénytelen argumentumszám (%s megadva, %s szükséges)",
+ ["commanderror_argumentmismatch_number"] = "Érvénytelen argumentum #%s adat típus (szöveg megadva, szám szükséges)",
+ ["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
+ ["commanderror_invaliditem"] = "Érvénytelen tárgy",
+ ["commanderror_invalidweapon"] = "Érvénytelen fegyver",
+ ["commanderror_console"] = "Parancs nem használható konzolból",
+ ["commanderror_invalidcommand"] = "Érvénytelen parancs - /%s",
+ ["commanderror_invalidplayerid"] = "Megadott játékos nem online.",
+ ["commandgeneric_playerid"] = "Játékos Szerver Id",
+ ["command_giveammo_noweapon_found"] = "Nincs ilyen fegyvered: %s",
+ ["command_giveammo_weapon"] = "Fegyver név",
+ ["command_giveammo_ammo"] = "Lőszer mennyiség",
+ ["tpm_nowaypoint"] = "Nincs kijelölve pozíció!",
+ ["tpm_success"] = "Sikeres teleportálás",
+
+ ["noclip_message"] = "Noclip %s",
+ ["enabled"] = "~g~engedélyezve~s~",
+ ["disabled"] = "~r~letiltva~s~",
+
+ -- Locale settings
+ ["locale_digit_grouping_symbol"] = ",",
+ ["locale_currency"] = "$%s",
+
+ -- Weapons
+
+ -- Melee
+ ["weapon_dagger"] = "Dagger",
+ ["weapon_bat"] = "Bat",
+ ["weapon_battleaxe"] = "Battle Axe",
+ ["weapon_bottle"] = "Bottle",
+ ["weapon_crowbar"] = "Crowbar",
+ ["weapon_flashlight"] = "Flashlight",
+ ["weapon_golfclub"] = "Golf Club",
+ ["weapon_hammer"] = "Hammer",
+ ["weapon_hatchet"] = "Hatchet",
+ ["weapon_knife"] = "Knife",
+ ["weapon_knuckle"] = "Knuckledusters",
+ ["weapon_machete"] = "Machete",
+ ["weapon_nightstick"] = "Nightstick",
+ ["weapon_wrench"] = "Pipe Wrench",
+ ["weapon_poolcue"] = "Pool Cue",
+ ["weapon_stone_hatchet"] = "Stone Hatchet",
+ ["weapon_switchblade"] = "Switchblade",
+
+ -- Handguns
+ ["weapon_appistol"] = "AP Pistol",
+ ["weapon_ceramicpistol"] = "Ceramic Pistol",
+ ["weapon_combatpistol"] = "Combat Pistol",
+ ["weapon_doubleaction"] = "Double-Action Revolver",
+ ["weapon_navyrevolver"] = "Navy Revolver",
+ ["weapon_flaregun"] = "Flaregun",
+ ["weapon_gadgetpistol"] = "Gadget Pistol",
+ ["weapon_heavypistol"] = "Heavy Pistol",
+ ["weapon_revolver"] = "Heavy Revolver",
+ ["weapon_revolver_mk2"] = "Heavy Revolver MK2",
+ ["weapon_marksmanpistol"] = "Marksman Pistol",
+ ["weapon_pistol"] = "Pistol",
+ ["weapon_pistol_mk2"] = "Pistol MK2",
+ ["weapon_pistol50"] = "Pistol .50",
+ ["weapon_snspistol"] = "SNS Pistol",
+ ["weapon_snspistol_mk2"] = "SNS Pistol MK2",
+ ["weapon_stungun"] = "Taser",
+ ["weapon_raypistol"] = "Up-N-Atomizer",
+ ["weapon_vintagepistol"] = "Vintage Pistol",
+
+ -- Shotguns
+ ["weapon_assaultshotgun"] = "Assault Shotgun",
+ ["weapon_autoshotgun"] = "Auto Shotgun",
+ ["weapon_bullpupshotgun"] = "Bullpup Shotgun",
+ ["weapon_combatshotgun"] = "Combat Shotgun",
+ ["weapon_dbshotgun"] = "Double Barrel Shotgun",
+ ["weapon_heavyshotgun"] = "Heavy Shotgun",
+ ["weapon_musket"] = "Musket",
+ ["weapon_pumpshotgun"] = "Pump Shotgun",
+ ["weapon_pumpshotgun_mk2"] = "Pump Shotgun MK2",
+ ["weapon_sawnoffshotgun"] = "Sawed Off Shotgun",
+
+ -- SMG & LMG
+ ["weapon_assaultsmg"] = "Assault SMG",
+ ["weapon_combatmg"] = "Combat MG",
+ ["weapon_combatmg_mk2"] = "Combat MG MK2",
+ ["weapon_combatpdw"] = "Combat PDW",
+ ["weapon_gusenberg"] = "Gusenberg Sweeper",
+ ["weapon_machinepistol"] = "Machine Pistol",
+ ["weapon_mg"] = "MG",
+ ["weapon_microsmg"] = "Micro SMG",
+ ["weapon_minismg"] = "Mini SMG",
+ ["weapon_smg"] = "SMG",
+ ["weapon_smg_mk2"] = "SMG MK2",
+ ["weapon_raycarbine"] = "Unholy Hellbringer",
+
+ -- Rifles
+ ["weapon_advancedrifle"] = "Advanced Rifle",
+ ["weapon_assaultrifle"] = "Assault Rifle",
+ ["weapon_assaultrifle_mk2"] = "Assault Rifle MK2",
+ ["weapon_bullpuprifle"] = "Bullpup Rifle",
+ ["weapon_bullpuprifle_mk2"] = "Bullpup Rifle MK2",
+ ["weapon_carbinerifle"] = "Carbine Rifle",
+ ["weapon_carbinerifle_mk2"] = "Carbine Rifle MK2",
+ ["weapon_compactrifle"] = "Compact Rifle",
+ ["weapon_militaryrifle"] = "Military Rifle",
+ ["weapon_specialcarbine"] = "Special Carbine",
+ ["weapon_specialcarbine_mk2"] = "Special Carbine MK2",
+ ["weapon_heavyrifle"] = "Heavy Rifle", -- Not Translated
+
+ -- Sniper
+ ["weapon_heavysniper"] = "Heavy Sniper",
+ ["weapon_heavysniper_mk2"] = "Heavy Sniper MK2",
+ ["weapon_marksmanrifle"] = "Marksman Rifle",
+ ["weapon_marksmanrifle_mk2"] = "Marksman Rifle MK2",
+ ["weapon_sniperrifle"] = "Sniper Rifle",
+
+ -- Heavy / Launchers
+ ["weapon_compactlauncher"] = "Compact Launcher",
+ ["weapon_firework"] = "Firework Launcher",
+ ["weapon_grenadelauncher"] = "Grenade Launcher",
+ ["weapon_hominglauncher"] = "Homing Launcher",
+ ["weapon_minigun"] = "Minigun",
+ ["weapon_railgun"] = "Railgun",
+ ["weapon_rpg"] = "Rocket Launcher",
+ ["weapon_rayminigun"] = "Widowmaker",
+
+ -- Criminal Enterprises DLC
+ ["weapon_metaldetector"] = "Fémkereső",
+ ["weapon_precisionrifle"] = "Precision Rifle",
+ ["weapon_tactilerifle"] = "Service Carbine",
+
+ -- Drug Wars DLC
+ ["weapon_candycane"] = "Candy Cane", -- not translated
+ ["weapon_acidpackage"] = "Acid Package", -- not translated
+ ["weapon_pistolxm3"] = "WM 29 Pistol", -- not translated
+ ["weapon_railgunxm3"] = "Railgun", -- not translated
+
+ -- Thrown
+ ["weapon_ball"] = "Baseball",
+ ["weapon_bzgas"] = "BZ Gas",
+ ["weapon_flare"] = "Flare",
+ ["weapon_grenade"] = "Grenade",
+ ["weapon_petrolcan"] = "Jerrycan",
+ ["weapon_hazardcan"] = "Hazardous Jerrycan",
+ ["weapon_molotov"] = "Molotov Cocktail",
+ ["weapon_proxmine"] = "Proximity Mine",
+ ["weapon_pipebomb"] = "Pipe Bomb",
+ ["weapon_snowball"] = "Snowball",
+ ["weapon_stickybomb"] = "Sticky Bomb",
+ ["weapon_smokegrenade"] = "Tear Gas",
+
+ -- Special
+ ["weapon_fireextinguisher"] = "Fire Extinguisher",
+ ["weapon_digiscanner"] = "Digital Scanner",
+ ["weapon_garbagebag"] = "Garbage Bag",
+ ["weapon_handcuffs"] = "Handcuffs",
+ ["gadget_nightvision"] = "Night Vision",
+ ["gadget_parachute"] = "parachute",
+
+ -- Weapon Components
+ ["component_knuckle_base"] = "base Model",
+ ["component_knuckle_pimp"] = "the Pimp",
+ ["component_knuckle_ballas"] = "the Ballas",
+ ["component_knuckle_dollar"] = "the Hustler",
+ ["component_knuckle_diamond"] = "the Rock",
+ ["component_knuckle_hate"] = "the Hater",
+ ["component_knuckle_love"] = "the Lover",
+ ["component_knuckle_player"] = "the Player",
+ ["component_knuckle_king"] = "the King",
+ ["component_knuckle_vagos"] = "the Vagos",
+
+ ["component_luxary_finish"] = "luxary Weapon Finish",
+
+ ["component_handle_default"] = "default Handle",
+ ["component_handle_vip"] = "vIP Handle",
+ ["component_handle_bodyguard"] = "bodyguard Handle",
+
+ ["component_vip_finish"] = "vIP Finish",
+ ["component_bodyguard_finish"] = "bodyguard Finish",
+
+ ["component_camo_finish"] = "digital Camo",
+ ["component_camo_finish2"] = "brushstroke Camo",
+ ["component_camo_finish3"] = "woodland Camo",
+ ["component_camo_finish4"] = "skull Camo",
+ ["component_camo_finish5"] = "sessanta Nove Camo",
+ ["component_camo_finish6"] = "perseus Camo",
+ ["component_camo_finish7"] = "leopard Camo",
+ ["component_camo_finish8"] = "zebra Camo",
+ ["component_camo_finish9"] = "geometric Camo",
+ ["component_camo_finish10"] = "boom Camo",
+ ["component_camo_finish11"] = "patriotic Camo",
+
+ ["component_camo_slide_finish"] = "digital Slide Camo",
+ ["component_camo_slide_finish2"] = "brushstroke Slide Camo",
+ ["component_camo_slide_finish3"] = "woodland Slide Camo",
+ ["component_camo_slide_finish4"] = "skull Slide Camo",
+ ["component_camo_slide_finish5"] = "sessanta Nove Slide Camo",
+ ["component_camo_slide_finish6"] = "perseus Slide Camo",
+ ["component_camo_slide_finish7"] = "leopard Slide Camo",
+ ["component_camo_slide_finish8"] = "zebra Slide Camo",
+ ["component_camo_slide_finish9"] = "geometric Slide Camo",
+ ["component_camo_slide_finish10"] = "boom Slide Camo",
+ ["component_camo_slide_finish11"] = "patriotic Slide Camo",
+
+ ["component_clip_default"] = "default Magazine",
+ ["component_clip_extended"] = "extended Magazine",
+ ["component_clip_drum"] = "drum Magazine",
+ ["component_clip_box"] = "box Magazine",
+
+ ["component_scope_holo"] = "holographic Scope",
+ ["component_scope_small"] = "small Scope",
+ ["component_scope_medium"] = "medium Scope",
+ ["component_scope_large"] = "large Scope",
+ ["component_scope"] = "mounted Scope",
+ ["component_scope_advanced"] = "advanced Scope",
+ ["component_ironsights"] = "ironsights",
+
+ ["component_suppressor"] = "suppressor",
+ ["component_compensator"] = "compensator",
+
+ ["component_muzzle_flat"] = "flat Muzzle Brake",
+ ["component_muzzle_tactical"] = "tactical Muzzle Brake",
+ ["component_muzzle_fat"] = "fat-End Muzzle Brake",
+ ["component_muzzle_precision"] = "precision Muzzle Brake",
+ ["component_muzzle_heavy"] = "heavy Duty Muzzle Brake",
+ ["component_muzzle_slanted"] = "slanted Muzzle Brake",
+ ["component_muzzle_split"] = "split-End Muzzle Brake",
+ ["component_muzzle_squared"] = "squared Muzzle Brake",
+
+ ["component_flashlight"] = "flashlight",
+ ["component_grip"] = "grip",
+
+ ["component_barrel_default"] = "default Barrel",
+ ["component_barrel_heavy"] = "heavy Barrel",
+
+ ["component_ammo_tracer"] = "tracer Ammo",
+ ["component_ammo_incendiary"] = "incendiary Ammo",
+ ["component_ammo_hollowpoint"] = "hollowpoint Ammo",
+ ["component_ammo_fmj"] = "fMJ Ammo",
+ ["component_ammo_armor"] = "armor Piercing Ammo",
+ ["component_ammo_explosive"] = "armor Piercing Incendiary Ammo",
+
+ ["component_shells_default"] = "default Shells",
+ ["component_shells_incendiary"] = "dragons Breath Shells",
+ ["component_shells_armor"] = "steel Buckshot Shells",
+ ["component_shells_hollowpoint"] = "flechette Shells",
+ ["component_shells_explosive"] = "explosive Slug Shells",
+
+ -- Weapon Ammo
+ ["ammo_rounds"] = "round(s)",
+ ["ammo_shells"] = "shell(s)",
+ ["ammo_charge"] = "charge",
+ ["ammo_petrol"] = "gallons of fuel",
+ ["ammo_firework"] = "firework(s)",
+ ["ammo_rockets"] = "rocket(s)",
+ ["ammo_grenadelauncher"] = "grenade(s)",
+ ["ammo_grenade"] = "grenade(s)",
+ ["ammo_stickybomb"] = "bomb(s)",
+ ["ammo_pipebomb"] = "bomb(s)",
+ ["ammo_smokebomb"] = "bomb(s)",
+ ["ammo_molotov"] = "cocktail(s)",
+ ["ammo_proxmine"] = "mine(s)",
+ ["ammo_bzgas"] = "can(s)",
+ ["ammo_ball"] = "ball(s)",
+ ["ammo_snowball"] = "snowball(s)",
+ ["ammo_flare"] = "flare(s)",
+ ["ammo_flaregun"] = "flare(s)",
+
+ -- Weapon Tints
+ ["tint_default"] = "default skin",
+ ["tint_green"] = "green skin",
+ ["tint_gold"] = "gold skin",
+ ["tint_pink"] = "pink skin",
+ ["tint_army"] = "army skin",
+ ["tint_lspd"] = "blue skin",
+ ["tint_orange"] = "orange skin",
+ ["tint_platinum"] = "platinum skin",
+
+ -- Duty related
+ ["stopped_duty"] = "Leadtad a szolgálatot.",
+ ["started_duty"] = "Szolgálatba álltál.",
+}
diff --git a/server-data/resources/[esx]/es_extended/locales/id.lua b/server-data/resources/[esx]/es_extended/locales/id.lua
new file mode 100644
index 000000000..1d7d1d822
--- /dev/null
+++ b/server-data/resources/[esx]/es_extended/locales/id.lua
@@ -0,0 +1,381 @@
+Locales["id"] = {
+ -- Inventory
+ ["inventory"] = "Inventaris ( Berat %s / %s )",
+ ["use"] = "Gunakan",
+ ["give"] = "Beri",
+ ["remove"] = "Buang",
+ ["return"] = "Kembali",
+ ["give_to"] = "Beri ke",
+ ["amount"] = "Jumlah",
+ ["giveammo"] = "Beri amunisi",
+ ["amountammo"] = "Jumlah Amunisi",
+ ["noammo"] = "Tidak cukup!",
+ ["gave_item"] = "Memberi %sx %s ke %s",
+ ["received_item"] = "Menerima %sx %s dari %s",
+ ["gave_weapon"] = "Memberi %s ke %s",
+ ["gave_weapon_ammo"] = "Memberi ~o~%sx %s untuk %s ke %s",
+ ["gave_weapon_withammo"] = "Memberi %s dengan ~o~%sx %s ke %s",
+ ["gave_weapon_hasalready"] = "%s sudah memiliki %s",
+ ["gave_weapon_noweapon"] = "%s tidak memiliki senjata tersebut",
+ ["received_weapon"] = "Menerima %s dari %s",
+ ["received_weapon_ammo"] = "Menerima ~o~%sx %s untuk %s Anda dari %s",
+ ["received_weapon_withammo"] = "Menerima %s dengan ~o~%sx %s dari %s",
+ ["received_weapon_hasalready"] = "%s mencoba memberimu %s, tapi kamu sudah memiliki senjata ini",
+ ["received_weapon_noweapon"] = "%s mencoba memberimu amunisi untuk %s, tapi kamu tidak memiliki senjata ini",
+ ["gave_account_money"] = "Memberi $%s (%s) ke %s",
+ ["received_account_money"] = "Menerima $%s (%s) dari %s",
+ ["amount_invalid"] = "Jumlah salah",
+ ["players_nearby"] = "Tidak ada Player di sekitar",
+ ["ex_inv_lim"] = "Tidak dapat melakukan aksi, melebihi batas berat dari %s",
+ ["imp_invalid_quantity"] = "Tidak dapat melakukan aksi, jumlah salah",
+ ["imp_invalid_amount"] = "Tidak dapat melakukan aksi, jumlah salah",
+ ["threw_standard"] = "Membuang %sx %s",
+ ["threw_account"] = "Membuang $%s %s",
+ ["threw_weapon"] = "Membuang %s",
+ ["threw_weapon_ammo"] = "Membuang %s dengan ~o~%sx %s",
+ ["threw_weapon_already"] = "Kamu sudah memiliki senjata ini",
+ ["threw_cannot_pickup"] = "Inventaris penuh, Tidak dapat mengambil!",
+ ["threw_pickup_prompt"] = "Tekan E untuk Mengambil",
+
+ -- Key mapping
+ ["keymap_showinventory"] = "Buka Inventaris",
+
+ -- Salary related
+ ["received_salary"] = "Anda telah dibayar: $%s",
+ ["received_help"] = "Anda telah menerima dana kesejahteraan: $%s",
+ ["company_nomoney"] = "perusahaan tempat Anda bekerja terlalu miskin untuk membayar gaji Anda",
+ ["received_paycheck"] = "menerima gaji",
+ ["bank"] = "Maze Bank",
+ ["account_bank"] = "Bank",
+ ["account_black_money"] = "Dirty Money",
+ ["account_money"] = "Cash",
+
+ ["act_imp"] = "Tidak dapat melakukan aksi",
+ ["in_vehicle"] = "Tidak dapat melakukan aksi, Player di dalam kendaraan",
+ ["not_in_vehicle"] = "Tidak dapat melakukan aksi, Player tidak di dalam kendaraan",
+
+ -- Commands
+ ["command_bring"] = "Bawa player kepadamu",
+ ["command_car"] = "Munculkan kendaraan",
+ ["command_car_car"] = "Model atau hash kendaraan",
+ ["command_cardel"] = "Menghilangkan kendaraan di sekitar",
+ ["command_cardel_radius"] = "Menghilangkan semua kendaraan dalam radius yang ditentukan",
+ ["command_repair"] = "Perbaiki kendaraanmu",
+ ["command_repair_success"] = "Berhasil memperbaiki kendaraan",
+ ["command_repair_success_target"] = "Admin memperbaiki kendaraanmu",
+ ["command_clear"] = "Bersihkan teks chat",
+ ["command_clearall"] = "Bersihkan teks chat untuk semua player",
+ ["command_clearinventory"] = "Hilangkan semua barang dari Inventaris Player",
+ ["command_clearloadout"] = "Hilangkan semua senjata dari Loadout Player",
+ ["command_freeze"] = "Bekukan player",
+ ["command_unfreeze"] = "Kembalikan player",
+ ["command_giveaccountmoney"] = "Beri uang ke rekening tertentu",
+ ["command_giveaccountmoney_account"] = "Rekening untuk ditambahkan",
+ ["command_giveaccountmoney_amount"] = "Jumlah untuk ditambahkan",
+ ["command_giveaccountmoney_invalid"] = "Nama Rekening Salah",
+ ["command_removeaccountmoney"] = "Hilangkan uang dari rekening tertentu",
+ ["command_removeaccountmoney_account"] = "Rekening yang akan dihapus",
+ ["command_removeaccountmoney_amount"] = "Jumlah yang dihapus",
+ ["command_removeaccountmoney_invalid"] = "Nama Rekening Salah",
+ ["command_giveitem"] = "Beri Player barang",
+ ["command_giveitem_item"] = "Nama Barang",
+ ["command_giveitem_count"] = "Jumlah",
+ ["command_giveweapon"] = "Beri player senjata",
+ ["command_giveweapon_weapon"] = "Nama Senjata",
+ ["command_giveweapon_ammo"] = "Jumlah Amunisi",
+ ["command_giveweapon_hasalready"] = "Player telah memiliki senjata ini",
+ ["command_giveweaponcomponent"] = "Beri komponen senjata ke player",
+ ["command_giveweaponcomponent_component"] = "Nama Komponen",
+ ["command_giveweaponcomponent_invalid"] = "Komponen Senjata Salah",
+ ["command_giveweaponcomponent_hasalready"] = "Player telah memiliki komponen senjata ini",
+ ["command_giveweaponcomponent_missingweapon"] = "Player tidak memiliki senjata ini",
+ ["command_goto"] = "Teleportasi dirimu ke player",
+ ["command_kill"] = "Bunuh player",
+ ["command_save"] = "Paksa Simpan Data player",
+ ["command_saveall"] = "Paksa Simpan Data semua player",
+ ["command_setaccountmoney"] = "Atur uang dalam rekening tertentu",
+ ["command_setaccountmoney_amount"] = "Jumlah",
+ ["command_setcoords"] = "Teleportasi ke koordinat tertentu",
+ ["command_setcoords_x"] = "Posisi X",
+ ["command_setcoords_y"] = "Posisi Y",
+ ["command_setcoords_z"] = "Posisi Z",
+ ["command_setjob"] = "Beri player pekerjaan",
+ ["command_setjob_job"] = "Nama",
+ ["command_setjob_grade"] = "Jabatan pekerjaan",
+ ["command_setjob_invalid"] = "pekerjaan, jabatan atau keduanya salah",
+ ["command_setgroup"] = "Atur izn grup player",
+ ["command_setgroup_group"] = "Nama Grup",
+ ["commanderror_argumentmismatch"] = "Jumlah Argument Salah (passed %s, wanted %s)",
+ ["commanderror_argumentmismatch_number"] = "Argument #%s salah tipe data (passed string, wanted number)",
+ ["commanderror_argumentmismatch_string"] = "Argument #%s salah tipe data (passed number, wanted string)",
+ ["commanderror_invaliditem"] = "Barang salah",
+ ["commanderror_invalidweapon"] = "Senjata salah",
+ ["commanderror_console"] = "Perintah tidak dapat dieksekusi dari console",
+ ["commanderror_invalidcommand"] = "Perintah Salah - /%s",
+ ["commanderror_invalidplayerid"] = "Player tersebut tidak online",
+ ["commandgeneric_playerid"] = "Id Server Player",
+ ["command_giveammo_noweapon_found"] = "%s tidak memiliki senjata tersebut",
+ ["command_giveammo_weapon"] = "Nama Senjata",
+ ["command_giveammo_ammo"] = "Jumlah Amunisi",
+ ["tpm_nowaypoint"] = "Titik Lokasi Tidak Diatur.",
+ ["tpm_success"] = "Berhasil Teleportasi",
+
+ ["noclip_message"] = "Noclip telah %s",
+ ["enabled"] = "~g~diaktifkan~s~",
+ ["disabled"] = "~r~dimatikan~s~",
+
+ -- Locale settings
+ ["locale_digit_grouping_symbol"] = ",",
+ ["locale_currency"] = "£%s",
+
+ -- Weapons
+
+ -- Melee
+ ["weapon_dagger"] = "Dagger",
+ ["weapon_bat"] = "Bat",
+ ["weapon_battleaxe"] = "Battle Axe",
+ ["weapon_bottle"] = "Bottle",
+ ["weapon_crowbar"] = "Crowbar",
+ ["weapon_flashlight"] = "Flashlight",
+ ["weapon_golfclub"] = "Golf Club",
+ ["weapon_hammer"] = "Hammer",
+ ["weapon_hatchet"] = "Hatchet",
+ ["weapon_knife"] = "Knife",
+ ["weapon_knuckle"] = "Knuckledusters",
+ ["weapon_machete"] = "Machete",
+ ["weapon_nightstick"] = "Nightstick",
+ ["weapon_wrench"] = "Pipe Wrench",
+ ["weapon_poolcue"] = "Pool Cue",
+ ["weapon_stone_hatchet"] = "Stone Hatchet",
+ ["weapon_switchblade"] = "Switchblade",
+
+ -- Handguns
+ ["weapon_appistol"] = "AP Pistol",
+ ["weapon_ceramicpistol"] = "Ceramic Pistol",
+ ["weapon_combatpistol"] = "Combat Pistol",
+ ["weapon_doubleaction"] = "Double-Action Revolver",
+ ["weapon_navyrevolver"] = "Navy Revolver",
+ ["weapon_flaregun"] = "Flaregun",
+ ["weapon_gadgetpistol"] = "Gadget Pistol",
+ ["weapon_heavypistol"] = "Heavy Pistol",
+ ["weapon_revolver"] = "Heavy Revolver",
+ ["weapon_revolver_mk2"] = "Heavy Revolver MK2",
+ ["weapon_marksmanpistol"] = "Marksman Pistol",
+ ["weapon_pistol"] = "Pistol",
+ ["weapon_pistol_mk2"] = "Pistol MK2",
+ ["weapon_pistol50"] = "Pistol .50",
+ ["weapon_snspistol"] = "SNS Pistol",
+ ["weapon_snspistol_mk2"] = "SNS Pistol MK2",
+ ["weapon_stungun"] = "Taser",
+ ["weapon_raypistol"] = "Up-N-Atomizer",
+ ["weapon_vintagepistol"] = "Vintage Pistol",
+
+ -- Shotguns
+ ["weapon_assaultshotgun"] = "Assault Shotgun",
+ ["weapon_autoshotgun"] = "Auto Shotgun",
+ ["weapon_bullpupshotgun"] = "Bullpup Shotgun",
+ ["weapon_combatshotgun"] = "Combat Shotgun",
+ ["weapon_dbshotgun"] = "Double Barrel Shotgun",
+ ["weapon_heavyshotgun"] = "Heavy Shotgun",
+ ["weapon_musket"] = "Musket",
+ ["weapon_pumpshotgun"] = "Pump Shotgun",
+ ["weapon_pumpshotgun_mk2"] = "Pump Shotgun MK2",
+ ["weapon_sawnoffshotgun"] = "Sawed Off Shotgun",
+
+ -- SMG & LMG
+ ["weapon_assaultsmg"] = "Assault SMG",
+ ["weapon_combatmg"] = "Combat MG",
+ ["weapon_combatmg_mk2"] = "Combat MG MK2",
+ ["weapon_combatpdw"] = "Combat PDW",
+ ["weapon_gusenberg"] = "Gusenberg Sweeper",
+ ["weapon_machinepistol"] = "Machine Pistol",
+ ["weapon_mg"] = "MG",
+ ["weapon_microsmg"] = "Micro SMG",
+ ["weapon_minismg"] = "Mini SMG",
+ ["weapon_smg"] = "SMG",
+ ["weapon_smg_mk2"] = "SMG MK2",
+ ["weapon_raycarbine"] = "Unholy Hellbringer",
+
+ -- Rifles
+ ["weapon_advancedrifle"] = "Advanced Rifle",
+ ["weapon_assaultrifle"] = "Assault Rifle",
+ ["weapon_assaultrifle_mk2"] = "Assault Rifle MK2",
+ ["weapon_bullpuprifle"] = "Bullpup Rifle",
+ ["weapon_bullpuprifle_mk2"] = "Bullpup Rifle MK2",
+ ["weapon_carbinerifle"] = "Carbine Rifle",
+ ["weapon_carbinerifle_mk2"] = "Carbine Rifle MK2",
+ ["weapon_compactrifle"] = "Compact Rifle",
+ ["weapon_militaryrifle"] = "Military Rifle",
+ ["weapon_specialcarbine"] = "Special Carbine",
+ ["weapon_specialcarbine_mk2"] = "Special Carbine MK2",
+ ["weapon_heavyrifle"] = "Heavy Rifle",
+
+ -- Sniper
+ ["weapon_heavysniper"] = "Heavy Sniper",
+ ["weapon_heavysniper_mk2"] = "Heavy Sniper MK2",
+ ["weapon_marksmanrifle"] = "Marksman Rifle",
+ ["weapon_marksmanrifle_mk2"] = "Marksman Rifle MK2",
+ ["weapon_sniperrifle"] = "Sniper Rifle",
+
+ -- Heavy / Launchers
+ ["weapon_compactlauncher"] = "Compact Launcher",
+ ["weapon_firework"] = "Firework Launcher",
+ ["weapon_grenadelauncher"] = "Grenade Launcher",
+ ["weapon_hominglauncher"] = "Homing Launcher",
+ ["weapon_minigun"] = "Minigun",
+ ["weapon_railgun"] = "Railgun",
+ ["weapon_rpg"] = "Rocket Launcher",
+ ["weapon_rayminigun"] = "Widowmaker",
+
+ -- Criminal Enterprises DLC
+ ["weapon_metaldetector"] = "Metal Detector",
+ ["weapon_precisionrifle"] = "Precision Rifle",
+ ["weapon_tactilerifle"] = "Service Carbine",
+
+ -- Drug wars dlc
+ ["weapon_candycane"] = "Candycane",
+ ["weapon_acidpackage"] = "Acid Package",
+ ["weapon_pistolxm3"] = "Pistol8 x3m",
+ ["weapon_railgunxm3"] = "Railgun",
+
+ -- Thrown
+ ["weapon_ball"] = "Baseball",
+ ["weapon_bzgas"] = "BZ Gas",
+ ["weapon_flare"] = "Flare",
+ ["weapon_grenade"] = "Grenade",
+ ["weapon_petrolcan"] = "Jerrycan",
+ ["weapon_hazardcan"] = "Hazardous Jerrycan",
+ ["weapon_molotov"] = "Molotov Cocktail",
+ ["weapon_proxmine"] = "Proximity Mine",
+ ["weapon_pipebomb"] = "Pipe Bomb",
+ ["weapon_snowball"] = "Snowball",
+ ["weapon_stickybomb"] = "Sticky Bomb",
+ ["weapon_smokegrenade"] = "Tear Gas",
+
+ -- Special
+ ["weapon_fireextinguisher"] = "Pemadam Api",
+ ["weapon_digiscanner"] = "Digital Scanner",
+ ["weapon_garbagebag"] = "Kantong Sampah",
+ ["weapon_handcuffs"] = "Borgol",
+ ["gadget_nightvision"] = "Night Vision",
+ ["gadget_parachute"] = "Parasut",
+
+ -- Weapon Components
+ ["component_knuckle_base"] = "base Model",
+ ["component_knuckle_pimp"] = "the Pimp",
+ ["component_knuckle_ballas"] = "the Ballas",
+ ["component_knuckle_dollar"] = "the Hustler",
+ ["component_knuckle_diamond"] = "the Rock",
+ ["component_knuckle_hate"] = "the Hater",
+ ["component_knuckle_love"] = "the Lover",
+ ["component_knuckle_player"] = "the Player",
+ ["component_knuckle_king"] = "the King",
+ ["component_knuckle_vagos"] = "the Vagos",
+
+ ["component_luxary_finish"] = "luxary Weapon Finish",
+
+ ["component_handle_default"] = "default Handle",
+ ["component_handle_vip"] = "vIP Handle",
+ ["component_handle_bodyguard"] = "bodyguard Handle",
+
+ ["component_vip_finish"] = "vIP Finish",
+ ["component_bodyguard_finish"] = "bodyguard Finish",
+
+ ["component_camo_finish"] = "digital Camo",
+ ["component_camo_finish2"] = "brushstroke Camo",
+ ["component_camo_finish3"] = "woodland Camo",
+ ["component_camo_finish4"] = "skull Camo",
+ ["component_camo_finish5"] = "sessanta Nove Camo",
+ ["component_camo_finish6"] = "perseus Camo",
+ ["component_camo_finish7"] = "leopard Camo",
+ ["component_camo_finish8"] = "zebra Camo",
+ ["component_camo_finish9"] = "geometric Camo",
+ ["component_camo_finish10"] = "boom Camo",
+ ["component_camo_finish11"] = "patriotic Camo",
+
+ ["component_camo_slide_finish"] = "digital Slide Camo",
+ ["component_camo_slide_finish2"] = "brushstroke Slide Camo",
+ ["component_camo_slide_finish3"] = "woodland Slide Camo",
+ ["component_camo_slide_finish4"] = "skull Slide Camo",
+ ["component_camo_slide_finish5"] = "sessanta Nove Slide Camo",
+ ["component_camo_slide_finish6"] = "perseus Slide Camo",
+ ["component_camo_slide_finish7"] = "leopard Slide Camo",
+ ["component_camo_slide_finish8"] = "zebra Slide Camo",
+ ["component_camo_slide_finish9"] = "geometric Slide Camo",
+ ["component_camo_slide_finish10"] = "boom Slide Camo",
+ ["component_camo_slide_finish11"] = "patriotic Slide Camo",
+
+ ["component_clip_default"] = "default Magazine",
+ ["component_clip_extended"] = "extended Magazine",
+ ["component_clip_drum"] = "drum Magazine",
+ ["component_clip_box"] = "box Magazine",
+
+ ["component_scope_holo"] = "holographic Scope",
+ ["component_scope_small"] = "small Scope",
+ ["component_scope_medium"] = "medium Scope",
+ ["component_scope_large"] = "large Scope",
+ ["component_scope"] = "mounted Scope",
+ ["component_scope_advanced"] = "advanced Scope",
+ ["component_ironsights"] = "ironsights",
+
+ ["component_suppressor"] = "suppressor",
+ ["component_compensator"] = "compensator",
+
+ ["component_muzzle_flat"] = "flat Muzzle Brake",
+ ["component_muzzle_tactical"] = "tactical Muzzle Brake",
+ ["component_muzzle_fat"] = "fat-End Muzzle Brake",
+ ["component_muzzle_precision"] = "precision Muzzle Brake",
+ ["component_muzzle_heavy"] = "heavy Duty Muzzle Brake",
+ ["component_muzzle_slanted"] = "slanted Muzzle Brake",
+ ["component_muzzle_split"] = "split-End Muzzle Brake",
+ ["component_muzzle_squared"] = "squared Muzzle Brake",
+
+ ["component_flashlight"] = "flashlight",
+ ["component_grip"] = "grip",
+
+ ["component_barrel_default"] = "default Barrel",
+ ["component_barrel_heavy"] = "heavy Barrel",
+
+ ["component_ammo_tracer"] = "tracer Ammo",
+ ["component_ammo_incendiary"] = "incendiary Ammo",
+ ["component_ammo_hollowpoint"] = "hollowpoint Ammo",
+ ["component_ammo_fmj"] = "fMJ Ammo",
+ ["component_ammo_armor"] = "armor Piercing Ammo",
+ ["component_ammo_explosive"] = "armor Piercing Incendiary Ammo",
+
+ ["component_shells_default"] = "default Shells",
+ ["component_shells_incendiary"] = "dragons Breath Shells",
+ ["component_shells_armor"] = "steel Buckshot Shells",
+ ["component_shells_hollowpoint"] = "flechette Shells",
+ ["component_shells_explosive"] = "explosive Slug Shells",
+
+ -- Weapon Ammo
+ ["ammo_rounds"] = "peluru",
+ ["ammo_shells"] = "peluru",
+ ["ammo_charge"] = "peluru",
+ ["ammo_petrol"] = "gallon bahan bakar",
+ ["ammo_firework"] = "kembang api",
+ ["ammo_rockets"] = "roket",
+ ["ammo_grenadelauncher"] = "granat",
+ ["ammo_grenade"] = "granat",
+ ["ammo_stickybomb"] = "bom",
+ ["ammo_pipebomb"] = "bom pipa",
+ ["ammo_smokebomb"] = "bom asap",
+ ["ammo_molotov"] = "molotov",
+ ["ammo_proxmine"] = "peledak",
+ ["ammo_bzgas"] = "kaleng",
+ ["ammo_ball"] = "bola",
+ ["ammo_snowball"] = "bola salju",
+ ["ammo_flare"] = "flare",
+ ["ammo_flaregun"] = "flare",
+
+ -- Weapon Tints
+ ["tint_default"] = "default skin",
+ ["tint_green"] = "green skin",
+ ["tint_gold"] = "gold skin",
+ ["tint_pink"] = "pink skin",
+ ["tint_army"] = "army skin",
+ ["tint_lspd"] = "blue skin",
+ ["tint_orange"] = "orange skin",
+ ["tint_platinum"] = "platinum skin",
+}
diff --git a/server-data/resources/[esx]/es_extended/locales/nl.lua b/server-data/resources/[esx]/es_extended/locales/nl.lua
new file mode 100644
index 000000000..b6a699aca
--- /dev/null
+++ b/server-data/resources/[esx]/es_extended/locales/nl.lua
@@ -0,0 +1,372 @@
+Locales["nl"] = {
+ -- Inventory
+ ["inventory"] = "Inventaris ( Gewicht %s / %s )",
+ ["use"] = "Gebruik",
+ ["give"] = "Geef",
+ ["remove"] = "Gooi",
+ ["return"] = "Terug",
+ ["give_to"] = "Geef aan",
+ ["amount"] = "Aantal",
+ ["giveammo"] = "Geef munitie",
+ ["amountammo"] = "Hoeveelheid munitie",
+ ["noammo"] = "Niet genoeg munitie!",
+ ["gave_item"] = "%sx %s gegeven aan %s",
+ ["received_item"] = "%sx %s ontvangen van %s",
+ ["gave_weapon"] = "%s gegeven aan %s",
+ ["gave_weapon_ammo"] = "~o~%sx %s gegeven voor een %s aan %s",
+ ["gave_weapon_withammo"] = "%s gegeven met ~o~%sx %s aan %s",
+ ["gave_weapon_hasalready"] = "%s heeft al een %s",
+ ["gave_weapon_noweapon"] = "%s heeft dat wapen niet",
+ ["received_weapon"] = "%s ontvangen van %s",
+ ["received_weapon_ammo"] = "~o~%sx %s ontvangen voor je %s van %s",
+ ["received_weapon_withammo"] = "%s ontvangen met ~o~%sx %s van %s",
+ ["received_weapon_hasalready"] = "%s heeft geprobeerd je een %s te geven, maar je hebt dat wapen al.",
+ ["received_weapon_noweapon"] = "%s heeft geprobeerd je ammo te geven voor een %s, maar je hebt dit wapen niet",
+ ["gave_account_money"] = "€%s (%s) gegeven aan %s",
+ ["received_account_money"] = "€%s (%s) ontvangen van %s",
+ ["amount_invalid"] = "Ongeldige hoeveelheid",
+ ["players_nearby"] = "Geen spelers in de buurt",
+ ["ex_inv_lim"] = "Kan actie niet uitvoeren, overschrijdt max. gewicht van %s",
+ ["imp_invalid_quantity"] = "Kan actie niet uitvoeren, de hoeveelheid is ongeldig",
+ ["imp_invalid_amount"] = "Kan actie niet uitvoeren, het aantal is ongeldig",
+ ["threw_standard"] = "%sx %s weggegooid",
+ ["threw_account"] = "€%s %s weggegooid",
+ ["threw_weapon"] = "%s weggegooid",
+ ["threw_weapon_ammo"] = "%s met ~o~%sx %s weggegooid",
+ ["threw_weapon_already"] = "Je hebt dit wapen al !",
+ ["threw_cannot_pickup"] = "Inventaris is vol, je kan dit niet oppakken!",
+ ["threw_pickup_prompt"] = "Druk op E om op te pakken",
+
+ -- Key mapping
+ ["keymap_showinventory"] = "Laat inventaris zien",
+
+ -- Salary related
+ ["received_salary"] = "Je bent betaald: €%s",
+ ["received_help"] = "Je hebt je uitkering gekregen: €%s",
+ ["company_nomoney"] = "Het bedrijf waar je bij werkt heeft te weinig geld om je uit te betalen.",
+ ["received_paycheck"] = "salaris ontvangen",
+ ["bank"] = "Maze Bank",
+ ["account_bank"] = "Bank",
+ ["account_black_money"] = "Zwart geld",
+ ["account_money"] = "Contant",
+
+ ["act_imp"] = "Kan actie niet uitvoeren",
+ ["in_vehicle"] = "Kan actie niet uitvoeren, de speler zit in een voertuig.",
+
+ -- Commands
+ ["command_bring"] = "Breng speler naar jou",
+ ["command_car"] = "Spawn een voertuig",
+ ["command_car_car"] = "Voertuig model of hash",
+ ["command_cardel"] = "Verwijder voertuigen in straal",
+ ["command_cardel_radius"] = "Verwijderd alle voertuigen in gewenste straal",
+ ["command_clear"] = "Verwijder chat berichten",
+ ["command_clearall"] = "Verwijder chat berichten voor alle spelers",
+ ["command_clearinventory"] = "Verwijder alle items van een speler zijn inventory",
+ ["command_clearloadout"] = "Verwijder alle wapens die een speler heeft",
+ ["command_freeze"] = "Freeze een speler",
+ ["command_unfreeze"] = "Unfreeze een speler",
+ ["command_giveaccountmoney"] = "Geef geld aan een rekening",
+ ["command_giveaccountmoney_account"] = "Account om aan toe te voegen",
+ ["command_giveaccountmoney_amount"] = "Bedrag om toe te voegen",
+ ["command_giveaccountmoney_invalid"] = "Account Naam ongeldig",
+ ["command_giveitem"] = "Geef speler een item",
+ ["command_giveitem_item"] = "Item naam",
+ ["command_giveitem_count"] = "Hoeveelheid",
+ ["command_giveweapon"] = "Geef de speler een wapen",
+ ["command_giveweapon_weapon"] = "Wapen naam",
+ ["command_giveweapon_ammo"] = "Munitie Hoeveelheid",
+ ["command_giveweapon_hasalready"] = "Speler heeft dit wapen al",
+ ["command_giveweaponcomponent"] = "Geef wapen component aan speler",
+ ["command_giveweaponcomponent_component"] = "Component naam",
+ ["command_giveweaponcomponent_invalid"] = "Ongeldig wapen component",
+ ["command_giveweaponcomponent_hasalready"] = "De speler heeft dit wapen component al",
+ ["command_giveweaponcomponent_missingweapon"] = "De speler heeft dit wapen niet",
+ ["command_goto"] = "Teleporteer jezelf naar een speler",
+ ["command_kill"] = "Vermoord een speler",
+ ["command_save"] = "Slaag een speler zijn spelerdata geforceerd op",
+ ["command_saveall"] = "Slaag iedereen zijn spelerdata geforceerd op",
+ ["command_setaccountmoney"] = "Stel geld in op een account",
+ ["command_setaccountmoney_amount"] = "Hoeveelheid",
+ ["command_setcoords"] = "Telepeer naar coordinaten",
+ ["command_setcoords_x"] = "X waarde",
+ ["command_setcoords_y"] = "Y waarde",
+ ["command_setcoords_z"] = "Z waarde",
+ ["command_setjob"] = "Zet een speler zijn / haar job",
+ ["command_setjob_job"] = "Naam",
+ ["command_setjob_grade"] = "Job grade",
+ ["command_setjob_invalid"] = "De job, grade of beide zijn ongeldig",
+ ["command_setgroup"] = "Stel een toestemmingsgroep voor spelers in",
+ ["command_setgroup_group"] = "Naam van groep",
+ ["commanderror_argumentmismatch"] = "Ongeldig aantal argumenten (geslaagd %s, gezocht %s)",
+ ["commanderror_argumentmismatch_number"] = "Ongeldig argument #%s gegevenstype (doorgegeven string, gewenst nummer)",
+ ["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (doorgegeven string, gewenst nummer)",
+ ["commanderror_invaliditem"] = "Ongeldig item",
+ ["commanderror_invalidweapon"] = "Ongeldig wapen",
+ ["commanderror_console"] = "Command kan niet worden uitgevoerd vanaf console.",
+ ["commanderror_invalidcommand"] = "Ongeldig commando - /%s",
+ ["commanderror_invalidplayerid"] = "Opgegeven speler is niet online",
+ ["commandgeneric_playerid"] = "Speler server id",
+ ["command_giveammo_noweapon_found"] = "%s heeft dat wapen niet",
+ ["command_giveammo_weapon"] = "Wapen naam",
+ ["command_giveammo_ammo"] = "Munitie Hoeveelheid",
+ ["tpm_nowaypoint"] = "Geen navigatie ingesteld.",
+ ["tpm_success"] = "Successvol geteleporteerd",
+
+ ["noclip_message"] = "Noclip is %s",
+ ["enabled"] = "~g~aangezet~s~",
+ ["disabled"] = "~r~uitgezet~s~",
+
+ -- Locale settings
+ ["locale_digit_grouping_symbol"] = ",",
+ ["locale_currency"] = "€%s",
+
+ -- Weapons
+
+ -- Melee
+ ["weapon_dagger"] = "Dolk",
+ ["weapon_bat"] = "Knuppel",
+ ["weapon_battleaxe"] = "Gevechtsbijl",
+ ["weapon_bottle"] = "Fles",
+ ["weapon_crowbar"] = "Koevoet",
+ ["weapon_flashlight"] = "Zaklamp",
+ ["weapon_golfclub"] = "Golfclub",
+ ["weapon_hammer"] = "Hamer",
+ ["weapon_hatchet"] = "Bijl",
+ ["weapon_knife"] = "Mes",
+ ["weapon_knuckle"] = "Boksbeugel",
+ ["weapon_machete"] = "Machete",
+ ["weapon_nightstick"] = "Wapenstok",
+ ["weapon_wrench"] = "Pijpsleutel",
+ ["weapon_poolcue"] = "Biljart Keu",
+ ["weapon_stone_hatchet"] = "Steenbijl",
+ ["weapon_switchblade"] = "Stiletto",
+
+ -- Handguns
+ ["weapon_appistol"] = "AP-pistool",
+ ["weapon_ceramicpistol"] = "Keramische pistool",
+ ["weapon_combatpistol"] = "Gevechtspistool",
+ ["weapon_doubleaction"] = "Revolver met dubbele actie",
+ ["weapon_navyrevolver"] = "Marine Revolver",
+ ["weapon_flaregun"] = "Noodsignaalpistool",
+ ["weapon_gadgetpistol"] = "Gadgetpistool",
+ ["weapon_heavypistol"] = "Zwaar pistool",
+ ["weapon_revolver"] = "Zware revolver",
+ ["weapon_revolver_mk2"] = "Zware revolver MK2",
+ ["weapon_marksmanpistol"] = "Marksman-pistool",
+ ["weapon_pistol"] = "Pistool",
+ ["weapon_pistol_mk2"] = "Pistool MK2",
+ ["weapon_pistol50"] = "Pistool .50",
+ ["weapon_snspistol"] = "SNS-pistool",
+ ["weapon_snspistol_mk2"] = "SNS-pistool MK2",
+ ["weapon_stungun"] = "Taser",
+ ["weapon_raypistol"] = "Up-N-Atomizer",
+ ["weapon_vintagepistol"] = "Vintage Pistool",
+
+ -- Shotguns
+ ["weapon_assaultshotgun"] = "Aanvalsgeweer",
+ ["weapon_autoshotgun"] = "Automatisch jachtgeweer",
+ ["weapon_bullpupshotgun"] = "Bullpup Shotgun",
+ ["weapon_combatshotgun"] = "Gevechtsgeweer",
+ ["weapon_dbshotgun"] = "Dubbelloops jachtgeweer",
+ ["weapon_heavyshotgun"] = "Zwaar jachtgeweer",
+ ["weapon_musket"] = "Musket",
+ ["weapon_pumpshotgun"] = "Pompgeweer",
+ ["weapon_pumpshotgun_mk2"] = "Pump Shotgun MK2",
+ ["weapon_sawnoffshotgun"] = "Afgezaagd jachtgeweer",
+
+ -- SMG & LMG
+ ["weapon_assaultsmg"] = "Aanval SMG",
+ ["weapon_combatmg"] = "Gevecht MG",
+ ["weapon_combatmg_mk2"] = "Combat MG MK2",
+ ["weapon_combatpdw"] = "Combat PDW",
+ ["weapon_gusenberg"] = "Gusenberg-veger",
+ ["weapon_machinepistol"] = "Machinepistool",
+ ["weapon_mg"] = "MG",
+ ["weapon_microsmg"] = "Micro-SMG",
+ ["weapon_minismg"] = "Mini-SMG",
+ ["weapon_smg"] = "SMG",
+ ["weapon_smg_mk2"] = "SMG MK2",
+ ["weapon_raycarbine"] = "Onheilige Hellbringer",
+
+ -- Rifles
+ ["weapon_advancedrifle"] = "Geavanceerd geweer",
+ ["weapon_assaultrifle"] = "Aanvalsgeweer",
+ ["weapon_assaultrifle_mk2"] = "Aanvalsgeweer MK2",
+ ["weapon_bullpuprifle"] = "Bullpup-geweer",
+ ["weapon_bullpuprifle_mk2"] = "Bullpup-geweer MK2",
+ ["weapon_carbinerifle"] = "Kabinet geweer",
+ ["weapon_carbinerifle_mk2"] = "Kabinet geweer MK2",
+ ["weapon_compactrifle"] = "Compact geweer",
+ ["weapon_militaryrifle"] = "Militair geweer",
+ ["weapon_specialcarbine"] = "Speciale karabijn",
+ ["weapon_specialcarbine_mk2"] = "Speciale karabijn MK2",
+
+ -- Sniper
+ ["weapon_heavysniper"] = "Zware sluipschutter",
+ ["weapon_heavysniper_mk2"] = "Zware Sniper MK2",
+ ["weapon_marksmanrifle"] = "Schuttersgeweer",
+ ["weapon_marksmanrifle_mk2"] = "Schuttersgeweer MK2",
+ ["weapon_sniperrifle"] = "Sniper Rifle",
+
+ -- Heavy / Launchers
+ ["weapon_compactlauncher"] = "Compacte Launcher",
+ ["weapon_firework"] = "Vuurwerkstarter",
+ ["weapon_grenadelauncher"] = "Granaatwerper",
+ ["weapon_hominglauncher"] = "Homing Launcher",
+ ["weapon_minigun"] = "Minigun",
+ ["weapon_railgun"] = "Spoorgeweer",
+ ["weapon_rpg"] = "Raketwerper",
+ ["weapon_rayminigun"] = "Weduwemaker",
+
+ -- Criminal Enterprises DLC
+ ["weapon_metaldetector"] = "Metaal Detector",
+ ["weapon_precisionrifle"] = "Precisiegeweer",
+ ["weapon_tactilerifle"] = "Service Carbine",
+
+ -- Drug Wars DLC
+ ["weapon_candycane"] = "Snoep stok",
+ ["weapon_acidpackage"] = "LSD pakket",
+ ["weapon_pistolxm3"] = "WM 29 Pistool",
+ ["weapon_railgunxm3"] = "Railgun",
+
+ -- Thrown
+ ["weapon_ball"] = "Honkbal",
+ ["weapon_bzgas"] = "BZ-gas",
+ ["weapon_flare"] = "Flare",
+ ["weapon_grenade"] = "Granaat",
+ ["weapon_petrolcan"] = "Jerrycan",
+ ["weapon_hazardcan"] = "Gevaarlijke jerrycan",
+ ["weapon_molotov"] = "Molotovcocktail",
+ ["weapon_proxmine"] = "Nabijheidsmijn",
+ ["weapon_pipebomb"] = "Pijpbom",
+ ["weapon_snowball"] = "Sneeuwbal",
+ ["weapon_stickybomb"] = "Kleefbom",
+ ["weapon_smokegrenade"] = "Traangas",
+
+ -- Special
+ ["weapon_firebluser"] = "Brandblusser",
+ ["weapon_digiscanner"] = "Digitale scanner",
+ ["weapon_garbagebag"] = "Vuilniszak",
+ ["weapon_handcuffs"] = "Handboeien",
+ ["gadget_nightvision"] = "Nachtzicht",
+ ["gadget_parachute"] = "parachute",
+
+ -- Weapon Components
+ ["component_knuckle_base"] = "basismodel",
+ ["component_knuckle_pimp"] = "de pooier",
+ ["component_knuckle_ballas"] = "de ballen",
+ ["component_knuckle_dollar"] = "de Hustler",
+ ["component_knuckle_diamond"] = "de rots",
+ ["component_knuckle_hate"] = "de Hater",
+ ["component_knuckle_love"] = "de minnaar",
+ ["component_knuckle_player"] = "de speler",
+ ["component_knuckle_king"] = "de koning",
+ ["component_knuckle_vagos"] = "de Vagos",
+
+ ["component_luxary_finish"] = "luxe wapenafwerking",
+
+ ["component_handle_default"] = "standaard handvat",
+ ["component_handle_vip"] = "VIP-handvat",
+ ["component_handle_bodyguard"] = "bodyguard-handvat",
+
+ ["component_vip_finish"] = "VIP Finish",
+ ["component_bodyguard_finish"] = "bodyguard Finish",
+
+ ["component_camo_finish"] = "digitale camouflage",
+ ["component_camo_finish2"] = "penseelstreek camouflage",
+ ["component_camo_finish3"] = "bos camouflage",
+ ["component_camo_finish4"] = "schedel camouflage",
+ ["component_camo_finish5"] = "sessanta Nove camouflage",
+ ["component_camo_finish6"] = "perseus camouflage",
+ ["component_camo_finish7"] = "luipaard camouflage",
+ ["component_camo_finish8"] = "zebracamouflage",
+ ["component_camo_finish9"] = "geometrische camouflage",
+ ["component_camo_finish10"] = "boom camouflage",
+ ["component_camo_finish11"] = "patriottische camouflage",
+
+ ["component_camo_slide_finish"] = "digitale diacamouflage",
+ ["component_camo_slide_finish2"] = "penseelstreek Dia Camo",
+ ["component_camo_slide_finish3"] = "bos Slide camouflage",
+ ["component_camo_slide_finish4"] = "schedelschuifcamouflage",
+ ["component_camo_slide_finish5"] = "sessanta Nove Dia camouflage",
+ ["component_camo_slide_finish6"] = "perseus diacamouflage",
+ ["component_camo_slide_finish7"] = "luipaard Slide camouflage",
+ ["component_camo_slide_finish8"] = "zebra Slide camouflage",
+ ["component_camo_slide_finish9"] = "geometrische diacamouflage",
+ ["component_camo_slide_finish10"] = "boom Slide camouflage",
+ ["component_camo_slide_finish11"] = "patriottische diacamouflage",
+
+ ["component_clip_default"] = "standaard magazijn",
+ ["component_clip_extended"] = "uitgebreid magazijn",
+ ["component_clip_drum"] = "drum magazijn",
+ ["component_clip_box"] = "box magazijn",
+
+ ["component_scope_holo"] = "holografisch bereik",
+ ["component_scope_small"] = "klein bereik",
+ ["component_scope_medium"] = "gemiddeld bereik",
+ ["component_scope_large"] = "groot bereik",
+ ["component_scope"] = "gemonteerde scope",
+ ["component_scope_advanced"] = "geavanceerd bereik",
+ ["component_ironsights"] = "ironsights",
+
+ ["component_suppressor"] = "suppressor",
+ ["component_compensator"] = "compensator",
+
+ ["component_muzzle_flat"] = "platte mondingsrem",
+ ["component_muzzle_tactical"] = "tactische mondingsrem",
+ ["component_muzzle_fat"] = "fat-end mondingsrem",
+ ["component_muzzle_precision"] = "precisie mondingsrem",
+ ["component_muzzle_heavy"] = "zware mondingsrem",
+ ["component_muzzle_slanted"] = "schuine mondingsrem",
+ ["component_muzzle_split"] = "gespleten mondingsrem",
+ ["component_muzzle_squared"] = "kwadraat mondingsrem",
+
+ ["component_flashlight"] = "zaklamp",
+ ["component_grip"] = "grip",
+
+ ["component_barrel_default"] = "standaard handvat",
+ ["component_barrel_heavy"] = "zware handvat",
+
+ ["component_ammo_tracer"] = "tracermunitie",
+ ["component_ammo_incendiary"] = "brandgevaarlijke munitie",
+ ["component_ammo_hollowpoint"] = "hollowpoint munitie",
+ ["component_ammo_fmj"] = "fMJ-munitie",
+ ["component_ammo_armor"] = "pantser piercing munitie",
+ ["component_ammo_explosive"] = "pantserpiercing brandgevaarlijke munitie",
+
+ ["component_shells_default"] = "standaard shells",
+ ["component_shells_incendiary"] = "draken ademschelpen",
+ ["component_shells_armor"] = "stalen Buckshot Shells",
+ ["component_shells_hollowpoint"] = "flechette schelpen",
+ ["component_shells_explosive"] = "explosieve slakkenhuizen",
+
+ -- Weapon Ammo
+ ["ammo_rounds"] = "ronde(n)",
+ ["ammo_shells"] = "huls/(zen)",
+ ["ammo_charge"] = "charge",
+ ["ammo_petrol"] = "liters brandstof",
+ ["ammo_firework"] = "vuurwerkpijl(en)",
+ ["ammo_rockets"] = "raket(ten)",
+ ["ammo_grenadelauncher"] = "granaat(en)",
+ ["ammo_grenade"] = "granaat(en)",
+ ["ammo_stickybomb"] = "bom(men)",
+ ["ammo_pipebomb"] = "bom(men)",
+ ["ammo_smokebomb"] = "bom(men)",
+ ["ammo_molotov"] = "cocktail(s)",
+ ["ammo_proxmine"] = "mijn(en)",
+ ["ammo_bzgas"] = "blik(ken)",
+ ["ammo_ball"] = "bal(len)",
+ ["ammo_snowball"] = "sneeuwbal(len)",
+ ["ammo_flare"] = "flare(s)",
+ ["ammo_flaregun"] = "flare(s)",
+
+ -- Weapon Tints
+ ["tint_default"] = "standaard skin",
+ ["tint_green"] = "groene skin",
+ ["tint_gold"] = "goude skin",
+ ["tint_pink"] = "roze skin",
+ ["tint_army"] = "legerprint",
+ ["tint_lspd"] = "blauwe skin",
+ ["tint_orange"] = "oranje skin",
+ ["tint_platinum"] = "platina skin",
+}
diff --git a/server-data/resources/[esx]/es_extended/locales/pl.lua b/server-data/resources/[esx]/es_extended/locales/pl.lua
new file mode 100644
index 000000000..d50f91eb7
--- /dev/null
+++ b/server-data/resources/[esx]/es_extended/locales/pl.lua
@@ -0,0 +1,239 @@
+Locales["pl"] = {
+ -- Inventory
+ ["inventory"] = "ekwipunek %s / %s",
+ ["use"] = "użyj",
+ ["give"] = "daj",
+ ["remove"] = "usuń",
+ ["return"] = "wróć",
+ ["give_to"] = "daj dla",
+ ["amount"] = "ilość",
+ ["giveammo"] = "daj amunicje",
+ ["amountammo"] = "ilość amunicji",
+ ["noammo"] = "nie posiadasz wystarczającej ilości amunicji!",
+ ["gave_item"] = "dałeś/aś %sx %s dla %s",
+ ["received_item"] = "otrzymałeś/aś %sx %s od %s",
+ ["gave_weapon"] = "dałeś/aś %s dla %s",
+ ["gave_weapon_ammo"] = "dałeś/aś ~o~%sx %s do %s dla %s",
+ ["gave_weapon_withammo"] = "dałeś/aś %s z ~o~%sx %s dla %s",
+ ["gave_weapon_hasalready"] = "%s już posiada %s",
+ ["gave_weapon_noweapon"] = "%s nie posiada tej broni",
+ ["received_weapon"] = "otrzymałeś/aś %s od %s",
+ ["received_weapon_ammo"] = "otrzymałeś/aś ~o~%sx %s do twojego %s od %s",
+ ["received_weapon_withammo"] = "otrzymałeś/aś %s z ~o~%sx %s od %s",
+ ["received_weapon_hasalready"] = "%s próbował/a przekazać ci %s, lecz już posiadasz jedno",
+ ["received_weapon_noweapon"] = "%s próbował/a przekazać ci amunicje do %s, lecz nie posiadasz tej broni",
+ ["gave_account_money"] = "dałeś/aś %s$ (%s) dla %s",
+ ["received_account_money"] = "otrzymałeś/aś %s$ (%s) od %s",
+ ["amount_invalid"] = "nieprawidłowa ilość",
+ ["players_nearby"] = "brak graczy w pobliżu",
+ ["ex_inv_lim"] = "akcja nie jest możliwa, nie możesz mieć więcej %s",
+ ["imp_invalid_quantity"] = "akcja jest niemożliwa, nieprawidłowa ilość",
+ ["imp_invalid_amount"] = "akcja jest niemożliwa, nieprawidłowa kwota",
+ ["threw_standard"] = "wyrzuciłeś/aś %sx %s",
+ ["threw_account"] = "wyrzuciłeś/aś $%s %s",
+ ["threw_weapon"] = "wyrzuciłeś/aś %s",
+ ["threw_weapon_ammo"] = "wyrzuciłeś/aś %s z ~o~%sx %s",
+ ["threw_weapon_already"] = "już posiadasz taką samą broń",
+ ["threw_cannot_pickup"] = "nie możesz tego podnieść, gdyż masz pełny ekwipunek!",
+ ["threw_pickup_prompt"] = "naciśnij E aby podnieść",
+
+ -- Key mapping
+ ["keymap_showinventory"] = "pokaż ekwipunek",
+
+ -- Salary related
+ ["received_salary"] = "otrzymałeś/aś wynagrodzenie: %s$",
+ ["received_help"] = "otrzymałeś/aś zapomogę: $%s",
+ ["company_nomoney"] = "firma, w której pracujesz, jest zbyt biedna, by wypłacić twoją pensję",
+ ["received_paycheck"] = "otrzymano wypłate",
+ ["bank"] = "bank",
+ ["account_bank"] = "bank",
+ ["account_black_money"] = "brudne pieniądze",
+ ["account_money"] = "pieniądze",
+ ["act_imp"] = "działanie niemożliwe",
+ ["in_vehicle"] = "nie możesz przekazywać przedmiotów w pojeździe",
+ ["not_in_vehicle"] = "Cannot Perform Action, Player isn't in a vehicle",
+
+ -- Commands
+ ["command_car"] = "przywołaj pojazd",
+ ["command_car_car"] = "nazwa lub hash przywołanego pojazdu",
+ ["command_cardel"] = "usuń pojazd w pobliżu",
+ ["command_cardel_radius"] = "opcjonalnie usuń każdy pojazd w obszarze",
+ ["command_repair"] = "Repair your vehicle",
+ ["command_repair_success"] = "Successfully repaired vehicle",
+ ["command_repair_success_target"] = "An admin repaired your vehicle",
+ ["command_clear"] = "wyczyść czat",
+ ["command_clearall"] = "wyczyść czat dla wszystkich graczy",
+ ["command_clearinventory"] = "wyczyść ekwipunek gracza",
+ ["command_clearloadout"] = "wyczyść wyposarzenie gracza",
+ ["command_giveaccountmoney"] = "daj pieniądze na podany typ konta",
+ ["command_giveaccountmoney_account"] = "prawidłowy typ konta",
+ ["command_giveaccountmoney_amount"] = "ilość do dodania",
+ ["command_giveaccountmoney_invalid"] = "nieprawidłowy typ konta",
+ ["command_giveitem"] = "daj przedmiot graczowi",
+ ["command_giveitem_item"] = "nazwa przedmiotu",
+ ["command_giveitem_count"] = "ilość przedimotu",
+ ["command_giveweapon"] = "daj broń graczowi",
+ ["command_giveweapon_weapon"] = "nazwa broni",
+ ["command_giveweapon_ammo"] = "ilość amunicji",
+ ["command_giveweapon_hasalready"] = "gracz już posiada tą broń",
+ ["command_giveweaponcomponent"] = "daj komponent do broni graczowi",
+ ["command_giveweaponcomponent_component"] = "nazwa komponentu",
+ ["command_giveweaponcomponent_invalid"] = "nieprawidłowy komponent do broni",
+ ["command_giveweaponcomponent_hasalready"] = "gracz już posiada ten komponent do tej broni",
+ ["command_giveweaponcomponent_missingweapon"] = "gracz nie posiada tej broni",
+ ["command_save"] = "zapisz gracza w bazie danych",
+ ["command_saveall"] = "zapisz wszystkich graczy w bazie danych",
+ ["command_setaccountmoney"] = "ustaw ilość pieniędzy danego konta dla gracza",
+ ["command_setaccountmoney_amount"] = "ilość pieniędzy do ustawienia",
+ ["command_setcoords"] = "teleportuj na koordynaty",
+ ["command_setcoords_x"] = "x axis",
+ ["command_setcoords_y"] = "y axis",
+ ["command_setcoords_z"] = "z axis",
+ ["command_setjob"] = "ustaw prace dla gracza",
+ ["command_setjob_job"] = "nazwa pracy",
+ ["command_setjob_grade"] = "stanowisko w pracy",
+ ["command_setjob_invalid"] = "praca, stanowisko lub obydwa są nieprawidłowe",
+ ["command_setgroup"] = "ustaw grupe gracza",
+ ["command_setgroup_group"] = "nazwa grupy",
+ ["commanderror_argumentmismatch"] = "nieprawiłowa ilość argumentów (przeszło %s, wymagane %s)",
+ ["commanderror_argumentmismatch_number"] = "nieprawidłowy typ argumentu #%s (przeszedł tekst, wymagany numer)",
+ ["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
+ ["commanderror_invaliditem"] = "nieprawidłowa nazwa przedmiotu",
+ ["commanderror_invalidweapon"] = "nieprawidłowa broń",
+ ["commanderror_console"] = "podana komenda nie może zostać uruchomiona przez konsole",
+ ["commanderror_invalidcommand"] = "/%s nie jest poprawną komendą!",
+ ["commanderror_invalidplayerid"] = "brak dostepnego gracza pasującego do podanego id serwerowego",
+ ["commandgeneric_playerid"] = "id gracza",
+ ["command_giveammo_noweapon_found"] = "%s does not have that weapon",
+ ["command_giveammo_weapon"] = "Weapon name",
+ ["command_giveammo_ammo"] = "Ammo Quantity",
+
+ -- Locale settings
+ ["locale_digit_grouping_symbol"] = ",",
+ ["locale_currency"] = "$%s",
+
+ -- Weapons
+ ["weapon_knife"] = "nóż",
+ ["weapon_nightstick"] = "pałka",
+ ["weapon_hammer"] = "młotek",
+ ["weapon_bat"] = "kij",
+ ["weapon_golfclub"] = "kij golfowy",
+ ["weapon_crowbar"] = "łom",
+ ["weapon_pistol"] = "pistolet",
+ ["weapon_combatpistol"] = "pistolet bojowy",
+ ["weapon_appistol"] = "ap pistol",
+ ["weapon_pistol50"] = "pistol .50",
+ ["weapon_microsmg"] = "micro smg",
+ ["weapon_smg"] = "smg",
+ ["weapon_assaultsmg"] = "assault smg",
+ ["weapon_assaultrifle"] = "assault rifle",
+ ["weapon_carbinerifle"] = "carbine rifle",
+ ["weapon_advancedrifle"] = "advanced rifle",
+ ["weapon_mg"] = "mg",
+ ["weapon_combatmg"] = "combat mg",
+ ["weapon_pumpshotgun"] = "pump shotgun",
+ ["weapon_sawnoffshotgun"] = "sawed off shotgun",
+ ["weapon_assaultshotgun"] = "assault shotgun",
+ ["weapon_bullpupshotgun"] = "bullpup shotgun",
+ ["weapon_stungun"] = "tazer",
+ ["weapon_sniperrifle"] = "karabin snajperski",
+ ["weapon_heavysniper"] = "ciężki karabin snajperski",
+ ["weapon_grenadelauncher"] = "granatnik",
+ ["weapon_rpg"] = "wyrzutnia rakiet",
+ ["weapon_minigun"] = "minigun",
+ ["weapon_grenade"] = "granat",
+ ["weapon_stickybomb"] = "ładunek przylepny",
+ ["weapon_smokegrenade"] = "granat dymny",
+ ["weapon_bzgas"] = "bz gas",
+ ["weapon_molotov"] = "koktajl Mołotowa",
+ ["weapon_fireextinguisher"] = "gaśnica",
+ ["weapon_petrolcan"] = "kanister",
+ ["weapon_ball"] = "piłka",
+ ["weapon_snspistol"] = "sns pistolet",
+ ["weapon_bottle"] = "butelka",
+ ["weapon_gusenberg"] = "gusenberg sweeper",
+ ["weapon_specialcarbine"] = "special carbine",
+ ["weapon_heavypistol"] = "heavy pistol",
+ ["weapon_bullpuprifle"] = "karabin wyborowy",
+ ["weapon_dagger"] = "sztylet",
+ ["weapon_vintagepistol"] = "vintage pistol",
+ ["weapon_firework"] = "fajerwerki",
+ ["weapon_musket"] = "muszkiet",
+ ["weapon_heavyshotgun"] = "ciężki shotgun",
+ ["weapon_marksmanrifle"] = "marksman rifle",
+ ["weapon_hominglauncher"] = "program uruchamiający",
+ ["weapon_proxmine"] = "mina zbliżeniowa",
+ ["weapon_snowball"] = "śnieżka",
+ ["weapon_flaregun"] = "flara",
+ ["weapon_combatpdw"] = "combat pdw",
+ ["weapon_marksmanpistol"] = "marksman pistol",
+ ["weapon_knuckle"] = "kastety",
+ ["weapon_hatchet"] = "toporek",
+ ["weapon_railgun"] = "karabin",
+ ["weapon_machete"] = "meczeta",
+ ["weapon_machinepistol"] = "pistolet maszynowy",
+ ["weapon_switchblade"] = "scyzoryk",
+ ["weapon_revolver"] = "ciężki rewolwer",
+ ["weapon_dbshotgun"] = "dwururka",
+ ["weapon_compactrifle"] = "compact rifle",
+ ["weapon_autoshotgun"] = "auto shotgun",
+ ["weapon_battleaxe"] = "topór bitewny",
+ ["weapon_compactlauncher"] = "compact launcher",
+ ["weapon_minismg"] = "mini smg",
+ ["weapon_pipebomb"] = "bomba rurowa",
+ ["weapon_poolcue"] = "kij bilardowy",
+ ["weapon_wrench"] = "klucz do rur",
+ ["weapon_flashlight"] = "latarka",
+ ["gadget_parachute"] = "spadochron",
+ ["weapon_flare"] = "pistolet sygnałowy",
+ ["weapon_doubleaction"] = "double-Action Revolver",
+ ["weapon_heavyrifle"] = "Heavy Rifle", -- Not Translated
+
+ -- Weapon Components
+ ["component_clip_default"] = "domyślny tłumik",
+ ["component_clip_extended"] = "rozszerzony tłumik",
+ ["component_clip_drum"] = "magazynek bębnowy",
+ ["component_clip_box"] = "magazynek",
+ ["component_flashlight"] = "latarka",
+ ["component_scope"] = "luneta",
+ ["component_scope_advanced"] = "zaawansowana luneta",
+ ["component_suppressor"] = "tłumik",
+ ["component_grip"] = "uchwyt",
+ ["component_luxary_finish"] = "luksusowe wykończenie broni",
+
+ -- Drug Wars DLC
+ ["weapon_candycane"] = "Candy Cane", -- not translated
+ ["weapon_acidpackage"] = "Acid Package", -- not translated
+ ["weapon_pistolxm3"] = "WM 29 Pistol", -- not translated
+ ["weapon_railgunxm3"] = "Railgun", -- not translated
+
+ -- Weapon Ammo
+ ["ammo_rounds"] = "nabój/oi",
+ ["ammo_shells"] = "pocisk(ów)",
+ ["ammo_charge"] = "naładowania",
+ ["ammo_petrol"] = "galon(y) paliwa",
+ ["ammo_firework"] = "fajerwerka/i",
+ ["ammo_rockets"] = "rakieta/y",
+ ["ammo_grenadelauncher"] = "granat(y)",
+ ["ammo_grenade"] = "granat(y)",
+ ["ammo_stickybomb"] = "bomba/y",
+ ["ammo_pipebomb"] = "bomba/y",
+ ["ammo_smokebomb"] = "bomba/y",
+ ["ammo_molotov"] = "kontail(e)",
+ ["ammo_proxmine"] = "mina/y",
+ ["ammo_bzgas"] = "puszka/ek",
+ ["ammo_ball"] = "kula/e",
+ ["ammo_snowball"] = "snieżka/i",
+ ["ammo_flare"] = "flara/y",
+ ["ammo_flaregun"] = "flara/y",
+
+ -- Weapon Tints
+ ["tint_default"] = "domyślny skin",
+ ["tint_green"] = "zielony skin",
+ ["tint_gold"] = "złoty skin",
+ ["tint_pink"] = "różowy skin",
+ ["tint_army"] = "wojskowy skin",
+ ["tint_lspd"] = "niebieski skin",
+ ["tint_orange"] = "pomarańczowy skin",
+ ["tint_platinum"] = "platynowy skin",
+}
diff --git a/server-data/resources/[esx]/es_extended/locales/sl.lua b/server-data/resources/[esx]/es_extended/locales/sl.lua
new file mode 100644
index 000000000..2c3e1f8e8
--- /dev/null
+++ b/server-data/resources/[esx]/es_extended/locales/sl.lua
@@ -0,0 +1,377 @@
+Locales["sl"] = {
+ -- Inventory
+ ["inventory"] = "Shramba ( Teza %s / %s )",
+ ["use"] = "Uporabi",
+ ["give"] = "Daj",
+ ["remove"] = "Vrzi",
+ ["return"] = "Povratek",
+ ["give_to"] = "Daj",
+ ["amount"] = "Vsota",
+ ["giveammo"] = "Daj Strelivo",
+ ["amountammo"] = "Količina streliva",
+ ["noammo"] = "Ni dovolj!",
+ ["gave_item"] = "Dal si %sx %s k %s",
+ ["received_item"] = "Dobil si %sx %s od %s",
+ ["gave_weapon"] = "Dajanje %s do %s",
+ ["gave_weapon_ammo"] = "Dajanje ~o~%sx %s za %s do %s",
+ ["gave_weapon_withammo"] = "Dajanje %s z ~o~%sx %s do %s",
+ ["gave_weapon_hasalready"] = "%s ze ima %s",
+ ["gave_weapon_noweapon"] = "%s se nima tega orozja",
+ ["received_weapon"] = "Dobil si %s od %s",
+ ["received_weapon_ammo"] = "Dobil ~o~%sx %s za tvoj/o %s od %s",
+ ["received_weapon_withammo"] = "Dobil si %s z ~o~%sx %s od %s",
+ ["received_weapon_hasalready"] = "%s vam je poskušal dati %s, vendar že imate to orožje",
+ ["received_weapon_noweapon"] = "%s vam je poskušal dati strelivo za %s, vendar nimate tega orožja",
+ ["gave_account_money"] = "Dajanje $%s (%s) do %s",
+ ["received_account_money"] = "Dobil $%s (%s) od %s",
+ ["amount_invalid"] = "Neveljavna količina",
+ ["players_nearby"] = "V blizini ni ljudi",
+ ["ex_inv_lim"] = "Dejanja ni mogoče izvesti, saj presega največjo težo %s",
+ ["imp_invalid_quantity"] = "Dejanja ni mogoče izvesti, količina je neveljavna",
+ ["imp_invalid_amount"] = "Dejanja ni mogoče izvesti, znesek je neveljaven",
+ ["threw_standard"] = "Metanje %sx %s",
+ ["threw_account"] = "Metanje $%s %s",
+ ["threw_weapon"] = "Metanje %s",
+ ["threw_weapon_ammo"] = "Metanje %s z ~o~%sx %s",
+ ["threw_weapon_already"] = "Ti ze imas to orozje",
+ ["threw_cannot_pickup"] = "Shramba je poln, nemorem pobrati!",
+ ["threw_pickup_prompt"] = "Pritisni E da poberes",
+
+ -- Key mapping
+ ["keymap_showinventory"] = "Pokazi Shrambo",
+
+ -- Salary related
+ ["received_salary"] = "Vi ste plačali: $%s",
+ ["received_help"] = "Vi ste placali svoj CEK v vrednosti: $%s",
+ ["company_nomoney"] = "podjetje, v katerem ste zaposleni, je prerevno, da bi vam izplačevalo plačo",
+ ["received_paycheck"] = "Prejel si Placilo",
+ ["bank"] = "NLB",
+ ["account_bank"] = "Banka",
+ ["account_black_money"] = "Umazan Denar",
+ ["account_money"] = "Denar",
+
+ ["act_imp"] = "Dejanja ni mogoče izvesti",
+ ["in_vehicle"] = "Dejanja ni mogoče izvesti, Oseba je v vozilu",
+ ["not_in_vehicle"] = "Cannot Perform Action, Player isn't in a vehicle",
+
+ -- Commands
+ ["command_bring"] = "Teleportiraj osebo do sebe",
+ ["command_car"] = "Spawnaj si vozilo",
+ ["command_car_car"] = "Koda vozila",
+ ["command_cardel"] = "Odstranite vozila v bližini",
+ ["command_cardel_radius"] = "Odstrani vsa vozila v določenem radiju",
+ ["command_repair"] = "Repair your vehicle",
+ ["command_repair_success"] = "Successfully repaired vehicle",
+ ["command_repair_success_target"] = "An admin repaired your vehicle",
+ ["command_clear"] = "Odstrani vsa sporocila v CHATU",
+ ["command_clearall"] = "Počisti besedilo klepeta za vse igralce",
+ ["command_clearinventory"] = "Vzemi vse stvari iz osebove shrambe",
+ ["command_clearloadout"] = "Odstranite vse orožje iz nalaganja igralcev",
+ ["command_freeze"] = "Zmrzni osebno",
+ ["command_unfreeze"] = "Odmrzni osebo",
+ ["command_giveaccountmoney"] = "Poslji denar na dolocen Bancni racun",
+ ["command_giveaccountmoney_account"] = "Račun za dodajanje",
+ ["command_giveaccountmoney_amount"] = "Znesek za dodajanje",
+ ["command_giveaccountmoney_invalid"] = "Ime računa je neveljavno",
+ ["command_giveitem"] = "Daj osebi neko stvar",
+ ["command_giveitem_item"] = "Ime Stvari",
+ ["command_giveitem_count"] = "Kolicina",
+ ["command_giveweapon"] = "Daj osebi orozje",
+ ["command_giveweapon_weapon"] = "Ime orozja",
+ ["command_giveweapon_ammo"] = "Kolicina",
+ ["command_giveweapon_hasalready"] = "Oseba ze ima to orozje!",
+ ["command_giveweaponcomponent"] = "Daj komponento orožja igralcu",
+ ["command_giveweaponcomponent_component"] = "Ime Komponente",
+ ["command_giveweaponcomponent_invalid"] = "Neveljavna komponenta orožja",
+ ["command_giveweaponcomponent_hasalready"] = "Oseba ze ima to komponento",
+ ["command_giveweaponcomponent_missingweapon"] = "Oseba nima tega orozja!",
+ ["command_goto"] = "Teleportirajte se k igralcu",
+ ["command_kill"] = "Ubij igralca",
+ ["command_save"] = "Prisilno shrani podatke igralca!",
+ ["command_saveall"] = "Prisilno shrani vse podatke igralca",
+ ["command_setaccountmoney"] = "Nastavite denar znotraj dolocenega racuna",
+ ["command_setaccountmoney_amount"] = "Znesek",
+ ["command_setcoords"] = "Teleport na dolocene koordinate",
+ ["command_setcoords_x"] = "Vrednost X",
+ ["command_setcoords_y"] = "Vrednost Y",
+ ["command_setcoords_z"] = "Z vrednost",
+ ["command_setjob"] = "Nastavi opravilo igralca",
+ ["command_setjob_job"] = "Ime",
+ ["command_setjob_grade"] = "Delovna ocena",
+ ["command_setjob_invalid"] = "delovno mesto, ocena ali oboje ni veljavno",
+ ["command_setgroup"] = "Nastavi skupino dovoljenj igralcev",
+ ["command_setgroup_group"] = "Ime skupine",
+ ["commanderror_argumentmismatch"] = "Neveljavno stetje argumentov (podano %s, zeleno %s)",
+ ["commanderror_argumentmismatch_number"] = "Neveljaven podatkovni tip argumenta #%s (posredovan niz, zeleno stevilo)",
+ ["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
+ ["commanderror_invaliditem"] = "Neveljaven element",
+ ["commanderror_invalidweapon"] = "Neveljavno orozje",
+ ["commanderror_console"] = "Ukaza ni mogoce izvesti s konzole",
+ ["commanderror_invalidcommand"] = "Neveljaven ukaz - /%s",
+ ["commanderror_invalidplayerid"] = "Naveden igralec ni na spletu",
+ ["commandgeneric_playerid"] = "Id streznika igralca",
+ ["command_giveammo_noweapon_found"] = "%s nima tega orozja",
+ ["command_giveammo_weapon"] = "Ime orozja",
+ ["command_giveammo_ammo"] = "Kolicina streliva",
+ ["tpm_nowaypoint"] = "Ni nastavljene poti!.",
+ ["tpm_success"] = "Uspesno teleportiran",
+
+ ["noclip_message"] = "Noclip je bil %s",
+ ["enabled"] = "~g~Vkljucen~s~",
+ ["disabled"] = "~r~Izkljucen~s~",
+
+ -- Locale settings
+ ["locale_digit_grouping_symbol"] = ",",
+ ["locale_currency"] = "€%s",
+
+ -- Weapons
+
+ -- Melee
+ ["weapon_dagger"] = "Dagger",
+ ["weapon_bat"] = "Bat",
+ ["weapon_battleaxe"] = "Battle Axe",
+ ["weapon_bottle"] = "Bottle",
+ ["weapon_crowbar"] = "Crowbar",
+ ["weapon_flashlight"] = "Flashlight",
+ ["weapon_golfclub"] = "Golf Club",
+ ["weapon_hammer"] = "Hammer",
+ ["weapon_hatchet"] = "Hatchet",
+ ["weapon_knife"] = "Knife",
+ ["weapon_knuckle"] = "Knuckledusters",
+ ["weapon_machete"] = "Machete",
+ ["weapon_nightstick"] = "Nightstick",
+ ["weapon_wrench"] = "Pipe Wrench",
+ ["weapon_poolcue"] = "Pool Cue",
+ ["weapon_stone_hatchet"] = "Stone Hatchet",
+ ["weapon_switchblade"] = "Switchblade",
+
+ -- Handguns
+ ["weapon_appistol"] = "AP Pistol",
+ ["weapon_ceramicpistol"] = "Ceramic Pistol",
+ ["weapon_combatpistol"] = "Combat Pistol",
+ ["weapon_doubleaction"] = "Double-Action Revolver",
+ ["weapon_navyrevolver"] = "Navy Revolver",
+ ["weapon_flaregun"] = "Flaregun",
+ ["weapon_gadgetpistol"] = "Gadget Pistol",
+ ["weapon_heavypistol"] = "Heavy Pistol",
+ ["weapon_revolver"] = "Heavy Revolver",
+ ["weapon_revolver_mk2"] = "Heavy Revolver MK2",
+ ["weapon_marksmanpistol"] = "Marksman Pistol",
+ ["weapon_pistol"] = "Pistol",
+ ["weapon_pistol_mk2"] = "Pistol MK2",
+ ["weapon_pistol50"] = "Pistol .50",
+ ["weapon_snspistol"] = "SNS Pistol",
+ ["weapon_snspistol_mk2"] = "SNS Pistol MK2",
+ ["weapon_stungun"] = "Taser",
+ ["weapon_raypistol"] = "Up-N-Atomizer",
+ ["weapon_vintagepistol"] = "Vintage Pistol",
+
+ -- Shotguns
+ ["weapon_assaultshotgun"] = "Assault Shotgun",
+ ["weapon_autoshotgun"] = "Auto Shotgun",
+ ["weapon_bullpupshotgun"] = "Bullpup Shotgun",
+ ["weapon_combatshotgun"] = "Combat Shotgun",
+ ["weapon_dbshotgun"] = "Double Barrel Shotgun",
+ ["weapon_heavyshotgun"] = "Heavy Shotgun",
+ ["weapon_musket"] = "Musket",
+ ["weapon_pumpshotgun"] = "Pump Shotgun",
+ ["weapon_pumpshotgun_mk2"] = "Pump Shotgun MK2",
+ ["weapon_sawnoffshotgun"] = "Sawed Off Shotgun",
+
+ -- SMG & LMG
+ ["weapon_assaultsmg"] = "Assault SMG",
+ ["weapon_combatmg"] = "Combat MG",
+ ["weapon_combatmg_mk2"] = "Combat MG MK2",
+ ["weapon_combatpdw"] = "Combat PDW",
+ ["weapon_gusenberg"] = "Gusenberg Sweeper",
+ ["weapon_machinepistol"] = "Machine Pistol",
+ ["weapon_mg"] = "MG",
+ ["weapon_microsmg"] = "Micro SMG",
+ ["weapon_minismg"] = "Mini SMG",
+ ["weapon_smg"] = "SMG",
+ ["weapon_smg_mk2"] = "SMG MK2",
+ ["weapon_raycarbine"] = "Unholy Hellbringer",
+
+ -- Rifles
+ ["weapon_advancedrifle"] = "Advanced Rifle",
+ ["weapon_assaultrifle"] = "Assault Rifle",
+ ["weapon_assaultrifle_mk2"] = "Assault Rifle MK2",
+ ["weapon_bullpuprifle"] = "Bullpup Rifle",
+ ["weapon_bullpuprifle_mk2"] = "Bullpup Rifle MK2",
+ ["weapon_carbinerifle"] = "Carbine Rifle",
+ ["weapon_carbinerifle_mk2"] = "Carbine Rifle MK2",
+ ["weapon_compactrifle"] = "Compact Rifle",
+ ["weapon_militaryrifle"] = "Military Rifle",
+ ["weapon_specialcarbine"] = "Special Carbine",
+ ["weapon_specialcarbine_mk2"] = "Special Carbine MK2",
+ ["weapon_heavyrifle"] = "Heavy Rifle", -- Not Translated
+
+ -- Sniper
+ ["weapon_heavysniper"] = "Heavy Sniper",
+ ["weapon_heavysniper_mk2"] = "Heavy Sniper MK2",
+ ["weapon_marksmanrifle"] = "Marksman Rifle",
+ ["weapon_marksmanrifle_mk2"] = "Marksman Rifle MK2",
+ ["weapon_sniperrifle"] = "Sniper Rifle",
+
+ -- Heavy / Launchers
+ ["weapon_compactlauncher"] = "Compact Launcher",
+ ["weapon_firework"] = "Firework Launcher",
+ ["weapon_grenadelauncher"] = "Grenade Launcher",
+ ["weapon_hominglauncher"] = "Homing Launcher",
+ ["weapon_minigun"] = "Minigun",
+ ["weapon_railgun"] = "Railgun",
+ ["weapon_rpg"] = "Rocket Launcher",
+ ["weapon_rayminigun"] = "Widowmaker",
+
+ -- Criminal Enterprises DLC
+ ["weapon_metaldetector"] = "Metal Detector",
+ ["weapon_precisionrifle"] = "Precision Rifle",
+ ["weapon_tactilerifle"] = "Service Carbine",
+
+ -- Drug Wars DLC
+ ["weapon_candycane"] = "Candy Cane", -- not translated
+ ["weapon_acidpackage"] = "Acid Package", -- not translated
+ ["weapon_pistolxm3"] = "WM 29 Pistol", -- not translated
+ ["weapon_railgunxm3"] = "Railgun", -- not translated
+
+ -- Thrown
+ ["weapon_ball"] = "Baseball",
+ ["weapon_bzgas"] = "BZ Gas",
+ ["weapon_flare"] = "Flare",
+ ["weapon_grenade"] = "Grenade",
+ ["weapon_petrolcan"] = "Jerrycan",
+ ["weapon_hazardcan"] = "Hazardous Jerrycan",
+ ["weapon_molotov"] = "Molotov Cocktail",
+ ["weapon_proxmine"] = "Proximity Mine",
+ ["weapon_pipebomb"] = "Pipe Bomb",
+ ["weapon_snowball"] = "Snowball",
+ ["weapon_stickybomb"] = "Sticky Bomb",
+ ["weapon_smokegrenade"] = "Tear Gas",
+
+ -- Special
+ ["weapon_fireextinguisher"] = "Fire Extinguisher",
+ ["weapon_digiscanner"] = "Digital Scanner",
+ ["weapon_garbagebag"] = "Garbage Bag",
+ ["weapon_handcuffs"] = "Handcuffs",
+ ["gadget_nightvision"] = "Night Vision",
+ ["gadget_parachute"] = "parachute",
+
+ -- Weapon Components
+ ["component_knuckle_base"] = "base Model",
+ ["component_knuckle_pimp"] = "the Pimp",
+ ["component_knuckle_ballas"] = "the Ballas",
+ ["component_knuckle_dollar"] = "the Hustler",
+ ["component_knuckle_diamond"] = "the Rock",
+ ["component_knuckle_hate"] = "the Hater",
+ ["component_knuckle_love"] = "the Lover",
+ ["component_knuckle_player"] = "the Player",
+ ["component_knuckle_king"] = "the King",
+ ["component_knuckle_vagos"] = "the Vagos",
+
+ ["component_luxary_finish"] = "luxary Weapon Finish",
+
+ ["component_handle_default"] = "default Handle",
+ ["component_handle_vip"] = "vIP Handle",
+ ["component_handle_bodyguard"] = "bodyguard Handle",
+
+ ["component_vip_finish"] = "vIP Finish",
+ ["component_bodyguard_finish"] = "bodyguard Finish",
+
+ ["component_camo_finish"] = "digital Camo",
+ ["component_camo_finish2"] = "brushstroke Camo",
+ ["component_camo_finish3"] = "woodland Camo",
+ ["component_camo_finish4"] = "skull Camo",
+ ["component_camo_finish5"] = "sessanta Nove Camo",
+ ["component_camo_finish6"] = "perseus Camo",
+ ["component_camo_finish7"] = "leopard Camo",
+ ["component_camo_finish8"] = "zebra Camo",
+ ["component_camo_finish9"] = "geometric Camo",
+ ["component_camo_finish10"] = "boom Camo",
+ ["component_camo_finish11"] = "patriotic Camo",
+
+ ["component_camo_slide_finish"] = "digital Slide Camo",
+ ["component_camo_slide_finish2"] = "brushstroke Slide Camo",
+ ["component_camo_slide_finish3"] = "woodland Slide Camo",
+ ["component_camo_slide_finish4"] = "skull Slide Camo",
+ ["component_camo_slide_finish5"] = "sessanta Nove Slide Camo",
+ ["component_camo_slide_finish6"] = "perseus Slide Camo",
+ ["component_camo_slide_finish7"] = "leopard Slide Camo",
+ ["component_camo_slide_finish8"] = "zebra Slide Camo",
+ ["component_camo_slide_finish9"] = "geometric Slide Camo",
+ ["component_camo_slide_finish10"] = "boom Slide Camo",
+ ["component_camo_slide_finish11"] = "patriotic Slide Camo",
+
+ ["component_clip_default"] = "default Magazine",
+ ["component_clip_extended"] = "extended Magazine",
+ ["component_clip_drum"] = "drum Magazine",
+ ["component_clip_box"] = "box Magazine",
+
+ ["component_scope_holo"] = "holographic Scope",
+ ["component_scope_small"] = "small Scope",
+ ["component_scope_medium"] = "medium Scope",
+ ["component_scope_large"] = "large Scope",
+ ["component_scope"] = "mounted Scope",
+ ["component_scope_advanced"] = "advanced Scope",
+ ["component_ironsights"] = "ironsights",
+
+ ["component_suppressor"] = "suppressor",
+ ["component_compensator"] = "compensator",
+
+ ["component_muzzle_flat"] = "flat Muzzle Brake",
+ ["component_muzzle_tactical"] = "tactical Muzzle Brake",
+ ["component_muzzle_fat"] = "fat-End Muzzle Brake",
+ ["component_muzzle_precision"] = "precision Muzzle Brake",
+ ["component_muzzle_heavy"] = "heavy Duty Muzzle Brake",
+ ["component_muzzle_slanted"] = "slanted Muzzle Brake",
+ ["component_muzzle_split"] = "split-End Muzzle Brake",
+ ["component_muzzle_squared"] = "squared Muzzle Brake",
+
+ ["component_flashlight"] = "flashlight",
+ ["component_grip"] = "grip",
+
+ ["component_barrel_default"] = "default Barrel",
+ ["component_barrel_heavy"] = "heavy Barrel",
+
+ ["component_ammo_tracer"] = "tracer Ammo",
+ ["component_ammo_incendiary"] = "incendiary Ammo",
+ ["component_ammo_hollowpoint"] = "hollowpoint Ammo",
+ ["component_ammo_fmj"] = "fMJ Ammo",
+ ["component_ammo_armor"] = "armor Piercing Ammo",
+ ["component_ammo_explosive"] = "armor Piercing Incendiary Ammo",
+
+ ["component_shells_default"] = "default Shells",
+ ["component_shells_incendiary"] = "dragons Breath Shells",
+ ["component_shells_armor"] = "steel Buckshot Shells",
+ ["component_shells_hollowpoint"] = "flechette Shells",
+ ["component_shells_explosive"] = "explosive Slug Shells",
+
+ -- Weapon Ammo
+ ["ammo_rounds"] = "round(s)",
+ ["ammo_shells"] = "shell(s)",
+ ["ammo_charge"] = "charge",
+ ["ammo_petrol"] = "gallons of fuel",
+ ["ammo_firework"] = "firework(s)",
+ ["ammo_rockets"] = "rocket(s)",
+ ["ammo_grenadelauncher"] = "grenade(s)",
+ ["ammo_grenade"] = "grenade(s)",
+ ["ammo_stickybomb"] = "bomb(s)",
+ ["ammo_pipebomb"] = "bomb(s)",
+ ["ammo_smokebomb"] = "bomb(s)",
+ ["ammo_molotov"] = "cocktail(s)",
+ ["ammo_proxmine"] = "mine(s)",
+ ["ammo_bzgas"] = "can(s)",
+ ["ammo_ball"] = "ball(s)",
+ ["ammo_snowball"] = "snowball(s)",
+ ["ammo_flare"] = "flare(s)",
+ ["ammo_flaregun"] = "flare(s)",
+
+ -- Weapon Tints
+ ["tint_default"] = "default skin",
+ ["tint_green"] = "green skin",
+ ["tint_gold"] = "gold skin",
+ ["tint_pink"] = "pink skin",
+ ["tint_army"] = "army skin",
+ ["tint_lspd"] = "blue skin",
+ ["tint_orange"] = "orange skin",
+ ["tint_platinum"] = "platinum skin",
+}
diff --git a/server-data/resources/[esx]/es_extended/locales/sr.lua b/server-data/resources/[esx]/es_extended/locales/sr.lua
new file mode 100644
index 000000000..6aefa25bc
--- /dev/null
+++ b/server-data/resources/[esx]/es_extended/locales/sr.lua
@@ -0,0 +1,377 @@
+Locales["sr"] = {
+ -- Inventory
+ ["inventory"] = "Inventar ( Težina %s / %s )",
+ ["use"] = "Koristi",
+ ["give"] = "Daj",
+ ["remove"] = "Baci",
+ ["return"] = "Nazad",
+ ["give_to"] = "Daj",
+ ["amount"] = "Količina",
+ ["giveammo"] = "Daj municiju",
+ ["amountammo"] = "Količina municije",
+ ["noammo"] = "Nemate dovoljno!",
+ ["gave_item"] = "Davanje %sx %s igraču %s",
+ ["received_item"] = "Dobijeno %sx %s od %s",
+ ["gave_weapon"] = "Davanje %s igraču %s",
+ ["gave_weapon_ammo"] = "Davanje ~o~%sx %s za %s igraču %s",
+ ["gave_weapon_withammo"] = "Davanje %s sa ~o~%sx %s igraču %s",
+ ["gave_weapon_hasalready"] = "%s već ima %s",
+ ["gave_weapon_noweapon"] = "%s nema to oružje",
+ ["received_weapon"] = "Dobijeno %s od %s",
+ ["received_weapon_ammo"] = "Dobijeno ~o~%sx %s za vaš %s od %s",
+ ["received_weapon_withammo"] = "Dobijeno %s sa ~o~%sx %s od %s",
+ ["received_weapon_hasalready"] = "%s je pokušao da Vam da %s, ali vi već imate to oružje",
+ ["received_weapon_noweapon"] = "%s je pokušao da Vam da municiju za %s, ali vi nemate to oružje",
+ ["gave_account_money"] = "Davanje $%s (%s) igraču %s",
+ ["received_account_money"] = "Dobijeno $%s (%s) od %s",
+ ["amount_invalid"] = "Nevažeća količina",
+ ["players_nearby"] = "Nema igrača u blizini",
+ ["ex_inv_lim"] = "Ne možete uraditi to, premašuje max težinu od %s",
+ ["imp_invalid_quantity"] = "Nevažeća količina",
+ ["imp_invalid_amount"] = "Nevažeći iznos",
+ ["threw_standard"] = "Bacanje %sx %s",
+ ["threw_account"] = "Bacanje $%s %s",
+ ["threw_weapon"] = "Bacanje %s",
+ ["threw_weapon_ammo"] = "Bacanje %s sa ~o~%sx %s",
+ ["threw_weapon_already"] = "Vi već imate to oružje",
+ ["threw_cannot_pickup"] = "Inventar je pun, ne možete pokupiti to!",
+ ["threw_pickup_prompt"] = "Pritisni E da pokupiš",
+
+ -- Key mapping
+ ["keymap_showinventory"] = "Otvaranje inventara",
+
+ -- Salary related
+ ["received_salary"] = "Plaćeno Vam je: $%s",
+ ["received_help"] = "Isplaćen Vam je ček: $%s",
+ ["company_nomoney"] = "Kompanija u kojoj ste zapošljeni nema više novca",
+ ["received_paycheck"] = "primili ste platu",
+ ["bank"] = "Maze Banka",
+ ["account_bank"] = "Banka",
+ ["account_black_money"] = "Prljav novac",
+ ["account_money"] = "Novac",
+
+ ["act_imp"] = "Ne možete izvršiti radnju",
+ ["in_vehicle"] = "Ne možete uraditi to dok je igrač u vozilu",
+ ["not_in_vehicle"] = "Cannot Perform Action, Player isn't in a vehicle",
+
+ -- Commands
+ ["command_bring"] = "TP-ajte igrača do Vas",
+ ["command_car"] = "Stvorite vozilo",
+ ["command_car_car"] = "Model ili hash vozila",
+ ["command_cardel"] = "Obrišite vozilo u blizini",
+ ["command_cardel_radius"] = "Obrišite sva vozila unutar navedenog radiusa",
+ ["command_repair"] = "Repair your vehicle",
+ ["command_repair_success"] = "Successfully repaired vehicle",
+ ["command_repair_success_target"] = "An admin repaired your vehicle",
+ ["command_clear"] = "Obrišite chat",
+ ["command_clearall"] = "Obrišite chat za sve igrače",
+ ["command_clearinventory"] = "Obrišite sve stvari iz inventara igrača",
+ ["command_clearloadout"] = "Obrišite sva oružja iz inventara igrača",
+ ["command_freeze"] = "Zaledite igrača",
+ ["command_unfreeze"] = "Odledite igrača",
+ ["command_giveaccountmoney"] = "Dajte novac na odredjeni nalog",
+ ["command_giveaccountmoney_account"] = "Nalog za slanje",
+ ["command_giveaccountmoney_amount"] = "Količina",
+ ["command_giveaccountmoney_invalid"] = "Nalog nepostojeći",
+ ["command_giveitem"] = "Dajte item igraču",
+ ["command_giveitem_item"] = "Ime item-a",
+ ["command_giveitem_count"] = "Količina",
+ ["command_giveweapon"] = "Dajte oružje igraču",
+ ["command_giveweapon_weapon"] = "Ime oružja",
+ ["command_giveweapon_ammo"] = "Količina municije",
+ ["command_giveweapon_hasalready"] = "Igrač već ima to oružje",
+ ["command_giveweaponcomponent"] = "Dajte dodatak za oružje igraču",
+ ["command_giveweaponcomponent_component"] = "Ime dodatka",
+ ["command_giveweaponcomponent_invalid"] = "Nevažeći dodatak",
+ ["command_giveweaponcomponent_hasalready"] = "Igrač već ima taj dodatak",
+ ["command_giveweaponcomponent_missingweapon"] = "Igrač nema oružje",
+ ["command_goto"] = "Idite do igrača",
+ ["command_kill"] = "Ubijte igrača",
+ ["command_save"] = "Forsirajte čuvanje date igrača",
+ ["command_saveall"] = "Forsirajte čuvanje date svih igrača",
+ ["command_setaccountmoney"] = "Postavite novac na određeni račun",
+ ["command_setaccountmoney_amount"] = "Količina",
+ ["command_setcoords"] = "Teleportujte se na koordinate",
+ ["command_setcoords_x"] = "X",
+ ["command_setcoords_y"] = "Y",
+ ["command_setcoords_z"] = "Z",
+ ["command_setjob"] = "Postavite posao igraču",
+ ["command_setjob_job"] = "Ime",
+ ["command_setjob_grade"] = "Stepen posla",
+ ["command_setjob_invalid"] = "posao, stepen ili oba nisu validna",
+ ["command_setgroup"] = "Postavite permisiju",
+ ["command_setgroup_group"] = "Ime grupe",
+ ["commanderror_argumentmismatch"] = "Nevazeci broj argumenata (položio %s, željeno %s)",
+ ["commanderror_argumentmismatch_number"] = "Nevažeći argument #%s tip podataka (položeno, željeno)",
+ ["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
+ ["commanderror_invaliditem"] = "Nevažeći item",
+ ["commanderror_invalidweapon"] = "Nevažeće oružje",
+ ["commanderror_console"] = "Komanda se ne može izvršiti iz konzole",
+ ["commanderror_invalidcommand"] = "Nevažeća komanda - /%s",
+ ["commanderror_invalidplayerid"] = "Igrač nije online",
+ ["commandgeneric_playerid"] = "Igračev server ID",
+ ["command_giveammo_noweapon_found"] = "%s nema to oružje",
+ ["command_giveammo_weapon"] = "Ime oružja",
+ ["command_giveammo_ammo"] = "Količina municije",
+ ["tpm_nowaypoint"] = "Morate označiti lokaciju.",
+ ["tpm_success"] = "Teleportovani ste na lokaciju",
+
+ ["noclip_message"] = "Noclip %s",
+ ["enabled"] = "~g~upaljen~s~",
+ ["disabled"] = "~r~ugašen~s~",
+
+ -- Locale settings
+ ["locale_digit_grouping_symbol"] = ",",
+ ["locale_currency"] = "£%s",
+
+ -- Weapons
+
+ -- Melee
+ ["weapon_dagger"] = "Dagger",
+ ["weapon_bat"] = "Bat",
+ ["weapon_battleaxe"] = "Battle Axe",
+ ["weapon_bottle"] = "Bottle",
+ ["weapon_crowbar"] = "Crowbar",
+ ["weapon_flashlight"] = "Flashlight",
+ ["weapon_golfclub"] = "Golf Club",
+ ["weapon_hammer"] = "Hammer",
+ ["weapon_hatchet"] = "Hatchet",
+ ["weapon_knife"] = "Knife",
+ ["weapon_knuckle"] = "Knuckledusters",
+ ["weapon_machete"] = "Machete",
+ ["weapon_nightstick"] = "Nightstick",
+ ["weapon_wrench"] = "Pipe Wrench",
+ ["weapon_poolcue"] = "Pool Cue",
+ ["weapon_stone_hatchet"] = "Stone Hatchet",
+ ["weapon_switchblade"] = "Switchblade",
+
+ -- Handguns
+ ["weapon_appistol"] = "AP Pistol",
+ ["weapon_ceramicpistol"] = "Ceramic Pistol",
+ ["weapon_combatpistol"] = "Combat Pistol",
+ ["weapon_doubleaction"] = "Double-Action Revolver",
+ ["weapon_navyrevolver"] = "Navy Revolver",
+ ["weapon_flaregun"] = "Flaregun",
+ ["weapon_gadgetpistol"] = "Gadget Pistol",
+ ["weapon_heavypistol"] = "Heavy Pistol",
+ ["weapon_revolver"] = "Heavy Revolver",
+ ["weapon_revolver_mk2"] = "Heavy Revolver MK2",
+ ["weapon_marksmanpistol"] = "Marksman Pistol",
+ ["weapon_pistol"] = "Pistol",
+ ["weapon_pistol_mk2"] = "Pistol MK2",
+ ["weapon_pistol50"] = "Pistol .50",
+ ["weapon_snspistol"] = "SNS Pistol",
+ ["weapon_snspistol_mk2"] = "SNS Pistol MK2",
+ ["weapon_stungun"] = "Taser",
+ ["weapon_raypistol"] = "Up-N-Atomizer",
+ ["weapon_vintagepistol"] = "Vintage Pistol",
+
+ -- Shotguns
+ ["weapon_assaultshotgun"] = "Assault Shotgun",
+ ["weapon_autoshotgun"] = "Auto Shotgun",
+ ["weapon_bullpupshotgun"] = "Bullpup Shotgun",
+ ["weapon_combatshotgun"] = "Combat Shotgun",
+ ["weapon_dbshotgun"] = "Double Barrel Shotgun",
+ ["weapon_heavyshotgun"] = "Heavy Shotgun",
+ ["weapon_musket"] = "Musket",
+ ["weapon_pumpshotgun"] = "Pump Shotgun",
+ ["weapon_pumpshotgun_mk2"] = "Pump Shotgun MK2",
+ ["weapon_sawnoffshotgun"] = "Sawed Off Shotgun",
+
+ -- SMG & LMG
+ ["weapon_assaultsmg"] = "Assault SMG",
+ ["weapon_combatmg"] = "Combat MG",
+ ["weapon_combatmg_mk2"] = "Combat MG MK2",
+ ["weapon_combatpdw"] = "Combat PDW",
+ ["weapon_gusenberg"] = "Gusenberg Sweeper",
+ ["weapon_machinepistol"] = "Machine Pistol",
+ ["weapon_mg"] = "MG",
+ ["weapon_microsmg"] = "Micro SMG",
+ ["weapon_minismg"] = "Mini SMG",
+ ["weapon_smg"] = "SMG",
+ ["weapon_smg_mk2"] = "SMG MK2",
+ ["weapon_raycarbine"] = "Unholy Hellbringer",
+
+ -- Rifles
+ ["weapon_advancedrifle"] = "Advanced Rifle",
+ ["weapon_assaultrifle"] = "Assault Rifle",
+ ["weapon_assaultrifle_mk2"] = "Assault Rifle MK2",
+ ["weapon_bullpuprifle"] = "Bullpup Rifle",
+ ["weapon_bullpuprifle_mk2"] = "Bullpup Rifle MK2",
+ ["weapon_carbinerifle"] = "Carbine Rifle",
+ ["weapon_carbinerifle_mk2"] = "Carbine Rifle MK2",
+ ["weapon_compactrifle"] = "Compact Rifle",
+ ["weapon_militaryrifle"] = "Military Rifle",
+ ["weapon_specialcarbine"] = "Special Carbine",
+ ["weapon_specialcarbine_mk2"] = "Special Carbine MK2",
+ ["weapon_heavyrifle"] = "Heavy Rifle", -- Not Translated
+
+ -- Sniper
+ ["weapon_heavysniper"] = "Heavy Sniper",
+ ["weapon_heavysniper_mk2"] = "Heavy Sniper MK2",
+ ["weapon_marksmanrifle"] = "Marksman Rifle",
+ ["weapon_marksmanrifle_mk2"] = "Marksman Rifle MK2",
+ ["weapon_sniperrifle"] = "Sniper Rifle",
+
+ -- Heavy / Launchers
+ ["weapon_compactlauncher"] = "Compact Launcher",
+ ["weapon_firework"] = "Firework Launcher",
+ ["weapon_grenadelauncher"] = "Grenade Launcher",
+ ["weapon_hominglauncher"] = "Homing Launcher",
+ ["weapon_minigun"] = "Minigun",
+ ["weapon_railgun"] = "Railgun",
+ ["weapon_rpg"] = "Rocket Launcher",
+ ["weapon_rayminigun"] = "Widowmaker",
+
+ -- Criminal Enterprises DLC
+ ["weapon_metaldetector"] = "Metal Detector",
+ ["weapon_precisionrifle"] = "Precision Rifle",
+ ["weapon_tactilerifle"] = "Service Carbine",
+
+ -- Drug Wars DLC
+ ["weapon_candycane"] = "Candy Cane", -- not translated
+ ["weapon_acidpackage"] = "Acid Package", -- not translated
+ ["weapon_pistolxm3"] = "WM 29 Pistol", -- not translated
+ ["weapon_railgunxm3"] = "Railgun", -- not translated
+
+ -- Thrown
+ ["weapon_ball"] = "Baseball",
+ ["weapon_bzgas"] = "BZ Gas",
+ ["weapon_flare"] = "Flare",
+ ["weapon_grenade"] = "Grenade",
+ ["weapon_petrolcan"] = "Jerrycan",
+ ["weapon_hazardcan"] = "Hazardous Jerrycan",
+ ["weapon_molotov"] = "Molotov Cocktail",
+ ["weapon_proxmine"] = "Proximity Mine",
+ ["weapon_pipebomb"] = "Pipe Bomb",
+ ["weapon_snowball"] = "Snowball",
+ ["weapon_stickybomb"] = "Sticky Bomb",
+ ["weapon_smokegrenade"] = "Tear Gas",
+
+ -- Special
+ ["weapon_fireextinguisher"] = "Fire Extinguisher",
+ ["weapon_digiscanner"] = "Digital Scanner",
+ ["weapon_garbagebag"] = "Garbage Bag",
+ ["weapon_handcuffs"] = "Handcuffs",
+ ["gadget_nightvision"] = "Night Vision",
+ ["gadget_parachute"] = "parachute",
+
+ -- Weapon Components
+ ["component_knuckle_base"] = "base Model",
+ ["component_knuckle_pimp"] = "the Pimp",
+ ["component_knuckle_ballas"] = "the Ballas",
+ ["component_knuckle_dollar"] = "the Hustler",
+ ["component_knuckle_diamond"] = "the Rock",
+ ["component_knuckle_hate"] = "the Hater",
+ ["component_knuckle_love"] = "the Lover",
+ ["component_knuckle_player"] = "the Player",
+ ["component_knuckle_king"] = "the King",
+ ["component_knuckle_vagos"] = "the Vagos",
+
+ ["component_luxary_finish"] = "luxary Weapon Finish",
+
+ ["component_handle_default"] = "default Handle",
+ ["component_handle_vip"] = "vIP Handle",
+ ["component_handle_bodyguard"] = "bodyguard Handle",
+
+ ["component_vip_finish"] = "vIP Finish",
+ ["component_bodyguard_finish"] = "bodyguard Finish",
+
+ ["component_camo_finish"] = "digital Camo",
+ ["component_camo_finish2"] = "brushstroke Camo",
+ ["component_camo_finish3"] = "woodland Camo",
+ ["component_camo_finish4"] = "skull Camo",
+ ["component_camo_finish5"] = "sessanta Nove Camo",
+ ["component_camo_finish6"] = "perseus Camo",
+ ["component_camo_finish7"] = "leopard Camo",
+ ["component_camo_finish8"] = "zebra Camo",
+ ["component_camo_finish9"] = "geometric Camo",
+ ["component_camo_finish10"] = "boom Camo",
+ ["component_camo_finish11"] = "patriotic Camo",
+
+ ["component_camo_slide_finish"] = "digital Slide Camo",
+ ["component_camo_slide_finish2"] = "brushstroke Slide Camo",
+ ["component_camo_slide_finish3"] = "woodland Slide Camo",
+ ["component_camo_slide_finish4"] = "skull Slide Camo",
+ ["component_camo_slide_finish5"] = "sessanta Nove Slide Camo",
+ ["component_camo_slide_finish6"] = "perseus Slide Camo",
+ ["component_camo_slide_finish7"] = "leopard Slide Camo",
+ ["component_camo_slide_finish8"] = "zebra Slide Camo",
+ ["component_camo_slide_finish9"] = "geometric Slide Camo",
+ ["component_camo_slide_finish10"] = "boom Slide Camo",
+ ["component_camo_slide_finish11"] = "patriotic Slide Camo",
+
+ ["component_clip_default"] = "default Magazine",
+ ["component_clip_extended"] = "extended Magazine",
+ ["component_clip_drum"] = "drum Magazine",
+ ["component_clip_box"] = "box Magazine",
+
+ ["component_scope_holo"] = "holographic Scope",
+ ["component_scope_small"] = "small Scope",
+ ["component_scope_medium"] = "medium Scope",
+ ["component_scope_large"] = "large Scope",
+ ["component_scope"] = "mounted Scope",
+ ["component_scope_advanced"] = "advanced Scope",
+ ["component_ironsights"] = "ironsights",
+
+ ["component_suppressor"] = "suppressor",
+ ["component_compensator"] = "compensator",
+
+ ["component_muzzle_flat"] = "flat Muzzle Brake",
+ ["component_muzzle_tactical"] = "tactical Muzzle Brake",
+ ["component_muzzle_fat"] = "fat-End Muzzle Brake",
+ ["component_muzzle_precision"] = "precision Muzzle Brake",
+ ["component_muzzle_heavy"] = "heavy Duty Muzzle Brake",
+ ["component_muzzle_slanted"] = "slanted Muzzle Brake",
+ ["component_muzzle_split"] = "split-End Muzzle Brake",
+ ["component_muzzle_squared"] = "squared Muzzle Brake",
+
+ ["component_flashlight"] = "flashlight",
+ ["component_grip"] = "grip",
+
+ ["component_barrel_default"] = "default Barrel",
+ ["component_barrel_heavy"] = "heavy Barrel",
+
+ ["component_ammo_tracer"] = "tracer Ammo",
+ ["component_ammo_incendiary"] = "incendiary Ammo",
+ ["component_ammo_hollowpoint"] = "hollowpoint Ammo",
+ ["component_ammo_fmj"] = "fMJ Ammo",
+ ["component_ammo_armor"] = "armor Piercing Ammo",
+ ["component_ammo_explosive"] = "armor Piercing Incendiary Ammo",
+
+ ["component_shells_default"] = "default Shells",
+ ["component_shells_incendiary"] = "dragons Breath Shells",
+ ["component_shells_armor"] = "steel Buckshot Shells",
+ ["component_shells_hollowpoint"] = "flechette Shells",
+ ["component_shells_explosive"] = "explosive Slug Shells",
+
+ -- Weapon Ammo
+ ["ammo_rounds"] = "round(s)",
+ ["ammo_shells"] = "shell(s)",
+ ["ammo_charge"] = "charge",
+ ["ammo_petrol"] = "gallons of fuel",
+ ["ammo_firework"] = "firework(s)",
+ ["ammo_rockets"] = "rocket(s)",
+ ["ammo_grenadelauncher"] = "grenade(s)",
+ ["ammo_grenade"] = "grenade(s)",
+ ["ammo_stickybomb"] = "bomb(s)",
+ ["ammo_pipebomb"] = "bomb(s)",
+ ["ammo_smokebomb"] = "bomb(s)",
+ ["ammo_molotov"] = "cocktail(s)",
+ ["ammo_proxmine"] = "mine(s)",
+ ["ammo_bzgas"] = "can(s)",
+ ["ammo_ball"] = "ball(s)",
+ ["ammo_snowball"] = "snowball(s)",
+ ["ammo_flare"] = "flare(s)",
+ ["ammo_flaregun"] = "flare(s)",
+
+ -- Weapon Tints
+ ["tint_default"] = "default skin",
+ ["tint_green"] = "green skin",
+ ["tint_gold"] = "gold skin",
+ ["tint_pink"] = "pink skin",
+ ["tint_army"] = "army skin",
+ ["tint_lspd"] = "blue skin",
+ ["tint_orange"] = "orange skin",
+ ["tint_platinum"] = "platinum skin",
+}
diff --git a/server-data/resources/[esx]/es_extended/locales/sv.lua b/server-data/resources/[esx]/es_extended/locales/sv.lua
new file mode 100644
index 000000000..193089a71
--- /dev/null
+++ b/server-data/resources/[esx]/es_extended/locales/sv.lua
@@ -0,0 +1,381 @@
+Locales["sv"] = {
+ -- Inventory
+ ["inventory"] = "Inventory ( Vikt %s / %s )",
+ ["use"] = "Använd",
+ ["give"] = "Ge",
+ ["remove"] = "Kasta",
+ ["return"] = "Tillbaka",
+ ["give_to"] = "Ge",
+ ["amount"] = "Antal",
+ ["giveammo"] = "Ge skott",
+ ["amountammo"] = "Antal skott",
+ ["noammo"] = "Inte tillräckligt!",
+ ["gave_item"] = "Ger %sx %s till %s",
+ ["received_item"] = "Mottog %sx %s från %s",
+ ["gave_weapon"] = "Ger %s till %s",
+ ["gave_weapon_ammo"] = "Ger ~o~%sx %s för %s till %s",
+ ["gave_weapon_withammo"] = "Ger %s med ~o~%sx %s till %s",
+ ["gave_weapon_hasalready"] = "%s har redan en %s",
+ ["gave_weapon_noweapon"] = "%s har inte detta vapen",
+ ["received_weapon"] = "Mottog %s från %s",
+ ["received_weapon_ammo"] = "Mottog ~o~%sx %s för din %s från %s",
+ ["received_weapon_withammo"] = "Mottog %s med ~o~%sx %s från %s",
+ ["received_weapon_hasalready"] = "%s har försökt ge dig en %s, men du har redan detta",
+ ["received_weapon_noweapon"] = "%s har försökt ge dig skott till en %s, men du har inte detta vapen",
+ ["gave_account_money"] = "Ger %skr (%s) till %s",
+ ["received_account_money"] = "Mottog %skr (%s) från %s",
+ ["amount_invalid"] = "Ogiltig mängd",
+ ["players_nearby"] = "Inga spelare nära",
+ ["ex_inv_lim"] = "Kan inte utföra, överskrider maxvikten på %s",
+ ["imp_invalid_quantity"] = "Kan inte utföra, mängden är ogiltig",
+ ["imp_invalid_amount"] = "Kan inte utföra, antalet är ogiltig",
+ ["threw_standard"] = "Kastar %sx %s",
+ ["threw_account"] = "Kastar %skr %s",
+ ["threw_weapon"] = "Kastar %s",
+ ["threw_weapon_ammo"] = "Kastar %s med ~o~%sx %s",
+ ["threw_weapon_already"] = "Du har redan detta vapen",
+ ["threw_cannot_pickup"] = "Inventoryt är fullt, kan inte plocka upp!",
+ ["threw_pickup_prompt"] = "Tryck E för att plocka upp",
+
+ -- Key mapping
+ ["keymap_showinventory"] = "Öppna inventory",
+
+ -- Salary related
+ ["received_salary"] = "Du har fått ditt bidrag: %skr",
+ ["received_help"] = "Du har fått betalt: %skr",
+ ["company_nomoney"] = "Företaget du är anställd hos har inte råd med att betala ut lön",
+ ["received_paycheck"] = "Mottog lön",
+ ["bank"] = "Maze Bank",
+ ["account_bank"] = "Bank",
+ ["account_black_money"] = "Svarta pengar",
+ ["account_money"] = "Kontanter",
+
+ ["act_imp"] = "Kan inte utföra",
+ ["in_vehicle"] = "Kan inte utföra, spelaren är i ett fordon",
+ ["not_in_vehicle"] = "Kan inte utföra, spelaren är inte i ett fordon",
+
+ -- Commands
+ ["command_bring"] = "Ta en spelare till dig",
+ ["command_car"] = "Ta fram ett fordon",
+ ["command_car_car"] = "modell",
+ ["command_cardel"] = "Raderar fordon inom en specifik radie",
+ ["command_cardel_radius"] = "Raderar fordon inom en specifik radie",
+ ["command_repair"] = "Reparera ditt fordon",
+ ["command_repair_success"] = "Fordon reparerat",
+ ["command_repair_success_target"] = "En admin har reparerat ditt fordon",
+ ["command_clear"] = "Rensa chatt",
+ ["command_clearall"] = "Rensa chatt för alla",
+ ["command_clearinventory"] = "Raderar alla föremål från en spelares inventory",
+ ["command_clearloadout"] = "Raderar alla vapen från en spelares inventory",
+ ["command_freeze"] = "Frys en spelare",
+ ["command_unfreeze"] = "Ta bort frysningen från en spelare",
+ ["command_giveaccountmoney"] = "Ge pengar till ett specifikt konto",
+ ["command_giveaccountmoney_account"] = "Konto",
+ ["command_giveaccountmoney_amount"] = "Summa",
+ ["command_giveaccountmoney_invalid"] = "Ogiltigt kontonamn",
+ ["command_removeaccountmoney"] = "Radera pengar från ett specifikt konto",
+ ["command_removeaccountmoney_account"] = "Konto",
+ ["command_removeaccountmoney_amount"] = "Summa",
+ ["command_removeaccountmoney_invalid"] = "Ogiltigt kontonamn",
+ ["command_giveitem"] = "Ge föremål till en spelare",
+ ["command_giveitem_item"] = "Namn",
+ ["command_giveitem_count"] = "Antal",
+ ["command_giveweapon"] = "Ge ett vapen till en spelare",
+ ["command_giveweapon_weapon"] = "Vapen",
+ ["command_giveweapon_ammo"] = "Antal skott",
+ ["command_giveweapon_hasalready"] = "Spelaren har redan detta vapen",
+ ["command_giveweaponcomponent"] = "Ge komponent till en spelare",
+ ["command_giveweaponcomponent_component"] = "Komponent",
+ ["command_giveweaponcomponent_invalid"] = "Ogiltig komponent",
+ ["command_giveweaponcomponent_hasalready"] = "Spelaren har redan denna komponent",
+ ["command_giveweaponcomponent_missingweapon"] = "Spelaren har inte vapen för komponenten",
+ ["command_goto"] = "Teleportera till en spelare",
+ ["command_kill"] = "Döda en spelare",
+ ["command_save"] = "Spara en spelares data",
+ ["command_saveall"] = "Spara alla spelares data",
+ ["command_setaccountmoney"] = "Sätt pengar på ett specifikt konto",
+ ["command_setaccountmoney_amount"] = "Summa",
+ ["command_setcoords"] = "Teleportera till koordinater",
+ ["command_setcoords_x"] = "X value",
+ ["command_setcoords_y"] = "Y value",
+ ["command_setcoords_z"] = "Z value",
+ ["command_setjob"] = "Sätt jobb för en spelare",
+ ["command_setjob_job"] = "Namn",
+ ["command_setjob_grade"] = "Grad",
+ ["command_setjob_invalid"] = "Jobbet, graden eller båda är ogiltiga",
+ ["command_setgroup"] = "Sätt en spelares grupp",
+ ["command_setgroup_group"] = "Grupp",
+ ["commanderror_argumentmismatch"] = "Invalid Argument Count (passed %s, wanted %s)",
+ ["commanderror_argumentmismatch_number"] = "Invalid Argument #%s data type (passed string, wanted number)",
+ ["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
+ ["commanderror_invaliditem"] = "Ogiltigt föremål",
+ ["commanderror_invalidweapon"] = "Ogiltigt vapen",
+ ["commanderror_console"] = "Kommandot kan inte användas i konsolen",
+ ["commanderror_invalidcommand"] = "Ogiltigt kommand - /%s",
+ ["commanderror_invalidplayerid"] = "Spelaren är inte online",
+ ["commandgeneric_playerid"] = "Spelares ID",
+ ["command_giveammo_noweapon_found"] = "%s har inte detta vapen",
+ ["command_giveammo_weapon"] = "Vapen namn",
+ ["command_giveammo_ammo"] = "Antal ammo",
+ ["tpm_nowaypoint"] = "Ingen markör sutten.",
+ ["tpm_success"] = "Du har teleporterat",
+
+ ["noclip_message"] = "Noclip har %s",
+ ["enabled"] = "~g~aktiverats~s~",
+ ["disabled"] = "~r~avaktiverats~s~",
+
+ -- Locale settings
+ ["locale_digit_grouping_symbol"] = ",",
+ ["locale_currency"] = "%skr",
+
+ -- Weapons
+
+ -- Melee
+ ["weapon_dagger"] = "Dolk",
+ ["weapon_bat"] = "Baseballträd",
+ ["weapon_battleaxe"] = "Stridsyxa",
+ ["weapon_bottle"] = "Glasflaska",
+ ["weapon_crowbar"] = "Kofot",
+ ["weapon_flashlight"] = "Ficklampa",
+ ["weapon_golfclub"] = "Golfklubba",
+ ["weapon_hammer"] = "Hammare",
+ ["weapon_hatchet"] = "Yxa",
+ ["weapon_knife"] = "Kniv",
+ ["weapon_knuckle"] = "Knogjärn",
+ ["weapon_machete"] = "Machete",
+ ["weapon_nightstick"] = "Ficklampa",
+ ["weapon_wrench"] = "Rörtång",
+ ["weapon_poolcue"] = "Biljardkö",
+ ["weapon_stone_hatchet"] = "Stenyxa",
+ ["weapon_switchblade"] = "Fickkniv",
+
+ -- Handguns
+ ["weapon_appistol"] = "AP Pistol",
+ ["weapon_ceramicpistol"] = "Ceramic Pistol",
+ ["weapon_combatpistol"] = "Combat Pistol",
+ ["weapon_doubleaction"] = "Double-Action Revolver",
+ ["weapon_navyrevolver"] = "Navy Revolver",
+ ["weapon_flaregun"] = "Flaregun",
+ ["weapon_gadgetpistol"] = "Gadget Pistol",
+ ["weapon_heavypistol"] = "Heavy Pistol",
+ ["weapon_revolver"] = "Heavy Revolver",
+ ["weapon_revolver_mk2"] = "Heavy Revolver MK2",
+ ["weapon_marksmanpistol"] = "Marksman Pistol",
+ ["weapon_pistol"] = "Pistol",
+ ["weapon_pistol_mk2"] = "Pistol MK2",
+ ["weapon_pistol50"] = "Pistol .50",
+ ["weapon_snspistol"] = "SNS Pistol",
+ ["weapon_snspistol_mk2"] = "SNS Pistol MK2",
+ ["weapon_stungun"] = "Taser",
+ ["weapon_raypistol"] = "Up-N-Atomizer",
+ ["weapon_vintagepistol"] = "Vintage Pistol",
+
+ -- Shotguns
+ ["weapon_assaultshotgun"] = "Assault Shotgun",
+ ["weapon_autoshotgun"] = "Auto Shotgun",
+ ["weapon_bullpupshotgun"] = "Bullpup Shotgun",
+ ["weapon_combatshotgun"] = "Combat Shotgun",
+ ["weapon_dbshotgun"] = "Double Barrel Shotgun",
+ ["weapon_heavyshotgun"] = "Heavy Shotgun",
+ ["weapon_musket"] = "Musket",
+ ["weapon_pumpshotgun"] = "Pump Shotgun",
+ ["weapon_pumpshotgun_mk2"] = "Pump Shotgun MK2",
+ ["weapon_sawnoffshotgun"] = "Sawed Off Shotgun",
+
+ -- SMG & LMG
+ ["weapon_assaultsmg"] = "Assault SMG",
+ ["weapon_combatmg"] = "Combat MG",
+ ["weapon_combatmg_mk2"] = "Combat MG MK2",
+ ["weapon_combatpdw"] = "Combat PDW",
+ ["weapon_gusenberg"] = "Gusenberg Sweeper",
+ ["weapon_machinepistol"] = "Machine Pistol",
+ ["weapon_mg"] = "MG",
+ ["weapon_microsmg"] = "Micro SMG",
+ ["weapon_minismg"] = "Mini SMG",
+ ["weapon_smg"] = "SMG",
+ ["weapon_smg_mk2"] = "SMG MK2",
+ ["weapon_raycarbine"] = "Unholy Hellbringer",
+
+ -- Rifles
+ ["weapon_advancedrifle"] = "Advanced Rifle",
+ ["weapon_assaultrifle"] = "Assault Rifle",
+ ["weapon_assaultrifle_mk2"] = "Assault Rifle MK2",
+ ["weapon_bullpuprifle"] = "Bullpup Rifle",
+ ["weapon_bullpuprifle_mk2"] = "Bullpup Rifle MK2",
+ ["weapon_carbinerifle"] = "Carbine Rifle",
+ ["weapon_carbinerifle_mk2"] = "Carbine Rifle MK2",
+ ["weapon_compactrifle"] = "Compact Rifle",
+ ["weapon_militaryrifle"] = "Military Rifle",
+ ["weapon_specialcarbine"] = "Special Carbine",
+ ["weapon_specialcarbine_mk2"] = "Special Carbine MK2",
+ ["weapon_heavyrifle"] = "Heavy Rifle",
+
+ -- Sniper
+ ["weapon_heavysniper"] = "Heavy Sniper",
+ ["weapon_heavysniper_mk2"] = "Heavy Sniper MK2",
+ ["weapon_marksmanrifle"] = "Marksman Rifle",
+ ["weapon_marksmanrifle_mk2"] = "Marksman Rifle MK2",
+ ["weapon_sniperrifle"] = "Sniper Rifle",
+
+ -- Heavy / Launchers
+ ["weapon_compactlauncher"] = "Compact Launcher",
+ ["weapon_firework"] = "Firework Launcher",
+ ["weapon_grenadelauncher"] = "Grenade Launcher",
+ ["weapon_hominglauncher"] = "Homing Launcher",
+ ["weapon_minigun"] = "Minigun",
+ ["weapon_railgun"] = "Railgun",
+ ["weapon_rpg"] = "Rocket Launcher",
+ ["weapon_rayminigun"] = "Widowmaker",
+
+ -- Criminal Enterprises DLC
+ ["weapon_metaldetector"] = "Metal Detector",
+ ["weapon_precisionrifle"] = "Precision Rifle",
+ ["weapon_tactilerifle"] = "Service Carbine",
+
+ -- Drug wars dlc
+ ["weapon_candycane"] = "Candycane",
+ ["weapon_acidpackage"] = "Acid Package",
+ ["weapon_pistolxm3"] = "Pistol8 x3m",
+ ["weapon_railgunxm3"] = "Railgun",
+
+ -- Thrown
+ ["weapon_ball"] = "Baseball",
+ ["weapon_bzgas"] = "BZ Gas",
+ ["weapon_flare"] = "Bloss",
+ ["weapon_grenade"] = "Granat",
+ ["weapon_petrolcan"] = "Bensindunk",
+ ["weapon_hazardcan"] = "Hazardous Jerrycan",
+ ["weapon_molotov"] = "Molotov",
+ ["weapon_proxmine"] = "Mina",
+ ["weapon_pipebomb"] = "Pipe Bomb",
+ ["weapon_snowball"] = "Snöboll",
+ ["weapon_stickybomb"] = "Sticky Bomb",
+ ["weapon_smokegrenade"] = "Tårgas",
+
+ -- Special
+ ["weapon_fireextinguisher"] = "Brandsläckare",
+ ["weapon_digiscanner"] = "Digital Scanner",
+ ["weapon_garbagebag"] = "Soppåse",
+ ["weapon_handcuffs"] = "Handklovar",
+ ["gadget_nightvision"] = "Night Vision",
+ ["gadget_parachute"] = "Fallskärm",
+
+ -- Weapon Components
+ ["component_knuckle_base"] = "base Model",
+ ["component_knuckle_pimp"] = "the Pimp",
+ ["component_knuckle_ballas"] = "the Ballas",
+ ["component_knuckle_dollar"] = "the Hustler",
+ ["component_knuckle_diamond"] = "the Rock",
+ ["component_knuckle_hate"] = "the Hater",
+ ["component_knuckle_love"] = "the Lover",
+ ["component_knuckle_player"] = "the Player",
+ ["component_knuckle_king"] = "the King",
+ ["component_knuckle_vagos"] = "the Vagos",
+
+ ["component_luxary_finish"] = "luxary Weapon Finish",
+
+ ["component_handle_default"] = "default Handle",
+ ["component_handle_vip"] = "vIP Handle",
+ ["component_handle_bodyguard"] = "bodyguard Handle",
+
+ ["component_vip_finish"] = "vIP Finish",
+ ["component_bodyguard_finish"] = "bodyguard Finish",
+
+ ["component_camo_finish"] = "digital Camo",
+ ["component_camo_finish2"] = "brushstroke Camo",
+ ["component_camo_finish3"] = "woodland Camo",
+ ["component_camo_finish4"] = "skull Camo",
+ ["component_camo_finish5"] = "sessanta Nove Camo",
+ ["component_camo_finish6"] = "perseus Camo",
+ ["component_camo_finish7"] = "leopard Camo",
+ ["component_camo_finish8"] = "zebra Camo",
+ ["component_camo_finish9"] = "geometric Camo",
+ ["component_camo_finish10"] = "boom Camo",
+ ["component_camo_finish11"] = "patriotic Camo",
+
+ ["component_camo_slide_finish"] = "digital Slide Camo",
+ ["component_camo_slide_finish2"] = "brushstroke Slide Camo",
+ ["component_camo_slide_finish3"] = "woodland Slide Camo",
+ ["component_camo_slide_finish4"] = "skull Slide Camo",
+ ["component_camo_slide_finish5"] = "sessanta Nove Slide Camo",
+ ["component_camo_slide_finish6"] = "perseus Slide Camo",
+ ["component_camo_slide_finish7"] = "leopard Slide Camo",
+ ["component_camo_slide_finish8"] = "zebra Slide Camo",
+ ["component_camo_slide_finish9"] = "geometric Slide Camo",
+ ["component_camo_slide_finish10"] = "boom Slide Camo",
+ ["component_camo_slide_finish11"] = "patriotic Slide Camo",
+
+ ["component_clip_default"] = "default Magazine",
+ ["component_clip_extended"] = "extended Magazine",
+ ["component_clip_drum"] = "drum Magazine",
+ ["component_clip_box"] = "box Magazine",
+
+ ["component_scope_holo"] = "holographic Scope",
+ ["component_scope_small"] = "small Scope",
+ ["component_scope_medium"] = "medium Scope",
+ ["component_scope_large"] = "large Scope",
+ ["component_scope"] = "mounted Scope",
+ ["component_scope_advanced"] = "advanced Scope",
+ ["component_ironsights"] = "ironsights",
+
+ ["component_suppressor"] = "ljuddämpare",
+ ["component_compensator"] = "compensator",
+
+ ["component_muzzle_flat"] = "flat Muzzle Brake",
+ ["component_muzzle_tactical"] = "tactical Muzzle Brake",
+ ["component_muzzle_fat"] = "fat-End Muzzle Brake",
+ ["component_muzzle_precision"] = "precision Muzzle Brake",
+ ["component_muzzle_heavy"] = "heavy Duty Muzzle Brake",
+ ["component_muzzle_slanted"] = "slanted Muzzle Brake",
+ ["component_muzzle_split"] = "split-End Muzzle Brake",
+ ["component_muzzle_squared"] = "squared Muzzle Brake",
+
+ ["component_flashlight"] = "Ficklampa",
+ ["component_grip"] = "grepp",
+
+ ["component_barrel_default"] = "default Barrel",
+ ["component_barrel_heavy"] = "heavy Barrel",
+
+ ["component_ammo_tracer"] = "tracer Ammo",
+ ["component_ammo_incendiary"] = "incendiary Ammo",
+ ["component_ammo_hollowpoint"] = "hollowpoint Ammo",
+ ["component_ammo_fmj"] = "fMJ Ammo",
+ ["component_ammo_armor"] = "armor Piercing Ammo",
+ ["component_ammo_explosive"] = "armor Piercing Incendiary Ammo",
+
+ ["component_shells_default"] = "default Shells",
+ ["component_shells_incendiary"] = "dragons Breath Shells",
+ ["component_shells_armor"] = "steel Buckshot Shells",
+ ["component_shells_hollowpoint"] = "flechette Shells",
+ ["component_shells_explosive"] = "explosive Slug Shells",
+
+ -- Weapon Ammo
+ ["ammo_rounds"] = "round(s)",
+ ["ammo_shells"] = "shell(s)",
+ ["ammo_charge"] = "charge",
+ ["ammo_petrol"] = "gallons of fuel",
+ ["ammo_firework"] = "firework(s)",
+ ["ammo_rockets"] = "rocket(s)",
+ ["ammo_grenadelauncher"] = "grenade(s)",
+ ["ammo_grenade"] = "grenade(s)",
+ ["ammo_stickybomb"] = "bomb(s)",
+ ["ammo_pipebomb"] = "bomb(s)",
+ ["ammo_smokebomb"] = "bomb(s)",
+ ["ammo_molotov"] = "cocktail(s)",
+ ["ammo_proxmine"] = "mine(s)",
+ ["ammo_bzgas"] = "can(s)",
+ ["ammo_ball"] = "ball(s)",
+ ["ammo_snowball"] = "snowball(s)",
+ ["ammo_flare"] = "flare(s)",
+ ["ammo_flaregun"] = "flare(s)",
+
+ -- Weapon Tints
+ ["tint_default"] = "default skin",
+ ["tint_green"] = "green skin",
+ ["tint_gold"] = "gold skin",
+ ["tint_pink"] = "pink skin",
+ ["tint_army"] = "army skin",
+ ["tint_lspd"] = "blue skin",
+ ["tint_orange"] = "orange skin",
+ ["tint_platinum"] = "platinum skin",
+}
diff --git a/server-data/resources/[esx]/es_extended/locales/zh-cn.lua b/server-data/resources/[esx]/es_extended/locales/zh-cn.lua
new file mode 100644
index 000000000..a8a1ad8e6
--- /dev/null
+++ b/server-data/resources/[esx]/es_extended/locales/zh-cn.lua
@@ -0,0 +1,377 @@
+Locales["zh-cn"] = {
+ -- Inventory
+ ["inventory"] = "背包 %s / %s",
+ ["use"] = "使用",
+ ["give"] = "给予",
+ ["remove"] = "赠送",
+ ["return"] = "返回",
+ ["give_to"] = "赠给",
+ ["amount"] = "数量",
+ ["giveammo"] = "赠送弹药",
+ ["amountammo"] = "弹药量",
+ ["noammo"] = "您没有足够的弹药!",
+ ["gave_item"] = "您将 %sx %s 赠送给 %s",
+ ["received_item"] = "您收到 %sx %s, 来自于 %s 的赠送",
+ ["gave_weapon"] = "您把 %s 赠送给 %s",
+ ["gave_weapon_ammo"] = "您把 ~o~%sx %s %s 赠送给 %s",
+ ["gave_weapon_withammo"] = "您把 %s 和 ~o~%sx %s 赠送给 %s",
+ ["gave_weapon_hasalready"] = "%s 已持有 %s",
+ ["gave_weapon_noweapon"] = "%s 暂无该类型武器",
+ ["received_weapon"] = "您收到了 %s, 来自于 %s 的赠送",
+ ["received_weapon_ammo"] = "您收到了 ~o~%sx %s (%s),来自于%s的赠送",
+ ["received_weapon_withammo"] = "您收到了 %s 和~o~%sx %s,来自于%s的赠送",
+ ["received_weapon_hasalready"] = "%s 试图给您 %s,但您已持有",
+ ["received_weapon_noweapon"] = "%s 试图给您 %s 发子弹,但是您沒有该类型武器",
+ ["gave_account_money"] = "您将 $%s (%s) 赠送给 %s",
+ ["received_account_money"] = "您收到了 $%s (%s) 来自 %s 的赠送",
+ ["amount_invalid"] = "无效数量",
+ ["players_nearby"] = "附近没有玩家",
+ ["ex_inv_lim"] = "操作失败, 超过 %s 背包物品的上限",
+ ["imp_invalid_quantity"] = "操作失败,无效数量输入",
+ ["imp_invalid_amount"] = "操作失败,无效金额输入",
+ ["threw_standard"] = "您丢弃了 %sx %s",
+ ["threw_account"] = "您丢弃了 $%s %s",
+ ["threw_weapon"] = "您丢弃了 %s",
+ ["threw_weapon_ammo"] = "您丢弃了 %s 和 ~o~%sx %s",
+ ["threw_weapon_already"] = "您已持有相同武器!",
+ ["threw_cannot_pickup"] = "背包容量已满, 无法持有更多该物品!",
+ ["threw_pickup_prompt"] = "键下 [E] 捡起",
+
+ -- Key mapping
+ ["keymap_showinventory"] = "显示背包",
+
+ -- Salary related
+ ["received_salary"] = "您收到了您的工资: $%s",
+ ["received_help"] = "您领取到了您的无业性低保: $%s",
+ ["company_nomoney"] = "您受雇的公司太穷了,无法清算您的工资.",
+ ["received_paycheck"] = "收到转账",
+ ["bank"] = "花园银行",
+ ["account_bank"] = "银行",
+ ["account_black_money"] = "赃款",
+ ["account_money"] = "现金",
+
+ ["act_imp"] = "操作失败",
+ ["in_vehicle"] = "请离开当前载具",
+ ["not_in_vehicle"] = "Cannot Perform Action, Player isn't in a vehicle",
+
+ -- Commands
+ ["command_bring"] = "传送玩家到您身边",
+ ["command_car"] = "生成载具",
+ ["command_car_car"] = "生成载具的模型名称或哈希值",
+ ["command_cardel"] = "删除附近载具",
+ ["command_cardel_radius"] = "可选,删除指定半径内的所有载具",
+ ["command_repair"] = "Repair your vehicle",
+ ["command_repair_success"] = "Successfully repaired vehicle",
+ ["command_repair_success_target"] = "An admin repaired your vehicle",
+ ["command_clear"] = "清除聊天记录",
+ ["command_clearall"] = "清除所有玩家的聊天记录",
+ ["command_clearinventory"] = "清除玩家库存",
+ ["command_clearloadout"] = "清除玩家武器栏",
+ ["command_freeze"] = "冻结玩家",
+ ["command_unfreeze"] = "解冻玩家",
+ ["command_giveaccountmoney"] = "给予任意账户资金",
+ ["command_giveaccountmoney_account"] = "有效的帐户类型",
+ ["command_giveaccountmoney_amount"] = "添加的金额数量",
+ ["command_giveaccountmoney_invalid"] = "无效的帐户类型",
+ ["command_giveitem"] = "给予玩家一件物品",
+ ["command_giveitem_item"] = "物品代码",
+ ["command_giveitem_count"] = "物品数目",
+ ["command_giveweapon"] = "给予玩家一把武器",
+ ["command_giveweapon_weapon"] = "武器代码",
+ ["command_giveweapon_ammo"] = "弹药数目",
+ ["command_giveweapon_hasalready"] = "该玩家已拥有该武器",
+ ["command_giveweaponcomponent"] = "给予武器改装件",
+ ["command_giveweaponcomponent_component"] = "改装件代码",
+ ["command_giveweaponcomponent_invalid"] = "无效的武器改装件",
+ ["command_giveweaponcomponent_hasalready"] = "玩家已拥有该武器改装件",
+ ["command_giveweaponcomponent_missingweapon"] = "该玩家暂无该类型改装件的武器",
+ ["command_goto"] = "传送至一名玩家身旁",
+ ["command_kill"] = "击杀一名玩家",
+ ["command_save"] = "保存玩家数据至数据库",
+ ["command_saveall"] = "保存所有玩家数据至数据库",
+ ["command_setaccountmoney"] = "设置玩家帐户内资金",
+ ["command_setaccountmoney_amount"] = "账户资金金额",
+ ["command_setcoords"] = "传送至XYZ坐标",
+ ["command_setcoords_x"] = "X 轴",
+ ["command_setcoords_y"] = "Y 轴",
+ ["command_setcoords_z"] = "Z 轴",
+ ["command_setjob"] = "配置该玩家职业",
+ ["command_setjob_job"] = "职业代码",
+ ["command_setjob_grade"] = "职业等级",
+ ["command_setjob_invalid"] = "职业代码、等级或输入数据无效!",
+ ["command_setgroup"] = "设置玩家用户组",
+ ["command_setgroup_group"] = "用户组代码",
+ ["commanderror_argumentmismatch"] = "参数计数不匹配 (该类型为 %s, 需要传输 %s)",
+ ["commanderror_argumentmismatch_number"] = "参数 #%s 类型不匹配 (该类型为字符串,需要传递数字类型)",
+ ["commanderror_argumentmismatch_string"] = "Invalid Argument #%s data type (passed number, wanted string)",
+ ["commanderror_invaliditem"] = "无效的物品代码",
+ ["commanderror_invalidweapon"] = "无效的武器代码",
+ ["commanderror_console"] = "控制台无法执行此命令!",
+ ["commanderror_invalidcommand"] = "/%s 不是有效的命令!",
+ ["commanderror_invalidplayerid"] = "无效的玩家服务器ID",
+ ["commandgeneric_playerid"] = "玩家服务器ID",
+ ["command_giveammo_noweapon_found"] = "%s 为无效的武器代码!",
+ ["command_giveammo_weapon"] = "武器代码",
+ ["command_giveammo_ammo"] = "弹药数量",
+ ["tpm_nowaypoint"] = "尚未配置导航点!",
+ ["tpm_success"] = "已传送至该导航点",
+
+ ["noclip_message"] = "飞行模式已被激活 %s",
+ ["enabled"] = "~g~已开启~s~",
+ ["disabled"] = "~r~已关闭~s~",
+
+ -- Locale settings
+ ["locale_digit_grouping_symbol"] = ",",
+ ["locale_currency"] = "$%s",
+
+ -- Weapons
+
+ -- Melee
+ ["weapon_dagger"] = "古骑兵匕首",
+ ["weapon_bat"] = "棒球棍",
+ ["weapon_battleaxe"] = "战斧",
+ ["weapon_bottle"] = "碎酒瓶",
+ ["weapon_crowbar"] = "撬棍",
+ ["weapon_flashlight"] = "手电筒",
+ ["weapon_golfclub"] = "高尔夫球杆",
+ ["weapon_hammer"] = "铁锤",
+ ["weapon_hatchet"] = "手斧",
+ ["weapon_knife"] = "小刀",
+ ["weapon_knuckle"] = "手指虎",
+ ["weapon_machete"] = "开山刀",
+ ["weapon_nightstick"] = "警棍",
+ ["weapon_wrench"] = "管钳扳手",
+ ["weapon_poolcue"] = "台球杆",
+ ["weapon_stone_hatchet"] = "石斧",
+ ["weapon_switchblade"] = "弹簧刀",
+
+ -- Handguns
+ ["weapon_appistol"] = "穿甲手枪",
+ ["weapon_ceramicpistol"] = "陶瓷手枪",
+ ["weapon_combatpistol"] = "战斗手枪",
+ ["weapon_doubleaction"] = "双动式左轮手枪",
+ ["weapon_navyrevolver"] = "海军左轮手枪",
+ ["weapon_flaregun"] = "信号枪",
+ ["weapon_gadgetpistol"] = "佩里克手枪",
+ ["weapon_heavypistol"] = "重型手枪",
+ ["weapon_revolver"] = "重型左轮手枪",
+ ["weapon_revolver_mk2"] = "重型左轮手枪-MK2",
+ ["weapon_marksmanpistol"] = "射手手枪",
+ ["weapon_pistol"] = "手枪",
+ ["weapon_pistol_mk2"] = "手枪-MK2",
+ ["weapon_pistol50"] = "0.5-口径手枪",
+ ["weapon_snspistol"] = "劣质手枪",
+ ["weapon_snspistol_mk2"] = "劣质手枪-MK2",
+ ["weapon_stungun"] = "电击枪",
+ ["weapon_raypistol"] = "原子堡手枪",
+ ["weapon_vintagepistol"] = "老式手枪",
+
+ -- Shotguns
+ ["weapon_assaultshotgun"] = "突击霰弹枪",
+ ["weapon_autoshotgun"] = "半自动霰弹枪",
+ ["weapon_bullpupshotgun"] = "无托式霰弹枪",
+ ["weapon_combatshotgun"] = "战斗霰弹枪",
+ ["weapon_dbshotgun"] = "双管霰弹枪",
+ ["weapon_heavyshotgun"] = "重型霰弹枪",
+ ["weapon_musket"] = "老式火枪",
+ ["weapon_pumpshotgun"] = "泵动式霰弹枪",
+ ["weapon_pumpshotgun_mk2"] = "泵动式霰弹枪-MK2",
+ ["weapon_sawnoffshotgun"] = "短管霰弹枪",
+
+ -- SMG & LMG
+ ["weapon_assaultsmg"] = "突击冲锋枪",
+ ["weapon_combatmg"] = "战斗机枪",
+ ["weapon_combatmg_mk2"] = "战斗机枪-MK2",
+ ["weapon_combatpdw"] = "作战自卫冲锋枪",
+ ["weapon_gusenberg"] = "古森柏冲锋枪",
+ ["weapon_machinepistol"] = "冲锋手枪",
+ ["weapon_mg"] = "机枪",
+ ["weapon_microsmg"] = "微型冲锋枪",
+ ["weapon_minismg"] = "迷你冲锋枪",
+ ["weapon_smg"] = "冲锋枪",
+ ["weapon_smg_mk2"] = "冲锋枪-MK2",
+ ["weapon_raycarbine"] = "不洁使者",
+
+ -- Rifles
+ ["weapon_advancedrifle"] = "高级步枪",
+ ["weapon_assaultrifle"] = "突击步枪",
+ ["weapon_assaultrifle_mk2"] = "突击步枪-MK2",
+ ["weapon_bullpuprifle"] = "无托式步枪",
+ ["weapon_bullpuprifle_mk2"] = "无托式步枪-MK2",
+ ["weapon_carbinerifle"] = "卡宾步枪",
+ ["weapon_carbinerifle_mk2"] = "卡宾步枪-MK2",
+ ["weapon_compactrifle"] = "紧凑型步枪",
+ ["weapon_militaryrifle"] = "军用步枪",
+ ["weapon_specialcarbine"] = "特制卡宾步枪",
+ ["weapon_specialcarbine_mk2"] = "特制卡宾步枪-MK2",
+ ["weapon_heavyrifle"] = "Heavy Rifle", -- Not Translated
+
+ -- Sniper
+ ["weapon_heavysniper"] = "重型狙击步枪",
+ ["weapon_heavysniper_mk2"] = "重型狙击步枪-MK2",
+ ["weapon_marksmanrifle"] = "射手步枪",
+ ["weapon_marksmanrifle_mk2"] = "射手步枪-MK2",
+ ["weapon_sniperrifle"] = "狙击步枪",
+
+ -- Heavy / Launchers
+ ["weapon_compactlauncher"] = "紧凑型榴弹发射器",
+ ["weapon_firework"] = "烟花发射器",
+ ["weapon_grenadelauncher"] = "榴弹发射器",
+ ["weapon_hominglauncher"] = "制导火箭发射器",
+ ["weapon_minigun"] = "火神机枪",
+ ["weapon_railgun"] = "电磁轨道炮",
+ ["weapon_rpg"] = "火箭炮",
+ ["weapon_rayminigun"] = "寡妇制造者",
+
+ -- Criminal Enterprises DLC
+ ["weapon_metaldetector"] = "金属探测器",
+ ["weapon_precisionrifle"] = "精确步枪",
+ ["weapon_tactilerifle"] = "制式卡宾步枪",
+
+ -- Drug Wars DLC
+ ["weapon_candycane"] = "Candy Cane", -- not translated
+ ["weapon_acidpackage"] = "Acid Package", -- not translated
+ ["weapon_pistolxm3"] = "WM 29 Pistol", -- not translated
+ ["weapon_railgunxm3"] = "Railgun", -- not translated
+
+ -- Thrown
+ ["weapon_ball"] = "棒球",
+ ["weapon_bzgas"] = "毒气弹",
+ ["weapon_flare"] = "信号棒",
+ ["weapon_grenade"] = "手榴弹",
+ ["weapon_petrolcan"] = "汽油桶",
+ ["weapon_hazardcan"] = "有害汽油桶",
+ ["weapon_molotov"] = "汽油弹",
+ ["weapon_proxmine"] = "感应式地雷",
+ ["weapon_pipebomb"] = "土製炸彈",
+ ["weapon_snowball"] = "雪球",
+ ["weapon_stickybomb"] = "黏弹",
+ ["weapon_smokegrenade"] = "烟雾弹",
+
+ -- Special
+ ["weapon_fireextinguisher"] = "灭火器",
+ ["weapon_digiscanner"] = "数位扫描仪",
+ ["weapon_garbagebag"] = "垃圾袋",
+ ["weapon_handcuffs"] = "手铐",
+ ["gadget_nightvision"] = "夜视仪",
+ ["gadget_parachute"] = "降落伞",
+
+ -- Weapon Components
+ ["component_knuckle_base"] = "基本样式",
+ ["component_knuckle_pimp"] = "皮条客",
+ ["component_knuckle_ballas"] = "巴拉斯帮",
+ ["component_knuckle_dollar"] = "江湖骗子",
+ ["component_knuckle_diamond"] = "摇滚朋克",
+ ["component_knuckle_hate"] = "怨气冤家",
+ ["component_knuckle_love"] = "甜蜜情人",
+ ["component_knuckle_player"] = "花花公子",
+ ["component_knuckle_king"] = "霸者之风",
+ ["component_knuckle_vagos"] = "维戈斯帮",
+
+ ["component_luxary_finish"] = "奢华涂饰",
+
+ ["component_handle_default"] = "默认刀柄",
+ ["component_handle_vip"] = "贵宾样式",
+ ["component_handle_bodyguard"] = "保镖款式",
+
+ ["component_vip_finish"] = "贵宾样式",
+ ["component_bodyguard_finish"] = "保镖款式",
+
+ ["component_camo_finish"] = "数码迷彩",
+ ["component_camo_finish2"] = "笔刷迷彩",
+ ["component_camo_finish3"] = "林地迷彩",
+ ["component_camo_finish4"] = "骷髅头",
+ ["component_camo_finish5"] = "希斯提·耐",
+ ["component_camo_finish6"] = "神之子",
+ ["component_camo_finish7"] = "猎豹纹理",
+ ["component_camo_finish8"] = "斑马纹理",
+ ["component_camo_finish9"] = "几何图形",
+ ["component_camo_finish10"] = "BOOM!",
+ ["component_camo_finish11"] = "爱国者",
+
+ ["component_camo_slide_finish"] = "数码迷涂装",
+ ["component_camo_slide_finish2"] = "笔刷迷彩涂装",
+ ["component_camo_slide_finish3"] = "林地迷彩涂装",
+ ["component_camo_slide_finish4"] = "骷髅头涂装",
+ ["component_camo_slide_finish5"] = "希斯提·耐涂装",
+ ["component_camo_slide_finish6"] = "神之子涂装",
+ ["component_camo_slide_finish7"] = "猎豹纹理涂装",
+ ["component_camo_slide_finish8"] = "斑马纹理涂装",
+ ["component_camo_slide_finish9"] = "几何图形涂装",
+ ["component_camo_slide_finish10"] = "BOOM涂装",
+ ["component_camo_slide_finish11"] = "爱国者涂装",
+
+ ["component_clip_default"] = "默认弹夹",
+ ["component_clip_extended"] = "扩容弹夹",
+ ["component_clip_drum"] = "鼓式弹夹",
+ ["component_clip_box"] = "盒型弹匣",
+
+ ["component_scope_holo"] = "全息式瞄准镜",
+ ["component_scope_small"] = "小型瞄准镜",
+ ["component_scope_medium"] = "中型瞄准镜",
+ ["component_scope_large"] = "大型瞄准镜",
+ ["component_scope"] = "瞄准镜",
+ ["component_scope_advanced"] = "高级瞄准镜",
+ ["component_ironsights"] = "铁式瞄具",
+
+ ["component_suppressor"] = "消音器",
+ ["component_compensator"] = "补偿器",
+
+ ["component_muzzle_flat"] = "扁型枪口制动器",
+ ["component_muzzle_tactical"] = "战术枪口制动器",
+ ["component_muzzle_fat"] = "宽尾型枪口制动器",
+ ["component_muzzle_precision"] = "精準枪口制动器",
+ ["component_muzzle_heavy"] = "耐用型枪口制动器",
+ ["component_muzzle_slanted"] = "倾斜型枪口制动器",
+ ["component_muzzle_split"] = "分岔型枪口制动器",
+ ["component_muzzle_squared"] = "方形枪口制动器",
+
+ ["component_flashlight"] = "手电筒",
+ ["component_grip"] = "握把",
+
+ ["component_barrel_default"] = "默认枪管",
+ ["component_barrel_heavy"] = "重型枪管",
+
+ ["component_ammo_tracer"] = "曳光弹",
+ ["component_ammo_incendiary"] = "燃烧弹",
+ ["component_ammo_hollowpoint"] = "被甲空尖弹",
+ ["component_ammo_fmj"] = "全金属包裹弹",
+ ["component_ammo_armor"] = "穿甲弹",
+ ["component_ammo_explosive"] = "爆炸蛋弹",
+
+ ["component_shells_default"] = "默认弹药",
+ ["component_shells_incendiary"] = "燃烧弹",
+ ["component_shells_armor"] = "钢式猎鹿蛋",
+ ["component_shells_hollowpoint"] = "被甲空尖弹",
+ ["component_shells_explosive"] = "爆裂弹",
+
+ -- Weapon Ammo
+ ["ammo_rounds"] = "发(子弹)",
+ ["ammo_shells"] = "发(子弹)",
+ ["ammo_charge"] = "喷",
+ ["ammo_petrol"] = "加仑(燃料)",
+ ["ammo_firework"] = "发(烟花弹)",
+ ["ammo_rockets"] = "枚(火箭弹)",
+ ["ammo_grenadelauncher"] = "发(榴弹)",
+ ["ammo_grenade"] = "枚(手榴弹)",
+ ["ammo_stickybomb"] = "枚(炸弹)",
+ ["ammo_pipebomb"] = "枚(炸弹)",
+ ["ammo_smokebomb"] = "枚(炸彈)",
+ ["ammo_molotov"] = "瓶(燃烧瓶)",
+ ["ammo_proxmine"] = "个(地雷)",
+ ["ammo_bzgas"] = "罐",
+ ["ammo_ball"] = "个(棒球)",
+ ["ammo_snowball"] = "个(雪球)",
+ ["ammo_flare"] = "根(信号棒)",
+ ["ammo_flaregun"] = "发(信号弹)",
+
+ -- Weapon Tints
+ ["tint_default"] = "默认色调",
+ ["tint_green"] = "绿色调",
+ ["tint_gold"] = "金色调",
+ ["tint_pink"] = "粉色调",
+ ["tint_army"] = "军用色调",
+ ["tint_lspd"] = "洛圣都警局色调",
+ ["tint_orange"] = "橙色调",
+ ["tint_platinum"] = "铂金色调",
+}
diff --git a/server-data/resources/[esx]/es_extended/server/classes/player.lua b/server-data/resources/[esx]/es_extended/server/classes/player.lua
index 41e3be7fc..9e6e14dcd 100644
--- a/server-data/resources/[esx]/es_extended/server/classes/player.lua
+++ b/server-data/resources/[esx]/es_extended/server/classes/player.lua
@@ -273,7 +273,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
function self.setAccountMoney(accountName, money, reason)
reason = reason or "unknown"
if not tonumber(money) then
- print(("[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7"):format(accountName, self.playerId, money))
+ error(("Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7"):format(accountName, self.playerId, money))
return
end
if money >= 0 then
@@ -286,10 +286,10 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
self.triggerEvent("esx:setAccountMoney", account)
_TriggerEvent("esx:setAccountMoney", self.source, accountName, money, reason)
else
- print(("[^1ERROR^7] Tried To Set Invalid Account ^5%s^0 For Player ^5%s^0!"):format(accountName, self.playerId))
+ error(("Tried To Set Invalid Account ^5%s^0 For Player ^5%s^0!"):format(accountName, self.playerId))
end
else
- print(("[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7"):format(accountName, self.playerId, money))
+ error(("Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7"):format(accountName, self.playerId, money))
end
end
@@ -300,7 +300,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
function self.addAccountMoney(accountName, money, reason)
reason = reason or "Unknown"
if not tonumber(money) then
- print(("[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7"):format(accountName, self.playerId, money))
+ error(("Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7"):format(accountName, self.playerId, money))
return
end
if money > 0 then
@@ -312,10 +312,10 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
self.triggerEvent("esx:setAccountMoney", account)
_TriggerEvent("esx:addAccountMoney", self.source, accountName, money, reason)
else
- print(("[^1ERROR^7] Tried To Set Add To Invalid Account ^5%s^0 For Player ^5%s^0!"):format(accountName, self.playerId))
+ error(("Tried To Set Add To Invalid Account ^5%s^0 For Player ^5%s^0!"):format(accountName, self.playerId))
end
else
- print(("[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7"):format(accountName, self.playerId, money))
+ error(("Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7"):format(accountName, self.playerId, money))
end
end
@@ -326,7 +326,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
function self.removeAccountMoney(accountName, money, reason)
reason = reason or "Unknown"
if not tonumber(money) then
- print(("[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7"):format(accountName, self.playerId, money))
+ error(("Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7"):format(accountName, self.playerId, money))
return
end
if money > 0 then
@@ -335,7 +335,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
if account then
money = account.round and ESX.Math.Round(money) or money
if self.accounts[account.index].money - money > self.accounts[account.index].money then
- print(("[^1ERROR^7] Tried To Underflow Account ^5%s^0 For Player ^5%s^0!"):format(accountName, self.playerId))
+ error(("Tried To Underflow Account ^5%s^0 For Player ^5%s^0!"):format(accountName, self.playerId))
return
end
self.accounts[account.index].money = self.accounts[account.index].money - money
@@ -343,10 +343,10 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
self.triggerEvent("esx:setAccountMoney", account)
_TriggerEvent("esx:removeAccountMoney", self.source, accountName, money, reason)
else
- print(("[^1ERROR^7] Tried To Set Add To Invalid Account ^5%s^0 For Player ^5%s^0!"):format(accountName, self.playerId))
+ error(("Tried To Set Add To Invalid Account ^5%s^0 For Player ^5%s^0!"):format(accountName, self.playerId))
end
else
- print(("[^1ERROR^7] Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7"):format(accountName, self.playerId, money))
+ error(("Tried To Set Account ^5%s^0 For Player ^5%s^0 To An Invalid Number -> ^5%s^7"):format(accountName, self.playerId, money))
end
end
@@ -396,7 +396,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
self.triggerEvent("esx:removeInventoryItem", item.name, item.count)
end
else
- print(("[^1ERROR^7] Player ID:^5%s Tried remove a Invalid count -> %s of %s"):format(self.playerId, count, itemName))
+ error(("Player ID:^5%s Tried remove a Invalid count -> %s of %s"):format(self.playerId, count, itemName))
end
end
end
@@ -598,7 +598,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
local weaponLabel, playerPed = nil, _GetPlayerPed(self.source)
if not playerPed then
- return print("[^1ERROR^7] xPlayer.removeWeapon ^5invalid^7 player ped!")
+ return error("xPlayer.removeWeapon ^5invalid^7 player ped!")
end
for k, v in ipairs(self.loadout) do
@@ -755,12 +755,12 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
end
if type(index) ~= "string" then
- return print("[^1ERROR^7] xPlayer.getMeta ^5index^7 should be ^5string^7!")
+ return error("xPlayer.getMeta ^5index^7 should be ^5string^7!")
end
local metaData = self.metadata[index]
if metaData == nil then
- return Config.EnableDebug and print(("[^1ERROR^7] xPlayer.getMeta ^5%s^7 not exist!"):format(index)) or nil
+ return Config.EnableDebug and error(("xPlayer.getMeta ^5%s^7 not exist!"):format(index)) or nil
end
if subIndex and type(metaData) == "table" then
@@ -779,14 +779,14 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
if type(key) == "string" then
returnValues[key] = self.getMeta(index, key)
else
- print(("[^1ERROR^7] xPlayer.getMeta subIndex should be ^5string^7 or ^5table^7! that contains ^5string^7, received ^5%s^7!, skipping..."):format(type(key)))
+ error(("xPlayer.getMeta subIndex should be ^5string^7 or ^5table^7! that contains ^5string^7, received ^5%s^7!, skipping..."):format(type(key)))
end
end
return returnValues
end
- return print(("[^1ERROR^7] xPlayer.getMeta subIndex should be ^5string^7 or ^5table^7!, received ^5%s^7!"):format(_type))
+ return error(("xPlayer.getMeta subIndex should be ^5string^7 or ^5table^7!, received ^5%s^7!"):format(_type))
end
return metaData
@@ -798,28 +798,28 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
---@return void
function self.setMeta(index, value, subValue)
if not index then
- return print("[^1ERROR^7] xPlayer.setMeta ^5index^7 is Missing!")
+ return error("xPlayer.setMeta ^5index^7 is Missing!")
end
if type(index) ~= "string" then
- return print("[^1ERROR^7] xPlayer.setMeta ^5index^7 should be ^5string^7!")
+ return error("xPlayer.setMeta ^5index^7 should be ^5string^7!")
end
if value == nil then
- return print("[^1ERROR^7] xPlayer.setMeta value is missing!")
+ return error("xPlayer.setMeta value is missing!")
end
local _type = type(value)
if not subValue then
if _type ~= "number" and _type ~= "string" and _type ~= "table" then
- return print(("[^1ERROR^7] xPlayer.setMeta ^5%s^7 should be ^5number^7 or ^5string^7 or ^5table^7!"):format(value))
+ return error(("xPlayer.setMeta ^5%s^7 should be ^5number^7 or ^5string^7 or ^5table^7!"):format(value))
end
self.metadata[index] = value
else
if _type ~= "string" then
- return print(("[^1ERROR^7] xPlayer.setMeta ^5value^7 should be ^5string^7 as a subIndex!"):format(value))
+ return error(("xPlayer.setMeta ^5value^7 should be ^5string^7 as a subIndex!"):format(value))
end
if not self.metadata[index] or type(self.metadata[index]) ~= "table" then
@@ -829,22 +829,21 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
self.metadata[index] = type(self.metadata[index]) == "table" and self.metadata[index] or {}
self.metadata[index][value] = subValue
end
-
self.triggerEvent("esx:updatePlayerData", "metadata", self.metadata)
end
function self.clearMeta(index, subValues)
if not index then
- return print("[^1ERROR^7] xPlayer.clearMeta ^5index^7 is Missing!")
+ return error("xPlayer.clearMeta ^5index^7 is Missing!")
end
if type(index) ~= "string" then
- return print("[^1ERROR^7] xPlayer.clearMeta ^5index^7 should be ^5string^7!")
+ return error("xPlayer.clearMeta ^5index^7 should be ^5string^7!")
end
local metaData = self.metadata[index]
if metaData == nil then
- return Config.EnableDebug and print(("[^1ERROR^7] xPlayer.clearMeta ^5%s^7 does not exist!"):format(index)) or nil
+ return Config.EnableDebug and error(("xPlayer.clearMeta ^5%s^7 does not exist!"):format(index)) or nil
end
if not subValues then
@@ -855,7 +854,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
if type(metaData) == "table" then
metaData[subValues] = nil
else
- return print(("[^1ERROR^7] xPlayer.clearMeta ^5%s^7 is not a table! Cannot clear subValue ^5%s^7."):format(index, subValues))
+ return error(("xPlayer.clearMeta ^5%s^7 is not a table! Cannot clear subValue ^5%s^7."):format(index, subValues))
end
elseif type(subValues) == "table" then
-- If subValues is a table, we will clear multiple subValues within the table
@@ -865,17 +864,16 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
if type(metaData) == "table" then
metaData[subValue] = nil
else
- print(("[^1ERROR^7] xPlayer.clearMeta ^5%s^7 is not a table! Cannot clear subValue ^5%s^7."):format(index, subValue))
+ error(("xPlayer.clearMeta ^5%s^7 is not a table! Cannot clear subValue ^5%s^7."):format(index, subValue))
end
else
- print(("[^1ERROR^7] xPlayer.clearMeta subValues should contain ^5string^7, received ^5%s^7, skipping..."):format(type(subValue)))
+ error(("xPlayer.clearMeta subValues should contain ^5string^7, received ^5%s^7, skipping..."):format(type(subValue)))
end
end
else
- return print(("[^1ERROR^7] xPlayer.clearMeta ^5subValues^7 should be ^5string^7 or ^5table^7, received ^5%s^7!"):format(type(subValues)))
+ return error(("xPlayer.clearMeta ^5subValues^7 should be ^5string^7 or ^5table^7, received ^5%s^7!"):format(type(subValues)))
end
-
- self.triggerEvent('esx:updatePlayerData', 'metadata', self.metadata)
+ self.triggerEvent("esx:updatePlayerData", "metadata", self.metadata)
end
for fnName, fn in pairs(targetOverrides) do
diff --git a/server-data/resources/[esx]/es_extended/server/common.lua b/server-data/resources/[esx]/es_extended/server/common.lua
index 6de1cacb7..90ecb8ac2 100644
--- a/server-data/resources/[esx]/es_extended/server/common.lua
+++ b/server-data/resources/[esx]/es_extended/server/common.lua
@@ -20,7 +20,7 @@ end)
AddEventHandler("esx:getSharedObject", function()
local Invoke = GetInvokingResource()
- print(("[^1ERROR^7] Resource ^5%s^7 Used the ^5getSharedObject^7 Event, this event ^1no longer exists!^7 Visit https://bitpredator.github.io/bptdevelopment/docs/esx-tutorial/sharedevent for how to fix!"):format(Invoke))
+ error(("Resource ^5%s^7 Used the ^5getSharedObject^7 Event, this event ^1no longer exists!^7 Visit https://bitpredator.github.io/bptdevelopment/docs/FiveM/sharedevent/ for how to fix!"):format(Invoke))
end)
exports("getSharedObject", function()
diff --git a/server-data/resources/[esx]/es_extended/server/main.lua b/server-data/resources/[esx]/es_extended/server/main.lua
index b28bd5cdb..66cd5bd49 100644
--- a/server-data/resources/[esx]/es_extended/server/main.lua
+++ b/server-data/resources/[esx]/es_extended/server/main.lua
@@ -240,7 +240,7 @@ function loadESXPlayer(identifier, playerId, isNew)
end
-- Position
- userData.coords = json.decode(result.position) or Config.DefaultSpawns[math.random(#Config.DefaultSpawns)]
+ userData.coords = json.decode(result.position) or Config.DefaultSpawns[ESX.Math.Random(1,#Config.DefaultSpawns)]
-- Skin
userData.skin = (result.skin and result.skin ~= "") and json.decode(result.skin) or { sex = userData.sex == "f" and 1 or 0 }
@@ -306,7 +306,7 @@ end
AddEventHandler("chatMessage", function(playerId, _, message)
local xPlayer = ESX.GetPlayerFromId(playerId)
- if message:sub(1, 1) == "/" and playerId > 0 then
+ if xPlayer and message:sub(1, 1) == "/" and playerId > 0 then
CancelEvent()
local commandName = message:sub(1):gmatch("%w+")()
xPlayer.showNotification(TranslateCap("commanderror_invalidcommand", commandName))
@@ -689,13 +689,13 @@ AddEventHandler("onResourceStart", function(key)
end
StopResource(key)
- print(("[^1ERROR^7] WE STOPPED A RESOURCE THAT WILL BREAK ^1ESX^7, PLEASE REMOVE ^5%s^7"):format(key))
+ error(("WE STOPPED A RESOURCE THAT WILL BREAK ^1ESX^7, PLEASE REMOVE ^5%s^7"):format(key))
end
end)
for key in pairs(DoNotUse) do
if GetResourceState(key) == "started" or GetResourceState(key) == "starting" then
StopResource(key)
- print(("[^1ERROR^7] WE STOPPED A RESOURCE THAT WILL BREAK ^1ESX^7, PLEASE REMOVE ^5%s^7"):format(key))
+ error(("WE STOPPED A RESOURCE THAT WILL BREAK ^1ESX^7, PLEASE REMOVE ^5%s^7"):format(key))
end
end
diff --git a/server-data/resources/[esx]/es_extended/server/modules/callback.lua b/server-data/resources/[esx]/es_extended/server/modules/callback.lua
index 6a1bc7ae9..9fad6bfca 100644
--- a/server-data/resources/[esx]/es_extended/server/modules/callback.lua
+++ b/server-data/resources/[esx]/es_extended/server/modules/callback.lua
@@ -11,7 +11,7 @@ end
RegisterNetEvent("esx:triggerServerCallback", function(eventName, requestId, invoker, ...)
if not serverCallbacks[eventName] then
- return print(("[^1ERROR^7] Server Callback not registered, name: ^5%s^7, invoker resource: ^5%s^7"):format(eventName, invoker))
+ return error(("Server Callback not registered, name: ^5%s^7, invoker resource: ^5%s^7"):format(eventName, invoker))
end
local source = source
@@ -35,7 +35,7 @@ end
RegisterNetEvent("esx:clientCallback", function(requestId, invoker, ...)
if not clientRequests[requestId] then
- return print(("[^1ERROR^7] Client Callback with requestId ^5%s^7 Was Called by ^5%s^7 but does not exist."):format(requestId, invoker))
+ return error(("Client Callback with requestId ^5%s^7 Was Called by ^5%s^7 but does not exist."):format(requestId, invoker))
end
clientRequests[requestId](...)
diff --git a/server-data/resources/[esx]/es_extended/server/modules/createJob.lua b/server-data/resources/[esx]/es_extended/server/modules/createJob.lua
index e156fa11a..432d0f1b0 100644
--- a/server-data/resources/[esx]/es_extended/server/modules/createJob.lua
+++ b/server-data/resources/[esx]/es_extended/server/modules/createJob.lua
@@ -19,18 +19,6 @@ local function doesJobAndGradesExist(name, grades)
return true
end
-local function generateTransactionQueries(name,grades)
- local queries = {}
- for _, grade in ipairs(grades) do
- queries[#queries+1] = {
- query = 'INSERT INTO job_grades (job_name, grade, name, label, salary, skin_male, skin_female) VALUES (?, ?, ?, ?, ?, ?, ?)',
- values = {name, grade.grade, grade.name, grade.label, grade.salary, '{}', '{}'}
- }
- end
-
- return queries
-end
-
local function generateNewJobTable(name, label, grades)
local job = { name = name, label = label, grades = {} }
for _, v in pairs(grades) do
@@ -60,43 +48,47 @@ function ESX.CreateJob(name, label, grades)
if not name or name == '' then
notify("ERROR",currentResourceName, 'Missing argument `name`')
- return
+ return success
end
+
if not label or label == '' then
notify("ERROR",currentResourceName, 'Missing argument `label`')
- return
+ return success
end
+
if not grades or not next(grades) then
notify("ERROR",currentResourceName, 'Missing argument `grades`')
- return
+ return success
end
local currentJobExist = doesJobAndGradesExist(name, grades)
if currentJobExist then
notify("ERROR",currentResourceName, 'Job or grades already exists: `%s`', name)
- return
+ return success
end
- MySQL.insert('INSERT IGNORE INTO jobs (name, label) VALUES (?, ?)', {name, label}, function(jobId)
- if jobId == nil or jobId == 0 then
- notify("ERROR",currentResourceName, 'Failed to insert job: `%s`', name)
- return
- end
-
- local queries = generateTransactionQueries(name, grades)
-
- MySQL.transaction(queries, function(results)
- success = results
- if not results then
- notify("ERROR",currentResourceName, 'Failed to insert one or more grades for job: `%s`', name)
- return
- end
-
- ESX.Jobs[name] = generateNewJobTable(name,label,grades)
- notify("SUCCESS",currentResourceName, 'Job created successfully: `%s`', name)
- end)
- end)
+ local queries = {
+ { query = 'INSERT INTO jobs (name, label) VALUES (?, ?)', values = { name, label } }
+ }
+
+ for _, grade in ipairs(grades) do
+ queries[#queries + 1] = {
+ query = 'INSERT INTO job_grades (job_name, grade, name, label, salary, skin_male, skin_female) VALUES (?, ?, ?, ?, ?, ?, ?)',
+ values = { name, grade.grade, grade.name, grade.label, grade.salary, '{}', '{}' }
+ }
+ end
+
+ success = exports.oxmysql:transaction_async(queries)
+
+ if not success then
+ notify("ERROR", currentResourceName, 'Failed to insert one or more grades for job: `%s`', name)
+ return success
+ end
+
+ ESX.Jobs[name] = generateNewJobTable(name, label, grades)
+
+ notify("SUCCESS", currentResourceName, 'Job created successfully: `%s`', name)
return success
end
diff --git a/server-data/resources/[esx]/es_extended/server/onesync.lua b/server-data/resources/[esx]/es_extended/server/onesync.lua
index ed2324bea..cb4ad40a1 100644
--- a/server-data/resources/[esx]/es_extended/server/onesync.lua
+++ b/server-data/resources/[esx]/es_extended/server/onesync.lua
@@ -93,14 +93,14 @@ function ESX.OneSync.SpawnVehicle(model, coords, heading, properties, cb)
if vehicleType then
local createdVehicle = CreateVehicleServerSetter(vehicleModel, vehicleType, coords, heading)
if not DoesEntityExist(createdVehicle) then
- return print("[^1ERROR^7] Unfortunately, this vehicle has not spawned")
+ return error("Unfortunately, this vehicle has not spawned")
end
local networkId = NetworkGetNetworkIdFromEntity(createdVehicle)
Entity(createdVehicle).state:set("VehicleProperties", vehicleProperties, true)
cb(networkId)
else
- print(("[^1ERROR^7] Tried to spawn invalid vehicle - ^5%s^7!"):format(model))
+ error(("Tried to spawn invalid vehicle - ^5%s^7!"):format(model))
end
end)
end)
diff --git a/server-data/resources/[esx]/esx_menu_default/html/js/app.js b/server-data/resources/[esx]/esx_menu_default/html/js/app.js
index 36b960d1b..6c4416dac 100644
--- a/server-data/resources/[esx]/esx_menu_default/html/js/app.js
+++ b/server-data/resources/[esx]/esx_menu_default/html/js/app.js
@@ -1,366 +1,371 @@
-(function () {
- let MenuTpl =
+(function() {
+ const MenuTpl =
'" +
- "";
- window.ESX_MENU = {};
- ESX_MENU.ResourceName = "esx_menu_default";
- ESX_MENU.opened = {};
- ESX_MENU.focus = [];
- ESX_MENU.pos = {};
-
- ESX_MENU.open = function (namespace, name, data) {
- if (typeof ESX_MENU.opened[namespace] === "undefined") {
- ESX_MENU.opened[namespace] = {};
- }
-
- if (typeof ESX_MENU.opened[namespace][name] != "undefined") {
- ESX_MENU.close(namespace, name);
- }
-
- if (typeof ESX_MENU.pos[namespace] === "undefined") {
- ESX_MENU.pos[namespace] = {};
- }
-
- for (let i = 0; i < data.elements.length; i++) {
- if (typeof data.elements[i].type === "undefined") {
- data.elements[i].type = "default";
- }
- }
-
- data._index = ESX_MENU.focus.length;
- data._namespace = namespace;
- data._name = name;
-
- for (let i = 0; i < data.elements.length; i++) {
- data.elements[i]._namespace = namespace;
- data.elements[i]._name = name;
- }
-
- ESX_MENU.opened[namespace][name] = data;
- ESX_MENU.pos[namespace][name] = 0;
-
- for (let i = 0; i < data.elements.length; i++) {
- if (data.elements[i].selected) {
- ESX_MENU.pos[namespace][name] = i;
- } else {
- data.elements[i].selected = false;
- }
- }
-
- ESX_MENU.focus.push({
- namespace: namespace,
- name: name,
- });
-
- ESX_MENU.render();
- $("#menu_" + namespace + "_" + name)
- .find(".menu-item.selected")[0]
- .scrollIntoView();
- };
-
- ESX_MENU.close = function (namespace, name) {
- delete ESX_MENU.opened[namespace][name];
-
- for (let i = 0; i < ESX_MENU.focus.length; i++) {
- if (ESX_MENU.focus[i].namespace === namespace && ESX_MENU.focus[i].name === name) {
- ESX_MENU.focus.splice(i, 1);
- break;
- }
- }
-
- ESX_MENU.render();
- };
-
- ESX_MENU.render = function () {
- let menuContainer = document.getElementById("menus");
- let focused = ESX_MENU.getFocused();
- menuContainer.innerHTML = "";
- $(menuContainer).hide();
-
- for (let namespace in ESX_MENU.opened) {
- for (let name in ESX_MENU.opened[namespace]) {
- let menuData = ESX_MENU.opened[namespace][name];
- let view = JSON.parse(JSON.stringify(menuData));
-
- for (let i = 0; i < menuData.elements.length; i++) {
- let element = view.elements[i];
-
- switch (element.type) {
- case "default":
- break;
-
- case "slider": {
- element.isSlider = true;
- element.sliderLabel = typeof element.options === "undefined" ? element.value : element.options[element.value];
-
- break;
- }
-
- default:
- break;
- }
-
- if (i === ESX_MENU.pos[namespace][name]) {
- element.selected = true;
- }
- }
-
- let menu = $(Mustache.render(MenuTpl, view))[0];
- $(menu).hide();
- menuContainer.appendChild(menu);
- }
- }
-
- if (typeof focused != "undefined") {
- $("#menu_" + focused.namespace + "_" + focused.name).show();
- }
-
- $(menuContainer).show();
- };
-
- ESX_MENU.submit = function (namespace, name, data) {
- $.post(
- "http://" + ESX_MENU.ResourceName + "/menu_submit",
- JSON.stringify({
- _namespace: namespace,
- _name: name,
- current: data,
- elements: ESX_MENU.opened[namespace][name].elements,
- })
- );
- };
-
- ESX_MENU.cancel = function (namespace, name) {
- $.post(
- "http://" + ESX_MENU.ResourceName + "/menu_cancel",
- JSON.stringify({
- _namespace: namespace,
- _name: name,
- })
- );
- };
-
- ESX_MENU.change = function (namespace, name, data) {
- $.post(
- "http://" + ESX_MENU.ResourceName + "/menu_change",
- JSON.stringify({
- _namespace: namespace,
- _name: name,
- current: data,
- elements: ESX_MENU.opened[namespace][name].elements,
- })
- );
- };
-
- ESX_MENU.getFocused = function () {
- return ESX_MENU.focus[ESX_MENU.focus.length - 1];
- };
-
- window.onData = (data) => {
- switch (data.action) {
- case "openMenu": {
- ESX_MENU.open(data.namespace, data.name, data.data);
- break;
- }
-
- case "closeMenu": {
- ESX_MENU.close(data.namespace, data.name);
- break;
- }
-
- case "controlPressed": {
- switch (data.control) {
- case "ENTER": {
- let focused = ESX_MENU.getFocused();
-
- if (typeof focused != "undefined") {
- let menu = ESX_MENU.opened[focused.namespace][focused.name];
- let pos = ESX_MENU.pos[focused.namespace][focused.name];
- let elem = menu.elements[pos];
-
- if (menu.elements.length > 0) {
- ESX_MENU.submit(focused.namespace, focused.name, elem);
- }
- }
-
- break;
- }
-
- case "BACKSPACE": {
- let focused = ESX_MENU.getFocused();
-
- if (typeof focused != "undefined") {
- ESX_MENU.cancel(focused.namespace, focused.name);
- }
-
- break;
- }
-
- case "TOP": {
- let focused = ESX_MENU.getFocused();
-
- if (typeof focused != "undefined") {
- let menu = ESX_MENU.opened[focused.namespace][focused.name];
- let pos = ESX_MENU.pos[focused.namespace][focused.name];
-
- if (pos > 0) {
- ESX_MENU.pos[focused.namespace][focused.name]--;
- } else {
- ESX_MENU.pos[focused.namespace][focused.name] = menu.elements.length - 1;
- }
-
- let elem = menu.elements[ESX_MENU.pos[focused.namespace][focused.name]];
-
- for (let i = 0; i < menu.elements.length; i++) {
- if (i === ESX_MENU.pos[focused.namespace][focused.name]) {
- menu.elements[i].selected = true;
- } else {
- menu.elements[i].selected = false;
- }
- }
-
- ESX_MENU.change(focused.namespace, focused.name, elem);
- ESX_MENU.render();
-
- $("#menu_" + focused.namespace + "_" + focused.name)
- .find(".menu-item.selected")[0]
- .scrollIntoView();
- }
-
- break;
- }
-
- case "DOWN": {
- let focused = ESX_MENU.getFocused();
-
- if (typeof focused != "undefined") {
- let menu = ESX_MENU.opened[focused.namespace][focused.name];
- let pos = ESX_MENU.pos[focused.namespace][focused.name];
- let length = menu.elements.length;
-
- if (pos < length - 1) {
- ESX_MENU.pos[focused.namespace][focused.name]++;
- } else {
- ESX_MENU.pos[focused.namespace][focused.name] = 0;
- }
-
- let elem = menu.elements[ESX_MENU.pos[focused.namespace][focused.name]];
-
- for (let i = 0; i < menu.elements.length; i++) {
- if (i === ESX_MENU.pos[focused.namespace][focused.name]) {
- menu.elements[i].selected = true;
- } else {
- menu.elements[i].selected = false;
- }
- }
-
- ESX_MENU.change(focused.namespace, focused.name, elem);
- ESX_MENU.render();
-
- $("#menu_" + focused.namespace + "_" + focused.name)
- .find(".menu-item.selected")[0]
- .scrollIntoView();
- }
-
- break;
- }
-
- case "LEFT": {
- let focused = ESX_MENU.getFocused();
-
- if (typeof focused != "undefined") {
- let menu = ESX_MENU.opened[focused.namespace][focused.name];
- let pos = ESX_MENU.pos[focused.namespace][focused.name];
- let elem = menu.elements[pos];
-
- switch (elem.type) {
- case "default":
- break;
-
- case "slider": {
- let min = typeof elem.min === "undefined" ? 0 : elem.min;
-
- if (elem.value > min) {
- elem.value--;
- ESX_MENU.change(focused.namespace, focused.name, elem);
- }
-
- ESX_MENU.render();
- break;
- }
-
- default:
- break;
- }
-
- $("#menu_" + focused.namespace + "_" + focused.name)
- .find(".menu-item.selected")[0]
- .scrollIntoView();
- }
-
- break;
- }
-
- case "RIGHT": {
- let focused = ESX_MENU.getFocused();
-
- if (typeof focused != "undefined") {
- let menu = ESX_MENU.opened[focused.namespace][focused.name];
- let pos = ESX_MENU.pos[focused.namespace][focused.name];
- let elem = menu.elements[pos];
-
- switch (elem.type) {
- case "default":
- break;
-
- case "slider": {
- if (typeof elem.options != "undefined" && elem.value < elem.options.length - 1) {
- elem.value++;
- ESX_MENU.change(focused.namespace, focused.name, elem);
- }
-
- if (typeof elem.max != "undefined" && elem.value < elem.max) {
- elem.value++;
- ESX_MENU.change(focused.namespace, focused.name, elem);
- }
-
- ESX_MENU.render();
- break;
- }
-
- default:
- break;
- }
-
- $("#menu_" + focused.namespace + "_" + focused.name)
- .find(".menu-item.selected")[0]
- .scrollIntoView();
- }
-
- break;
- }
-
- default:
- break;
- }
-
- break;
- }
- }
- };
-
- window.onload = function (e) {
- window.addEventListener("message", (event) => {
- onData(event.data);
- });
- };
+ '{{{label}}}{{#isSlider}} : <{{{sliderLabel}}}>{{/isSlider}}' +
+ '' +
+ '{{/elements}}' +
+ '' +
+ '' +
+ '';
+ window.ESX_MENU = {};
+ ESX_MENU.ResourceName = 'esx_menu_default';
+ ESX_MENU.opened = {};
+ ESX_MENU.focus = [];
+ ESX_MENU.pos = {};
+
+ ESX_MENU.open = function(namespace, name, data) {
+ if (typeof ESX_MENU.opened[namespace] === 'undefined') {
+ ESX_MENU.opened[namespace] = {};
+ }
+
+ if (typeof ESX_MENU.opened[namespace][name] != 'undefined') {
+ ESX_MENU.close(namespace, name);
+ }
+
+ if (typeof ESX_MENU.pos[namespace] === 'undefined') {
+ ESX_MENU.pos[namespace] = {};
+ }
+
+ for (let i = 0; i < data.elements.length; i++) {
+ if (typeof data.elements[i].type === 'undefined') {
+ data.elements[i].type = 'default';
+ }
+ }
+
+ data._index = ESX_MENU.focus.length;
+ data._namespace = namespace;
+ data._name = name;
+
+ for (let i = 0; i < data.elements.length; i++) {
+ data.elements[i]._namespace = namespace;
+ data.elements[i]._name = name;
+ }
+
+ ESX_MENU.opened[namespace][name] = data;
+ ESX_MENU.pos[namespace][name] = 0;
+
+ for (let i = 0; i < data.elements.length; i++) {
+ if (data.elements[i].selected) {
+ ESX_MENU.pos[namespace][name] = i;
+ }
+ else {
+ data.elements[i].selected = false;
+ }
+ }
+
+ ESX_MENU.focus.push({
+ namespace: namespace,
+ name: name,
+ });
+
+ ESX_MENU.render();
+ $('#menu_' + namespace + '_' + name)
+ .find('.menu-item.selected')[0]
+ .scrollIntoView();
+ };
+
+ ESX_MENU.close = function(namespace, name) {
+ delete ESX_MENU.opened[namespace][name];
+
+ for (let i = 0; i < ESX_MENU.focus.length; i++) {
+ if (ESX_MENU.focus[i].namespace === namespace && ESX_MENU.focus[i].name === name) {
+ ESX_MENU.focus.splice(i, 1);
+ break;
+ }
+ }
+
+ ESX_MENU.render();
+ };
+
+ ESX_MENU.render = function() {
+ const menuContainer = document.getElementById('menus');
+ const focused = ESX_MENU.getFocused();
+ menuContainer.innerHTML = '';
+ $(menuContainer).hide();
+
+ for (const namespace in ESX_MENU.opened) {
+ for (const name in ESX_MENU.opened[namespace]) {
+ const menuData = ESX_MENU.opened[namespace][name];
+ const view = JSON.parse(JSON.stringify(menuData));
+
+ for (let i = 0; i < menuData.elements.length; i++) {
+ const element = view.elements[i];
+
+ switch (element.type) {
+ case 'default':
+ break;
+
+ case 'slider': {
+ element.isSlider = true;
+ element.sliderLabel = typeof element.options === 'undefined' ? element.value : element.options[element.value];
+
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ if (i === ESX_MENU.pos[namespace][name]) {
+ element.selected = true;
+ }
+ }
+
+ const menu = $(Mustache.render(MenuTpl, view))[0];
+ $(menu).hide();
+ menuContainer.appendChild(menu);
+ }
+ }
+
+ if (typeof focused != 'undefined') {
+ $('#menu_' + focused.namespace + '_' + focused.name).show();
+ }
+
+ $(menuContainer).show();
+ };
+
+ ESX_MENU.submit = function(namespace, name, data) {
+ $.post(
+ 'http://' + ESX_MENU.ResourceName + '/menu_submit',
+ JSON.stringify({
+ _namespace: namespace,
+ _name: name,
+ current: data,
+ elements: ESX_MENU.opened[namespace][name].elements,
+ }),
+ );
+ };
+
+ ESX_MENU.cancel = function(namespace, name) {
+ $.post(
+ 'http://' + ESX_MENU.ResourceName + '/menu_cancel',
+ JSON.stringify({
+ _namespace: namespace,
+ _name: name,
+ }),
+ );
+ };
+
+ ESX_MENU.change = function(namespace, name, data) {
+ $.post(
+ 'http://' + ESX_MENU.ResourceName + '/menu_change',
+ JSON.stringify({
+ _namespace: namespace,
+ _name: name,
+ current: data,
+ elements: ESX_MENU.opened[namespace][name].elements,
+ }),
+ );
+ };
+
+ ESX_MENU.getFocused = function() {
+ return ESX_MENU.focus[ESX_MENU.focus.length - 1];
+ };
+
+ window.onData = (data) => {
+ switch (data.action) {
+ case 'openMenu': {
+ ESX_MENU.open(data.namespace, data.name, data.data);
+ break;
+ }
+
+ case 'closeMenu': {
+ ESX_MENU.close(data.namespace, data.name);
+ break;
+ }
+
+ case 'controlPressed': {
+ switch (data.control) {
+ case 'ENTER': {
+ const focused = ESX_MENU.getFocused();
+
+ if (typeof focused != 'undefined') {
+ const menu = ESX_MENU.opened[focused.namespace][focused.name];
+ const pos = ESX_MENU.pos[focused.namespace][focused.name];
+ const elem = menu.elements[pos];
+
+ if (menu.elements.length > 0) {
+ ESX_MENU.submit(focused.namespace, focused.name, elem);
+ }
+ }
+
+ break;
+ }
+
+ case 'BACKSPACE': {
+ const focused = ESX_MENU.getFocused();
+
+ if (typeof focused != 'undefined') {
+ ESX_MENU.cancel(focused.namespace, focused.name);
+ }
+
+ break;
+ }
+
+ case 'TOP': {
+ const focused = ESX_MENU.getFocused();
+
+ if (typeof focused != 'undefined') {
+ const menu = ESX_MENU.opened[focused.namespace][focused.name];
+ const pos = ESX_MENU.pos[focused.namespace][focused.name];
+
+ if (pos > 0) {
+ ESX_MENU.pos[focused.namespace][focused.name]--;
+ }
+ else {
+ ESX_MENU.pos[focused.namespace][focused.name] = menu.elements.length - 1;
+ }
+
+ const elem = menu.elements[ESX_MENU.pos[focused.namespace][focused.name]];
+
+ for (let i = 0; i < menu.elements.length; i++) {
+ if (i === ESX_MENU.pos[focused.namespace][focused.name]) {
+ menu.elements[i].selected = true;
+ }
+ else {
+ menu.elements[i].selected = false;
+ }
+ }
+
+ ESX_MENU.change(focused.namespace, focused.name, elem);
+ ESX_MENU.render();
+
+ $('#menu_' + focused.namespace + '_' + focused.name)
+ .find('.menu-item.selected')[0]
+ .scrollIntoView();
+ }
+
+ break;
+ }
+
+ case 'DOWN': {
+ const focused = ESX_MENU.getFocused();
+
+ if (typeof focused != 'undefined') {
+ const menu = ESX_MENU.opened[focused.namespace][focused.name];
+ const pos = ESX_MENU.pos[focused.namespace][focused.name];
+ const length = menu.elements.length;
+
+ if (pos < length - 1) {
+ ESX_MENU.pos[focused.namespace][focused.name]++;
+ }
+ else {
+ ESX_MENU.pos[focused.namespace][focused.name] = 0;
+ }
+
+ const elem = menu.elements[ESX_MENU.pos[focused.namespace][focused.name]];
+
+ for (let i = 0; i < menu.elements.length; i++) {
+ if (i === ESX_MENU.pos[focused.namespace][focused.name]) {
+ menu.elements[i].selected = true;
+ }
+ else {
+ menu.elements[i].selected = false;
+ }
+ }
+
+ ESX_MENU.change(focused.namespace, focused.name, elem);
+ ESX_MENU.render();
+
+ $('#menu_' + focused.namespace + '_' + focused.name)
+ .find('.menu-item.selected')[0]
+ .scrollIntoView();
+ }
+
+ break;
+ }
+
+ case 'LEFT': {
+ const focused = ESX_MENU.getFocused();
+
+ if (typeof focused != 'undefined') {
+ const menu = ESX_MENU.opened[focused.namespace][focused.name];
+ const pos = ESX_MENU.pos[focused.namespace][focused.name];
+ const elem = menu.elements[pos];
+
+ switch (elem.type) {
+ case 'default':
+ break;
+
+ case 'slider': {
+ const min = typeof elem.min === 'undefined' ? 0 : elem.min;
+
+ if (elem.value > min) {
+ elem.value--;
+ ESX_MENU.change(focused.namespace, focused.name, elem);
+ }
+
+ ESX_MENU.render();
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ $('#menu_' + focused.namespace + '_' + focused.name)
+ .find('.menu-item.selected')[0]
+ .scrollIntoView();
+ }
+
+ break;
+ }
+
+ case 'RIGHT': {
+ const focused = ESX_MENU.getFocused();
+
+ if (typeof focused != 'undefined') {
+ const menu = ESX_MENU.opened[focused.namespace][focused.name];
+ const pos = ESX_MENU.pos[focused.namespace][focused.name];
+ const elem = menu.elements[pos];
+
+ switch (elem.type) {
+ case 'default':
+ break;
+
+ case 'slider': {
+ if (typeof elem.options != 'undefined' && elem.value < elem.options.length - 1) {
+ elem.value++;
+ ESX_MENU.change(focused.namespace, focused.name, elem);
+ }
+
+ if (typeof elem.max != 'undefined' && elem.value < elem.max) {
+ elem.value++;
+ ESX_MENU.change(focused.namespace, focused.name, elem);
+ }
+
+ ESX_MENU.render();
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ $('#menu_' + focused.namespace + '_' + focused.name)
+ .find('.menu-item.selected')[0]
+ .scrollIntoView();
+ }
+
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ break;
+ }
+ }
+ };
+
+ window.onload = function() {
+ window.addEventListener('message', (event) => {
+ onData(event.data);
+ });
+ };
})();
diff --git a/server-data/resources/[esx]/esx_menu_default/html/js/mustache.min.js b/server-data/resources/[esx]/esx_menu_default/html/js/mustache.min.js
index f36565977..049f60333 100644
--- a/server-data/resources/[esx]/esx_menu_default/html/js/mustache.min.js
+++ b/server-data/resources/[esx]/esx_menu_default/html/js/mustache.min.js
@@ -1,347 +1,364 @@
(function defineMustache(global, factory) {
- if (typeof exports === "object" && exports && typeof exports.nodeName !== "string") {
- factory(exports);
- } else if (typeof define === "function" && define.amd) {
- define(["exports"], factory);
- } else {
- global.Mustache = {};
- factory(global.Mustache);
- }
+ if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {
+ factory(exports);
+ }
+ else if (typeof define === 'function' && define.amd) {
+ define(['exports'], factory);
+ }
+ else {
+ global.Mustache = {};
+ factory(global.Mustache);
+ }
})(this, function mustacheFactory(mustache) {
- var objectToString = Object.prototype.toString;
- var isArray =
+ const objectToString = Object.prototype.toString;
+ const isArray =
Array.isArray ||
function isArrayPolyfill(object) {
- return objectToString.call(object) === "[object Array]";
+ return objectToString.call(object) === '[object Array]';
};
- function isFunction(object) {
- return typeof object === "function";
- }
- function typeStr(obj) {
- return isArray(obj) ? "array" : typeof obj;
- }
- function escapeRegExp(string) {
- return string.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
- }
- function hasProperty(obj, propName) {
- return obj != null && typeof obj === "object" && propName in obj;
- }
- var regExpTest = RegExp.prototype.test;
- function testRegExp(re, string) {
- return regExpTest.call(re, string);
- }
- var nonSpaceRe = /\S/;
- function isWhitespace(string) {
- return !testRegExp(nonSpaceRe, string);
- }
- var entityMap = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "/": "/", "`": "`", "=": "=" };
- function escapeHtml(string) {
- return String(string).replace(/[&<>"'`=\/]/g, function fromEntityMap(s) {
- return entityMap[s];
- });
- }
- var whiteRe = /\s*/;
- var spaceRe = /\s+/;
- var equalsRe = /\s*=/;
- var curlyRe = /\s*\}/;
- var tagRe = /#|\^|\/|>|\{|&|=|!/;
- function parseTemplate(template, tags) {
- if (!template) return [];
- var sections = [];
- var tokens = [];
- var spaces = [];
- var hasTag = false;
- var nonSpace = false;
- function stripSpace() {
- if (hasTag && !nonSpace) {
- while (spaces.length) delete tokens[spaces.pop()];
- } else {
- spaces = [];
- }
- hasTag = false;
- nonSpace = false;
- }
- var openingTagRe, closingTagRe, closingCurlyRe;
- function compileTags(tagsToCompile) {
- if (typeof tagsToCompile === "string") tagsToCompile = tagsToCompile.split(spaceRe, 2);
- if (!isArray(tagsToCompile) || tagsToCompile.length !== 2) throw new Error("Invalid tags: " + tagsToCompile);
- openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + "\\s*");
- closingTagRe = new RegExp("\\s*" + escapeRegExp(tagsToCompile[1]));
- closingCurlyRe = new RegExp("\\s*" + escapeRegExp("}" + tagsToCompile[1]));
- }
- compileTags(tags || mustache.tags);
- var scanner = new Scanner(template);
- var start, type, value, chr, token, openSection;
- while (!scanner.eos()) {
- start = scanner.pos;
- value = scanner.scanUntil(openingTagRe);
- if (value) {
- for (var i = 0, valueLength = value.length; i < valueLength; ++i) {
- chr = value.charAt(i);
- if (isWhitespace(chr)) {
- spaces.push(tokens.length);
- } else {
- nonSpace = true;
- }
- tokens.push(["text", chr, start, start + 1]);
- start += 1;
- if (chr === "\n") stripSpace();
- }
- }
- if (!scanner.scan(openingTagRe)) break;
- hasTag = true;
- type = scanner.scan(tagRe) || "name";
- scanner.scan(whiteRe);
- if (type === "=") {
- value = scanner.scanUntil(equalsRe);
- scanner.scan(equalsRe);
- scanner.scanUntil(closingTagRe);
- } else if (type === "{") {
- value = scanner.scanUntil(closingCurlyRe);
- scanner.scan(curlyRe);
- scanner.scanUntil(closingTagRe);
- type = "&";
- } else {
- value = scanner.scanUntil(closingTagRe);
- }
- if (!scanner.scan(closingTagRe)) throw new Error("Unclosed tag at " + scanner.pos);
- token = [type, value, start, scanner.pos];
- tokens.push(token);
- if (type === "#" || type === "^") {
- sections.push(token);
- } else if (type === "/") {
- openSection = sections.pop();
- if (!openSection) throw new Error('Unopened section "' + value + '" at ' + start);
- if (openSection[1] !== value) throw new Error('Unclosed section "' + openSection[1] + '" at ' + start);
- } else if (type === "name" || type === "{" || type === "&") {
- nonSpace = true;
- } else if (type === "=") {
- compileTags(value);
- }
- }
- openSection = sections.pop();
- if (openSection) throw new Error('Unclosed section "' + openSection[1] + '" at ' + scanner.pos);
- return nestTokens(squashTokens(tokens));
- }
- function squashTokens(tokens) {
- var squashedTokens = [];
- var token, lastToken;
- for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
- token = tokens[i];
- if (token) {
- if (token[0] === "text" && lastToken && lastToken[0] === "text") {
- lastToken[1] += token[1];
- lastToken[3] = token[3];
- } else {
- squashedTokens.push(token);
- lastToken = token;
- }
- }
- }
- return squashedTokens;
- }
- function nestTokens(tokens) {
- var nestedTokens = [];
- var collector = nestedTokens;
- var sections = [];
- var token, section;
- for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
- token = tokens[i];
- switch (token[0]) {
- case "#":
- case "^":
- collector.push(token);
- sections.push(token);
- collector = token[4] = [];
- break;
- case "/":
- section = sections.pop();
- section[5] = token[2];
- collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;
- break;
- default:
- collector.push(token);
- }
- }
- return nestedTokens;
- }
- function Scanner(string) {
- this.string = string;
- this.tail = string;
- this.pos = 0;
- }
- Scanner.prototype.eos = function eos() {
- return this.tail === "";
- };
- Scanner.prototype.scan = function scan(re) {
- var match = this.tail.match(re);
- if (!match || match.index !== 0) return "";
- var string = match[0];
- this.tail = this.tail.substring(string.length);
- this.pos += string.length;
- return string;
- };
- Scanner.prototype.scanUntil = function scanUntil(re) {
- var index = this.tail.search(re),
- match;
- switch (index) {
- case -1:
- match = this.tail;
- this.tail = "";
- break;
- case 0:
- match = "";
- break;
- default:
- match = this.tail.substring(0, index);
- this.tail = this.tail.substring(index);
- }
- this.pos += match.length;
- return match;
- };
- function Context(view, parentContext) {
- this.view = view;
- this.cache = { ".": this.view };
- this.parent = parentContext;
- }
- Context.prototype.push = function push(view) {
- return new Context(view, this);
- };
- Context.prototype.lookup = function lookup(name) {
- var cache = this.cache;
- var value;
- if (cache.hasOwnProperty(name)) {
- value = cache[name];
- } else {
- var context = this,
- names,
- index,
- lookupHit = false;
- while (context) {
- if (name.indexOf(".") > 0) {
- value = context.view;
- names = name.split(".");
- index = 0;
- while (value != null && index < names.length) {
- if (index === names.length - 1) lookupHit = hasProperty(value, names[index]);
- value = value[names[index++]];
- }
- } else {
- value = context.view[name];
- lookupHit = hasProperty(context.view, name);
- }
- if (lookupHit) break;
- context = context.parent;
- }
- cache[name] = value;
- }
- if (isFunction(value)) value = value.call(this.view);
- return value;
- };
- function Writer() {
- this.cache = {};
- }
- Writer.prototype.clearCache = function clearCache() {
- this.cache = {};
- };
- Writer.prototype.parse = function parse(template, tags) {
- var cache = this.cache;
- var tokens = cache[template];
- if (tokens == null) tokens = cache[template] = parseTemplate(template, tags);
- return tokens;
- };
- Writer.prototype.render = function render(template, view, partials) {
- var tokens = this.parse(template);
- var context = view instanceof Context ? view : new Context(view);
- return this.renderTokens(tokens, context, partials, template);
- };
- Writer.prototype.renderTokens = function renderTokens(tokens, context, partials, originalTemplate) {
- var buffer = "";
- var token, symbol, value;
- for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
- value = undefined;
- token = tokens[i];
- symbol = token[0];
- if (symbol === "#") value = this.renderSection(token, context, partials, originalTemplate);
- else if (symbol === "^") value = this.renderInverted(token, context, partials, originalTemplate);
- else if (symbol === ">") value = this.renderPartial(token, context, partials, originalTemplate);
- else if (symbol === "&") value = this.unescapedValue(token, context);
- else if (symbol === "name") value = this.escapedValue(token, context);
- else if (symbol === "text") value = this.rawValue(token);
- if (value !== undefined) buffer += value;
- }
- return buffer;
- };
- Writer.prototype.renderSection = function renderSection(token, context, partials, originalTemplate) {
- var self = this;
- var buffer = "";
- var value = context.lookup(token[1]);
- function subRender(template) {
- return self.render(template, context, partials);
- }
- if (!value) return;
- if (isArray(value)) {
- for (var j = 0, valueLength = value.length; j < valueLength; ++j) {
- buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);
- }
- } else if (typeof value === "object" || typeof value === "string" || typeof value === "number") {
- buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);
- } else if (isFunction(value)) {
- if (typeof originalTemplate !== "string") throw new Error("Cannot use higher-order sections without the original template");
- value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);
- if (value != null) buffer += value;
- } else {
- buffer += this.renderTokens(token[4], context, partials, originalTemplate);
- }
- return buffer;
- };
- Writer.prototype.renderInverted = function renderInverted(token, context, partials, originalTemplate) {
- var value = context.lookup(token[1]);
- if (!value || (isArray(value) && value.length === 0)) return this.renderTokens(token[4], context, partials, originalTemplate);
- };
- Writer.prototype.renderPartial = function renderPartial(token, context, partials) {
- if (!partials) return;
- var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];
- if (value != null) return this.renderTokens(this.parse(value), context, partials, value);
- };
- Writer.prototype.unescapedValue = function unescapedValue(token, context) {
- var value = context.lookup(token[1]);
- if (value != null) return value;
- };
- Writer.prototype.escapedValue = function escapedValue(token, context) {
- var value = context.lookup(token[1]);
- if (value != null) return mustache.escape(value);
- };
- Writer.prototype.rawValue = function rawValue(token) {
- return token[1];
- };
- mustache.name = "mustache.js";
- mustache.version = "2.3.0";
- mustache.tags = ["{{", "}}"];
- var defaultWriter = new Writer();
- mustache.clearCache = function clearCache() {
- return defaultWriter.clearCache();
- };
- mustache.parse = function parse(template, tags) {
- return defaultWriter.parse(template, tags);
- };
- mustache.render = function render(template, view, partials) {
- if (typeof template !== "string") {
- throw new TypeError('Invalid template! Template should be a "string" ' + 'but "' + typeStr(template) + '" was given as the first ' + "argument for mustache#render(template, view, partials)");
- }
- return defaultWriter.render(template, view, partials);
- };
- mustache.to_html = function to_html(template, view, partials, send) {
- var result = mustache.render(template, view, partials);
- if (isFunction(send)) {
- send(result);
- } else {
- return result;
- }
- };
- mustache.escape = escapeHtml;
- mustache.Scanner = Scanner;
- mustache.Context = Context;
- mustache.Writer = Writer;
- return mustache;
+ function isFunction(object) {
+ return typeof object === 'function';
+ }
+ function typeStr(obj) {
+ return isArray(obj) ? 'array' : typeof obj;
+ }
+ function escapeRegExp(string) {
+ return string.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
+ }
+ function hasProperty(obj, propName) {
+ return obj != null && typeof obj === 'object' && propName in obj;
+ }
+ const regExpTest = RegExp.prototype.test;
+ function testRegExp(re, string) {
+ return regExpTest.call(re, string);
+ }
+ const nonSpaceRe = /\S/;
+ function isWhitespace(string) {
+ return !testRegExp(nonSpaceRe, string);
+ }
+ const entityMap = { '&': '&', '<': '<', '>': '>', '"': '"', '\'': ''', '/': '/', '`': '`', '=': '=' };
+ function escapeHtml(string) {
+ return String(string).replace(/[&<>"'`=/]/g, function fromEntityMap(s) {
+ return entityMap[s];
+ });
+ }
+ const whiteRe = /\s*/;
+ const spaceRe = /\s+/;
+ const equalsRe = /\s*=/;
+ const curlyRe = /\s*\}/;
+ const tagRe = /#|\^|\/|>|\{|&|=|!/;
+ function parseTemplate(template, tags) {
+ if (!template) return [];
+ const sections = [];
+ const tokens = [];
+ let spaces = [];
+ let hasTag = false;
+ let nonSpace = false;
+ function stripSpace() {
+ if (hasTag && !nonSpace) {
+ while (spaces.length) delete tokens[spaces.pop()];
+ }
+ else {
+ spaces = [];
+ }
+ hasTag = false;
+ nonSpace = false;
+ }
+ let openingTagRe, closingTagRe, closingCurlyRe;
+ function compileTags(tagsToCompile) {
+ if (typeof tagsToCompile === 'string') tagsToCompile = tagsToCompile.split(spaceRe, 2);
+ if (!isArray(tagsToCompile) || tagsToCompile.length !== 2) throw new Error('Invalid tags: ' + tagsToCompile);
+ openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\s*');
+ closingTagRe = new RegExp('\\s*' + escapeRegExp(tagsToCompile[1]));
+ closingCurlyRe = new RegExp('\\s*' + escapeRegExp('}' + tagsToCompile[1]));
+ }
+ compileTags(tags || mustache.tags);
+ const scanner = new Scanner(template);
+ let start, type, value, chr, token, openSection;
+ while (!scanner.eos()) {
+ start = scanner.pos;
+ value = scanner.scanUntil(openingTagRe);
+ if (value) {
+ for (let i = 0, valueLength = value.length; i < valueLength; ++i) {
+ chr = value.charAt(i);
+ if (isWhitespace(chr)) {
+ spaces.push(tokens.length);
+ }
+ else {
+ nonSpace = true;
+ }
+ tokens.push(['text', chr, start, start + 1]);
+ start += 1;
+ if (chr === '\n') stripSpace();
+ }
+ }
+ if (!scanner.scan(openingTagRe)) break;
+ hasTag = true;
+ type = scanner.scan(tagRe) || 'name';
+ scanner.scan(whiteRe);
+ if (type === '=') {
+ value = scanner.scanUntil(equalsRe);
+ scanner.scan(equalsRe);
+ scanner.scanUntil(closingTagRe);
+ }
+ else if (type === '{') {
+ value = scanner.scanUntil(closingCurlyRe);
+ scanner.scan(curlyRe);
+ scanner.scanUntil(closingTagRe);
+ type = '&';
+ }
+ else {
+ value = scanner.scanUntil(closingTagRe);
+ }
+ if (!scanner.scan(closingTagRe)) throw new Error('Unclosed tag at ' + scanner.pos);
+ token = [type, value, start, scanner.pos];
+ tokens.push(token);
+ if (type === '#' || type === '^') {
+ sections.push(token);
+ }
+ else if (type === '/') {
+ openSection = sections.pop();
+ if (!openSection) throw new Error('Unopened section "' + value + '" at ' + start);
+ if (openSection[1] !== value) throw new Error('Unclosed section "' + openSection[1] + '" at ' + start);
+ }
+ else if (type === 'name' || type === '{' || type === '&') {
+ nonSpace = true;
+ }
+ else if (type === '=') {
+ compileTags(value);
+ }
+ }
+ openSection = sections.pop();
+ if (openSection) throw new Error('Unclosed section "' + openSection[1] + '" at ' + scanner.pos);
+ return nestTokens(squashTokens(tokens));
+ }
+ function squashTokens(tokens) {
+ const squashedTokens = [];
+ let token, lastToken;
+ for (let i = 0, numTokens = tokens.length; i < numTokens; ++i) {
+ token = tokens[i];
+ if (token) {
+ if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {
+ lastToken[1] += token[1];
+ lastToken[3] = token[3];
+ }
+ else {
+ squashedTokens.push(token);
+ lastToken = token;
+ }
+ }
+ }
+ return squashedTokens;
+ }
+ function nestTokens(tokens) {
+ const nestedTokens = [];
+ let collector = nestedTokens;
+ const sections = [];
+ let token, section;
+ for (let i = 0, numTokens = tokens.length; i < numTokens; ++i) {
+ token = tokens[i];
+ switch (token[0]) {
+ case '#':
+ case '^':
+ collector.push(token);
+ sections.push(token);
+ collector = token[4] = [];
+ break;
+ case '/':
+ section = sections.pop();
+ section[5] = token[2];
+ collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;
+ break;
+ default:
+ collector.push(token);
+ }
+ }
+ return nestedTokens;
+ }
+ function Scanner(string) {
+ this.string = string;
+ this.tail = string;
+ this.pos = 0;
+ }
+ Scanner.prototype.eos = function eos() {
+ return this.tail === '';
+ };
+ Scanner.prototype.scan = function scan(re) {
+ const match = this.tail.match(re);
+ if (!match || match.index !== 0) return '';
+ const string = match[0];
+ this.tail = this.tail.substring(string.length);
+ this.pos += string.length;
+ return string;
+ };
+ Scanner.prototype.scanUntil = function scanUntil(re) {
+ // eslint-disable-next-line prefer-const
+ let index = this.tail.search(re),
+ match;
+ switch (index) {
+ case -1:
+ match = this.tail;
+ this.tail = '';
+ break;
+ case 0:
+ match = '';
+ break;
+ default:
+ match = this.tail.substring(0, index);
+ this.tail = this.tail.substring(index);
+ }
+ this.pos += match.length;
+ return match;
+ };
+ function Context(view, parentContext) {
+ this.view = view;
+ this.cache = { '.': this.view };
+ this.parent = parentContext;
+ }
+ Context.prototype.push = function push(view) {
+ return new Context(view, this);
+ };
+ Context.prototype.lookup = function lookup(name) {
+ const cache = this.cache;
+ let value;
+ if (Object.prototype.hasOwnProperty.call(cache, name)) {
+ value = cache[name];
+ }
+ else {
+ let context = this,
+ names,
+ index,
+ lookupHit = false;
+ while (context) {
+ if (name.indexOf('.') > 0) {
+ value = context.view;
+ names = name.split('.');
+ index = 0;
+ while (value != null && index < names.length) {
+ if (index === names.length - 1) lookupHit = hasProperty(value, names[index]);
+ value = value[names[index++]];
+ }
+ }
+ else {
+ value = context.view[name];
+ lookupHit = hasProperty(context.view, name);
+ }
+ if (lookupHit) break;
+ context = context.parent;
+ }
+ cache[name] = value;
+ }
+ if (isFunction(value)) value = value.call(this.view);
+ return value;
+ };
+ function Writer() {
+ this.cache = {};
+ }
+ Writer.prototype.clearCache = function clearCache() {
+ this.cache = {};
+ };
+ Writer.prototype.parse = function parse(template, tags) {
+ const cache = this.cache;
+ let tokens = cache[template];
+ if (tokens == null) tokens = cache[template] = parseTemplate(template, tags);
+ return tokens;
+ };
+ Writer.prototype.render = function render(template, view, partials) {
+ const tokens = this.parse(template);
+ const context = view instanceof Context ? view : new Context(view);
+ return this.renderTokens(tokens, context, partials, template);
+ };
+ Writer.prototype.renderTokens = function renderTokens(tokens, context, partials, originalTemplate) {
+ let buffer = '';
+ let token, symbol, value;
+ for (let i = 0, numTokens = tokens.length; i < numTokens; ++i) {
+ value = undefined;
+ token = tokens[i];
+ symbol = token[0];
+ if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);
+ else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);
+ else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);
+ else if (symbol === '&') value = this.unescapedValue(token, context);
+ else if (symbol === 'name') value = this.escapedValue(token, context);
+ else if (symbol === 'text') value = this.rawValue(token);
+ if (value !== undefined) buffer += value;
+ }
+ return buffer;
+ };
+ Writer.prototype.renderSection = function renderSection(token, context, partials, originalTemplate) {
+ const self = this;
+ let buffer = '';
+ let value = context.lookup(token[1]);
+ function subRender(template) {
+ return self.render(template, context, partials);
+ }
+ if (!value) return;
+ if (isArray(value)) {
+ for (let j = 0, valueLength = value.length; j < valueLength; ++j) {
+ buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);
+ }
+ }
+ else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {
+ buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);
+ }
+ else if (isFunction(value)) {
+ if (typeof originalTemplate !== 'string') throw new Error('Cannot use higher-order sections without the original template');
+ value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);
+ if (value != null) buffer += value;
+ }
+ else {
+ buffer += this.renderTokens(token[4], context, partials, originalTemplate);
+ }
+ return buffer;
+ };
+ Writer.prototype.renderInverted = function renderInverted(token, context, partials, originalTemplate) {
+ const value = context.lookup(token[1]);
+ if (!value || (isArray(value) && value.length === 0)) return this.renderTokens(token[4], context, partials, originalTemplate);
+ };
+ Writer.prototype.renderPartial = function renderPartial(token, context, partials) {
+ if (!partials) return;
+ const value = isFunction(partials) ? partials(token[1]) : partials[token[1]];
+ if (value != null) return this.renderTokens(this.parse(value), context, partials, value);
+ };
+ Writer.prototype.unescapedValue = function unescapedValue(token, context) {
+ const value = context.lookup(token[1]);
+ if (value != null) return value;
+ };
+ Writer.prototype.escapedValue = function escapedValue(token, context) {
+ const value = context.lookup(token[1]);
+ if (value != null) return mustache.escape(value);
+ };
+ Writer.prototype.rawValue = function rawValue(token) {
+ return token[1];
+ };
+ mustache.name = 'mustache.js';
+ mustache.version = '2.3.0';
+ mustache.tags = ['{{', '}}'];
+ const defaultWriter = new Writer();
+ mustache.clearCache = function clearCache() {
+ return defaultWriter.clearCache();
+ };
+ mustache.parse = function parse(template, tags) {
+ return defaultWriter.parse(template, tags);
+ };
+ mustache.render = function render(template, view, partials) {
+ if (typeof template !== 'string') {
+ throw new TypeError('Invalid template! Template should be a "string" ' + 'but "' + typeStr(template) + '" was given as the first ' + 'argument for mustache#render(template, view, partials)');
+ }
+ return defaultWriter.render(template, view, partials);
+ };
+ mustache.to_html = function to_html(template, view, partials, send) {
+ const result = mustache.render(template, view, partials);
+ if (isFunction(send)) {
+ send(result);
+ }
+ else {
+ return result;
+ }
+ };
+ mustache.escape = escapeHtml;
+ mustache.Scanner = Scanner;
+ mustache.Context = Context;
+ mustache.Writer = Writer;
+ return mustache;
});
diff --git a/server-data/resources/[esx]/vSync/config.lua b/server-data/resources/[esx]/vSync/config.lua
index 7ec9cb3f5..ad98868af 100644
--- a/server-data/resources/[esx]/vSync/config.lua
+++ b/server-data/resources/[esx]/vSync/config.lua
@@ -4,7 +4,7 @@ Config.AdminByID = false -- Set to true if you want to set the access to the com
Config.DynamicWeather = false -- Set this to false if you don't want the weather to change automatically every 10 minutes.
-- On server start
-Config.StartWeather = "EXTRASUNNY" -- Default weather default: 'EXTRASUNNY'
+Config.StartWeather = "HALLOWEEN" -- Default weather default: 'EXTRASUNNY'
Config.BaseTime = 8 -- Time default: 8
Config.TimeOffset = 0 -- Time offset default: 0
Config.FreezeTime = false -- freeze time default: false
@@ -14,29 +14,29 @@ Config.NewWeatherTimer = 10 -- Time (in minutes) between each weather change d
Config.Locale = "en" -- Languages : en, fr, pt, tr, pt_br
Config.Admins = { -- Only if Config.AdminByID is set to true
- "steam/license:STEAMID/LICENSE", -- EXAMPLE : steam:110000145959807 or license:1234975140128921327
+ "steam/license:STEAMID/LICENSE", -- EXAMPLE : steam:110000145959807 or license:1234975140128921327
}
Config.Ace = { -- Only if Config.AdminByID is set to false
- "command", -- LEAVE BY DEFAULT TO GIVE ACCESS TO ADMINS AND SUPERADMINS IF U DIDN'T TOUCH ADMIN SYSTEM.
- --'vsyncr', -- Gives access to weather/time commands only to groups that have access to 'vsyncr' in your server.cfg (like this: add_ace group.admin vsyncr allow)
- --'yourgroupaccess', -- add_ace group.yourgroup yourgroupaccess allow
+ "command", -- LEAVE BY DEFAULT TO GIVE ACCESS TO ADMINS AND SUPERADMINS IF U DIDN'T TOUCH ADMIN SYSTEM.
+ --'vsyncr', -- Gives access to weather/time commands only to groups that have access to 'vsyncr' in your server.cfg (like this: add_ace group.admin vsyncr allow)
+ --'yourgroupaccess', -- add_ace group.yourgroup yourgroupaccess allow
}
Config.AvailableWeatherTypes = { -- DON'T TOUCH EXCEPT IF YOU KNOW WHAT YOU ARE DOING
- "EXTRASUNNY",
- "CLEAR",
- "NEUTRAL",
- "SMOG",
- "FOGGY",
- "OVERCAST",
- "CLOUDS",
- "CLEARING",
- "RAIN",
- "THUNDER",
- "SNOW",
- "BLIZZARD",
- "SNOWLIGHT",
- "XMAS",
- "HALLOWEEN",
+ "EXTRASUNNY",
+ "CLEAR",
+ "NEUTRAL",
+ "SMOG",
+ "FOGGY",
+ "OVERCAST",
+ "CLOUDS",
+ "CLEARING",
+ "RAIN",
+ "THUNDER",
+ "SNOW",
+ "BLIZZARD",
+ "SNOWLIGHT",
+ "XMAS",
+ "HALLOWEEN",
}
diff --git a/server-data/resources/[ox]/ox_inventory/data/items.lua b/server-data/resources/[ox]/ox_inventory/data/items.lua
index 5a87f0210..dfd369c58 100644
--- a/server-data/resources/[ox]/ox_inventory/data/items.lua
+++ b/server-data/resources/[ox]/ox_inventory/data/items.lua
@@ -753,4 +753,10 @@ return {
weight = 00,
stack = true,
},
+
+ ["WEAPON_FLASHLIGHT"] = {
+ label = "Torcia",
+ weight = 50,
+ stack = false,
+ },
}