diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 8e1786f5..db7c127d 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -3,7 +3,9 @@ name: Bug report about: Create a report to help us improve title: "[Bug] - esx_script - Issue" labels: bug -assignees: Benzo00 +assignees: + - TheFantomas + - Gellipapa --- diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 235933f2..bc4eaaba 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -3,7 +3,9 @@ name: Feature Request about: Help us improve esx with your ideas title: "[Feature Request] - esx_script - Add better configuration" labels: enhancement -assignees: Benzo00 +assignees: + - TheFantomas + - Gellipapa --- diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 7e7e0f1e..2fb4d83b 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -5,7 +5,7 @@ jobs: name: Lint Resource runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Lint uses: iLLeniumStudios/fivem-lua-lint-action@v2 with: diff --git a/LICENSE b/LICENSE index c99ad3e4..6977f644 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,7 @@ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -645,7 +645,7 @@ the "copyright" line and a pointer to where the full notice is found. 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 . + along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. @@ -664,11 +664,11 @@ might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see -. +. The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -. \ No newline at end of file +. diff --git a/[core]/cron/fxmanifest.lua b/[core]/cron/fxmanifest.lua index aef7cbe4..97d75c99 100644 --- a/[core]/cron/fxmanifest.lua +++ b/[core]/cron/fxmanifest.lua @@ -4,6 +4,6 @@ game 'gta5' author 'ESX-Framework' description 'cron' lua54 'yes' -version '1.9.4' +version '1.9.5' server_script 'server/main.lua' diff --git a/[core]/cron/server/main.lua b/[core]/cron/server/main.lua index 4228f089..fb47a435 100644 --- a/[core]/cron/server/main.lua +++ b/[core]/cron/server/main.lua @@ -3,8 +3,8 @@ local LastTime = nil function RunAt(h, m, cb) Jobs[#Jobs + 1] = { - h = h, - m = m, + h = h, + m = m, cb = cb } end @@ -15,12 +15,15 @@ function GetTime() local h = tonumber(os.date('%H', timestamp)) local m = tonumber(os.date('%M', timestamp)) - return {d = d, h = h, m = m} + return { + d = d, + h = h, + m = m + } end function OnTime(d, h, m) - - for i=1, #Jobs, 1 do + for i = 1, #Jobs, 1 do if Jobs[i].h == h and Jobs[i].m == m then Jobs[i].cb(d, h, m) end diff --git a/[core]/es_extended/.editorconfig b/[core]/es_extended/.editorconfig deleted file mode 100644 index 9b425256..00000000 --- a/[core]/es_extended/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -root = true - -[*] -indent_size = 4 -indent_style = tab -end_of_line = crlf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true \ No newline at end of file diff --git a/[core]/es_extended/client/functions.lua b/[core]/es_extended/client/functions.lua index 90191138..7ba5dcc3 100644 --- a/[core]/es_extended/client/functions.lua +++ b/[core]/es_extended/client/functions.lua @@ -26,7 +26,7 @@ end function ESX.SearchInventory(items, count) if type(items) == 'string' then - items = {items} + items = { items } end local returnData = {} @@ -77,8 +77,7 @@ function ESX.ShowNotification(message, type, length) print("[^1ERROR^7] ^5ESX Notify^7 is Missing!") end - - + function ESX.TextUI(message, type) if GetResourceState("esx_textui") ~= "missing" then return exports["esx_textui"]:TextUI(message, type) @@ -155,9 +154,9 @@ if GetResourceState("esx_context") ~= "missing" then end function ESX.RefreshContext(...) - exports["esx_context"]:Refresh(...) + exports["esx_context"]:Refresh(...) end -else +else function ESX.OpenContext() print("[^1ERROR^7] Tried to ^5open^7 context menu, but ^5esx_context^7 is missing!") end @@ -204,7 +203,6 @@ function ESX.UI.Menu.Open(type, namespace, name, data, submit, cancel, change, c menu.change = change menu.close = function() - ESX.UI.Menu.RegisteredTypes[type].close(namespace, name) for i = 1, #ESX.UI.Menu.Opened, 1 do @@ -219,11 +217,9 @@ function ESX.UI.Menu.Open(type, namespace, name, data, submit, cancel, change, c if close then close() end - end menu.update = function(query, newData) - for i = 1, #menu.data.elements, 1 do local match = true @@ -239,7 +235,6 @@ function ESX.UI.Menu.Open(type, namespace, name, data, submit, cancel, change, c end end end - end menu.refresh = function() @@ -267,7 +262,6 @@ function ESX.UI.Menu.Open(type, namespace, name, data, submit, cancel, change, c break end end - end end end @@ -358,7 +352,7 @@ end function ESX.Game.SpawnObject(object, coords, cb, networked) networked = networked == nil and true or networked - if networked then + if networked then ESX.TriggerServerCallback('esx:Onesync:SpawnObject', function(NetworkID) if cb then local obj = NetworkGetEntityFromNetworkId(NetworkID) @@ -366,7 +360,7 @@ function ESX.Game.SpawnObject(object, coords, cb, networked) while not DoesEntityExist(obj) do obj = NetworkGetEntityFromNetworkId(NetworkID) Wait(0) - Tries += 1 + Tries = Tries + 1 if Tries > 250 then break end @@ -374,7 +368,7 @@ function ESX.Game.SpawnObject(object, coords, cb, networked) cb(obj) end end, object, coords, 0.0) - else + else 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() @@ -402,19 +396,19 @@ function ESX.Game.DeleteObject(object) DeleteObject(object) end -function ESX.Game.SpawnVehicle(vehicle, coords, heading, cb, networked) - local model = type(vehicle) == 'number' and vehicle or joaat(vehicle) +function ESX.Game.SpawnVehicle(vehicleModel, coords, heading, cb, networked) + local model = type(vehicleModel) == 'number' and vehicleModel or joaat(vehicleModel) local vector = type(coords) == "vector3" and coords or vec(coords.x, coords.y, coords.z) networked = networked == nil and true or networked local playerCoords = GetEntityCoords(ESX.PlayerData.ped) - if not vector or not playerCoords then + if not vector or not playerCoords then return end 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(executing_resource)) + 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)) end CreateThread(function() @@ -482,7 +476,7 @@ end function ESX.Game.GetPlayers(onlyOtherPlayers, returnKeyValue, returnPeds) local players, myPlayer = {}, PlayerId() - for k, player in ipairs(GetActivePlayers()) do + for _, player in ipairs(GetActivePlayers()) do local ped = GetPlayerPed(player) if DoesEntityExist(ped) and ((onlyOtherPlayers and player ~= myPlayer) or not onlyOtherPlayers) then @@ -497,7 +491,6 @@ function ESX.Game.GetPlayers(onlyOtherPlayers, returnKeyValue, returnPeds) return players end - function ESX.Game.GetClosestObject(coords, modelFilter) return ESX.Game.GetClosestEntity(ESX.Game.GetObjects(), false, coords, modelFilter) end @@ -560,7 +553,7 @@ function ESX.Game.GetClosestEntity(entities, isPlayerEntities, coords, modelFilt if modelFilter then filteredEntities = {} - for k, entity in pairs(entities) do + for _, entity in pairs(entities) do if modelFilter[GetEntityModel(entity)] then filteredEntities[#filteredEntities + 1] = entity end @@ -583,7 +576,7 @@ function ESX.Game.GetVehicleInDirection() local playerCoords = GetEntityCoords(playerPed) local inDirection = GetOffsetFromEntityInWorldCoords(playerPed, 0.0, 5.0, 0.0) local rayHandle = StartExpensiveSynchronousShapeTestLosProbe(playerCoords, inDirection, 10, playerPed, 0) - local numRayHandle, hit, endCoords, surfaceNormal, entityHit = GetShapeTestResult(rayHandle) + local _, hit, _, _, entityHit = GetShapeTestResult(rayHandle) if hit == 1 and GetEntityType(entityHit) == 2 then local entityCoords = GetEntityCoords(entityHit) @@ -605,45 +598,51 @@ function ESX.Game.GetVehicleProperties(vehicle) local interiorColor = GetVehicleInteriorColour(vehicle) local customPrimaryColor = nil if hasCustomPrimaryColor then - customPrimaryColor = {GetVehicleCustomPrimaryColour(vehicle)} + customPrimaryColor = { GetVehicleCustomPrimaryColour(vehicle) } end local hasCustomXenonColor, customXenonColorR, customXenonColorG, customXenonColorB = GetVehicleXenonLightsCustomColor(vehicle) local customXenonColor = nil - if hasCustomXenonColor then - customXenonColor = {customXenonColorR, customXenonColorG, customXenonColorB} + if hasCustomXenonColor then + customXenonColor = { customXenonColorR, customXenonColorG, customXenonColorB } end - + local hasCustomSecondaryColor = GetIsVehicleSecondaryColourCustom(vehicle) local customSecondaryColor = nil if hasCustomSecondaryColor then - customSecondaryColor = {GetVehicleCustomSecondaryColour(vehicle)} + customSecondaryColor = { GetVehicleCustomSecondaryColour(vehicle) } end local extras = {} - for extraId = 0, 12 do + for extraId = 0, 20 do if DoesExtraExist(vehicle, extraId) then extras[tostring(extraId)] = IsVehicleExtraTurnedOn(vehicle, extraId) end end + local driftTyresEnabled = false + if type(GetDriftTyresEnabled(vehicle) == "boolean") and GetDriftTyresEnabled(vehicle) then + driftTyresEnabled = true + end + local doorsBroken, windowsBroken, tyreBurst = {}, {}, {} local numWheels = tostring(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. + 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. } if TyresIndex[numWheels] then - for tyre, idx in pairs(TyresIndex[numWheels]) do + for _, idx in pairs(TyresIndex[numWheels]) do tyreBurst[tostring(idx)] = IsVehicleTyreBurst(vehicle, idx, false) end end - for windowId = 0, 7 do -- 13 + for windowId = 0, 7 do -- 13 + RollUpWindow(vehicle, windowId) --fix when you put the car away with the window down windowsBroken[tostring(windowId)] = not IsVehicleWindowIntact(vehicle, windowId) end @@ -659,6 +658,7 @@ function ESX.Game.GetVehicleProperties(vehicle) doorsBroken = doorsBroken, windowsBroken = windowsBroken, tyreBurst = tyreBurst, + tyresCanBurst = GetVehicleTyresCanBurst(vehicle), plate = ESX.Math.Trim(GetVehicleNumberPlateText(vehicle)), plateIndex = GetVehicleNumberPlateTextIndex(vehicle), @@ -675,7 +675,7 @@ function ESX.Game.GetVehicleProperties(vehicle) pearlescentColor = pearlescentColor, wheelColor = wheelColor, - + dashboardColor = dashboardColor, interiorColor = interiorColor, @@ -684,11 +684,12 @@ function ESX.Game.GetVehicleProperties(vehicle) xenonColor = GetVehicleXenonLightsColor(vehicle), customXenonColor = customXenonColor, - neonEnabled = {IsVehicleNeonLightEnabled(vehicle, 0), IsVehicleNeonLightEnabled(vehicle, 1), - IsVehicleNeonLightEnabled(vehicle, 2), IsVehicleNeonLightEnabled(vehicle, 3)}, + neonEnabled = { IsVehicleNeonLightEnabled(vehicle, 0), IsVehicleNeonLightEnabled(vehicle, 1), + IsVehicleNeonLightEnabled(vehicle, 2), IsVehicleNeonLightEnabled(vehicle, 3) }, neonColor = table.pack(GetVehicleNeonLightsColour(vehicle)), extras = extras, + dirftTyresEnabled = driftTyresEnabled, tyreSmokeColor = table.pack(GetVehicleTyreSmokeColor(vehicle)), modSpoilers = GetVehicleMod(vehicle, 0), @@ -702,6 +703,7 @@ function ESX.Game.GetVehicleProperties(vehicle) modFender = GetVehicleMod(vehicle, 8), modRightFender = GetVehicleMod(vehicle, 9), modRoof = GetVehicleMod(vehicle, 10), + modRoofLivery = GetVehicleRoofLivery(vehicle), modEngine = GetVehicleMod(vehicle, 11), modBrakes = GetVehicleMod(vehicle, 12), @@ -715,7 +717,9 @@ function ESX.Game.GetVehicleProperties(vehicle) modXenon = IsToggleModOn(vehicle, 22), modFrontWheels = GetVehicleMod(vehicle, 23), + modCustomFrontWheels = GetVehicleModVariation(vehicle, 23), modBackWheels = GetVehicleMod(vehicle, 24), + modCustomBackWheels = GetVehicleModVariation(vehicle, 24), modPlateHolder = GetVehicleMod(vehicle, 25), modVanityPlate = GetVehicleMod(vehicle, 26), @@ -738,7 +742,7 @@ function ESX.Game.GetVehicleProperties(vehicle) modAerials = GetVehicleMod(vehicle, 43), modTrimB = GetVehicleMod(vehicle, 44), modTank = GetVehicleMod(vehicle, 45), - modDoorR = GetVehicleMod(vehicle, 47), + modWindows = GetVehicleMod(vehicle, 46), modLivery = GetVehicleMod(vehicle, 48) == -1 and GetVehicleLivery(vehicle) or GetVehicleMod(vehicle, 48), modLightbar = GetVehicleMod(vehicle, 49) } @@ -752,6 +756,10 @@ function ESX.Game.SetVehicleProperties(vehicle, props) local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle) SetVehicleModKit(vehicle, 0) + if props.tyresCanBurst ~= nil then + SetVehicleTyresCanBurst(vehicle, props.tyresCanBurst) + end + if props.plate ~= nil then SetVehicleNumberPlateText(vehicle, props.plate) end @@ -822,6 +830,10 @@ function ESX.Game.SetVehicleProperties(vehicle, props) end end + if props.driftTyresEnabled then + SetDriftTyresEnabled(vehicle, true) + end + if props.neonColor ~= nil then SetVehicleNeonLightsColour(vehicle, props.neonColor[1], props.neonColor[2], props.neonColor[3]) end @@ -871,6 +883,11 @@ function ESX.Game.SetVehicleProperties(vehicle, props) if props.modRoof ~= nil then SetVehicleMod(vehicle, 10, props.modRoof, false) end + + if props.modRoofLivery ~= nil then + SetVehicleRoofLivery(vehicle, props.modRoofLivery) + end + if props.modEngine ~= nil then SetVehicleMod(vehicle, 11, props.modEngine, false) end @@ -898,9 +915,15 @@ function ESX.Game.SetVehicleProperties(vehicle, props) if props.modFrontWheels ~= nil then SetVehicleMod(vehicle, 23, props.modFrontWheels, false) end + if props.modCustomFrontWheels ~= nil then + SetVehicleMod(vehicle, 23, props.modCustomFrontWheels, false) + end if props.modBackWheels ~= nil then SetVehicleMod(vehicle, 24, props.modBackWheels, false) end + if props.modCustomBackWheels ~= nil then + SetVehicleMod(vehicle, 24, props.modCustomBackWheels, false) + end if props.modPlateHolder ~= nil then SetVehicleMod(vehicle, 25, props.modPlateHolder, false) end @@ -976,7 +999,7 @@ function ESX.Game.SetVehicleProperties(vehicle, props) if props.windowsBroken ~= nil then for k, v in pairs(props.windowsBroken) do if v then - SmashVehicleWindow(vehicle, tonumber(k)) + RemoveVehicleWindow(vehicle, tonumber(k)) end end end @@ -1027,6 +1050,17 @@ function ESX.Game.Utils.DrawText3D(coords, text, size, font) ClearDrawOrigin() end +---@param account string Account name (money/bank/black_money) +---@return table|nil +function ESX.GetAccount(account) + for i = 1, #ESX.PlayerData.accounts, 1 do + if ESX.PlayerData.accounts[i].name == account then + return ESX.PlayerData.accounts[i] + end + end + return nil +end + function ESX.ShowInventory() if not Config.EnableDefaultInventory then return @@ -1034,16 +1068,16 @@ function ESX.ShowInventory() local playerPed = ESX.PlayerData.ped local elements = { - {unselectable = true, icon = 'fas fa-box', title = 'Player Inventory'} + { unselectable = true, icon = 'fas fa-box', title = 'Player Inventory' } } local currentWeight = 0 - for i=1, #(ESX.PlayerData.accounts) do + for i = 1, #(ESX.PlayerData.accounts) do if ESX.PlayerData.accounts[i].money > 0 then local formattedMoney = TranslateCap('locale_currency', ESX.Math.GroupDigits(ESX.PlayerData.accounts[i].money)) local canDrop = ESX.PlayerData.accounts[i].name ~= 'bank' - elements[#elements+1] = { + elements[#elements + 1] = { icon = 'fas fa-money-bill-wave', title = ('%s: %s'):format(ESX.PlayerData.accounts[i].label, formattedMoney), count = ESX.PlayerData.accounts[i].money, @@ -1056,11 +1090,11 @@ function ESX.ShowInventory() end end - for k, v in ipairs(ESX.PlayerData.inventory) do + for _, v in ipairs(ESX.PlayerData.inventory) do if v.count > 0 then currentWeight = currentWeight + (v.weight * v.count) - elements[#elements+1] = { + elements[#elements + 1] = { icon = 'fas fa-box', title = ('%s x%s'):format(v.label, v.count), count = v.count, @@ -1073,21 +1107,15 @@ function ESX.ShowInventory() end end - for k, v in ipairs(Config.Weapons) do + for _, v in ipairs(Config.Weapons) do local weaponHash = joaat(v.name) if HasPedGotWeapon(playerPed, weaponHash, false) then - local ammo, label = GetAmmoInPedWeapon(playerPed, weaponHash) + local ammo = GetAmmoInPedWeapon(playerPed, weaponHash) - if v.ammo then - label = ('%s - %s %s'):format(v.label, ammo, v.ammo.label) - else - label = v.label - end - - elements[#elements+1] = { + elements[#elements + 1] = { icon = 'fas fa-gun', - title = label, + title = v.ammo and ('%s - %s %s'):format(v.label, ammo, v.ammo.label) or v.label, count = 1, type = 'item_weapon', value = v.name, @@ -1100,21 +1128,21 @@ function ESX.ShowInventory() end end - elements[#elements+1] = { + elements[#elements + 1] = { unselectable = true, icon = "fas fa-weight", - title = "Current Weight: "..currentWeight + title = "Current Weight: " .. currentWeight } - + ESX.CloseContext() - ESX.OpenContext("right", elements, function(menu,element) + ESX.OpenContext("right", elements, function(_, element) local player, distance = ESX.Game.GetClosestPlayer() - elements2 = {} + local elements2 = {} if element.usable then - elements2[#elements2+1] = { + elements2[#elements2 + 1] = { icon = "fas fa-utensils", title = TranslateCap('use'), action = 'use', @@ -1125,7 +1153,7 @@ function ESX.ShowInventory() if element.canRemove then if player ~= -1 and distance <= 3.0 then - elements2[#elements2+1] = { + elements2[#elements2 + 1] = { icon = "fas fa-hands", title = TranslateCap('give'), action = 'give', @@ -1134,7 +1162,7 @@ function ESX.ShowInventory() } end - elements2[#elements2+1] = { + elements2[#elements2 + 1] = { icon = "fas fa-trash", title = TranslateCap('remove'), action = 'remove', @@ -1144,7 +1172,7 @@ function ESX.ShowInventory() end if element.type == 'item_weapon' and element.canGiveAmmo and element.ammo > 0 and player ~= -1 and distance <= 3.0 then - elements2[#elements2+1] = { + elements2[#elements2 + 1] = { icon = "fas fa-gun", title = TranslateCap('giveammo'), action = 'give_ammo', @@ -1153,13 +1181,13 @@ function ESX.ShowInventory() } end - elements2[#elements2+1] = { + elements2[#elements2 + 1] = { icon = "fas fa-arrow-left", title = TranslateCap('return'), action = 'return' } - ESX.OpenContext("right", elements2, function(menu2,element2) + ESX.OpenContext("right", elements2, function(_, element2) local item, type = element2.value, element2.type if element2.action == "give" then @@ -1167,24 +1195,24 @@ function ESX.ShowInventory() if #playersNearby > 0 then local players = {} - elements3 = { - {unselectable = true, icon = "fas fa-users", title = "Nearby Players"} + local elements3 = { + { unselectable = true, icon = "fas fa-users", title = "Nearby Players" } } - for k, playerNearby in ipairs(playersNearby) do + for _, playerNearby in ipairs(playersNearby) do players[GetPlayerServerId(playerNearby)] = true end ESX.TriggerServerCallback('esx:getPlayerNames', function(returnedPlayers) for playerId, playerName in pairs(returnedPlayers) do - elements3[#elements3+1] = { + elements3[#elements3 + 1] = { icon = "fas fa-user", title = playerName, playerId = playerId } end - ESX.OpenContext("right", elements3, function(menu3,element3) + ESX.OpenContext("right", elements3, function(_, element3) local selectedPlayer, selectedPlayerId = GetPlayerFromServerId(element3.playerId), element3.playerId playersNearby = ESX.Game.GetPlayersInArea(GetEntityCoords(playerPed), 3.0) playersNearby = ESX.Table.Set(playersNearby) @@ -1198,12 +1226,12 @@ function ESX.ShowInventory() ESX.CloseContext() else local elementsG = { - {unselectable = true, icon = "fas fa-trash", title = element.title}, - {icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to give..", inputMin = 1, inputMax = 1000}, - {icon = "fas fa-check-double", title = "Confirm", val = "confirm"} + { unselectable = true, icon = "fas fa-trash", title = element.title }, + { icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to give..", inputMin = 1, inputMax = 1000 }, + { icon = "fas fa-check-double", title = "Confirm", val = "confirm" } } - ESX.OpenContext("right", elementsG, function(menuG,elementG) + ESX.OpenContext("right", elementsG, function(menuG, _) local quantity = tonumber(menuG.eles[2].inputValue) if quantity and quantity > 0 and element.count >= quantity then @@ -1237,12 +1265,12 @@ function ESX.ShowInventory() TriggerServerEvent('esx:removeInventoryItem', type, item) else local elementsR = { - {unselectable = true, icon = "fas fa-trash", title = element.title}, - {icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to remove..", inputMin = 1, inputMax = 1000}, - {icon = "fas fa-check-double", title = "Confirm", val = "confirm"} + { unselectable = true, icon = "fas fa-trash", title = element.title }, + { icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to remove..", inputMin = 1, inputMax = 1000 }, + { icon = "fas fa-check-double", title = "Confirm", val = "confirm" } } - ESX.OpenContext("right", elementsR, function(menuR,elementR) + ESX.OpenContext("right", elementsR, function(menuR, _) local quantity = tonumber(menuR.eles[2].inputValue) if quantity and quantity > 0 and element.count >= quantity then @@ -1272,12 +1300,12 @@ function ESX.ShowInventory() if closestPlayer ~= -1 and closestDistance < 3.0 then if pedAmmo > 0 then local elementsGA = { - {unselectable = true, icon = "fas fa-trash", title = element.title}, - {icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to give..", inputMin = 1, inputMax = 1000}, - {icon = "fas fa-check-double", title = "Confirm", val = "confirm"} + { unselectable = true, icon = "fas fa-trash", title = element.title }, + { icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to give..", inputMin = 1, inputMax = 1000 }, + { icon = "fas fa-check-double", title = "Confirm", val = "confirm" } } - ESX.OpenContext("right", elementsGA, function(menuGA,elementGA) + ESX.OpenContext("right", elementsGA, function(menuGA, _) local quantity = tonumber(menuGA.eles[2].inputValue) if quantity and quantity > 0 then @@ -1326,20 +1354,20 @@ end) function ESX.GetVehicleType(model) model = type(model) == 'string' and joaat(model) or model - if model == `submersible` or model == `submersible2` then + if model == `submersible` or model == `submersible2` then return 'submarine' - end + end - local vehicleType = GetVehicleClassFromName(model) - local types = { - [8] = "bike", - [11] = "trailer", - [13] = "bike", - [14] = "boat", - [15] = "heli", - [16] = "plane", - [21] = "train", - } + local vehicleType = GetVehicleClassFromName(model) + local types = { + [8] = "bike", + [11] = "trailer", + [13] = "bike", + [14] = "boat", + [15] = "heli", + [16] = "plane", + [21] = "train", + } return types[vehicleType] or "automobile" -end \ No newline at end of file +end diff --git a/[core]/es_extended/client/main.lua b/[core]/es_extended/client/main.lua index 0c851b5f..93c95429 100644 --- a/[core]/es_extended/client/main.lua +++ b/[core]/es_extended/client/main.lua @@ -3,7 +3,7 @@ local pickups = {} CreateThread(function() while not Config.Multichar do Wait(100) - + if NetworkIsPlayerActive(PlayerId()) then exports.spawnmanager:setAutoSpawn(false) DoScreenFadeOut(0) @@ -76,11 +76,11 @@ AddEventHandler('esx:playerLoaded', function(xPlayer, isNew, skin) end if Config.DisableVehicleSeatShuff then - AddEventHandler('esx:enteredVehicle', function(vehicle, plate, seat) + AddEventHandler('esx:enteredVehicle', function(vehicle, _, seat) if seat == 0 then SetPedIntoVehicle(ESX.PlayerData.ped, vehicle, 0) SetPedConfigFlag(ESX.PlayerData.ped, 184, true) - end + end end) end @@ -101,7 +101,7 @@ AddEventHandler('esx:playerLoaded', function(xPlayer, isNew, skin) SetPlayerLockonRangeOverride(playerId, 2.0) end end - + if Config.DisableVehicleRewards then DisablePlayerVehicleRewards(playerId) end @@ -173,8 +173,8 @@ AddEventHandler('esx:playerLoaded', function(xPlayer, isNew, skin) 'WORLD_VEHICLE_DISTANT_EMPTY_GROUND', 'WORLD_HUMAN_PAPARAZZI' } - - for i, v in pairs(scenarios) do + + for _, v in pairs(scenarios) do SetScenarioTypeEnabled(v, false) end end @@ -218,7 +218,7 @@ AddEventHandler('esx:restoreLoadout', function() local ammoTypes = {} RemoveAllPedWeapons(ESX.PlayerData.ped, true) - for k, v in ipairs(ESX.PlayerData.loadout) do + for _, v in ipairs(ESX.PlayerData.loadout) do local weaponName = v.name local weaponHash = joaat(weaponName) @@ -227,7 +227,7 @@ AddEventHandler('esx:restoreLoadout', function() local ammoType = GetPedAmmoTypeFromWeapon(ESX.PlayerData.ped, weaponHash) - for k2, v2 in ipairs(v.components) do + for _, v2 in ipairs(v.components) do local componentHash = ESX.GetWeaponComponent(weaponName, v2).hash GiveWeaponComponentToPed(ESX.PlayerData.ped, weaponHash, componentHash) end @@ -241,30 +241,30 @@ AddEventHandler('esx:restoreLoadout', function() end) -- Credit: https://github.com/LukeWasTakenn, https://github.com/LukeWasTakenn/luke_garages/blob/master/client/client.lua#L331-L352 -AddStateBagChangeHandler('VehicleProperties', nil, function(bagName, key, value) - if not value then - return +AddStateBagChangeHandler('VehicleProperties', nil, function(bagName, _, value) + if not value then + return end - local netId = bagName:gsub('entity:', '') - local timer = GetGameTimer() - while not NetworkDoesEntityExistWithNetworkId(tonumber(netId)) do - Wait(0) - if GetGameTimer() - timer > 10000 then - return - end - end - - local vehicle = NetToVeh(tonumber(netId)) - local timer = GetGameTimer() - while NetworkGetEntityOwner(vehicle) ~= PlayerId() do - Wait(0) - if GetGameTimer() - timer > 10000 then - return - end - end + local netId = bagName:gsub('entity:', '') + local timer = GetGameTimer() + while not NetworkDoesEntityExistWithNetworkId(tonumber(netId)) do + Wait(0) + if GetGameTimer() - timer > 10000 then + return + end + end - ESX.Game.SetVehicleProperties(vehicle, value) + local vehicle = NetToVeh(tonumber(netId)) + local timer2 = GetGameTimer() + while NetworkGetEntityOwner(vehicle) ~= PlayerId() do + Wait(0) + if GetGameTimer() - timer2 > 10000 then + return + end + end + + ESX.Game.SetVehicleProperties(vehicle, value) end) RegisterNetEvent('esx:setAccountMoney') @@ -293,8 +293,6 @@ if not Config.OxInventory then if showNotification then ESX.UI.ShowInventoryItemNotification(true, item, count) end - - ESX.ShowInventory() end) RegisterNetEvent('esx:removeInventoryItem') @@ -310,35 +308,32 @@ if not Config.OxInventory then if showNotification then ESX.UI.ShowInventoryItemNotification(false, item, count) end - - ESX.ShowInventory() end) RegisterNetEvent('esx:addWeapon') - AddEventHandler('esx:addWeapon', function(weapon, ammo) + AddEventHandler('esx:addWeapon', function() print("[^1ERROR^7] event ^5'esx:addWeapon'^7 Has Been Removed. Please use ^5xPlayer.addWeapon^7 Instead!") end) RegisterNetEvent('esx:addWeaponComponent') - AddEventHandler('esx:addWeaponComponent', function(weapon, weaponComponent) + AddEventHandler('esx:addWeaponComponent', function() print("[^1ERROR^7] event ^5'esx:addWeaponComponent'^7 Has Been Removed. Please use ^5xPlayer.addWeaponComponent^7 Instead!") end) RegisterNetEvent('esx:setWeaponAmmo') - AddEventHandler('esx:setWeaponAmmo', function(weapon, weaponAmmo) + AddEventHandler('esx:setWeaponAmmo', function() print("[^1ERROR^7] event ^5'esx:setWeaponAmmo'^7 Has Been Removed. Please use ^5xPlayer.addWeaponAmmo^7 Instead!") end) RegisterNetEvent('esx:setWeaponTint') AddEventHandler('esx:setWeaponTint', function(weapon, weaponTintIndex) SetPedWeaponTintIndex(ESX.PlayerData.ped, joaat(weapon), weaponTintIndex) - end) RegisterNetEvent('esx:removeWeapon') AddEventHandler('esx:removeWeapon', function(weapon) local playerPed = ESX.PlayerData.ped - RemoveWeaponFromPed(ESX.PlayerData.ped, joaat(weapon)) + RemoveWeaponFromPed(playerPed, joaat(weapon)) SetPedAmmo(ESX.PlayerData.ped, joaat(weapon), 0) end) @@ -377,7 +372,7 @@ if not Config.OxInventory then local pickupObject = CreateWeaponObject(weaponHash, 50, coords.x, coords.y, coords.z, true, 1.0, 0) SetWeaponObjectTintIndex(pickupObject, tintIndex) - for k, v in ipairs(components) do + for _, v in ipairs(components) do local component = ESX.GetWeaponComponent(name, v) GiveWeaponComponentToWeaponObject(pickupObject, component.hash) end @@ -392,7 +387,7 @@ if not Config.OxInventory then AddEventHandler('esx:createMissingPickups', function(missingPickups) for pickupId, pickup in pairs(missingPickups) do TriggerEvent('esx:createPickup', pickupId, pickup.label, pickup.coords - vector3(0, 0, 1.0), pickup.type, pickup.name - , pickup.components, pickup.tintIndex) + , pickup.components, pickup.tintIndex) end end) end @@ -468,7 +463,7 @@ if not Config.OxInventory then while true do local Sleep = 1500 local playerCoords = GetEntityCoords(ESX.PlayerData.ped) - local closestPlayer, closestDistance = ESX.Game.GetClosestPlayer(playerCoords) + local _, closestDistance = ESX.Game.GetClosestPlayer(playerCoords) for pickupId, pickup in pairs(pickups) do local distance = #(playerCoords - pickup.coords) @@ -646,7 +641,7 @@ local function noclipThread() end RegisterNetEvent("esx:noclip") -AddEventHandler("esx:noclip", function(input) +AddEventHandler("esx:noclip", function() ESX.TriggerServerCallback("esx:isUserAdmin", function(admin) if not admin then return @@ -708,4 +703,4 @@ end RegisterNetEvent('esx:updatePlayerData', function(key, val) ESX.SetPlayerData(key, val) -end) \ No newline at end of file +end) diff --git a/[core]/es_extended/client/modules/actions.lua b/[core]/es_extended/client/modules/actions.lua index 95e14130..219c3508 100644 --- a/[core]/es_extended/client/modules/actions.lua +++ b/[core]/es_extended/client/modules/actions.lua @@ -21,7 +21,6 @@ end CreateThread(function() while true do - if playerPed ~= PlayerPedId() then playerPed = PlayerPedId() ESX.SetPlayerData('ped', playerPed) @@ -37,7 +36,7 @@ CreateThread(function() isJumping = false end - if IsPauseMenuActive() and not inPauseMenu then + if IsPauseMenuActive() and not inPauseMenu then inPauseMenu = true TriggerEvent('esx:pauseMenuActive', inPauseMenu) elseif not IsPauseMenuActive() and inPauseMenu then @@ -52,7 +51,7 @@ CreateThread(function() local vehicle = GetVehiclePedIsTryingToEnter(playerPed) local plate = GetVehicleNumberPlateText(vehicle) local seat = GetSeatPedIsTryingToEnter(playerPed) - local displayName, netId = GetData(vehicle) + local _, netId = GetData(vehicle) isEnteringVehicle = true TriggerEvent('esx:enteringVehicle', vehicle, plate, seat, netId) TriggerServerEvent('esx:enteringVehicle', plate, seat, netId) @@ -87,7 +86,6 @@ CreateThread(function() end) if Config.EnableDebug then - AddEventHandler('esx:playerPedChanged', function(netId) print('esx:playerPedChanged', netId) end) @@ -111,5 +109,4 @@ if Config.EnableDebug then AddEventHandler('esx:exitedVehicle', function(vehicle, plate, seat, displayName, netId) print('esx:exitedVehicle', 'vehicle', vehicle, 'plate', plate, 'seat', seat, 'displayName', displayName, 'netId', netId) end) - end diff --git a/[core]/es_extended/client/modules/callback.lua b/[core]/es_extended/client/modules/callback.lua index 180c9216..e6d38cdc 100644 --- a/[core]/es_extended/client/modules/callback.lua +++ b/[core]/es_extended/client/modules/callback.lua @@ -7,34 +7,34 @@ local clientCallbacks = {} ---@param callback function ---@param ... any ESX.TriggerServerCallback = function(eventName, callback, ...) - serverRequests[RequestId] = callback - - TriggerServerEvent('esx:triggerServerCallback', eventName, RequestId, GetInvokingResource() or "unknown", ...) + serverRequests[RequestId] = callback - RequestId = RequestId + 1 + TriggerServerEvent('esx:triggerServerCallback', eventName, RequestId, GetInvokingResource() or "unknown", ...) + + RequestId = RequestId + 1 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)) - end + 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)) + end - serverRequests[requestId](...) - serverRequests[requestId] = nil + serverRequests[requestId](...) + serverRequests[requestId] = nil end) ---@param eventName string ---@param callback function ESX.RegisterClientCallback = function(eventName, callback) - clientCallbacks[eventName] = callback + clientCallbacks[eventName] = callback 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)) - end + 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)) + end - clientCallbacks[eventName](function(...) - TriggerServerEvent('esx:clientCallback', requestId, invoker, ...) - end, ...) -end) \ No newline at end of file + clientCallbacks[eventName](function(...) + TriggerServerEvent('esx:clientCallback', requestId, invoker, ...) + end, ...) +end) diff --git a/[core]/es_extended/client/modules/death.lua b/[core]/es_extended/client/modules/death.lua index be39fe3b..51d8aec7 100644 --- a/[core]/es_extended/client/modules/death.lua +++ b/[core]/es_extended/client/modules/death.lua @@ -4,7 +4,7 @@ AddEventHandler('gameEventTriggered', function(event, data) if not IsPedAPlayer(victim) then return end local player = PlayerId() local playerPed = PlayerPedId() - if victimDied and NetworkGetPlayerIndexFromPed(victim) == player and (IsPedDeadOrDying(victim, true) or IsPedFatallyInjured(victim)) then + if victimDied and NetworkGetPlayerIndexFromPed(victim) == player and (IsPedDeadOrDying(victim, true) or IsPedFatallyInjured(victim)) then local killerEntity, deathCause = GetPedSourceOfDeath(playerPed), GetPedCauseOfDeath(playerPed) local killerClientId = NetworkGetPlayerIndexFromPed(killerEntity) if killerEntity ~= playerPed and killerClientId and NetworkIsPlayerActive(killerClientId) then @@ -21,8 +21,8 @@ function PlayerKilledByPlayer(killerServerId, killerClientId, deathCause) local distance = #(victimCoords - killerCoords) local data = { - victimCoords = {x = ESX.Math.Round(victimCoords.x, 1), y = ESX.Math.Round(victimCoords.y, 1), z = ESX.Math.Round(victimCoords.z, 1)}, - killerCoords = {x = ESX.Math.Round(killerCoords.x, 1), y = ESX.Math.Round(killerCoords.y, 1), z = ESX.Math.Round(killerCoords.z, 1)}, + victimCoords = { x = ESX.Math.Round(victimCoords.x, 1), y = ESX.Math.Round(victimCoords.y, 1), z = ESX.Math.Round(victimCoords.z, 1) }, + killerCoords = { x = ESX.Math.Round(killerCoords.x, 1), y = ESX.Math.Round(killerCoords.y, 1), z = ESX.Math.Round(killerCoords.z, 1) }, killedByPlayer = true, deathCause = deathCause, @@ -41,7 +41,7 @@ function PlayerKilled(deathCause) local victimCoords = GetEntityCoords(playerPed) local data = { - victimCoords = {x = ESX.Math.Round(victimCoords.x, 1), y = ESX.Math.Round(victimCoords.y, 1), z = ESX.Math.Round(victimCoords.z, 1)}, + victimCoords = { x = ESX.Math.Round(victimCoords.x, 1), y = ESX.Math.Round(victimCoords.y, 1), z = ESX.Math.Round(victimCoords.z, 1) }, killedByPlayer = false, deathCause = deathCause diff --git a/[core]/es_extended/client/modules/npwd.lua b/[core]/es_extended/client/modules/npwd.lua index b8de8dab..cac2e111 100644 --- a/[core]/es_extended/client/modules/npwd.lua +++ b/[core]/es_extended/client/modules/npwd.lua @@ -1,56 +1,57 @@ local npwd = GetResourceState('npwd'):find('start') and exports.npwd or nil local function checkPhone() - if not npwd then - return - end + if not npwd then + return + end - local phoneItem = ESX.SearchInventory('phone') - npwd:setPhoneDisabled((phoneItem and phoneItem.count or 0) <= 0) + local phoneItem = ESX.SearchInventory('phone') + npwd:setPhoneDisabled((phoneItem and phoneItem.count or 0) <= 0) end + RegisterNetEvent('esx:playerLoaded', checkPhone) AddEventHandler('onClientResourceStart', function(resource) - if resource ~= 'npwd' then - return - end - - npwd = GetResourceState('npwd'):find('start') and exports.npwd or nil + if resource ~= 'npwd' then + return + end - if ESX.PlayerLoaded then - checkPhone() - end + npwd = GetResourceState('npwd'):find('start') and exports.npwd or nil + + if ESX.PlayerLoaded then + checkPhone() + end end) AddEventHandler('onClientResourceStop', function(resource) - if resource == 'npwd' then - npwd = nil - end + if resource == 'npwd' then + npwd = nil + end end) RegisterNetEvent('esx:onPlayerLogout', function() - if not npwd then - return - end + if not npwd then + return + end npwd:setPhoneVisible(false) npwd:setPhoneDisabled(true) end) RegisterNetEvent('esx:removeInventoryItem', function(item, count) - if not npwd then - return - end + if not npwd then + return + end - if item == 'phone' and count == 0 then - npwd:setPhoneDisabled(true) - end + if item == 'phone' and count == 0 then + npwd:setPhoneDisabled(true) + end end) RegisterNetEvent('esx:addInventoryItem', function(item) - if not npwd or item ~= 'phone' then - return - end + if not npwd or item ~= 'phone' then + return + end - npwd:setPhoneDisabled(false) -end) \ No newline at end of file + npwd:setPhoneDisabled(false) +end) diff --git a/[core]/es_extended/common/functions.lua b/[core]/es_extended/common/functions.lua index f8d65bde..1bf9f8b7 100644 --- a/[core]/es_extended/common/functions.lua +++ b/[core]/es_extended/common/functions.lua @@ -1,7 +1,7 @@ local Charset = {} -for i = 48, 57 do table.insert(Charset, string.char(i)) end -for i = 65, 90 do table.insert(Charset, string.char(i)) end +for i = 48, 57 do table.insert(Charset, string.char(i)) end +for i = 65, 90 do table.insert(Charset, string.char(i)) end for i = 97, 122 do table.insert(Charset, string.char(i)) end local weaponsByName = {} @@ -72,20 +72,20 @@ function ESX.DumpTable(table, nb) if type(table) == 'table' then local s = '' - for i = 1, nb + 1, 1 do + for _ = 1, nb + 1, 1 do s = s .. " " end s = '{\n' - for k,v in pairs(table) do - if type(k) ~= 'number' then k = '"'..k..'"' end - for i = 1, nb, 1 do + for k, v in pairs(table) do + if type(k) ~= 'number' then k = '"' .. k .. '"' end + for _ = 1, nb, 1 do s = s .. " " end - s = s .. '['..k..'] = ' .. ESX.DumpTable(v, nb + 1) .. ',\n' + s = s .. '[' .. k .. '] = ' .. ESX.DumpTable(v, nb + 1) .. ',\n' end - for i = 1, nb, 1 do + for _ = 1, nb, 1 do s = s .. " " end diff --git a/[core]/es_extended/common/modules/math.lua b/[core]/es_extended/common/modules/math.lua index 20856f09..c851c08f 100644 --- a/[core]/es_extended/common/modules/math.lua +++ b/[core]/es_extended/common/modules/math.lua @@ -2,7 +2,7 @@ ESX.Math = {} function ESX.Math.Round(value, numDecimalPlaces) if numDecimalPlaces then - local power = 10^numDecimalPlaces + local power = 10 ^ numDecimalPlaces return math.floor((value * power) + 0.5) / (power) else return math.floor(value + 0.5) @@ -11,9 +11,9 @@ end -- credit http://richard.warburton.it function ESX.Math.GroupDigits(value) - local left,num,right = string.match(value,'^([^%d]*%d)(%d*)(.-)$') + local left, num, right = string.match(value, '^([^%d]*%d)(%d*)(.-)$') - return left..(num:reverse():gsub('(%d%d%d)','%1' .. TranslateCap('locale_digit_grouping_symbol')):reverse())..right + return left .. (num:reverse():gsub('(%d%d%d)', '%1' .. TranslateCap('locale_digit_grouping_symbol')):reverse()) .. right end function ESX.Math.Trim(value) @@ -22,4 +22,4 @@ function ESX.Math.Trim(value) else return nil end -end \ No newline at end of file +end diff --git a/[core]/es_extended/common/modules/table.lua b/[core]/es_extended/common/modules/table.lua index b2800c57..3593b245 100644 --- a/[core]/es_extended/common/modules/table.lua +++ b/[core]/es_extended/common/modules/table.lua @@ -4,7 +4,7 @@ ESX.Table = {} function ESX.Table.SizeOf(t) local count = 0 - for _,_ in pairs(t) do + for _, _ in pairs(t) do count = count + 1 end @@ -13,12 +13,12 @@ end function ESX.Table.Set(t) local set = {} - for k,v in ipairs(t) do set[v] = true end + for _, v in ipairs(t) do set[v] = true end return set end function ESX.Table.IndexOf(t, value) - for i=1, #t, 1 do + for i = 1, #t, 1 do if t[i] == value then return i end @@ -28,7 +28,7 @@ function ESX.Table.IndexOf(t, value) end function ESX.Table.LastIndexOf(t, value) - for i=#t, 1, -1 do + for i = #t, 1, -1 do if t[i] == value then return i end @@ -38,7 +38,7 @@ function ESX.Table.LastIndexOf(t, value) end function ESX.Table.Find(t, cb) - for i=1, #t, 1 do + for i = 1, #t, 1 do if cb(t[i]) then return t[i] end @@ -48,7 +48,7 @@ function ESX.Table.Find(t, cb) end function ESX.Table.FindIndex(t, cb) - for i=1, #t, 1 do + for i = 1, #t, 1 do if cb(t[i]) then return i end @@ -60,7 +60,7 @@ end function ESX.Table.Filter(t, cb) local newTable = {} - for i=1, #t, 1 do + for i = 1, #t, 1 do if cb(t[i]) then table.insert(newTable, t[i]) end @@ -72,7 +72,7 @@ end function ESX.Table.Map(t, cb) local newTable = {} - for i=1, #t, 1 do + for i = 1, #t, 1 do newTable[i] = cb(t[i], i) end @@ -82,7 +82,7 @@ end function ESX.Table.Reverse(t) local newTable = {} - for i=#t, 1, -1 do + for i = #t, 1, -1 do table.insert(newTable, t[i]) end @@ -95,7 +95,7 @@ function ESX.Table.Clone(t) local meta = getmetatable(t) local target = {} - for k,v in pairs(t) do + for k, v in pairs(t) do if type(v) == 'table' then target[k] = ESX.Table.Clone(v) else @@ -111,7 +111,7 @@ end function ESX.Table.Concat(t1, t2) local t3 = ESX.Table.Clone(t1) - for i=1, #t2, 1 do + for i = 1, #t2, 1 do table.insert(t3, t2[i]) end @@ -119,12 +119,11 @@ function ESX.Table.Concat(t1, t2) end function ESX.Table.Join(t, sep) - local sep = sep or ',' local str = '' - for i=1, #t, 1 do + for i = 1, #t, 1 do if i > 1 then - str = str .. sep + str = str .. (sep or ',') end str = str .. t[i] @@ -135,21 +134,21 @@ end -- Credits: https://github.com/JonasDev99/qb-garages/blob/b0335d67cb72a6b9ac60f62a87fb3946f5c2f33d/server/main.lua#L5 function ESX.Table.TableContains(tab, val) - if type(val) == "table" then - for _, value in pairs(tab) do - if ESX.Table.TableContains(val, value) then - return true - end - end - return false - else - for _, value in pairs(tab) do - if value == val then - return true - end - end - end - return false + if type(val) == "table" then + for _, value in pairs(tab) do + if ESX.Table.TableContains(val, value) then + return true + end + end + return false + else + for _, value in pairs(tab) do + if value == val then + return true + end + end + end + return false end -- Credit: https://stackoverflow.com/a/15706820 @@ -158,14 +157,14 @@ function ESX.Table.Sort(t, order) -- collect the keys local keys = {} - for k,_ in pairs(t) do + for k, _ in pairs(t) do keys[#keys + 1] = k end -- if order function given, sort by it by passing the table and keys a, b, -- otherwise just sort the keys if order then - table.sort(keys, function(a,b) + table.sort(keys, function(a, b) return order(t, a, b) end) else diff --git a/[core]/es_extended/common/modules/timeout.lua b/[core]/es_extended/common/modules/timeout.lua index cb56de7b..814b086c 100644 --- a/[core]/es_extended/common/modules/timeout.lua +++ b/[core]/es_extended/common/modules/timeout.lua @@ -2,22 +2,22 @@ local TimeoutCount = 0 local CancelledTimeouts = {} ESX.SetTimeout = function(msec, cb) - local id = TimeoutCount + 1 + local id = TimeoutCount + 1 - SetTimeout(msec, function() - if CancelledTimeouts[id] then - CancelledTimeouts[id] = nil - return - end - - cb() - end) + SetTimeout(msec, function() + if CancelledTimeouts[id] then + CancelledTimeouts[id] = nil + return + end - TimeoutCount = id + cb() + end) - return id + TimeoutCount = id + + return id end ESX.ClearTimeout = function(id) - CancelledTimeouts[id] = true -end \ No newline at end of file + CancelledTimeouts[id] = true +end diff --git a/[core]/es_extended/config.logs.lua b/[core]/es_extended/config.logs.lua index b58a8fed..34f91641 100644 --- a/[core]/es_extended/config.logs.lua +++ b/[core]/es_extended/config.logs.lua @@ -4,7 +4,8 @@ Config.DiscordLogs = { test = '', Chat = '', UserActions = '', - Resources = '' + Resources = '', + Paycheck = '' }, Colors = { -- https://www.spycolor.com/ diff --git a/[core]/es_extended/config.lua b/[core]/es_extended/config.lua index cb13fb33..a2bf5b6a 100644 --- a/[core]/es_extended/config.lua +++ b/[core]/es_extended/config.lua @@ -1,7 +1,7 @@ -Config = {} -Config.Locale = GetConvar('esx:locale', 'en') +Config = {} +Config.Locale = GetConvar('esx:locale', 'en') -Config.Accounts = { +Config.Accounts = { bank = { label = TranslateCap('account_bank'), round = true @@ -16,58 +16,74 @@ Config.Accounts = { } } -Config.StartingAccountMoney = {bank = 50000} +Config.StartingAccountMoney = { bank = 50000 } -Config.DefaultSpawn = {x = -269.4, y = -955.3, z = 31.2, heading = 205.8} -Config.EnablePaycheck = true -- enable paycheck -Config.EnableSocietyPayouts = false -- pay from the society account that the player is employed at? Requirement: esx_society -Config.MaxWeight = 24 -- the max inventory weight without backpack -Config.PaycheckInterval = 7 * 60000 -- how often to recieve pay checks in milliseconds -Config.EnableDebug = false -- Use Debug options? -Config.EnableDefaultInventory = true -- Display the default Inventory ( F2 ) -Config.EnableWantedLevel = false -- Use Normal GTA wanted Level? -Config.EnablePVP = true -- Allow Player to player combat - -Config.Multichar = GetResourceState("esx_multicharacter") ~= "missing" -Config.Identity = true -- Select a characters identity data before they have loaded in (this happens by default with multichar) -Config.DistanceGive = 4.0 -- Max distance when giving items, weapons etc. - -Config.DisableHealthRegeneration = false -- Player will no longer regenerate health -Config.DisableVehicleRewards = false -- Disables Player Recieving weapons from vehicles -Config.DisableNPCDrops = false -- stops NPCs from dropping weapons on death -Config.DisableDispatchServices = false -- Disable Dispatch services -Config.DisableScenarios = false -- Disable Scenarios -Config.DisableWeaponWheel = false -- Disables default weapon wheel -Config.DisableAimAssist = false -- disables AIM assist (mainly on controllers) -Config.DisableVehicleSeatShuff = false -- Disables vehicle seat shuff -Config.RemoveHudCommonents = { - [1] = false, --WANTED_STARS, - [2] = false, --WEAPON_ICON - [3] = false, --CASH - [4] = false, --MP_CASH - [5] = false, --MP_MESSAGE - [6] = false, --VEHICLE_NAME - [7] = false,-- AREA_NAME - [8] = false,-- VEHICLE_CLASS - [9] = false, --STREET_NAME - [10] = false, --HELP_TEXT - [11] = false, --FLOATING_HELP_TEXT_1 - [12] = false, --FLOATING_HELP_TEXT_2 - [13] = false, --CASH_CHANGE - [14] = false, --RETICLE - [15] = false, --SUBTITLE_TEXT - [16] = false, --RADIO_STATIONS - [17] = false, --SAVING_GAME, - [18] = false, --GAME_STREAM - [19] = false, --WEAPON_WHEEL - [20] = false, --WEAPON_WHEEL_STATS - [21] = false, --HUD_COMPONENTS - [22] = false, --HUD_WEAPONS +Config.DefaultSpawns = { -- If you want to have more spawn positions and select them randomly uncomment commented code or add more locations + { x = 222.2027, y = -864.0162, z = 30.2922, heading = 1.0 }, + --{x = 224.9865, y = -865.0871, z = 30.2922, heading = 1.0}, + --{x = 227.8436, y = -866.0400, z = 30.2922, heading = 1.0}, + --{x = 230.6051, y = -867.1450, z = 30.2922, heading = 1.0}, + --{x = 233.5459, y = -868.2626, z = 30.2922, heading = 1.0} } -Config.SpawnVehMaxUpgrades = true -- admin vehicles spawn with max vehcle settings -Config.CustomAIPlates = 'ESX.A111' -- Custom plates for AI vehicles +Config.AdminGroups = { + ['owner'] = true, + ['admin'] = true +} + + +Config.EnablePaycheck = true -- enable paycheck +Config.LogPaycheck = false -- Logs paychecks to a nominated Discord channel via webhook (default is false) +Config.EnableSocietyPayouts = false -- pay from the society account that the player is employed at? Requirement: esx_society +Config.MaxWeight = 24 -- the max inventory weight without backpack +Config.PaycheckInterval = 7 * 60000 -- how often to recieve pay checks in milliseconds +Config.EnableDebug = false -- Use Debug options? +Config.EnableDefaultInventory = true -- Display the default Inventory ( F2 ) +Config.EnableWantedLevel = false -- Use Normal GTA wanted Level? +Config.EnablePVP = true -- Allow Player to player combat + +Config.Multichar = GetResourceState("esx_multicharacter") ~= "missing" +Config.Identity = true -- Select a characters identity data before they have loaded in (this happens by default with multichar) +Config.DistanceGive = 4.0 -- Max distance when giving items, weapons etc. + +Config.AdminLogging = false -- Logs the usage of certain commands by those with group.admin ace permissions (default is false) + +Config.DisableHealthRegeneration = false -- Player will no longer regenerate health +Config.DisableVehicleRewards = false -- Disables Player Recieving weapons from vehicles +Config.DisableNPCDrops = false -- stops NPCs from dropping weapons on death +Config.DisableDispatchServices = false -- Disable Dispatch services +Config.DisableScenarios = false -- Disable Scenarios +Config.DisableWeaponWheel = false -- Disables default weapon wheel +Config.DisableAimAssist = false -- disables AIM assist (mainly on controllers) +Config.DisableVehicleSeatShuff = false -- Disables vehicle seat shuff +Config.RemoveHudCommonents = { + [1] = false, --WANTED_STARS, + [2] = false, --WEAPON_ICON + [3] = false, --CASH + [4] = false, --MP_CASH + [5] = false, --MP_MESSAGE + [6] = false, --VEHICLE_NAME + [7] = false, -- AREA_NAME + [8] = false, -- VEHICLE_CLASS + [9] = false, --STREET_NAME + [10] = false, --HELP_TEXT + [11] = false, --FLOATING_HELP_TEXT_1 + [12] = false, --FLOATING_HELP_TEXT_2 + [13] = false, --CASH_CHANGE + [14] = false, --RETICLE + [15] = false, --SUBTITLE_TEXT + [16] = false, --RADIO_STATIONS + [17] = false, --SAVING_GAME, + [18] = false, --GAME_STREAM + [19] = false, --WEAPON_WHEEL + [20] = false, --WEAPON_WHEEL_STATS + [21] = false, --HUD_COMPONENTS + [22] = false, --HUD_WEAPONS +} + +Config.SpawnVehMaxUpgrades = true -- admin vehicles spawn with max vehcle settings +Config.CustomAIPlates = '........' -- Custom plates for AI vehicles -- Pattern string format --1 will lead to a random number from 0-9. --A will lead to a random letter from A-Z. diff --git a/[core]/es_extended/config.weapons.lua b/[core]/es_extended/config.weapons.lua index 8b89e3da..83bdd8d7 100644 --- a/[core]/es_extended/config.weapons.lua +++ b/[core]/es_extended/config.weapons.lua @@ -11,970 +11,999 @@ Config.DefaultWeaponTints = { Config.Weapons = { -- Melee - {name = 'WEAPON_DAGGER', label = TranslateCap('weapon_dagger'), components = {}}, - {name = 'WEAPON_BAT', label = TranslateCap('weapon_bat'), components = {}}, - {name = 'WEAPON_BATTLEAXE', label = TranslateCap('weapon_battleaxe'), components = {}}, + { name = 'WEAPON_DAGGER', label = TranslateCap('weapon_dagger'), components = {} }, + { name = 'WEAPON_BAT', label = TranslateCap('weapon_bat'), components = {} }, + { name = 'WEAPON_BATTLEAXE', label = TranslateCap('weapon_battleaxe'), components = {} }, { name = 'WEAPON_KNUCKLE', label = TranslateCap('weapon_knuckle'), components = { - {name = 'knuckle_base', label = TranslateCap('component_knuckle_base'), hash = `COMPONENT_KNUCKLE_VARMOD_BASE`}, - {name = 'knuckle_pimp', label = TranslateCap('component_knuckle_pimp'), hash = `COMPONENT_KNUCKLE_VARMOD_PIMP`}, - {name = 'knuckle_ballas', label = TranslateCap('component_knuckle_ballas'), hash = `COMPONENT_KNUCKLE_VARMOD_BALLAS`}, - {name = 'knuckle_dollar', label = TranslateCap('component_knuckle_dollar'), hash = `COMPONENT_KNUCKLE_VARMOD_DOLLAR`}, - {name = 'knuckle_diamond', label = TranslateCap('component_knuckle_diamond'), hash = `COMPONENT_KNUCKLE_VARMOD_DIAMOND`}, - {name = 'knuckle_hate', label = TranslateCap('component_knuckle_hate'), hash = `COMPONENT_KNUCKLE_VARMOD_HATE`}, - {name = 'knuckle_love', label = TranslateCap('component_knuckle_love'), hash = `COMPONENT_KNUCKLE_VARMOD_LOVE`}, - {name = 'knuckle_player', label = TranslateCap('component_knuckle_player'), hash = `COMPONENT_KNUCKLE_VARMOD_PLAYER`}, - {name = 'knuckle_king', label = TranslateCap('component_knuckle_king'), hash = `COMPONENT_KNUCKLE_VARMOD_KING`}, - {name = 'knuckle_vagos', label = TranslateCap('component_knuckle_vagos'), hash = `COMPONENT_KNUCKLE_VARMOD_VAGOS`} + { name = 'knuckle_base', label = TranslateCap('component_knuckle_base'), hash = `COMPONENT_KNUCKLE_VARMOD_BASE` }, + { name = 'knuckle_pimp', label = TranslateCap('component_knuckle_pimp'), hash = `COMPONENT_KNUCKLE_VARMOD_PIMP` }, + { name = 'knuckle_ballas', label = TranslateCap('component_knuckle_ballas'), hash = `COMPONENT_KNUCKLE_VARMOD_BALLAS` }, + { name = 'knuckle_dollar', label = TranslateCap('component_knuckle_dollar'), hash = `COMPONENT_KNUCKLE_VARMOD_DOLLAR` }, + { name = 'knuckle_diamond', label = TranslateCap('component_knuckle_diamond'), hash = `COMPONENT_KNUCKLE_VARMOD_DIAMOND` }, + { name = 'knuckle_hate', label = TranslateCap('component_knuckle_hate'), hash = `COMPONENT_KNUCKLE_VARMOD_HATE` }, + { name = 'knuckle_love', label = TranslateCap('component_knuckle_love'), hash = `COMPONENT_KNUCKLE_VARMOD_LOVE` }, + { name = 'knuckle_player', label = TranslateCap('component_knuckle_player'), hash = `COMPONENT_KNUCKLE_VARMOD_PLAYER` }, + { name = 'knuckle_king', label = TranslateCap('component_knuckle_king'), hash = `COMPONENT_KNUCKLE_VARMOD_KING` }, + { name = 'knuckle_vagos', label = TranslateCap('component_knuckle_vagos'), hash = `COMPONENT_KNUCKLE_VARMOD_VAGOS` } } }, - {name = 'WEAPON_BOTTLE', label = TranslateCap('weapon_bottle'), components = {}}, - {name = 'WEAPON_CROWBAR', label = TranslateCap('weapon_crowbar'), components = {}}, - {name = 'WEAPON_FLASHLIGHT', label = TranslateCap('weapon_flashlight'), components = {}}, - {name = 'WEAPON_GOLFCLUB', label = TranslateCap('weapon_golfclub'), components = {}}, - {name = 'WEAPON_HAMMER', label = TranslateCap('weapon_hammer'), components = {}}, - {name = 'WEAPON_HATCHET', label = TranslateCap('weapon_hatchet'), components = {}}, - {name = 'WEAPON_KNIFE', label = TranslateCap('weapon_knife'), components = {}}, - {name = 'WEAPON_MACHETE', label = TranslateCap('weapon_machete'), components = {}}, - {name = 'WEAPON_NIGHTSTICK', label = TranslateCap('weapon_nightstick'), components = {}}, - {name = 'WEAPON_WRENCH', label = TranslateCap('weapon_wrench'), components = {}}, - {name = 'WEAPON_POOLCUE', label = TranslateCap('weapon_poolcue'), components = {}}, - {name = 'WEAPON_STONE_HATCHET', label = TranslateCap('weapon_stone_hatchet'), components = {}}, + { name = 'WEAPON_BOTTLE', label = TranslateCap('weapon_bottle'), components = {} }, + { name = 'WEAPON_CROWBAR', label = TranslateCap('weapon_crowbar'), components = {} }, + { name = 'WEAPON_FLASHLIGHT', label = TranslateCap('weapon_flashlight'), components = {} }, + { name = 'WEAPON_GOLFCLUB', label = TranslateCap('weapon_golfclub'), components = {} }, + { name = 'WEAPON_HAMMER', label = TranslateCap('weapon_hammer'), components = {} }, + { name = 'WEAPON_HATCHET', label = TranslateCap('weapon_hatchet'), components = {} }, + { name = 'WEAPON_KNIFE', label = TranslateCap('weapon_knife'), components = {} }, + { name = 'WEAPON_MACHETE', label = TranslateCap('weapon_machete'), components = {} }, + { name = 'WEAPON_NIGHTSTICK', label = TranslateCap('weapon_nightstick'), components = {} }, + { name = 'WEAPON_WRENCH', label = TranslateCap('weapon_wrench'), components = {} }, + { name = 'WEAPON_POOLCUE', label = TranslateCap('weapon_poolcue'), components = {} }, + { name = 'WEAPON_STONE_HATCHET', label = TranslateCap('weapon_stone_hatchet'), components = {} }, { name = 'WEAPON_SWITCHBLADE', label = TranslateCap('weapon_switchblade'), components = { - {name = 'handle_default', label = TranslateCap('component_handle_default'), hash = `COMPONENT_SWITCHBLADE_VARMOD_BASE`}, - {name = 'handle_vip', label = TranslateCap('component_handle_vip'), hash = `COMPONENT_SWITCHBLADE_VARMOD_VAR1`}, - {name = 'handle_bodyguard', label = TranslateCap('component_handle_bodyguard'), hash = `COMPONENT_SWITCHBLADE_VARMOD_VAR2`} + { name = 'handle_default', label = TranslateCap('component_handle_default'), hash = `COMPONENT_SWITCHBLADE_VARMOD_BASE` }, + { name = 'handle_vip', label = TranslateCap('component_handle_vip'), hash = `COMPONENT_SWITCHBLADE_VARMOD_VAR1` }, + { name = 'handle_bodyguard', label = TranslateCap('component_handle_bodyguard'), hash = `COMPONENT_SWITCHBLADE_VARMOD_VAR2` } } }, -- Handguns { name = 'WEAPON_APPISTOL', label = TranslateCap('weapon_appistol'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_APPISTOL_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_APPISTOL_CLIP_02`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_APPISTOL_VARMOD_LUXE`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_APPISTOL_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_APPISTOL_CLIP_02` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_APPISTOL_VARMOD_LUXE` } } }, - {name = 'WEAPON_CERAMICPISTOL', label = TranslateCap('weapon_ceramicpistol'), tints = Config.DefaultWeaponTints, components = {}, ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL`}}, + { name = 'WEAPON_CERAMICPISTOL', label = TranslateCap('weapon_ceramicpistol'), tints = Config.DefaultWeaponTints, components = {}, ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` } }, { name = 'WEAPON_COMBATPISTOL', label = TranslateCap('weapon_combatpistol'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_COMBATPISTOL_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_COMBATPISTOL_CLIP_02`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_COMBATPISTOL_VARMOD_LOWRIDER`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_COMBATPISTOL_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_COMBATPISTOL_CLIP_02` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_COMBATPISTOL_VARMOD_LOWRIDER` } } }, - {name = 'WEAPON_DOUBLEACTION', label = TranslateCap('weapon_doubleaction'), tints = Config.DefaultWeaponTints, components = {}, ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL`}}, - {name = 'WEAPON_NAVYREVOLVER', label = TranslateCap('weapon_navyrevolver'), tints = Config.DefaultWeaponTints, components = {}, ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL`}}, - {name = 'WEAPON_FLAREGUN', label = TranslateCap('weapon_flaregun'), tints = Config.DefaultWeaponTints, components = {}, ammo = {label = TranslateCap('ammo_flaregun'), hash = `AMMO_FLAREGUN`}}, - {name = 'WEAPON_GADGETPISTOL', label = TranslateCap('weapon_gadgetpistol'), tints = Config.DefaultWeaponTints, components = {}, ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL`}}, + { name = 'WEAPON_DOUBLEACTION', label = TranslateCap('weapon_doubleaction'), tints = Config.DefaultWeaponTints, components = {}, ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` } }, + { name = 'WEAPON_NAVYREVOLVER', label = TranslateCap('weapon_navyrevolver'), tints = Config.DefaultWeaponTints, components = {}, ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` } }, + { name = 'WEAPON_FLAREGUN', label = TranslateCap('weapon_flaregun'), tints = Config.DefaultWeaponTints, components = {}, ammo = { label = TranslateCap('ammo_flaregun'), hash = `AMMO_FLAREGUN` } }, + { name = 'WEAPON_GADGETPISTOL', label = TranslateCap('weapon_gadgetpistol'), tints = Config.DefaultWeaponTints, components = {}, ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` } }, { name = 'WEAPON_HEAVYPISTOL', label = TranslateCap('weapon_heavypistol'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_HEAVYPISTOL_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_HEAVYPISTOL_CLIP_02`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_HEAVYPISTOL_VARMOD_LUXE`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_HEAVYPISTOL_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_HEAVYPISTOL_CLIP_02` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_HEAVYPISTOL_VARMOD_LUXE` } } }, { name = 'WEAPON_REVOLVER', label = TranslateCap('weapon_revolver'), - ammo = {label = TranslateCap('ammo_rounds'),hash = `AMMO_PISTOL`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_REVOLVER_CLIP_01`}, - {name = 'vip_finish', label = TranslateCap('component_vip_finish'), hash = `COMPONENT_REVOLVER_VARMOD_BOSS`}, - {name = 'bodyguard_finish', label = TranslateCap('component_bodyguard_finish'), hash = `COMPONENT_REVOLVER_VARMOD_GOON`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_REVOLVER_CLIP_01` }, + { name = 'vip_finish', label = TranslateCap('component_vip_finish'), hash = `COMPONENT_REVOLVER_VARMOD_BOSS` }, + { name = 'bodyguard_finish', label = TranslateCap('component_bodyguard_finish'), hash = `COMPONENT_REVOLVER_VARMOD_GOON` } } }, { name = 'WEAPON_REVOLVER_MK2', label = TranslateCap('weapon_revolver_mk2'), - ammo = {label = TranslateCap('ammo_rounds'),hash = `AMMO_PISTOL`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_REVOLVER_MK2_CLIP_01`}, - {name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_REVOLVER_MK2_CLIP_TRACER`}, - {name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_REVOLVER_MK2_CLIP_INCENDIARY`}, - {name = 'ammo_hollowpoint', label = TranslateCap('component_ammo_hollowpoint'), hash = `COMPONENT_REVOLVER_MK2_CLIP_HOLLOWPOINT`}, - {name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_REVOLVER_MK2_CLIP_FMJ`}, - {name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS`}, - {name = 'scope_small', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_AT_SCOPE_MACRO_MK2`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH`}, - {name = 'compensator', label = TranslateCap('component_compensator'), hash = `COMPONENT_AT_PI_COMP_03`}, - {name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_REVOLVER_MK2_CAMO`}, - {name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_REVOLVER_MK2_CAMO_02`}, - {name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_REVOLVER_MK2_CAMO_03`}, - {name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_REVOLVER_MK2_CAMO_04`}, - {name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_REVOLVER_MK2_CAMO_05`}, - {name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_REVOLVER_MK2_CAMO_06`}, - {name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_REVOLVER_MK2_CAMO_07`}, - {name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_REVOLVER_MK2_CAMO_08`}, - {name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_REVOLVER_MK2_CAMO_09`}, - {name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_REVOLVER_MK2_CAMO_10`}, - {name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_REVOLVER_MK2_CAMO_IND_01`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_REVOLVER_MK2_CLIP_01` }, + { name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_REVOLVER_MK2_CLIP_TRACER` }, + { name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_REVOLVER_MK2_CLIP_INCENDIARY` }, + { name = 'ammo_hollowpoint', label = TranslateCap('component_ammo_hollowpoint'), hash = `COMPONENT_REVOLVER_MK2_CLIP_HOLLOWPOINT` }, + { name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_REVOLVER_MK2_CLIP_FMJ` }, + { name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS` }, + { name = 'scope_small', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_AT_SCOPE_MACRO_MK2` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH` }, + { name = 'compensator', label = TranslateCap('component_compensator'), hash = `COMPONENT_AT_PI_COMP_03` }, + { name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_REVOLVER_MK2_CAMO` }, + { name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_REVOLVER_MK2_CAMO_02` }, + { name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_REVOLVER_MK2_CAMO_03` }, + { name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_REVOLVER_MK2_CAMO_04` }, + { name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_REVOLVER_MK2_CAMO_05` }, + { name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_REVOLVER_MK2_CAMO_06` }, + { name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_REVOLVER_MK2_CAMO_07` }, + { name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_REVOLVER_MK2_CAMO_08` }, + { name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_REVOLVER_MK2_CAMO_09` }, + { name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_REVOLVER_MK2_CAMO_10` }, + { name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_REVOLVER_MK2_CAMO_IND_01` } } }, - {name = 'WEAPON_MARKSMANPISTOL', label = TranslateCap('weapon_marksmanpistol'), tints = Config.DefaultWeaponTints, components = {}, ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL`}}, + { name = 'WEAPON_MARKSMANPISTOL', label = TranslateCap('weapon_marksmanpistol'), tints = Config.DefaultWeaponTints, components = {}, ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` } }, { name = 'WEAPON_PISTOL', label = TranslateCap('weapon_pistol'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_PISTOL_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_PISTOL_CLIP_02`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP_02`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_PISTOL_VARMOD_LUXE`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_PISTOL_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_PISTOL_CLIP_02` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP_02` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_PISTOL_VARMOD_LUXE` } } }, { name = 'WEAPON_PISTOL_MK2', label = TranslateCap('weapon_pistol_mk2'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_PISTOL_MK2_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_PISTOL_MK2_CLIP_02`}, - {name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_PISTOL_MK2_CLIP_TRACER`}, - {name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_PISTOL_MK2_CLIP_INCENDIARY`}, - {name = 'ammo_hollowpoint', label = TranslateCap('component_ammo_hollowpoint'), hash = `COMPONENT_PISTOL_MK2_CLIP_HOLLOWPOINT`}, - {name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_PISTOL_MK2_CLIP_FMJ`}, - {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_PI_RAIL`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH_02`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP_02`}, - {name = 'compensator', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_COMP`}, - {name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_PISTOL_MK2_CAMO`}, - {name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_PISTOL_MK2_CAMO_02`}, - {name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_PISTOL_MK2_CAMO_03`}, - {name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_PISTOL_MK2_CAMO_04`}, - {name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_PISTOL_MK2_CAMO_05`}, - {name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_PISTOL_MK2_CAMO_06`}, - {name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_PISTOL_MK2_CAMO_07`}, - {name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_PISTOL_MK2_CAMO_08`}, - {name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_PISTOL_MK2_CAMO_09`}, - {name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_PISTOL_MK2_CAMO_10`}, - {name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_PISTOL_MK2_CAMO_IND_01`}, - {name = 'camo_slide_finish', label = TranslateCap('component_camo_slide_finish'), hash = `COMPONENT_PISTOL_MK2_CAMO_SLIDE`}, - {name = 'camo_slide_finish2', label = TranslateCap('component_camo_slide_finish2'), hash = `COMPONENT_PISTOL_MK2_CAMO_02_SLIDE`}, - {name = 'camo_slide_finish3', label = TranslateCap('component_camo_slide_finish3'), hash = `COMPONENT_PISTOL_MK2_CAMO_03_SLIDE`}, - {name = 'camo_slide_finish4', label = TranslateCap('component_camo_slide_finish4'), hash = `COMPONENT_PISTOL_MK2_CAMO_04_SLIDE`}, - {name = 'camo_slide_finish5', label = TranslateCap('component_camo_slide_finish5'), hash = `COMPONENT_PISTOL_MK2_CAMO_05_SLIDE`}, - {name = 'camo_slide_finish6', label = TranslateCap('component_camo_slide_finish6'), hash = `COMPONENT_PISTOL_MK2_CAMO_06_SLIDE`}, - {name = 'camo_slide_finish7', label = TranslateCap('component_camo_slide_finish7'), hash = `COMPONENT_PISTOL_MK2_CAMO_07_SLIDE`}, - {name = 'camo_slide_finish8', label = TranslateCap('component_camo_slide_finish8'), hash = `COMPONENT_PISTOL_MK2_CAMO_08_SLIDE`}, - {name = 'camo_slide_finish9', label = TranslateCap('component_camo_slide_finish9'), hash = `COMPONENT_PISTOL_MK2_CAMO_09_SLIDE`}, - {name = 'camo_slide_finish10', label = TranslateCap('component_camo_slide_finish10'), hash = `COMPONENT_PISTOL_MK2_CAMO_10_SLIDE`}, - {name = 'camo_slide_finish11', label = TranslateCap('component_camo_slide_finish11'), hash = `COMPONENT_PISTOL_MK2_CAMO_IND_01_SLIDE`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_PISTOL_MK2_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_PISTOL_MK2_CLIP_02` }, + { name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_PISTOL_MK2_CLIP_TRACER` }, + { name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_PISTOL_MK2_CLIP_INCENDIARY` }, + { name = 'ammo_hollowpoint', label = TranslateCap('component_ammo_hollowpoint'), hash = `COMPONENT_PISTOL_MK2_CLIP_HOLLOWPOINT` }, + { name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_PISTOL_MK2_CLIP_FMJ` }, + { name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_PI_RAIL` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH_02` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP_02` }, + { name = 'compensator', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_COMP` }, + { name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_PISTOL_MK2_CAMO` }, + { name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_PISTOL_MK2_CAMO_02` }, + { name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_PISTOL_MK2_CAMO_03` }, + { name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_PISTOL_MK2_CAMO_04` }, + { name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_PISTOL_MK2_CAMO_05` }, + { name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_PISTOL_MK2_CAMO_06` }, + { name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_PISTOL_MK2_CAMO_07` }, + { name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_PISTOL_MK2_CAMO_08` }, + { name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_PISTOL_MK2_CAMO_09` }, + { name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_PISTOL_MK2_CAMO_10` }, + { name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_PISTOL_MK2_CAMO_IND_01` }, + { name = 'camo_slide_finish', label = TranslateCap('component_camo_slide_finish'), hash = `COMPONENT_PISTOL_MK2_CAMO_SLIDE` }, + { name = 'camo_slide_finish2', label = TranslateCap('component_camo_slide_finish2'), hash = `COMPONENT_PISTOL_MK2_CAMO_02_SLIDE` }, + { name = 'camo_slide_finish3', label = TranslateCap('component_camo_slide_finish3'), hash = `COMPONENT_PISTOL_MK2_CAMO_03_SLIDE` }, + { name = 'camo_slide_finish4', label = TranslateCap('component_camo_slide_finish4'), hash = `COMPONENT_PISTOL_MK2_CAMO_04_SLIDE` }, + { name = 'camo_slide_finish5', label = TranslateCap('component_camo_slide_finish5'), hash = `COMPONENT_PISTOL_MK2_CAMO_05_SLIDE` }, + { name = 'camo_slide_finish6', label = TranslateCap('component_camo_slide_finish6'), hash = `COMPONENT_PISTOL_MK2_CAMO_06_SLIDE` }, + { name = 'camo_slide_finish7', label = TranslateCap('component_camo_slide_finish7'), hash = `COMPONENT_PISTOL_MK2_CAMO_07_SLIDE` }, + { name = 'camo_slide_finish8', label = TranslateCap('component_camo_slide_finish8'), hash = `COMPONENT_PISTOL_MK2_CAMO_08_SLIDE` }, + { name = 'camo_slide_finish9', label = TranslateCap('component_camo_slide_finish9'), hash = `COMPONENT_PISTOL_MK2_CAMO_09_SLIDE` }, + { name = 'camo_slide_finish10', label = TranslateCap('component_camo_slide_finish10'), hash = `COMPONENT_PISTOL_MK2_CAMO_10_SLIDE` }, + { name = 'camo_slide_finish11', label = TranslateCap('component_camo_slide_finish11'), hash = `COMPONENT_PISTOL_MK2_CAMO_IND_01_SLIDE` } } }, { name = 'WEAPON_PISTOL50', label = TranslateCap('weapon_pistol50'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_PISTOL50_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_PISTOL50_CLIP_02`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_PISTOL50_VARMOD_LUXE`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_PISTOL50_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_PISTOL50_CLIP_02` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_PISTOL50_VARMOD_LUXE` } } }, { name = 'WEAPON_SNSPISTOL', label = TranslateCap('weapon_snspistol'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_SNSPISTOL_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_SNSPISTOL_CLIP_02`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_SNSPISTOL_VARMOD_LOWRIDER`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_SNSPISTOL_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_SNSPISTOL_CLIP_02` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_SNSPISTOL_VARMOD_LOWRIDER` } } }, { name = 'WEAPON_SNSPISTOL_MK2', label = TranslateCap('weapon_snspistol_mk2'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_SNSPISTOL_MK2_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_SNSPISTOL_MK2_CLIP_02`}, - {name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_SNSPISTOL_MK2_CLIP_TRACER`}, - {name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_SNSPISTOL_MK2_CLIP_INCENDIARY`}, - {name = 'ammo_hollowpoint', label = TranslateCap('component_ammo_hollowpoint'), hash = `COMPONENT_SNSPISTOL_MK2_CLIP_HOLLOWPOINT`}, - {name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_SNSPISTOL_MK2_CLIP_FMJ`}, - {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_PI_RAIL_02`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH_03`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP_02`}, - {name = 'compensator', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_COMP_02`}, - {name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO`}, - {name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_02`}, - {name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_03`}, - {name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_04`}, - {name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_05`}, - {name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_06`}, - {name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_07`}, - {name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_08`}, - {name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_09`}, - {name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_10`}, - {name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_IND_01`}, - {name = 'camo_slide_finish', label = TranslateCap('component_camo_slide_finish'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_SLIDE`}, - {name = 'camo_slide_finish2', label = TranslateCap('component_camo_slide_finish2'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_02_SLIDE`}, - {name = 'camo_slide_finish3', label = TranslateCap('component_camo_slide_finish3'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_03_SLIDE`}, - {name = 'camo_slide_finish4', label = TranslateCap('component_camo_slide_finish4'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_04_SLIDE`}, - {name = 'camo_slide_finish5', label = TranslateCap('component_camo_slide_finish5'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_05_SLIDE`}, - {name = 'camo_slide_finish6', label = TranslateCap('component_camo_slide_finish6'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_06_SLIDE`}, - {name = 'camo_slide_finish7', label = TranslateCap('component_camo_slide_finish7'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_07_SLIDE`}, - {name = 'camo_slide_finish8', label = TranslateCap('component_camo_slide_finish8'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_08_SLIDE`}, - {name = 'camo_slide_finish9', label = TranslateCap('component_camo_slide_finish9'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_09_SLIDE`}, - {name = 'camo_slide_finish10', label = TranslateCap('component_camo_slide_finish10'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_10_SLIDE`}, - {name = 'camo_slide_finish11', label = TranslateCap('component_camo_slide_finish11'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_IND_01_SLIDE`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_SNSPISTOL_MK2_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_SNSPISTOL_MK2_CLIP_02` }, + { name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_SNSPISTOL_MK2_CLIP_TRACER` }, + { name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_SNSPISTOL_MK2_CLIP_INCENDIARY` }, + { name = 'ammo_hollowpoint', label = TranslateCap('component_ammo_hollowpoint'), hash = `COMPONENT_SNSPISTOL_MK2_CLIP_HOLLOWPOINT` }, + { name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_SNSPISTOL_MK2_CLIP_FMJ` }, + { name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_PI_RAIL_02` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH_03` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP_02` }, + { name = 'compensator', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_COMP_02` }, + { name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO` }, + { name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_02` }, + { name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_03` }, + { name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_04` }, + { name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_05` }, + { name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_06` }, + { name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_07` }, + { name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_08` }, + { name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_09` }, + { name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_10` }, + { name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_IND_01` }, + { name = 'camo_slide_finish', label = TranslateCap('component_camo_slide_finish'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_SLIDE` }, + { name = 'camo_slide_finish2', label = TranslateCap('component_camo_slide_finish2'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_02_SLIDE` }, + { name = 'camo_slide_finish3', label = TranslateCap('component_camo_slide_finish3'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_03_SLIDE` }, + { name = 'camo_slide_finish4', label = TranslateCap('component_camo_slide_finish4'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_04_SLIDE` }, + { name = 'camo_slide_finish5', label = TranslateCap('component_camo_slide_finish5'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_05_SLIDE` }, + { name = 'camo_slide_finish6', label = TranslateCap('component_camo_slide_finish6'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_06_SLIDE` }, + { name = 'camo_slide_finish7', label = TranslateCap('component_camo_slide_finish7'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_07_SLIDE` }, + { name = 'camo_slide_finish8', label = TranslateCap('component_camo_slide_finish8'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_08_SLIDE` }, + { name = 'camo_slide_finish9', label = TranslateCap('component_camo_slide_finish9'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_09_SLIDE` }, + { name = 'camo_slide_finish10', label = TranslateCap('component_camo_slide_finish10'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_10_SLIDE` }, + { name = 'camo_slide_finish11', label = TranslateCap('component_camo_slide_finish11'), hash = `COMPONENT_SNSPISTOL_MK2_CAMO_IND_01_SLIDE` } } }, - {name = 'WEAPON_STUNGUN', label = TranslateCap('weapon_stungun'), tints = Config.DefaultWeaponTints, components = {}}, - {name = 'WEAPON_RAYPISTOL', label = TranslateCap('weapon_raypistol'), tints = Config.DefaultWeaponTints, components = {}}, + { name = 'WEAPON_STUNGUN', label = TranslateCap('weapon_stungun'), tints = Config.DefaultWeaponTints, components = {} }, + { name = 'WEAPON_RAYPISTOL', label = TranslateCap('weapon_raypistol'), tints = Config.DefaultWeaponTints, components = {} }, { name = 'WEAPON_VINTAGEPISTOL', label = TranslateCap('weapon_vintagepistol'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_VINTAGEPISTOL_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_VINTAGEPISTOL_CLIP_02`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_VINTAGEPISTOL_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_VINTAGEPISTOL_CLIP_02` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP` } } }, -- Shotguns { name = 'WEAPON_ASSAULTSHOTGUN', label = TranslateCap('weapon_assaultshotgun'), - ammo = {label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN`}, + ammo = { label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_ASSAULTSHOTGUN_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_ASSAULTSHOTGUN_CLIP_02`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP`}, - {name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_ASSAULTSHOTGUN_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_ASSAULTSHOTGUN_CLIP_02` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP` }, + { name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP` } } }, - {name = 'WEAPON_AUTOSHOTGUN', label = TranslateCap('weapon_autoshotgun'), tints = Config.DefaultWeaponTints, components = {}, ammo = {label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN`}}, + { name = 'WEAPON_AUTOSHOTGUN', label = TranslateCap('weapon_autoshotgun'), tints = Config.DefaultWeaponTints, components = {}, ammo = { label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN` } }, { name = 'WEAPON_BULLPUPSHOTGUN', label = TranslateCap('weapon_bullpupshotgun'), - ammo = {label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN`}, + ammo = { label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN` }, tints = Config.DefaultWeaponTints, components = { - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02`}, - {name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP`} + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02` }, + { name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP` } } }, { name = 'WEAPON_COMBATSHOTGUN', label = TranslateCap('weapon_combatshotgun'), - ammo = {label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN`}, + ammo = { label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN` }, tints = Config.DefaultWeaponTints, components = { - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP`} + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP` } } }, - {name = 'WEAPON_DBSHOTGUN', label = TranslateCap('weapon_dbshotgun'), tints = Config.DefaultWeaponTints, components = {}, ammo = {label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN`}}, + { name = 'WEAPON_DBSHOTGUN', label = TranslateCap('weapon_dbshotgun'), tints = Config.DefaultWeaponTints, components = {}, ammo = { label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN` } }, { name = 'WEAPON_HEAVYSHOTGUN', label = TranslateCap('weapon_heavyshotgun'), - ammo = {label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN`}, + ammo = { label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_HEAVYSHOTGUN_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_HEAVYSHOTGUN_CLIP_02`}, - {name = 'clip_drum', label = TranslateCap('component_clip_drum'), hash = `COMPONENT_HEAVYSHOTGUN_CLIP_03`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02`}, - {name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_HEAVYSHOTGUN_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_HEAVYSHOTGUN_CLIP_02` }, + { name = 'clip_drum', label = TranslateCap('component_clip_drum'), hash = `COMPONENT_HEAVYSHOTGUN_CLIP_03` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02` }, + { name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP` } } }, - {name = 'WEAPON_MUSKET', label = TranslateCap('weapon_musket'), tints = Config.DefaultWeaponTints, components = {}, ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_SHOTGUN`}}, + { name = 'WEAPON_MUSKET', label = TranslateCap('weapon_musket'), tints = Config.DefaultWeaponTints, components = {}, ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_SHOTGUN` } }, { name = 'WEAPON_PUMPSHOTGUN', label = TranslateCap('weapon_pumpshotgun'), - ammo = {label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN`}, + ammo = { label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN` }, tints = Config.DefaultWeaponTints, components = { - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_SR_SUPP`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_PUMPSHOTGUN_VARMOD_LOWRIDER`} + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_SR_SUPP` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_PUMPSHOTGUN_VARMOD_LOWRIDER` } } }, { name = 'WEAPON_PUMPSHOTGUN_MK2', label = TranslateCap('weapon_pumpshotgun_mk2'), - ammo = {label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN`}, + ammo = { label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN` }, tints = Config.DefaultWeaponTints, components = { - {name = 'shells_default', label = TranslateCap('component_shells_default'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CLIP_01`}, - {name = 'shells_incendiary', label = TranslateCap('component_shells_incendiary'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CLIP_INCENDIARY`}, - {name = 'shells_armor', label = TranslateCap('component_shells_armor'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CLIP_ARMORPIERCING`}, - {name = 'shells_hollowpoint', label = TranslateCap('component_shells_hollowpoint'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CLIP_HOLLOWPOINT`}, - {name = 'shells_explosive', label = TranslateCap('component_shells_explosive'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CLIP_EXPLOSIVE`}, - {name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS`}, - {name = 'scope_small', label = TranslateCap('component_scope_small'), hash = `COMPONENT_AT_SCOPE_MACRO_MK2`}, - {name = 'scope_medium', label = TranslateCap('component_scope_medium'), hash = `COMPONENT_AT_SCOPE_SMALL_MK2`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_SR_SUPP_03`}, - {name = 'muzzle_squared', label = TranslateCap('component_muzzle_squared'), hash = `COMPONENT_AT_MUZZLE_08`}, - {name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO`}, - {name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_02`}, - {name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_03`}, - {name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_04`}, - {name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_05`}, - {name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_06`}, - {name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_07`}, - {name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_08`}, - {name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_09`}, - {name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_10`}, - {name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_IND_01`} + { name = 'shells_default', label = TranslateCap('component_shells_default'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CLIP_01` }, + { name = 'shells_incendiary', label = TranslateCap('component_shells_incendiary'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CLIP_INCENDIARY` }, + { name = 'shells_armor', label = TranslateCap('component_shells_armor'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CLIP_ARMORPIERCING` }, + { name = 'shells_hollowpoint', label = TranslateCap('component_shells_hollowpoint'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CLIP_HOLLOWPOINT` }, + { name = 'shells_explosive', label = TranslateCap('component_shells_explosive'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CLIP_EXPLOSIVE` }, + { name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS` }, + { name = 'scope_small', label = TranslateCap('component_scope_small'), hash = `COMPONENT_AT_SCOPE_MACRO_MK2` }, + { name = 'scope_medium', label = TranslateCap('component_scope_medium'), hash = `COMPONENT_AT_SCOPE_SMALL_MK2` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_SR_SUPP_03` }, + { name = 'muzzle_squared', label = TranslateCap('component_muzzle_squared'), hash = `COMPONENT_AT_MUZZLE_08` }, + { name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO` }, + { name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_02` }, + { name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_03` }, + { name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_04` }, + { name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_05` }, + { name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_06` }, + { name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_07` }, + { name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_08` }, + { name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_09` }, + { name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_10` }, + { name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_PUMPSHOTGUN_MK2_CAMO_IND_01` } } }, { name = 'WEAPON_SAWNOFFSHOTGUN', label = TranslateCap('weapon_sawnoffshotgun'), - ammo = {label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN`}, + ammo = { label = TranslateCap('ammo_shells'), hash = `AMMO_SHOTGUN` }, tints = Config.DefaultWeaponTints, components = { - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_SAWNOFFSHOTGUN_VARMOD_LUXE`} + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_SAWNOFFSHOTGUN_VARMOD_LUXE` } } }, -- SMG & LMG { name = 'WEAPON_ASSAULTSMG', label = TranslateCap('weapon_assaultsmg'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_SMG`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_SMG` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_ASSAULTSMG_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_ASSAULTSMG_CLIP_02`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_MACRO`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_ASSAULTSMG_VARMOD_LOWRIDER`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_ASSAULTSMG_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_ASSAULTSMG_CLIP_02` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_MACRO` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_ASSAULTSMG_VARMOD_LOWRIDER` } } }, { name = 'WEAPON_COMBATMG', label = TranslateCap('weapon_combatmg'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_MG`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_MG` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_COMBATMG_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_COMBATMG_CLIP_02`}, - {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_MEDIUM`}, - {name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_COMBATMG_VARMOD_LOWRIDER`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_COMBATMG_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_COMBATMG_CLIP_02` }, + { name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_MEDIUM` }, + { name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_COMBATMG_VARMOD_LOWRIDER` } } }, { name = 'WEAPON_COMBATMG_MK2', label = TranslateCap('weapon_combatmg_mk2'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_MG`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_MG` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_COMBATMG_MK2_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_COMBATMG_MK2_CLIP_02`}, - {name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_COMBATMG_MK2_CLIP_TRACER`}, - {name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_COMBATMG_MK2_CLIP_INCENDIARY`}, - {name = 'ammo_hollowpoint', label = TranslateCap('component_ammo_hollowpoint'), hash = `COMPONENT_COMBATMG_MK2_CLIP_ARMORPIERCING`}, - {name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_COMBATMG_MK2_CLIP_FMJ`}, - {name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP_02`}, - {name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS`}, - {name = 'scope_medium', label = TranslateCap('component_scope_medium'), hash = `COMPONENT_AT_SCOPE_SMALL_MK2`}, - {name = 'scope_large', label = TranslateCap('component_scope_large'), hash = `COMPONENT_AT_SCOPE_MEDIUM_MK2`}, - {name = 'muzzle_flat', label = TranslateCap('component_muzzle_flat'), hash = `COMPONENT_AT_MUZZLE_01`}, - {name = 'muzzle_tactical', label = TranslateCap('component_muzzle_tactical'), hash = `COMPONENT_AT_MUZZLE_02`}, - {name = 'muzzle_fat', label = TranslateCap('component_muzzle_fat'), hash = `COMPONENT_AT_MUZZLE_03`}, - {name = 'muzzle_precision', label = TranslateCap('component_muzzle_precision'), hash = `COMPONENT_AT_MUZZLE_04`}, - {name = 'muzzle_heavy', label = TranslateCap('component_muzzle_heavy'), hash = `COMPONENT_AT_MUZZLE_05`}, - {name = 'muzzle_slanted', label = TranslateCap('component_muzzle_slanted'), hash = `COMPONENT_AT_MUZZLE_06`}, - {name = 'muzzle_split', label = TranslateCap('component_muzzle_split'), hash = `COMPONENT_AT_MUZZLE_07`}, - {name = 'barrel_default', label = TranslateCap('component_barrel_default'), hash = `COMPONENT_AT_MG_BARREL_01`}, - {name = 'barrel_heavy', label = TranslateCap('component_barrel_heavy'), hash = `COMPONENT_AT_MG_BARREL_02`}, - {name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_COMBATMG_MK2_CAMO`}, - {name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_COMBATMG_MK2_CAMO_02`}, - {name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_COMBATMG_MK2_CAMO_03`}, - {name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_COMBATMG_MK2_CAMO_04`}, - {name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_COMBATMG_MK2_CAMO_05`}, - {name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_COMBATMG_MK2_CAMO_06`}, - {name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_COMBATMG_MK2_CAMO_07`}, - {name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_COMBATMG_MK2_CAMO_08`}, - {name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_COMBATMG_MK2_CAMO_09`}, - {name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_COMBATMG_MK2_CAMO_10`}, - {name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_COMBATMG_MK2_CAMO_IND_01`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_COMBATMG_MK2_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_COMBATMG_MK2_CLIP_02` }, + { name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_COMBATMG_MK2_CLIP_TRACER` }, + { name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_COMBATMG_MK2_CLIP_INCENDIARY` }, + { name = 'ammo_hollowpoint', label = TranslateCap('component_ammo_hollowpoint'), hash = `COMPONENT_COMBATMG_MK2_CLIP_ARMORPIERCING` }, + { name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_COMBATMG_MK2_CLIP_FMJ` }, + { name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP_02` }, + { name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS` }, + { name = 'scope_medium', label = TranslateCap('component_scope_medium'), hash = `COMPONENT_AT_SCOPE_SMALL_MK2` }, + { name = 'scope_large', label = TranslateCap('component_scope_large'), hash = `COMPONENT_AT_SCOPE_MEDIUM_MK2` }, + { name = 'muzzle_flat', label = TranslateCap('component_muzzle_flat'), hash = `COMPONENT_AT_MUZZLE_01` }, + { name = 'muzzle_tactical', label = TranslateCap('component_muzzle_tactical'), hash = `COMPONENT_AT_MUZZLE_02` }, + { name = 'muzzle_fat', label = TranslateCap('component_muzzle_fat'), hash = `COMPONENT_AT_MUZZLE_03` }, + { name = 'muzzle_precision', label = TranslateCap('component_muzzle_precision'), hash = `COMPONENT_AT_MUZZLE_04` }, + { name = 'muzzle_heavy', label = TranslateCap('component_muzzle_heavy'), hash = `COMPONENT_AT_MUZZLE_05` }, + { name = 'muzzle_slanted', label = TranslateCap('component_muzzle_slanted'), hash = `COMPONENT_AT_MUZZLE_06` }, + { name = 'muzzle_split', label = TranslateCap('component_muzzle_split'), hash = `COMPONENT_AT_MUZZLE_07` }, + { name = 'barrel_default', label = TranslateCap('component_barrel_default'), hash = `COMPONENT_AT_MG_BARREL_01` }, + { name = 'barrel_heavy', label = TranslateCap('component_barrel_heavy'), hash = `COMPONENT_AT_MG_BARREL_02` }, + { name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_COMBATMG_MK2_CAMO` }, + { name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_COMBATMG_MK2_CAMO_02` }, + { name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_COMBATMG_MK2_CAMO_03` }, + { name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_COMBATMG_MK2_CAMO_04` }, + { name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_COMBATMG_MK2_CAMO_05` }, + { name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_COMBATMG_MK2_CAMO_06` }, + { name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_COMBATMG_MK2_CAMO_07` }, + { name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_COMBATMG_MK2_CAMO_08` }, + { name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_COMBATMG_MK2_CAMO_09` }, + { name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_COMBATMG_MK2_CAMO_10` }, + { name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_COMBATMG_MK2_CAMO_IND_01` } } }, { name = 'WEAPON_COMBATPDW', label = TranslateCap('weapon_combatpdw'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_SMG`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_SMG` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_COMBATPDW_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_COMBATPDW_CLIP_02`}, - {name = 'clip_drum', label = TranslateCap('component_clip_drum'), hash = `COMPONENT_COMBATPDW_CLIP_03`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP`}, - {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_SMALL`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_COMBATPDW_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_COMBATPDW_CLIP_02` }, + { name = 'clip_drum', label = TranslateCap('component_clip_drum'), hash = `COMPONENT_COMBATPDW_CLIP_03` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP` }, + { name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_SMALL` } } }, { name = 'WEAPON_GUSENBERG', label = TranslateCap('weapon_gusenberg'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_MG`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_MG` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_GUSENBERG_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_GUSENBERG_CLIP_02`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_GUSENBERG_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_GUSENBERG_CLIP_02` } } }, { name = 'WEAPON_MACHINEPISTOL', label = TranslateCap('weapon_machinepistol'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_MACHINEPISTOL_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_MACHINEPISTOL_CLIP_02`}, - {name = 'clip_drum', label = TranslateCap('component_clip_drum'), hash = `COMPONENT_MACHINEPISTOL_CLIP_03`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_MACHINEPISTOL_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_MACHINEPISTOL_CLIP_02` }, + { name = 'clip_drum', label = TranslateCap('component_clip_drum'), hash = `COMPONENT_MACHINEPISTOL_CLIP_03` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP` } } }, { name = 'WEAPON_MG', label = TranslateCap('weapon_mg'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_MG`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_MG` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_MG_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_MG_CLIP_02`}, - {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_SMALL_02`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_MG_VARMOD_LOWRIDER`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_MG_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_MG_CLIP_02` }, + { name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_SMALL_02` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_MG_VARMOD_LOWRIDER` } } }, { name = 'WEAPON_MICROSMG', label = TranslateCap('weapon_microsmg'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_SMG`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_SMG` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_MICROSMG_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_MICROSMG_CLIP_02`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH`}, - {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_MACRO`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_MICROSMG_VARMOD_LUXE`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_MICROSMG_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_MICROSMG_CLIP_02` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_PI_FLSH` }, + { name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_MACRO` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_MICROSMG_VARMOD_LUXE` } } }, { name = 'WEAPON_MINISMG', label = TranslateCap('weapon_minismg'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_SMG`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_SMG` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_MINISMG_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_MINISMG_CLIP_02`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_MINISMG_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_MINISMG_CLIP_02` } } }, { name = 'WEAPON_SMG', label = TranslateCap('weapon_smg'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_SMG`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_SMG` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_SMG_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_SMG_CLIP_02`}, - {name = 'clip_drum', label = TranslateCap('component_clip_drum'), hash = `COMPONENT_SMG_CLIP_03`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_MACRO_02`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_SMG_VARMOD_LUXE`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_SMG_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_SMG_CLIP_02` }, + { name = 'clip_drum', label = TranslateCap('component_clip_drum'), hash = `COMPONENT_SMG_CLIP_03` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_MACRO_02` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_SMG_VARMOD_LUXE` } } }, { name = 'WEAPON_SMG_MK2', label = TranslateCap('weapon_smg_mk2'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_SMG`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_SMG` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_SMG_MK2_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_SMG_MK2_CLIP_02`}, - {name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_SMG_MK2_CLIP_TRACER`}, - {name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_SMG_MK2_CLIP_INCENDIARY`}, - {name = 'ammo_hollowpoint', label = TranslateCap('component_ammo_hollowpoint'), hash = `COMPONENT_SMG_MK2_CLIP_HOLLOWPOINT`}, - {name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_SMG_MK2_CLIP_FMJ`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS_SMG`}, - {name = 'scope_small', label = TranslateCap('component_scope_small'), hash = `COMPONENT_AT_SCOPE_MACRO_02_SMG_MK2`}, - {name = 'scope_medium', label = TranslateCap('component_scope_medium'), hash = `COMPONENT_AT_SCOPE_SMALL_SMG_MK2`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP`}, - {name = 'muzzle_flat', label = TranslateCap('component_muzzle_flat'), hash = `COMPONENT_AT_MUZZLE_01`}, - {name = 'muzzle_tactical', label = TranslateCap('component_muzzle_tactical'), hash = `COMPONENT_AT_MUZZLE_02`}, - {name = 'muzzle_fat', label = TranslateCap('component_muzzle_fat'), hash = `COMPONENT_AT_MUZZLE_03`}, - {name = 'muzzle_precision', label = TranslateCap('component_muzzle_precision'), hash = `COMPONENT_AT_MUZZLE_04`}, - {name = 'muzzle_heavy', label = TranslateCap('component_muzzle_heavy'), hash = `COMPONENT_AT_MUZZLE_05`}, - {name = 'muzzle_slanted', label = TranslateCap('component_muzzle_slanted'), hash = `COMPONENT_AT_MUZZLE_06`}, - {name = 'muzzle_split', label = TranslateCap('component_muzzle_split'), hash = `COMPONENT_AT_MUZZLE_07`}, - {name = 'barrel_default', label = TranslateCap('component_barrel_default'), hash = `COMPONENT_AT_SB_BARREL_01`}, - {name = 'barrel_heavy', label = TranslateCap('component_barrel_heavy'), hash = `COMPONENT_AT_SB_BARREL_02`}, - {name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_SMG_MK2_CAMO`}, - {name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_SMG_MK2_CAMO_02`}, - {name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_SMG_MK2_CAMO_03`}, - {name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_SMG_MK2_CAMO_04`}, - {name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_SMG_MK2_CAMO_05`}, - {name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_SMG_MK2_CAMO_06`}, - {name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_SMG_MK2_CAMO_07`}, - {name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_SMG_MK2_CAMO_08`}, - {name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_SMG_MK2_CAMO_09`}, - {name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_SMG_MK2_CAMO_10`}, - {name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_SMG_MK2_CAMO_IND_01`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_SMG_MK2_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_SMG_MK2_CLIP_02` }, + { name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_SMG_MK2_CLIP_TRACER` }, + { name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_SMG_MK2_CLIP_INCENDIARY` }, + { name = 'ammo_hollowpoint', label = TranslateCap('component_ammo_hollowpoint'), hash = `COMPONENT_SMG_MK2_CLIP_HOLLOWPOINT` }, + { name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_SMG_MK2_CLIP_FMJ` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS_SMG` }, + { name = 'scope_small', label = TranslateCap('component_scope_small'), hash = `COMPONENT_AT_SCOPE_MACRO_02_SMG_MK2` }, + { name = 'scope_medium', label = TranslateCap('component_scope_medium'), hash = `COMPONENT_AT_SCOPE_SMALL_SMG_MK2` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_PI_SUPP` }, + { name = 'muzzle_flat', label = TranslateCap('component_muzzle_flat'), hash = `COMPONENT_AT_MUZZLE_01` }, + { name = 'muzzle_tactical', label = TranslateCap('component_muzzle_tactical'), hash = `COMPONENT_AT_MUZZLE_02` }, + { name = 'muzzle_fat', label = TranslateCap('component_muzzle_fat'), hash = `COMPONENT_AT_MUZZLE_03` }, + { name = 'muzzle_precision', label = TranslateCap('component_muzzle_precision'), hash = `COMPONENT_AT_MUZZLE_04` }, + { name = 'muzzle_heavy', label = TranslateCap('component_muzzle_heavy'), hash = `COMPONENT_AT_MUZZLE_05` }, + { name = 'muzzle_slanted', label = TranslateCap('component_muzzle_slanted'), hash = `COMPONENT_AT_MUZZLE_06` }, + { name = 'muzzle_split', label = TranslateCap('component_muzzle_split'), hash = `COMPONENT_AT_MUZZLE_07` }, + { name = 'barrel_default', label = TranslateCap('component_barrel_default'), hash = `COMPONENT_AT_SB_BARREL_01` }, + { name = 'barrel_heavy', label = TranslateCap('component_barrel_heavy'), hash = `COMPONENT_AT_SB_BARREL_02` }, + { name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_SMG_MK2_CAMO` }, + { name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_SMG_MK2_CAMO_02` }, + { name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_SMG_MK2_CAMO_03` }, + { name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_SMG_MK2_CAMO_04` }, + { name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_SMG_MK2_CAMO_05` }, + { name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_SMG_MK2_CAMO_06` }, + { name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_SMG_MK2_CAMO_07` }, + { name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_SMG_MK2_CAMO_08` }, + { name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_SMG_MK2_CAMO_09` }, + { name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_SMG_MK2_CAMO_10` }, + { name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_SMG_MK2_CAMO_IND_01` } } }, - {name = 'WEAPON_RAYCARBINE', label = TranslateCap('weapon_raycarbine'), ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_SMG`}, tints = Config.DefaultWeaponTints, components = {}}, + { name = 'WEAPON_RAYCARBINE', label = TranslateCap('weapon_raycarbine'), ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_SMG` }, tints = Config.DefaultWeaponTints, components = {} }, -- Rifles { name = 'WEAPON_ADVANCEDRIFLE', label = TranslateCap('weapon_advancedrifle'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_ADVANCEDRIFLE_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_ADVANCEDRIFLE_CLIP_02`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_SMALL`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_ADVANCEDRIFLE_VARMOD_LUXE`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_ADVANCEDRIFLE_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_ADVANCEDRIFLE_CLIP_02` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_SMALL` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_ADVANCEDRIFLE_VARMOD_LUXE` } } }, { name = 'WEAPON_ASSAULTRIFLE', label = TranslateCap('weapon_assaultrifle'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_ASSAULTRIFLE_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_ASSAULTRIFLE_CLIP_02`}, - {name = 'clip_drum', label = TranslateCap('component_clip_drum'), hash = `COMPONENT_ASSAULTRIFLE_CLIP_03`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_MACRO`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02`}, - {name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_ASSAULTRIFLE_VARMOD_LUXE`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_ASSAULTRIFLE_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_ASSAULTRIFLE_CLIP_02` }, + { name = 'clip_drum', label = TranslateCap('component_clip_drum'), hash = `COMPONENT_ASSAULTRIFLE_CLIP_03` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_MACRO` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02` }, + { name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_ASSAULTRIFLE_VARMOD_LUXE` } } }, { name = 'WEAPON_ASSAULTRIFLE_MK2', label = TranslateCap('weapon_assaultrifle_mk2'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CLIP_02`}, - {name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CLIP_TRACER`}, - {name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CLIP_INCENDIARY`}, - {name = 'ammo_armor', label = TranslateCap('component_ammo_armor'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CLIP_ARMORPIERCING`}, - {name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CLIP_FMJ`}, - {name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP_02`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS`}, - {name = 'scope_small', label = TranslateCap('component_scope_small'), hash = `COMPONENT_AT_SCOPE_MACRO_MK2`}, - {name = 'scope_large', label = TranslateCap('component_scope_large'), hash = `COMPONENT_AT_SCOPE_MEDIUM_MK2`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02`}, - {name = 'muzzle_flat', label = TranslateCap('component_muzzle_flat'), hash = `COMPONENT_AT_MUZZLE_01`}, - {name = 'muzzle_tactical', label = TranslateCap('component_muzzle_tactical'), hash = `COMPONENT_AT_MUZZLE_02`}, - {name = 'muzzle_fat', label = TranslateCap('component_muzzle_fat'), hash = `COMPONENT_AT_MUZZLE_03`}, - {name = 'muzzle_precision', label = TranslateCap('component_muzzle_precision'), hash = `COMPONENT_AT_MUZZLE_04`}, - {name = 'muzzle_heavy', label = TranslateCap('component_muzzle_heavy'), hash = `COMPONENT_AT_MUZZLE_05`}, - {name = 'muzzle_slanted', label = TranslateCap('component_muzzle_slanted'), hash = `COMPONENT_AT_MUZZLE_06`}, - {name = 'muzzle_split', label = TranslateCap('component_muzzle_split'), hash = `COMPONENT_AT_MUZZLE_07`}, - {name = 'barrel_default', label = TranslateCap('component_barrel_default'), hash = `COMPONENT_AT_AR_BARREL_01`}, - {name = 'barrel_heavy', label = TranslateCap('component_barrel_heavy'), hash = `COMPONENT_AT_AR_BARREL_02`}, - {name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO`}, - {name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_02`}, - {name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_03`}, - {name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_04`}, - {name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_05`}, - {name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_06`}, - {name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_07`}, - {name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_08`}, - {name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_09`}, - {name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_10`}, - {name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_IND_01`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CLIP_02` }, + { name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CLIP_TRACER` }, + { name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CLIP_INCENDIARY` }, + { name = 'ammo_armor', label = TranslateCap('component_ammo_armor'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CLIP_ARMORPIERCING` }, + { name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CLIP_FMJ` }, + { name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP_02` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS` }, + { name = 'scope_small', label = TranslateCap('component_scope_small'), hash = `COMPONENT_AT_SCOPE_MACRO_MK2` }, + { name = 'scope_large', label = TranslateCap('component_scope_large'), hash = `COMPONENT_AT_SCOPE_MEDIUM_MK2` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02` }, + { name = 'muzzle_flat', label = TranslateCap('component_muzzle_flat'), hash = `COMPONENT_AT_MUZZLE_01` }, + { name = 'muzzle_tactical', label = TranslateCap('component_muzzle_tactical'), hash = `COMPONENT_AT_MUZZLE_02` }, + { name = 'muzzle_fat', label = TranslateCap('component_muzzle_fat'), hash = `COMPONENT_AT_MUZZLE_03` }, + { name = 'muzzle_precision', label = TranslateCap('component_muzzle_precision'), hash = `COMPONENT_AT_MUZZLE_04` }, + { name = 'muzzle_heavy', label = TranslateCap('component_muzzle_heavy'), hash = `COMPONENT_AT_MUZZLE_05` }, + { name = 'muzzle_slanted', label = TranslateCap('component_muzzle_slanted'), hash = `COMPONENT_AT_MUZZLE_06` }, + { name = 'muzzle_split', label = TranslateCap('component_muzzle_split'), hash = `COMPONENT_AT_MUZZLE_07` }, + { name = 'barrel_default', label = TranslateCap('component_barrel_default'), hash = `COMPONENT_AT_AR_BARREL_01` }, + { name = 'barrel_heavy', label = TranslateCap('component_barrel_heavy'), hash = `COMPONENT_AT_AR_BARREL_02` }, + { name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO` }, + { name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_02` }, + { name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_03` }, + { name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_04` }, + { name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_05` }, + { name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_06` }, + { name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_07` }, + { name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_08` }, + { name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_09` }, + { name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_10` }, + { name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_ASSAULTRIFLE_MK2_CAMO_IND_01` } } }, { name = 'WEAPON_BULLPUPRIFLE', label = TranslateCap('weapon_bullpuprifle'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_BULLPUPRIFLE_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_BULLPUPRIFLE_CLIP_02`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_SMALL`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP`}, - {name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_BULLPUPRIFLE_VARMOD_LOW`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_BULLPUPRIFLE_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_BULLPUPRIFLE_CLIP_02` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_SMALL` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP` }, + { name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_BULLPUPRIFLE_VARMOD_LOW` } } }, { name = 'WEAPON_BULLPUPRIFLE_MK2', label = TranslateCap('weapon_bullpuprifle_mk2'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CLIP_02`}, - {name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CLIP_TRACER`}, - {name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CLIP_INCENDIARY`}, - {name = 'ammo_armor', label = TranslateCap('component_ammo_armor'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CLIP_ARMORPIERCING`}, - {name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CLIP_FMJ`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS`}, - {name = 'scope_small', label = TranslateCap('component_scope_small'), hash = `COMPONENT_AT_SCOPE_MACRO_02_MK2`}, - {name = 'scope_medium', label = TranslateCap('component_scope_medium'), hash = `COMPONENT_AT_SCOPE_SMALL_MK2`}, - {name = 'barrel_default', label = TranslateCap('component_barrel_default'), hash = `COMPONENT_AT_BP_BARREL_01`}, - {name = 'barrel_heavy', label = TranslateCap('component_barrel_heavy'), hash = `COMPONENT_AT_BP_BARREL_02`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP`}, - {name = 'muzzle_flat', label = TranslateCap('component_muzzle_flat'), hash = `COMPONENT_AT_MUZZLE_01`}, - {name = 'muzzle_tactical', label = TranslateCap('component_muzzle_tactical'), hash = `COMPONENT_AT_MUZZLE_02`}, - {name = 'muzzle_fat', label = TranslateCap('component_muzzle_fat'), hash = `COMPONENT_AT_MUZZLE_03`}, - {name = 'muzzle_precision', label = TranslateCap('component_muzzle_precision'), hash = `COMPONENT_AT_MUZZLE_04`}, - {name = 'muzzle_heavy', label = TranslateCap('component_muzzle_heavy'), hash = `COMPONENT_AT_MUZZLE_05`}, - {name = 'muzzle_slanted', label = TranslateCap('component_muzzle_slanted'), hash = `COMPONENT_AT_MUZZLE_06`}, - {name = 'muzzle_split', label = TranslateCap('component_muzzle_split'), hash = `COMPONENT_AT_MUZZLE_07`}, - {name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP_02`}, - {name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO`}, - {name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_02`}, - {name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_03`}, - {name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_04`}, - {name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_05`}, - {name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_06`}, - {name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_07`}, - {name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_08`}, - {name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_09`}, - {name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_10`}, - {name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_IND_01`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CLIP_02` }, + { name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CLIP_TRACER` }, + { name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CLIP_INCENDIARY` }, + { name = 'ammo_armor', label = TranslateCap('component_ammo_armor'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CLIP_ARMORPIERCING` }, + { name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CLIP_FMJ` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS` }, + { name = 'scope_small', label = TranslateCap('component_scope_small'), hash = `COMPONENT_AT_SCOPE_MACRO_02_MK2` }, + { name = 'scope_medium', label = TranslateCap('component_scope_medium'), hash = `COMPONENT_AT_SCOPE_SMALL_MK2` }, + { name = 'barrel_default', label = TranslateCap('component_barrel_default'), hash = `COMPONENT_AT_BP_BARREL_01` }, + { name = 'barrel_heavy', label = TranslateCap('component_barrel_heavy'), hash = `COMPONENT_AT_BP_BARREL_02` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP` }, + { name = 'muzzle_flat', label = TranslateCap('component_muzzle_flat'), hash = `COMPONENT_AT_MUZZLE_01` }, + { name = 'muzzle_tactical', label = TranslateCap('component_muzzle_tactical'), hash = `COMPONENT_AT_MUZZLE_02` }, + { name = 'muzzle_fat', label = TranslateCap('component_muzzle_fat'), hash = `COMPONENT_AT_MUZZLE_03` }, + { name = 'muzzle_precision', label = TranslateCap('component_muzzle_precision'), hash = `COMPONENT_AT_MUZZLE_04` }, + { name = 'muzzle_heavy', label = TranslateCap('component_muzzle_heavy'), hash = `COMPONENT_AT_MUZZLE_05` }, + { name = 'muzzle_slanted', label = TranslateCap('component_muzzle_slanted'), hash = `COMPONENT_AT_MUZZLE_06` }, + { name = 'muzzle_split', label = TranslateCap('component_muzzle_split'), hash = `COMPONENT_AT_MUZZLE_07` }, + { name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP_02` }, + { name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO` }, + { name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_02` }, + { name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_03` }, + { name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_04` }, + { name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_05` }, + { name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_06` }, + { name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_07` }, + { name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_08` }, + { name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_09` }, + { name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_10` }, + { name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_BULLPUPRIFLE_MK2_CAMO_IND_01` } } }, { name = 'WEAPON_CARBINERIFLE', label = TranslateCap('weapon_carbinerifle'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_CARBINERIFLE_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_CARBINERIFLE_CLIP_02`}, - {name = 'clip_box', label = TranslateCap('component_clip_box'), hash = `COMPONENT_CARBINERIFLE_CLIP_03`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_MEDIUM`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP`}, - {name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_CARBINERIFLE_VARMOD_LUXE`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_CARBINERIFLE_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_CARBINERIFLE_CLIP_02` }, + { name = 'clip_box', label = TranslateCap('component_clip_box'), hash = `COMPONENT_CARBINERIFLE_CLIP_03` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_MEDIUM` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP` }, + { name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_CARBINERIFLE_VARMOD_LUXE` } } }, { name = 'WEAPON_CARBINERIFLE_MK2', label = TranslateCap('weapon_carbinerifle_mk2'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_CARBINERIFLE_MK2_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_CARBINERIFLE_MK2_CLIP_02`}, - {name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_CARBINERIFLE_MK2_CLIP_TRACER`}, - {name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_CARBINERIFLE_MK2_CLIP_INCENDIARY`}, - {name = 'ammo_armor', label = TranslateCap('component_ammo_armor'), hash = `COMPONENT_CARBINERIFLE_MK2_CLIP_ARMORPIERCING`}, - {name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_CARBINERIFLE_MK2_CLIP_FMJ`}, - {name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP_02`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS`}, - {name = 'scope_medium', label = TranslateCap('component_scope_medium'), hash = `COMPONENT_AT_SCOPE_MACRO_MK2`}, - {name = 'scope_large', label = TranslateCap('component_scope_large'), hash = `COMPONENT_AT_SCOPE_MEDIUM_MK2`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP`}, - {name = 'muzzle_flat', label = TranslateCap('component_muzzle_flat'), hash = `COMPONENT_AT_MUZZLE_01`}, - {name = 'muzzle_tactical', label = TranslateCap('component_muzzle_tactical'), hash = `COMPONENT_AT_MUZZLE_02`}, - {name = 'muzzle_fat', label = TranslateCap('component_muzzle_fat'), hash = `COMPONENT_AT_MUZZLE_03`}, - {name = 'muzzle_precision', label = TranslateCap('component_muzzle_precision'), hash = `COMPONENT_AT_MUZZLE_04`}, - {name = 'muzzle_heavy', label = TranslateCap('component_muzzle_heavy'), hash = `COMPONENT_AT_MUZZLE_05`}, - {name = 'muzzle_slanted', label = TranslateCap('component_muzzle_slanted'), hash = `COMPONENT_AT_MUZZLE_06`}, - {name = 'muzzle_split', label = TranslateCap('component_muzzle_split'), hash = `COMPONENT_AT_MUZZLE_07`}, - {name = 'barrel_default', label = TranslateCap('component_barrel_default'), hash = `COMPONENT_AT_CR_BARREL_01`}, - {name = 'barrel_heavy', label = TranslateCap('component_barrel_heavy'), hash = `COMPONENT_AT_CR_BARREL_02`}, - {name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO`}, - {name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_02`}, - {name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_03`}, - {name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_04`}, - {name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_05`}, - {name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_06`}, - {name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_07`}, - {name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_08`}, - {name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_09`}, - {name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_10`}, - {name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_IND_01`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_CARBINERIFLE_MK2_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_CARBINERIFLE_MK2_CLIP_02` }, + { name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_CARBINERIFLE_MK2_CLIP_TRACER` }, + { name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_CARBINERIFLE_MK2_CLIP_INCENDIARY` }, + { name = 'ammo_armor', label = TranslateCap('component_ammo_armor'), hash = `COMPONENT_CARBINERIFLE_MK2_CLIP_ARMORPIERCING` }, + { name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_CARBINERIFLE_MK2_CLIP_FMJ` }, + { name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP_02` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS` }, + { name = 'scope_medium', label = TranslateCap('component_scope_medium'), hash = `COMPONENT_AT_SCOPE_MACRO_MK2` }, + { name = 'scope_large', label = TranslateCap('component_scope_large'), hash = `COMPONENT_AT_SCOPE_MEDIUM_MK2` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP` }, + { name = 'muzzle_flat', label = TranslateCap('component_muzzle_flat'), hash = `COMPONENT_AT_MUZZLE_01` }, + { name = 'muzzle_tactical', label = TranslateCap('component_muzzle_tactical'), hash = `COMPONENT_AT_MUZZLE_02` }, + { name = 'muzzle_fat', label = TranslateCap('component_muzzle_fat'), hash = `COMPONENT_AT_MUZZLE_03` }, + { name = 'muzzle_precision', label = TranslateCap('component_muzzle_precision'), hash = `COMPONENT_AT_MUZZLE_04` }, + { name = 'muzzle_heavy', label = TranslateCap('component_muzzle_heavy'), hash = `COMPONENT_AT_MUZZLE_05` }, + { name = 'muzzle_slanted', label = TranslateCap('component_muzzle_slanted'), hash = `COMPONENT_AT_MUZZLE_06` }, + { name = 'muzzle_split', label = TranslateCap('component_muzzle_split'), hash = `COMPONENT_AT_MUZZLE_07` }, + { name = 'barrel_default', label = TranslateCap('component_barrel_default'), hash = `COMPONENT_AT_CR_BARREL_01` }, + { name = 'barrel_heavy', label = TranslateCap('component_barrel_heavy'), hash = `COMPONENT_AT_CR_BARREL_02` }, + { name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO` }, + { name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_02` }, + { name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_03` }, + { name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_04` }, + { name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_05` }, + { name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_06` }, + { name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_07` }, + { name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_08` }, + { name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_09` }, + { name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_10` }, + { name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_CARBINERIFLE_MK2_CAMO_IND_01` } } }, { name = 'WEAPON_COMPACTRIFLE', label = TranslateCap('weapon_compactrifle'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_COMPACTRIFLE_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_COMPACTRIFLE_CLIP_02`}, - {name = 'clip_drum', label = TranslateCap('component_clip_drum'), hash = `COMPONENT_COMPACTRIFLE_CLIP_03`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_COMPACTRIFLE_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_COMPACTRIFLE_CLIP_02` }, + { name = 'clip_drum', label = TranslateCap('component_clip_drum'), hash = `COMPONENT_COMPACTRIFLE_CLIP_03` } } }, { name = 'WEAPON_MILITARYRIFLE', label = TranslateCap('weapon_militaryrifle'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_MILITARYRIFLE_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_MILITARYRIFLE_CLIP_02`}, - {name = 'ironsights', label = TranslateCap('component_ironsights'), hash = `COMPONENT_MILITARYRIFLE_SIGHT_01`}, - {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_SMALL`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_MILITARYRIFLE_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_MILITARYRIFLE_CLIP_02` }, + { name = 'ironsights', label = TranslateCap('component_ironsights'), hash = `COMPONENT_MILITARYRIFLE_SIGHT_01` }, + { name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_SMALL` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP` } } }, { name = 'WEAPON_SPECIALCARBINE', label = TranslateCap('weapon_specialcarbine'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_SPECIALCARBINE_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_SPECIALCARBINE_CLIP_02`}, - {name = 'clip_drum', label = TranslateCap('component_clip_drum'), hash = `COMPONENT_SPECIALCARBINE_CLIP_03`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_MEDIUM`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02`}, - {name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_SPECIALCARBINE_VARMOD_LOWRIDER`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_SPECIALCARBINE_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_SPECIALCARBINE_CLIP_02` }, + { name = 'clip_drum', label = TranslateCap('component_clip_drum'), hash = `COMPONENT_SPECIALCARBINE_CLIP_03` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_MEDIUM` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02` }, + { name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_SPECIALCARBINE_VARMOD_LOWRIDER` } } }, { name = 'WEAPON_SPECIALCARBINE_MK2', label = TranslateCap('weapon_specialcarbine_mk2'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_SPECIALCARBINE_MK2_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_SPECIALCARBINE_MK2_CLIP_02`}, - {name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_SPECIALCARBINE_MK2_CLIP_TRACER`}, - {name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_SPECIALCARBINE_MK2_CLIP_INCENDIARY`}, - {name = 'ammo_armor', label = TranslateCap('component_ammo_armor'), hash = `COMPONENT_SPECIALCARBINE_MK2_CLIP_ARMORPIERCING`}, - {name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_SPECIALCARBINE_MK2_CLIP_FMJ`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS`}, - {name = 'scope_small', label = TranslateCap('component_scope_small'), hash = `COMPONENT_AT_SCOPE_MACRO_MK2`}, - {name = 'scope_large', label = TranslateCap('component_scope_large'), hash = `COMPONENT_AT_SCOPE_MEDIUM_MK2`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02`}, - {name = 'muzzle_flat', label = TranslateCap('component_muzzle_flat'), hash = `COMPONENT_AT_MUZZLE_01`}, - {name = 'muzzle_tactical', label = TranslateCap('component_muzzle_tactical'), hash = `COMPONENT_AT_MUZZLE_02`}, - {name = 'muzzle_fat', label = TranslateCap('component_muzzle_fat'), hash = `COMPONENT_AT_MUZZLE_03`}, - {name = 'muzzle_precision', label = TranslateCap('component_muzzle_precision'), hash = `COMPONENT_AT_MUZZLE_04`}, - {name = 'muzzle_heavy', label = TranslateCap('component_muzzle_heavy'), hash = `COMPONENT_AT_MUZZLE_05`}, - {name = 'muzzle_slanted', label = TranslateCap('component_muzzle_slanted'), hash = `COMPONENT_AT_MUZZLE_06`}, - {name = 'muzzle_split', label = TranslateCap('component_muzzle_split'), hash = `COMPONENT_AT_MUZZLE_07`}, - {name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP_02`}, - {name = 'barrel_default', label = TranslateCap('component_barrel_default'), hash = `COMPONENT_AT_SC_BARREL_01`}, - {name = 'barrel_heavy', label = TranslateCap('component_barrel_heavy'), hash = `COMPONENT_AT_SC_BARREL_02`}, - {name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO`}, - {name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_02`}, - {name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_03`}, - {name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_04`}, - {name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_05`}, - {name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_06`}, - {name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_07`}, - {name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_08`}, - {name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_09`}, - {name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_10`}, - {name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_IND_01`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_SPECIALCARBINE_MK2_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_SPECIALCARBINE_MK2_CLIP_02` }, + { name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_SPECIALCARBINE_MK2_CLIP_TRACER` }, + { name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_SPECIALCARBINE_MK2_CLIP_INCENDIARY` }, + { name = 'ammo_armor', label = TranslateCap('component_ammo_armor'), hash = `COMPONENT_SPECIALCARBINE_MK2_CLIP_ARMORPIERCING` }, + { name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_SPECIALCARBINE_MK2_CLIP_FMJ` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS` }, + { name = 'scope_small', label = TranslateCap('component_scope_small'), hash = `COMPONENT_AT_SCOPE_MACRO_MK2` }, + { name = 'scope_large', label = TranslateCap('component_scope_large'), hash = `COMPONENT_AT_SCOPE_MEDIUM_MK2` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02` }, + { name = 'muzzle_flat', label = TranslateCap('component_muzzle_flat'), hash = `COMPONENT_AT_MUZZLE_01` }, + { name = 'muzzle_tactical', label = TranslateCap('component_muzzle_tactical'), hash = `COMPONENT_AT_MUZZLE_02` }, + { name = 'muzzle_fat', label = TranslateCap('component_muzzle_fat'), hash = `COMPONENT_AT_MUZZLE_03` }, + { name = 'muzzle_precision', label = TranslateCap('component_muzzle_precision'), hash = `COMPONENT_AT_MUZZLE_04` }, + { name = 'muzzle_heavy', label = TranslateCap('component_muzzle_heavy'), hash = `COMPONENT_AT_MUZZLE_05` }, + { name = 'muzzle_slanted', label = TranslateCap('component_muzzle_slanted'), hash = `COMPONENT_AT_MUZZLE_06` }, + { name = 'muzzle_split', label = TranslateCap('component_muzzle_split'), hash = `COMPONENT_AT_MUZZLE_07` }, + { name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP_02` }, + { name = 'barrel_default', label = TranslateCap('component_barrel_default'), hash = `COMPONENT_AT_SC_BARREL_01` }, + { name = 'barrel_heavy', label = TranslateCap('component_barrel_heavy'), hash = `COMPONENT_AT_SC_BARREL_02` }, + { name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO` }, + { name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_02` }, + { name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_03` }, + { name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_04` }, + { name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_05` }, + { name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_06` }, + { name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_07` }, + { name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_08` }, + { name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_09` }, + { name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_10` }, + { name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_IND_01` } } }, -- Sniper { name = 'WEAPON_HEAVYSNIPER', label = TranslateCap('weapon_heavysniper'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_SNIPER`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_SNIPER` }, tints = Config.DefaultWeaponTints, components = { - {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_LARGE`}, - {name = 'scope_advanced', label = TranslateCap('component_scope_advanced'), hash = `COMPONENT_AT_SCOPE_MAX`} + { name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_LARGE` }, + { name = 'scope_advanced', label = TranslateCap('component_scope_advanced'), hash = `COMPONENT_AT_SCOPE_MAX` } } }, { name = 'WEAPON_HEAVYSNIPER_MK2', label = TranslateCap('weapon_heavysniper_mk2'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_SNIPER`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_SNIPER` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_HEAVYSNIPER_MK2_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_HEAVYSNIPER_MK2_CLIP_02`}, - {name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_HEAVYSNIPER_MK2_CLIP_INCENDIARY`}, - {name = 'ammo_armor', label = TranslateCap('component_ammo_armor'), hash = `COMPONENT_HEAVYSNIPER_MK2_CLIP_ARMORPIERCING`}, - {name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_HEAVYSNIPER_MK2_CLIP_FMJ`}, - {name = 'ammo_explosive', label = TranslateCap('component_ammo_explosive'), hash = `COMPONENT_HEAVYSNIPER_MK2_CLIP_EXPLOSIVE`}, - {name = 'scope_zoom', label = TranslateCap('component_scope_zoom'), hash = `COMPONENT_AT_SCOPE_LARGE_MK2`}, - {name = 'scope_advanced', label = TranslateCap('component_scope_advanced'), hash = `COMPONENT_AT_SCOPE_MAX`}, - {name = 'scope_nightvision', label = TranslateCap('component_scope_nightvision'), hash = `COMPONENT_AT_SCOPE_NV`}, - {name = 'scope_thermal', label = TranslateCap('component_scope_thermal'), hash = `COMPONENT_AT_SCOPE_THERMAL`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_SR_SUPP_03`}, - {name = 'muzzle_squared', label = TranslateCap('component_muzzle_squared'), hash = `COMPONENT_AT_MUZZLE_08`}, - {name = 'muzzle_bell', label = TranslateCap('component_muzzle_bell'), hash = `COMPONENT_AT_MUZZLE_09`}, - {name = 'barrel_default', label = TranslateCap('component_barrel_default'), hash = `COMPONENT_AT_SR_BARREL_01`}, - {name = 'barrel_heavy', label = TranslateCap('component_barrel_heavy'), hash = `COMPONENT_AT_SR_BARREL_02`}, - {name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO`}, - {name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_02`}, - {name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_03`}, - {name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_04`}, - {name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_05`}, - {name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_06`}, - {name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_07`}, - {name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_08`}, - {name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_09`}, - {name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_10`}, - {name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_IND_01`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_HEAVYSNIPER_MK2_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_HEAVYSNIPER_MK2_CLIP_02` }, + { name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_HEAVYSNIPER_MK2_CLIP_INCENDIARY` }, + { name = 'ammo_armor', label = TranslateCap('component_ammo_armor'), hash = `COMPONENT_HEAVYSNIPER_MK2_CLIP_ARMORPIERCING` }, + { name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_HEAVYSNIPER_MK2_CLIP_FMJ` }, + { name = 'ammo_explosive', label = TranslateCap('component_ammo_explosive'), hash = `COMPONENT_HEAVYSNIPER_MK2_CLIP_EXPLOSIVE` }, + { name = 'scope_zoom', label = TranslateCap('component_scope_zoom'), hash = `COMPONENT_AT_SCOPE_LARGE_MK2` }, + { name = 'scope_advanced', label = TranslateCap('component_scope_advanced'), hash = `COMPONENT_AT_SCOPE_MAX` }, + { name = 'scope_nightvision', label = TranslateCap('component_scope_nightvision'), hash = `COMPONENT_AT_SCOPE_NV` }, + { name = 'scope_thermal', label = TranslateCap('component_scope_thermal'), hash = `COMPONENT_AT_SCOPE_THERMAL` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_SR_SUPP_03` }, + { name = 'muzzle_squared', label = TranslateCap('component_muzzle_squared'), hash = `COMPONENT_AT_MUZZLE_08` }, + { name = 'muzzle_bell', label = TranslateCap('component_muzzle_bell'), hash = `COMPONENT_AT_MUZZLE_09` }, + { name = 'barrel_default', label = TranslateCap('component_barrel_default'), hash = `COMPONENT_AT_SR_BARREL_01` }, + { name = 'barrel_heavy', label = TranslateCap('component_barrel_heavy'), hash = `COMPONENT_AT_SR_BARREL_02` }, + { name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO` }, + { name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_02` }, + { name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_03` }, + { name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_04` }, + { name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_05` }, + { name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_06` }, + { name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_07` }, + { name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_08` }, + { name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_09` }, + { name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_10` }, + { name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_HEAVYSNIPER_MK2_CAMO_IND_01` } } }, { name = 'WEAPON_MARKSMANRIFLE', label = TranslateCap('weapon_marksmanrifle'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_SNIPER`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_SNIPER` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_MARKSMANRIFLE_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_MARKSMANRIFLE_CLIP_02`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_LARGE_FIXED_ZOOM`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP`}, - {name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_MARKSMANRIFLE_VARMOD_LUXE`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_MARKSMANRIFLE_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_MARKSMANRIFLE_CLIP_02` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_LARGE_FIXED_ZOOM` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP` }, + { name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_MARKSMANRIFLE_VARMOD_LUXE` } } }, { name = 'WEAPON_MARKSMANRIFLE_MK2', label = TranslateCap('weapon_marksmanrifle_mk2'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_SNIPER`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_SNIPER` }, tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CLIP_02`}, - {name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CLIP_TRACER`}, - {name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CLIP_INCENDIARY`}, - {name = 'ammo_armor', label = TranslateCap('component_ammo_armor'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CLIP_ARMORPIERCING`}, - {name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CLIP_FMJ`}, - {name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS`}, - {name = 'scope_large', label = TranslateCap('component_scope_large'), hash = `COMPONENT_AT_SCOPE_MEDIUM_MK2`}, - {name = 'scope_zoom', label = TranslateCap('component_scope_zoom'), hash = `COMPONENT_AT_SCOPE_LARGE_FIXED_ZOOM_MK2`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP`}, - {name = 'muzzle_flat', label = TranslateCap('component_muzzle_flat'), hash = `COMPONENT_AT_MUZZLE_01`}, - {name = 'muzzle_tactical', label = TranslateCap('component_muzzle_tactical'), hash = `COMPONENT_AT_MUZZLE_02`}, - {name = 'muzzle_fat', label = TranslateCap('component_muzzle_fat'), hash = `COMPONENT_AT_MUZZLE_03`}, - {name = 'muzzle_precision', label = TranslateCap('component_muzzle_precision'), hash = `COMPONENT_AT_MUZZLE_04`}, - {name = 'muzzle_heavy', label = TranslateCap('component_muzzle_heavy'), hash = `COMPONENT_AT_MUZZLE_05`}, - {name = 'muzzle_slanted', label = TranslateCap('component_muzzle_slanted'), hash = `COMPONENT_AT_MUZZLE_06`}, - {name = 'muzzle_split', label = TranslateCap('component_muzzle_split'), hash = `COMPONENT_AT_MUZZLE_07`}, - {name = 'barrel_default', label = TranslateCap('component_barrel_default'), hash = `COMPONENT_AT_MRFL_BARREL_01`}, - {name = 'barrel_heavy', label = TranslateCap('component_barrel_heavy'), hash = `COMPONENT_AT_MRFL_BARREL_02`}, - {name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP_02`}, - {name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO`}, - {name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_02`}, - {name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_03`}, - {name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_04`}, - {name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_05`}, - {name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_06`}, - {name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_07`}, - {name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_08`}, - {name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_09`}, - {name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_10`}, - {name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_IND_01`} + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CLIP_02` }, + { name = 'ammo_tracer', label = TranslateCap('component_ammo_tracer'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CLIP_TRACER` }, + { name = 'ammo_incendiary', label = TranslateCap('component_ammo_incendiary'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CLIP_INCENDIARY` }, + { name = 'ammo_armor', label = TranslateCap('component_ammo_armor'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CLIP_ARMORPIERCING` }, + { name = 'ammo_fmj', label = TranslateCap('component_ammo_fmj'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CLIP_FMJ` }, + { name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_AT_SIGHTS` }, + { name = 'scope_large', label = TranslateCap('component_scope_large'), hash = `COMPONENT_AT_SCOPE_MEDIUM_MK2` }, + { name = 'scope_zoom', label = TranslateCap('component_scope_zoom'), hash = `COMPONENT_AT_SCOPE_LARGE_FIXED_ZOOM_MK2` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP` }, + { name = 'muzzle_flat', label = TranslateCap('component_muzzle_flat'), hash = `COMPONENT_AT_MUZZLE_01` }, + { name = 'muzzle_tactical', label = TranslateCap('component_muzzle_tactical'), hash = `COMPONENT_AT_MUZZLE_02` }, + { name = 'muzzle_fat', label = TranslateCap('component_muzzle_fat'), hash = `COMPONENT_AT_MUZZLE_03` }, + { name = 'muzzle_precision', label = TranslateCap('component_muzzle_precision'), hash = `COMPONENT_AT_MUZZLE_04` }, + { name = 'muzzle_heavy', label = TranslateCap('component_muzzle_heavy'), hash = `COMPONENT_AT_MUZZLE_05` }, + { name = 'muzzle_slanted', label = TranslateCap('component_muzzle_slanted'), hash = `COMPONENT_AT_MUZZLE_06` }, + { name = 'muzzle_split', label = TranslateCap('component_muzzle_split'), hash = `COMPONENT_AT_MUZZLE_07` }, + { name = 'barrel_default', label = TranslateCap('component_barrel_default'), hash = `COMPONENT_AT_MRFL_BARREL_01` }, + { name = 'barrel_heavy', label = TranslateCap('component_barrel_heavy'), hash = `COMPONENT_AT_MRFL_BARREL_02` }, + { name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP_02` }, + { name = 'camo_finish', label = TranslateCap('component_camo_finish'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO` }, + { name = 'camo_finish2', label = TranslateCap('component_camo_finish2'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_02` }, + { name = 'camo_finish3', label = TranslateCap('component_camo_finish3'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_03` }, + { name = 'camo_finish4', label = TranslateCap('component_camo_finish4'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_04` }, + { name = 'camo_finish5', label = TranslateCap('component_camo_finish5'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_05` }, + { name = 'camo_finish6', label = TranslateCap('component_camo_finish6'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_06` }, + { name = 'camo_finish7', label = TranslateCap('component_camo_finish7'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_07` }, + { name = 'camo_finish8', label = TranslateCap('component_camo_finish8'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_08` }, + { name = 'camo_finish9', label = TranslateCap('component_camo_finish9'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_09` }, + { name = 'camo_finish10', label = TranslateCap('component_camo_finish10'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_10` }, + { name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_MARKSMANRIFLE_MK2_CAMO_IND_01` } } }, { name = 'WEAPON_SNIPERRIFLE', label = TranslateCap('weapon_sniperrifle'), - ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_SNIPER`}, + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_SNIPER` }, tints = Config.DefaultWeaponTints, components = { - {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_LARGE`}, - {name = 'scope_advanced', label = TranslateCap('component_scope_advanced'), hash = `COMPONENT_AT_SCOPE_MAX`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02`}, - {name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_SNIPERRIFLE_VARMOD_LUXE`} + { name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_LARGE` }, + { name = 'scope_advanced', label = TranslateCap('component_scope_advanced'), hash = `COMPONENT_AT_SCOPE_MAX` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02` }, + { name = 'luxary_finish', label = TranslateCap('component_luxary_finish'), hash = `COMPONENT_SNIPERRIFLE_VARMOD_LUXE` } } }, -- Heavy / Launchers - {name = 'WEAPON_COMPACTLAUNCHER', label = TranslateCap('weapon_compactlauncher'), tints = Config.DefaultWeaponTints, components = {}, ammo = {label = TranslateCap('ammo_grenadelauncher'), hash = `AMMO_GRENADELAUNCHER`}}, - {name = 'WEAPON_FIREWORK', label = TranslateCap('weapon_firework'), components = {}, ammo = {label = TranslateCap('ammo_firework'), hash = `AMMO_FIREWORK`}}, - {name = 'WEAPON_GRENADELAUNCHER', label = TranslateCap('weapon_grenadelauncher'), tints = Config.DefaultWeaponTints, components = {}, ammo = {label = TranslateCap('ammo_grenadelauncher'), hash = `AMMO_GRENADELAUNCHER`}}, - {name = 'WEAPON_HOMINGLAUNCHER', label = TranslateCap('weapon_hominglauncher'), tints = Config.DefaultWeaponTints, components = {}, ammo = {label = TranslateCap('ammo_rockets'), hash = `AMMO_HOMINGLAUNCHER`}}, - {name = 'WEAPON_MINIGUN', label = TranslateCap('weapon_minigun'), tints = Config.DefaultWeaponTints, components = {}, ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_MINIGUN`}}, - {name = 'WEAPON_RAILGUN', label = TranslateCap('weapon_railgun'), tints = Config.DefaultWeaponTints, components = {}, ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_RAILGUN`}}, - {name = 'WEAPON_RPG', label = TranslateCap('weapon_rpg'), tints = Config.DefaultWeaponTints, components = {}, ammo = {label = TranslateCap('ammo_rockets'), hash = `AMMO_RPG`}}, - {name = 'WEAPON_RAYMINIGUN', label = TranslateCap('weapon_rayminigun'), tints = Config.DefaultWeaponTints, components = {}, ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_MINIGUN`}}, + { name = 'WEAPON_COMPACTLAUNCHER', label = TranslateCap('weapon_compactlauncher'), tints = Config.DefaultWeaponTints, components = {}, ammo = { label = TranslateCap('ammo_grenadelauncher'), hash = `AMMO_GRENADELAUNCHER` } }, + { name = 'WEAPON_FIREWORK', label = TranslateCap('weapon_firework'), components = {}, ammo = { label = TranslateCap('ammo_firework'), hash = `AMMO_FIREWORK` } }, + { name = 'WEAPON_GRENADELAUNCHER', label = TranslateCap('weapon_grenadelauncher'), tints = Config.DefaultWeaponTints, components = {}, ammo = { label = TranslateCap('ammo_grenadelauncher'), hash = `AMMO_GRENADELAUNCHER` } }, + { name = 'WEAPON_HOMINGLAUNCHER', label = TranslateCap('weapon_hominglauncher'), tints = Config.DefaultWeaponTints, components = {}, ammo = { label = TranslateCap('ammo_rockets'), hash = `AMMO_HOMINGLAUNCHER` } }, + { name = 'WEAPON_MINIGUN', label = TranslateCap('weapon_minigun'), tints = Config.DefaultWeaponTints, components = {}, ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_MINIGUN` } }, + { name = 'WEAPON_RAILGUN', label = TranslateCap('weapon_railgun'), tints = Config.DefaultWeaponTints, components = {}, ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_RAILGUN` } }, + { name = 'WEAPON_RPG', label = TranslateCap('weapon_rpg'), tints = Config.DefaultWeaponTints, components = {}, ammo = { label = TranslateCap('ammo_rockets'), hash = `AMMO_RPG` } }, + { name = 'WEAPON_RAYMINIGUN', label = TranslateCap('weapon_rayminigun'), tints = Config.DefaultWeaponTints, components = {}, ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_MINIGUN` } }, -- Thrown - {name = 'WEAPON_BALL', label = TranslateCap('weapon_ball'), components = {}, ammo = {label = TranslateCap('ammo_ball'), hash = `AMMO_BALL`}}, - {name = 'WEAPON_BZGAS', label = TranslateCap('weapon_bzgas'), components = {}, ammo = {label = TranslateCap('ammo_bzgas'), hash = `AMMO_BZGAS`}}, - {name = 'WEAPON_FLARE', label = TranslateCap('weapon_flare'), components = {}, ammo = {label = TranslateCap('ammo_flare'), hash = `AMMO_FLARE`}}, - {name = 'WEAPON_GRENADE', label = TranslateCap('weapon_grenade'), components = {}, ammo = {label = TranslateCap('ammo_grenade'), hash = `AMMO_GRENADE`}}, - {name = 'WEAPON_PETROLCAN', label = TranslateCap('weapon_petrolcan'), components = {}, ammo = {label = TranslateCap('ammo_petrol'), hash = `AMMO_PETROLCAN`}}, - {name = 'WEAPON_HAZARDCAN', label = TranslateCap('weapon_hazardcan'), components = {}, ammo = {label = TranslateCap('ammo_petrol'), hash = `AMMO_PETROLCAN`}}, - {name = 'WEAPON_MOLOTOV', label = TranslateCap('weapon_molotov'), components = {}, ammo = {label = TranslateCap('ammo_molotov'), hash = `AMMO_MOLOTOV`}}, - {name = 'WEAPON_PROXMINE', label = TranslateCap('weapon_proxmine'), components = {}, ammo = {label = TranslateCap('ammo_proxmine'), hash = `AMMO_PROXMINE`}}, - {name = 'WEAPON_PIPEBOMB', label = TranslateCap('weapon_pipebomb'), components = {}, ammo = {label = TranslateCap('ammo_pipebomb'), hash = `AMMO_PIPEBOMB`}}, - {name = 'WEAPON_SNOWBALL', label = TranslateCap('weapon_snowball'), components = {}, ammo = {label = TranslateCap('ammo_snowball'), hash = `AMMO_SNOWBALL`}}, - {name = 'WEAPON_STICKYBOMB', label = TranslateCap('weapon_stickybomb'), components = {}, ammo = {label = TranslateCap('ammo_stickybomb'), hash = `AMMO_STICKYBOMB`}}, - {name = 'WEAPON_SMOKEGRENADE', label = TranslateCap('weapon_smokegrenade'), components = {}, ammo = {label = TranslateCap('ammo_smokebomb'), hash = `AMMO_SMOKEGRENADE`}}, + { name = 'WEAPON_BALL', label = TranslateCap('weapon_ball'), components = {}, ammo = { label = TranslateCap('ammo_ball'), hash = `AMMO_BALL` } }, + { name = 'WEAPON_BZGAS', label = TranslateCap('weapon_bzgas'), components = {}, ammo = { label = TranslateCap('ammo_bzgas'), hash = `AMMO_BZGAS` } }, + { name = 'WEAPON_FLARE', label = TranslateCap('weapon_flare'), components = {}, ammo = { label = TranslateCap('ammo_flare'), hash = `AMMO_FLARE` } }, + { name = 'WEAPON_GRENADE', label = TranslateCap('weapon_grenade'), components = {}, ammo = { label = TranslateCap('ammo_grenade'), hash = `AMMO_GRENADE` } }, + { name = 'WEAPON_PETROLCAN', label = TranslateCap('weapon_petrolcan'), components = {}, ammo = { label = TranslateCap('ammo_petrol'), hash = `AMMO_PETROLCAN` } }, + { name = 'WEAPON_HAZARDCAN', label = TranslateCap('weapon_hazardcan'), components = {}, ammo = { label = TranslateCap('ammo_petrol'), hash = `AMMO_PETROLCAN` } }, + { name = 'WEAPON_MOLOTOV', label = TranslateCap('weapon_molotov'), components = {}, ammo = { label = TranslateCap('ammo_molotov'), hash = `AMMO_MOLOTOV` } }, + { name = 'WEAPON_PROXMINE', label = TranslateCap('weapon_proxmine'), components = {}, ammo = { label = TranslateCap('ammo_proxmine'), hash = `AMMO_PROXMINE` } }, + { name = 'WEAPON_PIPEBOMB', label = TranslateCap('weapon_pipebomb'), components = {}, ammo = { label = TranslateCap('ammo_pipebomb'), hash = `AMMO_PIPEBOMB` } }, + { name = 'WEAPON_SNOWBALL', label = TranslateCap('weapon_snowball'), components = {}, ammo = { label = TranslateCap('ammo_snowball'), hash = `AMMO_SNOWBALL` } }, + { name = 'WEAPON_STICKYBOMB', label = TranslateCap('weapon_stickybomb'), components = {}, ammo = { label = TranslateCap('ammo_stickybomb'), hash = `AMMO_STICKYBOMB` } }, + { name = 'WEAPON_SMOKEGRENADE', label = TranslateCap('weapon_smokegrenade'), components = {}, ammo = { label = TranslateCap('ammo_smokebomb'), hash = `AMMO_SMOKEGRENADE` } }, -- Tools - {name = 'WEAPON_FIREEXTINGUISHER', label = TranslateCap('weapon_fireextinguisher'), components = {}, ammo = {label = TranslateCap('ammo_charge'), hash = `AMMO_FIREEXTINGUISHER`}}, - {name = 'WEAPON_DIGISCANNER', label = TranslateCap('weapon_digiscanner'), components = {}}, - {name = 'GADGET_PARACHUTE', label = TranslateCap('gadget_parachute'), components = {}}, - {name = 'WEAPON_TACTICALRIFLE',label = TranslateCap('weapon_tactilerifle'),ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE`},tints = Config.DefaultWeaponTints, + { name = 'WEAPON_FIREEXTINGUISHER', label = TranslateCap('weapon_fireextinguisher'), components = {}, ammo = { label = TranslateCap('ammo_charge'), hash = `AMMO_FIREEXTINGUISHER` } }, + { name = 'WEAPON_DIGISCANNER', label = TranslateCap('weapon_digiscanner'), components = {} }, + { name = 'GADGET_PARACHUTE', label = TranslateCap('gadget_parachute'), components = {} }, + { + name = 'WEAPON_TACTICALRIFLE', + label = TranslateCap('weapon_tactilerifle'), + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE` }, + tints = Config.DefaultWeaponTints, components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_TACTICALRIFLE_CLIP_01`}, - {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_TACTICALRIFLE_CLIP_02`}, - {name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH_REH`}, - {name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP`}, - {name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02`} - } + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_TACTICALRIFLE_CLIP_01` }, + { name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_TACTICALRIFLE_CLIP_02` }, + { name = 'flashlight', label = TranslateCap('component_flashlight'), hash = `COMPONENT_AT_AR_FLSH_REH` }, + { name = 'grip', label = TranslateCap('component_grip'), hash = `COMPONENT_AT_AR_AFGRIP` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_AT_AR_SUPP_02` } + } }, - {name = 'WEAPON_PRECISIONRIFLE', label = TranslateCap('weapon_precisionrifle'), ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_SNIPER`}, tints = Config.DefaultWeaponTints, - components = { - {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_PRECISIONRIFLE_CLIP_01`}, - } + { + name = 'WEAPON_PRECISIONRIFLE', + label = TranslateCap('weapon_precisionrifle'), + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_SNIPER` }, + tints = Config.DefaultWeaponTints, + components = { + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_PRECISIONRIFLE_CLIP_01` }, + } + }, + { name = 'WEAPON_METALDETECTOR', label = TranslateCap('weapon_metaldetector'), components = {} }, + { + name = 'WEAPON_PISTOLXM3', + label = TranslateCap('weapon_pistolxm3'), + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_PISTOL` }, + tints = Config.DefaultWeaponTints, + components = { + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_PISTOLXM3_CLIP_01` }, + { name = 'suppressor', label = TranslateCap('component_suppressor'), hash = `COMPONENT_PISTOLXM3_SUPP` } + } + }, + { name = 'WEAPON_ACIDPACKAGE', label = TranslateCap('weapon_acidpackage'), components = {} }, + { name = 'WEAPON_CANDYCANE', label = TranslateCap('weapon_candycane'), components = {} }, + { + name = 'WEAPON_RAILGUNXM3', + label = TranslateCap('weapon_railgunxm3'), + ammo = { label = TranslateCap('ammo_rounds'), hash = `AMMO_RAILGUN` }, + tints = Config.DefaultWeaponTints, + components = { + { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_RAILGUNXM3_CLIP_01` }, + }, }, - {name = 'WEAPON_METALDETECTOR', label = TranslateCap('weapon_metaldetector'), components = {}} } diff --git a/[core]/es_extended/es_extended.sql b/[core]/es_extended/es_extended.sql index c3ef1d54..c6108928 100644 --- a/[core]/es_extended/es_extended.sql +++ b/[core]/es_extended/es_extended.sql @@ -1,12 +1,13 @@ CREATE DATABASE IF NOT EXISTS `es_extended`; - ALTER DATABASE `es_extended` DEFAULT CHARACTER SET UTF8MB4; ALTER DATABASE `es_extended` DEFAULT COLLATE UTF8MB4_UNICODE_CI; +USE `es_extended`; + CREATE TABLE `users` ( `identifier` VARCHAR(60) NOT NULL, `accounts` LONGTEXT NULL DEFAULT NULL, @@ -21,7 +22,6 @@ CREATE TABLE `users` ( PRIMARY KEY (`identifier`) ) ENGINE=InnoDB; - CREATE TABLE `items` ( `name` VARCHAR(50) NOT NULL, `label` VARCHAR(50) NOT NULL, @@ -32,7 +32,6 @@ CREATE TABLE `items` ( PRIMARY KEY (`name`) ) ENGINE=InnoDB; - CREATE TABLE `job_grades` ( `id` INT NOT NULL AUTO_INCREMENT, `job_name` VARCHAR(50) DEFAULT NULL, @@ -46,7 +45,6 @@ CREATE TABLE `job_grades` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB; - INSERT INTO `job_grades` VALUES (1,'unemployed',0,'unemployed','Unemployed',200,'{}','{}'); CREATE TABLE `jobs` ( @@ -56,5 +54,4 @@ CREATE TABLE `jobs` ( PRIMARY KEY (`name`) ) ENGINE=InnoDB; - INSERT INTO `jobs` VALUES ('unemployed','Unemployed'); diff --git a/[core]/es_extended/fxmanifest.lua b/[core]/es_extended/fxmanifest.lua index 2acd5ad2..193f9518 100644 --- a/[core]/es_extended/fxmanifest.lua +++ b/[core]/es_extended/fxmanifest.lua @@ -5,7 +5,7 @@ game 'gta5' description 'ES Extended' lua54 'yes' -version '1.9.4' +version '1.9.5' shared_scripts { 'locale.lua', @@ -42,7 +42,7 @@ client_scripts { 'client/modules/callback.lua', 'client/main.lua', - + 'common/modules/*.lua', 'common/functions.lua', diff --git a/[core]/es_extended/html/css/app.css b/[core]/es_extended/html/css/app.css index cfd2f67b..6d4b095c 100644 --- a/[core]/es_extended/html/css/app.css +++ b/[core]/es_extended/html/css/app.css @@ -1,76 +1,75 @@ @font-face { - font-family: "Pricedown"; - src: url("../fonts/pdown.ttf"); + font-family: "Pricedown"; + src: url("../fonts/pdown.ttf"); } @font-face { - font-family: "bankgothic"; - src: url("../fonts/bankgothic.ttf"); + font-family: "bankgothic"; + src: url("../fonts/bankgothic.ttf"); } html { - overflow: hidden; + overflow: hidden; } #inventory_notifications { - font-family: bankgothic; - position: absolute; - right: 40; - bottom: 40; - font-size: 2em; - font-weight: bold; - color: #fff; - text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, - 1px 1px 0 #000; + font-family: bankgothic; + position: absolute; + right: 40; + bottom: 40; + font-size: 2em; + font-weight: bold; + color: #fff; + text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000; } .menu { - font-family: "Open Sans", sans-serif; - min-width: 400px; - min-height: 250px; - color: #fff; - position: absolute; - left: 40; - top: 0; + font-family: "Open Sans", sans-serif; + min-width: 400px; + min-height: 250px; + color: #fff; + position: absolute; + left: 40; + top: 0; } .menu .head { - font-family: "Open Sans", sans-serif; - font-size: 28px; - padding: 10px; - background: #1a1a1a; - border-bottom: 3px solid #bc1635; - border-radius: 10px 10px 0 0; - -webkit-border-radius: 10px 10px 0 0; - -moz-border-radius: 10px 10px 0 0; - -o-border-radius: 10px 10px 0 0; - box-shadow: inset 0px 1px 0 rgba(255, 255, 255, 0.28); - -webkit-box-shadow: inset 0px 1px 0 rgba(255, 255, 255, 0.28); - -moz-box-shadow: inset 0px 1px 0 rgba(255, 255, 255, 0.28); - -o-box-shadow: inset 0px 1px 0 rgba(255, 255, 255, 0.28); - box-shadow: 1px 1px 10px 4px rgba(0, 0, 0, 0.4); + font-family: "Open Sans", sans-serif; + font-size: 28px; + padding: 10px; + background: #1a1a1a; + border-bottom: 3px solid #bc1635; + border-radius: 10px 10px 0 0; + -webkit-border-radius: 10px 10px 0 0; + -moz-border-radius: 10px 10px 0 0; + -o-border-radius: 10px 10px 0 0; + box-shadow: inset 0px 1px 0 rgba(255, 255, 255, 0.28); + -webkit-box-shadow: inset 0px 1px 0 rgba(255, 255, 255, 0.28); + -moz-box-shadow: inset 0px 1px 0 rgba(255, 255, 255, 0.28); + -o-box-shadow: inset 0px 1px 0 rgba(255, 255, 255, 0.28); + box-shadow: 1px 1px 10px 4px rgba(0, 0, 0, 0.4); } .menu .head span { - font-family: "Pricedown"; - font-size: 28px; - padding-left: 15px; - padding-top: 6px; + font-family: "Pricedown"; + font-size: 28px; + padding-left: 15px; + padding-top: 6px; } .menu .menu-items .menu-item { - font-family: "Open Sans", sans-serif; - font-size: 14px; - height: 40px; - display: block; - background-color: #f1f1f1; - box-shadow: inset 1px 0px 0px 1px #b8b8b8; - height: 32px; - line-height: 32px; - color: #3a3a3a; - text-align: center; + font-family: "Open Sans", sans-serif; + font-size: 14px; + height: 40px; + display: block; + background-color: #f1f1f1; + box-shadow: inset 1px 0px 0px 1px #b8b8b8; + height: 32px; + line-height: 32px; + color: #3a3a3a; + text-align: center; } .menu .menu-items .menu-item.selected { - background-color: #ccc; + background-color: #ccc; } diff --git a/[core]/es_extended/html/js/app.js b/[core]/es_extended/html/js/app.js index 029ecc00..4a95fe12 100644 --- a/[core]/es_extended/html/js/app.js +++ b/[core]/es_extended/html/js/app.js @@ -1,40 +1,40 @@ (() => { - ESX = {}; + ESX = {}; - ESX.inventoryNotification = function (add, label, count) { - let notif = ""; + ESX.inventoryNotification = function (add, label, count) { + let notif = ""; - if (add) { - notif += "+"; - } else { - notif += "-"; - } + if (add) { + notif += "+"; + } else { + notif += "-"; + } - if (count) { - notif += count + " " + label; - } else { - notif += " " + label; - } + if (count) { + notif += count + " " + label; + } else { + notif += " " + label; + } - let elem = $("
" + notif + "
"); - $("#inventory_notifications").append(elem); + let elem = $("
" + notif + "
"); + $("#inventory_notifications").append(elem); - $(elem) - .delay(3000) - .fadeOut(1000, function () { - elem.remove(); - }); - }; + $(elem) + .delay(3000) + .fadeOut(1000, function () { + elem.remove(); + }); + }; - window.onData = (data) => { - if (data.action === "inventoryNotification") { - ESX.inventoryNotification(data.add, data.item, data.count); - } - }; + window.onData = (data) => { + if (data.action === "inventoryNotification") { + ESX.inventoryNotification(data.add, data.item, data.count); + } + }; - window.onload = function (e) { - window.addEventListener("message", (event) => { - onData(event.data); - }); - }; + window.onload = function (e) { + window.addEventListener("message", (event) => { + onData(event.data); + }); + }; })(); diff --git a/[core]/es_extended/html/js/mustache.min.js b/[core]/es_extended/html/js/mustache.min.js index 520cfcb9..f3656597 100644 --- a/[core]/es_extended/html/js/mustache.min.js +++ b/[core]/es_extended/html/js/mustache.min.js @@ -1 +1,347 @@ -(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)}})(this,function mustacheFactory(mustache){var objectToString=Object.prototype.toString;var isArray=Array.isArray||function isArrayPolyfill(object){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;i0?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")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": ">", '"': """, "'": "'", "/": "/", "`": "`", "=": "=" }; + 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; +}); diff --git a/[core]/es_extended/html/js/wrapper.js b/[core]/es_extended/html/js/wrapper.js index 92ee2785..ee20f261 100644 --- a/[core]/es_extended/html/js/wrapper.js +++ b/[core]/es_extended/html/js/wrapper.js @@ -1,35 +1,34 @@ (() => { - let ESXWrapper = {}; - ESXWrapper.MessageSize = 1024; - ESXWrapper.messageId = 0; + let ESXWrapper = {}; + ESXWrapper.MessageSize = 1024; + ESXWrapper.messageId = 0; - window.SendMessage = function (namespace, type, msg) { - ESXWrapper.messageId = - ESXWrapper.messageId < 65535 ? ESXWrapper.messageId + 1 : 0; - const str = JSON.stringify(msg); + window.SendMessage = function (namespace, type, msg) { + ESXWrapper.messageId = ESXWrapper.messageId < 65535 ? ESXWrapper.messageId + 1 : 0; + const str = JSON.stringify(msg); - for (let i = 0; i < str.length; i++) { - let count = 0; - let chunk = ""; + for (let i = 0; i < str.length; i++) { + let count = 0; + let chunk = ""; - while (count < ESXWrapper.MessageSize && i < str.length) { - chunk += str[i]; + while (count < ESXWrapper.MessageSize && i < str.length) { + chunk += str[i]; - count++; - i++; - } + count++; + i++; + } - i--; + i--; - const data = { - __type: type, - id: ESXWrapper.messageId, - chunk: chunk, - }; + const data = { + __type: type, + id: ESXWrapper.messageId, + chunk: chunk, + }; - if (i == str.length - 1) data.end = true; + if (i === str.length - 1) data.end = true; - $.post("http://" + namespace + "/__chunk", JSON.stringify(data)); - } - }; + $.post("http://" + namespace + "/__chunk", JSON.stringify(data)); + } + }; })(); diff --git a/[core]/es_extended/html/ui.html b/[core]/es_extended/html/ui.html index 86ad62be..bbc9c005 100644 --- a/[core]/es_extended/html/ui.html +++ b/[core]/es_extended/html/ui.html @@ -1,12 +1,12 @@ - - - - -
+ + + + +
- - - - + + + + diff --git a/[core]/es_extended/locale.js b/[core]/es_extended/locale.js index 4b5390f8..e47e4345 100644 --- a/[core]/es_extended/locale.js +++ b/[core]/es_extended/locale.js @@ -20,7 +20,7 @@ function _U() { } // Has the locale file been set? - if (locale.length == 0) { + if (locale.length === 0) { console.log('locale.js: no locale has been set'); return 'locale.js: no locale has been set'; } @@ -32,7 +32,7 @@ function _U() { } // Do we need to format the string? - if (args.length == 1) { + if (args.length === 1) { return capitalize(locale[string]); } else { return formatString(args); diff --git a/[core]/es_extended/locale.lua b/[core]/es_extended/locale.lua index c093979e..a5e2207e 100644 --- a/[core]/es_extended/locale.lua +++ b/[core]/es_extended/locale.lua @@ -1,6 +1,10 @@ Locales = {} -function Translate(str, ...) -- Translate string +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())) + return 'Given translate function parameter is nil!' + end if Locales[Config.Locale] then if Locales[Config.Locale][str] then return string.format(Locales[Config.Locale][str], ...) @@ -10,7 +14,7 @@ function Translate(str, ...) -- Translate string return 'Translation [' .. Config.Locale .. '][' .. str .. '] does not exist' end elseif Config.Locale ~= 'en' and Locales['en'] and Locales['en'][str] then - return string.format(Locales['en'][str], ...) + return string.format(Locales['en'][str], ...) else return 'Locale [' .. Config.Locale .. '] does not exist' end diff --git a/[core]/es_extended/locales/br.lua b/[core]/es_extended/locales/br.lua deleted file mode 100644 index a19f78be..00000000 --- a/[core]/es_extended/locales/br.lua +++ /dev/null @@ -1,228 +0,0 @@ -Locales['br'] = { - -- Inventory - ['inventory'] = 'inventário %s / %s', - ['use'] = 'usar', - ['give'] = 'dar', - ['remove'] = 'remover', - ['return'] = 'voltar', - ['give_to'] = 'dar para', - ['amount'] = 'quantidade', - ['giveammo'] = 'dar munição', - ['amountammo'] = 'quantidade de munição', - ['noammo'] = 'voce não tem todas essas munições!', - ['gave_item'] = 'voce deu %sx %s para %s', - ['received_item'] = 'voce recebeu %sx %s de %s', - ['gave_weapon'] = 'você deu %s para %s', - ['gave_weapon_ammo'] = 'você deu ~o~%sx %s para %s de %s', - ['gave_weapon_withammo'] = 'você deu %s com ~o~%sx %s para %s', - ['gave_weapon_hasalready'] = '%s já tem um(a) %s', - ['gave_weapon_noweapon'] = 'não tem essa arma %s', - ['received_weapon'] = 'você recebeu %s de %s', - ['received_weapon_ammo'] = 'você recebeu ~o~%sx %s para a sua(o seu) %s de %s', - ['received_weapon_withammo'] = 'você recebeu %s com ~o~%sx %s de %s', - ['received_weapon_hasalready'] = '%s tentou lhe dar uma %s, mas você já tem um(a)', - ['received_weapon_noweapon'] = '%s tentou lhe dar munição para %s, mas você não tem um(a)', - ['gave_account_money'] = 'voce deu $%s (%s) para %s', - ['received_account_money'] = 'voce recebeu $%s (%s) de %s', - ['amount_invalid'] = 'quantidade inválida', - ['players_nearby'] = 'nenhum cidadão por perto', - ['ex_inv_lim'] = 'ação não e possivel, excedendo o limite de estoque para %s', - ['imp_invalid_quantity'] = 'ação impossível, quantidade inválida', - ['imp_invalid_amount'] = 'ação impossível, valor invalido', - ['threw_standard'] = 'você jogou %sx %s', - ['threw_account'] = 'você jogou $%s %s', - ['threw_weapon'] = 'você jogou %s', - ['threw_weapon_ammo'] = 'você jogou %s com ~o~%sx %s', - ['threw_weapon_already'] = 'você já esta com essa arma', - ['threw_cannot_pickup'] = 'você não pode pegar porque seu inventário está cheio!', - ['threw_pickup_prompt'] = 'pressione E para pegar', - - -- Key mapping - ['keymap_showinventory'] = 'exibir inventario', - - -- Salary related - ['received_salary'] = 'voce recebeu seu salário: $%s ', - ['received_help'] = 'voce recebeu seu cheque de bem-estar: $%s ', - ['company_nomoney'] = 'a empresa em que voce esta empregado esta muito pobre para pagar seu salário', - ['received_paycheck'] = 'recebeu dinheiro', - ['bank'] = 'banco', - ['account_bank'] = 'banco', - ['account_black_money'] = 'dinheiro sujo', - ['account_money'] = 'dinheiro', - - ['act_imp'] = 'ação impossível', - ['in_vehicle'] = 'voce não pode dar nada para alguem no veículo', - - -- Commands - ['command_car'] = 'spawn um carro', - ['command_car_car'] = 'nome do carro', - ['command_cardel'] = 'excluir veículo', - ['command_cardel_radius'] = 'optional, delete every vehicle within the specified radius', - ['command_clear'] = 'limpar o chat', - ['command_clearall'] = 'limpar o chat para todos', - ['command_clearinventory'] = 'remover todos os itens do inventário', - ['command_clearloadout'] = 'remova todas as armas do carregamento', - ['command_giveaccountmoney'] = 'dar dinheiro da conta', - ['command_giveaccountmoney_account'] = 'conta', - ['command_giveaccountmoney_amount'] = 'amount', - ['command_giveaccountmoney_invalid'] = 'conta inválida', - ['command_giveitem'] = 'dar item', - ['command_giveitem_item'] = 'item', - ['command_giveitem_count'] = 'count', - ['command_giveweapon'] = 'dar arma', - ['command_giveweapon_weapon'] = 'arma', - ['command_giveweapon_ammo'] = 'ammo count', - ['command_giveweapon_hasalready'] = 'player already has that weapon', - ['command_giveweaponcomponent'] = 'give weapon component', - ['command_giveweaponcomponent_component'] = 'component name', - ['command_giveweaponcomponent_invalid'] = 'invalid weapon component', - ['command_giveweaponcomponent_hasalready'] = 'player already has that weapon component', - ['command_giveweaponcomponent_missingweapon'] = 'player does not have that weapon', - ['command_save'] = 'save a player to database', - ['command_saveall'] = 'save all players to database', - ['command_setaccountmoney'] = 'set account money for a player', - ['command_setaccountmoney_amount'] = 'amount of money to set', - ['command_setcoords'] = 'teleport to coordinates', - ['command_setcoords_x'] = 'x axis', - ['command_setcoords_y'] = 'y axis', - ['command_setcoords_z'] = 'z axis', - ['command_setjob'] = 'atribuir um trabalho a um usuario', - ['command_setjob_job'] = 'o trabalho que voce deseja atribuir', - ['command_setjob_grade'] = 'o nivel de emprego', - ['command_setjob_invalid'] = 'the job, grade or both are invalid', - ['command_setgroup'] = 'set player group', - ['command_setgroup_group'] = 'group name', - ['commanderror_argumentmismatch'] = 'argument count mismatch (passed %s, wanted %s)', - ['commanderror_argumentmismatch_number'] = 'argument #%s type mismatch (passed string, wanted number)', - ['commanderror_invaliditem'] = 'item invalido', - ['commanderror_invalidweapon'] = 'invalid weapon', - ['commanderror_console'] = 'that command can not be run from console', - ['commanderror_invalidcommand'] = '/%s is not an valid command!', - ['commanderror_invalidplayerid'] = 'there is no player online matching that server id', - ['commandgeneric_playerid'] = 'o ID do jogador', - ['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'] = 'R$%s', - - -- Weapons - ['weapon_knife'] = 'faca', - ['weapon_nightstick'] = 'cacetete', - ['weapon_hammer'] = 'martelo', - ['weapon_bat'] = 'bastao', - ['weapon_golfclub'] = 'golf club', - ['weapon_crowbar'] = 'pe de cabra', - ['weapon_pistol'] = 'pistola', - ['weapon_combatpistol'] = 'pistola de combate', - ['weapon_appistol'] = 'ap pistola', - ['weapon_pistol50'] = 'pistola .50', - ['weapon_microsmg'] = 'micro smg', - ['weapon_smg'] = 'smg', - ['weapon_assaultsmg'] = 'smg de assalto', - ['weapon_assaultrifle'] = 'rifle de assalto', - ['weapon_carbinerifle'] = 'carabina rifle', - ['weapon_advancedrifle'] = 'rifle avançado', - ['weapon_mg'] = 'mg', - ['weapon_combatmg'] = 'combate mg', - ['weapon_pumpshotgun'] = 'espingarda', - ['weapon_sawnoffshotgun'] = 'espingarda serrada', - ['weapon_assaultshotgun'] = 'espingarda de assalto', - ['weapon_bullpupshotgun'] = 'espingarda de bullpup', - ['weapon_stungun'] = 'arma de choque', - ['weapon_sniperrifle'] = 'sniper rifle', - ['weapon_heavysniper'] = 'heavy sniper', - ['weapon_grenadelauncher'] = 'lançador de granada', - ['weapon_rpg'] = 'lançador de foguetes', - ['weapon_minigun'] = 'minigun', - ['weapon_grenade'] = 'granada', - ['weapon_stickybomb'] = 'bomba pegajosa', - ['weapon_smokegrenade'] = 'granada de fumaça', - ['weapon_bzgas'] = 'bz gas', - ['weapon_molotov'] = 'molotov', - ['weapon_fireextinguisher'] = 'extintor', - ['weapon_petrolcan'] = 'galao de combustivel', - ['weapon_ball'] = 'bola', - ['weapon_snspistol'] = 'sns pistol', - ['weapon_bottle'] = 'garrafa', - ['weapon_gusenberg'] = 'gusenberg sweeper', - ['weapon_specialcarbine'] = 'carabina especial', - ['weapon_heavypistol'] = 'heavy pistol', - ['weapon_bullpuprifle'] = 'bullpup rifle', - ['weapon_dagger'] = 'punhal', - ['weapon_vintagepistol'] = 'vintage pistol', - ['weapon_firework'] = 'fogos de artificio', - ['weapon_musket'] = 'mosquete', - ['weapon_heavyshotgun'] = 'heavy shotgun', - ['weapon_marksmanrifle'] = 'marksman rifle', - ['weapon_hominglauncher'] = 'homing launcher', - ['weapon_proxmine'] = 'mina de proximidade', - ['weapon_snowball'] = 'bola de neve', - ['weapon_flaregun'] = 'sinalizador', - ['weapon_combatpdw'] = 'combat pdw', - ['weapon_marksmanpistol'] = 'marksman pistol', - ['weapon_knuckle'] = 'soco ingles', - ['weapon_hatchet'] = 'machado', - ['weapon_railgun'] = 'railgun', - ['weapon_machete'] = 'facão', - ['weapon_machinepistol'] = 'machine pistol', - ['weapon_switchblade'] = 'canivete', - ['weapon_revolver'] = 'heavy revolver', - ['weapon_dbshotgun'] = 'espingarda de cano duplo', - ['weapon_compactrifle'] = 'compact rifle', - ['weapon_autoshotgun'] = 'auto shotgun', - ['weapon_battleaxe'] = 'battle axe', - ['weapon_compactlauncher'] = 'compact launcher', - ['weapon_minismg'] = 'mini smg', - ['weapon_pipebomb'] = 'bomba caseira', - ['weapon_poolcue'] = 'taco de sinuca', - ['weapon_wrench'] = 'chave de cano', - ['weapon_flashlight'] = 'laterna', - ['gadget_parachute'] = 'paraquedas', - ['weapon_flare'] = 'flare', - ['weapon_doubleaction'] = 'double-Action Revolver', - - -- Weapon Components - ['component_clip_default'] = 'aderência padrão', - ['component_clip_extended'] = 'aderência prolongada', - ['component_clip_drum'] = 'drum Magazine', - ['component_clip_box'] = 'box Magazine', - ['component_flashlight'] = 'lanterna', - ['component_scope'] = 'mira', - ['component_scope_advanced'] = 'mira avançada', - ['component_suppressor'] = 'supressor', - ['component_grip'] = 'grip', - ['component_luxary_finish'] = 'acabamento de arma de luxo', - - -- 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/[core]/es_extended/locales/cs.lua b/[core]/es_extended/locales/cs.lua index 7186ef8b..71bd3ea5 100644 --- a/[core]/es_extended/locales/cs.lua +++ b/[core]/es_extended/locales/cs.lua @@ -1,359 +1,366 @@ -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í!', +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ář', + -- 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', + -- 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ě', + ["act_imp"] = "Nelze provést", + ["in_vehicle"] = "Nelze provést, hráč je v autě", - -- 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_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_invaliditem'] = 'Špatný předmět', - ['commanderror_invalidweapon'] = 'Špatná zbraň', - ['commanderror_console'] = 'příkaz nelze být zpracován v konzoli', - ['commanderror_invalidcommand'] = 'Špatný příakz - /%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ů', + -- 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_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říakz - /%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', + -- Locale settings + ["locale_digit_grouping_symbol"] = ",", + ["locale_currency"] = "£%s", - -- Weapons + -- 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ůž', + -- 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', + -- 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', + -- 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', + -- 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', + -- 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", - -- 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', + -- 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', + -- 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', + -- Criminal Enterprises DLC + ["weapon_metaldetector"] = "Detektor kovu", + ["weapon_precisionrifle"] = "Precision Rifle", + ["weapon_tactilerifle"] = "Service Carbine", - -- 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', + -- 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 - -- 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', + -- 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", - -- 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', + -- 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", - ['component_luxary_finish'] = 'luxary Weapon Finish', + -- 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_handle_default'] = 'default Handle', - ['component_handle_vip'] = 'vIP Handle', - ['component_handle_bodyguard'] = 'bodyguard Handle', + ["component_luxary_finish"] = "luxary Weapon Finish", - ['component_vip_finish'] = 'vIP Finish', - ['component_bodyguard_finish'] = 'bodyguard Finish', + ["component_handle_default"] = "default Handle", + ["component_handle_vip"] = "vIP Handle", + ["component_handle_bodyguard"] = "bodyguard Handle", - ['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_vip_finish"] = "vIP Finish", + ["component_bodyguard_finish"] = "bodyguard Finish", - ['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_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_clip_default'] = 'default Magazine', - ['component_clip_extended'] = 'extended Magazine', - ['component_clip_drum'] = 'drum Magazine', - ['component_clip_box'] = 'box Magazine', + ["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_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_clip_default"] = "default Magazine", + ["component_clip_extended"] = "extended Magazine", + ["component_clip_drum"] = "drum Magazine", + ["component_clip_box"] = "box Magazine", - ['component_suppressor'] = 'suppressor', - ['component_compensator'] = 'compensator', + ["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_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_suppressor"] = "suppressor", + ["component_compensator"] = "compensator", - ['component_flashlight'] = 'flashlight', - ['component_grip'] = 'grip', + ["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_barrel_default'] = 'default Barrel', - ['component_barrel_heavy'] = 'heavy Barrel', + ["component_flashlight"] = "flashlight", + ["component_grip"] = "grip", - ['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_barrel_default"] = "default Barrel", + ["component_barrel_heavy"] = "heavy Barrel", - ['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', + ["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", - -- 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)', + ["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 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', + -- 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/[core]/es_extended/locales/da.lua b/[core]/es_extended/locales/da.lua index 5340a7aa..518778bf 100644 --- a/[core]/es_extended/locales/da.lua +++ b/[core]/es_extended/locales/da.lua @@ -1,366 +1,372 @@ -Locales['da'] = { - -- Inventory - ['inventory'] = 'Inventar ( Vægt %s / %s )', - ['use'] = 'Brug', - ['give'] = 'Giv', - ['remove'] = 'Smid', - ['return'] = 'Tilbage', - ['give_to'] = 'Giv til', - ['amount'] = 'Beløb', - ['giveammo'] = 'Giv ammunition', - ['amountammo'] = 'Ammunition beløb', - ['noammo'] = 'Ikke nok!', - ['gave_item'] = 'Giver %sx %s til %s', - ['received_item'] = 'Modtog %sx %s fra %s', - ['gave_weapon'] = 'Giver %s til %s', - ['gave_weapon_ammo'] = 'Giver ~o~%sx %s for %s til %s', - ['gave_weapon_withammo'] = 'Giver %s med ~o~%sx %s til %s', - ['gave_weapon_hasalready'] = '%s har allerede en %s', - ['gave_weapon_noweapon'] = '%s har ikke det våben', - ['received_weapon'] = 'Modtog %s fra %s', - ['received_weapon_ammo'] = 'Modtog ~o~%sx %s for din %s fra %s', - ['received_weapon_withammo'] = 'Modtog %s med ~o~%sx %s fra %s', - ['received_weapon_hasalready'] = '%s har forsøgt at give dig en %s, men du allerede dette våben', - ['received_weapon_noweapon'] = '%s har forsøgt at give dig ammunition for en %s, men du har ikke dette våben', - ['gave_account_money'] = 'Giver %s kr. (%s) til %s', - ['received_account_money'] = 'Modtog %s kr. (%s) fra %s', - ['amount_invalid'] = 'Ugyldig mængde', - ['players_nearby'] = 'Ingen spillere i nærheden', - ['ex_inv_lim'] = 'Kan ikke udføre handling, overskrider maks. vægt på %s', - ['imp_invalid_quantity'] = 'Handlingen kan ikke udføres, mængden er ugyldig', - ['imp_invalid_amount'] = 'Handlingen kan ikke udføres, beløbet er ugyldigt', - ['threw_standard'] = 'Smider %sx %s', - ['threw_account'] = 'Smider %s kr. %s', - ['threw_weapon'] = 'Smider %s', - ['threw_weapon_ammo'] = 'Smider %s med ~o~%sx %s', - ['threw_weapon_already'] = 'Du har allerede dette våben', - ['threw_cannot_pickup'] = 'Inventory er fyldt, Kan ikke tages!', - ['threw_pickup_prompt'] = 'Tryk på E for at tage genstand', - - -- Key mapping - ['keymap_showinventory'] = 'Vis Inventory', - - -- Salary related - ['received_salary'] = 'Du er blevet betalt: %s kr.', - ['received_help'] = 'Du har fået udbetalt din velfærdscheck: %s kr.', - ['company_nomoney'] = 'den virksomhed, du er ansat i, er for fattig til at udbetale din løn', - ['received_paycheck'] = 'modtaget lønseddel', - ['bank'] = 'Maze Bank', - ['account_bank'] = 'Bank', - ['account_black_money'] = 'Beskidte penge', - ['account_money'] = 'Penge', - - ['act_imp'] = 'Kan ikke udføre handling', - ['in_vehicle'] = 'Kan ikke udføre handling, spilleren er i et køretøj', - - -- Commands - ['command_bring'] = 'Tag en spiller til dig', - ['command_car'] = 'Spawn et køretøj', - ['command_car_car'] = 'Køretøjsmodel eller hash', - ['command_cardel'] = 'Fjern køretøjer i nærheden', - ['command_cardel_radius'] = 'Fjerner alle køretøjer inden for den specificerede radius', - ['command_clear'] = 'Ryd chatten', - ['command_clearall'] = 'Ryd chatten for alle spillere', - ['command_clearinventory'] = 'Fjern alle elementer fra spillernes inventar', - ['command_clearloadout'] = 'Fjern alle våben fra Players Loadout', - ['command_freeze'] = 'Frys en spiller', - ['command_unfreeze'] = 'Frigør en spiller', - ['command_giveaccountmoney'] = 'Giv penge til en bestemt konto', - ['command_giveaccountmoney_account'] = 'Konto at tilføje til', - ['command_giveaccountmoney_amount'] = 'Beløb at tilføje', - ['command_giveaccountmoney_invalid'] = 'Kontonavn ugyldigt', - ['command_giveitem'] = 'Giv spilleren en genstand', - ['command_giveitem_item'] = 'Genstands navn', - ['command_giveitem_count'] = 'Antal', - ['command_giveweapon'] = 'Giv spilleren et våben', - ['command_giveweapon_weapon'] = 'Navn på våben', - ['command_giveweapon_ammo'] = 'Ammunitions mængde', - ['command_giveweapon_hasalready'] = 'Spilleren har allerede dette våben', - ['command_giveweaponcomponent'] = 'Giv en våbenkomponent til spilleren', - ['command_giveweaponcomponent_component'] = 'Komponent navn', - ['command_giveweaponcomponent_invalid'] = 'Ugyldig våben-komponent', - ['command_giveweaponcomponent_hasalready'] = 'Spilleren har allerede denne våben-komponent', - ['command_giveweaponcomponent_missingweapon'] = 'Spilleren har ikke dette våben', - ['command_goto'] = 'Teleporter dig selv til en spiller', - ['command_kill'] = 'Dræb en spiller', - ['command_save'] = 'Force save en spillers data', - ['command_saveall'] = 'Force save alle spillers data', - ['command_setaccountmoney'] = 'Indstil pengene på en bestemt konto', - ['command_setaccountmoney_amount'] = 'Beløb', - ['command_setcoords'] = 'Teleporter til specificerede koordinater', - ['command_setcoords_x'] = 'X værdi', - ['command_setcoords_y'] = 'Y værdi', - ['command_setcoords_z'] = 'Z værdi', - ['command_setjob'] = 'Sæt en spillers job', - ['command_setjob_job'] = 'Navn', - ['command_setjob_grade'] = 'Job karakter', - ['command_setjob_invalid'] = 'jobbet, karakteren eller begge dele er ugyldige', - ['command_setgroup'] = 'Indstil en spillers tilladelsesgruppe', - ['command_setgroup_group'] = 'Navn på gruppe', - ['commanderror_argumentmismatch'] = 'Antal ugyldige argumenter (bestået %s, ønsket %s)', - ['commanderror_argumentmismatch_number'] = 'Ugyldigt argument #%s datatype (bestået streng, ønsket nummer)', - ['commanderror_invaliditem'] = 'Ugyldig genstand', - ['commanderror_invalidweapon'] = 'Ugyldigt våben', - ['commanderror_console'] = 'Kommandoen kan ikke udføres fra konsollen', - ['commanderror_invalidcommand'] = 'Ugyldig kommando - /%s', - ['commanderror_invalidplayerid'] = 'Den angivne spiller er ikke online', - ['commandgeneric_playerid'] = 'Spillerens server-id', - ['command_giveammo_noweapon_found'] = '%s har ikke det våben', - ['command_giveammo_weapon'] = 'Våben navn', - ['command_giveammo_ammo'] = 'Ammunitions mængde', - ['tpm_nowaypoint'] = 'Ingen waypoint indstillet.', - ['tpm_success'] = 'Teleporteret med succes', - - ['noclip_message'] = 'Noclip er blevet %s', - ['enabled'] = '~g~aktiveret~s~', - ['disabled'] = '~r~deaktiveret~s~', - - -- Locale settings - ['locale_digit_grouping_symbol'] = ',', - ['locale_currency'] = 'DKK%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', - - -- 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', - - -- 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', - } - +Locales["da"] = { + -- Inventory + ["inventory"] = "Inventar ( Vægt %s / %s )", + ["use"] = "Brug", + ["give"] = "Giv", + ["remove"] = "Smid", + ["return"] = "Tilbage", + ["give_to"] = "Giv til", + ["amount"] = "Beløb", + ["giveammo"] = "Giv ammunition", + ["amountammo"] = "Ammunition beløb", + ["noammo"] = "Ikke nok!", + ["gave_item"] = "Giver %sx %s til %s", + ["received_item"] = "Modtog %sx %s fra %s", + ["gave_weapon"] = "Giver %s til %s", + ["gave_weapon_ammo"] = "Giver ~o~%sx %s for %s til %s", + ["gave_weapon_withammo"] = "Giver %s med ~o~%sx %s til %s", + ["gave_weapon_hasalready"] = "%s har allerede en %s", + ["gave_weapon_noweapon"] = "%s har ikke det våben", + ["received_weapon"] = "Modtog %s fra %s", + ["received_weapon_ammo"] = "Modtog ~o~%sx %s for din %s fra %s", + ["received_weapon_withammo"] = "Modtog %s med ~o~%sx %s fra %s", + ["received_weapon_hasalready"] = "%s har forsøgt at give dig en %s, men du allerede dette våben", + ["received_weapon_noweapon"] = "%s har forsøgt at give dig ammunition for en %s, men du har ikke dette våben", + ["gave_account_money"] = "Giver %s kr. (%s) til %s", + ["received_account_money"] = "Modtog %s kr. (%s) fra %s", + ["amount_invalid"] = "Ugyldig mængde", + ["players_nearby"] = "Ingen spillere i nærheden", + ["ex_inv_lim"] = "Kan ikke udføre handling, overskrider maks. vægt på %s", + ["imp_invalid_quantity"] = "Handlingen kan ikke udføres, mængden er ugyldig", + ["imp_invalid_amount"] = "Handlingen kan ikke udføres, beløbet er ugyldigt", + ["threw_standard"] = "Smider %sx %s", + ["threw_account"] = "Smider %s kr. %s", + ["threw_weapon"] = "Smider %s", + ["threw_weapon_ammo"] = "Smider %s med ~o~%sx %s", + ["threw_weapon_already"] = "Du har allerede dette våben", + ["threw_cannot_pickup"] = "Inventory er fyldt, Kan ikke tages!", + ["threw_pickup_prompt"] = "Tryk på E for at tage genstand", + + -- Key mapping + ["keymap_showinventory"] = "Vis Inventory", + + -- Salary related + ["received_salary"] = "Du er blevet betalt: %s kr.", + ["received_help"] = "Du har fået udbetalt din velfærdscheck: %s kr.", + ["company_nomoney"] = "den virksomhed, du er ansat i, er for fattig til at udbetale din løn", + ["received_paycheck"] = "modtaget lønseddel", + ["bank"] = "Maze Bank", + ["account_bank"] = "Bank", + ["account_black_money"] = "Beskidte penge", + ["account_money"] = "Penge", + + ["act_imp"] = "Kan ikke udføre handling", + ["in_vehicle"] = "Kan ikke udføre handling, spilleren er i et køretøj", + + -- Commands + ['command_bring'] = 'Tag en spiller til dig', + ['command_car'] = 'Spawn et køretøj', + ['command_car_car'] = 'Køretøjsmodel eller hash', + ['command_cardel'] = 'Fjern køretøjer i nærheden', + ['command_cardel_radius'] = 'Fjerner alle køretøjer inden for den specificerede radius', + ['command_clear'] = 'Ryd chatten', + ['command_clearall'] = 'Ryd chatten for alle spillere', + ['command_clearinventory'] = 'Fjern alle elementer fra spillernes inventar', + ['command_clearloadout'] = 'Fjern alle våben fra Players Loadout', + ['command_freeze'] = 'Frys en spiller', + ['command_unfreeze'] = 'Frigør en spiller', + ['command_giveaccountmoney'] = 'Giv penge til en bestemt konto', + ['command_giveaccountmoney_account'] = 'Konto at tilføje til', + ['command_giveaccountmoney_amount'] = 'Beløb at tilføje', + ['command_giveaccountmoney_invalid'] = 'Kontonavn ugyldigt', + ['command_giveitem'] = 'Giv spilleren en genstand', + ['command_giveitem_item'] = 'Genstands navn', + ['command_giveitem_count'] = 'Antal', + ['command_giveweapon'] = 'Giv spilleren et våben', + ['command_giveweapon_weapon'] = 'Navn på våben', + ['command_giveweapon_ammo'] = 'Ammunitions mængde', + ['command_giveweapon_hasalready'] = 'Spilleren har allerede dette våben', + ['command_giveweaponcomponent'] = 'Giv en våbenkomponent til spilleren', + ['command_giveweaponcomponent_component'] = 'Komponent navn', + ['command_giveweaponcomponent_invalid'] = 'Ugyldig våben-komponent', + ['command_giveweaponcomponent_hasalready'] = 'Spilleren har allerede denne våben-komponent', + ['command_giveweaponcomponent_missingweapon'] = 'Spilleren har ikke dette våben', + ['command_goto'] = 'Teleporter dig selv til en spiller', + ['command_kill'] = 'Dræb en spiller', + ['command_save'] = 'Force save en spillers data', + ['command_saveall'] = 'Force save alle spillers data', + ['command_setaccountmoney'] = 'Indstil pengene på en bestemt konto', + ['command_setaccountmoney_amount'] = 'Beløb', + ['command_setcoords'] = 'Teleporter til specificerede koordinater', + ['command_setcoords_x'] = 'X værdi', + ['command_setcoords_y'] = 'Y værdi', + ['command_setcoords_z'] = 'Z værdi', + ['command_setjob'] = 'Sæt en spillers job', + ['command_setjob_job'] = 'Navn', + ['command_setjob_grade'] = 'Job karakter', + ['command_setjob_invalid'] = 'jobbet, karakteren eller begge dele er ugyldige', + ['command_setgroup'] = 'Indstil en spillers tilladelsesgruppe', + ['command_setgroup_group'] = 'Navn på gruppe', + ['commanderror_argumentmismatch'] = 'Antal ugyldige argumenter (bestået %s, ønsket %s)', + ['commanderror_argumentmismatch_number'] = 'Ugyldigt argument #%s datatype (bestået streng, ønsket nummer)', + ['commanderror_argumentmismatch_string'] = 'Invalid Argument #%s data type (passed number, wanted string)', + ['commanderror_invaliditem'] = 'Ugyldig genstand', + ['commanderror_invalidweapon'] = 'Ugyldigt våben', + ['commanderror_console'] = 'Kommandoen kan ikke udføres fra konsollen', + ['commanderror_invalidcommand'] = 'Ugyldig kommando - /%s', + ['commanderror_invalidplayerid'] = 'Den angivne spiller er ikke online', + ['commandgeneric_playerid'] = 'Spillerens server-id', + ['command_giveammo_noweapon_found'] = '%s har ikke det våben', + ['command_giveammo_weapon'] = 'Våben navn', + ['command_giveammo_ammo'] = 'Ammunitions mængde', + ['tpm_nowaypoint'] = 'Ingen waypoint indstillet.', + ['tpm_success'] = 'Teleporteret med succes', + + ['noclip_message'] = 'Noclip er blevet %s', + ['enabled'] = '~g~aktiveret~s~', + ['disabled'] = '~r~deaktiveret~s~', + + -- Locale settings + ["locale_digit_grouping_symbol"] = ",", + ["locale_currency"] = "%s DKK", + + -- Weapons + + -- Melee + ["weapon_dagger"] = "Dolk", + ["weapon_bat"] = "Bat", + ["weapon_battleaxe"] = "Kampøkse", + ["weapon_bottle"] = "Flaske", + ["weapon_crowbar"] = "Koben", + ["weapon_flashlight"] = "Lommelygte", + ["weapon_golfclub"] = "Golf Club", + ["weapon_hammer"] = "Hammer", + ["weapon_hatchet"] = "Økse", + ["weapon_knife"] = "Kniv", + ["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"] = "Tung Pistol", + ["weapon_revolver"] = "Tung 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"] = "Kamp Haglgevær", + ["weapon_dbshotgun"] = "Dobbeltløbet gevær", + ["weapon_heavyshotgun"] = "Tungt haglgevær", + ["weapon_musket"] = "Musket", + ["weapon_pumpshotgun"] = "Pumpe haglgevær", + ["weapon_pumpshotgun_mk2"] = "Pumpe haglgevær MK2", + ["weapon_sawnoffshotgun"] = "Oversavet haglgevær", + + -- 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"] = "Maskinpistol", + ["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"] = "Militær riffel", + ["weapon_specialcarbine"] = "Special Carbine", + ["weapon_specialcarbine_mk2"] = "Special Carbine MK2", + + -- Sniper + ["weapon_heavysniper"] = "Tung snigskytte", + ["weapon_heavysniper_mk2"] = "Tung snigskytte MK2", + ["weapon_marksmanrifle"] = "Skytterifle", + ["weapon_marksmanrifle_mk2"] = "Skytterifle MK2", + ["weapon_sniperrifle"] = "Snigskytteriffel", + + -- 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"] = "Granat", + ["weapon_petrolcan"] = "Benzindunk", + ["weapon_hazardcan"] = "Farlig Benzindunk", + ["weapon_molotov"] = "Molotov Cocktail", + ["weapon_proxmine"] = "Proximity Mine", + ["weapon_pipebomb"] = "Pipe Bomb", + ["weapon_snowball"] = "Snebold", + ["weapon_stickybomb"] = "Sticky Bomb", + ["weapon_smokegrenade"] = "Tåregas", + + -- Special + ["weapon_fireextinguisher"] = "Brandslukker", + ["weapon_digiscanner"] = "Digital scanner", + ["weapon_garbagebag"] = "Skraldepose", + ["weapon_handcuffs"] = "Håndjern", + ["gadget_nightvision"] = "Night Vision", + ["gadget_parachute"] = "faldskæ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"] = "standardhåndtag", + ["component_handle_vip"] = "VIP håndtag", + ["component_handle_bodyguard"] = "livvagt håndtag", + + ["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"] = "standard magasin", + ["component_clip_extended"] = "udvidet Magasin", + ["component_clip_drum"] = "drum Magasin", + ["component_clip_box"] = "box Magazine", + + ["component_scope_holo"] = "rødpunktsigte", + ["component_scope_small"] = "lille sigte", + ["component_scope_medium"] = "medium sigte", + ["component_scope_large"] = "stort sigte", + ["component_scope"] = "mounted Scope", + ["component_scope_advanced"] = "avanceret sigte", + ["component_ironsights"] = "jernsigte", + + ["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"] = "våbenlygte", + ["component_grip"] = "greb", + + ["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/[core]/es_extended/locales/de.lua b/[core]/es_extended/locales/de.lua index 9a6ea35c..285fe595 100644 --- a/[core]/es_extended/locales/de.lua +++ b/[core]/es_extended/locales/de.lua @@ -1,228 +1,372 @@ -Locales['de'] = { - -- Inventory - ['inventory'] = 'Inventar %s / %s', - ['use'] = 'benutzen', - ['give'] = 'geben', - ['remove'] = 'entfernen', - ['return'] = 'zurück', - ['give_to'] = 'geben an', - ['amount'] = 'Betrag', - ['giveammo'] = 'Munition geben', - ['amountammo'] = 'Anzahl der Munition', - ['noammo'] = 'du hast keine Munition!', - ['gave_item'] = 'du gibst %sx %s an %s', - ['received_item'] = 'du empfängst %sx %s von %s', - ['gave_weapon'] = 'du gibst %s an %s', - ['gave_weapon_ammo'] = 'du gibst ~o~%sx %s von %s an %s', - ['gave_weapon_withammo'] = 'du gibst %s mit ~o~%sx %s an %s', - ['gave_weapon_hasalready'] = '%s hat bereits eine(n) %s', - ['gave_weapon_noweapon'] = '%s hat diese Waffe nicht', - ['received_weapon'] = 'du erhälst %s von %s', - ['received_weapon_ammo'] = 'du erhälst %sx %s für dein %s von %s', - ['received_weapon_withammo'] = 'du erhälst %s mit %sx %s von %s', - ['received_weapon_hasalready'] = '%s hat versucht dir eine(n) %s zu geben, aber du hast bereits eine(n)', - ['received_weapon_noweapon'] = '%s hat versucht dir Munition für eine(n) %s, aber du besitzt diese Waffe nicht', - ['gave_account_money'] = 'du gibst $%s (%s) an %s', - ['received_account_money'] = 'du empfängst $%s (%s) von %s', - ['amount_invalid'] = 'ungültiger Betrag', - ['players_nearby'] = 'keine Spieler in der Nähe', - ['ex_inv_lim'] = 'Aktion nicht möglich, Inventarlimit überschritten für %s', - ['imp_invalid_quantity'] = 'Aktion nicht möglich, ungültige Anzahl', - ['imp_invalid_amount'] = 'Aktion nicht möglich, ungültiger Betrag', - ['threw_standard'] = 'du wirfst %sx %s', - ['threw_account'] = 'du wirfst $%s %s weg', - ['threw_weapon'] = 'du wirfst %s weg', - ['threw_weapon_ammo'] = 'du wirfst %s mit %sx %s weg', - ['threw_weapon_already'] = 'Du hast bereits diese Waffe', - ['threw_cannot_pickup'] = 'Du kannst das nicht aufheben, da dein Inventar voll ist', - ['threw_pickup_prompt'] = 'drücke E um aufzuheben', +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', + -- Key mapping + ["keymap_showinventory"] = "Inventar Anzeigen", - -- Salary related - ['received_salary'] = 'du hast dein Gehalt erhalten: $%s', - ['received_help'] = 'du hast deine Sozialhilfe erhalten: $%s', - ['company_nomoney'] = 'die Firma in der du angestellt bist, ist zu arm um dir dein Gehalt zu zahlen', - ['received_paycheck'] = 'erhaltener Gehaltsscheck', - ['bank'] = 'Bank', - ['account_bank'] = 'Bank', - ['account_black_money'] = 'Schwarzgeld', - ['account_money'] = 'Geld', + -- 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'] = 'Aktion nicht möglich', - ['in_vehicle'] = 'du kannst keine Items in einem Fahrzeug weitergeben', + ["act_imp"] = "Du kannst diese Aktion nicht ausführen!", + ["in_vehicle"] = "Du kannst diese Aktion nicht ausführen! Person ist in einem Fahrzeug", - -- Commands - ['command_car'] = 'Fahrzeug spawnen', - ['command_car_car'] = 'Fahrzeug spawnname oder hash', - ['command_cardel'] = 'Fahrzeuge in der nähe löschen', - ['command_cardel_radius'] = 'Optional, jedes Fahrzeug innerhalb des angegebenen Radius löschen', - ['command_clear'] = 'Chat leeren', - ['command_clearall'] = 'Chat leeren für alle spieler', - ['command_clearinventory'] = 'Spielerinventar leeren', - ['command_clearloadout'] = 'Spielerausstattung löschen', - ['command_giveaccountmoney'] = 'Geld aufs Konto laden', - ['command_giveaccountmoney_account'] = 'gültiger Kontoname', - ['command_giveaccountmoney_amount'] = 'Anzahl zum hinzufügen', - ['command_giveaccountmoney_invalid'] = 'Ungültiger Kontoname', - ['command_giveitem'] = 'Item an Spieler geben', - ['command_giveitem_item'] = 'Itemname', - ['command_giveitem_count'] = 'item Anzahl', - ['command_giveweapon'] = 'Spieler eine Waffe geben', - ['command_giveweapon_weapon'] = 'Waffenname', - ['command_giveweapon_ammo'] = 'Munitionsanzahl', - ['command_giveweapon_hasalready'] = 'Spieler bereits im Besitz dieser Waffe', - ['command_giveweaponcomponent'] = 'Spieler Waffenaufsatz geben', - ['command_giveweaponcomponent_component'] = 'Waffenaufsatz Name', - ['command_giveweaponcomponent_invalid'] = 'ungültiger Waffenaufsatz', - ['command_giveweaponcomponent_hasalready'] = 'Spieler hat bereits diesen Waffenaufsatz', - ['command_giveweaponcomponent_missingweapon'] = 'Der Spieler besitzt diese Waffe nicht', - ['command_save'] = 'Spieler in der Datenbank sichern', - ['command_saveall'] = 'Sichern von allen Spielern auf der Datenbank', - ['command_setaccountmoney'] = 'Kontosumme des Spielers setzen', - ['command_setaccountmoney_amount'] = 'Summe', - ['command_setcoords'] = 'Zu den Koordinaten Teleportieren', - ['command_setcoords_x'] = 'x Position', - ['command_setcoords_y'] = 'y Position', - ['command_setcoords_z'] = 'z Position', - ['command_setjob'] = 'Dem Spieler einen Job setzen', - ['command_setjob_job'] = 'Name des Jobs', - ['command_setjob_grade'] = 'Rang des Jobs', - ['command_setjob_invalid'] = 'Der Rang oder der Job ist nicht gültigt.', - ['command_setgroup'] = 'Spielergruppe setzen', - ['command_setgroup_group'] = 'Gruppenname', - ['commanderror_argumentmismatch'] = 'Die Anzahl der Argumente stimmen nicht überein (übergeben %s, gesucht %s)', - ['commanderror_argumentmismatch_number'] = 'argument #%s typ stimmt nicht überein (übergeben string, gewünscht zahl)', - ['commanderror_invaliditem'] = 'falscher Itemname', - ['commanderror_invalidweapon'] = 'ungültige Waffe', - ['commanderror_console'] = 'Der Befehl kann nicht in der Konsole genutzt werden', - ['commanderror_invalidcommand'] = '/%s ist kein verfügbarer Befehl!', - ['commanderror_invalidplayerid'] = 'Kein Spieler mit dieser ID scheint online zu sein', - ['commandgeneric_playerid'] = 'Spieler ID', - ['command_giveammo_noweapon_found'] = '%s besitzt diese Waffe nicht', - ['command_giveammo_weapon'] = 'Waffenname', - ['command_giveammo_ammo'] = 'Munitionsanzahl', + -- 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_clear'] = 'Textchat leeren', + ['command_clearall'] = 'Textchat leeren für alle Spieler leeren', + ['command_clearinventory'] = 'Alle Items von dem Inventar eines Spielers entfernen', + ['command_clearloadout'] = 'Alle waffen von dem Spieler Loadout entfernen', + ['command_freeze'] = 'Spieler Freezen', + ['command_unfreeze'] = 'Spieler Entfreezen', + ['command_giveaccountmoney'] = 'Geld an einen bestimmten Account geben', + ['command_giveaccountmoney_account'] = 'Account wohin das Geld hinzugefügt werden soll', + ['command_giveaccountmoney_amount'] = 'Anzahl zum hinzufügen', + ['command_giveaccountmoney_invalid'] = 'Accountname Ungültig', + ['command_giveitem'] = 'Spieler ein item geben', + ['command_giveitem_item'] = 'Item Name', + ['command_giveitem_count'] = 'Anzahl', + ['command_giveweapon'] = 'Spieler eine Waffe geben', + ['command_giveweapon_weapon'] = 'Waffenname', + ['command_giveweapon_ammo'] = 'Munitionsanzahl', + ['command_giveweapon_hasalready'] = 'Spieler hat bereits diese Waffe', + ['command_giveweaponcomponent'] = 'Waffenkomponent an einen Spieler geben', + ['command_giveweaponcomponent_component'] = 'Komponent Name', + ['command_giveweaponcomponent_invalid'] = 'Ungültiger Komponent Name', + ['command_giveweaponcomponent_hasalready'] = 'Spieler hat bereits diesen Komponent', + ['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 Account setzen', + ['command_setaccountmoney_amount'] = 'Anzahl', + ['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 Grad', + ['command_setjob_invalid'] = 'Der Job Grad oder beides sind ungültig', + ['command_setgroup'] = 'Setzt eine Berechtigungs Gruppe für einen User', + ['command_setgroup_group'] = 'Name der Gruppe', + ['commanderror_argumentmismatch'] = 'Ungültiger Argument (gegeben %s, gewollt %s)', + ['commanderror_argumentmismatch_number'] = 'Ungültiges Argument #%s daten typ (string gegeben, gewollte nummer)', + ['commanderror_argumentmismatch_string'] = 'Invalid Argument #%s data type (passed number, wanted string)', + ['commanderror_invaliditem'] = 'Ungültiges Item', + ['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`s 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', - -- Locale settings - ['locale_digit_grouping_symbol'] = ' ', - ['locale_currency'] = '$%s', + ['noclip_message'] = 'Noclip wurde %s', + ['enabled'] = '~g~Aktiviert~s~', + ['disabled'] = '~r~Deaktiviert~s~', - -- Weapons - ['weapon_knife'] = 'Messer', - ['weapon_nightstick'] = 'Schlagstock', - ['weapon_hammer'] = 'Hammer', - ['weapon_bat'] = 'Schläger', - ['weapon_golfclub'] = 'Golfschläger', - ['weapon_crowbar'] = 'Brecheisen', - ['weapon_pistol'] = 'Pistole', - ['weapon_combatpistol'] = 'Kampfpistole', - ['weapon_appistol'] = 'AP Pistole', - ['weapon_pistol50'] = 'Pistole .50', - ['weapon_microsmg'] = 'Mikro SMG', - ['weapon_smg'] = 'SMG', - ['weapon_assaultsmg'] = 'Kampf SMG', - ['weapon_assaultrifle'] = 'Kampfgewehr', - ['weapon_carbinerifle'] = 'Karabinergewehr', - ['weapon_advancedrifle'] = 'Advancedgewehr', - ['weapon_mg'] = 'MG', - ['weapon_combatmg'] = 'Kampf MG', - ['weapon_pumpshotgun'] = 'Pumpgun', - ['weapon_sawnoffshotgun'] = 'Abgesägte Schrotflinte', - ['weapon_assaultshotgun'] = 'Kampf Schrotflinte', - ['weapon_bullpupshotgun'] = 'Bullpup Schrotflinte', - ['weapon_stungun'] = 'Tazer', - ['weapon_sniperrifle'] = 'Scharfschützengewehr', - ['weapon_heavysniper'] = 'Schweres Sniper', - ['weapon_grenadelauncher'] = 'Granatwerfer', - ['weapon_rpg'] = 'RPG', - ['weapon_minigun'] = 'Minigun', - ['weapon_grenade'] = 'Granate', - ['weapon_stickybomb'] = 'Haftbombe', - ['weapon_smokegrenade'] = 'Rauchgranate', - ['weapon_bzgas'] = 'BZ Gas', - ['weapon_molotov'] = 'Molotov Cocktail', - ['weapon_fireextinguisher'] = 'Feuerlöscher', - ['weapon_petrolcan'] = 'Benzinkanister', - ['weapon_ball'] = 'Ball', - ['weapon_snspistol'] = 'SNS Pistole', - ['weapon_bottle'] = 'Flasche', - ['weapon_gusenberg'] = 'Gusenberg', - ['weapon_specialcarbine'] = 'Spezialkarabiner', - ['weapon_heavypistol'] = 'Schwere Pistole', - ['weapon_bullpuprifle'] = 'Bullpupgewehr', - ['weapon_dagger'] = 'Dolch', - ['weapon_vintagepistol'] = 'Vintage Pistole', - ['weapon_firework'] = 'Feuerwerk', - ['weapon_musket'] = 'Muskete', - ['weapon_heavyshotgun'] = 'Schwere Schrotflinte', - ['weapon_marksmanrifle'] = 'Marksmangewehr', - ['weapon_hominglauncher'] = 'Homing Launcher', - ['weapon_proxmine'] = 'Annäherungsmine', - ['weapon_snowball'] = 'Schneeball', - ['weapon_flaregun'] = 'Leuchtpistole', - ['weapon_combatpdw'] = 'Kampf PDW', - ['weapon_marksmanpistol'] = 'Marksman Pistole', - ['weapon_knuckle'] = 'Schlagring', - ['weapon_hatchet'] = 'Axt', - ['weapon_railgun'] = 'Railgun', - ['weapon_machete'] = 'Machete', - ['weapon_machinepistol'] = 'Maschinenpistole', - ['weapon_switchblade'] = 'Klappmesser', - ['weapon_revolver'] = 'Schwerer Revolver', - ['weapon_dbshotgun'] = 'Doppelläufige Schrotflinte', - ['weapon_compactrifle'] = 'Kampfgewehr', - ['weapon_autoshotgun'] = 'Auto Schrotflinte', - ['weapon_battleaxe'] = 'Kampfaxt', - ['weapon_compactlauncher'] = 'Kompakt Granatwerfer', - ['weapon_minismg'] = 'Mini SMG', - ['weapon_pipebomb'] = 'Rohrbombe', - ['weapon_poolcue'] = 'Billiard-Kö', - ['weapon_wrench'] = 'Rohrzange', - ['weapon_flashlight'] = 'Taschenlampe', - ['gadget_parachute'] = 'Fallschirm', - ['weapon_flare'] = 'Leuchtpistole', - ['weapon_doubleaction'] = 'double-Action Revolver', + -- Locale settings + ["locale_digit_grouping_symbol"] = ",", + ["locale_currency"] = "%s€", - -- Weapon Components - ['component_clip_default'] = 'standart Magazin', - ['component_clip_extended'] = 'erweiterters Magazin', - ['component_clip_drum'] = 'Trommelmagazin', - ['component_clip_box'] = 'Kastenmagazin', - ['component_flashlight'] = 'Taschenlampe', - ['component_scope'] = 'Zielfernrohr', - ['component_scope_advanced'] = 'erweitertes Zielfernrohr', - ['component_suppressor'] = 'Schalldämpfer', - ['component_grip'] = 'Griff', - ['component_luxary_finish'] = 'luxus Waffendesign', + -- Weapons - -- Weapon Ammo - ['ammo_rounds'] = 'Kugel(n)', - ['ammo_shells'] = 'Schrotpatrone(n)', - ['ammo_charge'] = 'Ladung', - ['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)', + -- 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", - -- 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', + -- 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", + + -- 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'] = '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"] = "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"] = "Standart 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/[core]/es_extended/locales/en.lua b/[core]/es_extended/locales/en.lua index e480153f..136819f5 100644 --- a/[core]/es_extended/locales/en.lua +++ b/[core]/es_extended/locales/en.lua @@ -1,57 +1,57 @@ -Locales['en'] = { +Locales["en"] = { -- Inventory - ['inventory'] = 'Inventory ( Weight %s / %s )', - ['use'] = 'Use', - ['give'] = 'Give', - ['remove'] = 'Throw', - ['return'] = 'Return', - ['give_to'] = 'Give to', - ['amount'] = 'Amount', - ['giveammo'] = 'Give ammo', - ['amountammo'] = 'Ammo Amount', - ['noammo'] = 'Not Enough!', - ['gave_item'] = 'Giving %sx %s to %s', - ['received_item'] = 'Received %sx %s from %s', - ['gave_weapon'] = 'Giving %s to %s', - ['gave_weapon_ammo'] = 'Giving ~o~%sx %s for %s to %s', - ['gave_weapon_withammo'] = 'Giving %s with ~o~%sx %s to %s', - ['gave_weapon_hasalready'] = '%s already has a %s', - ['gave_weapon_noweapon'] = '%s does not have that weapon', - ['received_weapon'] = 'Received %s from %s', - ['received_weapon_ammo'] = 'Received ~o~%sx %s for your %s from %s', - ['received_weapon_withammo'] = 'Received %s with ~o~%sx %s from %s', - ['received_weapon_hasalready'] = '%s has attempted to give you a %s, but you already this weapon', - ['received_weapon_noweapon'] = '%s has attempted to give you ammo for a %s, but you do not have this weapon', - ['gave_account_money'] = 'Giving $%s (%s) to %s', - ['received_account_money'] = 'Received $%s (%s) from %s', - ['amount_invalid'] = 'Invalid quantity', - ['players_nearby'] = 'No nearby Players', - ['ex_inv_lim'] = 'Cannot perfom action,exceeding max weight of %s', - ['imp_invalid_quantity'] = 'Cannot perfom action, the quantity is invalid', - ['imp_invalid_amount'] = 'Cannot perfom action, the amount is invalid', - ['threw_standard'] = 'Throwing %sx %s', - ['threw_account'] = 'Throwing $%s %s', - ['threw_weapon'] = 'Throwing %s', - ['threw_weapon_ammo'] = 'Throwing %s with ~o~%sx %s', - ['threw_weapon_already'] = 'You already have this weapon', - ['threw_cannot_pickup'] = 'Inventory is full, Cannot Pickup!', - ['threw_pickup_prompt'] = 'Press E to Pickup', + ["inventory"] = "Inventory ( Weight %s / %s )", + ["use"] = "Use", + ["give"] = "Give", + ["remove"] = "Throw", + ["return"] = "Return", + ["give_to"] = "Give to", + ["amount"] = "Amount", + ["giveammo"] = "Give ammo", + ["amountammo"] = "Ammo Amount", + ["noammo"] = "Not Enough!", + ["gave_item"] = "Giving %sx %s to %s", + ["received_item"] = "Received %sx %s from %s", + ["gave_weapon"] = "Giving %s to %s", + ["gave_weapon_ammo"] = "Giving ~o~%sx %s for %s to %s", + ["gave_weapon_withammo"] = "Giving %s with ~o~%sx %s to %s", + ["gave_weapon_hasalready"] = "%s already has a %s", + ["gave_weapon_noweapon"] = "%s does not have that weapon", + ["received_weapon"] = "Received %s from %s", + ["received_weapon_ammo"] = "Received ~o~%sx %s for your %s from %s", + ["received_weapon_withammo"] = "Received %s with ~o~%sx %s from %s", + ["received_weapon_hasalready"] = "%s has attempted to give you a %s, but you already this weapon", + ["received_weapon_noweapon"] = "%s has attempted to give you ammo for a %s, but you do not have this weapon", + ["gave_account_money"] = "Giving $%s (%s) to %s", + ["received_account_money"] = "Received $%s (%s) from %s", + ["amount_invalid"] = "Invalid quantity", + ["players_nearby"] = "No nearby Players", + ["ex_inv_lim"] = "Cannot perfom action,exceeding max weight of %s", + ["imp_invalid_quantity"] = "Cannot perfom action, the quantity is invalid", + ["imp_invalid_amount"] = "Cannot perfom action, the amount is invalid", + ["threw_standard"] = "Throwing %sx %s", + ["threw_account"] = "Throwing $%s %s", + ["threw_weapon"] = "Throwing %s", + ["threw_weapon_ammo"] = "Throwing %s with ~o~%sx %s", + ["threw_weapon_already"] = "You already have this weapon", + ["threw_cannot_pickup"] = "Inventory is full, Cannot Pickup!", + ["threw_pickup_prompt"] = "Press E to Pickup", -- Key mapping - ['keymap_showinventory'] = 'Show Inventory', + ["keymap_showinventory"] = "Show Inventory", -- Salary related - ['received_salary'] = 'You have been paid: $%s', - ['received_help'] = 'You have been paid your welfare check: $%s', - ['company_nomoney'] = 'the company you\'re employeed at is too poor to pay out your salary', - ['received_paycheck'] = 'received paycheck', - ['bank'] = 'Maze Bank', - ['account_bank'] = 'Bank', - ['account_black_money'] = 'Dirty Money', - ['account_money'] = 'Cash', + ["received_salary"] = "You have been paid: $%s", + ["received_help"] = "You have been paid your welfare check: $%s", + ["company_nomoney"] = "the company you're employeed at is too poor to pay out your salary", + ["received_paycheck"] = "received paycheck", + ["bank"] = "Maze Bank", + ["account_bank"] = "Bank", + ["account_black_money"] = "Dirty Money", + ["account_money"] = "Cash", - ['act_imp'] = 'Cannot Perform Action', - ['in_vehicle'] = 'Cannot Perform Action, Player is in a vehicle', + ["act_imp"] = "Cannot Perform Action", + ["in_vehicle"] = "Cannot Perform Action, Player is in a vehicle", -- Commands ['command_bring'] = 'Bring player to you', @@ -69,6 +69,10 @@ Locales['en'] = { ['command_giveaccountmoney_account'] = 'Account to add to', ['command_giveaccountmoney_amount'] = 'Amount to add', ['command_giveaccountmoney_invalid'] = 'Account Name Invalid', + ['command_removeaccountmoney'] = 'Remove Money from a specified Account', + ['command_removeaccountmoney_account'] = 'Account to remove from', + ['command_removeaccountmoney_amount'] = 'Amount to remove', + ['command_removeaccountmoney_invalid'] = 'Account Name Invalid', ['command_giveitem'] = 'Give Player an item', ['command_giveitem_item'] = 'Item name', ['command_giveitem_count'] = 'Quantity', @@ -99,6 +103,7 @@ Locales['en'] = { ['command_setgroup_group'] = 'Name of Group', ['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'] = 'Invalid item', ['commanderror_invalidweapon'] = 'Invalid weapon', ['commanderror_console'] = 'Command Cannot be executed from console', @@ -116,250 +121,250 @@ Locales['en'] = { ['disabled'] = '~r~disabled~s~', -- Locale settings - ['locale_digit_grouping_symbol'] = ',', - ['locale_currency'] = '£%s', + ["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', + ["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', + ["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', + ["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', + ["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_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", -- 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', + ["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', + ["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', + ["weapon_metaldetector"] = "Metal Detector", + ["weapon_precisionrifle"] = "Precision Rifle", + ["weapon_tactilerifle"] = "Service Carbine", -- 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', + ["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_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_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_luxary_finish"] = "luxary Weapon Finish", - ['component_handle_default'] = 'default Handle', - ['component_handle_vip'] = 'vIP Handle', - ['component_handle_bodyguard'] = 'bodyguard Handle', + ["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_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_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_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_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_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_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_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_flashlight"] = "flashlight", + ["component_grip"] = "grip", - ['component_barrel_default'] = 'default Barrel', - ['component_barrel_heavy'] = 'heavy Barrel', + ["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_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', + ["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)', + ["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', + ["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/[core]/es_extended/locales/es.lua b/[core]/es_extended/locales/es.lua index 0d47efb2..45bfb1d9 100644 --- a/[core]/es_extended/locales/es.lua +++ b/[core]/es_extended/locales/es.lua @@ -1,358 +1,365 @@ -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', +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', + -- 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', + -- 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'] = 'Acción imposible', - ['in_vehicle'] = 'No se puede dar nada a alguien en un vehículo', + ["act_imp"] = "No se pudo realizar la acción.", + ["in_vehicle"] = "Acción rechazada. El jugador se encuentra en un vehículo", - -- Commands - ['command_bring'] = 'Traer un jugador hacia ti', - ['command_car'] = 'Generar un vehiculo', - ['command_car_car'] = 'Nombre o hash del vehículo', - ['command_cardel'] = 'Eliminar vehículos cercanos', - ['command_cardel_radius'] = 'Opcional, eliminar todos los vehículos en el radio especificado', - ['command_clear'] = 'Limpiar chat', - ['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 inválido', - ['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'] = 'Teletransporte hacia un jugador', - ['command_kill'] = 'Matar un jugador', - ['command_save'] = 'Guardar un jugador en la base de datos', - ['command_saveall'] = 'Guardar todos los jugadores en la base de datos', - ['command_setaccountmoney'] = 'Establecer el dinero de la cuenta para un jugador', - ['command_setaccountmoney_amount'] = 'Cantidad de dinero para fijar', - ['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, el rango o ambos 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_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 en línea que coincida con la ID del servidor', - ['commandgeneric_playerid'] = 'ID del jugador', - ['command_giveammo_noweapon_found'] = '%s does not have that weapon', - ['command_giveammo_weapon'] = 'Weapon name', - ['command_giveammo_ammo'] = 'Ammo Quantity', + -- 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_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', + -- Locale settings + ["locale_digit_grouping_symbol"] = ",", + ["locale_currency"] = "$%s", - -- Weapons + -- Weapons - -- Melee - ['weapon_dagger'] = 'Daga', - ['weapon_bat'] = 'Bate', - ['weapon_battleaxe'] = 'Hacha de combate', - ['weapon_bottle'] = 'Botella', - ['weapon_crowbar'] = 'Palanca', - ['weapon_flashlight'] = 'Linterna', - ['weapon_golfclub'] = 'Palos de Golf', - ['weapon_hammer'] = 'Martillo', - ['weapon_hatchet'] = 'Hacha', - ['weapon_knife'] = 'Cuchillo', - ['weapon_knuckle'] = 'Puños Americanos', - ['weapon_machete'] = 'Machete', - ['weapon_nightstick'] = 'Porra', - ['weapon_wrench'] = 'Llave Inglesa', - ['weapon_poolcue'] = 'Taco de Billar', - ['weapon_stone_hatchet'] = 'Hacha de Piedra', - ['weapon_switchblade'] = 'Navaja', + -- 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 - -- Handguns - ['weapon_appistol'] = 'Pistola AP ', - ['weapon_ceramicpistol'] = 'Pistola Corta', - ['weapon_combatpistol'] = 'Pistola 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', - ['weapon_pistol_mk2'] = 'Pistola MK2', - ['weapon_pistol50'] = 'Pistola .50', - ['weapon_snspistol'] = 'Pistola SNS', - ['weapon_snspistol_mk2'] = 'Pistola SNS MK2', - ['weapon_stungun'] = 'Tazer', - ['weapon_raypistol'] = 'Up-N-Atomizer', - ['weapon_vintagepistol'] = 'Pistola Vintage', + -- 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", - -- 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', + -- 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"] = "Tazer", + ["weapon_raypistol"] = "Up-N-Atomizer", + ["weapon_vintagepistol"] = "Pistola Vintage", - -- 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', + -- 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", - -- 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', + -- 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", - -- 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', + -- 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", - -- 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', + -- 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", - -- 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 de Tubo', - ['weapon_snowball'] = 'Bola de nieve', - ['weapon_stickybomb'] = 'Bomba Pegajosa', - ['weapon_smokegrenade'] = 'Granada de Humo', + -- 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", - -- Special - ['weapon_fireextinguisher'] = 'Extintor', - ['weapon_digiscanner'] = 'Escaner Digital', - ['weapon_garbagebag'] = 'Bolsa de Basura', - ['weapon_handcuffs'] = 'Grilletes', - ['gadget_nightvision'] = 'Vision Nocturna', - ['gadget_parachute'] = 'Paracaidas', + -- 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", - -- 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', + -- Special + ["weapon_fireextinguisher"] = "Extintor", + ["weapon_digiscanner"] = "Escaner Digital", + ["weapon_garbagebag"] = "Bolsa de Basura", + ["weapon_handcuffs"] = "Grilletes", + ["gadget_nightvision"] = "Vision Nocturna", + ["gadget_parachute"] = "Paracaidas", - ['component_luxary_finish'] = 'Acabado de Armas de Lujo', + -- 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_handle_default'] = 'Mango Default', - ['component_handle_vip'] = 'Mango VIP', - ['component_handle_bodyguard'] = 'Mango de Guardaespaldas', + ["component_luxary_finish"] = "Acabado de Armas de Lujo", - ['component_vip_finish'] = 'Acabado VIP', - ['component_bodyguard_finish'] = 'Acabado Guardaespaldas', + ["component_handle_default"] = "Mango Default", + ["component_handle_vip"] = "Mango VIP", + ["component_handle_bodyguard"] = "Mango de 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_vip_finish"] = "Acabado VIP", + ["component_bodyguard_finish"] = "Acabado Guardaespaldas", - ['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_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_clip_default'] = 'Cargador Default', - ['component_clip_extended'] = 'Cargador Extendido', - ['component_clip_drum'] = 'Cargador Barril', - ['component_clip_box'] = 'Caja de Cargador', + ["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_scope_holo'] = 'Mira Holográfico', - ['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_clip_default"] = "Cargador Default", + ["component_clip_extended"] = "Cargador Extendido", + ["component_clip_drum"] = "Cargador Barril", + ["component_clip_box"] = "Caja de Cargador", - ['component_suppressor'] = 'Supresor', - ['component_compensator'] = 'Compensador', + ["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_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_suppressor"] = "Silenciador", + ["component_compensator"] = "Estabilizador", - ['component_flashlight'] = 'Linterna', - ['component_grip'] = 'Agarre', + ["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_barrel_default'] = 'Barril Por Defecto', - ['component_barrel_heavy'] = 'Barril Pesado', + ["component_flashlight"] = "Linterna", + ["component_grip"] = "Agarre", - ['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_barrel_default"] = "Barril Por Defecto", + ["component_barrel_heavy"] = "Barril Pesado", - ['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', + ["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", - -- 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)', + ["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 Tints - ['tint_default'] = 'Skin Por Defecto', - ['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.', + -- 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/[core]/es_extended/locales/fi.lua b/[core]/es_extended/locales/fi.lua index cec26e6c..9eff6471 100644 --- a/[core]/es_extended/locales/fi.lua +++ b/[core]/es_extended/locales/fi.lua @@ -1,228 +1,235 @@ -Locales['fi'] = { - -- Inventory - ['inventory'] = 'reppu %s / %s', - ['use'] = 'käytä', - ['give'] = 'anna', - ['remove'] = 'poista', - ['return'] = 'takaisin', - ['give_to'] = 'give to', - ['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'] = 'you gave 1x %s to %s', - ['gave_weapon_ammo'] = 'you gave ~o~%sx %s for %s to %s', - ['gave_weapon_withammo'] = 'you gave 1x %s with ~o~%sx %s to %s', - ['gave_weapon_hasalready'] = '%s already have an %s', - ['gave_weapon_noweapon'] = '%s does not have that weapon', - ['received_weapon'] = 'you received 1x %s from %s', - ['received_weapon_ammo'] = 'you received ~o~%sx %s for your %s from %s', - ['received_weapon_withammo'] = 'you received 1x %s with ~o~%sx %s from %s', - ['received_weapon_hasalready'] = '%s attempted to give you an %s, but you already have one', - ['received_weapon_noweapon'] = '%s attempted to give you ammo for an %s, but you don\'t have one', - ['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'] = 'you threw %sx %s', - ['threw_account'] = 'you threw $%s %s', - ['threw_weapon'] = 'you threw 1x %s', - ['threw_weapon_ammo'] = 'you threw 1x %s with ~o~%sx %s', - ['threw_weapon_already'] = 'you already carry the same weapon', - ['threw_cannot_pickup'] = 'you cannot pickup that because your inventory is full!', - ['threw_pickup_prompt'] = 'press E to pickup', +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'] = 'show Inventory', + -- Key mapping + ["keymap_showinventory"] = "Avaa reppu", - -- Salary related - ['received_salary'] = 'sinä vastaanotit palkkaa: $%s', - ['received_help'] = 'sinä vastaanotit valtion tukea: $%s', - ['company_nomoney'] = 'yritys jolle teet töitä on köyhä eikä voi maksaa palkkaasi', - ['received_paycheck'] = 'sait palkan', - ['bank'] = 'pankki', - ['account_bank'] = 'bank', - ['account_black_money'] = 'dirty Money', - ['account_money'] = 'cash', + -- 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', + ["act_imp"] = "Toiminto mahdoton", + ["in_vehicle"] = "Et voi antaa ajoneuvossa olevalle mitään", - -- Commands - ['command_car'] = 'spawn an vehicle', - ['command_car_car'] = 'vehicle spawn name or hash', - ['command_cardel'] = 'delete vehicle in proximity', - ['command_cardel_radius'] = 'optional, delete every vehicle within the specified radius', - ['command_clear'] = 'clear chat', - ['command_clearall'] = 'clear chat for all players', - ['command_clearinventory'] = 'clear player inventory', - ['command_clearloadout'] = 'clear a player loadout', - ['command_giveaccountmoney'] = 'give account money', - ['command_giveaccountmoney_account'] = 'valid account name', - ['command_giveaccountmoney_amount'] = 'amount to add', - ['command_giveaccountmoney_invalid'] = 'invalid account name', - ['command_giveitem'] = 'give an item to a player', - ['command_giveitem_item'] = 'item name', - ['command_giveitem_count'] = 'item count', - ['command_giveweapon'] = 'give a weapon to a player', - ['command_giveweapon_weapon'] = 'weapon name', - ['command_giveweapon_ammo'] = 'ammo count', - ['command_giveweapon_hasalready'] = 'player already has that weapon', - ['command_giveweaponcomponent'] = 'give weapon component', - ['command_giveweaponcomponent_component'] = 'component name', - ['command_giveweaponcomponent_invalid'] = 'invalid weapon component', - ['command_giveweaponcomponent_hasalready'] = 'player already has that weapon component', - ['command_giveweaponcomponent_missingweapon'] = 'player does not have that weapon', - ['command_save'] = 'save a player to database', - ['command_saveall'] = 'save all players to database', - ['command_setaccountmoney'] = 'set account money for a player', - ['command_setaccountmoney_amount'] = 'amount of money to set', - ['command_setcoords'] = 'teleport to coordinates', - ['command_setcoords_x'] = 'x axis', - ['command_setcoords_y'] = 'y axis', - ['command_setcoords_z'] = 'z axis', - ['command_setjob'] = 'set job for a player', - ['command_setjob_job'] = 'job name', - ['command_setjob_grade'] = 'job grade', - ['command_setjob_invalid'] = 'the job, grade or both are invalid', - ['command_setgroup'] = 'set player group', - ['command_setgroup_group'] = 'group name', - ['commanderror_argumentmismatch'] = 'argument count mismatch (passed %s, wanted %s)', - ['commanderror_argumentmismatch_number'] = 'argument #%s type mismatch (passed string, wanted number)', - ['commanderror_invaliditem'] = 'invalid item name', - ['commanderror_invalidweapon'] = 'invalid weapon', - ['commanderror_console'] = 'that command can not be run from console', - ['commanderror_invalidcommand'] = '/%s is not an valid command!', - ['commanderror_invalidplayerid'] = 'there is no player online matching that server id', - ['commandgeneric_playerid'] = 'player id', - ['command_giveammo_noweapon_found'] = '%s does not have that weapon', - ['command_giveammo_weapon'] = 'Weapon name', - ['command_giveammo_ammo'] = 'Ammo Quantity', + -- 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_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 työ', + ['command_setjob_job'] = 'Työ', + ['command_setjob_grade'] = 'Arvo', + ['command_setjob_invalid'] = 'Työ 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', + -- Locale settings + ["locale_digit_grouping_symbol"] = "", + ["locale_currency"] = "$%s", - -- 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'] = 'savu kranaatti', - ['weapon_bzgas'] = 'bz-kaasu', - ['weapon_molotov'] = 'polttopullo', - ['weapon_fireextinguisher'] = 'palosammutin', - ['weapon_petrolcan'] = 'jerrykannu', - ['weapon_ball'] = 'pallo', - ['weapon_snspistol'] = 'pienpistooli', - ['weapon_bottle'] = 'pullo', - ['weapon_gusenberg'] = 'tommy gun', - ['weapon_specialcarbine'] = 'G86C', - ['weapon_heavypistol'] = 'raskas pistooli', - ['weapon_bullpuprifle'] = 'bullpup kivääri', - ['weapon_dagger'] = 'tikari', - ['weapon_vintagepistol'] = 'vanha pistooli', - ['weapon_firework'] = 'ilotulitus', - ['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'] = 'valopyssy', - ['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'] = 'kakspiippunen 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 Revolver', + -- 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 Components - ['component_clip_default'] = 'default Clip', - ['component_clip_extended'] = 'extended Clip', - ['component_clip_drum'] = 'drum Magazine', - ['component_clip_box'] = 'box Magazine', - ['component_flashlight'] = 'flashlight', - ['component_scope'] = 'scope', - ['component_scope_advanced'] = 'advanced Scope', - ['component_suppressor'] = 'suppressor', - ['component_grip'] = 'grip', - ['component_luxary_finish'] = 'luxary Weapon Finish', + -- 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 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 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 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', + -- 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/[core]/es_extended/locales/fr.lua b/[core]/es_extended/locales/fr.lua index 8285116e..bc5289d5 100644 --- a/[core]/es_extended/locales/fr.lua +++ b/[core]/es_extended/locales/fr.lua @@ -1,232 +1,369 @@ -Locales['fr'] = { - -- Inventory - ['inventory'] = 'inventaire %s / %s', - ['use'] = 'utiliser', - ['give'] = 'donner', - ['remove'] = 'jeter', - ['return'] = 'retour', - ['give_to'] = 'donner à', - ['amount'] = 'quantité', - ['giveammo'] = 'donner munitions', - ['amountammo'] = 'nombre de munitions', - ['noammo'] = 'tu n\'as pas toutes ces munitions!', - ['gave_item'] = 'vous avez donné %sx %s à %s', - ['received_item'] = 'vous avez reçu %sx %s par %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à %s', - ['gave_weapon_noweapon'] = '%s n\'a pas cette arme', - ['received_weapon'] = 'vous recevez 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 %s, mais vous en aviez déjà un exemplaire', - ['received_weapon_noweapon'] = '%s tente de vous donner des munitions pour %s, mais vous n\'en avez pas', - ['gave_account_money'] = 'vous avez donné $%s (%s) à %s', - ['received_account_money'] = 'vous avez reçu $%s (%s) par %s', - ['amount_invalid'] = 'montant invalide', - ['players_nearby'] = 'aucun joueur à proximité', - ['ex_inv_lim'] = 'action impossible, depassement de la limite d\'inventaire pour %s', - ['imp_invalid_quantity'] = 'action impossible, ~r~quantité invalide', - ['imp_invalid_amount'] = 'action impossible, ~r~montant 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 portez déjà cette arme', - ['threw_cannot_pickup'] = 'vous ne pouvez pas ramasser ça votre inventaire est plein !', - ['threw_pickup_prompt'] = 'appuyez sur E pour ramasser', +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'] = 'montrer l\'inventaire', + -- 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 plus d\'argent pour vous payer!', - ['received_paycheck'] = 'paiement reçu', - ['bank'] = 'banque', - ['account_bank'] = 'banque', - ['account_black_money'] = 'argent sale', - ['account_money'] = 'espèces', + -- 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'] = 'Vous ne pouvez rien donner à quelqu\'un dans un véhicule', + ["act_imp"] = "Action impossible", + ["in_vehicle"] = "Action impossible, le joueur est dans un véhicule", - -- Commands - ['command_car'] = 'faire appaitre un véhicule', - ['command_car_car'] = 'nom ou hash du véhicule', - ['command_cardel'] = 'supprimer le véhicule à proximité', - ['command_cardel_radius'] = 'optionnel, supprime les véhicules dans un rayon spécifié', - ['command_clear'] = 'vider le chat', - ['command_clearall'] = 'vider le chat pour tous', - ['command_clearinventory'] = 'vider l\'inventaire d\'un joueur', - ['command_clearloadout'] = 'vider le loadout d\'un joueur', - ['command_giveaccountmoney'] = 'donner de l\'argent sur un compte', - ['command_giveaccountmoney_account'] = 'nom de compte valide', - ['command_giveaccountmoney_amount'] = 'quantité à ajouter', - ['command_giveaccountmoney_invalid'] = 'nom de compte invalide', - ['command_giveitem'] = 'donner un objet à un joueur', - ['command_giveitem_item'] = 'nom de l\'objet', - ['command_giveitem_count'] = 'quantité de l\'objet', - ['command_giveweapon'] = 'donner une arme à un joueur', - ['command_giveweapon_weapon'] = 'nom de l\'arme', - ['command_giveweapon_ammo'] = 'quantité de munitions', - ['command_giveweapon_hasalready'] = 'le joueur a déjà cette arme', - ['command_giveweaponcomponent'] = 'donner un accessoire d\'arme', - ['command_giveweaponcomponent_component'] = 'nom de l\'accessoire', - ['command_giveweaponcomponent_invalid'] = 'accessoire invalide', - ['command_giveweaponcomponent_hasalready'] = 'le joueur a déjà cet accessoire', - ['command_giveweaponcomponent_missingweapon'] = 'le joueur n\'a pas cette arme', - ['command_save'] = 'sauvegarder un joueur dans la base de données', - ['command_saveall'] = 'sauvegarder tous les joueurs dans la base de données', - ['command_setaccountmoney'] = 'définir la somme d\'argent pour un joueur', - ['command_setaccountmoney_amount'] = 'quantité d\'argent à définir', - ['command_setcoords'] = 'se téléporter aux coordonnées', - ['command_setcoords_x'] = 'axe X', - ['command_setcoords_y'] = 'axe Y', - ['command_setcoords_z'] = 'axe Z', - ['command_setjob'] = 'assigner job à un joueur', - ['command_setjob_job'] = 'nom du job', - ['command_setjob_grade'] = 'grade du job', - ['command_setjob_invalid'] = 'le job, le grade ou les deux sont invalides', - ['command_setgroup'] = 'assigner un groupe à un joueur', - ['command_setgroup_group'] = 'nom du groupe', - ['commanderror_argumentmismatch'] = 'argument count mismatch (passed %s, wanted %s)', - ['commanderror_argumentmismatch_number'] = 'argument #%s type mismatch (passed string, wanted number)', - ['commanderror_invaliditem'] = 'nom de l\'objet invalide', - ['commanderror_invalidweapon'] = 'arme invalide', - ['commanderror_console'] = 'cette commande ne peut pas être utilisée dans la console', - ['commanderror_invalidcommand'] = '/%s n\'est pas une commande valide!', - ['commanderror_invalidplayerid'] = 'il n\'ya aucun joueur avec cet ID en jeu', - ['commandgeneric_playerid'] = 'id joueur', - ['command_giveammo_noweapon_found'] = '%s does not have that weapon', - ['command_giveammo_weapon'] = 'Weapon name', - ['command_giveammo_ammo'] = 'Ammo Quantity', + -- 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_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_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é", - -- Locale settings - ['locale_digit_grouping_symbol'] = ' ', - ['locale_currency'] = '$%s', + ["noclip_message"] = "Le mode noclip a été %s", + ["enabled"] = "~g~activé~s~", + ["disabled"] = "~r~désactivé~s~", - -- Weapons - ['weapon_knife'] = 'couteau', - ['weapon_nightstick'] = 'matraque', - ['weapon_hammer'] = 'marteau', - ['weapon_bat'] = 'batte', - ['weapon_golfclub'] = 'club de golf', - ['weapon_crowbar'] = 'pied de biche', - ['weapon_pistol'] = 'pistolet', - ['weapon_combatpistol'] = 'pistolet de combat', - ['weapon_appistol'] = 'pistolet automatique', - ['weapon_pistol50'] = 'pistolet calibre 50', - ['weapon_microsmg'] = 'micro smg', - ['weapon_smg'] = 'smg', - ['weapon_assaultsmg'] = 'smg d\'assaut', - ['weapon_assaultrifle'] = 'fusil d\'assaut', - ['weapon_carbinerifle'] = 'carabine d\'assaut', - ['weapon_advancedrifle'] = 'fusil avancé', - ['weapon_mg'] = 'mitrailleuse', - ['weapon_combatmg'] = 'mitrailleuse de combat', - ['weapon_pumpshotgun'] = 'fusil à pompe', - ['weapon_sawnoffshotgun'] = 'carabine à canon scié', - ['weapon_assaultshotgun'] = 'carabine d\'assaut', - ['weapon_bullpupshotgun'] = 'carabine bullpup', - ['weapon_stungun'] = 'tazer', - ['weapon_sniperrifle'] = 'fusil de sniper', - ['weapon_heavysniper'] = 'fusil de sniper lourd', - ['weapon_grenadelauncher'] = 'lance-grenade', - ['weapon_rpg'] = 'lance-rocket', - ['weapon_minigun'] = 'minigun', - ['weapon_grenade'] = 'grenade', - ['weapon_stickybomb'] = 'bombe collante', - ['weapon_smokegrenade'] = 'grenade fumigène', - ['weapon_bzgas'] = 'grenade à gaz bz', - ['weapon_molotov'] = 'cocktail molotov', - ['weapon_fireextinguisher'] = 'extincteur', - ['weapon_petrolcan'] = 'jerrican d\'essence', - ['weapon_ball'] = 'balle', - ['weapon_snspistol'] = 'pistolet sns', - ['weapon_bottle'] = 'bouteille', - ['weapon_gusenberg'] = 'balayeuse gusenberg', - ['weapon_specialcarbine'] = 'carabine spéciale', - ['weapon_heavypistol'] = 'pistolet lourd', - ['weapon_bullpuprifle'] = 'fusil bullpup', - ['weapon_dagger'] = 'poignard', - ['weapon_vintagepistol'] = 'pistolet vintage', - ['weapon_firework'] = 'feu d\'artifice', - ['weapon_musket'] = 'mousquet', - ['weapon_heavyshotgun'] = 'fusil à pompe lourd', - ['weapon_marksmanrifle'] = 'fusil marksman', - ['weapon_hominglauncher'] = 'lance tête-chercheuse', - ['weapon_proxmine'] = 'mine de proximité', - ['weapon_snowball'] = 'boule de neige', - ['weapon_flaregun'] = 'lance fusée de détresse', - ['weapon_combatpdw'] = 'arme de défense personnelle', - ['weapon_marksmanpistol'] = 'pistolet marksman', - ['weapon_knuckle'] = 'poing américain', - ['weapon_hatchet'] = 'hachette', - ['weapon_railgun'] = 'canon éléctrique', - ['weapon_machete'] = 'machette', - ['weapon_machinepistol'] = 'pistolet mitrailleur', - ['weapon_switchblade'] = 'couteau à cran d\'arrêt', - ['weapon_revolver'] = 'revolver', - ['weapon_dbshotgun'] = 'fusil à pompe double canon', - ['weapon_compactrifle'] = 'fusil compact', - ['weapon_autoshotgun'] = 'fusil à pompe automatique', - ['weapon_battleaxe'] = 'hache de combat', - ['weapon_compactlauncher'] = 'lanceur compact', - ['weapon_minismg'] = 'mini smg', - ['weapon_pipebomb'] = 'bombe tuyau', - ['weapon_poolcue'] = 'queue de billard', - ['weapon_wrench'] = 'clé', - ['weapon_flashlight'] = 'lampe torche', - ['gadget_parachute'] = 'parachute', - ['weapon_flare'] = 'fusée de détresse', - ['weapon_doubleaction'] = 'revolver double action', + -- Locale settings + ["locale_digit_grouping_symbol"] = " ", + ["locale_currency"] = "$%s", - -- Weapon Components - ['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_flashlight'] = 'torche', - ['component_scope'] = 'viseur', - ['component_scope_advanced'] = 'lunette', - ['component_suppressor'] = 'réducteur de son', - ['component_grip'] = 'poignée', - ['component_luxary_finish'] = 'finition de luxe', + -- Weapons - -- 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)', + -- 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", - -- 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', - - -- Duty related - ['stopped_duty'] = 'Vous êtes maintenant hors-service.', - ['started_duty'] = 'Vous êtes maintenant en-service.', + -- 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", + + -- 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", + + -- 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/[core]/es_extended/locales/hu.lua b/[core]/es_extended/locales/hu.lua index f909601a..b5336610 100644 --- a/[core]/es_extended/locales/hu.lua +++ b/[core]/es_extended/locales/hu.lua @@ -64,7 +64,7 @@ Locales["hu"] = { ["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_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", @@ -82,7 +82,7 @@ Locales["hu"] = { ["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_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", @@ -99,21 +99,22 @@ Locales["hu"] = { ["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', + ["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~', + ["noclip_message"] = "Noclip %s", + ["enabled"] = "~g~engedélyezve~s~", + ["disabled"] = "~r~letiltva~s~", -- Locale settings ["locale_digit_grouping_symbol"] = ",", @@ -222,6 +223,12 @@ Locales["hu"] = { ["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", diff --git a/[core]/es_extended/locales/it.lua b/[core]/es_extended/locales/it.lua index 0bdc015e..67b59bb7 100644 --- a/[core]/es_extended/locales/it.lua +++ b/[core]/es_extended/locales/it.lua @@ -1,365 +1,372 @@ -Locales['it'] = { - -- Inventory - ['inventory'] = 'Inventario ( Peso %s / %s )', - ['use'] = 'Usa', - ['give'] = 'Dai', - ['remove'] = 'Butta', - ['return'] = 'Ritorna', - ['give_to'] = 'Dai a', - ['amount'] = 'Quantità', - ['giveammo'] = 'Dai munizioni', - ['amountammo'] = 'Quantità munizioni', - ['noammo'] = 'Non abbastanza!', - ['gave_item'] = 'Dando %sx %s a %s', - ['received_item'] = 'Ricevuto %sx %s da %s', - ['gave_weapon'] = 'Dando %s a %s', - ['gave_weapon_ammo'] = 'Dando ~o~%sx %s for %s to %s', - ['gave_weapon_withammo'] = 'Dando %s con ~o~%sx %s a %s', - ['gave_weapon_hasalready'] = '%s possiede già %s', - ['gave_weapon_noweapon'] = '%s non ha quell\' arma', - ['received_weapon'] = 'Ricevuto %s da %s', - ['received_weapon_ammo'] = 'Ricevuto ~o~%sx %s per il tuo %s da %s', - ['received_weapon_withammo'] = 'Ricevuto %s con ~o~%sx %s per %s', - ['received_weapon_hasalready'] = '%s ha tentato di darti %s, ma hai già l\'arma', - ['received_weapon_noweapon'] = '%s ha tentato di darti munizioni per %s, ma non hai l\'arma', - ['gave_account_money'] = 'Dando $%s (%s) a %s', - ['received_account_money'] = 'Ricevuto $%s (%s) da %s', - ['amount_invalid'] = 'Quantità non valida', - ['players_nearby'] = 'Nessun giocatore vicino', - ['ex_inv_lim'] = 'Non puoi farlo, eccedi il peso di %s', - ['imp_invalid_quantity'] = 'Non puoi farlo, quantità non valida', - ['imp_invalid_amount'] = 'Non puoi farlo, importo non valido', - ['threw_standard'] = 'Gettando %sx %s', - ['threw_account'] = 'Gettando $%s %s', - ['threw_weapon'] = 'Gettando %s', - ['threw_weapon_ammo'] = 'Gettando %s con ~o~%sx %s', - ['threw_weapon_already'] = 'Hai gia quest\' arma', - ['threw_cannot_pickup'] = 'Inventario pieno, non puoi raccogliere!', - ['threw_pickup_prompt'] = 'Premi E per raccogliere', +Locales["it"] = { + -- Inventory + ["inventory"] = "Inventario ( Peso %s / %s )", + ["use"] = "Usa", + ["give"] = "Dai", + ["remove"] = "Butta", + ["return"] = "Ritorna", + ["give_to"] = "Dai a", + ["amount"] = "Quantità", + ["giveammo"] = "Dai munizioni", + ["amountammo"] = "Quantità munizioni", + ["noammo"] = "Non abbastanza!", + ["gave_item"] = "Dando %sx %s a %s", + ["received_item"] = "Ricevuto %sx %s da %s", + ["gave_weapon"] = "Dando %s a %s", + ["gave_weapon_ammo"] = "Dando ~o~%sx %s for %s to %s", + ["gave_weapon_withammo"] = "Dando %s con ~o~%sx %s a %s", + ["gave_weapon_hasalready"] = "%s possiede già %s", + ["gave_weapon_noweapon"] = "%s non ha quell' arma", + ["received_weapon"] = "Ricevuto %s da %s", + ["received_weapon_ammo"] = "Ricevuto ~o~%sx %s per il tuo %s da %s", + ["received_weapon_withammo"] = "Ricevuto %s con ~o~%sx %s per %s", + ["received_weapon_hasalready"] = "%s ha tentato di darti %s, ma hai già l'arma", + ["received_weapon_noweapon"] = "%s ha tentato di darti munizioni per %s, ma non hai l'arma", + ["gave_account_money"] = "Dando $%s (%s) a %s", + ["received_account_money"] = "Ricevuto $%s (%s) da %s", + ["amount_invalid"] = "Quantità non valida", + ["players_nearby"] = "Nessun giocatore vicino", + ["ex_inv_lim"] = "Non puoi farlo, eccedi il peso di %s", + ["imp_invalid_quantity"] = "Non puoi farlo, quantità non valida", + ["imp_invalid_amount"] = "Non puoi farlo, importo non valido", + ["threw_standard"] = "Gettando %sx %s", + ["threw_account"] = "Gettando $%s %s", + ["threw_weapon"] = "Gettando %s", + ["threw_weapon_ammo"] = "Gettando %s con ~o~%sx %s", + ["threw_weapon_already"] = "Hai gia quest' arma", + ["threw_cannot_pickup"] = "Inventario pieno, non puoi raccogliere!", + ["threw_pickup_prompt"] = "Premi E per raccogliere", - -- Key mapping - ['keymap_showinventory'] = 'Apri inventario', + -- Key mapping + ["keymap_showinventory"] = "Apri inventario", - -- Salary related - ['received_salary'] = 'Sei stato pagato: $%s', - ['received_help'] = 'Hai ricevuto il reddito di cittadinanza: $%s', - ['company_nomoney'] = 'La tua compagnia è troppo povera per pagarti', - ['received_paycheck'] = 'Ricveuto stipendio', - ['bank'] = 'Banca', - ['account_bank'] = 'Conto', - ['account_black_money'] = 'Soldi sporchi', - ['account_money'] = 'Contanti', + -- Salary related + ["received_salary"] = "Sei stato pagato: $%s", + ["received_help"] = "Hai ricevuto il reddito di cittadinanza: $%s", + ["company_nomoney"] = "La tua compagnia è troppo povera per pagarti", + ["received_paycheck"] = "Ricveuto stipendio", + ["bank"] = "Banca", + ["account_bank"] = "Conto", + ["account_black_money"] = "Soldi sporchi", + ["account_money"] = "Contanti", - ['act_imp'] = 'Non puoi farlo', - ['in_vehicle'] = 'Non puoi farlo, il giocatore è in un veicolo', + ["act_imp"] = "Non puoi farlo", + ["in_vehicle"] = "Non puoi farlo, il giocatore è in un veicolo", - -- Commands - ['command_bring'] = 'Porta il giocatore da te', - ['command_car'] = 'Spawna un veicolo', - ['command_car_car'] = 'Modello o hash veicolo', - ['command_cardel'] = 'Rimuovi i veicoli nelle prossimità', - ['command_cardel_radius'] = 'Rimuovi i veicoli nel raggio specificato', - ['command_clear'] = 'Pulisci la chat testuale', - ['command_clearall'] = 'Pulisci la chat testuale per tutti i giocatori', - ['command_clearinventory'] = 'Rimuovi tutti gli oggetti dall\' inventario del giocatore', - ['command_clearloadout'] = 'Rimuovi tutte le armi dal loadout del giocatore', - ['command_freeze'] = 'Blocca un giocatore', - ['command_unfreeze'] = 'Sblocca un giocatore', - ['command_giveaccountmoney'] = 'Dai soldi a un\' account specifico', - ['command_giveaccountmoney_account'] = 'Account a cui aggiungere', - ['command_giveaccountmoney_amount'] = 'Quantità da aggiungere', - ['command_giveaccountmoney_invalid'] = 'Nome account non valido', - ['command_giveitem'] = 'Dai un oggetto ad un giocatore', - ['command_giveitem_item'] = 'Nome oggetto', - ['command_giveitem_count'] = 'Quantità', - ['command_giveweapon'] = 'Dai un\' arma ad un giocatore', - ['command_giveweapon_weapon'] = 'Nome arma', - ['command_giveweapon_ammo'] = 'Quantità munizioni', - ['command_giveweapon_hasalready'] = 'Il giocatore ha già l\'arma', - ['command_giveweaponcomponent'] = 'Dai un componente arma ad un giocatore', - ['command_giveweaponcomponent_component'] = 'Nome componente', - ['command_giveweaponcomponent_invalid'] = 'Componente arma non valido', - ['command_giveweaponcomponent_hasalready'] = 'Il giocatore ha già questo componente arma', - ['command_giveweaponcomponent_missingweapon'] = 'Il giocatore non ha l\'arma', - ['command_goto'] = 'Teletrasportati da un giocatore', - ['command_kill'] = 'Uccidi un giocatore', - ['command_save'] = 'Salva forzatamente i dati di un giocatore', - ['command_saveall'] = 'Salva forzatamente i dati di tutti igiocatoria', - ['command_setaccountmoney'] = 'Aggiorna i soldi dentro un account specifico', - ['command_setaccountmoney_amount'] = 'Quantità', - ['command_setcoords'] = 'Teletrasportati a delle coordinate specifiche', - ['command_setcoords_x'] = 'Valore X', - ['command_setcoords_y'] = 'Valore Y', - ['command_setcoords_z'] = 'Valore Z', - ['command_setjob'] = 'Setta lavoro ad un giocatore', - ['command_setjob_job'] = 'Nome', - ['command_setjob_grade'] = 'Grado lavoro', - ['command_setjob_invalid'] = 'Il lavoro, grado o entrambi sono errati', - ['command_setgroup'] = 'Setta un gruppo di permessi ad un giocatore', - ['command_setgroup_group'] = 'Nome del gruppo', - ['commanderror_argumentmismatch'] = 'Conta argomenti non valida (passati %s, richiesti %s)', - ['commanderror_argumentmismatch_number'] = 'Argomento #%s di tipologia errata (passato testo, richiesto numero)', - ['commanderror_invaliditem'] = 'Oggetto non valido', - ['commanderror_invalidweapon'] = 'Arma non valida', - ['commanderror_console'] = 'Comando non eseguibile dalla console', - ['commanderror_invalidcommand'] = 'Comando non valido - /%s', - ['commanderror_invalidplayerid'] = 'Il giocatore specificato non è online', - ['commandgeneric_playerid'] = 'Id server del giocatore', - ['command_giveammo_noweapon_found'] = '%s non ha quell\' arma', - ['command_giveammo_weapon'] = 'Nome arma', - ['command_giveammo_ammo'] = 'Quantità munizioni', - ['tpm_nowaypoint'] = 'Nessuna meta impostata', - ['tpm_success'] = 'Teletrasportato con successo', + -- Commands + ['command_bring'] = 'Porta il giocatore da te', + ['command_car'] = 'Spawna un veicolo', + ['command_car_car'] = 'Modello o hash veicolo', + ['command_cardel'] = 'Rimuovi i veicoli nelle prossimità', + ['command_cardel_radius'] = 'Rimuovi i veicoli nel raggio specificato', + ['command_clear'] = 'Pulisci la chat testuale', + ['command_clearall'] = 'Pulisci la chat testuale per tutti i giocatori', + ['command_clearinventory'] = 'Rimuovi tutti gli oggetti dall\' inventario del giocatore', + ['command_clearloadout'] = 'Rimuovi tutte le armi dal loadout del giocatore', + ['command_freeze'] = 'Blocca un giocatore', + ['command_unfreeze'] = 'Sblocca un giocatore', + ['command_giveaccountmoney'] = 'Dai soldi a un\' account specifico', + ['command_giveaccountmoney_account'] = 'Account a cui aggiungere', + ['command_giveaccountmoney_amount'] = 'Quantità da aggiungere', + ['command_giveaccountmoney_invalid'] = 'Nome account non valido', + ['command_giveitem'] = 'Dai un oggetto ad un giocatore', + ['command_giveitem_item'] = 'Nome oggetto', + ['command_giveitem_count'] = 'Quantità', + ['command_giveweapon'] = 'Dai un\' arma ad un giocatore', + ['command_giveweapon_weapon'] = 'Nome arma', + ['command_giveweapon_ammo'] = 'Quantità munizioni', + ['command_giveweapon_hasalready'] = 'Il giocatore ha già l\'arma', + ['command_giveweaponcomponent'] = 'Dai un componente arma ad un giocatore', + ['command_giveweaponcomponent_component'] = 'Nome componente', + ['command_giveweaponcomponent_invalid'] = 'Componente arma non valido', + ['command_giveweaponcomponent_hasalready'] = 'Il giocatore ha già questo componente arma', + ['command_giveweaponcomponent_missingweapon'] = 'Il giocatore non ha l\'arma', + ['command_goto'] = 'Teletrasportati da un giocatore', + ['command_kill'] = 'Uccidi un giocatore', + ['command_save'] = 'Salva forzatamente i dati di un giocatore', + ['command_saveall'] = 'Salva forzatamente i dati di tutti igiocatoria', + ['command_setaccountmoney'] = 'Aggiorna i soldi dentro un account specifico', + ['command_setaccountmoney_amount'] = 'Quantità', + ['command_setcoords'] = 'Teletrasportati a delle coordinate specifiche', + ['command_setcoords_x'] = 'Valore X', + ['command_setcoords_y'] = 'Valore Y', + ['command_setcoords_z'] = 'Valore Z', + ['command_setjob'] = 'Setta lavoro ad un giocatore', + ['command_setjob_job'] = 'Nome', + ['command_setjob_grade'] = 'Grado lavoro', + ['command_setjob_invalid'] = 'Il lavoro, grado o entrambi sono errati', + ['command_setgroup'] = 'Setta un gruppo di permessi ad un giocatore', + ['command_setgroup_group'] = 'Nome del gruppo', + ['commanderror_argumentmismatch'] = 'Conta argomenti non valida (passati %s, richiesti %s)', + ['commanderror_argumentmismatch_number'] = 'Argomento #%s di tipologia errata (passato testo, richiesto numero)', + ['commanderror_argumentmismatch_string'] = 'Invalid Argument #%s data type (passed number, wanted string)', + ['commanderror_invaliditem'] = 'Oggetto non valido', + ['commanderror_invalidweapon'] = 'Arma non valida', + ['commanderror_console'] = 'Comando non eseguibile dalla console', + ['commanderror_invalidcommand'] = 'Comando non valido - /%s', + ['commanderror_invalidplayerid'] = 'Il giocatore specificato non è online', + ['commandgeneric_playerid'] = 'Id server del giocatore', + ['command_giveammo_noweapon_found'] = '%s non ha quell\' arma', + ['command_giveammo_weapon'] = 'Nome arma', + ['command_giveammo_ammo'] = 'Quantità munizioni', + ['tpm_nowaypoint'] = 'Nessuna meta impostata', + ['tpm_success'] = 'Teletrasportato con successo', - ['noclip_message'] = 'Noclip %s', - ['enabled'] = '~g~abilitato~s~', - ['disabled'] = '~r~disabilitato~s~', + ['noclip_message'] = 'Noclip %s', + ['enabled'] = '~g~abilitato~s~', + ['disabled'] = '~r~disabilitato~s~', - -- Locale settings - ['locale_digit_grouping_symbol'] = ',', - ['locale_currency'] = '$%s', + -- Locale settings + ["locale_digit_grouping_symbol"] = ",", + ["locale_currency"] = "$%s", - -- Weapons + -- Weapons - -- Melee - ['weapon_dagger'] = 'Pugnale Antico', - ['weapon_bat'] = 'Mazza', - ['weapon_battleaxe'] = 'Ascia', - ['weapon_bottle'] = 'Bottiglia', - ['weapon_crowbar'] = 'Piede di porco', - ['weapon_flashlight'] = 'Torcia', - ['weapon_golfclub'] = 'Mazza da golf', - ['weapon_hammer'] = 'Martello', - ['weapon_hatchet'] = 'Accetta', - ['weapon_knife'] = 'Coltello', - ['weapon_knuckle'] = 'Tirapugni', - ['weapon_machete'] = 'Machete', - ['weapon_nightstick'] = 'Manganello', - ['weapon_wrench'] = 'Tubo', - ['weapon_poolcue'] = 'Stecca', - ['weapon_stone_hatchet'] = 'Accetta di pietra', - ['weapon_switchblade'] = 'Coltello a serramanico', + -- Melee + ["weapon_dagger"] = "Pugnale Antico", + ["weapon_bat"] = "Mazza", + ["weapon_battleaxe"] = "Ascia", + ["weapon_bottle"] = "Bottiglia", + ["weapon_crowbar"] = "Piede di porco", + ["weapon_flashlight"] = "Torcia", + ["weapon_golfclub"] = "Mazza da golf", + ["weapon_hammer"] = "Martello", + ["weapon_hatchet"] = "Accetta", + ["weapon_knife"] = "Coltello", + ["weapon_knuckle"] = "Tirapugni", + ["weapon_machete"] = "Machete", + ["weapon_nightstick"] = "Manganello", + ["weapon_wrench"] = "Tubo", + ["weapon_poolcue"] = "Stecca", + ["weapon_stone_hatchet"] = "Accetta di pietra", + ["weapon_switchblade"] = "Coltello a serramanico", - -- Handguns - ['weapon_appistol'] = 'Pistola AP', - ['weapon_ceramicpistol'] = 'Pistola di ceramica', - ['weapon_combatpistol'] = 'Pistola da combattimento', - ['weapon_doubleaction'] = 'Revolver doppia azione', - ['weapon_navyrevolver'] = 'Revolver Marina', - ['weapon_flaregun'] = 'Pistola lanciarazzi', - ['weapon_gadgetpistol'] = 'Pistola Gadget', - ['weapon_heavypistol'] = 'Pistola pesante', - ['weapon_revolver'] = 'Revolver pesante', - ['weapon_revolver_mk2'] = 'Revolver pesante MK2', - ['weapon_marksmanpistol'] = 'Pistola da tiratore', - ['weapon_pistol'] = 'Pistola', - ['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-Atomizzatore', - ['weapon_vintagepistol'] = 'Pistola Vintage', + -- Handguns + ["weapon_appistol"] = "Pistola AP", + ["weapon_ceramicpistol"] = "Pistola di ceramica", + ["weapon_combatpistol"] = "Pistola da combattimento", + ["weapon_doubleaction"] = "Revolver doppia azione", + ["weapon_navyrevolver"] = "Revolver Marina", + ["weapon_flaregun"] = "Pistola lanciarazzi", + ["weapon_gadgetpistol"] = "Pistola Gadget", + ["weapon_heavypistol"] = "Pistola pesante", + ["weapon_revolver"] = "Revolver pesante", + ["weapon_revolver_mk2"] = "Revolver pesante MK2", + ["weapon_marksmanpistol"] = "Pistola da tiratore", + ["weapon_pistol"] = "Pistola", + ["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-Atomizzatore", + ["weapon_vintagepistol"] = "Pistola Vintage", - -- Shotguns - ['weapon_assaultshotgun'] = 'Fucile a pompa d\'assalto', - ['weapon_autoshotgun'] = 'Fucile a pompa automatico', - ['weapon_bullpupshotgun'] = 'Fucile a pompa Bullup', - ['weapon_combatshotgun'] = 'Fucile a pompa da combattimento', - ['weapon_dbshotgun'] = 'Fucile a pompa doppia canna', - ['weapon_heavyshotgun'] = 'Fucile a pompa pesante', - ['weapon_musket'] = 'Moschetto', - ['weapon_pumpshotgun'] = 'Fucile a pompa', - ['weapon_pumpshotgun_mk2'] = 'Fucile a pompa MK2', - ['weapon_sawnoffshotgun'] = 'Fucile a canne mozza', + -- Shotguns + ["weapon_assaultshotgun"] = "Fucile a pompa d'assalto", + ["weapon_autoshotgun"] = "Fucile a pompa automatico", + ["weapon_bullpupshotgun"] = "Fucile a pompa Bullup", + ["weapon_combatshotgun"] = "Fucile a pompa da combattimento", + ["weapon_dbshotgun"] = "Fucile a pompa doppia canna", + ["weapon_heavyshotgun"] = "Fucile a pompa pesante", + ["weapon_musket"] = "Moschetto", + ["weapon_pumpshotgun"] = "Fucile a pompa", + ["weapon_pumpshotgun_mk2"] = "Fucile a pompa MK2", + ["weapon_sawnoffshotgun"] = "Fucile a canne mozza", - -- SMG & LMG - ['weapon_assaultsmg'] = 'SMG d\'assalto', - ['weapon_combatmg'] = 'MG da combattimento', - ['weapon_combatmg_mk2'] = 'MG da combattimento MK2', - ['weapon_combatpdw'] = 'PDW da combattimento', - ['weapon_gusenberg'] = 'Mitragliatrice Gusenberg', - ['weapon_machinepistol'] = 'Pistola mitragliatrice', - ['weapon_mg'] = 'MG', - ['weapon_microsmg'] = 'Micro SMG', - ['weapon_minismg'] = 'Mini SMG', - ['weapon_smg'] = 'SMG', - ['weapon_smg_mk2'] = 'SMG MK2', - ['weapon_raycarbine'] = 'Hellbringer infernale', + -- SMG & LMG + ["weapon_assaultsmg"] = "SMG d'assalto", + ["weapon_combatmg"] = "MG da combattimento", + ["weapon_combatmg_mk2"] = "MG da combattimento MK2", + ["weapon_combatpdw"] = "PDW da combattimento", + ["weapon_gusenberg"] = "Mitragliatrice Gusenberg", + ["weapon_machinepistol"] = "Pistola mitragliatrice", + ["weapon_mg"] = "MG", + ["weapon_microsmg"] = "Micro SMG", + ["weapon_minismg"] = "Mini SMG", + ["weapon_smg"] = "SMG", + ["weapon_smg_mk2"] = "SMG MK2", + ["weapon_raycarbine"] = "Hellbringer infernale", - -- Rifles - ['weapon_advancedrifle'] = 'Fucile avanzato', - ['weapon_assaultrifle'] = 'Fucile d\'assalto', - ['weapon_assaultrifle_mk2'] = 'Fucile d\' assalto MK2', - ['weapon_bullpuprifle'] = 'Fucile Bullpup', - ['weapon_bullpuprifle_mk2'] = 'Fucile Bullpup MK2', - ['weapon_carbinerifle'] = 'Carabina', - ['weapon_carbinerifle_mk2'] = 'Carbine MK2', - ['weapon_compactrifle'] = 'Fucile compatto', - ['weapon_militaryrifle'] = 'Fucile militare', - ['weapon_specialcarbine'] = 'Carabina speciale', - ['weapon_specialcarbine_mk2'] = 'Carabina speciale MK2', + -- Rifles + ["weapon_advancedrifle"] = "Fucile avanzato", + ["weapon_assaultrifle"] = "Fucile d'assalto", + ["weapon_assaultrifle_mk2"] = "Fucile d' assalto MK2", + ["weapon_bullpuprifle"] = "Fucile Bullpup", + ["weapon_bullpuprifle_mk2"] = "Fucile Bullpup MK2", + ["weapon_carbinerifle"] = "Carabina", + ["weapon_carbinerifle_mk2"] = "Carbine MK2", + ["weapon_compactrifle"] = "Fucile compatto", + ["weapon_militaryrifle"] = "Fucile militare", + ["weapon_specialcarbine"] = "Carabina speciale", + ["weapon_specialcarbine_mk2"] = "Carabina speciale MK2", - -- Sniper - ['weapon_heavysniper'] = 'Cecchino pesante', - ['weapon_heavysniper_mk2'] = 'Cecchino pesante MK2', - ['weapon_marksmanrifle'] = 'Fucile da tiratore', - ['weapon_marksmanrifle_mk2'] = 'Fucile da tiratore MK2', - ['weapon_sniperrifle'] = 'Cecchino', + -- Sniper + ["weapon_heavysniper"] = "Cecchino pesante", + ["weapon_heavysniper_mk2"] = "Cecchino pesante MK2", + ["weapon_marksmanrifle"] = "Fucile da tiratore", + ["weapon_marksmanrifle_mk2"] = "Fucile da tiratore MK2", + ["weapon_sniperrifle"] = "Cecchino", - -- Heavy / Launchers - ['weapon_compactlauncher'] = 'Lanciagranate compatto', - ['weapon_firework'] = 'Cannone pirotecnico', - ['weapon_grenadelauncher'] = 'Lanciagranate', - ['weapon_hominglauncher'] = 'Lanciarazzi a tracciamento', - ['weapon_minigun'] = 'Minigun', - ['weapon_railgun'] = 'Railgun', - ['weapon_rpg'] = 'Lanciarazzi', - ['weapon_rayminigun'] = 'Widowmaker', + -- Heavy / Launchers + ["weapon_compactlauncher"] = "Lanciagranate compatto", + ["weapon_firework"] = "Cannone pirotecnico", + ["weapon_grenadelauncher"] = "Lanciagranate", + ["weapon_hominglauncher"] = "Lanciarazzi a tracciamento", + ["weapon_minigun"] = "Minigun", + ["weapon_railgun"] = "Railgun", + ["weapon_rpg"] = "Lanciarazzi", + ["weapon_rayminigun"] = "Widowmaker", - -- Criminal Enterprises DLC - ['weapon_metaldetector'] = 'Metal Detector', - ['weapon_precisionrifle'] = 'Fucile di precisione', - ['weapon_tactilerifle'] = 'Carabina di servizio', + -- Criminal Enterprises DLC + ["weapon_metaldetector"] = "Metal Detector", + ["weapon_precisionrifle"] = "Fucile di precisione", + ["weapon_tactilerifle"] = "Carabina di servizio", - -- Thrown - ['weapon_ball'] = 'Palla', - ['weapon_bzgas'] = 'BZ Gas', - ['weapon_flare'] = 'Flare', - ['weapon_grenade'] = 'Granata', - ['weapon_petrolcan'] = 'Tanica', - ['weapon_hazardcan'] = 'Tanica pericolosa', - ['weapon_molotov'] = 'Molotov', - ['weapon_proxmine'] = 'Mina di prossimità', - ['weapon_pipebomb'] = 'Esplosivo plastico', - ['weapon_snowball'] = 'Palla di neve', - ['weapon_stickybomb'] = 'Bomba adesiva', - ['weapon_smokegrenade'] = 'Gas lacrimogeno', + -- 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 - -- Special - ['weapon_fireextinguisher'] = 'Estintore', - ['weapon_digiscanner'] = 'Scanner digitale', - ['weapon_garbagebag'] = 'Sacco della spazzatura', - ['weapon_handcuffs'] = 'Manette', - ['gadget_nightvision'] = 'Visore termico', - ['gadget_parachute'] = 'Paracadute', + -- Thrown + ["weapon_ball"] = "Palla", + ["weapon_bzgas"] = "BZ Gas", + ["weapon_flare"] = "Flare", + ["weapon_grenade"] = "Granata", + ["weapon_petrolcan"] = "Tanica", + ["weapon_hazardcan"] = "Tanica pericolosa", + ["weapon_molotov"] = "Molotov", + ["weapon_proxmine"] = "Mina di prossimità", + ["weapon_pipebomb"] = "Esplosivo plastico", + ["weapon_snowball"] = "Palla di neve", + ["weapon_stickybomb"] = "Bomba adesiva", + ["weapon_smokegrenade"] = "Gas lacrimogeno", - -- Weapon Components - ['component_knuckle_base'] = 'Modello basa', - ['component_knuckle_pimp'] = 'il Pappone', - ['component_knuckle_ballas'] = 'i Ballas', - ['component_knuckle_dollar'] = 'il Riccone', - ['component_knuckle_diamond'] = 'la Roccia', - ['component_knuckle_hate'] = 'l\' Hater', - ['component_knuckle_love'] = 'l\' Amante', - ['component_knuckle_player'] = 'il Giocatore', - ['component_knuckle_king'] = 'il Re', - ['component_knuckle_vagos'] = 'i Vagos', + -- Special + ["weapon_fireextinguisher"] = "Estintore", + ["weapon_digiscanner"] = "Scanner digitale", + ["weapon_garbagebag"] = "Sacco della spazzatura", + ["weapon_handcuffs"] = "Manette", + ["gadget_nightvision"] = "Visore termico", + ["gadget_parachute"] = "Paracadute", - ['component_luxary_finish'] = 'rifinitura di lusso', + -- Weapon Components + ["component_knuckle_base"] = "Modello basa", + ["component_knuckle_pimp"] = "il Pappone", + ["component_knuckle_ballas"] = "i Ballas", + ["component_knuckle_dollar"] = "il Riccone", + ["component_knuckle_diamond"] = "la Roccia", + ["component_knuckle_hate"] = "l' Hater", + ["component_knuckle_love"] = "l' Amante", + ["component_knuckle_player"] = "il Giocatore", + ["component_knuckle_king"] = "il Re", + ["component_knuckle_vagos"] = "i Vagos", - ['component_handle_default'] = 'impugnatura base', - ['component_handle_vip'] = 'impugnatura VIP', - ['component_handle_bodyguard'] = 'impugnatura guardia del corpo', + ["component_luxary_finish"] = "rifinitura di lusso", - ['component_vip_finish'] = 'rifinitura VIP', - ['component_bodyguard_finish'] = 'rifinitura Guardia del corpo', + ["component_handle_default"] = "impugnatura base", + ["component_handle_vip"] = "impugnatura VIP", + ["component_handle_bodyguard"] = "impugnatura guardia del corpo", - ['component_camo_finish'] = 'mimetica Digitale', - ['component_camo_finish2'] = 'mimetica Cespuglio', - ['component_camo_finish3'] = 'mimetica Legnosa', - ['component_camo_finish4'] = 'mimetica Teschio', - ['component_camo_finish5'] = 'mimetica Sessanta Nove', - ['component_camo_finish6'] = 'mimetica Perseo', - ['component_camo_finish7'] = 'mimetica Leopardata', - ['component_camo_finish8'] = 'mimetica Zebra', - ['component_camo_finish9'] = 'mimetica Geometrica', - ['component_camo_finish10'] = 'mimetica Boom', - ['component_camo_finish11'] = 'mimetica Patriottica', + ["component_vip_finish"] = "rifinitura VIP", + ["component_bodyguard_finish"] = "rifinitura Guardia del corpo", - ['component_camo_slide_finish'] = 'mimetica Digitale Slide', - ['component_camo_slide_finish2'] = 'mimetica Cespuglio Slide', - ['component_camo_slide_finish3'] = 'mimetica Legnosa Slide', - ['component_camo_slide_finish4'] = 'mimetica Teschio Slide', - ['component_camo_slide_finish5'] = 'mimetica Sessanta Nove Slide', - ['component_camo_slide_finish6'] = 'mimetica Perseo Slide', - ['component_camo_slide_finish7'] = 'mimetica Leopardata Slide', - ['component_camo_slide_finish8'] = 'mimetica Zebra Slide', - ['component_camo_slide_finish9'] = 'mimetica Geometrica Slide', - ['component_camo_slide_finish10'] = 'mimetica Boom Slide', - ['component_camo_slide_finish11'] = 'mimetica Patriottica Slide', + ["component_camo_finish"] = "mimetica Digitale", + ["component_camo_finish2"] = "mimetica Cespuglio", + ["component_camo_finish3"] = "mimetica Legnosa", + ["component_camo_finish4"] = "mimetica Teschio", + ["component_camo_finish5"] = "mimetica Sessanta Nove", + ["component_camo_finish6"] = "mimetica Perseo", + ["component_camo_finish7"] = "mimetica Leopardata", + ["component_camo_finish8"] = "mimetica Zebra", + ["component_camo_finish9"] = "mimetica Geometrica", + ["component_camo_finish10"] = "mimetica Boom", + ["component_camo_finish11"] = "mimetica Patriottica", - ['component_clip_default'] = 'caricatore Standard', - ['component_clip_extended'] = 'caricatore Esteso', - ['component_clip_drum'] = 'caricatore A Batteria', - ['component_clip_box'] = 'caricatore A Scatola', + ["component_camo_slide_finish"] = "mimetica Digitale Slide", + ["component_camo_slide_finish2"] = "mimetica Cespuglio Slide", + ["component_camo_slide_finish3"] = "mimetica Legnosa Slide", + ["component_camo_slide_finish4"] = "mimetica Teschio Slide", + ["component_camo_slide_finish5"] = "mimetica Sessanta Nove Slide", + ["component_camo_slide_finish6"] = "mimetica Perseo Slide", + ["component_camo_slide_finish7"] = "mimetica Leopardata Slide", + ["component_camo_slide_finish8"] = "mimetica Zebra Slide", + ["component_camo_slide_finish9"] = "mimetica Geometrica Slide", + ["component_camo_slide_finish10"] = "mimetica Boom Slide", + ["component_camo_slide_finish11"] = "mimetica Patriottica Slide", - ['component_scope_holo'] = 'mirino Olografico', - ['component_scope_small'] = 'mirino Piccolo', - ['component_scope_medium'] = 'mirino Medio', - ['component_scope_large'] = 'mirino Largo', - ['component_scope'] = 'mirino Montato', - ['component_scope_advanced'] = 'mirino Avanzato', - ['component_ironsights'] = 'integrato', + ["component_clip_default"] = "caricatore Standard", + ["component_clip_extended"] = "caricatore Esteso", + ["component_clip_drum"] = "caricatore A Batteria", + ["component_clip_box"] = "caricatore A Scatola", - ['component_suppressor'] = 'silenziatore', - ['component_compensator'] = 'compensatore', + ["component_scope_holo"] = "mirino Olografico", + ["component_scope_small"] = "mirino Piccolo", + ["component_scope_medium"] = "mirino Medio", + ["component_scope_large"] = "mirino Largo", + ["component_scope"] = "mirino Montato", + ["component_scope_advanced"] = "mirino Avanzato", + ["component_ironsights"] = "integrato", - ['component_muzzle_flat'] = 'freno Di Bocca Piatto', - ['component_muzzle_tactical'] = 'freno Di Bocca Tattico', - ['component_muzzle_fat'] = 'freno Di Bocca Grosso', - ['component_muzzle_precision'] = 'freno Di Bocca Di Precisione', - ['component_muzzle_heavy'] = 'freno Di Bocca Pesante', - ['component_muzzle_slanted'] = 'freno Di Bocca Inclinato', - ['component_muzzle_split'] = 'freno Di Bocca Diviso', - ['component_muzzle_squared'] = 'freno Di Bocca Quadrato', + ["component_suppressor"] = "silenziatore", + ["component_compensator"] = "compensatore", - ['component_flashlight'] = 'torcia', - ['component_grip'] = 'impugnatura', + ["component_muzzle_flat"] = "freno Di Bocca Piatto", + ["component_muzzle_tactical"] = "freno Di Bocca Tattico", + ["component_muzzle_fat"] = "freno Di Bocca Grosso", + ["component_muzzle_precision"] = "freno Di Bocca Di Precisione", + ["component_muzzle_heavy"] = "freno Di Bocca Pesante", + ["component_muzzle_slanted"] = "freno Di Bocca Inclinato", + ["component_muzzle_split"] = "freno Di Bocca Diviso", + ["component_muzzle_squared"] = "freno Di Bocca Quadrato", - ['component_barrel_default'] = 'canna Standard', - ['component_barrel_heavy'] = 'canna Pesante', + ["component_flashlight"] = "torcia", + ["component_grip"] = "impugnatura", - ['component_ammo_tracer'] = 'munizioni Traccianti', - ['component_ammo_incendiary'] = 'munizioni Incendiarie', - ['component_ammo_hollowpoint'] = 'munizioni a Punta Cava', - ['component_ammo_fmj'] = 'munizioni fMj', - ['component_ammo_armor'] = 'munizioni penetranti', - ['component_ammo_explosive'] = 'munizioni penetranti incendiarie', + ["component_barrel_default"] = "canna Standard", + ["component_barrel_heavy"] = "canna Pesante", - ['component_shells_default'] = 'cartucce Standard', - ['component_shells_incendiary'] = 'cartucce alito di Drago', - ['component_shells_armor'] = 'cartucce a pallettoni', - ['component_shells_hollowpoint'] = 'cartucce a freccette', - ['component_shells_explosive'] = 'cartucce esplosive', + ["component_ammo_tracer"] = "munizioni Traccianti", + ["component_ammo_incendiary"] = "munizioni Incendiarie", + ["component_ammo_hollowpoint"] = "munizioni a Punta Cava", + ["component_ammo_fmj"] = "munizioni fMj", + ["component_ammo_armor"] = "munizioni penetranti", + ["component_ammo_explosive"] = "munizioni penetranti incendiarie", - -- Weapon Ammo - ['ammo_rounds'] = 'colpo(i)', - ['ammo_shells'] = 'cartuccia(e)', - ['ammo_charge'] = 'carica', - ['ammo_petrol'] = 'Litri di carburante', - ['ammo_firework'] = 'fuochi d\'artificio', - ['ammo_rockets'] = 'razzo(i)', - ['ammo_grenadelauncher'] = 'granata(e)', - ['ammo_grenade'] = 'granata(e)', - ['ammo_stickybomb'] = 'bomba(e)', - ['ammo_pipebomb'] = 'bomba(e)', - ['ammo_smokebomb'] = 'bomba(e)', - ['ammo_molotov'] = 'bottiglia(e)', - ['ammo_proxmine'] = 'mina(e)', - ['ammo_bzgas'] = 'latta(e)', - ['ammo_ball'] = 'palla(e)', - ['ammo_snowball'] = 'palle di neve', - ['ammo_flare'] = 'razzo(i)', - ['ammo_flaregun'] = 'razzo(i)', + ["component_shells_default"] = "cartucce Standard", + ["component_shells_incendiary"] = "cartucce alito di Drago", + ["component_shells_armor"] = "cartucce a pallettoni", + ["component_shells_hollowpoint"] = "cartucce a freccette", + ["component_shells_explosive"] = "cartucce esplosive", - -- Weapon Tints - ['tint_default'] = 'Colore standard', - ['tint_green'] = 'color verde', - ['tint_gold'] = 'color oro', - ['tint_pink'] = 'color rosa', - ['tint_army'] = 'color army', - ['tint_lspd'] = 'color blu', - ['tint_orange'] = 'color arancio', - ['tint_platinum'] = 'color platino', + -- Weapon Ammo + ["ammo_rounds"] = "colpo(i)", + ["ammo_shells"] = "cartuccia(e)", + ["ammo_charge"] = "carica", + ["ammo_petrol"] = "Litri di carburante", + ["ammo_firework"] = "fuochi d'artificio", + ["ammo_rockets"] = "razzo(i)", + ["ammo_grenadelauncher"] = "granata(e)", + ["ammo_grenade"] = "granata(e)", + ["ammo_stickybomb"] = "bomba(e)", + ["ammo_pipebomb"] = "bomba(e)", + ["ammo_smokebomb"] = "bomba(e)", + ["ammo_molotov"] = "bottiglia(e)", + ["ammo_proxmine"] = "mina(e)", + ["ammo_bzgas"] = "latta(e)", + ["ammo_ball"] = "palla(e)", + ["ammo_snowball"] = "palle di neve", + ["ammo_flare"] = "razzo(i)", + ["ammo_flaregun"] = "razzo(i)", + + -- Weapon Tints + ["tint_default"] = "Colore standard", + ["tint_green"] = "color verde", + ["tint_gold"] = "color oro", + ["tint_pink"] = "color rosa", + ["tint_army"] = "color army", + ["tint_lspd"] = "color blu", + ["tint_orange"] = "color arancio", + ["tint_platinum"] = "color platino", } diff --git a/[core]/es_extended/locales/nl.lua b/[core]/es_extended/locales/nl.lua index 86e8ed34..af4b920f 100644 --- a/[core]/es_extended/locales/nl.lua +++ b/[core]/es_extended/locales/nl.lua @@ -1,58 +1,58 @@ -Locales['nl'] = { +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!', - ['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'] = 'Inventoraris is vol, Kan niet oppakken!', - ['threw_pickup_prompt'] = 'Druk op E om op te pakken', - + ["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!", + ["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"] = "Inventoraris is vol, Kan niet oppakken!", + ["threw_pickup_prompt"] = "Druk op E om op te pakken", + -- Key mapping - ['keymap_showinventory'] = 'Laat inventaris zien', - + ["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'] = 'Cash', - - ['act_imp'] = 'Kan actie niet uitvoeren', - ['in_vehicle'] = 'Kan actie niet uitvoeren, de speler zit in een voertuig.', - + ["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"] = "Cash", + + ["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', @@ -99,6 +99,7 @@ Locales['nl'] = { ['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 (passed number, wanted string)', ['commanderror_invaliditem'] = 'Ongeldig item', ['commanderror_invalidweapon'] = 'Ongeldig wapen', ['commanderror_console'] = 'Command kan niet worden uitgevoerd vanaf console.', @@ -110,256 +111,262 @@ Locales['nl'] = { ['command_giveammo_ammo'] = 'Ammo Hoeveelheid', ['tpm_nowaypoint'] = 'Geen waypoint gezet.', ['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', - + ["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'] = 'Knuckledusters', - ['weapon_machete'] = 'Machete', - ['weapon_nightstick'] = 'Nightstick', - ['weapon_wrench'] = 'Pijpsleutel', - ['weapon_poolcue'] = 'Pool Cue', - ['weapon_stone_hatchet'] = 'Steenbijl', - ['weapon_switchblade'] = 'Switchblade', - + ["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"] = "Knuckledusters", + ["weapon_machete"] = "Machete", + ["weapon_nightstick"] = "Nightstick", + ["weapon_wrench"] = "Pijpsleutel", + ["weapon_poolcue"] = "Pool Cue", + ["weapon_stone_hatchet"] = "Steenbijl", + ["weapon_switchblade"] = "Switchblade", + -- Handguns - ['weapon_appistol'] = 'AP-pistool', - ['weapon_ceramicpistol'] = 'Keramische pistool', - ['weapon_combatpistol'] = 'Gevechtspistool', - ['weapon_doubleaction'] = 'Revolver met dubbele actie', - ['weapon_navyrevolver'] = 'Marine Revolver', - ['weapon_flaregun'] = 'Flaregun', - ['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', - + ["weapon_appistol"] = "AP-pistool", + ["weapon_ceramicpistol"] = "Keramische pistool", + ["weapon_combatpistol"] = "Gevechtspistool", + ["weapon_doubleaction"] = "Revolver met dubbele actie", + ["weapon_navyrevolver"] = "Marine Revolver", + ["weapon_flaregun"] = "Flaregun", + ["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', - + ["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', - + ["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', - + ["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', - + ["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', - + ["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', - + ["weapon_metaldetector"] = "Metaal Detector", + ["weapon_precisionrifle"] = "Precisiegeweer", + ["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'] = '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', - + ["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_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', - + ["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)', - + ["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', + ["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/[core]/es_extended/locales/pl.lua b/[core]/es_extended/locales/pl.lua index 235b2d89..dbea4a26 100644 --- a/[core]/es_extended/locales/pl.lua +++ b/[core]/es_extended/locales/pl.lua @@ -1,227 +1,234 @@ -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ść', +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', + -- 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', + -- 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", - -- 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_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_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', + -- 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_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', + -- 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', + -- 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 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', + -- 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", - -- 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', + -- 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 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', + -- 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/[core]/es_extended/locales/sc.lua b/[core]/es_extended/locales/sc.lua deleted file mode 100644 index 8c3d6598..00000000 --- a/[core]/es_extended/locales/sc.lua +++ /dev/null @@ -1,228 +0,0 @@ -Locales['sc'] = { - -- 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'] = '请离开载具', - - -- Commands - ['command_car'] = '生成载具', - ['command_car_car'] = '生成载具的模型名称或哈希值', - ['command_cardel'] = '删除附近的载具', - ['command_cardel_radius'] = '可选,删除指定半径内的所有车辆', - ['command_clear'] = '清除聊天记录', - ['command_clearall'] = '清除所有玩家的聊天记录', - ['command_clearinventory'] = '清除玩家库存', - ['command_clearloadout'] = '清除玩家皮肤', - ['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_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_invaliditem'] = '无效的物品名称', - ['commanderror_invalidweapon'] = '无效武器', - ['commanderror_console'] = '该命令不能从控制台运行', - ['commanderror_invalidcommand'] = '/%s 不是有效的命令!', - ['commanderror_invalidplayerid'] = '没有在线玩家匹配到该服务id', - ['commandgeneric_playerid'] = '玩家id', - ['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'] = '小刀', - ['weapon_nightstick'] = '警棍', - ['weapon_hammer'] = '铁锤', - ['weapon_bat'] = '棒球棍', - ['weapon_golfclub'] = '高尔夫球杆', - ['weapon_crowbar'] = '撬棍', - ['weapon_pistol'] = '手枪', - ['weapon_combatpistol'] = '战斗手枪', - ['weapon_appistol'] = '穿甲手枪', - ['weapon_pistol50'] = '0.5 口径手枪', - ['weapon_microsmg'] = '微型冲锋枪', - ['weapon_smg'] = '冲锋枪', - ['weapon_assaultsmg'] = '突击冲锋枪', - ['weapon_assaultrifle'] = '突击步枪', - ['weapon_carbinerifle'] = '卡宾步枪', - ['weapon_advancedrifle'] = '高级步枪', - ['weapon_mg'] = '机枪', - ['weapon_combatmg'] = '战斗机枪', - ['weapon_pumpshotgun'] = '泵动式霰弹枪', - ['weapon_sawnoffshotgun'] = '短管霰弹枪', - ['weapon_assaultshotgun'] = '突击霰弹枪', - ['weapon_bullpupshotgun'] = '无托式霰弹枪', - ['weapon_stungun'] = '电击枪', - ['weapon_sniperrifle'] = '狙击步枪', - ['weapon_heavysniper'] = '重型狙击步枪', - ['weapon_grenadelauncher'] = '榴弹发射器', - ['weapon_rpg'] = '火箭炮', - ['weapon_minigun'] = '火神机枪', - ['weapon_grenade'] = '手榴弹', - ['weapon_stickybomb'] = '黏弹', - ['weapon_smokegrenade'] = '烟雾弹', - ['weapon_bzgas'] = '催泪瓦斯', - ['weapon_molotov'] = '汽油弹', - ['weapon_fireextinguisher'] = '灭火器', - ['weapon_petrolcan'] = '汽油桶', - ['weapon_ball'] = '棒球', - ['weapon_snspistol'] = '劣质手枪', - ['weapon_bottle'] = '酒瓶', - ['weapon_gusenberg'] = '古森柏冲锋枪', - ['weapon_specialcarbine'] = '特制卡宾枪', - ['weapon_heavypistol'] = '重型手枪', - ['weapon_bullpuprifle'] = '无托式步枪', - ['weapon_dagger'] = '匕首', - ['weapon_vintagepistol'] = '老式手枪', - ['weapon_firework'] = '烟花发射器', - ['weapon_musket'] = '老式火枪', - ['weapon_heavyshotgun'] = '重型霰弹枪', - ['weapon_marksmanrifle'] = '射手步枪', - ['weapon_hominglauncher'] = '制导火箭发射器', - ['weapon_proxmine'] = '感应地雷', - ['weapon_snowball'] = '雪球', - ['weapon_flaregun'] = '信号枪', - ['weapon_combatpdw'] = '作战自卫冲锋枪', - ['weapon_marksmanpistol'] = '射手手枪', - ['weapon_knuckle'] = '手指虎', - ['weapon_hatchet'] = '手斧', - ['weapon_railgun'] = '电磁轨道炮', - ['weapon_machete'] = '开山刀', - ['weapon_machinepistol'] = '冲锋手枪', - ['weapon_switchblade'] = '弹簧刀', - ['weapon_revolver'] = '重型左轮手枪', - ['weapon_dbshotgun'] = '双管霰弹枪', - ['weapon_compactrifle'] = '紧凑型步枪', - ['weapon_autoshotgun'] = '半自动霰弹枪', - ['weapon_battleaxe'] = '战斧', - ['weapon_compactlauncher'] = '紧凑型榴弹发射器', - ['weapon_minismg'] = '迷你冲锋枪', - ['weapon_pipebomb'] = '土制炸弹', - ['weapon_poolcue'] = '台球杆', - ['weapon_wrench'] = '管钳扳手', - ['weapon_flashlight'] = '手电筒', - ['gadget_parachute'] = '降落伞', - ['weapon_flare'] = '信号棒', - ['weapon_doubleaction'] = '双动式左轮手枪', - - -- Weapon Components - ['component_clip_default'] = '默认弹夹', - ['component_clip_extended'] = '扩容弹夹', - ['component_clip_drum'] = '鼓式弹夹', - ['component_clip_box'] = '盒型弹匣', - ['component_flashlight'] = '手电筒', - ['component_scope'] = '瞄准镜', - ['component_scope_advanced'] = '高级瞄准镜', - ['component_suppressor'] = '消音器', - ['component_grip'] = '握把', - ['component_luxary_finish'] = '奢华涂饰', - - -- 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/[core]/es_extended/locales/sl.lua b/[core]/es_extended/locales/sl.lua new file mode 100644 index 00000000..0e5de612 --- /dev/null +++ b/[core]/es_extended/locales/sl.lua @@ -0,0 +1,372 @@ +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", + + -- 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_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", + + -- 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/[core]/es_extended/locales/sr.lua b/[core]/es_extended/locales/sr.lua new file mode 100644 index 00000000..5a5e8b39 --- /dev/null +++ b/[core]/es_extended/locales/sr.lua @@ -0,0 +1,372 @@ +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", + + -- 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_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", + + -- 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/[core]/es_extended/locales/sv.lua b/[core]/es_extended/locales/sv.lua deleted file mode 100644 index 734752b1..00000000 --- a/[core]/es_extended/locales/sv.lua +++ /dev/null @@ -1,349 +0,0 @@ -Locales['sv'] = { - -- Inventory - ['inventory'] = 'Förråd ( Vikt %s / %s )', - ['use'] = 'Använd', - ['give'] = 'Ge', - ['remove'] = 'Kasta', - ['return'] = 'Gå tillbaka', - ['give_to'] = 'Ge till', - ['amount'] = 'Antal', - ['giveammo'] = 'Ge ammunition', - ['amountammo'] = 'Mängd ammunition', - ['noammo'] = 'Inte tillräckligt med ammunition!', - ['gave_item'] = 'Ge %sx %s till %s', - ['received_item'] = 'Fick %sx %s från %s', - ['gave_weapon'] = 'Ge %s till %s', - ['gave_weapon_ammo'] = 'Ge ~o~%sx %s för %s till %s', - ['gave_weapon_withammo'] = 'Ge %s med ~o~%sx %s till %s', - ['gave_weapon_hasalready'] = '%s har redan en %s', - ['gave_weapon_noweapon'] = '%s har inte det vapnet', - ['received_weapon'] = 'Mottog %s från %s', - ['received_weapon_ammo'] = 'Fick ~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 det här vapnet', - ['received_weapon_noweapon'] = '%s har försökt ge dig ammunition för en %s, men du har inte det här vapnet', - ['gave_account_money'] = 'Ge $%s (%s) till %s', - ['received_account_money'] = 'Mottog $%s (%s) från %s', - ['amount_invalid'] = 'Ogiltig mängd', - ['players_nearby'] = 'Inga spelare i närheten', - ['ex_inv_lim'] = 'Kan inte utföra åtgärden, överstiger maxvikten %s', - ['imp_invalid_quantity'] = 'Det går inte att utföra åtgärden, mängden är ogiltig', - ['imp_invalid_amount'] = 'Det går inte att utföra åtgärden, mängden är ogiltigt', - ['threw_standard'] = 'Kastade %sx %s', - ['threw_account'] = 'Kastade $%s %s', - ['threw_weapon'] = 'Kastade %s', - ['threw_weapon_ammo'] = 'Kastade %s med ~o~%sx %s', - ['threw_weapon_already'] = 'Du har redan det här vapnet', - ['threw_cannot_pickup'] = 'Förrådet är fullt, kan inte plocka upp!', - ['threw_pickup_prompt'] = 'Tryck E för att plocka upp', - - -- Key mapping - ['keymap_showinventory'] = 'Visa förrådet', - - -- Salary related - ['received_salary'] = 'Du har fått lön: $%s', - ['received_help'] = 'Du har fått bidrag: $%s', - ['company_nomoney'] = 'företaget du är anställt hos har inte råd att betala ut din lön', - ['received_paycheck'] = 'Mottagit lön', - ['bank'] = 'Bank', - ['account_bank'] = 'Bank', - ['account_black_money'] = 'Svarta pengar', - ['account_money'] = 'Kontanter', - - ['act_imp'] = 'Kan inte utföra åtgärd', - ['in_vehicle'] = 'Kan inte utföra åtgärd, spelaren är i ett fordon', - - -- Commands - ['command_car'] = 'Spawna ett fordon', - ['command_car_car'] = 'Fordonsmodell eller hash', - ['command_cardel'] = 'Ta bort fordon i närheten', - ['command_cardel_radius'] = 'Tar bort alla fordon inom angiven radie', - ['command_clear'] = 'Rensa chatttext', - ['command_clearall'] = 'Rensa chatttext för alla spelare', - ['command_clearinventory'] = 'Ta bort alla föremål från spelarens förråd', - ['command_clearloadout'] = 'Ta bort alla vapen från spelarens förråd', - ['command_giveaccountmoney'] = 'Ge pengar till ett specifikt konto', - ['command_giveaccountmoney_account'] = 'Konto att lägga till i', - ['command_giveaccountmoney_amount'] = 'Belopp att lägga till', - ['command_giveaccountmoney_invalid'] = 'Kontonamn ogiltigt', - ['command_giveitem'] = 'Ge spelaren ett föremål', - ['command_giveitem_item'] = 'Föremålsnamn', - ['command_giveitem_count'] = 'Mängd', - ['command_giveweapon'] = 'Ge spelaren ett vapen', - ['command_giveweapon_weapon'] = 'Vapennamn', - ['command_giveweapon_ammo'] = 'Ammunitionsmängd', - ['command_giveweapon_hasalready'] = 'Spelaren har redan det här vapnet', - ['command_giveweaponcomponent'] = 'Ge en vapenkomponent till spelaren', - ['command_giveweaponcomponent_component'] = 'Vapenkomponentnamn', - ['command_giveweaponcomponent_invalid'] = 'Ogiltig vapenkomponent', - ['command_giveweaponcomponent_hasalready'] = 'Spelaren har redan denna vapenkomponent', - ['command_giveweaponcomponent_missingweapon'] = 'Spelaren har inte det här vapnet', - ['command_save'] = 'Tvångspara en spelares data', - ['command_saveall'] = 'Tvångspara allas spelardata', - ['command_setaccountmoney'] = 'Ställ in pengarna på ett angivet konto', - ['command_setaccountmoney_amount'] = 'Ny Summa', - ['command_setcoords'] = 'Teleportera till specificerade koordinater', - ['command_setcoords_x'] = 'X-värde', - ['command_setcoords_y'] = 'Y-värde', - ['command_setcoords_z'] = 'Z-värde', - ['command_setjob'] = 'Ställ in en spelares jobb', - ['command_setjob_job'] = 'Jobbnamn', - ['command_setjob_grade'] = 'Jobbnivå', - ['command_setjob_invalid'] = 'jobbet, nivån eller båda är ogiltiga', - ['command_setgroup'] = 'Ställ in en spelares behörighetsgrupp', - ['command_setgroup_group'] = 'Gruppens namn', - ['commanderror_argumentmismatch'] = 'Ogiltigt antal argument (godkänt %s, önskat %s)', - ['commanderror_argumentmismatch_number'] = 'Ogiltigt argument #%s datatyp (godkänd sträng, önskat nummer)', - ['commanderror_invaliditem'] = 'Ogiltig artikel', - ['commanderror_invalidweapon'] = 'Ogiltigt vapen', - ['commanderror_console'] = 'Kommandot kan inte köras från konsolen', - ['commanderror_invalidcommand'] = 'Ogiltigt kommando - /%s', - ['commanderror_invalidplayerid'] = 'Angiven spelare är inte online', - ['commandgeneric_playerid'] = 'Spelarens server-id', - ['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 SEK', - - -- Weapons - - -- Melee - ['weapon_dagger'] = 'Dolk', - ['weapon_bat'] = 'Slagträ', - ['weapon_battleaxe'] = 'Stridsyxa', - ['weapon_bottle'] = 'Flaska', - ['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'] = 'Batong', - ['weapon_wrench'] = 'Rörtång', - ['weapon_poolcue'] = 'Biljardkö', - ['weapon_stone_hatchet'] = 'Stenyxa', - ['weapon_switchblade'] = 'Fällkniv', - - -- 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', - - -- 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', - - -- 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'] = 'ammunition', - ['ammo_shells'] = 'hagel', - ['ammo_charge'] = 'laddning', - ['ammo_petrol'] = 'bensin', - ['ammo_firework'] = 'fyrverkeri(er)', - ['ammo_rockets'] = 'raket(er)', - ['ammo_grenadelauncher'] = 'grenat(er)', - ['ammo_grenade'] = 'grenat(er)', - ['ammo_stickybomb'] = 'bomb(er)', - ['ammo_pipebomb'] = 'bomb(er)', - ['ammo_smokebomb'] = 'bomb(er)', - ['ammo_molotov'] = 'cocktail(s)', - ['ammo_proxmine'] = 'bomb(er)', - ['ammo_bzgas'] = 'burk(ar)', - ['ammo_ball'] = 'boll(ar)', - ['ammo_snowball'] = 'snöboll(ar)', - ['ammo_flare'] = 'lysraket(er)', - ['ammo_flaregun'] = 'lysraket(er)', - - -- Weapon Tints - ['tint_default'] = 'Standard färg', - ['tint_green'] = 'Grön färg', - ['tint_gold'] = 'Guld färg', - ['tint_pink'] = 'Rosa färg', - ['tint_army'] = 'Armé färg', - ['tint_lspd'] = 'Blå färg', - ['tint_orange'] = 'Orange färg', - ['tint_platinum'] = 'Platina färg', -} \ No newline at end of file diff --git a/[core]/es_extended/locales/tc.lua b/[core]/es_extended/locales/tc.lua deleted file mode 100644 index 59c269f1..00000000 --- a/[core]/es_extended/locales/tc.lua +++ /dev/null @@ -1,365 +0,0 @@ -Locales['tc'] = { - -- 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'] = '請離開載具', - - -- Commands - ['command_bring'] = '傳送玩家到你旁邊', - ['command_car'] = '生成載具', - ['command_car_car'] = '生成載具的模型名稱或希哈值', - ['command_cardel'] = '刪除附近的載具', - ['command_cardel_radius'] = '可選擇,刪除指定半徑內的所有車輛', - ['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'] = '傳送到座標上', - ['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_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'] = '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'] = '穿甲手槍', - ['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'] = '劣質手槍', - ['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'] = '衝鋒槍', - ['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', - - -- 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'] = '制式卡賓步槍', - - -- 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/[core]/es_extended/locales/zh-cn.lua b/[core]/es_extended/locales/zh-cn.lua new file mode 100644 index 00000000..e7500981 --- /dev/null +++ b/[core]/es_extended/locales/zh-cn.lua @@ -0,0 +1,372 @@ +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"] = "请离开当前载具", + + -- Commands + ['command_bring'] = '传送玩家到您身边', + ['command_car'] = '生成载具', + ['command_car_car'] = '生成载具的模型名称或哈希值', + ['command_cardel'] = '删除附近载具', + ['command_cardel_radius'] = '可选,删除指定半径内的所有载具', + ['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", + + -- 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/[core]/es_extended/server/classes/overrides/oxinventory.lua b/[core]/es_extended/server/classes/overrides/oxinventory.lua index d983b714..85a1a439 100644 --- a/[core]/es_extended/server/classes/overrides/oxinventory.lua +++ b/[core]/es_extended/server/classes/overrides/oxinventory.lua @@ -1,221 +1,223 @@ local Inventory if Config.OxInventory then - AddEventHandler('ox_inventory:loadInventory', function(module) - Inventory = module - end) + AddEventHandler('ox_inventory:loadInventory', function(module) + Inventory = module + end) end Core.PlayerFunctionOverrides.OxInventory = { - getInventory = function(self) - return function(minimal) - if minimal then - local minimalInventory = {} + getInventory = function(self) + return function(minimal) + if minimal then + local minimalInventory = {} - for k, v in pairs(self.inventory) do - if v.count and v.count > 0 then - local metadata = v.metadata + for k, v in pairs(self.inventory) do + if v.count and v.count > 0 then + local metadata = v.metadata - if v.metadata and next(v.metadata) == nil then - metadata = nil - end + if v.metadata and next(v.metadata) == nil then + metadata = nil + end - minimalInventory[#minimalInventory+1] = { - name = v.name, - count = v.count, - slot = k, - metadata = metadata - } - end - end + minimalInventory[#minimalInventory + 1] = { + name = v.name, + count = v.count, + slot = k, + metadata = metadata + } + end + end - return minimalInventory - end + return minimalInventory + end - return self.inventory - end - end, + return self.inventory + end + end, - getLoadout = function(self) - return function() - return {} - end - end, + getLoadout = function() + return function() + return {} + end + end, - setAccountMoney = function(self) - return function(accountName,money, reason) - reason = reason or 'unknown' - if money >= 0 then - local account = self.getAccount(accountName) + setAccountMoney = function(self) + return function(accountName, money, reason) + reason = reason or 'unknown' + if money >= 0 then + local account = self.getAccount(accountName) - if account then - money = account.round and ESX.Math.Round(money) or money - self.accounts[account.index].money = money + if account then + money = account.round and ESX.Math.Round(money) or money + self.accounts[account.index].money = money - self.triggerEvent('esx:setAccountMoney', account) - TriggerEvent('esx:setAccountMoney', self.source, accountName, money, reason) - if Inventory.accounts[accountName] then - Inventory.SetItem(self.source, accountName, money) - end - end - end - end - end, + self.triggerEvent('esx:setAccountMoney', account) + TriggerEvent('esx:setAccountMoney', self.source, accountName, money, reason) + if Inventory.accounts[accountName] then + Inventory.SetItem(self.source, accountName, money) + end + end + end + end + end, - addAccountMoney = function(self) - return function(accountName,money, reason) - reason = reason or 'unknown' - if money > 0 then - local account = self.getAccount(accountName) + addAccountMoney = function(self) + return function(accountName, money, reason) + reason = reason or 'unknown' + if money > 0 then + local account = self.getAccount(accountName) - if account then - money = account.round and ESX.Math.Round(money) or money - self.accounts[account.index].money += money - self.triggerEvent('esx:setAccountMoney', account) - TriggerEvent('esx:addAccountMoney', self.source, accountName, money, reason) - if Inventory.accounts[accountName] then - Inventory.AddItem(self.source, accountName, money) - end - end - end - end - end, + if account then + money = account.round and ESX.Math.Round(money) or money + self.accounts[account.index].money = self.accounts[account.index].money + money + self.triggerEvent('esx:setAccountMoney', account) + TriggerEvent('esx:addAccountMoney', self.source, accountName, money, reason) + if Inventory.accounts[accountName] then + Inventory.AddItem(self.source, accountName, money) + end + end + end + end + end, - removeAccountMoney = function(self) - return function(accountName,money, reason) - reason = reason or 'unknown' - if money > 0 then - local account = self.getAccount(accountName) + removeAccountMoney = function(self) + return function(accountName, money, reason) + reason = reason or 'unknown' + if money > 0 then + local account = self.getAccount(accountName) - if account then - money = account.round and ESX.Math.Round(money) or money - self.accounts[account.index].money -= money - self.triggerEvent('esx:setAccountMoney', account) - TriggerEvent('esx:removeAccountMoney', self.source, accountName, money, reason) - if Inventory.accounts[accountName] then - Inventory.RemoveItem(self.source, accountName, money) - end - end - end - end - end, + if account then + money = account.round and ESX.Math.Round(money) or money + self.accounts[account.index].money = self.accounts[account.index].money - money + self.triggerEvent('esx:setAccountMoney', account) + TriggerEvent('esx:removeAccountMoney', self.source, accountName, money, reason) + if Inventory.accounts[accountName] then + Inventory.RemoveItem(self.source, accountName, money) + end + end + end + end + end, - getInventoryItem = function(self) - return function(name,metadata) - return Inventory.GetItem(self.source, name, metadata) - end - end, + getInventoryItem = function(self) + return function(name, metadata) + return Inventory.GetItem(self.source, name, metadata) + end + end, - addInventoryItem = function(self) - return function(name,count,metadata,slot) - return Inventory.AddItem(self.source, name, count or 1, metadata, slot) - end - end, + addInventoryItem = function(self) + return function(name, count, metadata, slot) + return Inventory.AddItem(self.source, name, count or 1, metadata, slot) + end + end, - removeInventoryItem = function(self) - return function(name,count,metadata,slot) - return Inventory.RemoveItem(self.source, name, count or 1, metadata, slot) - end - end, + removeInventoryItem = function(self) + return function(name, count, metadata, slot) + return Inventory.RemoveItem(self.source, name, count or 1, metadata, slot) + end + end, - setInventoryItem = function(self) - return function(name,count,metadata) - return Inventory.SetItem(self.source, name, count, metadata) - end - end, + setInventoryItem = function(self) + return function(name, count, metadata) + return Inventory.SetItem(self.source, name, count, metadata) + end + end, - canCarryItem = function(self) - return function(name,count,metadata) - return Inventory.CanCarryItem(self.source, name, count, metadata) - end - end, + canCarryItem = function(self) + return function(name, count, metadata) + return Inventory.CanCarryItem(self.source, name, count, metadata) + end + end, - canSwapItem = function(self) - return function(firstItem, firstItemCount, testItem, testItemCount) - return Inventory.CanSwapItem(self.source, firstItem, firstItemCount, testItem, testItemCount) - end - end, + canSwapItem = function(self) + return function(firstItem, firstItemCount, testItem, testItemCount) + return Inventory.CanSwapItem(self.source, firstItem, firstItemCount, testItem, testItemCount) + end + end, - setMaxWeight = function(self) - return function(newWeight) - self.maxWeight = newWeight - self.triggerEvent('esx:setMaxWeight', self.maxWeight) - return Inventory.Set(self.source, 'maxWeight', newWeight) - end - end, + setMaxWeight = function(self) + return function(newWeight) + self.maxWeight = newWeight + self.triggerEvent('esx:setMaxWeight', self.maxWeight) + return Inventory.Set(self.source, 'maxWeight', newWeight) + end + end, - addWeapon = function(self) - return function() end - end, + addWeapon = function() + return function() end + end, - addWeaponComponent = function(self) - return function() end - end, + addWeaponComponent = function() + return function() end + end, - addWeaponAmmo = function(self) - return function() end - end, + addWeaponAmmo = function() + return function() end + end, - updateWeaponAmmo = function(self) - return function() end - end, + updateWeaponAmmo = function() + return function() end + end, - setWeaponTint = function(self) - return function() end - end, + setWeaponTint = function() + return function() end + end, - getWeaponTint = function(self) - return function() end - end, + getWeaponTint = function() + return function() end + end, - removeWeapon = function(self) - return function() end - end, + removeWeapon = function() + return function() end + end, - removeWeaponComponent = function(self) - return function() end - end, + removeWeaponComponent = function() + return function() end + end, - removeWeaponAmmo = function(self) - return function() end - end, + removeWeaponAmmo = function() + return function() end + end, - hasWeaponComponent = function(self) - return function() - return false - end - end, + hasWeaponComponent = function() + return function() + return false + end + end, - hasWeapon = function(self) - return function() - return false - end - end, + hasWeapon = function() + return function() + return false + end + end, - hasItem = function(self) - return function(name,metadata) - return Inventory.GetItem(self.source, name, metadata) - end - end, + hasItem = function(self) + return function(name, metadata) + return Inventory.GetItem(self.source, name, metadata) + end + end, - getWeapon = function(self) - return function() end - end, + getWeapon = function() + return function() end + end, - syncInventory = function(self) - return function(weight, maxWeight, items, money) - self.weight, self.maxWeight = weight, maxWeight - self.inventory = items + syncInventory = function(self) + return function(weight, maxWeight, items, money) + self.weight, self.maxWeight = weight, maxWeight + self.inventory = items - if money then - for k, v in pairs(money) do - local account = self.getAccount(k) - if ESX.Math.Round(account.money) ~= v then - account.money = v - self.triggerEvent('esx:setAccountMoney', account) - end - end - end - end - end -} \ No newline at end of file + if money then + for accountName, amount in pairs(money) do + local account = self.getAccount(accountName) + + if account and ESX.Math.Round(account.money) ~= amount then + account.money = amount + self.triggerEvent('esx:setAccountMoney', account) + TriggerEvent('esx:setAccountMoney', self.source, accountName, amount, 'Sync account with item') + end + end + end + end + end +} diff --git a/[core]/es_extended/server/classes/player.lua b/[core]/es_extended/server/classes/player.lua index e0788424..52b72225 100644 --- a/[core]/es_extended/server/classes/player.lua +++ b/[core]/es_extended/server/classes/player.lua @@ -1,12 +1,9 @@ -local SetTimeout = SetTimeout local GetPlayerPed = GetPlayerPed -local DoesEntityExist = DoesEntityExist local GetEntityCoords = GetEntityCoords -local GetEntityHeading = GetEntityHeading function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, weight, job, loadout, name, coords, metadata) local targetOverrides = Config.PlayerFunctionOverride and Core.PlayerFunctionOverrides[Config.PlayerFunctionOverride] or {} - + local self = {} self.accounts = accounts @@ -23,10 +20,10 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, self.weight = weight self.maxWeight = Config.MaxWeight self.metadata = metadata - if Config.Multichar then self.license = 'license'.. identifier:sub(identifier:find(':'), identifier:len()) else self.license = 'license:'..identifier end + if Config.Multichar then self.license = 'license' .. identifier:sub(identifier:find(':'), identifier:len()) else self.license = 'license:' .. identifier end ExecuteCommand(('add_principal identifier.%s group.%s'):format(self.license, self.group)) - + local stateBag = Player(self.source).state stateBag:set("identifier", self.identifier, true) stateBag:set("license", self.license, true) @@ -39,39 +36,26 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, TriggerClientEvent(eventName, self.source, ...) end - function self.setCoords(coords) + function self.setCoords(coordinates) local Ped = GetPlayerPed(self.source) - local vector = type(coords) == "vector4" and coords or type(coords) == "vector3" and vector4(coords, 0.0) or - vec(coords.x, coords.y, coords.z, coords.heading or 0.0) + local vector = type(coordinates) == "vector4" and coordinates or type(coordinates) == "vector3" and vector4(coordinates, 0.0) or + vec(coordinates.x, coordinates.y, coordinates.z, coordinates.heading or 0.0) SetEntityCoords(Ped, vector.xyz, false, false, false, false) SetEntityHeading(Ped, vector.w) end - function self.updateCoords() - SetTimeout(1000,function() - local Ped = GetPlayerPed(self.source) - if DoesEntityExist(Ped) then - local coords = GetEntityCoords(Ped) - local distance = #(coords - vector3(self.coords.x, self.coords.y, self.coords.z)) - if distance > 1.5 then - local heading = GetEntityHeading(Ped) - self.coords = { - x = coords.x, - y = coords.y, - z = coords.z, - heading = heading or 0.0 - } - end - end - self.updateCoords() - end) - end - function self.getCoords(vector) + local ped = GetPlayerPed(self.source) + local coordinates = GetEntityCoords(ped) + if vector then - return vector3(self.coords.x, self.coords.y, self.coords.z) + return coordinates else - return self.coords + return { + x = coordinates.x, + y = coordinates.y, + z = coordinates.z, + } end end @@ -129,7 +113,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, local minimalAccounts = {} - for i=1, #self.accounts do + for i = 1, #self.accounts do minimalAccounts[self.accounts[i].name] = self.accounts[i].money end @@ -137,18 +121,19 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, end function self.getAccount(account) - for i=1, #self.accounts do + for i = 1, #self.accounts do if self.accounts[i].name == account then return self.accounts[i] end end + return nil end function self.getInventory(minimal) if minimal then local minimalInventory = {} - for k, v in ipairs(self.inventory) do + for _, v in ipairs(self.inventory) do if v.count > 0 then minimalInventory[v.name] = v.count end @@ -170,14 +155,14 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, end local minimalLoadout = {} - for k,v in ipairs(self.loadout) do - minimalLoadout[v.name] = {ammo = v.ammo} + for _, v in ipairs(self.loadout) do + minimalLoadout[v.name] = { ammo = v.ammo } if v.tintIndex > 0 then minimalLoadout[v.name].tintIndex = v.tintIndex end if #v.components > 0 then local components = {} - for k2,component in ipairs(v.components) do + for _, component in ipairs(v.components) do if component ~= 'clip_default' then components[#components + 1] = component end @@ -203,7 +188,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, function self.setAccountMoney(accountName, money, reason) reason = reason or 'unknown' - if not tonumber(money) then + 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)) return end @@ -216,17 +201,17 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, self.triggerEvent('esx:setAccountMoney', account) TriggerEvent('esx:setAccountMoney', self.source, accountName, money, reason) - else + else print(('[^1ERROR^7] Tried To Set Invalid Account ^5%s^0 For Player ^5%s^0!'):format(accountName, self.playerId)) end - else + 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)) end end function self.addAccountMoney(accountName, money, reason) reason = reason or 'Unknown' - if not tonumber(money) then + 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)) return end @@ -234,21 +219,21 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, local account = self.getAccount(accountName) if account then money = account.round and ESX.Math.Round(money) or money - self.accounts[account.index].money += money + self.accounts[account.index].money = self.accounts[account.index].money + money self.triggerEvent('esx:setAccountMoney', account) TriggerEvent('esx:addAccountMoney', self.source, accountName, money, reason) - else + else print(('[^1ERROR^7] Tried To Set Add To Invalid Account ^5%s^0 For Player ^5%s^0!'):format(accountName, self.playerId)) end - else + 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)) end end function self.removeAccountMoney(accountName, money, reason) reason = reason or 'Unknown' - if not tonumber(money) then + 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)) return end @@ -257,28 +242,28 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, if account then money = account.round and ESX.Math.Round(money) or money - self.accounts[account.index].money -= money + self.accounts[account.index].money = self.accounts[account.index].money - money self.triggerEvent('esx:setAccountMoney', account) TriggerEvent('esx:removeAccountMoney', self.source, accountName, money, reason) - else + else print(('[^1ERROR^7] Tried To Set Add To Invalid Account ^5%s^0 For Player ^5%s^0!'):format(accountName, self.playerId)) end - else + 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)) end end - function self.getInventoryItem(name, metadata) - for k,v in ipairs(self.inventory) do - if v.name == name then + function self.getInventoryItem(itemName) + for _, v in ipairs(self.inventory) do + if v.name == itemName then return v end end end - function self.addInventoryItem(name, count, metadata, slot) - local item = self.getInventoryItem(name) + function self.addInventoryItem(itemName, count) + local item = self.getInventoryItem(itemName) if item then count = ESX.Math.Round(count) @@ -290,8 +275,8 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, end end - function self.removeInventoryItem(name, count, metadata, slot) - local item = self.getInventoryItem(name) + function self.removeInventoryItem(itemName, count) + local item = self.getInventoryItem(itemName) if item then count = ESX.Math.Round(count) @@ -306,13 +291,13 @@ 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,name)) + print(('[^1ERROR^7] Player ID:^5%s Tried remove a Invalid count -> %s of %s'):format(self.playerId, count, itemName)) end end end - function self.setInventoryItem(name, count, metadata) - local item = self.getInventoryItem(name) + function self.setInventoryItem(itemName, count) + local item = self.getInventoryItem(itemName) if item and count >= 0 then count = ESX.Math.Round(count) @@ -333,15 +318,15 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, return self.maxWeight end - function self.canCarryItem(name, count, metadata) - if ESX.Items[name] then - local currentWeight, itemWeight = self.weight, ESX.Items[name].weight - local newWeight = currentWeight + (itemWeight * count) + function self.canCarryItem(itemName, count) + if ESX.Items[itemName] then + local currentWeight, itemWeight = self.weight, ESX.Items[itemName].weight + local newWeight = currentWeight + (itemWeight * count) - return newWeight <= self.maxWeight - else - print(('[^3WARNING^7] Item ^5"%s"^7 was used but does not exist!'):format(name)) - end + return newWeight <= self.maxWeight + else + print(('[^3WARNING^7] Item ^5"%s"^7 was used but does not exist!'):format(itemName)) + end end function self.canSwapItem(firstItem, firstItemCount, testItem, testItemCount) @@ -363,21 +348,21 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, self.triggerEvent('esx:setMaxWeight', self.maxWeight) end - function self.setJob(job, grade) + function self.setJob(newJob, grade) grade = tostring(grade) local lastJob = json.decode(json.encode(self.job)) - if ESX.DoesJobExist(job, grade) then - local jobObject, gradeObject = ESX.Jobs[job], ESX.Jobs[job].grades[grade] + if ESX.DoesJobExist(newJob, grade) then + local jobObject, gradeObject = ESX.Jobs[newJob], ESX.Jobs[newJob].grades[grade] - self.job.id = jobObject.id - self.job.name = jobObject.name - self.job.label = jobObject.label + self.job.id = jobObject.id + self.job.name = jobObject.name + self.job.label = jobObject.label - self.job.grade = tonumber(grade) - self.job.grade_name = gradeObject.name - self.job.grade_label = gradeObject.label - self.job.grade_salary = gradeObject.salary + self.job.grade = tonumber(grade) + self.job.grade_name = gradeObject.name + self.job.grade_label = gradeObject.label + self.job.grade_salary = gradeObject.salary if gradeObject.skin_male then self.job.skin_male = json.decode(gradeObject.skin_male) @@ -434,7 +419,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, end function self.addWeaponAmmo(weaponName, ammoCount) - local loadoutNum, weapon = self.getWeapon(weaponName) + local _, weapon = self.getWeapon(weaponName) if weapon then weapon.ammo = weapon.ammo + ammoCount @@ -443,7 +428,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, end function self.updateWeaponAmmo(weaponName, ammoCount) - local loadoutNum, weapon = self.getWeapon(weaponName) + local _, weapon = self.getWeapon(weaponName) if weapon then weapon.ammo = ammoCount @@ -454,7 +439,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, local loadoutNum, weapon = self.getWeapon(weaponName) if weapon then - local weaponNum, weaponObject = ESX.GetWeapon(weaponName) + local _, weaponObject = ESX.GetWeapon(weaponName) if weaponObject.tints and weaponObject.tints[weaponTintIndex] then self.loadout[loadoutNum].tintIndex = weaponTintIndex @@ -465,7 +450,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, end function self.getWeaponTint(weaponName) - local loadoutNum, weapon = self.getWeapon(weaponName) + local _, weapon = self.getWeapon(weaponName) if weapon then return weapon.tintIndex @@ -477,11 +462,11 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, function self.removeWeapon(weaponName) local weaponLabel - for k,v in ipairs(self.loadout) do + for k, v in ipairs(self.loadout) do if v.name == weaponName then weaponLabel = v.label - for k2,v2 in ipairs(v.components) do + for _, v2 in ipairs(v.components) do self.removeWeaponComponent(weaponName, v2) end @@ -504,7 +489,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, if component then if self.hasWeaponComponent(weaponName, weaponComponent) then - for k,v in ipairs(self.loadout[loadoutNum].components) do + for k, v in ipairs(self.loadout[loadoutNum].components) do if v == weaponComponent then table.remove(self.loadout[loadoutNum].components, k) break @@ -519,7 +504,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, end function self.removeWeaponAmmo(weaponName, ammoCount) - local loadoutNum, weapon = self.getWeapon(weaponName) + local _, weapon = self.getWeapon(weaponName) if weapon then weapon.ammo = weapon.ammo - ammoCount @@ -528,10 +513,10 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, end function self.hasWeaponComponent(weaponName, weaponComponent) - local loadoutNum, weapon = self.getWeapon(weaponName) + local _, weapon = self.getWeapon(weaponName) if weapon then - for k,v in ipairs(weapon.components) do + for _, v in ipairs(weapon.components) do if v == weaponComponent then return true end @@ -544,7 +529,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, end function self.hasWeapon(weaponName) - for k,v in ipairs(self.loadout) do + for _, v in ipairs(self.loadout) do if v.name == weaponName then return true end @@ -553,8 +538,8 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, return false end - function self.hasItem(item, metadata) - for k,v in ipairs(self.inventory) do + function self.hasItem(item) + for _, v in ipairs(self.inventory) do if (v.name == item) and (v.count >= 1) then return v, v.count end @@ -564,15 +549,19 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, end function self.getWeapon(weaponName) - for k,v in ipairs(self.loadout) do + for k, v in ipairs(self.loadout) do if v.name == weaponName then return k, v end end end - function self.showNotification(msg) - self.triggerEvent('esx:showNotification', msg) + function self.showNotification(msg, type, length) + self.triggerEvent('esx:showNotification', msg, type, length) + end + + function self.showAdvancedNotification(sender, subject, msg, textureDict, iconType, flash, saveToBrief, hudColorIndex) + self.triggerEvent('esx:showAdvancedNotification', sender, subject, msg, textureDict, iconType, flash, saveToBrief, hudColorIndex) end function self.showHelpNotification(msg, thisFrame, beep, duration) @@ -580,47 +569,44 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, end function self.getMeta(index, subIndex) - if index then - - if type(index) ~= "string" then - return print("[^1ERROR^7] xPlayer.getMeta ^5index^7 should be ^5string^7!") - end - - if self.metadata[index] then - - if subIndex and type(self.metadata[index]) == "table" then - local _type = type(subIndex) - - if _type == "string" then - if self.metadata[index][subIndex] then - return self.metadata[index][subIndex] - end - return - end - - if _type == "table" then - local returnValues = {} - for i = 1, #subIndex do - if self.metadata[index][subIndex[i]] then - returnValues[subIndex[i]] = self.metadata[index][subIndex[i]] - else - print(("[^1ERROR^7] xPlayer.getMeta ^5%s^7 not esxist on ^5%s^7!"):format(subIndex[i], index)) - end - end - - return returnValues - end - - end - - return self.metadata[index] - else - return print(("[^1ERROR^7] xPlayer.getMeta ^5%s^7 not exist!"):format(index)) - end + if not (index) then return self.metadata end + if type(index) ~= "string" then + return print("[^1ERROR^7] xPlayer.getMeta ^5index^7 should be ^5string^7!") end - return self.metadata + 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 + end + + if (subIndex and type(metaData) == "table") then + local _type = type(subIndex) + + if (_type == "string") then + local value = metaData[subIndex] + return value + end + + if (_type == "table") then + local returnValues = {} + + for i = 1, #subIndex do + local key = subIndex[i] + 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))) + 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)) + end + + return metaData end function self.setMeta(index, value, subValue) @@ -639,14 +625,12 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, 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)) 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)) end @@ -681,7 +665,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, Player(self.source).state:set('metadata', self.metadata, true) end - for fnName,fn in pairs(targetOverrides) do + for fnName, fn in pairs(targetOverrides) do self[fnName] = fn(self) end diff --git a/[core]/es_extended/server/commands.lua b/[core]/es_extended/server/commands.lua index b89ae36a..86c64b46 100644 --- a/[core]/es_extended/server/commands.lua +++ b/[core]/es_extended/server/commands.lua @@ -1,44 +1,65 @@ -ESX.RegisterCommand('setcoords', 'admin', function(xPlayer, args, showError) - xPlayer.setCoords({x = args.x, y = args.y, z = args.z}) -end, false, {help = TranslateCap('command_setcoords'), validate = true, arguments = { - {name = 'x', help = TranslateCap('command_setcoords_x'), type = 'number'}, - {name = 'y', help = TranslateCap('command_setcoords_y'), type = 'number'}, - {name = 'z', help = TranslateCap('command_setcoords_z'), type = 'number'} -}}) +ESX.RegisterCommand('setcoords', 'admin', function(xPlayer, args) + xPlayer.setCoords({ x = args.x, y = args.y, z = args.z }) + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Set Coordinates /setcoords Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "X Coord", value = args.x, inline = true }, + { name = "Y Coord", value = args.y, inline = true }, + { name = "Z Coord", value = args.z, inline = true }, + }) + end +end, false, { + help = TranslateCap('command_setcoords'), + validate = true, + arguments = { + { name = 'x', help = TranslateCap('command_setcoords_x'), type = 'number' }, + { name = 'y', help = TranslateCap('command_setcoords_y'), type = 'number' }, + { name = 'z', help = TranslateCap('command_setcoords_z'), type = 'number' } + } +}) ESX.RegisterCommand('setjob', 'admin', function(xPlayer, args, showError) - if ESX.DoesJobExist(args.job, args.grade) then - args.playerId.setJob(args.job, args.grade) - else - showError(TranslateCap('command_setjob_invalid')) + if not ESX.DoesJobExist(args.job, args.grade) then + return showError(TranslateCap('command_setjob_invalid')) end - ESX.DiscordLogFields("UserActions", "/setjob Triggered", "pink", { - {name = "Player", value = xPlayer.name, inline = true}, - {name = "Job", value = args.job, inline = true}, - {name = "Grade", value = args.grade, inline = true} - }) -end, true, {help = TranslateCap('command_setjob'), validate = true, arguments = { - {name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'}, - {name = 'job', help = TranslateCap('command_setjob_job'), type = 'string'}, - {name = 'grade', help = TranslateCap('command_setjob_grade'), type = 'number'} -}}) + + args.playerId.setJob(args.job, args.grade) + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Set Job /setjob Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Target", value = args.playerId.name, inline = true }, + { name = "Job", value = args.playerId, inline = true }, + { name = "Grade", value = args.playerId, inline = true }, + }) + end +end, true, { + help = TranslateCap('command_setjob'), + validate = true, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' }, + { name = 'job', help = TranslateCap('command_setjob_job'), type = 'string' }, + { name = 'grade', help = TranslateCap('command_setjob_grade'), type = 'number' } + } +}) local upgrades = Config.SpawnVehMaxUpgrades and - { - plate = "ADMINCAR", - modEngine = 3, - modBrakes = 2, - modTransmission = 2, - modSuspension = 3, - modArmor = true, - windowTint = 1 - } or {} + { + plate = "ADMINCAR", + modEngine = 3, + modBrakes = 2, + modTransmission = 2, + modSuspension = 3, + modArmor = true, + windowTint = 1 + } or {} ESX.RegisterCommand('car', 'admin', function(xPlayer, args, showError) if not xPlayer then - return print('[^1ERROR^7] The xPlayer value is nil') + return showError('[^1ERROR^7] The xPlayer value is nil') end - + local playerPed = GetPlayerPed(xPlayer.source) local playerCoords = GetEntityCoords(playerPed) local playerHeading = GetEntityHeading(playerPed) @@ -52,104 +73,206 @@ ESX.RegisterCommand('car', 'admin', function(xPlayer, args, showError) DeleteEntity(playerVehicle) end - ESX.DiscordLogFields("UserActions", "/car Triggered", "pink", { - {name = "Player", value = xPlayer.name, inline = true}, - {name = "ID", value = xPlayer.source, inline = true}, - {name = "Vehicle", value = args.car, inline = true} - }) + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Spawn Car /car Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Vehicle", value = args.car, inline = true } + }) + end ESX.OneSync.SpawnVehicle(args.car, playerCoords, playerHeading, upgrades, function(networkId) if networkId then local vehicle = NetworkGetEntityFromNetworkId(networkId) - for i = 1, 20 do + for _ = 1, 20 do Wait(0) SetPedIntoVehicle(playerPed, vehicle, -1) - + if GetVehiclePedIsIn(playerPed, false) == vehicle then break end end if GetVehiclePedIsIn(playerPed, false) ~= vehicle then - print('[^1ERROR^7] The player could not be seated in the vehicle') + showError('[^1ERROR^7] The player could not be seated in the vehicle') end end end) -end, false, {help = TranslateCap('command_car'), validate = false, arguments = { - {name = 'car',validate = false, help = TranslateCap('command_car_car'), type = 'string'} -}}) +end, false, { + help = TranslateCap('command_car'), + validate = false, + arguments = { + { name = 'car', validate = false, help = TranslateCap('command_car_car'), type = 'string' } + } +}) -ESX.RegisterCommand({'cardel', 'dv'}, 'admin', function(xPlayer, args, showError) +ESX.RegisterCommand({ 'cardel', 'dv' }, 'admin', function(xPlayer, args) local PedVehicle = GetVehiclePedIsIn(GetPlayerPed(xPlayer.source), false) if DoesEntityExist(PedVehicle) then DeleteEntity(PedVehicle) end - local Vehicles = ESX.OneSync.GetVehiclesInArea(GetEntityCoords(GetPlayerPed(xPlayer.source)), tonumber(args.radius) or 5.0) - for i=1, #Vehicles do + local Vehicles = ESX.OneSync.GetVehiclesInArea(GetEntityCoords(GetPlayerPed(xPlayer.source)), + tonumber(args.radius) or 5.0) + for i = 1, #Vehicles do local Vehicle = NetworkGetEntityFromNetworkId(Vehicles[i]) if DoesEntityExist(Vehicle) then DeleteEntity(Vehicle) end end -end, false, {help = TranslateCap('command_cardel'), validate = false, arguments = { - {name = 'radius',validate = false, help = TranslateCap('command_cardel_radius'), type = 'number'} -}}) + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Delete Vehicle /dv Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + }) + end +end, false, { + help = TranslateCap('command_cardel'), + validate = false, + arguments = { + { name = 'radius', validate = false, help = TranslateCap('command_cardel_radius'), type = 'number' } + } +}) ESX.RegisterCommand('setaccountmoney', 'admin', function(xPlayer, args, showError) - if args.playerId.getAccount(args.account) then - args.playerId.setAccountMoney(args.account, args.amount, "Government Grant") - else - showError(TranslateCap('command_giveaccountmoney_invalid')) + if not args.playerId.getAccount(args.account) then + return showError(TranslateCap('command_giveaccountmoney_invalid')) end -end, true, {help = TranslateCap('command_setaccountmoney'), validate = true, arguments = { - {name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'}, - {name = 'account', help = TranslateCap('command_giveaccountmoney_account'), type = 'string'}, - {name = 'amount', help = TranslateCap('command_setaccountmoney_amount'), type = 'number'} -}}) + args.playerId.setAccountMoney(args.account, args.amount, "Government Grant") + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Set Account Money /setaccountmoney Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Target", value = args.playerId.name, inline = true }, + { name = "Account", value = args.account, inline = true }, + { name = "Amount", value = args.amount, inline = true }, + }) + end +end, true, { + help = TranslateCap('command_setaccountmoney'), + validate = true, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' }, + { name = 'account', help = TranslateCap('command_giveaccountmoney_account'), type = 'string' }, + { name = 'amount', help = TranslateCap('command_setaccountmoney_amount'), type = 'number' } + } +}) ESX.RegisterCommand('giveaccountmoney', 'admin', function(xPlayer, args, showError) - if args.playerId.getAccount(args.account) then - args.playerId.addAccountMoney(args.account, args.amount, "Government Grant") - else - showError(TranslateCap('command_giveaccountmoney_invalid')) + if not args.playerId.getAccount(args.account) then + return showError(TranslateCap('command_giveaccountmoney_invalid')) end -end, true, {help = TranslateCap('command_giveaccountmoney'), validate = true, arguments = { - {name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'}, - {name = 'account', help = TranslateCap('command_giveaccountmoney_account'), type = 'string'}, - {name = 'amount', help = TranslateCap('command_giveaccountmoney_amount'), type = 'number'} -}}) + args.playerId.addAccountMoney(args.account, args.amount, "Government Grant") + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Give Account Money /giveaccountmoney Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Target", value = args.playerId.name, inline = true }, + { name = "Account", value = args.account, inline = true }, + { name = "Amount", value = args.amount, inline = true }, + }) + end +end, true, { + help = TranslateCap('command_giveaccountmoney'), + validate = true, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' }, + { name = 'account', help = TranslateCap('command_giveaccountmoney_account'), type = 'string' }, + { name = 'amount', help = TranslateCap('command_giveaccountmoney_amount'), type = 'number' } + } +}) + +ESX.RegisterCommand('removeaccountmoney', 'admin', function(xPlayer, args, showError) + if not args.playerId.getAccount(args.account) then + return showError(TranslateCap('command_removeaccountmoney_invalid')) + end + args.playerId.removeAccountMoney(args.account, args.amount, "Government Tax") + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Remove Account Money /removeaccountmoney Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Target", value = args.playerId.name, inline = true }, + { name = "Account", value = args.account, inline = true }, + { name = "Amount", value = args.amount, inline = true }, + }) + end +end, true, { + help = TranslateCap('command_removeaccountmoney'), + validate = true, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' }, + { name = 'account', help = TranslateCap('command_removeaccountmoney_account'), type = 'string' }, + { name = 'amount', help = TranslateCap('command_removeaccountmoney_amount'), type = 'number' } + } +}) if not Config.OxInventory then - ESX.RegisterCommand('giveitem', 'admin', function(xPlayer, args, showError) + ESX.RegisterCommand('giveitem', 'admin', function(xPlayer, args) args.playerId.addInventoryItem(args.item, args.count) - end, true, {help = TranslateCap('command_giveitem'), validate = true, arguments = { - {name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'}, - {name = 'item', help = TranslateCap('command_giveitem_item'), type = 'item'}, - {name = 'count', help = TranslateCap('command_giveitem_count'), type = 'number'} - }}) + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Give Item /giveitem Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Target", value = args.playerId.name, inline = true }, + { name = "Item", value = args.item, inline = true }, + { name = "Quantity", value = args.count, inline = true }, + }) + end + end, true, { + help = TranslateCap('command_giveitem'), + validate = true, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' }, + { name = 'item', help = TranslateCap('command_giveitem_item'), type = 'item' }, + { name = 'count', help = TranslateCap('command_giveitem_count'), type = 'number' } + } + }) ESX.RegisterCommand('giveweapon', 'admin', function(xPlayer, args, showError) if args.playerId.hasWeapon(args.weapon) then - showError(TranslateCap('command_giveweapon_hasalready')) - else - args.playerId.addWeapon(args.weapon, args.ammo) + return showError(TranslateCap('command_giveweapon_hasalready')) end - end, true, {help = TranslateCap('command_giveweapon'), validate = true, arguments = { - {name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'}, - {name = 'weapon', help = TranslateCap('command_giveweapon_weapon'), type = 'weapon'}, - {name = 'ammo', help = TranslateCap('command_giveweapon_ammo'), type = 'number'} - }}) + args.playerId.addWeapon(args.weapon, args.ammo) + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Give Weapon /giveweapon Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Target", value = args.playerId.name, inline = true }, + { name = "Weapon", value = args.weapon, inline = true }, + { name = "Ammo", value = args.ammo, inline = true }, + }) + end + end, true, { + help = TranslateCap('command_giveweapon'), + validate = true, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' }, + { name = 'weapon', help = TranslateCap('command_giveweapon_weapon'), type = 'weapon' }, + { name = 'ammo', help = TranslateCap('command_giveweapon_ammo'), type = 'number' } + } + }) ESX.RegisterCommand('giveammo', 'admin', function(xPlayer, args, showError) - if args.playerId.hasWeapon(args.weapon) then - args.playerId.addWeaponAmmo(args.weapon, args.ammo) - else - showError(TranslateCap("command_giveammo_noweapon_found")) + if not args.playerId.hasWeapon(args.weapon) then + return showError(TranslateCap("command_giveammo_noweapon_found")) end - end, true, {help = TranslateCap('command_giveweapon'), validate = false, arguments = { - {name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'}, - {name = 'weapon', help = TranslateCap('command_giveammo_weapon'), type = 'weapon'}, - {name = 'ammo', help = TranslateCap('command_giveammo_ammo'), type = 'number'} - }}) + args.playerId.addWeaponAmmo(args.weapon, args.ammo) + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Give Ammunition /giveammo Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Target", value = args.playerId.name, inline = true }, + { name = "Weapon", value = args.weapon, inline = true }, + { name = "Ammo", value = args.ammo, inline = true }, + }) + end + end, true, { + help = TranslateCap('command_giveweapon'), + validate = false, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' }, + { name = 'weapon', help = TranslateCap('command_giveammo_weapon'), type = 'weapon' }, + { name = 'ammo', help = TranslateCap('command_giveammo_ammo'), type = 'number' } + } + }) ESX.RegisterCommand('giveweaponcomponent', 'admin', function(xPlayer, args, showError) if args.playerId.hasWeapon(args.weaponName) then @@ -160,6 +283,16 @@ if not Config.OxInventory then showError(TranslateCap('command_giveweaponcomponent_hasalready')) else args.playerId.addWeaponComponent(args.weaponName, args.componentName) + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Give Weapon Component /giveweaponcomponent Triggered!", + "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Target", value = args.playerId.name, inline = true }, + { name = "Weapon", value = args.weaponName, inline = true }, + { name = "Component", value = args.componentName, inline = true }, + }) + end end else showError(TranslateCap('command_giveweaponcomponent_invalid')) @@ -167,134 +300,258 @@ if not Config.OxInventory then else showError(TranslateCap('command_giveweaponcomponent_missingweapon')) end - end, true, {help = TranslateCap('command_giveweaponcomponent'), validate = true, arguments = { - {name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'}, - {name = 'weaponName', help = TranslateCap('command_giveweapon_weapon'), type = 'weapon'}, - {name = 'componentName', help = TranslateCap('command_giveweaponcomponent_component'), type = 'string'} - }}) + end, true, { + help = TranslateCap('command_giveweaponcomponent'), + validate = true, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' }, + { name = 'weaponName', help = TranslateCap('command_giveweapon_weapon'), type = 'weapon' }, + { name = 'componentName', help = TranslateCap('command_giveweaponcomponent_component'), type = 'string' } + } + }) end -ESX.RegisterCommand({'clear', 'cls'}, 'user', function(xPlayer, args, showError) +ESX.RegisterCommand({ 'clear', 'cls' }, 'user', function(xPlayer) xPlayer.triggerEvent('chat:clear') -end, false, {help = TranslateCap('command_clear')}) +end, false, { help = TranslateCap('command_clear') }) -ESX.RegisterCommand({'clearall', 'clsall'}, 'admin', function(xPlayer, args, showError) +ESX.RegisterCommand({ 'clearall', 'clsall' }, 'admin', function(xPlayer) TriggerClientEvent('chat:clear', -1) -end, true, {help = TranslateCap('command_clearall')}) + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Clear Chat /clearall Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + }) + end +end, true, { help = TranslateCap('command_clearall') }) -ESX.RegisterCommand("refreshjobs", 'admin', function(xPlayer, args, showError) +ESX.RegisterCommand("refreshjobs", 'admin', function() ESX.RefreshJobs() -end, true, {help = TranslateCap('command_clearall')}) +end, true, { help = TranslateCap('command_clearall') }) if not Config.OxInventory then - ESX.RegisterCommand('clearinventory', 'admin', function(xPlayer, args, showError) - for k,v in ipairs(args.playerId.inventory) do + ESX.RegisterCommand('clearinventory', 'admin', function(xPlayer, args) + for _, v in ipairs(args.playerId.inventory) do if v.count > 0 then args.playerId.setInventoryItem(v.name, 0) end end - TriggerEvent('esx:playerInventoryCleared',args.playerId) - end, true, {help = TranslateCap('command_clearinventory'), validate = true, arguments = { - {name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'} - }}) + TriggerEvent('esx:playerInventoryCleared', args.playerId) + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Clear Inventory /clearinventory Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Target", value = args.playerId.name, inline = true }, + }) + end + end, true, { + help = TranslateCap('command_clearinventory'), + validate = true, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' } + } + }) - ESX.RegisterCommand('clearloadout', 'admin', function(xPlayer, args, showError) - for i=#args.playerId.loadout, 1, -1 do + ESX.RegisterCommand('clearloadout', 'admin', function(xPlayer, args) + for i = #args.playerId.loadout, 1, -1 do args.playerId.removeWeapon(args.playerId.loadout[i].name) end - TriggerEvent('esx:playerLoadoutCleared',args.playerId) - end, true, {help = TranslateCap('command_clearloadout'), validate = true, arguments = { - {name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'} - }}) + TriggerEvent('esx:playerLoadoutCleared', args.playerId) + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "/clearloadout Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Target", value = args.playerId.name, inline = true }, + }) + end + end, true, { + help = TranslateCap('command_clearloadout'), + validate = true, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' } + } + }) end -ESX.RegisterCommand('setgroup', 'admin', function(xPlayer, args, showError) +ESX.RegisterCommand('setgroup', 'admin', function(xPlayer, args) if not args.playerId then args.playerId = xPlayer.source end - if args.group == "superadmin" then args.group = "admin" print("[^3WARNING^7] ^5Superadmin^7 detected, setting group to ^5admin^7") end + if args.group == "superadmin" then + args.group = "admin" + print("[^3WARNING^7] ^5Superadmin^7 detected, setting group to ^5admin^7") + end args.playerId.setGroup(args.group) -end, true, {help = TranslateCap('command_setgroup'), validate = true, arguments = { - {name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'}, - {name = 'group', help = TranslateCap('command_setgroup_group'), type = 'string'}, -}}) + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "/setgroup Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Target", value = args.playerId.name, inline = true }, + { name = "Group", value = args.group, inline = true }, + }) + end +end, true, { + help = TranslateCap('command_setgroup'), + validate = true, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' }, + { name = 'group', help = TranslateCap('command_setgroup_group'), type = 'string' }, + } +}) -ESX.RegisterCommand('save', 'admin', function(xPlayer, args, showError) +ESX.RegisterCommand('save', 'admin', function(_, args) Core.SavePlayer(args.playerId) - print("[^2Info^0] Saved Player - ^5".. args.playerId.source .. "^0") -end, true, {help = TranslateCap('command_save'), validate = true, arguments = { - {name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'} -}}) + print(('[^2Info^0] Saved Player - ^5%s^0'):format(args.playerId.source)) +end, true, { + help = TranslateCap('command_save'), + validate = true, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' } + } +}) -ESX.RegisterCommand('saveall', 'admin', function(xPlayer, args, showError) +ESX.RegisterCommand('saveall', 'admin', function() Core.SavePlayers() -end, true, {help = TranslateCap('command_saveall')}) +end, true, { help = TranslateCap('command_saveall') }) -ESX.RegisterCommand('group', {"user", "admin"}, function(xPlayer, args, showError) - print(xPlayer.getName()..", You are currently: ^5".. xPlayer.getGroup() .. "^0") +ESX.RegisterCommand('group', { "user", "admin" }, function(xPlayer, _, _) + print(('%s, you are currently: ^5%s^0'):format(xPlayer.getName(), xPlayer.getGroup())) end, true) -ESX.RegisterCommand('job', {"user", "admin"}, function(xPlayer, args, showError) - print(xPlayer.getName()..", You are currently: ^5".. xPlayer.getJob().name.. "^0 - ^5".. xPlayer.getJob().grade_label .. "^0") +ESX.RegisterCommand('job', { "user", "admin" }, function(xPlayer, _, _) + print(('%s, your job is: ^5%s^0 - ^5%s^0'):format(xPlayer.getName(), xPlayer.getJob().name, + xPlayer.getJob().grade_label)) end, true) -ESX.RegisterCommand('info', {"user", "admin"}, function(xPlayer, args, showError) +ESX.RegisterCommand('info', { "user", "admin" }, function(xPlayer) local job = xPlayer.getJob().name local jobgrade = xPlayer.getJob().grade_name - print("^2ID : ^5"..xPlayer.source.." ^0| ^2Name:^5"..xPlayer.getName().." ^0 | ^2Group:^5"..xPlayer.getGroup().."^0 | ^2Job:^5".. job.."^0") + print(('^2ID: ^5%s^0 | ^2Name: ^5%s^0 | ^2Group: ^5%s^0 | ^2Job: ^5%s^0'):format(xPlayer.source, xPlayer.getName(), + xPlayer.getGroup(), job)) end, true) -ESX.RegisterCommand('coords', "admin", function(xPlayer, args, showError) - local ped = GetPlayerPed(xPlayer.source) +ESX.RegisterCommand('coords', "admin", function(xPlayer) + local ped = GetPlayerPed(xPlayer.source) local coords = GetEntityCoords(ped, false) local heading = GetEntityHeading(ped) - print("Coords - Vector3: ^5".. vector3(coords.x,coords.y,coords.z).. "^0") - print("Coords - Vector4: ^5".. vector4(coords.x, coords.y, coords.z, heading) .. "^0") + print(('Coords - Vector3: ^5%s^0'):format(vector3(coords.x, coords.y, coords.z))) + print(('Coords - Vector4: ^5%s^0'):format(vector4(coords.x, coords.y, coords.z, heading))) end, true) -ESX.RegisterCommand('tpm', "admin", function(xPlayer, args, showError) +ESX.RegisterCommand('tpm', "admin", function(xPlayer) xPlayer.triggerEvent("esx:tpm") -end, true) - -ESX.RegisterCommand('goto', "admin", function(xPlayer, args, showError) - local targetCoords = args.playerId.getCoords() - xPlayer.setCoords(targetCoords) -end, true, {help = TranslateCap('command_goto'), validate = true, arguments = { - {name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'} -}}) - -ESX.RegisterCommand('bring', "admin", function(xPlayer, args, showError) - local playerCoords = xPlayer.getCoords() - args.playerId.setCoords(playerCoords) -end, true, {help = TranslateCap('command_bring'), validate = true, arguments = { - {name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'} -}}) - -ESX.RegisterCommand('kill', "admin", function(xPlayer, args, showError) - args.playerId.triggerEvent("esx:killPlayer") -end, true, {help = TranslateCap('command_kill'), validate = true, arguments = { - {name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'} -}}) - -ESX.RegisterCommand('freeze', "admin", function(xPlayer, args, showError) - args.playerId.triggerEvent('esx:freezePlayer', "freeze") -end, true, {help = TranslateCap('command_freeze'), validate = true, arguments = { - {name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'} -}}) - -ESX.RegisterCommand('unfreeze', "admin", function(xPlayer, args, showError) - args.playerId.triggerEvent('esx:freezePlayer', "unfreeze") -end, true, {help = TranslateCap('command_unfreeze'), validate = true, arguments = { - {name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'} -}}) - -ESX.RegisterCommand("noclip", 'admin', function(xPlayer, args, showError) - xPlayer.triggerEvent('esx:noclip') -end, false) - -ESX.RegisterCommand('players', "admin", function(xPlayer, args, showError) - local xPlayers = ESX.GetExtendedPlayers() -- Returns all xPlayers - print("^5"..#xPlayers.." ^2online player(s)^0") - for i=1, #(xPlayers) do - local xPlayer = xPlayers[i] - print("^1[ ^2ID : ^5"..xPlayer.source.." ^0| ^2Name : ^5"..xPlayer.getName().." ^0 | ^2Group : ^5"..xPlayer.getGroup().." ^0 | ^2Identifier : ^5".. xPlayer.identifier .."^1]^0\n") + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Admin Teleport /tpm Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + }) + end +end, true) + +ESX.RegisterCommand('goto', "admin", function(xPlayer, args) + local targetCoords = args.playerId.getCoords() + xPlayer.setCoords(targetCoords) + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Admin Teleport /goto Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Target", value = args.playerId.name, inline = true }, + { name = "Target Coords", value = targetCoords, inline = true }, + }) + end +end, true, { + help = TranslateCap('command_goto'), + validate = true, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' } + } +}) + +ESX.RegisterCommand('bring', "admin", function(xPlayer, args) + local targetCoords = args.playerId.getCoords() + local playerCoords = xPlayer.getCoords() + args.playerId.setCoords(playerCoords) + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Admin Teleport /bring Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Target", value = args.playerId.name, inline = true }, + { name = "Target Coords", value = targetCoords, inline = true }, + }) + end +end, true, { + help = TranslateCap('command_bring'), + validate = true, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' } + } +}) + +ESX.RegisterCommand('kill', "admin", function(xPlayer, args) + args.playerId.triggerEvent("esx:killPlayer") + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Kill Command /kill Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Target", value = args.playerId.name, inline = true }, + }) + end +end, true, { + help = TranslateCap('command_kill'), + validate = true, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' } + } +}) + +ESX.RegisterCommand('freeze', "admin", function(xPlayer, args) + args.playerId.triggerEvent('esx:freezePlayer', "freeze") + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Admin Freeze /freeze Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Target", value = args.playerId.name, inline = true }, + }) + end +end, true, { + help = TranslateCap('command_freeze'), + validate = true, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' } + } +}) + +ESX.RegisterCommand('unfreeze', "admin", function(xPlayer, args) + args.playerId.triggerEvent('esx:freezePlayer', "unfreeze") + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Admin UnFreeze /unfreeze Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Target", value = args.playerId.name, inline = true }, + }) + end +end, true, { + help = TranslateCap('command_unfreeze'), + validate = true, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' } + } +}) + +ESX.RegisterCommand("noclip", 'admin', function(xPlayer) + xPlayer.triggerEvent('esx:noclip') + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Admin NoClip /noclip Triggered!", "pink", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + }) + end +end, false) + +ESX.RegisterCommand('players', "admin", function() + local xPlayers = ESX.GetExtendedPlayers() -- Returns all xPlayers + print(('^5%s^2 online player(s)^0'):format(#xPlayers)) + for i = 1, #(xPlayers) do + local xPlayer = xPlayers[i] + print(('^1[^2ID: ^5%s^0 | ^2Name : ^5%s^0 | ^2Group : ^5%s^0 | ^2Identifier : ^5%s^1]^0\n'):format( + xPlayer.source, xPlayer.getName(), xPlayer.getGroup(), xPlayer.identifier)) end end, true) diff --git a/[core]/es_extended/server/common.lua b/[core]/es_extended/server/common.lua index 57f1479e..c0749590 100644 --- a/[core]/es_extended/server/common.lua +++ b/[core]/es_extended/server/common.lua @@ -19,68 +19,68 @@ AddEventHandler("esx:getSharedObject", function() end) exports('getSharedObject', function() - return ESX + return ESX end) if GetResourceState('ox_inventory') ~= 'missing' then - Config.OxInventory = true - Config.PlayerFunctionOverride = 'OxInventory' - SetConvarReplicated('inventory:framework', 'esx') - SetConvarReplicated('inventory:weight', Config.MaxWeight * 1000) + Config.OxInventory = true + Config.PlayerFunctionOverride = 'OxInventory' + SetConvarReplicated('inventory:framework', 'esx') + SetConvarReplicated('inventory:weight', Config.MaxWeight * 1000) end local function StartDBSync() - CreateThread(function() - while true do - Wait(10 * 60 * 1000) - Core.SavePlayers() - end - end) + CreateThread(function() + while true do + Wait(10 * 60 * 1000) + Core.SavePlayers() + end + end) end MySQL.ready(function() - Core.DatabaseConnected = true - if not Config.OxInventory then - local items = MySQL.query.await('SELECT * FROM items') - for k, v in ipairs(items) do - ESX.Items[v.name] = {label = v.label, weight = v.weight, rare = v.rare, canRemove = v.can_remove} - end - else - TriggerEvent('__cfx_export_ox_inventory_Items', function(ref) - if ref then - ESX.Items = ref() - end - end) + Core.DatabaseConnected = true + if not Config.OxInventory then + local items = MySQL.query.await('SELECT * FROM items') + for _, v in ipairs(items) do + ESX.Items[v.name] = { label = v.label, weight = v.weight, rare = v.rare, canRemove = v.can_remove } + end + else + TriggerEvent('__cfx_export_ox_inventory_Items', function(ref) + if ref then + ESX.Items = ref() + end + end) - AddEventHandler('ox_inventory:itemList', function(items) - ESX.Items = items - end) + AddEventHandler('ox_inventory:itemList', function(items) + ESX.Items = items + end) - while not next(ESX.Items) do - Wait(0) - end - end + while not next(ESX.Items) do + Wait(0) + end + end - ESX.RefreshJobs() + ESX.RefreshJobs() - print(('[^2INFO^7] ESX ^5Legacy %s^0 initialized!'):format(GetResourceMetadata(GetCurrentResourceName(), "version", 0))) - - StartDBSync() - if Config.EnablePaycheck then + print(('[^2INFO^7] ESX ^5Legacy %s^0 initialized!'):format(GetResourceMetadata(GetCurrentResourceName(), "version", 0))) + + StartDBSync() + if Config.EnablePaycheck then StartPayCheck() end end) RegisterServerEvent('esx:clientLog') AddEventHandler('esx:clientLog', function(msg) - if Config.EnableDebug then - print(('[^2TRACE^7] %s^7'):format(msg)) - end + if Config.EnableDebug then + print(('[^2TRACE^7] %s^7'):format(msg)) + end end) RegisterNetEvent("esx:ReturnVehicleType", function(Type, Request) - if Core.ClientCallbacks[Request] then - Core.ClientCallbacks[Request](Type) - Core.ClientCallbacks[Request] = nil - end + if Core.ClientCallbacks[Request] then + Core.ClientCallbacks[Request](Type) + Core.ClientCallbacks[Request] = nil + end end) diff --git a/[core]/es_extended/server/functions.lua b/[core]/es_extended/server/functions.lua index 202e1b5e..d70369a1 100644 --- a/[core]/es_extended/server/functions.lua +++ b/[core]/es_extended/server/functions.lua @@ -1,251 +1,283 @@ function ESX.Trace(msg) - if Config.EnableDebug then - print(('[^2TRACE^7] %s^7'):format(msg)) - end + if Config.EnableDebug then + print(('[^2TRACE^7] %s^7'):format(msg)) + end end function ESX.RegisterCommand(name, group, cb, allowConsole, suggestion) - if type(name) == 'table' then - for k, v in ipairs(name) do - ESX.RegisterCommand(v, group, cb, allowConsole, suggestion) - end + if type(name) == 'table' then + for _, v in ipairs(name) do + ESX.RegisterCommand(v, group, cb, allowConsole, suggestion) + end - return - end + return + end - if Core.RegisteredCommands[name] then - print(('[^3WARNING^7] Command ^5"%s" ^7already registered, overriding command'):format(name)) + if Core.RegisteredCommands[name] then + print(('[^3WARNING^7] Command ^5"%s" ^7already registered, overriding command'):format(name)) - if Core.RegisteredCommands[name].suggestion then - TriggerClientEvent('chat:removeSuggestion', -1, ('/%s'):format(name)) - end - end + if Core.RegisteredCommands[name].suggestion then + TriggerClientEvent('chat:removeSuggestion', -1, ('/%s'):format(name)) + end + end - if suggestion then - if not suggestion.arguments then - suggestion.arguments = {} - end - if not suggestion.help then - suggestion.help = '' - end + if suggestion then + if not suggestion.arguments then + suggestion.arguments = {} + end + if not suggestion.help then + suggestion.help = '' + end - TriggerClientEvent('chat:addSuggestion', -1, ('/%s'):format(name), suggestion.help, suggestion.arguments) - end + TriggerClientEvent('chat:addSuggestion', -1, ('/%s'):format(name), suggestion.help, suggestion.arguments) + end - Core.RegisteredCommands[name] = {group = group, cb = cb, allowConsole = allowConsole, suggestion = suggestion} + Core.RegisteredCommands[name] = { group = group, cb = cb, allowConsole = allowConsole, suggestion = suggestion } - RegisterCommand(name, function(playerId, args, rawCommand) - local command = Core.RegisteredCommands[name] + RegisterCommand(name, function(playerId, args) + local command = Core.RegisteredCommands[name] - if not command.allowConsole and playerId == 0 then - print(('[^3WARNING^7] ^5%s'):format(TranslateCap('commanderror_console'))) - else - local xPlayer, error = ESX.Players[playerId], nil + if not command.allowConsole and playerId == 0 then + print(('[^3WARNING^7] ^5%s'):format(TranslateCap('commanderror_console'))) + else + local xPlayer, error = ESX.Players[playerId], nil - if command.suggestion then - if command.suggestion.validate then - if #args ~= #command.suggestion.arguments then - error = TranslateCap('commanderror_argumentmismatch', #args, #command.suggestion.arguments) - end - end + if command.suggestion then + if command.suggestion.validate then + if #args ~= #command.suggestion.arguments then + error = TranslateCap('commanderror_argumentmismatch', #args, #command.suggestion.arguments) + end + end - if not error and command.suggestion.arguments then - local newArgs = {} + if not error and command.suggestion.arguments then + local newArgs = {} - for k, v in ipairs(command.suggestion.arguments) do - if v.type then - if v.type == 'number' then - local newArg = tonumber(args[k]) + for k, v in ipairs(command.suggestion.arguments) do + if v.type then + if v.type == 'number' then + local newArg = tonumber(args[k]) - if newArg then - newArgs[v.name] = newArg - else - error = TranslateCap('commanderror_argumentmismatch_number', k) - end - elseif v.type == 'player' or v.type == 'playerId' then - local targetPlayer = tonumber(args[k]) + if newArg then + newArgs[v.name] = newArg + else + error = TranslateCap('commanderror_argumentmismatch_number', k) + end + elseif v.type == 'player' or v.type == 'playerId' then + local targetPlayer = tonumber(args[k]) - if args[k] == 'me' then - targetPlayer = playerId - end + if args[k] == 'me' then + targetPlayer = playerId + end - if targetPlayer then - local xTargetPlayer = ESX.GetPlayerFromId(targetPlayer) + if targetPlayer then + local xTargetPlayer = ESX.GetPlayerFromId(targetPlayer) - if xTargetPlayer then - if v.type == 'player' then - newArgs[v.name] = xTargetPlayer - else - newArgs[v.name] = targetPlayer - end - else - error = TranslateCap('commanderror_invalidplayerid') - end - else - error = TranslateCap('commanderror_argumentmismatch_number', k) - end - elseif v.type == 'string' then - newArgs[v.name] = args[k] - elseif v.type == 'item' then - if ESX.Items[args[k]] then - newArgs[v.name] = args[k] - else - error = TranslateCap('commanderror_invaliditem') - end - elseif v.type == 'weapon' then - if ESX.GetWeapon(args[k]) then - newArgs[v.name] = string.upper(args[k]) - else - error = TranslateCap('commanderror_invalidweapon') - end - elseif v.type == 'any' then - newArgs[v.name] = args[k] - end - end + if xTargetPlayer then + if v.type == 'player' then + newArgs[v.name] = xTargetPlayer + else + newArgs[v.name] = targetPlayer + end + else + error = TranslateCap('commanderror_invalidplayerid') + end + else + error = TranslateCap('commanderror_argumentmismatch_number', k) + end + elseif v.type == 'string' then + local newArg = tonumber(args[k]) + if not newArg then + newArgs[v.name] = args[k] + else + error = TranslateCap('commanderror_argumentmismatch_string', k) + end + elseif v.type == 'item' then + if ESX.Items[args[k]] then + newArgs[v.name] = args[k] + else + error = TranslateCap('commanderror_invaliditem') + end + elseif v.type == 'weapon' then + if ESX.GetWeapon(args[k]) then + newArgs[v.name] = string.upper(args[k]) + else + error = TranslateCap('commanderror_invalidweapon') + end + elseif v.type == 'any' then + newArgs[v.name] = args[k] + elseif v.type == 'merge' then + local lenght = 0 + for i = 1, k - 1 do + lenght = lenght + string.len(args[i]) + 1 + end + local merge = table.concat(args, " ") - if not v.validate then - error = nil - end + newArgs[v.name] = string.sub(merge, lenght) + end + end - if error then - break - end - end + --backwards compatibility + if not v.validate and not v.type then + error = nil + end - args = newArgs - end - end + if error then + break + end + end - if error then - if playerId == 0 then - print(('[^3WARNING^7] %s^7'):format(error)) - else - xPlayer.showNotification(error) - end - else - cb(xPlayer or false, args, function(msg) - if playerId == 0 then - print(('[^3WARNING^7] %s^7'):format(msg)) - else - xPlayer.showNotification(msg) - end - end) - end - end - end, true) + args = newArgs + end + end - if type(group) == 'table' then - for k, v in ipairs(group) do - ExecuteCommand(('add_ace group.%s command.%s allow'):format(v, name)) - end - else - ExecuteCommand(('add_ace group.%s command.%s allow'):format(group, name)) - end + if error then + if playerId == 0 then + print(('[^3WARNING^7] %s^7'):format(error)) + else + xPlayer.showNotification(error) + end + else + cb(xPlayer or false, args, function(msg) + if playerId == 0 then + print(('[^3WARNING^7] %s^7'):format(msg)) + else + xPlayer.showNotification(msg) + end + end) + end + end + end, true) + + if type(group) == 'table' then + for _, v in ipairs(group) do + ExecuteCommand(('add_ace group.%s command.%s allow'):format(v, name)) + end + else + ExecuteCommand(('add_ace group.%s command.%s allow'):format(group, name)) + end end function Core.SavePlayer(xPlayer, cb) - local parameters = { - json.encode(xPlayer.getAccounts(true)), - xPlayer.job.name, - xPlayer.job.grade, - xPlayer.group, - json.encode(xPlayer.getCoords()), - json.encode(xPlayer.getInventory(true)), - json.encode(xPlayer.getLoadout(true)), - json.encode(xPlayer.getMeta()), - xPlayer.identifier - } + local parameters = { + json.encode(xPlayer.getAccounts(true)), + xPlayer.job.name, + xPlayer.job.grade, + xPlayer.group, + json.encode(xPlayer.getCoords()), + json.encode(xPlayer.getInventory(true)), + json.encode(xPlayer.getLoadout(true)), + json.encode(xPlayer.getMeta()), + xPlayer.identifier + } - MySQL.prepare( - 'UPDATE `users` SET `accounts` = ?, `job` = ?, `job_grade` = ?, `group` = ?, `position` = ?, `inventory` = ?, `loadout` = ?, `metadata` = ? WHERE `identifier` = ?', - parameters, - function(affectedRows) - if affectedRows == 1 then - print(('[^2INFO^7] Saved player ^5"%s^7"'):format(xPlayer.name)) - TriggerEvent('esx:playerSaved', xPlayer.playerId, xPlayer) - end - if cb then - cb() - end - end - ) + MySQL.prepare( + 'UPDATE `users` SET `accounts` = ?, `job` = ?, `job_grade` = ?, `group` = ?, `position` = ?, `inventory` = ?, `loadout` = ?, `metadata` = ? WHERE `identifier` = ?', + parameters, + function(affectedRows) + if affectedRows == 1 then + print(('[^2INFO^7] Saved player ^5"%s^7"'):format(xPlayer.name)) + TriggerEvent('esx:playerSaved', xPlayer.playerId, xPlayer) + end + if cb then + cb() + end + end + ) end function Core.SavePlayers(cb) - local xPlayers = ESX.Players - if not next(xPlayers) then - return - end - - local startTime = os.time() - local parameters = {} + local xPlayers = ESX.Players + if not next(xPlayers) then + return + end - for _, xPlayer in pairs(ESX.Players) do - parameters[#parameters + 1] = { - json.encode(xPlayer.getAccounts(true)), - xPlayer.job.name, - xPlayer.job.grade, - xPlayer.group, - json.encode(xPlayer.getCoords()), - json.encode(xPlayer.getInventory(true)), - json.encode(xPlayer.getLoadout(true)), - json.encode(xPlayer.getMeta()), - xPlayer.identifier - } - end + local startTime = os.time() + local parameters = {} - MySQL.prepare( - "UPDATE `users` SET `accounts` = ?, `job` = ?, `job_grade` = ?, `group` = ?, `position` = ?, `inventory` = ?, `loadout` = ?, `metadata` = ? WHERE `identifier` = ?", - parameters, - function(results) - if not results then - return - end + for _, xPlayer in pairs(ESX.Players) do + parameters[#parameters + 1] = { + json.encode(xPlayer.getAccounts(true)), + xPlayer.job.name, + xPlayer.job.grade, + xPlayer.group, + json.encode(xPlayer.getCoords()), + json.encode(xPlayer.getInventory(true)), + json.encode(xPlayer.getLoadout(true)), + json.encode(xPlayer.getMeta()), + xPlayer.identifier + } + end - if type(cb) == 'function' then - return cb() - end - - print(('[^2INFO^7] Saved ^5%s^7 %s over ^5%s^7 ms'):format(#parameters, #parameters > 1 and 'players' or 'player', ESX.Math.Round((os.time() - startTime) / 1000000, 2))) - end - ) + MySQL.prepare( + "UPDATE `users` SET `accounts` = ?, `job` = ?, `job_grade` = ?, `group` = ?, `position` = ?, `inventory` = ?, `loadout` = ?, `metadata` = ? WHERE `identifier` = ?", + parameters, + function(results) + if not results then + return + end + + if type(cb) == 'function' then + return cb() + end + + print(('[^2INFO^7] Saved ^5%s^7 %s over ^5%s^7 ms'):format(#parameters, #parameters > 1 and 'players' or 'player', ESX.Math.Round((os.time() - startTime) / 1000000, 2))) + end + ) end ESX.GetPlayers = GetPlayers +local function checkTable(key, val, player, xPlayers) + for valIndex = 1, #val do + local value = val[valIndex] + if not xPlayers[value] then + xPlayers[value] = {} + end + + if (key == 'job' and player.job.name == value) or player[key] == value then + xPlayers[value][#xPlayers[value] + 1] = player + end + end +end + function ESX.GetExtendedPlayers(key, val) - local xPlayers = {} - for k, v in pairs(ESX.Players) do - if key then - if (key == 'job' and v.job.name == val) or v[key] == val then - xPlayers[#xPlayers + 1] = v - end - else - xPlayers[#xPlayers + 1] = v - end - end - return xPlayers + if not key then return ESX.Players end + + local xPlayers = {} + if type(val) == "table" then + for _, v in pairs(ESX.Players) do + checkTable(key, val, v, xPlayers) + end + else + for _, v in pairs(ESX.Players) do + if (key == 'job' and v.job.name == val) or v[key] == val then + xPlayers[#xPlayers + 1] = v + end + end + end + + return xPlayers end function ESX.GetPlayerFromId(source) - return ESX.Players[tonumber(source)] + return ESX.Players[tonumber(source)] end function ESX.GetPlayerFromIdentifier(identifier) - return Core.playersByIdentifier[identifier] + return Core.playersByIdentifier[identifier] end function ESX.GetIdentifier(playerId) - local fxDk = GetConvarInt('sv_fxdkMode', 0) - if fxDk == 1 then - return "ESX-DEBUG-LICENCE" - end - for k, v in ipairs(GetPlayerIdentifiers(playerId)) do - if string.match(v, 'license:') then - local identifier = string.gsub(v, 'license:', '') - return identifier - end - end + local fxDk = GetConvarInt('sv_fxdkMode', 0) + if fxDk == 1 then + return "ESX-DEBUG-LICENCE" + end + for _, v in ipairs(GetPlayerIdentifiers(playerId)) do + if string.match(v, 'license:') then + local identifier = string.gsub(v, 'license:', '') + return identifier + end + end end ---@param model string|number @@ -253,203 +285,231 @@ end ---@param cb function function ESX.GetVehicleType(model, player, cb) - model = type(model) == 'string' and joaat(model) or model - - if Core.vehicleTypesByModel[model] then - return cb(Core.vehicleTypesByModel[model]) - end + model = type(model) == 'string' and joaat(model) or model - ESX.TriggerClientCallback(player, "esx:GetVehicleType", function(vehicleType) - Core.vehicleTypesByModel[model] = vehicleType - cb(vehicleType) - end, model) + if Core.vehicleTypesByModel[model] then + return cb(Core.vehicleTypesByModel[model]) + end + + ESX.TriggerClientCallback(player, "esx:GetVehicleType", function(vehicleType) + Core.vehicleTypesByModel[model] = vehicleType + cb(vehicleType) + end, model) end function ESX.DiscordLog(name, title, color, message) - - local webHook = Config.DiscordLogs.Webhooks[name] or Config.DiscordLogs.Webhooks.default - local embedData = {{ - ['title'] = title, - ['color'] = Config.DiscordLogs.Colors[color] or Config.DiscordLogs.Colors.default, - ['footer'] = { - ['text'] = "| ESX Logs | " .. os.date(), - ['icon_url'] = "https://cdn.discordapp.com/attachments/944789399852417096/1020099828266586193/blanc-800x800.png" - }, - ['description'] = message, - ['author'] = { - ['name'] = "ESX Framework", - ['icon_url'] = "https://cdn.discordapp.com/emojis/939245183621558362.webp?size=128&quality=lossless" - } - }} - PerformHttpRequest(webHook, nil, 'POST', json.encode({ - username = 'Logs', - embeds = embedData - }), { - ['Content-Type'] = 'application/json' - }) + local webHook = Config.DiscordLogs.Webhooks[name] or Config.DiscordLogs.Webhooks.default + local embedData = { { + ['title'] = title, + ['color'] = Config.DiscordLogs.Colors[color] or Config.DiscordLogs.Colors.default, + ['footer'] = { + ['text'] = "| ESX Logs | " .. os.date(), + ['icon_url'] = "https://cdn.discordapp.com/attachments/944789399852417096/1020099828266586193/blanc-800x800.png" + }, + ['description'] = message, + ['author'] = { + ['name'] = "ESX Framework", + ['icon_url'] = "https://cdn.discordapp.com/emojis/939245183621558362.webp?size=128&quality=lossless" + } + } } + PerformHttpRequest(webHook, nil, 'POST', json.encode({ + username = 'Logs', + embeds = embedData + }), { + ['Content-Type'] = 'application/json' + }) end function ESX.DiscordLogFields(name, title, color, fields) - local webHook = Config.DiscordLogs.Webhooks[name] or Config.DiscordLogs.Webhooks.default - local embedData = {{ - ['title'] = title, - ['color'] = Config.DiscordLogs.Colors[color] or Config.DiscordLogs.Colors.default, - ['footer'] = { - ['text'] = "| ESX Logs | " .. os.date(), - ['icon_url'] = "https://cdn.discordapp.com/attachments/944789399852417096/1020099828266586193/blanc-800x800.png" - }, - ['fields'] = fields, - ['description'] = "", - ['author'] = { - ['name'] = "ESX Framework", - ['icon_url'] = "https://cdn.discordapp.com/emojis/939245183621558362.webp?size=128&quality=lossless" - } - }} - PerformHttpRequest(webHook, nil, 'POST', json.encode({ - username = 'Logs', - embeds = embedData - }), { - ['Content-Type'] = 'application/json' - }) + local webHook = Config.DiscordLogs.Webhooks[name] or Config.DiscordLogs.Webhooks.default + local embedData = { { + ['title'] = title, + ['color'] = Config.DiscordLogs.Colors[color] or Config.DiscordLogs.Colors.default, + ['footer'] = { + ['text'] = "| ESX Logs | " .. os.date(), + ['icon_url'] = "https://cdn.discordapp.com/attachments/944789399852417096/1020099828266586193/blanc-800x800.png" + }, + ['fields'] = fields, + ['description'] = "", + ['author'] = { + ['name'] = "ESX Framework", + ['icon_url'] = "https://cdn.discordapp.com/emojis/939245183621558362.webp?size=128&quality=lossless" + } + } } + PerformHttpRequest(webHook, nil, 'POST', json.encode({ + username = 'Logs', + embeds = embedData + }), { + ['Content-Type'] = 'application/json' + }) +end + +--- Create Job at Runtime +--- @param name string +--- @param label string +--- @param grades table +function ESX.CreateJob(name, label, grades) + if not name then + return print('[^3WARNING^7] missing argument `name(string)` while creating a job') + end + + if not label then + return print('[^3WARNING^7] missing argument `label(string)` while creating a job') + end + + if not grades or not next(grades) then + return print('[^3WARNING^7] missing argument `grades(table)` while creating a job!') + end + + local parameters = {} + local job = { name = name, label = label, grades = {} } + + for _, v in pairs(grades) do + job.grades[tostring(v.grade)] = { job_name = name, grade = v.grade, name = v.name, label = v.label, salary = v.salary, skin_male = {}, skin_female = {} } + parameters[#parameters + 1] = { name, v.grade, v.name, v.label, v.salary } + end + + MySQL.insert('INSERT IGNORE INTO jobs (name, label) VALUES (?, ?)', { name, label }) + MySQL.prepare('INSERT INTO job_grades (job_name, grade, name, label, salary) VALUES (?, ?, ?, ?, ?)', parameters) + + ESX.Jobs[name] = job end function ESX.RefreshJobs() - local Jobs = {} - local jobs = MySQL.query.await('SELECT * FROM jobs') + local Jobs = {} + local jobs = MySQL.query.await('SELECT * FROM jobs') - for _, v in ipairs(jobs) do - Jobs[v.name] = v - Jobs[v.name].grades = {} - end + for _, v in ipairs(jobs) do + Jobs[v.name] = v + Jobs[v.name].grades = {} + end - local jobGrades = MySQL.query.await('SELECT * FROM job_grades') + local jobGrades = MySQL.query.await('SELECT * FROM job_grades') - for _, v in ipairs(jobGrades) do - if Jobs[v.job_name] then - Jobs[v.job_name].grades[tostring(v.grade)] = v - else - print(('[^3WARNING^7] Ignoring job grades for ^5"%s"^0 due to missing job'):format(v.job_name)) - end - end + for _, v in ipairs(jobGrades) do + if Jobs[v.job_name] then + Jobs[v.job_name].grades[tostring(v.grade)] = v + else + print(('[^3WARNING^7] Ignoring job grades for ^5"%s"^0 due to missing job'):format(v.job_name)) + end + end - for _, v in pairs(Jobs) do - if ESX.Table.SizeOf(v.grades) == 0 then - Jobs[v.name] = nil - print(('[^3WARNING^7] Ignoring job ^5"%s"^0 due to no job grades found'):format(v.name)) - end - end + for _, v in pairs(Jobs) do + if ESX.Table.SizeOf(v.grades) == 0 then + Jobs[v.name] = nil + print(('[^3WARNING^7] Ignoring job ^5"%s"^0 due to no job grades found'):format(v.name)) + end + end - if not Jobs then - -- Fallback data, if no jobs exist - ESX.Jobs['unemployed'] = {label = 'Unemployed', - grades = {['0'] = {grade = 0, label = 'Unemployed', salary = 200, skin_male = {}, skin_female = {}}}} - else - ESX.Jobs = Jobs - end + if not Jobs then + -- Fallback data, if no jobs exist + ESX.Jobs['unemployed'] = { label = 'Unemployed', grades = { ['0'] = { grade = 0, label = 'Unemployed', salary = 200, skin_male = {}, skin_female = {} } } } + else + ESX.Jobs = Jobs + end end function ESX.RegisterUsableItem(item, cb) - Core.UsableItemsCallbacks[item] = cb + Core.UsableItemsCallbacks[item] = cb end function ESX.UseItem(source, item, ...) - if ESX.Items[item] then - local itemCallback = Core.UsableItemsCallbacks[item] + if ESX.Items[item] then + local itemCallback = Core.UsableItemsCallbacks[item] - if itemCallback then - local success, result = pcall(itemCallback, source, item, ...) + if itemCallback then + local success, result = pcall(itemCallback, source, item, ...) - if not success then - return result and print(result) or - print(('[^3WARNING^7] An error occured when using item ^5"%s"^7! This was not caused by ESX.'):format(item)) - end - end - else - print(('[^3WARNING^7] Item ^5"%s"^7 was used but does not exist!'):format(item)) - end + if not success then + return result and print(result) or print(('[^3WARNING^7] An error occured when using item ^5"%s"^7! This was not caused by ESX.'):format(item)) + end + end + else + print(('[^3WARNING^7] Item ^5"%s"^7 was used but does not exist!'):format(item)) + end end function ESX.RegisterPlayerFunctionOverrides(index, overrides) - Core.PlayerFunctionOverrides[index] = overrides + Core.PlayerFunctionOverrides[index] = overrides end function ESX.SetPlayerFunctionOverride(index) - if not index or not Core.PlayerFunctionOverrides[index] then - return print('[^3WARNING^7] No valid index provided.') - end + if not index or not Core.PlayerFunctionOverrides[index] then + return print('[^3WARNING^7] No valid index provided.') + end - Config.PlayerFunctionOverride = index + Config.PlayerFunctionOverride = index end function ESX.GetItemLabel(item) - if Config.OxInventory then - item = exports.ox_inventory:Items(item) - if item then - return item.label - end - end + if Config.OxInventory then + item = exports.ox_inventory:Items(item) + if item then + return item.label + end + end - if ESX.Items[item] then - return ESX.Items[item].label - else - print('[^3WARNING^7] Attemting to get invalid Item -> ^5' .. item .. "^7") - end + if ESX.Items[item] then + return ESX.Items[item].label + else + print(('[^3WARNING^7] Attemting to get invalid Item -> ^5%s^7'):format(item)) + end end function ESX.GetJobs() - return ESX.Jobs + return ESX.Jobs end function ESX.GetUsableItems() - local Usables = {} - for k in pairs(Core.UsableItemsCallbacks) do - Usables[k] = true - end - return Usables + local Usables = {} + for k in pairs(Core.UsableItemsCallbacks) do + Usables[k] = true + end + return Usables end if not Config.OxInventory then - function ESX.CreatePickup(type, name, count, label, playerId, components, tintIndex) - local pickupId = (Core.PickupId == 65635 and 0 or Core.PickupId + 1) - local xPlayer = ESX.Players[playerId] - local coords = xPlayer.getCoords() + function ESX.CreatePickup(type, name, count, label, playerId, components, tintIndex) + local pickupId = (Core.PickupId == 65635 and 0 or Core.PickupId + 1) + local xPlayer = ESX.Players[playerId] + local coords = xPlayer.getCoords() - Core.Pickups[pickupId] = {type = type, name = name, count = count, label = label, coords = coords} + Core.Pickups[pickupId] = { type = type, name = name, count = count, label = label, coords = coords } - if type == 'item_weapon' then - Core.Pickups[pickupId].components = components - Core.Pickups[pickupId].tintIndex = tintIndex - end + if type == 'item_weapon' then + Core.Pickups[pickupId].components = components + Core.Pickups[pickupId].tintIndex = tintIndex + end - TriggerClientEvent('esx:createPickup', -1, pickupId, label, coords, type, name, components, tintIndex) - Core.PickupId = pickupId - end + TriggerClientEvent('esx:createPickup', -1, pickupId, label, coords, type, name, components, tintIndex) + Core.PickupId = pickupId + end end function ESX.DoesJobExist(job, grade) - grade = tostring(grade) + grade = tostring(grade) - if job and grade then - if ESX.Jobs[job] and ESX.Jobs[job].grades[grade] then - return true - end - end + if job and grade then + if ESX.Jobs[job] and ESX.Jobs[job].grades[grade] then + return true + end + end - return false + return false end function Core.IsPlayerAdmin(playerId) - if (IsPlayerAceAllowed(playerId, 'command') or GetConvar('sv_lan', '') == 'true') and true or false then - return true - end + if (IsPlayerAceAllowed(playerId, 'command') or GetConvar('sv_lan', '') == 'true') and true or false then + return true + end - local xPlayer = ESX.Players[playerId] + local xPlayer = ESX.Players[playerId] - if xPlayer then - if xPlayer.group == 'admin' then - return true - end - end + if xPlayer then + if Config.AdminGroups[xPlayer.group] then + return true + end + end - return false + return false end diff --git a/[core]/es_extended/server/main.lua b/[core]/es_extended/server/main.lua index 892b5a5e..d1bc6e0f 100644 --- a/[core]/es_extended/server/main.lua +++ b/[core]/es_extended/server/main.lua @@ -6,638 +6,695 @@ local newPlayer = 'INSERT INTO `users` SET `accounts` = ?, `identifier` = ?, `gr local loadPlayer = 'SELECT `accounts`, `job`, `job_grade`, `group`, `position`, `inventory`, `skin`, `loadout`, `metadata`' if Config.Multichar then - newPlayer = newPlayer .. ', `firstname` = ?, `lastname` = ?, `dateofbirth` = ?, `sex` = ?, `height` = ?' + newPlayer = newPlayer .. ', `firstname` = ?, `lastname` = ?, `dateofbirth` = ?, `sex` = ?, `height` = ?' end if Config.Multichar or Config.Identity then - loadPlayer = loadPlayer .. ', `firstname`, `lastname`, `dateofbirth`, `sex`, `height`' + loadPlayer = loadPlayer .. ', `firstname`, `lastname`, `dateofbirth`, `sex`, `height`' end loadPlayer = loadPlayer .. ' FROM `users` WHERE identifier = ?' if Config.Multichar then - AddEventHandler('esx:onPlayerJoined', function(src, char, data) - while not next(ESX.Jobs) do - Wait(50) - end + AddEventHandler('esx:onPlayerJoined', function(src, char, data) + while not next(ESX.Jobs) do + Wait(50) + end - if not ESX.Players[src] then - local identifier = char .. ':' .. ESX.GetIdentifier(src) - if data then - createESXPlayer(identifier, src, data) - else - loadESXPlayer(identifier, src, false) - end - end - end) + if not ESX.Players[src] then + local identifier = char .. ':' .. ESX.GetIdentifier(src) + if data then + createESXPlayer(identifier, src, data) + else + loadESXPlayer(identifier, src, false) + end + end + end) else - RegisterNetEvent('esx:onPlayerJoined') - AddEventHandler('esx:onPlayerJoined', function() - local _source = source - while not next(ESX.Jobs) do - Wait(50) - end + RegisterNetEvent('esx:onPlayerJoined') + AddEventHandler('esx:onPlayerJoined', function() + local _source = source + while not next(ESX.Jobs) do + Wait(50) + end - if not ESX.Players[_source] then - onPlayerJoined(_source) - end - end) + if not ESX.Players[_source] then + onPlayerJoined(_source) + end + end) end function onPlayerJoined(playerId) - local identifier = ESX.GetIdentifier(playerId) - if identifier then - if ESX.GetPlayerFromIdentifier(identifier) then - DropPlayer(playerId, - ('there was an error loading your character!\nError code: identifier-active-ingame\n\nThis error is caused by a player on this server who has the same identifier as you have. Make sure you are not playing on the same Rockstar account.\n\nYour Rockstar identifier: %s'):format( - identifier)) - else - local result = MySQL.scalar.await('SELECT 1 FROM users WHERE identifier = ?', {identifier}) - if result then - loadESXPlayer(identifier, playerId, false) - else - - createESXPlayer(identifier, playerId) - end - end - else - DropPlayer(playerId, - 'there was an error loading your character!\nError code: identifier-missing-ingame\n\nThe cause of this error is not known, your identifier could not be found. Please come back later or report this problem to the server administration team.') - end + local identifier = ESX.GetIdentifier(playerId) + if identifier then + if ESX.GetPlayerFromIdentifier(identifier) then + DropPlayer(playerId, + ('there was an error loading your character!\nError code: identifier-active-ingame\n\nThis error is caused by a player on this server who has the same identifier as you have. Make sure you are not playing on the same Rockstar account.\n\nYour Rockstar identifier: %s'):format( + identifier)) + else + local result = MySQL.scalar.await('SELECT 1 FROM users WHERE identifier = ?', { identifier }) + if result then + loadESXPlayer(identifier, playerId, false) + else + createESXPlayer(identifier, playerId) + end + end + else + DropPlayer(playerId, + 'there was an error loading your character!\nError code: identifier-missing-ingame\n\nThe cause of this error is not known, your identifier could not be found. Please come back later or report this problem to the server administration team.') + end end function createESXPlayer(identifier, playerId, data) - local accounts = {} + local accounts = {} - for account, money in pairs(Config.StartingAccountMoney) do - accounts[account] = money - end + for account, money in pairs(Config.StartingAccountMoney) do + accounts[account] = money + end - local defaultGroup = "user" - if Core.IsPlayerAdmin(playerId) then - print(('[^2INFO^0] Player ^5%s^0 Has been granted admin permissions via ^5Ace Perms^7.'):format(playerId)) - defaultGroup = "admin" - end + local defaultGroup = "user" + if Core.IsPlayerAdmin(playerId) then + print(('[^2INFO^0] Player ^5%s^0 Has been granted admin permissions via ^5Ace Perms^7.'):format(playerId)) + defaultGroup = "admin" + end - if not Config.Multichar then - MySQL.prepare(newPlayer, {json.encode(accounts), identifier, defaultGroup}, function() - loadESXPlayer(identifier, playerId, true) - end) - else - MySQL.prepare(newPlayer, - {json.encode(accounts), identifier, defaultGroup, data.firstname, data.lastname, data.dateofbirth, data.sex, data.height}, function() - loadESXPlayer(identifier, playerId, true) - end) - end + if not Config.Multichar then + MySQL.prepare(newPlayer, { json.encode(accounts), identifier, defaultGroup }, function() + loadESXPlayer(identifier, playerId, true) + end) + else + MySQL.prepare(newPlayer, + { json.encode(accounts), identifier, defaultGroup, data.firstname, data.lastname, data.dateofbirth, data.sex, data.height }, function() + loadESXPlayer(identifier, playerId, true) + end) + end end if not Config.Multichar then - AddEventHandler('playerConnecting', function(name, setCallback, deferrals) - deferrals.defer() - local playerId = source - local identifier = ESX.GetIdentifier(playerId) + AddEventHandler('playerConnecting', function(_, _, deferrals) + deferrals.defer() + local playerId = source + local identifier = ESX.GetIdentifier(playerId) - if oneSyncState == "off" or oneSyncState == "legacy" then - return deferrals.done(('[ESX] ESX Requires Onesync Infinity to work. This server currently has Onesync set to: %s'):format(oneSyncState)) - end + if oneSyncState == "off" or oneSyncState == "legacy" then + return deferrals.done(('[ESX] ESX Requires Onesync Infinity to work. This server currently has Onesync set to: %s'):format(oneSyncState)) + end - if not Core.DatabaseConnected then - return deferrals.done(('[ESX] ESX Cannot Connect to your database. Please make sure it is correctly configured in your server.cfg'):format(oneSyncState)) - end - - if identifier then - if ESX.GetPlayerFromIdentifier(identifier) then - return deferrals.done( - ('[ESX] There was an error loading your character!\nError code: identifier-active\n\nThis error is caused by a player on this server who has the same identifier as you have. Make sure you are not playing on the same account.\n\nYour identifier: %s'):format( - identifier)) - else - return deferrals.done() - end - else - return deferrals.done( - '[ESX] There was an error loading your character!\nError code: identifier-missing\n\nThe cause of this error is not known, your identifier could not be found. Please come back later or report this problem to the server administration team.') - end - end) + if not Core.DatabaseConnected then + return deferrals.done('[ESX] OxMySQL Was Unable To Connect to your database. Please make sure it is turned on and correctly configured in your server.cfg') + end + + if identifier then + if ESX.GetPlayerFromIdentifier(identifier) then + return deferrals.done( + ('[ESX] There was an error loading your character!\nError code: identifier-active\n\nThis error is caused by a player on this server who has the same identifier as you have. Make sure you are not playing on the same account.\n\nYour identifier: %s'):format( + identifier)) + else + return deferrals.done() + end + else + return deferrals.done( + '[ESX] There was an error loading your character!\nError code: identifier-missing\n\nThe cause of this error is not known, your identifier could not be found. Please come back later or report this problem to the server administration team.') + end + end) end function loadESXPlayer(identifier, playerId, isNew) - local userData = {accounts = {}, inventory = {}, job = {}, loadout = {}, playerName = GetPlayerName(playerId), weight = 0, metadata = {}} - local result = MySQL.prepare.await(loadPlayer, {identifier}) - local job, grade, jobObject, gradeObject = result.job, tostring(result.job_grade) - local foundAccounts, foundItems = {}, {} + local userData = { + accounts = {}, + inventory = {}, + job = {}, + loadout = {}, + playerName = GetPlayerName(playerId), + weight = 0, + metadata = {} + } + local result = MySQL.prepare.await(loadPlayer, { identifier }) + local job, grade, jobObject, gradeObject = result.job, tostring(result.job_grade) + local foundAccounts, foundItems = {}, {} - -- Accounts - if result.accounts and result.accounts ~= '' then - local accounts = json.decode(result.accounts) + -- Accounts + if result.accounts and result.accounts ~= '' then + local accounts = json.decode(result.accounts) - for account, money in pairs(accounts) do - foundAccounts[account] = money - end - end + for account, money in pairs(accounts) do + foundAccounts[account] = money + end + end - for account, data in pairs(Config.Accounts) do - if data.round == nil then - data.round = true - end - local index = #userData.accounts + 1 - userData.accounts[index] = { - name = account, - money = foundAccounts[account] or Config.StartingAccountMoney[account] or 0, - label = data.label, - round = data.round, - index = index - } - end + for account, data in pairs(Config.Accounts) do + if data.round == nil then + data.round = true + end + local index = #userData.accounts + 1 + userData.accounts[index] = { + name = account, + money = foundAccounts[account] or Config.StartingAccountMoney[account] or 0, + label = data.label, + round = data.round, + index = index + } + end - -- Job - if ESX.DoesJobExist(job, grade) then - jobObject, gradeObject = ESX.Jobs[job], ESX.Jobs[job].grades[grade] - else - print(('[^3WARNING^7] Ignoring invalid job for ^5%s^7 [job: ^5%s^7, grade: ^5%s^7]'):format(identifier, job, grade)) - job, grade = 'unemployed', '0' - jobObject, gradeObject = ESX.Jobs[job], ESX.Jobs[job].grades[grade] - end + -- Job + if ESX.DoesJobExist(job, grade) then + jobObject, gradeObject = ESX.Jobs[job], ESX.Jobs[job].grades[grade] + else + print(('[^3WARNING^7] Ignoring invalid job for ^5%s^7 [job: ^5%s^7, grade: ^5%s^7]'):format(identifier, job, grade)) + job, grade = 'unemployed', '0' + jobObject, gradeObject = ESX.Jobs[job], ESX.Jobs[job].grades[grade] + end - userData.job.id = jobObject.id - userData.job.name = jobObject.name - userData.job.label = jobObject.label + userData.job.id = jobObject.id + userData.job.name = jobObject.name + userData.job.label = jobObject.label - userData.job.grade = tonumber(grade) - userData.job.grade_name = gradeObject.name - userData.job.grade_label = gradeObject.label - userData.job.grade_salary = gradeObject.salary + userData.job.grade = tonumber(grade) + userData.job.grade_name = gradeObject.name + userData.job.grade_label = gradeObject.label + userData.job.grade_salary = gradeObject.salary - userData.job.skin_male = {} - userData.job.skin_female = {} + userData.job.skin_male = {} + userData.job.skin_female = {} - if gradeObject.skin_male then - userData.job.skin_male = json.decode(gradeObject.skin_male) - end - if gradeObject.skin_female then - userData.job.skin_female = json.decode(gradeObject.skin_female) - end + if gradeObject.skin_male then + userData.job.skin_male = json.decode(gradeObject.skin_male) + end + if gradeObject.skin_female then + userData.job.skin_female = json.decode(gradeObject.skin_female) + end - -- Inventory - if not Config.OxInventory then - if result.inventory and result.inventory ~= '' then - local inventory = json.decode(result.inventory) + -- Inventory + if not Config.OxInventory then + if result.inventory and result.inventory ~= '' then + local inventory = json.decode(result.inventory) - for name, count in pairs(inventory) do - local item = ESX.Items[name] + for name, count in pairs(inventory) do + local item = ESX.Items[name] - if item then - foundItems[name] = count - else - print(('[^3WARNING^7] Ignoring invalid item ^5"%s"^7 for ^5"%s^7"'):format(name, identifier)) - end - end - end + if item then + foundItems[name] = count + else + print(('[^3WARNING^7] Ignoring invalid item ^5"%s"^7 for ^5"%s^7"'):format(name, identifier)) + end + end + end - for name, item in pairs(ESX.Items) do - local count = foundItems[name] or 0 - if count > 0 then - userData.weight = userData.weight + (item.weight * count) - end + for name, item in pairs(ESX.Items) do + local count = foundItems[name] or 0 + if count > 0 then + userData.weight = userData.weight + (item.weight * count) + end - table.insert(userData.inventory, - {name = name, count = count, label = item.label, weight = item.weight, usable = Core.UsableItemsCallbacks[name] ~= nil, rare = item.rare, - canRemove = item.canRemove}) - end + table.insert(userData.inventory, + { + name = name, + count = count, + label = item.label, + weight = item.weight, + usable = Core.UsableItemsCallbacks[name] ~= nil, + rare = item.rare, + canRemove = item.canRemove + }) + end - table.sort(userData.inventory, function(a, b) - return a.label < b.label - end) - else - if result.inventory and result.inventory ~= '' then - userData.inventory = json.decode(result.inventory) - else - userData.inventory = {} - end - end + table.sort(userData.inventory, function(a, b) + return a.label < b.label + end) + else + if result.inventory and result.inventory ~= '' then + userData.inventory = json.decode(result.inventory) + else + userData.inventory = {} + end + end - -- Group - if result.group then - if result.group == "superadmin" then - userData.group = "admin" - print("[^3WARNING^7] ^5Superadmin^7 detected, setting group to ^5admin^7") - else - userData.group = result.group - end - else - userData.group = 'user' - end + -- Group + if result.group then + if result.group == "superadmin" then + userData.group = "admin" + print("[^3WARNING^7] ^5Superadmin^7 detected, setting group to ^5admin^7") + else + userData.group = result.group + end + else + userData.group = 'user' + end - -- Loadout - if not Config.OxInventory then - if result.loadout and result.loadout ~= '' then - local loadout = json.decode(result.loadout) + -- Loadout + if not Config.OxInventory then + if result.loadout and result.loadout ~= '' then + local loadout = json.decode(result.loadout) - for name, weapon in pairs(loadout) do - local label = ESX.GetWeaponLabel(name) + for name, weapon in pairs(loadout) do + local label = ESX.GetWeaponLabel(name) - if label then - if not weapon.components then - weapon.components = {} - end - if not weapon.tintIndex then - weapon.tintIndex = 0 - end + if label then + if not weapon.components then + weapon.components = {} + end + if not weapon.tintIndex then + weapon.tintIndex = 0 + end - table.insert(userData.loadout, - {name = name, ammo = weapon.ammo, label = label, components = weapon.components, tintIndex = weapon.tintIndex}) - end - end - end - end + table.insert(userData.loadout, + { + name = name, + ammo = weapon.ammo, + label = label, + components = weapon.components, + tintIndex = weapon.tintIndex + }) + end + end + end + end - -- Position - userData.coords = json.decode(result.position) or Config.DefaultSpawn + -- Position + userData.coords = json.decode(result.position) or Config.DefaultSpawns[math.random(#Config.DefaultSpawns)] - -- Skin - if result.skin and result.skin ~= '' then - userData.skin = json.decode(result.skin) - else - if userData.sex == 'f' then - userData.skin = {sex = 1} - else - userData.skin = {sex = 0} - end - end + -- Skin + if result.skin and result.skin ~= '' then + userData.skin = json.decode(result.skin) + else + if userData.sex == 'f' then + userData.skin = { sex = 1 } + else + userData.skin = { sex = 0 } + end + end - -- Identity - if result.firstname and result.firstname ~= '' then - userData.firstname = result.firstname - userData.lastname = result.lastname - userData.playerName = userData.firstname .. ' ' .. userData.lastname - if result.dateofbirth then - userData.dateofbirth = result.dateofbirth - end - if result.sex then - userData.sex = result.sex - end - if result.height then - userData.height = result.height - end - end + -- Identity + if result.firstname and result.firstname ~= '' then + userData.firstname = result.firstname + userData.lastname = result.lastname + userData.playerName = userData.firstname .. ' ' .. userData.lastname + if result.dateofbirth then + userData.dateofbirth = result.dateofbirth + end + if result.sex then + userData.sex = result.sex + end + if result.height then + userData.height = result.height + end + end - if result.metadata and result.metadata ~= '' then - local metadata = json.decode(result.metadata) - userData.metadata = metadata - end + if result.metadata and result.metadata ~= '' then + local metadata = json.decode(result.metadata) + userData.metadata = metadata + end - local xPlayer = CreateExtendedPlayer(playerId, identifier, userData.group, userData.accounts, userData.inventory, userData.weight, userData.job, - userData.loadout, userData.playerName, userData.coords, userData.metadata) - ESX.Players[playerId] = xPlayer - Core.playersByIdentifier[identifier] = xPlayer + local xPlayer = CreateExtendedPlayer(playerId, identifier, userData.group, userData.accounts, userData.inventory, userData.weight, userData.job, userData.loadout, userData.playerName, userData.coords, userData.metadata) + ESX.Players[playerId] = xPlayer + Core.playersByIdentifier[identifier] = xPlayer - if userData.firstname then - xPlayer.set('firstName', userData.firstname) - xPlayer.set('lastName', userData.lastname) - if userData.dateofbirth then - xPlayer.set('dateofbirth', userData.dateofbirth) - end - if userData.sex then - xPlayer.set('sex', userData.sex) - end - if userData.height then - xPlayer.set('height', userData.height) - end - end + if userData.firstname then + xPlayer.set('firstName', userData.firstname) + xPlayer.set('lastName', userData.lastname) + if userData.dateofbirth then + xPlayer.set('dateofbirth', userData.dateofbirth) + end + if userData.sex then + xPlayer.set('sex', userData.sex) + end + if userData.height then + xPlayer.set('height', userData.height) + end + end - TriggerEvent('esx:playerLoaded', playerId, xPlayer, isNew) + TriggerEvent('esx:playerLoaded', playerId, xPlayer, isNew) - xPlayer.triggerEvent('esx:playerLoaded', - { - accounts = xPlayer.getAccounts(), - coords = xPlayer.getCoords(), - identifier = xPlayer.getIdentifier(), - inventory = xPlayer.getInventory(), - job = xPlayer.getJob(), - loadout = xPlayer.getLoadout(), - maxWeight = xPlayer.getMaxWeight(), - money = xPlayer.getMoney(), - sex = xPlayer.get("sex") or "m", - firstName = xPlayer.get("firstName") or "John", - lastName = xPlayer.get("lastName") or "Doe", - dateofbirth = xPlayer.get("dateofbirth") or "01/01/2000", - height = xPlayer.get("height") or 120, - dead = false, - metadata = xPlayer.getMeta() - }, isNew, - userData.skin) + xPlayer.triggerEvent('esx:playerLoaded', + { + accounts = xPlayer.getAccounts(), + coords = userData.coords, + identifier = xPlayer.getIdentifier(), + inventory = xPlayer.getInventory(), + job = xPlayer.getJob(), + loadout = xPlayer.getLoadout(), + maxWeight = xPlayer.getMaxWeight(), + money = xPlayer.getMoney(), + sex = xPlayer.get("sex") or "m", + firstName = xPlayer.get("firstName") or "John", + lastName = xPlayer.get("lastName") or "Doe", + dateofbirth = xPlayer.get("dateofbirth") or "01/01/2000", + height = xPlayer.get("height") or 120, + dead = false, + metadata = xPlayer.getMeta() + }, isNew, + userData.skin) - if not Config.OxInventory then - xPlayer.triggerEvent('esx:createMissingPickups', Core.Pickups) - else - exports.ox_inventory:setPlayerInventory(xPlayer, userData.inventory) - end - xPlayer.updateCoords() - xPlayer.triggerEvent('esx:registerSuggestions', Core.RegisteredCommands) - print(('[^2INFO^0] Player ^5"%s"^0 has connected to the server. ID: ^5%s^7'):format(xPlayer.getName(), playerId)) + if not Config.OxInventory then + xPlayer.triggerEvent('esx:createMissingPickups', Core.Pickups) + else + exports.ox_inventory:setPlayerInventory(xPlayer, userData.inventory) + + if isNew then + for account, money in pairs(Config.StartingAccountMoney) do + if account == 'money' or account == 'black_money' then + exports.ox_inventory:AddItem(playerId, account, money) + end + end + end + end + xPlayer.triggerEvent('esx:registerSuggestions', Core.RegisteredCommands) + print(('[^2INFO^0] Player ^5"%s"^0 has connected to the server. ID: ^5%s^7'):format(xPlayer.getName(), playerId)) end -AddEventHandler('chatMessage', function(playerId, author, message) - local xPlayer = ESX.GetPlayerFromId(playerId) - if message:sub(1, 1) == '/' and playerId > 0 then - CancelEvent() - local commandName = message:sub(1):gmatch("%w+")() - xPlayer.showNotification(TranslateCap('commanderror_invalidcommand', commandName)) - end +AddEventHandler('chatMessage', function(playerId, _, message) + local xPlayer = ESX.GetPlayerFromId(playerId) + if message:sub(1, 1) == '/' and playerId > 0 then + CancelEvent() + local commandName = message:sub(1):gmatch("%w+")() + xPlayer.showNotification(TranslateCap('commanderror_invalidcommand', commandName)) + end end) AddEventHandler('playerDropped', function(reason) - local playerId = source - local xPlayer = ESX.GetPlayerFromId(playerId) + local playerId = source + local xPlayer = ESX.GetPlayerFromId(playerId) - if xPlayer then - TriggerEvent('esx:playerDropped', playerId, reason) + if xPlayer then + TriggerEvent('esx:playerDropped', playerId, reason) - Core.playersByIdentifier[xPlayer.identifier] = nil - Core.SavePlayer(xPlayer, function() - ESX.Players[playerId] = nil - end) - end + Core.playersByIdentifier[xPlayer.identifier] = nil + Core.SavePlayer(xPlayer, function() + ESX.Players[playerId] = nil + end) + end end) AddEventHandler('esx:playerLogout', function(playerId, cb) - local xPlayer = ESX.GetPlayerFromId(playerId) - if xPlayer then - TriggerEvent('esx:playerDropped', playerId) + local xPlayer = ESX.GetPlayerFromId(playerId) + if xPlayer then + TriggerEvent('esx:playerDropped', playerId) - Core.playersByIdentifier[xPlayer.identifier] = nil - Core.SavePlayer(xPlayer, function() - ESX.Players[playerId] = nil - if cb then - cb() - end - end) - end - TriggerClientEvent("esx:onPlayerLogout", playerId) + Core.playersByIdentifier[xPlayer.identifier] = nil + Core.SavePlayer(xPlayer, function() + ESX.Players[playerId] = nil + if cb then + cb() + end + end) + end + TriggerClientEvent("esx:onPlayerLogout", playerId) end) if not Config.OxInventory then - RegisterNetEvent('esx:updateWeaponAmmo') - AddEventHandler('esx:updateWeaponAmmo', function(weaponName, ammoCount) - local xPlayer = ESX.GetPlayerFromId(source) + RegisterNetEvent('esx:updateWeaponAmmo') + AddEventHandler('esx:updateWeaponAmmo', function(weaponName, ammoCount) + local xPlayer = ESX.GetPlayerFromId(source) - if xPlayer then - xPlayer.updateWeaponAmmo(weaponName, ammoCount) - end - end) + if xPlayer then + xPlayer.updateWeaponAmmo(weaponName, ammoCount) + end + end) - RegisterNetEvent('esx:giveInventoryItem') - AddEventHandler('esx:giveInventoryItem', function(target, type, itemName, itemCount) - local playerId = source - local sourceXPlayer = ESX.GetPlayerFromId(playerId) - local targetXPlayer = ESX.GetPlayerFromId(target) - local distance = #(GetEntityCoords(GetPlayerPed(playerId)) - GetEntityCoords(GetPlayerPed(target))) - if not sourceXPlayer or not targetXPlayer or distance > Config.DistanceGive then - print("[^3WARNING^7] Player Detected Cheating: ^5" .. GetPlayerName(playerId) .. "^7") - return - end + RegisterNetEvent('esx:giveInventoryItem') + AddEventHandler('esx:giveInventoryItem', function(target, type, itemName, itemCount) + local playerId = source + local sourceXPlayer = ESX.GetPlayerFromId(playerId) + local targetXPlayer = ESX.GetPlayerFromId(target) + local distance = #(GetEntityCoords(GetPlayerPed(playerId)) - GetEntityCoords(GetPlayerPed(target))) + if not sourceXPlayer or not targetXPlayer or distance > Config.DistanceGive then + print(('[^3WARNING^7] Player Detected Cheating: ^5%s^7'):format(GetPlayerName(playerId))) + return + end - if type == 'item_standard' then - local sourceItem = sourceXPlayer.getInventoryItem(itemName) + if type == 'item_standard' then + local sourceItem = sourceXPlayer.getInventoryItem(itemName) - if itemCount > 0 and sourceItem.count >= itemCount then - if targetXPlayer.canCarryItem(itemName, itemCount) then - sourceXPlayer.removeInventoryItem(itemName, itemCount) - targetXPlayer.addInventoryItem(itemName, itemCount) + if itemCount > 0 and sourceItem.count >= itemCount then + if targetXPlayer.canCarryItem(itemName, itemCount) then + sourceXPlayer.removeInventoryItem(itemName, itemCount) + targetXPlayer.addInventoryItem(itemName, itemCount) - sourceXPlayer.showNotification(TranslateCap('gave_item', itemCount, sourceItem.label, targetXPlayer.name)) - targetXPlayer.showNotification(TranslateCap('received_item', itemCount, sourceItem.label, sourceXPlayer.name)) - else - sourceXPlayer.showNotification(TranslateCap('ex_inv_lim', targetXPlayer.name)) - end - else - sourceXPlayer.showNotification(TranslateCap('imp_invalid_quantity')) - end - elseif type == 'item_account' then - if itemCount > 0 and sourceXPlayer.getAccount(itemName).money >= itemCount then - sourceXPlayer.removeAccountMoney(itemName, itemCount, "Gave to " .. targetXPlayer.name) - targetXPlayer.addAccountMoney(itemName, itemCount, "Received from " .. sourceXPlayer.name) + sourceXPlayer.showNotification(TranslateCap('gave_item', itemCount, sourceItem.label, targetXPlayer.name)) + targetXPlayer.showNotification(TranslateCap('received_item', itemCount, sourceItem.label, sourceXPlayer.name)) + else + sourceXPlayer.showNotification(TranslateCap('ex_inv_lim', targetXPlayer.name)) + end + else + sourceXPlayer.showNotification(TranslateCap('imp_invalid_quantity')) + end + elseif type == 'item_account' then + if itemCount > 0 and sourceXPlayer.getAccount(itemName).money >= itemCount then + sourceXPlayer.removeAccountMoney(itemName, itemCount, "Gave to " .. targetXPlayer.name) + targetXPlayer.addAccountMoney(itemName, itemCount, "Received from " .. sourceXPlayer.name) - sourceXPlayer.showNotification(TranslateCap('gave_account_money', ESX.Math.GroupDigits(itemCount), Config.Accounts[itemName].label, targetXPlayer.name)) - targetXPlayer.showNotification(TranslateCap('received_account_money', ESX.Math.GroupDigits(itemCount), Config.Accounts[itemName].label, - sourceXPlayer.name)) - else - sourceXPlayer.showNotification(TranslateCap('imp_invalid_amount')) - end - elseif type == 'item_weapon' then - if sourceXPlayer.hasWeapon(itemName) then - local weaponLabel = ESX.GetWeaponLabel(itemName) - if not targetXPlayer.hasWeapon(itemName) then - local _, weapon = sourceXPlayer.getWeapon(itemName) - local _, weaponObject = ESX.GetWeapon(itemName) - itemCount = weapon.ammo - local weaponComponents = ESX.Table.Clone(weapon.components) - local weaponTint = weapon.tintIndex - if weaponTint then - targetXPlayer.setWeaponTint(itemName, weaponTint) - end - if weaponComponents then - for k, v in pairs(weaponComponents) do - targetXPlayer.addWeaponComponent(itemName, v) - end - end - sourceXPlayer.removeWeapon(itemName) - targetXPlayer.addWeapon(itemName, itemCount) + sourceXPlayer.showNotification(TranslateCap('gave_account_money', ESX.Math.GroupDigits(itemCount), Config.Accounts[itemName].label, targetXPlayer.name)) + targetXPlayer.showNotification(TranslateCap('received_account_money', ESX.Math.GroupDigits(itemCount), Config.Accounts[itemName].label, + sourceXPlayer.name)) + else + sourceXPlayer.showNotification(TranslateCap('imp_invalid_amount')) + end + elseif type == 'item_weapon' then + if sourceXPlayer.hasWeapon(itemName) then + local weaponLabel = ESX.GetWeaponLabel(itemName) + if not targetXPlayer.hasWeapon(itemName) then + local _, weapon = sourceXPlayer.getWeapon(itemName) + local _, weaponObject = ESX.GetWeapon(itemName) + itemCount = weapon.ammo + local weaponComponents = ESX.Table.Clone(weapon.components) + local weaponTint = weapon.tintIndex + if weaponTint then + targetXPlayer.setWeaponTint(itemName, weaponTint) + end + if weaponComponents then + for _, v in pairs(weaponComponents) do + targetXPlayer.addWeaponComponent(itemName, v) + end + end + sourceXPlayer.removeWeapon(itemName) + targetXPlayer.addWeapon(itemName, itemCount) - if weaponObject.ammo and itemCount > 0 then - local ammoLabel = weaponObject.ammo.label - sourceXPlayer.showNotification(TranslateCap('gave_weapon_withammo', weaponLabel, itemCount, ammoLabel, targetXPlayer.name)) - targetXPlayer.showNotification(TranslateCap('received_weapon_withammo', weaponLabel, itemCount, ammoLabel, sourceXPlayer.name)) - else - sourceXPlayer.showNotification(TranslateCap('gave_weapon', weaponLabel, targetXPlayer.name)) - targetXPlayer.showNotification(TranslateCap('received_weapon', weaponLabel, sourceXPlayer.name)) - end - else - sourceXPlayer.showNotification(TranslateCap('gave_weapon_hasalready', targetXPlayer.name, weaponLabel)) - targetXPlayer.showNotification(TranslateCap('received_weapon_hasalready', sourceXPlayer.name, weaponLabel)) - end - end - elseif type == 'item_ammo' then - if sourceXPlayer.hasWeapon(itemName) then - local weaponNum, weapon = sourceXPlayer.getWeapon(itemName) + if weaponObject.ammo and itemCount > 0 then + local ammoLabel = weaponObject.ammo.label + sourceXPlayer.showNotification(TranslateCap('gave_weapon_withammo', weaponLabel, itemCount, ammoLabel, targetXPlayer.name)) + targetXPlayer.showNotification(TranslateCap('received_weapon_withammo', weaponLabel, itemCount, ammoLabel, sourceXPlayer.name)) + else + sourceXPlayer.showNotification(TranslateCap('gave_weapon', weaponLabel, targetXPlayer.name)) + targetXPlayer.showNotification(TranslateCap('received_weapon', weaponLabel, sourceXPlayer.name)) + end + else + sourceXPlayer.showNotification(TranslateCap('gave_weapon_hasalready', targetXPlayer.name, weaponLabel)) + targetXPlayer.showNotification(TranslateCap('received_weapon_hasalready', sourceXPlayer.name, weaponLabel)) + end + end + elseif type == 'item_ammo' then + if sourceXPlayer.hasWeapon(itemName) then + local _, weapon = sourceXPlayer.getWeapon(itemName) - if targetXPlayer.hasWeapon(itemName) then - local _, weaponObject = ESX.GetWeapon(itemName) + if targetXPlayer.hasWeapon(itemName) then + local _, weaponObject = ESX.GetWeapon(itemName) - if weaponObject.ammo then - local ammoLabel = weaponObject.ammo.label + if weaponObject.ammo then + local ammoLabel = weaponObject.ammo.label - if weapon.ammo >= itemCount then - sourceXPlayer.removeWeaponAmmo(itemName, itemCount) - targetXPlayer.addWeaponAmmo(itemName, itemCount) + if weapon.ammo >= itemCount then + sourceXPlayer.removeWeaponAmmo(itemName, itemCount) + targetXPlayer.addWeaponAmmo(itemName, itemCount) - sourceXPlayer.showNotification(TranslateCap('gave_weapon_ammo', itemCount, ammoLabel, weapon.label, targetXPlayer.name)) - targetXPlayer.showNotification(TranslateCap('received_weapon_ammo', itemCount, ammoLabel, weapon.label, sourceXPlayer.name)) - end - end - else - sourceXPlayer.showNotification(TranslateCap('gave_weapon_noweapon', targetXPlayer.name)) - targetXPlayer.showNotification(TranslateCap('received_weapon_noweapon', sourceXPlayer.name, weapon.label)) - end - end - end - end) + sourceXPlayer.showNotification(TranslateCap('gave_weapon_ammo', itemCount, ammoLabel, weapon.label, targetXPlayer.name)) + targetXPlayer.showNotification(TranslateCap('received_weapon_ammo', itemCount, ammoLabel, weapon.label, sourceXPlayer.name)) + end + end + else + sourceXPlayer.showNotification(TranslateCap('gave_weapon_noweapon', targetXPlayer.name)) + targetXPlayer.showNotification(TranslateCap('received_weapon_noweapon', sourceXPlayer.name, weapon.label)) + end + end + end + end) - RegisterNetEvent('esx:removeInventoryItem') - AddEventHandler('esx:removeInventoryItem', function(type, itemName, itemCount) - local playerId = source - local xPlayer = ESX.GetPlayerFromId(playerId) + RegisterNetEvent('esx:removeInventoryItem') + AddEventHandler('esx:removeInventoryItem', function(type, itemName, itemCount) + local playerId = source + local xPlayer = ESX.GetPlayerFromId(playerId) - if type == 'item_standard' then - if itemCount == nil or itemCount < 1 then - xPlayer.showNotification(TranslateCap('imp_invalid_quantity')) - else - local xItem = xPlayer.getInventoryItem(itemName) + if type == 'item_standard' then + if itemCount == nil or itemCount < 1 then + xPlayer.showNotification(TranslateCap('imp_invalid_quantity')) + else + local xItem = xPlayer.getInventoryItem(itemName) - if (itemCount > xItem.count or xItem.count < 1) then - xPlayer.showNotification(TranslateCap('imp_invalid_quantity')) - else - xPlayer.removeInventoryItem(itemName, itemCount) - local pickupLabel = ('%s [%s]'):format(xItem.label, itemCount) - ESX.CreatePickup('item_standard', itemName, itemCount, pickupLabel, playerId) - xPlayer.showNotification(TranslateCap('threw_standard', itemCount, xItem.label)) - end - end - elseif type == 'item_account' then - if itemCount == nil or itemCount < 1 then - xPlayer.showNotification(TranslateCap('imp_invalid_amount')) - else - local account = xPlayer.getAccount(itemName) + if (itemCount > xItem.count or xItem.count < 1) then + xPlayer.showNotification(TranslateCap('imp_invalid_quantity')) + else + xPlayer.removeInventoryItem(itemName, itemCount) + local pickupLabel = ('%s [%s]'):format(xItem.label, itemCount) + ESX.CreatePickup('item_standard', itemName, itemCount, pickupLabel, playerId) + xPlayer.showNotification(TranslateCap('threw_standard', itemCount, xItem.label)) + end + end + elseif type == 'item_account' then + if itemCount == nil or itemCount < 1 then + xPlayer.showNotification(TranslateCap('imp_invalid_amount')) + else + local account = xPlayer.getAccount(itemName) - if (itemCount > account.money or account.money < 1) then - xPlayer.showNotification(TranslateCap('imp_invalid_amount')) - else - xPlayer.removeAccountMoney(itemName, itemCount, "Threw away") - local pickupLabel = ('%s [%s]'):format(account.label, TranslateCap('locale_currency', ESX.Math.GroupDigits(itemCount))) - ESX.CreatePickup('item_account', itemName, itemCount, pickupLabel, playerId) - xPlayer.showNotification(TranslateCap('threw_account', ESX.Math.GroupDigits(itemCount), string.lower(account.label))) - end - end - elseif type == 'item_weapon' then - itemName = string.upper(itemName) + if (itemCount > account.money or account.money < 1) then + xPlayer.showNotification(TranslateCap('imp_invalid_amount')) + else + xPlayer.removeAccountMoney(itemName, itemCount, "Threw away") + local pickupLabel = ('%s [%s]'):format(account.label, TranslateCap('locale_currency', ESX.Math.GroupDigits(itemCount))) + ESX.CreatePickup('item_account', itemName, itemCount, pickupLabel, playerId) + xPlayer.showNotification(TranslateCap('threw_account', ESX.Math.GroupDigits(itemCount), string.lower(account.label))) + end + end + elseif type == 'item_weapon' then + itemName = string.upper(itemName) - if xPlayer.hasWeapon(itemName) then - local _, weapon = xPlayer.getWeapon(itemName) - local _, weaponObject = ESX.GetWeapon(itemName) - local components, pickupLabel = ESX.Table.Clone(weapon.components) - xPlayer.removeWeapon(itemName) + if xPlayer.hasWeapon(itemName) then + local _, weapon = xPlayer.getWeapon(itemName) + local _, weaponObject = ESX.GetWeapon(itemName) + local components, pickupLabel = ESX.Table.Clone(weapon.components) + xPlayer.removeWeapon(itemName) - if weaponObject.ammo and weapon.ammo > 0 then - local ammoLabel = weaponObject.ammo.label - pickupLabel = ('%s [%s %s]'):format(weapon.label, weapon.ammo, ammoLabel) - xPlayer.showNotification(TranslateCap('threw_weapon_ammo', weapon.label, weapon.ammo, ammoLabel)) - else - pickupLabel = ('%s'):format(weapon.label) - xPlayer.showNotification(TranslateCap('threw_weapon', weapon.label)) - end + if weaponObject.ammo and weapon.ammo > 0 then + local ammoLabel = weaponObject.ammo.label + pickupLabel = ('%s [%s %s]'):format(weapon.label, weapon.ammo, ammoLabel) + xPlayer.showNotification(TranslateCap('threw_weapon_ammo', weapon.label, weapon.ammo, ammoLabel)) + else + pickupLabel = ('%s'):format(weapon.label) + xPlayer.showNotification(TranslateCap('threw_weapon', weapon.label)) + end - ESX.CreatePickup('item_weapon', itemName, weapon.ammo, pickupLabel, playerId, components, weapon.tintIndex) - end - end - end) + ESX.CreatePickup('item_weapon', itemName, weapon.ammo, pickupLabel, playerId, components, weapon.tintIndex) + end + end + end) - RegisterNetEvent('esx:useItem') - AddEventHandler('esx:useItem', function(itemName) - local source = source - local xPlayer = ESX.GetPlayerFromId(source) - local count = xPlayer.getInventoryItem(itemName).count + RegisterNetEvent('esx:useItem') + AddEventHandler('esx:useItem', function(itemName) + local source = source + local xPlayer = ESX.GetPlayerFromId(source) + local count = xPlayer.getInventoryItem(itemName).count - if count > 0 then - ESX.UseItem(source, itemName) - else - xPlayer.showNotification(TranslateCap('act_imp')) - end - end) + if count > 0 then + ESX.UseItem(source, itemName) + else + xPlayer.showNotification(TranslateCap('act_imp')) + end + end) - RegisterNetEvent('esx:onPickup') - AddEventHandler('esx:onPickup', function(pickupId) - local pickup, xPlayer, success = Core.Pickups[pickupId], ESX.GetPlayerFromId(source) + RegisterNetEvent('esx:onPickup') + AddEventHandler('esx:onPickup', function(pickupId) + local pickup, xPlayer, success = Core.Pickups[pickupId], ESX.GetPlayerFromId(source) - if pickup then - if pickup.type == 'item_standard' then - if xPlayer.canCarryItem(pickup.name, pickup.count) then - xPlayer.addInventoryItem(pickup.name, pickup.count) - success = true - else - xPlayer.showNotification(TranslateCap('threw_cannot_pickup')) - end - elseif pickup.type == 'item_account' then - success = true - xPlayer.addAccountMoney(pickup.name, pickup.count, "Picked up") - elseif pickup.type == 'item_weapon' then - if xPlayer.hasWeapon(pickup.name) then - xPlayer.showNotification(TranslateCap('threw_weapon_already')) - else - success = true - xPlayer.addWeapon(pickup.name, pickup.count) - xPlayer.setWeaponTint(pickup.name, pickup.tintIndex) + if pickup then + if pickup.type == 'item_standard' then + if xPlayer.canCarryItem(pickup.name, pickup.count) then + xPlayer.addInventoryItem(pickup.name, pickup.count) + success = true + else + xPlayer.showNotification(TranslateCap('threw_cannot_pickup')) + end + elseif pickup.type == 'item_account' then + success = true + xPlayer.addAccountMoney(pickup.name, pickup.count, "Picked up") + elseif pickup.type == 'item_weapon' then + if xPlayer.hasWeapon(pickup.name) then + xPlayer.showNotification(TranslateCap('threw_weapon_already')) + else + success = true + xPlayer.addWeapon(pickup.name, pickup.count) + xPlayer.setWeaponTint(pickup.name, pickup.tintIndex) - for k, v in ipairs(pickup.components) do - xPlayer.addWeaponComponent(pickup.name, v) - end - end - end + for _, v in ipairs(pickup.components) do + xPlayer.addWeaponComponent(pickup.name, v) + end + end + end - if success then - Core.Pickups[pickupId] = nil - TriggerClientEvent('esx:removePickup', -1, pickupId) - end - end - end) + if success then + Core.Pickups[pickupId] = nil + TriggerClientEvent('esx:removePickup', -1, pickupId) + end + end + end) end ESX.RegisterServerCallback('esx:getPlayerData', function(source, cb) - local xPlayer = ESX.GetPlayerFromId(source) + local xPlayer = ESX.GetPlayerFromId(source) - cb({identifier = xPlayer.identifier, accounts = xPlayer.getAccounts(), inventory = xPlayer.getInventory(), job = xPlayer.getJob(), - loadout = xPlayer.getLoadout(), money = xPlayer.getMoney(), position = xPlayer.getCoords(true), metadata = xPlayer.getMeta()}) + cb({ + identifier = xPlayer.identifier, + accounts = xPlayer.getAccounts(), + inventory = xPlayer.getInventory(), + job = xPlayer.getJob(), + loadout = xPlayer.getLoadout(), + money = xPlayer.getMoney(), + position = xPlayer.getCoords(true), + metadata = xPlayer.getMeta() + }) end) ESX.RegisterServerCallback('esx:isUserAdmin', function(source, cb) - cb(Core.IsPlayerAdmin(source)) + cb(Core.IsPlayerAdmin(source)) end) -ESX.RegisterServerCallback('esx:getGameBuild', function(source, cb) - cb(tonumber(GetConvar("sv_enforceGameBuild", 1604))) +ESX.RegisterServerCallback('esx:getGameBuild', function(_, cb) + cb(tonumber(GetConvar("sv_enforceGameBuild", 1604))) end) -ESX.RegisterServerCallback('esx:getOtherPlayerData', function(source, cb, target) - local xPlayer = ESX.GetPlayerFromId(target) +ESX.RegisterServerCallback('esx:getOtherPlayerData', function(_, cb, target) + local xPlayer = ESX.GetPlayerFromId(target) - cb({identifier = xPlayer.identifier, accounts = xPlayer.getAccounts(), inventory = xPlayer.getInventory(), job = xPlayer.getJob(), - loadout = xPlayer.getLoadout(), money = xPlayer.getMoney(), position = xPlayer.getCoords(true), metadata = xPlayer.getMeta()}) + cb({ + identifier = xPlayer.identifier, + accounts = xPlayer.getAccounts(), + inventory = xPlayer.getInventory(), + job = xPlayer.getJob(), + loadout = xPlayer.getLoadout(), + money = xPlayer.getMoney(), + position = xPlayer.getCoords(true), + metadata = xPlayer.getMeta() + }) end) ESX.RegisterServerCallback('esx:getPlayerNames', function(source, cb, players) - players[source] = nil + players[source] = nil - for playerId, v in pairs(players) do - local xPlayer = ESX.GetPlayerFromId(playerId) + for playerId, _ in pairs(players) do + local xPlayer = ESX.GetPlayerFromId(playerId) - if xPlayer then - players[playerId] = xPlayer.getName() - else - players[playerId] = nil - end - end + if xPlayer then + players[playerId] = xPlayer.getName() + else + players[playerId] = nil + end + end - cb(players) + cb(players) +end) + +ESX.RegisterServerCallback("esx:spawnVehicle", function(source, cb, vehData) + local ped = GetPlayerPed(source) + ESX.OneSync.SpawnVehicle(vehData.model or `ADDER`, vehData.coords or GetEntityCoords(ped), vehData.coords.w or 0.0, vehData.props or {}, function(id) + if vehData.warp then + local vehicle = NetworkGetEntityFromNetworkId(id) + local timeout = 0 + while GetVehiclePedIsIn(ped) ~= vehicle and timeout <= 15 do + Wait(0) + TaskWarpPedIntoVehicle(ped, vehicle, -1) + timeout += 1 + end + end + cb(id) + end) end) AddEventHandler('txAdmin:events:scheduledRestart', function(eventData) - if eventData.secondsRemaining == 60 then - CreateThread(function() - Wait(50000) - Core.SavePlayers() - end) - end + if eventData.secondsRemaining == 60 then + CreateThread(function() + Wait(50000) + Core.SavePlayers() + end) + end end) AddEventHandler('txAdmin:events:serverShuttingDown', function() - Core.SavePlayers() + Core.SavePlayers() end) - diff --git a/[core]/es_extended/server/modules/actions.lua b/[core]/es_extended/server/modules/actions.lua index 049e0ca1..c0513126 100644 --- a/[core]/es_extended/server/modules/actions.lua +++ b/[core]/es_extended/server/modules/actions.lua @@ -6,7 +6,6 @@ RegisterServerEvent('esx:enteredVehicle') RegisterServerEvent('esx:exitedVehicle') if Config.EnableDebug then - AddEventHandler('esx:playerPedChanged', function(netId) print('esx:playerPedChanged', source, netId) end) @@ -30,5 +29,4 @@ if Config.EnableDebug then AddEventHandler('esx:exitedVehicle', function(plate, seat, displayName, netId) print('esx:exitedVehicle', 'source', source, 'plate', plate, 'seat', seat, 'displayName', displayName, 'netId', netId) end) - -end \ No newline at end of file +end diff --git a/[core]/es_extended/server/modules/callback.lua b/[core]/es_extended/server/modules/callback.lua index 4c7e17fd..d78e9d4a 100644 --- a/[core]/es_extended/server/modules/callback.lua +++ b/[core]/es_extended/server/modules/callback.lua @@ -6,19 +6,19 @@ local RequestId = 0 ---@param eventName string ---@param callback function ESX.RegisterServerCallback = function(eventName, callback) - serverCallbacks[eventName] = callback + serverCallbacks[eventName] = callback 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)) - end + 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)) + end - local source = source + local source = source - serverCallbacks[eventName](source, function(...) - TriggerClientEvent('esx:serverCallback', source, requestId, invoker, ...) - end, ...) + serverCallbacks[eventName](source, function(...) + TriggerClientEvent('esx:serverCallback', source, requestId, invoker, ...) + end, ...) end) ---@param player number playerId @@ -26,18 +26,18 @@ end) ---@param callback function ---@param ... any ESX.TriggerClientCallback = function(player, eventName, callback, ...) - clientRequests[RequestId] = callback + clientRequests[RequestId] = callback - TriggerClientEvent('esx:triggerClientCallback', player, eventName, RequestId, GetInvokingResource() or "unknown", ...) + TriggerClientEvent('esx:triggerClientCallback', player, eventName, RequestId, GetInvokingResource() or "unknown", ...) - RequestId = RequestId + 1 + RequestId = RequestId + 1 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)) - end + 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)) + end - clientRequests[requestId](...) - clientRequests[requestId] = nil -end) \ No newline at end of file + clientRequests[requestId](...) + clientRequests[requestId] = nil +end) diff --git a/[core]/es_extended/server/modules/npwd.lua b/[core]/es_extended/server/modules/npwd.lua index 3e0c1ffc..c4712b01 100644 --- a/[core]/es_extended/server/modules/npwd.lua +++ b/[core]/es_extended/server/modules/npwd.lua @@ -1,32 +1,32 @@ local npwd = GetResourceState('npwd'):find('start') and exports.npwd or nil AddEventHandler('onServerResourceStart', function(resource) - if resource ~= 'npwd' then - return - end + if resource ~= 'npwd' then + return + end - npwd = GetResourceState('npwd'):find('start') and exports.npwd or nil + npwd = GetResourceState('npwd'):find('start') and exports.npwd or nil - for _, xPlayer in pairs(ESX.Players) do - npwd:newPlayer({ - source = xPlayer.source, - identifier = xPlayer.identifier, - firstname = xPlayer.get('firstName'), - lastname = xPlayer.get('lastName') - }) - end + for _, xPlayer in pairs(ESX.Players) do + npwd:newPlayer({ + source = xPlayer.source, + identifier = xPlayer.identifier, + firstname = xPlayer.get('firstName'), + lastname = xPlayer.get('lastName') + }) + end end) AddEventHandler('onServerResourceStop', function(resource) - if resource == 'npwd' then - npwd = nil - end + if resource == 'npwd' then + npwd = nil + end end) AddEventHandler('esx:playerLoaded', function(playerId, xPlayer) - if not npwd then - return - end + if not npwd then + return + end if not xPlayer then xPlayer = ESX.GetPlayerFromId(playerId) @@ -41,9 +41,9 @@ AddEventHandler('esx:playerLoaded', function(playerId, xPlayer) end) AddEventHandler('esx:playerLogout', function(playerId) - if not npwd then - return - end + if not npwd then + return + end npwd:unloadPlayer(playerId) -end) \ No newline at end of file +end) diff --git a/[core]/es_extended/server/onesync.lua b/[core]/es_extended/server/onesync.lua index f43acdd7..515b5145 100644 --- a/[core]/es_extended/server/onesync.lua +++ b/[core]/es_extended/server/onesync.lua @@ -26,13 +26,13 @@ local function getNearbyPlayers(source, closest, distance, ignore) if not closest then local dist = #(source - coords) if dist <= distance then - count += 1 - result[count] = {id = xPlayer.source, ped = NetworkGetNetworkIdFromEntity(entity), coords = coords, dist = dist} + count = count + 1 + result[count] = { id = xPlayer.source, ped = NetworkGetNetworkIdFromEntity(entity), coords = coords, dist = dist } end else local dist = #(source - coords) if dist <= (result.dist or distance) then - result = {id = xPlayer.source, ped = NetworkGetNetworkIdFromEntity(entity), coords = coords, dist = dist} + result = { id = xPlayer.source, ped = NetworkGetNetworkIdFromEntity(entity), coords = coords, dist = dist } end end end @@ -76,23 +76,22 @@ function ESX.OneSync.SpawnVehicle(model, coords, heading, properties, cb) local networkId = NetworkGetNetworkIdFromEntity(createdVehicle) Entity(createdVehicle).state:set('VehicleProperties', vehicleProperties, true) cb(networkId) - else + else print(('[^1ERROR^7] Tried to spawn invalid vehicle - ^5%s^7!'):format(model)) end end) end) end - ---@param model number|string ---@param coords vector3|table ---@param heading number ---@param cb function function ESX.OneSync.SpawnObject(model, coords, heading, cb) if type(model) == 'string' then model = joaat(model) end - local coords = type(coords) == "vector3" and coords or vector3(coords.x, coords.y, coords.z) + local objectCoords = type(coords) == "vector3" and coords or vector3(coords.x, coords.y, coords.z) CreateThread(function() - local entity = CreateObject(model, coords, true, true) + local entity = CreateObject(model, objectCoords, true, true) while not DoesEntityExist(entity) do Wait(50) end SetEntityHeading(entity, heading) cb(NetworkGetNetworkIdFromEntity(entity)) @@ -133,7 +132,7 @@ local function getNearbyEntities(entities, coords, modelFilter, maxDistance, isP if not modelFilter or modelFilter[GetEntityModel(entity)] then local entityCoords = GetEntityCoords(entity) if not maxDistance or #(coords - entityCoords) <= maxDistance then - nearbyEntities[#nearbyEntities+1] = NetworkGetNetworkIdFromEntity(entity) + nearbyEntities[#nearbyEntities + 1] = NetworkGetNetworkIdFromEntity(entity) end end end @@ -167,7 +166,7 @@ function ESX.OneSync.GetVehiclesInArea(coords, maxDistance, modelFilter) end local function getClosestEntity(entities, coords, modelFilter, isPed) - local distance, closestEntity, closestCoords = maxDistance or 100, nil, nil + local distance, closestEntity, closestCoords = 100, nil, nil coords = type(coords) == 'number' and GetEntityCoords(GetPlayerPed(coords)) or vector3(coords.x, coords.y, coords.z) for _, entity in pairs(entities) do @@ -205,6 +204,6 @@ function ESX.OneSync.GetClosestVehicle(coords, modelFilter) return getClosestEntity(GetAllVehicles(), coords, modelFilter) end -ESX.RegisterServerCallback("esx:Onesync:SpawnObject", function(source, cb, model, coords, heading) +ESX.RegisterServerCallback("esx:Onesync:SpawnObject", function(_, cb, model, coords, heading) ESX.OneSync.SpawnObject(model, coords, heading, cb) end) diff --git a/[core]/es_extended/server/paycheck.lua b/[core]/es_extended/server/paycheck.lua index 1f234a57..98138293 100644 --- a/[core]/es_extended/server/paycheck.lua +++ b/[core]/es_extended/server/paycheck.lua @@ -2,8 +2,8 @@ function StartPayCheck() CreateThread(function() while true do Wait(Config.PaycheckInterval) - for player, xPlayer in pairs(ESX.Players) do + local jobLabel = xPlayer.job.label local job = xPlayer.job.grade_name local salary = xPlayer.job.grade_salary @@ -12,13 +12,27 @@ function StartPayCheck() xPlayer.addAccountMoney('bank', salary, "Welfare Check") TriggerClientEvent('esx:showAdvancedNotification', player, TranslateCap('bank'), TranslateCap('received_paycheck'), TranslateCap('received_help', salary), 'CHAR_BANK_MAZE', 9) + if Config.LogPaycheck then + ESX.DiscordLogFields("Paycheck", "Paycheck - Unemployment Benefits", "green", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Amount", value = salary, inline = true } + }) + end elseif Config.EnableSocietyPayouts then -- possibly a society TriggerEvent('esx_society:getSociety', xPlayer.job.name, function(society) - if society ~= nil then -- verified society + if society ~= nil then -- verified society TriggerEvent('esx_addonaccount:getSharedAccount', society.account, function(account) if account.money >= salary then -- does the society money to pay its employees? xPlayer.addAccountMoney('bank', salary, "Paycheck") account.removeMoney(salary) + if Config.LogPaycheck then + ESX.DiscordLogFields("Paycheck", "Paycheck - " .. jobLabel, "green", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Amount", value = salary, inline = true } + }) + end TriggerClientEvent('esx:showAdvancedNotification', player, TranslateCap('bank'), TranslateCap('received_paycheck'), TranslateCap('received_salary', salary), 'CHAR_BANK_MAZE', 9) @@ -28,12 +42,26 @@ function StartPayCheck() end) else -- not a society xPlayer.addAccountMoney('bank', salary, "Paycheck") + if Config.LogPaycheck then + ESX.DiscordLogFields("Paycheck", "Paycheck - " .. jobLabel, "green", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Amount", value = salary, inline = true } + }) + end TriggerClientEvent('esx:showAdvancedNotification', player, TranslateCap('bank'), TranslateCap('received_paycheck'), TranslateCap('received_salary', salary), 'CHAR_BANK_MAZE', 9) end end) else -- generic job xPlayer.addAccountMoney('bank', salary, "Paycheck") + if Config.LogPaycheck then + ESX.DiscordLogFields("Paycheck", "Paycheck - Generic", "green", { + { name = "Player", value = xPlayer.name, inline = true }, + { name = "ID", value = xPlayer.source, inline = true }, + { name = "Amount", value = salary, inline = true } + }) + end TriggerClientEvent('esx:showAdvancedNotification', player, TranslateCap('bank'), TranslateCap('received_paycheck'), TranslateCap('received_salary', salary), 'CHAR_BANK_MAZE', 9) end diff --git a/[core]/esx_context/config.lua b/[core]/esx_context/config.lua index c8812138..58301301 100644 --- a/[core]/esx_context/config.lua +++ b/[core]/esx_context/config.lua @@ -1 +1 @@ -PREVIEW_KEYBIND = "LMENU" \ No newline at end of file +PREVIEW_KEYBIND = "LMENU" diff --git a/[core]/esx_context/fxmanifest.lua b/[core]/esx_context/fxmanifest.lua index ff68b532..2841b9b3 100644 --- a/[core]/esx_context/fxmanifest.lua +++ b/[core]/esx_context/fxmanifest.lua @@ -4,7 +4,7 @@ game 'gta5' author 'ESX-Framework & Brayden' description 'Offical ESX Legacy Context Menu' lua54 'yes' -version '1.9.4' +version '1.9.5' ui_page 'index.html' @@ -21,4 +21,4 @@ files { dependencies { 'es_extended' -} \ No newline at end of file +} diff --git a/[core]/esx_context/index.html b/[core]/esx_context/index.html index 67670963..9e40e850 100644 --- a/[core]/esx_context/index.html +++ b/[core]/esx_context/index.html @@ -1,462 +1,452 @@ - - - - + + + + - - - ESX Context HUD + + + ESX Context HUD - - + /* Show the checkmark when checked */ + .container input:checked ~ .checkmark:after { + display: block; + } + + - -
-
- -
- Unselectable Item - Testing, testing a description here. + +
+
+ +
+ Unselectable Item + Testing, testing a description here. +
+
+
+ +
+ Disabled Item + Testing, testing a description here. +
+
+
+ +
+ Item + Testing, testing a description here. Generic words to force overflow. +
+
-
-
- -
- Disabled Item - Testing, testing a description here. -
-
-
- -
- Item - Testing, testing a description here. Generic words to force - overflow. -
-
-
- - + // Open([ + // { + // unselectable:true, + // icon:"fas fa-info-circle", + // title:"Unselectable Item (Header/Label?)", + // }, + // { + // icon:"fas fa-check", + // title:"Item A", + // description:"Some description here. Add some words to make the text overflow." + // }, + // { + // disabled:true, + // icon:"fas fa-times", + // title:"Disabled Item", + // description:"Some description here. Add some words to make the text overflow." + // }, + // { + // icon:"fas fa-check", + // title:"Item B", + // description:"Some description here. Add some words to make the text overflow." + // }, + // { + // input:true, + // icon:"fas fa-times", + // title:"Input Text", + // inputType:"text", + // inputPlaceholder:"Placeholder..." + // }, + // { + // input:true, + // icon:"", + // title:"Input Number", + // inputType:"number", + // inputPlaceholder:"Placeholder...", + // inputValue:0, + // inputMin:0, + // inputMax:50 + // }, + // { + // input:true, + // icon:"", + // title:"Input Radio", + // inputType:"radio", + // inputPlaceholder:"turbocharger", + // inputValue:"supercharger", + // inputValues:[ + // { + // value:"turbocharger", + // title:"Turbocharger" + // }, + // { + // value:"supercharger", + // title:"Supercharger" + // }, + // ] + // } + // ]) + + diff --git a/[core]/esx_context/main.lua b/[core]/esx_context/main.lua index 55bfad9c..b1aa609b 100644 --- a/[core]/esx_context/main.lua +++ b/[core]/esx_context/main.lua @@ -1,18 +1,17 @@ -local defaultPosition = "right" -- [ left | center | right ] local activeMenu local Debug = ESX.GetConfig().EnableDebug -- Global functions -- [ Post | Open | Closed ] -function Post(fn,...) +function Post(fn, ...) SendNUIMessage({ func = fn, - args = {...} + args = { ... } }) end -function Open(position,eles,onSelect,onClose,canClose) +function Open(position, eles, onSelect, onClose, canClose) local canClose = canClose == nil and true or canClose activeMenu = { position = position, @@ -22,20 +21,20 @@ function Open(position,eles,onSelect,onClose,canClose) onClose = onClose } - LocalPlayer.state:set("context:active",true) + LocalPlayer.state:set("context:active", true) - Post("Open",eles,position) + Post("Open", eles, position) end function Closed() - SetNuiFocus(false,false) + SetNuiFocus(false, false) local menu = activeMenu local cb = menu.onClose activeMenu = nil - LocalPlayer.state:set("context:active",false) + LocalPlayer.state:set("context:active", false) if cb then cb(menu) @@ -45,14 +44,14 @@ end -- Exports -- [ Preview | Open | Close ] -exports("Preview",Open) +exports("Preview", Open) -exports("Open",function(...) +exports("Open", function(...) Open(...) - SetNuiFocus(true,true) + SetNuiFocus(true, true) end) -exports("Close",function() +exports("Close", function() if not activeMenu then return end @@ -62,7 +61,7 @@ exports("Close",function() Closed() end) -exports("Refresh",function(eles,position) +exports("Refresh", function(eles, position) if not activeMenu then return end @@ -70,13 +69,13 @@ exports("Refresh",function(eles,position) activeMenu.eles = eles or activeMenu.eles activeMenu.position = position or activeMenu.position - Post("Open",activeMenu.eles,activeMenu.position) + Post("Open", activeMenu.eles, activeMenu.position) end) -- NUI Callbacks -- [ closed | selected | changed ] -RegisterNUICallback("closed",function(data,cb) +RegisterNUICallback("closed", function(_, cb) if not activeMenu or (activeMenu and not activeMenu.canClose) then return cb(false) end @@ -84,20 +83,15 @@ RegisterNUICallback("closed",function(data,cb) Closed() end) -RegisterNUICallback("selected",function(data,cb) - if not activeMenu - or not activeMenu.onSelect - or not data.index - then +RegisterNUICallback("selected", function(data, cb) + if not activeMenu or not activeMenu.onSelect or not data.index then return end local index = tonumber(data.index) local ele = activeMenu.eles[index] - if not ele - or ele.input - then + if not ele or ele.input then return end @@ -105,20 +99,15 @@ RegisterNUICallback("selected",function(data,cb) if cb then cb('ok') end end) -RegisterNUICallback("changed",function(data,cb) - if not activeMenu - or not data.index - or not data.value - then +RegisterNUICallback("changed", function(data, cb) + if not activeMenu or not data.index or not data.value then return end local index = tonumber(data.index) local ele = activeMenu.eles[index] - if not ele - or not ele.input - then + if not ele or not ele.input then return end @@ -126,11 +115,11 @@ RegisterNUICallback("changed",function(data,cb) ele.inputValue = tonumber(data.value) if ele.inputMin then - ele.inputValue = math.max(ele.inputMin,ele.inputValue) + ele.inputValue = math.max(ele.inputMin, ele.inputValue) end if ele.inputMax then - ele.inputValue = math.min(ele.inputMax,ele.inputValue) + ele.inputValue = math.min(ele.inputMax, ele.inputValue) end elseif ele.inputType == "text" then ele.inputValue = data.value @@ -143,22 +132,20 @@ end) -- Keybind local function focusPreview() - if not activeMenu - or not activeMenu.onSelect - then + if not activeMenu or not activeMenu.onSelect then return end - SetNuiFocus(true,true) + SetNuiFocus(true, true) end if PREVIEW_KEYBIND then - RegisterCommand("previewContext",focusPreview) + RegisterCommand("previewContext", focusPreview) - RegisterKeyMapping("previewContext","Preview Active Context","keyboard",PREVIEW_KEYBIND) + RegisterKeyMapping("previewContext", "Preview Active Context", "keyboard", PREVIEW_KEYBIND) end -exports("focusPreview",focusPreview) +exports("focusPreview", focusPreview) -- Debug/Test -- Commands: @@ -168,31 +155,31 @@ if Debug then local position = "right" local eles = { - { - unselectable=true, - icon="fas fa-info-circle", - title="Unselectable Item (Header/Label?)", - }, - { - icon="fas fa-check", - title="Item A", - description="Some description here. Add some words to make the text overflow." - }, - { - disabled=true, - icon="fas fa-times", - title="Disabled Item", - description="Some description here. Add some words to make the text overflow." - }, - { - icon="fas fa-check", - title="Item B", - description="Some description here. Add some words to make the text overflow." - }, + { + unselectable = true, + icon = "fas fa-info-circle", + title = "Unselectable Item (Header/Label?)", + }, + { + icon = "fas fa-check", + title = "Item A", + description = "Some description here. Add some words to make the text overflow." + }, + { + disabled = true, + icon = "fas fa-times", + title = "Disabled Item", + description = "Some description here. Add some words to make the text overflow." + }, + { + icon = "fas fa-check", + title = "Item B", + description = "Some description here. Add some words to make the text overflow." + }, } - local function onSelect(menu,ele) - print("Ele selected",ele.title) + local function onSelect(menu, ele) + print("Ele selected", ele.title) if ele.name == "close" then exports["esx_context"]:Close() @@ -202,64 +189,64 @@ if Debug then return end - for _,ele in ipairs(menu.eles) do - if ele.input then - print(ele.name,ele.inputType,ele.inputValue) + for _, element in ipairs(menu.eles) do + if element.input then + print(element.name, element.inputType, element.inputValue) end end exports["esx_context"]:Close() end - local function onClose(menu) + local function onClose() print("Menu closed.") end - RegisterCommand("ctx:preview",function() - exports["esx_context"]:Preview(position,eles) + RegisterCommand("ctx:preview", function() + exports["esx_context"]:Preview(position, eles) end) - RegisterCommand("ctx:open",function() - exports["esx_context"]:Open(position,eles,onSelect,onClose) + RegisterCommand("ctx:open", function() + exports["esx_context"]:Open(position, eles, onSelect, onClose) end) - RegisterCommand("ctx:close",function() + RegisterCommand("ctx:close", function() exports["esx_context"]:Close() end) - RegisterCommand("ctx:form",function() - local eles = { + RegisterCommand("ctx:form", function() + local formMenu = { { - unselectable=true, - icon="fas fa-info-circle", - title="Unselectable Item (Header/Label?)", + unselectable = true, + icon = "fas fa-info-circle", + title = "Unselectable Item (Header/Label?)", }, { - icon="", - title="Input Text", - input=true, - inputType="text", - inputPlaceholder="Placeholder...", - name="firstname", + icon = "", + title = "Input Text", + input = true, + inputType = "text", + inputPlaceholder = "Placeholder...", + name = "firstname", }, { - icon="", - title="Input Text", - input=true, - inputType="text", - inputPlaceholder="Placeholder...", - name="lastname", + icon = "", + title = "Input Text", + input = true, + inputType = "text", + inputPlaceholder = "Placeholder...", + name = "lastname", }, { - icon="", - title="Input Number", - input=true, - inputType="number", - inputPlaceholder="Placeholder...", - inputValue=0, - inputMin=0, - inputMax=50, - name="age", + icon = "", + title = "Input Number", + input = true, + inputType = "number", + inputPlaceholder = "Placeholder...", + inputValue = 0, + inputMin = 0, + inputMax = 50, + name = "age", }, { icon = "fas fa-check", @@ -268,6 +255,6 @@ if Debug then } } - exports["esx_context"]:Open(position,eles,onSelect,onClose) + exports["esx_context"]:Open(position, formMenu, onSelect, onClose) end) end diff --git a/[core]/esx_identity/client/main.lua b/[core]/esx_identity/client/main.lua index 0671c876..59b516e4 100644 --- a/[core]/esx_identity/client/main.lua +++ b/[core]/esx_identity/client/main.lua @@ -23,7 +23,7 @@ AddEventHandler('esx:loadingScreenOff', function() loadingScreenFinished = true end) -RegisterNUICallback('ready', function(data, cb) +RegisterNUICallback('ready', function(_, cb) ready = true cb(1) end) @@ -39,19 +39,19 @@ if not Config.UseDeferrals then ClearTimecycleModifier() end - SendNUIMessage({type = "enableui", enable = state}) + SendNUIMessage({ type = "enableui", enable = state }) end RegisterNetEvent('esx_identity:showRegisterIdentity', function() TriggerEvent('esx_skin:resetFirstSpawn') while not ready do - print('Waiting for esx_identity NUI..') + print('Waiting for esx_identity NUI..') Wait(100) end if not ESX.PlayerData.dead then setGuiState(true) end end) - RegisterNUICallback('register', function(data, cb) + RegisterNUICallback('register', function(data,cb) if not guiEnabled then return end @@ -68,5 +68,6 @@ if not Config.UseDeferrals then TriggerEvent('esx_skin:playerRegistered') end end, data) + cb(1) end) end diff --git a/[core]/esx_identity/config.lua b/[core]/esx_identity/config.lua index 8eeb007c..7e450c23 100644 --- a/[core]/esx_identity/config.lua +++ b/[core]/esx_identity/config.lua @@ -1,23 +1,23 @@ -Config = {} -Config.Locale = GetConvar('esx:locale', 'en') +Config = {} +Config.Locale = GetConvar('esx:locale', 'en') -- [Config.EnableCommands] -- Enables Commands Such As /char and /chardel -Config.EnableCommands = ESX.GetConfig().EnableDebug +Config.EnableCommands = ESX.GetConfig().EnableDebug -- EXPERIMENTAL Character Registration Method -Config.UseDeferrals = false +Config.UseDeferrals = false -- These values are for the date format in the registration menu -- Choices: DD/MM/YYYY | MM/DD/YYYY | YYYY/MM/DD -Config.DateFormat = 'DD/MM/YYYY' +Config.DateFormat = 'DD/MM/YYYY' -- These values are for the second input validation in server/main.lua -Config.MaxNameLength = 20 -- Max Name Length. -Config.MinHeight = 120 -- 120 cm lowest height -Config.MaxHeight = 220 -- 220 cm max height. -Config.LowestYear = 1900 -- 112 years old is the oldest you can be. -Config.HighestYear = 2005 -- 18 years old is the youngest you can be. +Config.MaxNameLength = 20 -- Max Name Length. +Config.MinHeight = 120 -- 120 cm lowest height +Config.MaxHeight = 220 -- 220 cm max height. +Config.LowestYear = 1900 -- 112 years old is the oldest you can be. +Config.HighestYear = 2005 -- 18 years old is the youngest you can be. -Config.FullCharDelete = true -- Delete all reference to character. -Config.EnableDebugging = ESX.GetConfig().EnableDebug -- prints for debugging :) +Config.FullCharDelete = true -- Delete all reference to character. +Config.EnableDebugging = ESX.GetConfig().EnableDebug -- prints for debugging :) diff --git a/[core]/esx_identity/fxmanifest.lua b/[core]/esx_identity/fxmanifest.lua index 618224aa..2a916e95 100644 --- a/[core]/esx_identity/fxmanifest.lua +++ b/[core]/esx_identity/fxmanifest.lua @@ -4,7 +4,7 @@ game 'gta5' description 'ESX Identity' lua54 'yes' -version '1.9.4' +version '1.9.5' shared_scripts { '@es_extended/imports.lua', @@ -32,4 +32,4 @@ files { 'html/css/style.css', } -dependency 'es_extended' \ No newline at end of file +dependency 'es_extended' diff --git a/[core]/esx_identity/html/css/style.css b/[core]/esx_identity/html/css/style.css index 939753f7..45f2404a 100644 --- a/[core]/esx_identity/html/css/style.css +++ b/[core]/esx_identity/html/css/style.css @@ -1,152 +1,153 @@ @import url("https://fonts.googleapis.com/css2?family=Oswald&display=swap"); body { - font-family: sans-serif; - overflow: hidden; - display: none; + font-family: sans-serif; + overflow: hidden; + background-color: transparent; +} + +.none { + display: none; } .dialog { - width: 332px; - opacity: 0.95; - position: absolute; - margin-left: auto; - margin-right: auto; - top: 30%; - padding: 20px; - left: 50%; /* à 50%/50% du parent référent */ - transform: translate(-50%); /* décalage de 50% de sa propre taille */ - background-color: #152029; - border-radius: 10px; - box-shadow: 0 -5px 3px -3px #21303d, 0 5px 3px -3px #21303d; - border: none; - margin: 5px; - margin-bottom: 20px; - color: #ffffff; + width: 332px; + opacity: 0.95; + padding: 20px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + background-color: #152029; + border-radius: 10px; + box-shadow: 0 -5px 3px -3px #21303d, 0 5px 3px -3px #21303d; + border: none; + color: #ffffff; } .title { - font-family: "Oswald", sans-serif; - font-size: 22px; - text-align: center; - padding: 5px; - margin-bottom: 20px; + font-family: "Oswald", sans-serif; + font-size: 22px; + text-align: center; + padding: 5px; + margin-bottom: 20px; } input { - margin-bottom: 15px; - border: none; - border-bottom: 2px solid #58636c; - width: 100%; - outline: none; - padding: 10px; - padding-left: 0; - font-family: "Oswald", sans-serif; - color: #ffffff; - text-align: left; - background-color: #152029; + margin-bottom: 15px; + border: none; + border-bottom: 2px solid #58636c; + width: 100%; + outline: none; + padding: 10px; + padding-left: 0; + font-family: "Oswald", sans-serif; + color: #ffffff; + text-align: left; + background-color: #152029; } ::placeholder { - /* Chrome, Firefox, Opera, Safari 10.1+ */ - color: rgba(84, 97, 105, 255); - font-family: "Oswald", sans-serif; - font-weight: 200; - opacity: 1; /* Firefox */ + /* Chrome, Firefox, Opera, Safari 10.1+ */ + color: rgba(84, 97, 105, 255); + font-family: "Oswald", sans-serif; + font-weight: 200; + opacity: 1; + /* Firefox */ } .radio-toolbar input[type="radio"] { - opacity: 0; - position: absolute; - width: 36%; + opacity: 0; + position: absolute; + width: 36%; } .radio-toolbar label { - display: inline-block; - margin-top: 5px; - background-color: rgba(15, 15, 15, 0.9); - padding: 10px 20px; - font-family: "Oswald", sans-serif; - font-weight: 500; - font-size: 16px; - color: #ffffff; - border: none; - border-radius: 5px; - width: 36%; + display: inline-block; + margin-top: 5px; + background-color: rgba(15, 15, 15, 0.9); + padding: 10px 20px; + font-family: "Oswald", sans-serif; + font-weight: 500; + font-size: 16px; + color: #ffffff; + border: none; + border-radius: 5px; + width: 36%; } .radio-toolbar input[type="radio"]:checked + label { - width: 36%; - background-color: rgba(15, 15, 15, 0.9); - border: none; - border-bottom: 1px solid #93a3b6; - border-radius: 5px; - color: #ffffff; + width: 36%; + background-color: rgba(15, 15, 15, 0.9); + border: none; + border-bottom: 1px solid #93a3b6; + border-radius: 5px; + color: #ffffff; } .radio-toolbar input[type="radio"]:focus + label { - background-color: rgba(15, 15, 15, 0.9); - border: none; - border-bottom: 1px solid #93a3b6; - border-radius: 5px; - color: #ffffff; + background-color: rgba(15, 15, 15, 0.9); + border: none; + border-bottom: 1px solid #93a3b6; + border-radius: 5px; + color: #ffffff; } .radio-toolbar label:hover { - background-color: rgba(28, 24, 24, 0.931); - width: 36%; - color: #ffffff; + background-color: rgba(28, 24, 24, 0.931); + width: 36%; + color: #ffffff; } button { - display: block; - margin-top: 35px; - /*padding: 10px;*/ - background-color: #4569c6; - outline: none; - border: 2px double rgba(40, 40, 40, 0.9); - color: #ffffff; - height: 30px; - width: 100%; + display: block; + margin-top: 35px; + /*padding: 10px;*/ + background-color: #4569c6; + outline: none; + border: 2px double rgba(40, 40, 40, 0.9); + color: #ffffff; + height: 30px; + width: 100%; } h1 { - display: block; - margin-top: 5px; - margin-right: 5px; - padding: 10px; - background-color: rgba(15, 15, 15, 0.9); - color: #ffffff; - width: 93%; - text-align: center; + display: block; + margin-top: 5px; + margin-right: 5px; + padding: 10px; + background-color: rgba(15, 15, 15, 0.9); + color: #ffffff; + width: 93%; + text-align: center; } .range-wrap { - position: relative; - margin: 0 auto 3rem; + position: relative; + margin: 0 auto 3rem; } .range { - width: 100%; + width: 100%; } .bubble { - background: rgba(15, 15, 15, 0.9); - color: #ffffff; - padding: 4px 12px; - position: absolute; - border-radius: 4px; - left: 50%; - transform: translateX(-50%); + background: rgba(15, 15, 15, 0.9); + color: #ffffff; + padding: 4px 12px; + position: absolute; + border-radius: 4px; + left: 50%; + transform: translateX(-50%); } .bubble::after { - content: ""; - position: absolute; - width: 2px; - height: 2px; - background: rgba(15, 15, 15, 0.9); - color: black; - top: -1px; - left: 50%; + content: ""; + position: absolute; + width: 2px; + height: 2px; + background: rgba(15, 15, 15, 0.9); + color: black; + top: -1px; + left: 50%; } diff --git a/[core]/esx_identity/html/index.html b/[core]/esx_identity/html/index.html index 0e38d430..f1320ea7 100644 --- a/[core]/esx_identity/html/index.html +++ b/[core]/esx_identity/html/index.html @@ -1,119 +1,49 @@ - - - - + + + - ESX Identity - + ESX Identity + - -
-
IDENTITY
-
-
- First Name -
-
-
- Last Name -
-
-
- Date of Birth (MM/DD/YYYY) -
-
-
- Height -
-
-
-
- - + +
+
IDENTITY
+ +
First Name
+
+
Last Name
+
+
Date of Birth (MM/DD/YYYY)
+
+
Height
+
+
+
+ + - - -
-
- - -
- If the submit button doesn't work, please ensure that you've entered - the fields correctly. -
-
- - - + + +
+
+ + +
+ If the submit button doesn't work, please ensure that you've entered the fields correctly. +
+
+ + + + diff --git a/[core]/esx_identity/html/js/script.js b/[core]/esx_identity/html/js/script.js index e5ffea11..75cd203f 100644 --- a/[core]/esx_identity/html/js/script.js +++ b/[core]/esx_identity/html/js/script.js @@ -1,43 +1,39 @@ -$(document).ready(function () { - $.post("http://esx_identity/ready", JSON.stringify({})); - - window.addEventListener("message", function (event) { +window.addEventListener("message", (event) => { if (event.data.type === "enableui") { - event.data.enable ? $(document.body).show() : $(document.body).hide(); + document.body.classList[event.data.enable ? "remove" : "add"]("none"); } - }); +}); - $("#register").submit(function (event) { +document.querySelector("#register").addEventListener("submit", (event) => { event.preventDefault(); - const dofVal = $("#dateofbirth").val(); + const dofVal = document.querySelector("#dateofbirth").value; if (!dofVal) return; const dateCheck = new Date(dofVal); - const year = new Intl.DateTimeFormat("en", { year: "numeric" }).format( - dateCheck - ); - const month = new Intl.DateTimeFormat("en", { month: "2-digit" }).format( - dateCheck - ); - const day = new Intl.DateTimeFormat("en", { day: "2-digit" }).format( - dateCheck - ); + const year = new Intl.DateTimeFormat("en", { year: "numeric" }).format(dateCheck); + const month = new Intl.DateTimeFormat("en", { month: "2-digit" }).format(dateCheck); + const day = new Intl.DateTimeFormat("en", { day: "2-digit" }).format(dateCheck); const formattedDate = `${day}/${month}/${year}`; + fetch("http://esx_identity/register", { + method: "POST", + body: JSON.stringify({ + firstname: document.querySelector("#firstname").value, + lastname: document.querySelector("#lastname").value, + dateofbirth: formattedDate, + sex: document.querySelector("input[type='radio'][name='sex']:checked").value, + height: document.querySelector("#height").value, + }), + }); - $.post( - "http://esx_identity/register", - JSON.stringify({ - firstname: $("#firstname").val(), - lastname: $("#lastname").val(), - dateofbirth: formattedDate, - sex: $("input[type='radio'][name='sex']:checked").val(), - height: $("#height").val(), - }) - ); - - $("#register").trigger("reset"); - }); + document.querySelector("#register").reset(); +}); + +document.addEventListener("DOMContentLoaded", () => { + fetch("http://esx_identity/ready", { + method: "POST", + body: JSON.stringify({}), + }); }); diff --git a/[core]/esx_identity/locales/cs.lua b/[core]/esx_identity/locales/cs.lua index ac691129..88858b5e 100644 --- a/[core]/esx_identity/locales/cs.lua +++ b/[core]/esx_identity/locales/cs.lua @@ -1,11 +1,11 @@ -Locales['cs'] = { - ['show_registration'] = 'zobrazit registracni menu', - ['show_active_character'] = 'zobrazit aktivni postavy', - ['delete_character'] = 'smazat svou stavajici postavu a vytvorit novou', - ['deleted_character'] = 'vase postava byla smazana.', - ['not_registered'] = 'nemas zaregistrovanou postavu.', - ['active_character'] = 'aktivni postava: %s %s', - ['already_registered'] = 'jiz mas zaregistrovanou postavu.', - ['failed_identity'] = 'nastaveni vasi postavy selhalo, zkus to prosim znovu pozdeji nebo kontaktuj majitele serveru!', - ['create_a_character'] = 'aby jsi mohl/a hrat, tak se musis registrovat.' +Locales["cs"] = { + ["show_registration"] = "zobrazit registracni menu", + ["show_active_character"] = "zobrazit aktivni postavy", + ["delete_character"] = "smazat svou stavajici postavu a vytvorit novou", + ["deleted_character"] = "vase postava byla smazana.", + ["not_registered"] = "nemas zaregistrovanou postavu.", + ["active_character"] = "aktivni postava: %s %s", + ["already_registered"] = "jiz mas zaregistrovanou postavu.", + ["failed_identity"] = "nastaveni vasi postavy selhalo, zkus to prosim znovu pozdeji nebo kontaktuj majitele serveru!", + ["create_a_character"] = "aby jsi mohl/a hrat, tak se musis registrovat.", } diff --git a/[core]/esx_identity/locales/da.lua b/[core]/esx_identity/locales/da.lua index ab126312..aa4b83de 100644 --- a/[core]/esx_identity/locales/da.lua +++ b/[core]/esx_identity/locales/da.lua @@ -1,39 +1,38 @@ -Locales['da'] = { - ['show_active_character'] = 'Vis aktiv karakter', - ['active_character'] = 'Aktiv karakter: %s', - ['error_active_character'] = 'Der opstod en fejl under indhentning af dine data.', - ['delete_character'] = 'Slet din nuværende karakter.', - ['deleted_character'] = 'Karakter slettet', - ['error_delete_character'] = 'Der opstod et problem med at slette din karakter.', - ['thank_you_for_registering'] = 'Registreringen lykkedes. God fornøjelse!', - ['debug_xPlayer_get_first_name'] = 'Returnerer dit fornavn', - ['debug_xPlayer_get_last_name'] = 'Returnerer dit efternavn', - ['debug_xPlayer_get_full_name'] = 'Returnerer dit fulde navn', - ['debug_xPlayer_get_sex'] = 'Returnerer dit køn', - ['debug_xPlayer_get_dob'] = 'Returnerer din fødselsdato', - ['debug_xPlayer_get_height'] = 'Giver din højde tilbage', - ['error_debug_xPlayer_get_first_name'] = 'Der opstod et problem med at få dit fornavn.', - ['error_debug_xPlayer_get_last_name'] = 'Der opstod et problem med at få dit efternavn.', - ['error_debug_xPlayer_get_full_name'] = 'Der opstod et problem under indhentning af dit fulde navn.', - ['error_debug_xPlayer_get_sex'] = 'Der var et problem med at få dit sex.', - ['error_debug_xPlayer_get_dob'] = 'Der var et problem med at få din fødselsdato.', - ['error_debug_xPlayer_get_height'] = 'Der var et problem med at få din højde.', - ['return_debug_xPlayer_get_first_name'] = 'Fornavn: %s', - ['return_debug_xPlayer_get_last_name'] = 'Efternavn: %s', - ['return_debug_xPlayer_get_full_name'] = 'Fulde Navn: %s', - ['return_debug_xPlayer_get_sex'] = 'Køn: %s', - ['return_debug_xPlayer_get_dob'] = 'Fødselsdato: %s', - ['return_debug_xPlayer_get_height'] = 'Højde: %s Tommer', - ['data_incorrect'] = 'Ugyldige data. Prøv venligst igen.', - ['invalid_format'] = 'Ugyldigt dataformat. Prøv venligst igen.', - ['no_identifier'] = '[ESX Identitet]\nDer var et problem under indlæsning af din karakter!\nFejlkode: identifikator mangler\n\nDette skyldes, at din identifikator mangler. Venligst vend tilbage senere eller rapporter dette problem til serverejeren.', - ['missing_identity'] = '[ESX Identitet]\nDer var et problem med at indlæse din karakter!\nFejlkode: identitet mangler\n\nDet ser ud til, at din identitet mangler, prøv at oprette forbindelse igen.', - ['deleted_identity'] = 'Tegn slettet. Tilmeld dig igen for at oprette en ny karakter.', - ['already_registered'] = 'Du har allerede tilmeldt dig.', - ['invalid_firstname_format'] = 'Ugyldigt format (fornavn): Prøv venligst igen.', - ['invalid_lastname_format'] = 'Ugyldigt format (efternavn): Prøv igen.', - ['invalid_dob_format'] = 'Ugyldigt format (DOB): Prøv venligst igen.', - ['invalid_sex_format'] = 'Ugyldigt format (køn): Prøv venligst igen.', - ['invalid_height_format'] = 'Ugyldigt format (højde): Prøv venligst igen.' - } - +Locales["da"] = { + ["show_active_character"] = "Vis aktiv karakter", + ["active_character"] = "Aktiv karakter: %s", + ["error_active_character"] = "Der opstod en fejl under indhentning af dine data.", + ["delete_character"] = "Slet din nuværende karakter.", + ["deleted_character"] = "Karakter slettet", + ["error_delete_character"] = "Der opstod et problem med at slette din karakter.", + ["thank_you_for_registering"] = "Registreringen lykkedes. God fornøjelse!", + ["debug_xPlayer_get_first_name"] = "Returnerer dit fornavn", + ["debug_xPlayer_get_last_name"] = "Returnerer dit efternavn", + ["debug_xPlayer_get_full_name"] = "Returnerer dit fulde navn", + ["debug_xPlayer_get_sex"] = "Returnerer dit køn", + ["debug_xPlayer_get_dob"] = "Returnerer din fødselsdato", + ["debug_xPlayer_get_height"] = "Giver din højde tilbage", + ["error_debug_xPlayer_get_first_name"] = "Der opstod et problem med at få dit fornavn.", + ["error_debug_xPlayer_get_last_name"] = "Der opstod et problem med at få dit efternavn.", + ["error_debug_xPlayer_get_full_name"] = "Der opstod et problem under indhentning af dit fulde navn.", + ["error_debug_xPlayer_get_sex"] = "Der var et problem med at få dit sex.", + ["error_debug_xPlayer_get_dob"] = "Der var et problem med at få din fødselsdato.", + ["error_debug_xPlayer_get_height"] = "Der var et problem med at få din højde.", + ["return_debug_xPlayer_get_first_name"] = "Fornavn: %s", + ["return_debug_xPlayer_get_last_name"] = "Efternavn: %s", + ["return_debug_xPlayer_get_full_name"] = "Fulde Navn: %s", + ["return_debug_xPlayer_get_sex"] = "Køn: %s", + ["return_debug_xPlayer_get_dob"] = "Fødselsdato: %s", + ["return_debug_xPlayer_get_height"] = "Højde: %s Tommer", + ["data_incorrect"] = "Ugyldige data. Prøv venligst igen.", + ["invalid_format"] = "Ugyldigt dataformat. Prøv venligst igen.", + ["no_identifier"] = "[ESX Identitet]\nDer var et problem under indlæsning af din karakter!\nFejlkode: identifikator mangler\n\nDette skyldes, at din identifikator mangler. Venligst vend tilbage senere eller rapporter dette problem til serverejeren.", + ["missing_identity"] = "[ESX Identitet]\nDer var et problem med at indlæse din karakter!\nFejlkode: identitet mangler\n\nDet ser ud til, at din identitet mangler, prøv at oprette forbindelse igen.", + ["deleted_identity"] = "Tegn slettet. Tilmeld dig igen for at oprette en ny karakter.", + ["already_registered"] = "Du har allerede tilmeldt dig.", + ["invalid_firstname_format"] = "Ugyldigt format (fornavn): Prøv venligst igen.", + ["invalid_lastname_format"] = "Ugyldigt format (efternavn): Prøv igen.", + ["invalid_dob_format"] = "Ugyldigt format (DOB): Prøv venligst igen.", + ["invalid_sex_format"] = "Ugyldigt format (køn): Prøv venligst igen.", + ["invalid_height_format"] = "Ugyldigt format (højde): Prøv venligst igen.", +} diff --git a/[core]/esx_identity/locales/de.lua b/[core]/esx_identity/locales/de.lua deleted file mode 100644 index e8e5c897..00000000 --- a/[core]/esx_identity/locales/de.lua +++ /dev/null @@ -1,39 +0,0 @@ -Locales['de'] = { - ['show_active_character'] = 'Zeige aktiven Charakter', - ['active_character'] = 'Aktiver Charackter: %s', - ['error_active_character'] = "Wir konnten deinen Namen nicht auslesen. Bitte kontaktiere einen Admin.", - ['delete_character'] = 'Lösche deinen Charackter und erstelle einen neuen', - ['deleted_character'] = 'Dein Charakter wurde gelöscht.', - ['error_delete_character'] = "Wir konnten deinen Charakter nicht löschen. Bitte kontaktiere einen Admin.", - ['thank_you_for_registering'] = "Danke fürs Registrieren. Viel Spaß.", - ['registration_error'] = "Es gab einen Fehler während der Registration. Bitte kontaktiere einen Admin.", - ['debug_xPlayer_get_first_name'] = "Gibt deinen Vornamen zurück", - ['debug_xPlayer_get_last_name'] = "Gibt deinen Nachnamen zurück", - ['debug_xPlayer_get_full_name'] = "Gibt deinen vollen Namen zurück", - ['debug_xPlayer_get_sex'] = "Gibt dein Geschlecht zurück", - ['debug_xPlayer_get_dob'] = "Gibt deinen Geburtstag zurück", - ['debug_xPlayer_get_height'] = "Gibt deine Größe zurück", - ['error_debug_xPlayer_get_first_name'] = "Ein Fehler entstand dabei, deinen Vornamen auszulesen.", - ['error_debug_xPlayer_get_last_name'] = "Ein Fehler entstand dabei, deinen Nachnamen auszulesen.", - ['error_debug_xPlayer_get_full_name'] = "Ein Fehler entstand dabei, deinen vollen Namen auszulesen.", - ['error_debug_xPlayer_get_sex'] = "Ein Fehler entstand dabei, dein Geschlecht auszulesen.", - ['error_debug_xPlayer_get_dob'] = "Ein Fehler entstand dabei, dein Geburtsdatum auszulesen.", - ['error_debug_xPlayer_get_height'] = "Ein Fehler entstand dabei, deine Größe auszulesen.", - ['return_debug_xPlayer_get_first_name'] = "Vornmame: %s", - ['return_debug_xPlayer_get_last_name'] = "Nachname: %s", - ['return_debug_xPlayer_get_full_name'] = "Voller Name: %s", - ['return_debug_xPlayer_get_sex'] = "Geschlecht: %s", - ['return_debug_xPlayer_get_dob'] = "Geburtsdatum: %s", - ['return_debug_xPlayer_get_height'] = "Höhe: %s Meter", - ['data_incorrect'] = 'Daten sind fehlerhaft. Versuche es erneut.', - ['invalid_format'] = 'Daten falsch formatiert. Versuche es erneut.', - ['no_identifier'] = 'Es gab einen Fehler beim Laden deines Charackters!\nFehler Code: identifier-missing\n\nDie Ursache des Fehlers ist nicht bekannt, dein Identifier konnte nicht gefunden werden. Bitte versuche es später erneut oder kontaktiere einen Admin.', - ['missing_identity'] = 'Es gab einen Fehler beim Laden deines Charackters!\nError code: identity-missing\n\nEs scheint, keine Identität zu geben. Bitte versuche, erneut zu verbinden.', - ['deleted_identity'] = 'Dein Charakter wurde gelöscht. Bitte logge neu ein, um einen neuen zu erstellen.', - ['invalid_firstname_format'] = 'Ungültiges Format (Vorname): Bitte überprüfe deine Eingabe', - ['invalid_lastname_format'] = 'Ungültiges Format (Nachname): Bitte überprüfe deine Eingabe', - ['invalid_dob_format'] = 'Ungültiges Format (Geburtsdatum): Bitte überprüfe deine Eingabe', - ['invalid_sex_format'] = 'Ungültiges Format (Geschlecht): Bitte überprüfe deine Eingabe', - ['invalid_height_format'] = 'Ungültiges Format (Größe): Bitte überprüfe deine Eingabe.' -} - diff --git a/[core]/esx_identity/locales/en.lua b/[core]/esx_identity/locales/en.lua index a2bab9ce..c2f405fa 100644 --- a/[core]/esx_identity/locales/en.lua +++ b/[core]/esx_identity/locales/en.lua @@ -1,38 +1,38 @@ -Locales['en'] = { - ['show_active_character'] = 'Show Active Character', - ['active_character'] = 'Active Character: %s', - ['error_active_character'] = 'There was an error obtaining your data.', - ['delete_character'] = 'Delete Your Current Character.', - ['deleted_character'] = 'Character Deleted', - ['error_delete_character'] = 'There was a problem deleting your character.', - ['thank_you_for_registering'] = 'Registration Successful. Enjoy!', - ['debug_xPlayer_get_first_name'] = 'Returns Your First Name', - ['debug_xPlayer_get_last_name'] = 'Returns Your Last Name', - ['debug_xPlayer_get_full_name'] = 'Returns Your Full Name', - ['debug_xPlayer_get_sex'] = 'Returns Your Sex', - ['debug_xPlayer_get_dob'] = 'Returns Your DOB', - ['debug_xPlayer_get_height'] = 'Returns Your Height', - ['error_debug_xPlayer_get_first_name'] = 'There was an issue while obtaining your first name.', - ['error_debug_xPlayer_get_last_name'] = 'There was an issue while obtaining your last name.', - ['error_debug_xPlayer_get_full_name'] = 'There was an issue while obtaining your full name.', - ['error_debug_xPlayer_get_sex'] = 'There was an issue while obtaining your sex.', - ['error_debug_xPlayer_get_dob'] = 'There was an issue while obtaining your date of birth.', - ['error_debug_xPlayer_get_height'] = 'There was an issue while obtaining your height.', - ['return_debug_xPlayer_get_first_name'] = 'First Name: %s', - ['return_debug_xPlayer_get_last_name'] = 'Last Name: %s', - ['return_debug_xPlayer_get_full_name'] = 'Name: %s', - ['return_debug_xPlayer_get_sex'] = 'Sex: %s', - ['return_debug_xPlayer_get_dob'] = 'DOB: %s', - ['return_debug_xPlayer_get_height'] = 'Height: %s Inches', - ['data_incorrect'] = 'Invalid Data, Please try again.', - ['invalid_format'] = 'Invalid Data Format, Please try again.', - ['no_identifier'] = '[ESX Identity]\nThere was an issue while loading your character!\nError Code: identifier-missing\n\nThis is caused by your identifier being missing. Please come back later or report this problem to the Server Owner.', - ['missing_identity'] = '[ESX Identity]\nThere was an issue loading your character!\nError Code: identity-missing\n\nIt seems like your identity is missing, try connecting again.', - ['deleted_identity'] = 'Character deleted. Please rejoin to create a new character.', - ['already_registered'] = 'You have already registered.', - ['invalid_firstname_format'] = 'Invalid Format (First Name): Please try again.', - ['invalid_lastname_format'] = 'Invalid Format (Last Name): Please try again.', - ['invalid_dob_format'] = 'Invalid Format (DOB): Please try again.', - ['invalid_sex_format'] = 'Invalid Format (Sex): Please try again.', - ['invalid_height_format'] = 'Invalid Format (Height): Please try again.' +Locales["en"] = { + ["show_active_character"] = "Show Active Character", + ["active_character"] = "Active Character: %s", + ["error_active_character"] = "There was an error obtaining your data.", + ["delete_character"] = "Delete Your Current Character.", + ["deleted_character"] = "Character Deleted", + ["error_delete_character"] = "There was a problem deleting your character.", + ["thank_you_for_registering"] = "Registration Successful. Enjoy!", + ["debug_xPlayer_get_first_name"] = "Returns Your First Name", + ["debug_xPlayer_get_last_name"] = "Returns Your Last Name", + ["debug_xPlayer_get_full_name"] = "Returns Your Full Name", + ["debug_xPlayer_get_sex"] = "Returns Your Sex", + ["debug_xPlayer_get_dob"] = "Returns Your DOB", + ["debug_xPlayer_get_height"] = "Returns Your Height", + ["error_debug_xPlayer_get_first_name"] = "There was an issue while obtaining your first name.", + ["error_debug_xPlayer_get_last_name"] = "There was an issue while obtaining your last name.", + ["error_debug_xPlayer_get_full_name"] = "There was an issue while obtaining your full name.", + ["error_debug_xPlayer_get_sex"] = "There was an issue while obtaining your sex.", + ["error_debug_xPlayer_get_dob"] = "There was an issue while obtaining your date of birth.", + ["error_debug_xPlayer_get_height"] = "There was an issue while obtaining your height.", + ["return_debug_xPlayer_get_first_name"] = "First Name: %s", + ["return_debug_xPlayer_get_last_name"] = "Last Name: %s", + ["return_debug_xPlayer_get_full_name"] = "Name: %s", + ["return_debug_xPlayer_get_sex"] = "Sex: %s", + ["return_debug_xPlayer_get_dob"] = "DOB: %s", + ["return_debug_xPlayer_get_height"] = "Height: %s Inches", + ["data_incorrect"] = "Invalid Data, Please try again.", + ["invalid_format"] = "Invalid Data Format, Please try again.", + ["no_identifier"] = "[ESX Identity]\nThere was an issue while loading your character!\nError Code: identifier-missing\n\nThis is caused by your identifier being missing. Please come back later or report this problem to the Server Owner.", + ["missing_identity"] = "[ESX Identity]\nThere was an issue loading your character!\nError Code: identity-missing\n\nIt seems like your identity is missing, try connecting again.", + ["deleted_identity"] = "Character deleted. Please rejoin to create a new character.", + ["already_registered"] = "You have already registered.", + ["invalid_firstname_format"] = "Invalid Format (First Name): Please try again.", + ["invalid_lastname_format"] = "Invalid Format (Last Name): Please try again.", + ["invalid_dob_format"] = "Invalid Format (DOB): Please try again.", + ["invalid_sex_format"] = "Invalid Format (Sex): Please try again.", + ["invalid_height_format"] = "Invalid Format (Height): Please try again.", } diff --git a/[core]/esx_identity/locales/es.lua b/[core]/esx_identity/locales/es.lua index cb68c9f3..d6385eac 100644 --- a/[core]/esx_identity/locales/es.lua +++ b/[core]/esx_identity/locales/es.lua @@ -1,38 +1,38 @@ -Locales['es'] = { - ['show_active_character'] = 'Mostrar personaje activo', - ['active_character'] = 'Personaje activo: %s', - ['error_active_character'] = "Se produjo un error al recuperar tu nombre. Por favor contacta con un administrador", - ['delete_character'] = 'Elimina tu personaje y crea uno nuevo', - ['deleted_character'] = 'Tu personaje ha sido eliminado', - ['error_delete_character'] = "Se produjo un error al eliminar tu personaje. Por favor contacta con un administrador", - ['thank_you_for_registering'] = "Gracias por registrarte. Que te diviertas", - ['debug_xPlayer_get_first_name'] = "Devuelve tu nombre", - ['debug_xPlayer_get_last_name'] = "Devuelve tu apellido", - ['debug_xPlayer_get_full_name'] = "Devuelve tu nombre completo", - ['debug_xPlayer_get_sex'] = "Devuelve tu sexo", - ['debug_xPlayer_get_dob'] = "Devuelve tu fecha de nacimiento", - ['debug_xPlayer_get_height'] = "Devuelve tu altura", - ['error_debug_xPlayer_get_first_name'] = "Se produjo un error al recuperar tu nombre", - ['error_debug_xPlayer_get_last_name'] = "Se produjo un error al recuperar tu apellido", - ['error_debug_xPlayer_get_full_name'] = "Se produjo un error al recuperar tu nombre completo", - ['error_debug_xPlayer_get_sex'] = "Se produjo un error al recuperar tu sexo", - ['error_debug_xPlayer_get_dob'] = "Se produjo un error al recuperar tu fecha de nacimiento", - ['error_debug_xPlayer_get_height'] = "Se produjo un error al recuperar tu altura", - ['return_debug_xPlayer_get_first_name'] = "Nombre: %s", - ['return_debug_xPlayer_get_last_name'] = "Apellido: %s", - ['return_debug_xPlayer_get_full_name'] = "Nombre completo: %s", - ['return_debug_xPlayer_get_sex'] = "Sexo: %s", - ['return_debug_xPlayer_get_dob'] = "Fecha de nacimiento: %s", - ['return_debug_xPlayer_get_height'] = "Altura: %s centímetros", - ['data_incorrect'] = 'Datos introducidos de forma incorrecta. Inténtalo de nuevo', - ['invalid_format'] = 'Datos con formato incorrecto. Inténtalo de nuevo', - ['no_identifier'] = '¡Se ha producido un error al cargar tu personaje!\nCódigo de error: identifier-missing\n\nSe desconoce la causa de este error, no se pudo encontrar su identificador. Regrese más tarde o informe este problema al equipo de administración del servidor', - ['missing_identity'] = '¡Se ha producido un error al cargar tu personaje!\nCódigo de error: identity-missing\n\nParece que falta su identidad, intente conectarse nuevamente', - ['deleted_identity'] = 'Tu personaje ha sido borrado. Vuelva a iniciar sesión para crear un nuevo personaje', - ['already_registered'] = 'Ya estás registrado.', - ['invalid_firstname_format'] = 'Formato Inválido (Nombre): Inténtalo de nuevo.', - ['invalid_lastname_format'] = 'Formato Inválido (Apellido): Inténtalo de nuevo.', - ['invalid_dob_format'] = 'Formato Inválido (Fec. Nac.): Inténtalo de nuevo.', - ['invalid_sex_format'] = 'Formato Inválido (Sexo): Inténtalo de nuevo.', - ['invalid_height_format'] = 'Formato Inválido (Altura): Inténtalo de nuevo.' +Locales["es"] = { + ["show_active_character"] = "Mostrar personaje actual", + ["active_character"] = "Personaje actual: %s", + ["error_active_character"] = "Se produjo un error al recuperar tu nombre. Por favor contacta con un administrador", + ["delete_character"] = "Elimina tu personaje y crea uno nuevo", + ["deleted_character"] = "Tu personaje ha sido eliminado", + ["error_delete_character"] = "Se produjo un error al eliminar tu personaje. Por favor contacta con un administrador", + ["thank_you_for_registering"] = "Gracias por registrarte. Bienvenido a la ciudad", + ["debug_xPlayer_get_first_name"] = "Devuelve tu nombre", + ["debug_xPlayer_get_last_name"] = "Devuelve tu apellido", + ["debug_xPlayer_get_full_name"] = "Devuelve tu nombre completo", + ["debug_xPlayer_get_sex"] = "Devuelve tu sexo", + ["debug_xPlayer_get_dob"] = "Devuelve tu fecha de nacimiento", + ["debug_xPlayer_get_height"] = "Devuelve tu altura", + ["error_debug_xPlayer_get_first_name"] = "Se produjo un error al recuperar tu nombre", + ["error_debug_xPlayer_get_last_name"] = "Se produjo un error al recuperar tu apellido", + ["error_debug_xPlayer_get_full_name"] = "Se produjo un error al recuperar tu nombre completo", + ["error_debug_xPlayer_get_sex"] = "Se produjo un error al recuperar tu sexo", + ["error_debug_xPlayer_get_dob"] = "Se produjo un error al recuperar tu fecha de nacimiento", + ["error_debug_xPlayer_get_height"] = "Se produjo un error al recuperar tu altura", + ["return_debug_xPlayer_get_first_name"] = "Nombre: %s", + ["return_debug_xPlayer_get_last_name"] = "Apellido: %s", + ["return_debug_xPlayer_get_full_name"] = "Nombre completo: %s", + ["return_debug_xPlayer_get_sex"] = "Sexo: %s", + ["return_debug_xPlayer_get_dob"] = "Fecha de nacimiento: %s", + ["return_debug_xPlayer_get_height"] = "Altura: %s centímetros", + ["data_incorrect"] = "Datos introducidos de forma incorrecta. Inténtalo de nuevo", + ["invalid_format"] = "Datos con formato incorrecto. Inténtalo de nuevo", + ["no_identifier"] = "¡Se ha producido un error al cargar tu personaje!\nCódigo de error: identifier-missing\n\nSe desconoce la causa de este error, no se pudo encontrar su identificador. Intentalo más tarde o informa de este problema al equipo administrativo del servidor", + ["missing_identity"] = "¡Se ha producido un error al cargar tu personaje!\nCódigo de error: identity-missing\n\nParece que falta su identidad, intenta conectarte nuevamente", + ["deleted_identity"] = "Tu personaje ha sido borrado. Vuelva a iniciar sesión para crear un nuevo personaje", + ["already_registered"] = "Ya estás registrado.", + ["invalid_firstname_format"] = "Formato Inválido (Nombre): Inténtalo de nuevo.", + ["invalid_lastname_format"] = "Formato Inválido (Apellido): Inténtalo de nuevo.", + ["invalid_dob_format"] = "Formato Inválido (Fec. Nac.): Inténtalo de nuevo.", + ["invalid_sex_format"] = "Formato Inválido (Sexo): Inténtalo de nuevo.", + ["invalid_height_format"] = "Formato Inválido (Altura): Inténtalo de nuevo.", } diff --git a/[core]/esx_identity/locales/fi.lua b/[core]/esx_identity/locales/fi.lua index 0f384b50..8b70edc3 100644 --- a/[core]/esx_identity/locales/fi.lua +++ b/[core]/esx_identity/locales/fi.lua @@ -1,33 +1,33 @@ -Locales['fi'] = { - ['show_active_character'] = 'Näytä nykyinen hahmosi', - ['active_character'] = 'Nykyinen hahmosi: %s', - ['error_active_character'] = "Hahmosi hakemisessa ilmeni ongelma. Ota yhteyttä ylläpitoon.", - ['delete_character'] = 'Poista hahmosi ja luo uusi.', - ['deleted_character'] = 'Hahmosi on poistetu.', - ['error_delete_character'] = "Hahmosi poistossa ilmeni ongelma. Ota yhteyttä ylläpitoon.", - ['thank_you_for_registering'] = "Kiitos registeröitymisestä. Pidä hauskaa!", - ['registration_error'] = "Registeröinnissä ilmeni ongelma. Ota yhteyttä ylläpitoon.", - ['debug_xPlayer_get_first_name'] = "Palauta etunimi", - ['debug_xPlayer_get_last_name'] = "Palauta sukunimi", - ['debug_xPlayer_get_full_name'] = "Palauta kokonimi", - ['debug_xPlayer_get_sex'] = "Palauta sukupuoli", - ['debug_xPlayer_get_dob'] = "Palauta syntymäpäivä", - ['debug_xPlayer_get_height'] = "Palauta pituus", - ['error_debug_xPlayer_get_first_name'] = "Hahmosi etunimen haussa ilmeni ongelma.", - ['error_debug_xPlayer_get_last_name'] = "Hahmosi sukunimen haussa ilmeni ongelma.", - ['error_debug_xPlayer_get_full_name'] = "Hahmosi kokonimen haussa ilmeni ongelma.", - ['error_debug_xPlayer_get_sex'] = "Hahmosi sukupuolen haussa ilmeni ongelma.", - ['error_debug_xPlayer_get_dob'] = "Hahmosi syntymäpäivän haussa ilmeni ongelma.", - ['error_debug_xPlayer_get_height'] = "Hahmosi pituuden haussa ilmeni ongelma.", - ['return_debug_xPlayer_get_first_name'] = "Etunimi: %s", - ['return_debug_xPlayer_get_last_name'] = "Sukunimi: %s", - ['return_debug_xPlayer_get_full_name'] = "Kokonimi: %s", - ['return_debug_xPlayer_get_sex'] = "Sukupuoli: %s", - ['return_debug_xPlayer_get_dob'] = "Syntymäpäivä: %s", - ['return_debug_xPlayer_get_height'] = "Pituus: %s CM", - ['data_incorrect'] = 'Data syötetty väärin. Yritä uudelleen.', - ['invalid_format'] = 'Data syötetty väärässä muodossa. Yritä uudelleen.', - ['no_identifier'] = 'Hahmosi lataamisessa ilmeni ongelma!\nVirhekoodi: identifier-missing\n\nVirhekoodin syytä ei tiedetä, joten ota yhteyttä ylläpitoon.', - ['missing_identity'] = 'Hahmosi lataamisessa ilmeni ongelma!\nError code: identity-missing\n\nNäyttää että hahmoasi ei ole olemassa. Kokeile yhdistää uudelleen tai ota yhteyttä ylläpitoon', - ['deleted_identity'] = 'Hahmosi on poistetu. Yhdistä uudestaan palvelimelle luodaksesi uuden hahmosi.' +Locales["fi"] = { + ["show_active_character"] = "Näytä nykyinen hahmosi", + ["active_character"] = "Nykyinen hahmosi: %s", + ["error_active_character"] = "Hahmosi hakemisessa ilmeni ongelma. Ota yhteyttä ylläpitoon.", + ["delete_character"] = "Poista hahmosi ja luo uusi.", + ["deleted_character"] = "Hahmosi on poistetu.", + ["error_delete_character"] = "Hahmosi poistossa ilmeni ongelma. Ota yhteyttä ylläpitoon.", + ["thank_you_for_registering"] = "Kiitos registeröitymisestä. Pidä hauskaa!", + ["registration_error"] = "Registeröinnissä ilmeni ongelma. Ota yhteyttä ylläpitoon.", + ["debug_xPlayer_get_first_name"] = "Palauta etunimi", + ["debug_xPlayer_get_last_name"] = "Palauta sukunimi", + ["debug_xPlayer_get_full_name"] = "Palauta kokonimi", + ["debug_xPlayer_get_sex"] = "Palauta sukupuoli", + ["debug_xPlayer_get_dob"] = "Palauta syntymäpäivä", + ["debug_xPlayer_get_height"] = "Palauta pituus", + ["error_debug_xPlayer_get_first_name"] = "Hahmosi etunimen haussa ilmeni ongelma.", + ["error_debug_xPlayer_get_last_name"] = "Hahmosi sukunimen haussa ilmeni ongelma.", + ["error_debug_xPlayer_get_full_name"] = "Hahmosi kokonimen haussa ilmeni ongelma.", + ["error_debug_xPlayer_get_sex"] = "Hahmosi sukupuolen haussa ilmeni ongelma.", + ["error_debug_xPlayer_get_dob"] = "Hahmosi syntymäpäivän haussa ilmeni ongelma.", + ["error_debug_xPlayer_get_height"] = "Hahmosi pituuden haussa ilmeni ongelma.", + ["return_debug_xPlayer_get_first_name"] = "Etunimi: %s", + ["return_debug_xPlayer_get_last_name"] = "Sukunimi: %s", + ["return_debug_xPlayer_get_full_name"] = "Kokonimi: %s", + ["return_debug_xPlayer_get_sex"] = "Sukupuoli: %s", + ["return_debug_xPlayer_get_dob"] = "Syntymäpäivä: %s", + ["return_debug_xPlayer_get_height"] = "Pituus: %s CM", + ["data_incorrect"] = "Data syötetty väärin. Yritä uudelleen.", + ["invalid_format"] = "Data syötetty väärässä muodossa. Yritä uudelleen.", + ["no_identifier"] = "Hahmosi lataamisessa ilmeni ongelma!\nVirhekoodi: identifier-missing\n\nVirhekoodin syytä ei tiedetä, joten ota yhteyttä ylläpitoon.", + ["missing_identity"] = "Hahmosi lataamisessa ilmeni ongelma!\nVirhekoodi: identity-missing\n\nNäyttää siltä että hahmoasi ei ole olemassa. Kokeile yhdistää uudelleen tai ota yhteyttä ylläpitoon", + ["deleted_identity"] = "Hahmosi on poistetu. Yhdistä palvelimelle uudestaan luodaksesi uusi hahmo.", } diff --git a/[core]/esx_identity/locales/fr.lua b/[core]/esx_identity/locales/fr.lua new file mode 100644 index 00000000..8fe519cf --- /dev/null +++ b/[core]/esx_identity/locales/fr.lua @@ -0,0 +1,38 @@ +Locales["fr"] = { + ["show_active_character"] = "Afficher le personnage actif", + ["active_character"] = "Personnage actif: %s", + ["error_active_character"] = "Une erreur s'est produite lors de l'obtention de vos données.", + ["delete_character"] = "Supprimer votre personnage actuel.", + ["deleted_character"] = "Personnage supprimé", + ["error_delete_character"] = "Un problème est survenu lors de la suppression de votre personnage.", + ["thank_you_for_registering"] = "Inscription réussie. Bon jeu à vous!", + ["debug_xPlayer_get_first_name"] = "Renvoie votre prénom", + ["debug_xPlayer_get_last_name"] = "Renvoie votre nom de famille", + ["debug_xPlayer_get_full_name"] = "Renvoie votre nom complet", + ["debug_xPlayer_get_sex"] = "Renvoie votre genre", + ["debug_xPlayer_get_dob"] = "Renvoie votre date de naissance", + ["debug_xPlayer_get_height"] = "Renvoie votre taille", + ["error_debug_xPlayer_get_first_name"] = "Un problème est survenu lors de l'obtention de votre prénom.", + ["error_debug_xPlayer_get_last_name"] = "Un problème est survenu lors de l'obtention de votre nom de famille.", + ["error_debug_xPlayer_get_full_name"] = "Un problème est survenu lors de l'obtention de votre nom complet.", + ["error_debug_xPlayer_get_sex"] = "Un problème est survenu lors de l'obtention de votre genre.", + ["error_debug_xPlayer_get_dob"] = "Un problème est survenu lors de l'obtention de votre date de naissance.", + ["error_debug_xPlayer_get_height"] = "Un problème est survenu lors de l'obtention de votre taille.", + ["return_debug_xPlayer_get_first_name"] = "Prénom: %s", + ["return_debug_xPlayer_get_last_name"] = "Nom de famille: %s", + ["return_debug_xPlayer_get_full_name"] = "Nom: %s", + ["return_debug_xPlayer_get_sex"] = "Genre: %s", + ["return_debug_xPlayer_get_dob"] = "Date de naissance: %s", + ["return_debug_xPlayer_get_height"] = "Taille: %s pouces", + ["data_incorrect"] = "Données invalides, veuillez réessayer.", + ["invalid_format"] = "Format de données invalide, veuillez réessayer.", + ["no_identifier"] = "[ESX Identity]\nUn problème est survenu lors du chargement de votre personnage !\nCode d'erreur : identifier-missing\n\nIl semble que votre identifiant soit manquant. Veuillez revenir plus tard ou signaler ce problème au propriétaire du serveur.", + ["missing_identity"] = "[ESX Identity]Un problème est survenu lors du chargement de votre personnage !\nCode d'erreur : identity-missing\n\nIl semble que votre identité soit manquante, essayez de vous reconnecter.", + ["deleted_identity"] = "Personnage supprimé. Veuillez vous réinscrire pour créer un nouveau personnage.", + ["already_registered"] = "Vous êtes déjà enregistré.", + ["invalid_firstname_format"] = "Format invalide (Prénom) : Veuillez réessayer.", + ["invalid_lastname_format"] = "Format invalide (Nom de famille) : Veuillez réessayer.", + ["invalid_dob_format"] = "Format invalide (Date de naissance) : Veuillez réessayer.", + ["invalid_sex_format"] = "Format invalide (Genre) : Veuillez réessayer.", + ["invalid_height_format"] = "Format invalide (Taille) : Veuillez réessayer.", +} diff --git a/[core]/esx_identity/locales/hu.lua b/[core]/esx_identity/locales/hu.lua index b7ef6580..cd2a5223 100644 --- a/[core]/esx_identity/locales/hu.lua +++ b/[core]/esx_identity/locales/hu.lua @@ -1,7 +1,7 @@ Locales["hu"] = { - ["show_active_character"] = "Aktiv karakterek mutatása", - ["active_character"] = "Aktiv karakter: %s", - ["error_active_character"] = "A név nem felel meg", + ["show_active_character"] = "Aktív karakterek mutatása", + ["active_character"] = "Aktív karakter: %s", + ["error_active_character"] = "A név nem megfelelő", ["delete_character"] = "Töröld a karaktered és csinálj újat", ["deleted_character"] = "A karaktered törölve", ["error_delete_character"] = "Hiba történt a karakter törlésekor. Kérjük, lépjen kapcsolatba egy Adminisztrátorral.", @@ -21,18 +21,18 @@ Locales["hu"] = { ["return_debug_xPlayer_get_first_name"] = "Vezetéknév: %s", ["return_debug_xPlayer_get_last_name"] = "Keresztnév: %s", ["return_debug_xPlayer_get_full_name"] = "Teljes név: %s", - ["return_debug_xPlayer_get_sex"] = "Sex: %s", - ["return_debug_xPlayer_get_dob"] = "DOB: %s", - ["return_debug_xPlayer_get_height"] = "Magasság: %s Inches", + ["return_debug_xPlayer_get_sex"] = "Nem: %s", + ["return_debug_xPlayer_get_dob"] = "Születési dátum: %s", + ["return_debug_xPlayer_get_height"] = "Magasság: %s hüvelyk", ["data_incorrect"] = "Hibásan megadott adatok. Kérlek próbáld újra.", ["invalid_format"] = "Az adatok helytelen formázása. Kérlek próbáld újra.", ["no_identifier"] = "Hiba történt a karakter betöltésekor! \nHibakód: hiányzó azonosító \n\nA hiba oka nem ismert, az azonosító nem található. Kérjük, gyere vissza később, vagy jelentsd a problémát a szerver adminisztrációs csapatának.", ["missing_identity"] = "Hiba történt a karaktered betöltésekor! \n Hibakód: hiányzik az identitás \n és \nNem úgy tűnik, hogy hiányzik a személyazonosságod, próbálkozz újra.", ["deleted_identity"] = "A karaktered törölve", ["already_registered"] = "Már regisztráltál.", - ["invalid_firstname_format"] = "Érvénytelen formátum (Keresztnév): Próbáld újra.", - ["invalid_lastname_format"] = "Érvénytelen formátum (Vezetéknév): Próbáld újra.", - ["invalid_dob_format"] = "Érvénytelen formátum (Születési Idő): Próbáld újra.", - ["invalid_sex_format"] = "Érvénytelen formátum (Nem): Próbáld újra.", - ["invalid_height_format"] = "Érvénytelen formátum (Magasság): Próbáld újra." + ["invalid_firstname_format"] = "Érvénytelen formátum (Keresztnév): Próbáld újra.", + ["invalid_lastname_format"] = "Érvénytelen formátum (Vezetéknév): Próbáld újra.", + ["invalid_dob_format"] = "Érvénytelen formátum (Születési Idő): Próbáld újra.", + ["invalid_sex_format"] = "Érvénytelen formátum (Nem): Próbáld újra.", + ["invalid_height_format"] = "Érvénytelen formátum (Magasság): Próbáld újra." } diff --git a/[core]/esx_identity/locales/it.lua b/[core]/esx_identity/locales/it.lua new file mode 100644 index 00000000..84d61412 --- /dev/null +++ b/[core]/esx_identity/locales/it.lua @@ -0,0 +1,38 @@ +Locales["it"] = { + ["show_active_character"] = "Mostra Personaggio Attivo", + ["active_character"] = "Personaggio Attivo: %s", + ["error_active_character"] = "Errore nel recuperare i tuoi dati.", + ["delete_character"] = "Elimina Personaggio Attuale.", + ["deleted_character"] = "Personaggio Eliminato", + ["error_delete_character"] = "Errore nell' eliminazione del personaggio.", + ["thank_you_for_registering"] = "Registrazione effettuata. Divertiti!", + ["debug_xPlayer_get_first_name"] = "Ritorna il tuo nome", + ["debug_xPlayer_get_last_name"] = "Ritorna il tuo cognome", + ["debug_xPlayer_get_full_name"] = "Ritorna il tuo nome completo", + ["debug_xPlayer_get_sex"] = "Ritorna il tuo sesso", + ["debug_xPlayer_get_dob"] = "Ritorna la tua data di nascita", + ["debug_xPlayer_get_height"] = "Ritorna la tua altezza", + ["error_debug_xPlayer_get_first_name"] = "Errore nell' ottenere il tuo nome.", + ["error_debug_xPlayer_get_last_name"] = "Errore nell' ottenere il tuo cognome.", + ["error_debug_xPlayer_get_full_name"] = "Errore nell' ottenere il tuo nome completo.", + ["error_debug_xPlayer_get_sex"] = "Errore nell' ottenere il tuo sesso.", + ["error_debug_xPlayer_get_dob"] = "Errore nell' ottenere la tua data di nascita.", + ["error_debug_xPlayer_get_height"] = "Errore nell' ottenere la tua altezza.", + ["return_debug_xPlayer_get_first_name"] = "Nome: %s", + ["return_debug_xPlayer_get_last_name"] = "Cognome: %s", + ["return_debug_xPlayer_get_full_name"] = "Nome Completo: %s", + ["return_debug_xPlayer_get_sex"] = "Sesso: %s", + ["return_debug_xPlayer_get_dob"] = "Data di nascita: %s", + ["return_debug_xPlayer_get_height"] = "Altezza: %s Pollici", + ["data_incorrect"] = "Dati errati, riprova.", + ["invalid_format"] = "Formato dati errato, riprova.", + ["no_identifier"] = "[ESX Identity]\nErrore nel caricare il tuo personaggio!\nCodice Errore: identificativo-mancante\n\nQuesto è causato dalla mancanza del tuo identificativo. Riprova più tardi o segnalalo al proprietario del server.", + ["missing_identity"] = "[ESX Identity]\nErrore nel caricare il tuo personaggio!!\nCodice Errore: identità-mancante\n\nSembra che la tua identità sia mancante, prova a riconnetterti.", + ["deleted_identity"] = "Personaggio eliminato, Rientra per crearne uno nuovo.", + ["already_registered"] = "Sei già registrato.", + ["invalid_firstname_format"] = "Formato non valido (Nome): Riprova.", + ["invalid_lastname_format"] = "Formato non valido (Cognome): Riprova.", + ["invalid_dob_format"] = "Formato non valido (Data di nascita): Riprova.", + ["invalid_sex_format"] = "Formato non valido (Sesso): Riprova.", + ["invalid_height_format"] = "Formato non valido (Altezza): Riprova.", +} diff --git a/[core]/esx_identity/locales/nl.lua b/[core]/esx_identity/locales/nl.lua index 97a482fb..b9457a45 100644 --- a/[core]/esx_identity/locales/nl.lua +++ b/[core]/esx_identity/locales/nl.lua @@ -1,38 +1,38 @@ -Locales['nl'] = { - ['show_active_character'] = 'Actieve karakter laten zien', - ['active_character'] = 'Actief karakter: %s', - ['error_active_character'] = 'Er is een probleem opgetreden tijdens het verzamelen van uw data.', - ['delete_character'] = 'Dit karakter verwijderen.', - ['deleted_character'] = 'Karakter verwijderd', - ['error_delete_character'] = 'Er is een probleem opgetreden tijdens het verwijderen van uw karakter.', - ['thank_you_for_registering'] = 'Succesvol geregistreerd!', - ['debug_xPlayer_get_first_name'] = 'Stuurt je Voornaam', - ['debug_xPlayer_get_last_name'] = 'Stuurt je Achternaam', - ['debug_xPlayer_get_full_name'] = 'Stuurt je volledige naam', - ['debug_xPlayer_get_sex'] = 'Stuurt je Geslacht', - ['debug_xPlayer_get_dob'] = 'Stuurt je Geboortedatum ', - ['debug_xPlayer_get_height'] = 'Stuurt je lengte', - ['error_debug_xPlayer_get_first_name'] = 'Er was een probleem tijdens het ophalen van je Voornaam.', - ['error_debug_xPlayer_get_last_name'] = 'Er was een probleem tijdens het ophalen van je achternaam.', - ['error_debug_xPlayer_get_full_name'] = 'Er was een probleem tijdens het ophalen van je volle naam.', - ['error_debug_xPlayer_get_sex'] = 'Er was een probleem tijdens het ophalen van je Geslacht.', - ['error_debug_xPlayer_get_dob'] = 'Er was een probleem tijdens het ophalen van je Geboortedatum.', - ['error_debug_xPlayer_get_height'] = 'Er was een probleem tijdens het ophalen van je lengte.', - ['return_debug_xPlayer_get_first_name'] = 'Voornaam: %s', - ['return_debug_xPlayer_get_last_name'] = 'Achternaam: %s', - ['return_debug_xPlayer_get_full_name'] = 'Naam: %s', - ['return_debug_xPlayer_get_sex'] = 'Geslacht: %s', - ['return_debug_xPlayer_get_dob'] = 'Geboortedatum: %s', - ['return_debug_xPlayer_get_height'] = 'Lengte: %s Inches', - ['data_incorrect'] = 'Verkeerde data, probeer opnieuw.', - ['invalid_format'] = 'Verkeerde volgorde, probeer opnieuw.', - ['no_identifier'] = '[ESX Identity]\nEr was een probleem tijdens het laden van je karakter!\nError Code: identifier-missing\n\nDit komt omdat je identifier mist, contacteer het server beheer.', - ['missing_identity'] = '[ESX Identity]\nEr was een probleem tijdens het laden van je karakter!\nError Code: identity-missing\n\nHet lijkt erop dat je identiteit mist, reconnect met de server.', - ['deleted_identity'] = 'Karakter verwijderd, reconnect om een nieuwe te registreren.', - ['already_registered'] = 'Je bent al geregistreerd.', - ['invalid_firstname_format'] = 'Ongeldige Volgorde (Voornaam): Probeer het nog een keer.', - ['invalid_lastname_format'] = 'Ongeldige Volgorde (Achternaam): Probeer het nog een keer.', - ['invalid_dob_format'] = 'Ongeldige Volgorde (Geboortedatum): Probeer het nog een keer.', - ['invalid_sex_format'] = 'Ongeldige Volgorde (Geslacht): Probeer het nog een keer.', - ['invalid_height_format'] = 'Ongeldige Volgorde (Lengte): Probeer het nog een keer.' +Locales["nl"] = { + ["show_active_character"] = "Actieve karakter laten zien", + ["active_character"] = "Actief karakter: %s", + ["error_active_character"] = "Er is een probleem opgetreden tijdens het verzamelen van uw data.", + ["delete_character"] = "Dit karakter verwijderen.", + ["deleted_character"] = "Karakter verwijderd", + ["error_delete_character"] = "Er is een probleem opgetreden tijdens het verwijderen van uw karakter.", + ["thank_you_for_registering"] = "Succesvol geregistreerd!", + ["debug_xPlayer_get_first_name"] = "Stuurt je Voornaam", + ["debug_xPlayer_get_last_name"] = "Stuurt je Achternaam", + ["debug_xPlayer_get_full_name"] = "Stuurt je volledige naam", + ["debug_xPlayer_get_sex"] = "Stuurt je Geslacht", + ["debug_xPlayer_get_dob"] = "Stuurt je Geboortedatum ", + ["debug_xPlayer_get_height"] = "Stuurt je lengte", + ["error_debug_xPlayer_get_first_name"] = "Er was een probleem tijdens het ophalen van je Voornaam.", + ["error_debug_xPlayer_get_last_name"] = "Er was een probleem tijdens het ophalen van je achternaam.", + ["error_debug_xPlayer_get_full_name"] = "Er was een probleem tijdens het ophalen van je volle naam.", + ["error_debug_xPlayer_get_sex"] = "Er was een probleem tijdens het ophalen van je Geslacht.", + ["error_debug_xPlayer_get_dob"] = "Er was een probleem tijdens het ophalen van je Geboortedatum.", + ["error_debug_xPlayer_get_height"] = "Er was een probleem tijdens het ophalen van je lengte.", + ["return_debug_xPlayer_get_first_name"] = "Voornaam: %s", + ["return_debug_xPlayer_get_last_name"] = "Achternaam: %s", + ["return_debug_xPlayer_get_full_name"] = "Naam: %s", + ["return_debug_xPlayer_get_sex"] = "Geslacht: %s", + ["return_debug_xPlayer_get_dob"] = "Geboortedatum: %s", + ["return_debug_xPlayer_get_height"] = "Lengte: %s Inches", + ["data_incorrect"] = "Verkeerde data, probeer opnieuw.", + ["invalid_format"] = "Verkeerde volgorde, probeer opnieuw.", + ["no_identifier"] = "[ESX Identity]\nEr was een probleem tijdens het laden van je karakter!\nError Code: identifier-missing\n\nDit komt omdat je identifier mist, contacteer het server beheer.", + ["missing_identity"] = "[ESX Identity]\nEr was een probleem tijdens het laden van je karakter!\nError Code: identity-missing\n\nHet lijkt erop dat je identiteit mist, reconnect met de server.", + ["deleted_identity"] = "Karakter verwijderd, reconnect om een nieuwe te registreren.", + ["already_registered"] = "Je bent al geregistreerd.", + ["invalid_firstname_format"] = "Ongeldige Volgorde (Voornaam): Probeer het nog een keer.", + ["invalid_lastname_format"] = "Ongeldige Volgorde (Achternaam): Probeer het nog een keer.", + ["invalid_dob_format"] = "Ongeldige Volgorde (Geboortedatum): Probeer het nog een keer.", + ["invalid_sex_format"] = "Ongeldige Volgorde (Geslacht): Probeer het nog een keer.", + ["invalid_height_format"] = "Ongeldige Volgorde (Lengte): Probeer het nog een keer.", } diff --git a/[core]/esx_identity/locales/pl.lua b/[core]/esx_identity/locales/pl.lua index e88be1b7..15c5cf45 100644 --- a/[core]/esx_identity/locales/pl.lua +++ b/[core]/esx_identity/locales/pl.lua @@ -1,33 +1,33 @@ -Locales['pl'] = { - ['show_active_character'] = 'Pokaż aktywną postać', - ['active_character'] = 'Aktywna postać: %s', - ['error_active_character'] = "Podczas pobierania Twojego imienia wystąpił błąd. Proszę skontaktować się z administratorem.", - ['delete_character'] = 'Usuń swoją postać i stwórz nową', - ['deleted_character'] = 'Twoja postać została usunięta.', - ['error_delete_character'] = "Wystąpił błąd podczas usuwania twojej postaci. Proszę skontaktować się z administratorem.", - ['thank_you_for_registering'] = "Dziękujemy za rejestrację. Baw się dobrze.", - ['registration_error'] = "Wystąpił błąd podczas rejestracji. Proszę skontaktować się z administratorem.", - ['debug_xPlayer_get_first_name'] = "Podaj swoje imię", - ['debug_xPlayer_get_last_name'] = "Podaj swoje nazwisko", - ['debug_xPlayer_get_full_name'] = "Podaj swoją pełną nazwę", - ['debug_xPlayer_get_sex'] = "Podaj swoją płeć", - ['debug_xPlayer_get_dob'] = "Podaj swoją datę urodzenia", - ['debug_xPlayer_get_height'] = "Podaj swój wzrost", - ['error_debug_xPlayer_get_first_name'] = "Podczas pobierania twojego imienia wystąpił błąd.", - ['error_debug_xPlayer_get_last_name'] = "Podczas pobierania twojego nazwiska wystąpił błąd.", - ['error_debug_xPlayer_get_full_name'] = "Podczas pobierania twojego pełnego imienia wystąpił błąd.", - ['error_debug_xPlayer_get_sex'] = "Podczas pobierania twojej płci wystąpił błąd.", - ['error_debug_xPlayer_get_dob'] = "Podczas pobierania daty urodzenia wystąpił błąd.", - ['error_debug_xPlayer_get_height'] = "Podczas pobierania wzrostu wystąpił błąd.", - ['return_debug_xPlayer_get_first_name'] = "Imię: %s", - ['return_debug_xPlayer_get_last_name'] = "Nazwisko: %s", - ['return_debug_xPlayer_get_full_name'] = "Pełna nazwa: %s", - ['return_debug_xPlayer_get_sex'] = "Płeć: %s", - ['return_debug_xPlayer_get_dob'] = "Data urodzenia: %s", - ['return_debug_xPlayer_get_height'] = "Wzrost: %s centymetrów", - ['data_incorrect'] = 'Data została wprowadzona niepoprawnie. Proszę spróbuj ponownie.', - ['invalid_format'] = 'Data została wprowadzona niepoprawnie. Proszę spróbuj ponownie.', - ['no_identifier'] = 'Wystąpił błąd podczas ładowania twojej postaci!\nKod błędu: identifier-missing\n\nPrzyczyna tego błędu nie jest znana, nie można znaleźć Twojego identyfikatora. Wróć później lub zgłoś ten problem zespołowi administracyjnemu serwera.', - ['missing_identity'] = 'Wystąpił błąd podczas ładowania twojej postaci!\nKod błędu: identity-missing\n\nWygląda na to, że brakuje Twojej tożsamości, spróbuj połączyć się ponownie.', - ['deleted_identity'] = 'Twoja postać została usunięta. Dołącz ponownie, aby utworzyć nową postać.' +Locales["pl"] = { + ["show_active_character"] = "Pokaż aktywną postać", + ["active_character"] = "Aktywna postać: %s", + ["error_active_character"] = "Podczas pobierania Twojego imienia wystąpił błąd. Proszę skontaktować się z administratorem.", + ["delete_character"] = "Usuń swoją postać i stwórz nową", + ["deleted_character"] = "Twoja postać została usunięta.", + ["error_delete_character"] = "Wystąpił błąd podczas usuwania twojej postaci. Proszę skontaktować się z administratorem.", + ["thank_you_for_registering"] = "Dziękujemy za rejestrację. Baw się dobrze.", + ["registration_error"] = "Wystąpił błąd podczas rejestracji. Proszę skontaktować się z administratorem.", + ["debug_xPlayer_get_first_name"] = "Podaj swoje imię", + ["debug_xPlayer_get_last_name"] = "Podaj swoje nazwisko", + ["debug_xPlayer_get_full_name"] = "Podaj swoją pełną nazwę", + ["debug_xPlayer_get_sex"] = "Podaj swoją płeć", + ["debug_xPlayer_get_dob"] = "Podaj swoją datę urodzenia", + ["debug_xPlayer_get_height"] = "Podaj swój wzrost", + ["error_debug_xPlayer_get_first_name"] = "Podczas pobierania twojego imienia wystąpił błąd.", + ["error_debug_xPlayer_get_last_name"] = "Podczas pobierania twojego nazwiska wystąpił błąd.", + ["error_debug_xPlayer_get_full_name"] = "Podczas pobierania twojego pełnego imienia wystąpił błąd.", + ["error_debug_xPlayer_get_sex"] = "Podczas pobierania twojej płci wystąpił błąd.", + ["error_debug_xPlayer_get_dob"] = "Podczas pobierania daty urodzenia wystąpił błąd.", + ["error_debug_xPlayer_get_height"] = "Podczas pobierania wzrostu wystąpił błąd.", + ["return_debug_xPlayer_get_first_name"] = "Imię: %s", + ["return_debug_xPlayer_get_last_name"] = "Nazwisko: %s", + ["return_debug_xPlayer_get_full_name"] = "Pełna nazwa: %s", + ["return_debug_xPlayer_get_sex"] = "Płeć: %s", + ["return_debug_xPlayer_get_dob"] = "Data urodzenia: %s", + ["return_debug_xPlayer_get_height"] = "Wzrost: %s centymetrów", + ["data_incorrect"] = "Data została wprowadzona niepoprawnie. Proszę spróbuj ponownie.", + ["invalid_format"] = "Data została wprowadzona niepoprawnie. Proszę spróbuj ponownie.", + ["no_identifier"] = "Wystąpił błąd podczas ładowania twojej postaci!\nKod błędu: identifier-missing\n\nPrzyczyna tego błędu nie jest znana, nie można znaleźć Twojego identyfikatora. Wróć później lub zgłoś ten problem zespołowi administracyjnemu serwera.", + ["missing_identity"] = "Wystąpił błąd podczas ładowania twojej postaci!\nKod błędu: identity-missing\n\nWygląda na to, że brakuje Twojej tożsamości, spróbuj połączyć się ponownie.", + ["deleted_identity"] = "Twoja postać została usunięta. Dołącz ponownie, aby utworzyć nową postać.", } diff --git a/[core]/esx_identity/locales/pt.lua b/[core]/esx_identity/locales/pt.lua new file mode 100644 index 00000000..108f8cc2 --- /dev/null +++ b/[core]/esx_identity/locales/pt.lua @@ -0,0 +1,38 @@ +Locales["pt"] = { + ["show_active_character"] = "Mostrar personagem ativa", + ["active_character"] = "Personagem ativa: %s", + ["error_active_character"] = "Houve um erro a obter os teus dados.", + ["delete_character"] = "Apagar a tua personagem atual.", + ["deleted_character"] = "Personagem apagada!", + ["error_delete_character"] = "Houve um problema ao apagar a tua personagem.", + ["thank_you_for_registering"] = "Registo concluído. Diverte-te!", + ["debug_xPlayer_get_first_name"] = "Retorna o teu primeiro nome", + ["debug_xPlayer_get_last_name"] = "Retorna o teu último nome", + ["debug_xPlayer_get_full_name"] = "Retorna o teu nome completo", + ["debug_xPlayer_get_sex"] = "Retorna o teu sexo", + ["debug_xPlayer_get_dob"] = "Retorna a tua data de nascimento", + ["debug_xPlayer_get_height"] = "Retorna a tua altura", + ["error_debug_xPlayer_get_first_name"] = "Houve um problema ao obter o teu primeiro nome.", + ["error_debug_xPlayer_get_last_name"] = "Houve um problema ao obter o teu último nome.", + ["error_debug_xPlayer_get_full_name"] = "Houve um problema ao obter o teu nome completo.", + ["error_debug_xPlayer_get_sex"] = "Houve um problema ao obter o teu sexo.", + ["error_debug_xPlayer_get_dob"] = "Houve um problema ao obter a tua data de nascimento.", + ["error_debug_xPlayer_get_height"] = "Houve um problema ao obter a tua altura.", + ["return_debug_xPlayer_get_first_name"] = "Primeiro nome: %s", + ["return_debug_xPlayer_get_last_name"] = "Último nome: %s", + ["return_debug_xPlayer_get_full_name"] = "Nome: %s", + ["return_debug_xPlayer_get_sex"] = "Sexo: %s", + ["return_debug_xPlayer_get_dob"] = "Data de nascimento: %s", + ["return_debug_xPlayer_get_height"] = "Altura: %s cm", + ["data_incorrect"] = "Dados inválidos, tenta novamente.", + ["invalid_format"] = "Formato dos dados inválido, tenta novamente.", + ["no_identifier"] = "[ESX Identity]\nHouve um erro ao carregar a tua personagem!\nCódigo do erro: identifier-missing\n\nEste erro é devido à falta do teu identificador. Porfavor volta mais tarde ou reporta este problema a um Administrador.", + ["missing_identity"] = "[ESX Identity]\nHouve um erro ao carregar a tua personagem!\nCódigo do erro: identity-missing\n\nParece que a tua identidade está em falta, experimenta reentrar no servidor!", + ["deleted_identity"] = "Personagem apagada. Porfavor reentra para criar uma nova personagem.", + ["already_registered"] = "Tu já estás registado.", + ["invalid_firstname_format"] = "Formato inválido (Primeiro nome): Porfavor tenta novamente!", + ["invalid_lastname_format"] = "Formato inválido (Último nome): Porfavor tenta novamente!", + ["invalid_dob_format"] = "Formato inválido (Data de nascimento): Porfavor tenta novamente!", + ["invalid_sex_format"] = "Formato inválido (Sexo): Porfavor tenta novamente!", + ["invalid_height_format"] = "Formato inválido (Altura): Porfavor tenta novamente!", +} diff --git a/[core]/esx_identity/locales/sl.lua b/[core]/esx_identity/locales/sl.lua new file mode 100644 index 00000000..2e961578 --- /dev/null +++ b/[core]/esx_identity/locales/sl.lua @@ -0,0 +1,38 @@ +Locales['sl'] = { + ['show_active_character'] = 'Prikaži aktivnega lika', + ['active_character'] = 'Aktivni lik: %s', + ['error_active_character'] = 'Prišlo je do napake pri pridobivanju podatkov.', + ['delete_character'] = 'Izbriši trenutnega lika.', + ['deleted_character'] = 'Lik je bil izbrisan', + ['error_delete_character'] = 'Prišlo je do težave pri brisanju lika.', + ['thank_you_for_registering'] = 'Registracija uspešna. Uživajte!', + ['debug_xPlayer_get_first_name'] = 'Vrne vaše ime', + ['debug_xPlayer_get_last_name'] = 'Vrne vaše priimek', + ['debug_xPlayer_get_full_name'] = 'Vrne vaše polno ime', + ['debug_xPlayer_get_sex'] = 'Vrne vaš spol', + ['debug_xPlayer_get_dob'] = 'Vrne vaš datum rojstva', + ['debug_xPlayer_get_height'] = 'Vrne vašo višino', + ['error_debug_xPlayer_get_first_name'] = 'Prišlo je do težave pri pridobivanju vašega imena.', + ['error_debug_xPlayer_get_last_name'] = 'Prišlo je do težave pri pridobivanju vašega priimka.', + ['error_debug_xPlayer_get_full_name'] = 'Prišlo je do težave pri pridobivanju vašega polnega imena.', + ['error_debug_xPlayer_get_sex'] = 'Prišlo je do težave pri pridobivanju vašega spola.', + ['error_debug_xPlayer_get_dob'] = 'Prišlo je do težave pri pridobivanju vašega datuma rojstva.', + ['error_debug_xPlayer_get_height'] = 'Prišlo je do težave pri pridobivanju vaše višine.', + ['return_debug_xPlayer_get_first_name'] = 'Ime: %s', + ['return_debug_xPlayer_get_last_name'] = 'Priimek: %s', + ['return_debug_xPlayer_get_full_name'] = 'Ime: %s', + ['return_debug_xPlayer_get_sex'] = 'Spol: %s', + ['return_debug_xPlayer_get_dob'] = 'Datum rojstva: %s', + ['return_debug_xPlayer_get_height'] = 'Višina: %s palcev', + ['data_incorrect'] = 'Neveljavni podatki. Poskusite znova.', + ['invalid_format'] = 'Neveljavna oblika podatkov. Poskusite znova.', + ['no_identifier'] = '[ESX Identity]\nPrišlo je do težave pri nalaganju vašega lika!\nNapaka: manjkajoč-identifier\n\nTo je posledica manjkajočega identifikatorja. Prosimo, poskusite znova kasneje ali to težavo prijavite lastniku strežnika.', + ['missing_identity'] = '[ESX Identity]\nPrišlo je do težave pri nalaganju vašega lika!\nNapaka: manjkajoč-identity\n\nZdi se, da manjka vaša identiteta. Poskusite znova.', + ['deleted_identity'] = 'Lik izbrisan. Prosimo, ponovno se pridružite in ustvarite nov lik.', + ['already_registered'] = 'Že ste registrirani.', + ['invalid_firstname_format'] = 'Neveljavna oblika (Ime). Poskusite znova.', + ['invalid_lastname_format'] = 'Neveljavna oblika (Priimek). Poskusite znova.', + ['invalid_dob_format'] = 'Neveljavna oblika (Datum rojstva). Poskusite znova.', + ['invalid_sex_format'] = 'Neveljavna oblika (Spol). Poskusite znova.', + ['invalid_height_format'] = 'Neveljavna oblika (Višina). Poskusite znova.' + } \ No newline at end of file diff --git a/[core]/esx_identity/locales/sr.lua b/[core]/esx_identity/locales/sr.lua new file mode 100644 index 00000000..96e12935 --- /dev/null +++ b/[core]/esx_identity/locales/sr.lua @@ -0,0 +1,38 @@ +Locales["sr"] = { + ["show_active_character"] = "Prikazi karaktere", + ["active_character"] = "Karakteri: %s", + ["error_active_character"] = "Imamo problem sa ucitavanjem karaktera.", + ["delete_character"] = "Obrisite karaktera.", + ["deleted_character"] = "Karakter obrisan", + ["error_delete_character"] = "Doslo je do greske pri brisanju karaktera.", + ["thank_you_for_registering"] = "Registracija uspesna. Uzivajte!", + ["debug_xPlayer_get_first_name"] = "Vraca vase ime", + ["debug_xPlayer_get_last_name"] = "Vraca vase prezime", + ["debug_xPlayer_get_full_name"] = "Vraca vase puno ime", + ["debug_xPlayer_get_sex"] = "Vraca vas pol", + ["debug_xPlayer_get_dob"] = "Vraca vas datum rodjenja", + ["debug_xPlayer_get_height"] = "Vraca vasu visinu", + ["error_debug_xPlayer_get_first_name"] = "Doslo je do greske pri pronalazenju vaseg imena.", + ["error_debug_xPlayer_get_last_name"] = "Doslo je do greske pri pronalazenju vaseg prezimena.", + ["error_debug_xPlayer_get_full_name"] = "Doslo je do greske pri pronalazenju vaseg punog imena.", + ["error_debug_xPlayer_get_sex"] = "Doslo je do greske pri pronalazenju vaseg pola.", + ["error_debug_xPlayer_get_dob"] = "Doslo je do greske pri pronalazenju vaseg datuma rodjenja.", + ["error_debug_xPlayer_get_height"] = "Doslo je do greske pri pronalazenju vase visine.", + ["return_debug_xPlayer_get_first_name"] = "Ime: %s", + ["return_debug_xPlayer_get_last_name"] = "Prezime: %s", + ["return_debug_xPlayer_get_full_name"] = "Ime: %s", + ["return_debug_xPlayer_get_sex"] = "Pol: %s", + ["return_debug_xPlayer_get_dob"] = "Datum rodjenja: %s", + ["return_debug_xPlayer_get_height"] = "Visina: %s", + ["data_incorrect"] = "Nevazeci podatci, pokusajte ponovo.", + ["invalid_format"] = "Nevazeci format podataka, pokusajte ponovo.", + ["no_identifier"] = "[ESX Identity]\nDoslo je do greske pri ucitavanju vaseg karaktera!\nError Code: identifier-missing\n\nUpalite steam pa pokusajte ponovo.", + ["missing_identity"] = "[ESX Identity]\nDoslo je do greske pri ucitavanju vaseg karaktera!\nError Code: identity-missing\n\nIzgleda da je vas steam nepostojeci. Pokusajte ponovo.", + ["deleted_identity"] = "Karakter obrisan. Uradite relog kako bi napravili novog karaktera.", + ["already_registered"] = "Vi ste vec registrovani.", + ["invalid_firstname_format"] = "Nevazeci Format (Ime): Pokusajte ponovo.", + ["invalid_lastname_format"] = "Nevazeci Format (Prezime): Pokusajte ponovo.", + ["invalid_dob_format"] = "Nevazeci Format (Datum Rodjenja): Pokusajte ponovo.", + ["invalid_sex_format"] = "Nevazeci Format (Pol): Pokusajte ponovo.", + ["invalid_height_format"] = "Nevazeci Format (Visina): Pokusajte ponovo.", +} diff --git a/[core]/esx_identity/locales/sv.lua b/[core]/esx_identity/locales/sv.lua deleted file mode 100644 index 0b74e289..00000000 --- a/[core]/esx_identity/locales/sv.lua +++ /dev/null @@ -1,38 +0,0 @@ -Locales['sv'] = { - ['show_active_character'] = 'Visa aktiva karaktär', - ['active_character'] = 'Aktiv karaktär: %s', - ['error_active_character'] = "Det gick inte att hämta din data.", - ['delete_character'] = 'Ta bort nuvarande karaktär och skapa en ny.', - ['deleted_character'] = 'Karaktär raderad.', - ['error_delete_character'] = "Det gick inte att ta bort din karaktär.", - ['thank_you_for_registering'] = "Registrering lyckades, Ha så kul!", - ['registration_error'] = "Det uppstod ett problem när du registrerade din karaktär, se till att informationen är korrekt.", - ['debug_xPlayer_get_first_name'] = "Returnerar ditt förnamn", - ['debug_xPlayer_get_last_name'] = "Returnerar ditt efternamn", - ['debug_xPlayer_get_full_name'] = "Returnerar ditt fullständiga namn", - ['debug_xPlayer_get_sex'] = "Returnerar ditt kön", - ['debug_xPlayer_get_dob'] = "Returnerar ditt födelsedatum", - ['debug_xPlayer_get_height'] = "Returnerar din längd", - ['error_debug_xPlayer_get_first_name'] = "Det uppstod ett problem när du fick ditt förnamn.", - ['error_debug_xPlayer_get_last_name'] = "Det uppstod ett problem när du fick ditt efternamn.", - ['error_debug_xPlayer_get_full_name'] = "Det uppstod ett problem när du fick ditt fullständiga namn.", - ['error_debug_xPlayer_get_sex'] = "Det uppstod ett problem när du skaffade ditt kön.", - ['error_debug_xPlayer_get_dob'] = "Det uppstod ett problem när du skaffade ditt födelsedatum.", - ['error_debug_xPlayer_get_height'] = "Det uppstod ett problem när du fick din längd.", - ['return_debug_xPlayer_get_first_name'] = "Förnamn: %s", - ['return_debug_xPlayer_get_last_name'] = "Efternamn: %s", - ['return_debug_xPlayer_get_full_name'] = "Fullständiga namn: %s", - ['return_debug_xPlayer_get_sex'] = "Kön: %s", - ['return_debug_xPlayer_get_dob'] = "Födelsedatum: %s", - ['return_debug_xPlayer_get_height'] = "Längd: %s Centimeter", - ['data_incorrect'] = 'Uppgifterna har angetts felaktigt. Var god försök igen.', - ['invalid_format'] = 'Data är felaktigt formaterade. Var god försök igen.', - ['no_identifier'] = 'Det uppstod ett fel när din karaktär skulle laddas!\nError code: identifier-missing\n\nOrsaken till detta fel är inte känd, din identifierare kunde inte hittas. Kom tillbaka senare eller rapportera det här problemet till en administratör.', - ['missing_identity'] = 'Det uppstod ett fel när din karaktär skulle laddas!\nError code: identity-missing\n\nDet verkar som om din identitet saknas, försök ansluta igen.', - ['deleted_identity'] = 'Din karaktär har tagits bort. Logga in igen för att skapa en ny karaktär.', - ['invalid_firstname_format'] = 'Ogiltigt format (Namn): Försök igen.', - ['invalid_lastname_format'] = 'Ogiltigt format (Efternamn): Försök igen.', - ['invalid_dob_format'] = 'Ogiltigt format (DOB): Please try again.', - ['invalid_sex_format'] = 'Ogiltigt formatOgiltigt format (Kön): Försök igen.', - ['invalid_height_format'] = 'Ogiltigt format (Längd): Försök igen.' -} diff --git a/[core]/esx_identity/locales/tc.lua b/[core]/esx_identity/locales/tc.lua deleted file mode 100644 index 65f210b7..00000000 --- a/[core]/esx_identity/locales/tc.lua +++ /dev/null @@ -1,33 +0,0 @@ -Locales['tc'] = { - ['show_active_character'] = '顯示已啟用的人物', - ['active_character'] = '已啟用的人物: %s', - ['error_active_character'] = "獲取您的數據時出現錯誤", - ['delete_character'] = '刪除當前的人物並創建一個新的人物', - ['deleted_character'] = '人物已刪除', - ['error_delete_character'] = "刪除您的人物時出現錯誤", - ['thank_you_for_registering'] = "註冊成功, 歡迎遊玩!", - ['registration_error'] = "您的資料不正確", - ['debug_xPlayer_get_first_name'] = "回呼你的名稱", - ['debug_xPlayer_get_last_name'] = "回呼您的姓氏", - ['debug_xPlayer_get_full_name'] = "回呼你的姓名", - ['debug_xPlayer_get_sex'] = "回呼你的性別", - ['debug_xPlayer_get_dob'] = "回呼你的出生日期", - ['debug_xPlayer_get_height'] = "回呼你的身高", - ['error_debug_xPlayer_get_first_name'] = "獲取您的名稱時出現錯誤", - ['error_debug_xPlayer_get_last_name'] = "獲取您的姓氏時出現錯誤", - ['error_debug_xPlayer_get_full_name'] = "獲取您的姓名時出現錯誤", - ['error_debug_xPlayer_get_sex'] = "獲取您的性別時出現錯誤", - ['error_debug_xPlayer_get_dob'] = "獲取您的出生日期時出現錯誤", - ['error_debug_xPlayer_get_height'] = "獲取您的身高時出現錯誤", - ['return_debug_xPlayer_get_first_name'] = "名稱: %s", - ['return_debug_xPlayer_get_last_name'] = "姓氏: %s", - ['return_debug_xPlayer_get_full_name'] = "姓名: %s", - ['return_debug_xPlayer_get_sex'] = "性別: %s", - ['return_debug_xPlayer_get_dob'] = "出生日期: %s", - ['return_debug_xPlayer_get_height'] = "身高: %s cm", - ['data_incorrect'] = '您輸入的資料無效, 請重試', - ['invalid_format'] = '您輸入的資料格式無效, 請重試', - ['no_identifier'] = '[ESX Identity]\n加載人物時出現錯誤!\n錯誤代碼: identifier-missing\n\n這是由於您的標識符丟失造成的, 請稍後再回來或將此問題報告給伺服器所有者', - ['missing_identity'] = '[ESX Identity]\n加載人物時出現錯誤!\n錯誤代碼: identity-missing\n\n您的人物似乎丟失了, 請嘗試重新連接', - ['deleted_identity'] = '人物已刪除, 請重新加入以創建新人物' -} diff --git a/[core]/esx_identity/server/main.lua b/[core]/esx_identity/server/main.lua index b9513cee..a2884c76 100644 --- a/[core]/esx_identity/server/main.lua +++ b/[core]/esx_identity/server/main.lua @@ -3,16 +3,12 @@ local alreadyRegistered = {} local multichar = ESX.GetConfig().Multichar local function deleteIdentityFromDatabase(xPlayer) - MySQL.query.await( - 'UPDATE users SET firstname = ?, lastname = ?, dateofbirth = ?, sex = ?, height = ?, skin = ? WHERE identifier = ?', - {nil, nil, nil, nil, nil, nil, xPlayer.identifier}) + MySQL.query.await('UPDATE users SET firstname = ?, lastname = ?, dateofbirth = ?, sex = ?, height = ?, skin = ? WHERE identifier = ?', { nil, nil, nil, nil, nil, nil, xPlayer.identifier }) if Config.FullCharDelete then - MySQL.update.await('UPDATE addon_account_data SET money = 0 WHERE account_name IN (?) AND owner = ?', - {{'bank_savings', 'caution'}, xPlayer.identifier}) + MySQL.update.await('UPDATE addon_account_data SET money = 0 WHERE account_name IN (?) AND owner = ?', { { 'bank_savings', 'caution' }, xPlayer.identifier }) - MySQL.prepare.await('UPDATE datastore_data SET data = ? WHERE name IN (?) AND owner = ?', - {'\'{}\'', {'user_ears', 'user_glasses', 'user_helmet', 'user_mask'}, xPlayer.identifier}) + MySQL.prepare.await('UPDATE datastore_data SET data = ? WHERE name IN (?) AND owner = ?', { '\'{}\'', { 'user_ears', 'user_glasses', 'user_helmet', 'user_mask' }, xPlayer.identifier }) end end @@ -31,9 +27,7 @@ local function deleteIdentity(xPlayer) end local function saveIdentityToDatabase(identifier, identity) - MySQL.update.await( - 'UPDATE users SET firstname = ?, lastname = ?, dateofbirth = ?, sex = ?, height = ? WHERE identifier = ?', - {identity.firstName, identity.lastName, identity.dateOfBirth, identity.sex, identity.height, identifier}) + MySQL.update.await('UPDATE users SET firstname = ?, lastname = ?, dateofbirth = ?, sex = ?, height = ? WHERE identifier = ?', { identity.firstName, identity.lastName, identity.dateOfBirth, identity.sex, identity.height, identifier }) end local function checkDOBFormat(str) @@ -41,9 +35,9 @@ local function checkDOBFormat(str) if not string.match(str, '(%d%d)/(%d%d)/(%d%d%d%d)') then return false end - + local d, m, y = string.match(str, '(%d+)/(%d+)/(%d+)') - + m = tonumber(m) d = tonumber(d) y = tonumber(y) @@ -119,28 +113,27 @@ local function formatName(name) end if Config.UseDeferrals then - AddEventHandler('playerConnecting', function(playerName, setKickReason, deferrals) + AddEventHandler('playerConnecting', function(_, _, deferrals) deferrals.defer() - local playerId, identifier = source, ESX.GetIdentifier(source) + local _, identifier = source, ESX.GetIdentifier(source) Wait(100) if identifier then - MySQL.single('SELECT firstname, lastname, dateofbirth, sex, height FROM users WHERE identifier = ?', - {identifier}, function(result) - if result then - if result.firstname then - playerIdentity[identifier] = { - firstName = result.firstname, - lastName = result.lastname, - dateOfBirth = result.dateofbirth, - sex = result.sex, - height = result.height - } + MySQL.single('SELECT firstname, lastname, dateofbirth, sex, height FROM users WHERE identifier = ?', { identifier }, function(result) + if result then + if result.firstname then + playerIdentity[identifier] = { + firstName = result.firstname, + lastName = result.lastname, + dateOfBirth = result.dateofbirth, + sex = result.sex, + height = result.height + } - deferrals.done() - else - deferrals.presentCard( - [==[{"type": "AdaptiveCard","body":[{"type":"Container","items":[{"type":"ColumnSet", + deferrals.done() + else + deferrals.presentCard( + [==[{"type": "AdaptiveCard","body":[{"type":"Container","items":[{"type":"ColumnSet", "columns":[{"type":"Column","items":[{"type":"Input.Text","placeholder":"First Name", "id":"firstname","maxLength":15},{"type":"Input.Text","placeholder":"Date of Birth (MM/DD/YYYY)", "id":"dateofbirth","maxLength":10}],"width":"stretch"},{"type":"Column","width":"stretch", @@ -150,33 +143,33 @@ if Config.UseDeferrals then {"title":"Female","value":"f"}],"style":"expanded","id":"sex"}]},{"type": "ActionSet", "actions": [{"type":"Action.Submit","title":"Submit"}]}], "$schema": "http://adaptivecards.io/schemas/adaptive-card.json","version":"1.0"}]==], - function(data) - if data.firstname == '' or data.lastname == '' or data.dateofbirth == '' or data.sex == - '' or data.height == '' then - deferrals.done(TranslateCap('data_incorrect')) - else - if checkNameFormat(data.firstname) and checkNameFormat(data.lastname) and - checkDOBFormat(data.dateofbirth) and checkSexFormat(data.sex) and - checkHeightFormat(data.height) then - playerIdentity[identifier] = { - firstName = formatName(data.firstname), - lastName = formatName(data.lastname), - dateOfBirth = data.dateofbirth, - sex = data.sex, - height = tonumber(data.height), - saveToDatabase = true - } + function(data) + if data.firstname == '' or data.lastname == '' or data.dateofbirth == '' or data.sex == + '' or data.height == '' then + deferrals.done(TranslateCap('data_incorrect')) + else + if checkNameFormat(data.firstname) and checkNameFormat(data.lastname) and + checkDOBFormat(data.dateofbirth) and checkSexFormat(data.sex) and + checkHeightFormat(data.height) then + playerIdentity[identifier] = { + firstName = formatName(data.firstname), + lastName = formatName(data.lastname), + dateOfBirth = data.dateofbirth, + sex = data.sex, + height = tonumber(data.height), + saveToDatabase = true + } - deferrals.done() - else - deferrals.done(TranslateCap('invalid_format')) - end + deferrals.done() + else + deferrals.done(TranslateCap('invalid_format')) end - end) - end - else - deferrals.presentCard( - [==[{"type": "AdaptiveCard","body":[{"type":"Container","items":[{"type":"ColumnSet","columns":[{ + end + end) + end + else + deferrals.presentCard( + [==[{"type": "AdaptiveCard","body":[{"type":"Container","items":[{"type":"ColumnSet","columns":[{ "type":"Column","items":[{"type":"Input.Text","placeholder":"First Name","id":"firstname", "maxLength":15},{"type":"Input.Text","placeholder":"Date of Birth (MM/DD/YYYY)","id":"dateofbirth", "maxLength":10}],"width":"stretch"},{"type":"Column","width":"stretch","items":[{"type":"Input.Text", @@ -185,46 +178,46 @@ if Config.UseDeferrals then "placeholder":"Sex","choices":[{"title":"Male","value":"m"},{"title":"Female","value":"f"}], "style":"expanded","id":"sex"}]},{"type": "ActionSet","actions": [{"type":"Action.Submit", "title":"Submit"}]}],"$schema": "http://adaptivecards.io/schemas/adaptive-card.json","version":"1.0"}]==], - function(data) - if data.firstname == '' or data.lastname == '' or data.dateofbirth == '' or data.sex == '' or data.height == '' then - return deferrals.done(TranslateCap('data_incorrect')) - end - if not checkNameFormat(data.firstname) then - return deferrals.done(TranslateCap('invalid_firstname_format')) - end - if not checkNameFormat(data.lastname) then - return deferrals.done(TranslateCap('invalid_lastname_format')) - end - if not checkDOBFormat(data.dateofbirth) then - return deferrals.done(TranslateCap('invalid_dob_format')) - end - if not checkSexFormat(data.sex) then - return deferrals.done(TranslateCap('invalid_sex_format')) - end - if not checkHeightFormat(data.height) then - return deferrals.done(TranslateCap('invalid_height_format')) - end - - playerIdentity[identifier] = { - firstName = formatName(data.firstname), - lastName = formatName(data.lastname), - dateOfBirth = formatDate(data.dateofbirth), - sex = data.sex, - height = tonumber(data.height), - saveToDatabase = true - } + function(data) + if data.firstname == '' or data.lastname == '' or data.dateofbirth == '' or data.sex == '' or data.height == '' then + return deferrals.done(TranslateCap('data_incorrect')) + end + if not checkNameFormat(data.firstname) then + return deferrals.done(TranslateCap('invalid_firstname_format')) + end + if not checkNameFormat(data.lastname) then + return deferrals.done(TranslateCap('invalid_lastname_format')) + end + if not checkDOBFormat(data.dateofbirth) then + return deferrals.done(TranslateCap('invalid_dob_format')) + end + if not checkSexFormat(data.sex) then + return deferrals.done(TranslateCap('invalid_sex_format')) + end + if not checkHeightFormat(data.height) then + return deferrals.done(TranslateCap('invalid_height_format')) + end - deferrals.done() - end) - end - end) + playerIdentity[identifier] = { + firstName = formatName(data.firstname), + lastName = formatName(data.lastname), + dateOfBirth = formatDate(data.dateofbirth), + sex = data.sex, + height = tonumber(data.height), + saveToDatabase = true + } + + deferrals.done() + end) + end + end) else deferrals.done(TranslateCap('no_identifier')) end end) RegisterNetEvent('esx:playerLoaded') - AddEventHandler('esx:playerLoaded', function(playerId, xPlayer) + AddEventHandler('esx:playerLoaded', function(_, xPlayer) if not playerIdentity[xPlayer.identifier] then return xPlayer.kick(_('missing_identity')) end @@ -246,8 +239,8 @@ if Config.UseDeferrals then playerIdentity[xPlayer.identifier] = nil end) else - local function setIdentity(xPlayer) - if not alreadyRegistered[xPlayer.identifier] then + local function setIdentity(xPlayer) + if not alreadyRegistered[xPlayer.identifier] then return end local currentIdentity = playerIdentity[xPlayer.identifier] @@ -264,21 +257,55 @@ else end playerIdentity[xPlayer.identifier] = nil - end - - local function checkIdentity(xPlayer) - MySQL.single('SELECT firstname, lastname, dateofbirth, sex, height FROM users WHERE identifier = ?', {xPlayer.identifier}, - function(result) + end + + local function checkIdentity(xPlayer) + MySQL.single('SELECT firstname, lastname, dateofbirth, sex, height FROM users WHERE identifier = ?', { xPlayer.identifier }, function(result) + if not result then + return TriggerClientEvent('esx_identity:showRegisterIdentity', xPlayer.source) + end + if not result.firstname then + playerIdentity[xPlayer.identifier] = nil + alreadyRegistered[xPlayer.identifier] = false + return TriggerClientEvent('esx_identity:showRegisterIdentity', xPlayer.source) + end + + playerIdentity[xPlayer.identifier] = { + firstName = result.firstname, + lastName = result.lastname, + dateOfBirth = result.dateofbirth, + sex = result.sex, + height = result.height + } + + alreadyRegistered[xPlayer.identifier] = true + setIdentity(xPlayer) + end + ) + end + + if not multichar then + AddEventHandler('playerConnecting', function(_, _, deferrals) + deferrals.defer() + local _, identifier = source, ESX.GetIdentifier(source) + Wait(40) + + if not identifier then + return deferrals.done(TranslateCap('no_identifier')) + end + MySQL.single('SELECT firstname, lastname, dateofbirth, sex, height FROM users WHERE identifier = ?', { identifier }, function(result) if not result then - return TriggerClientEvent('esx_identity:showRegisterIdentity', xPlayer.source) + playerIdentity[identifier] = nil + alreadyRegistered[identifier] = false + return deferrals.done() end if not result.firstname then - playerIdentity[xPlayer.identifier] = nil - alreadyRegistered[xPlayer.identifier] = false - return TriggerClientEvent('esx_identity:showRegisterIdentity', xPlayer.source) + playerIdentity[identifier] = nil + alreadyRegistered[identifier] = false + return deferrals.done() end - playerIdentity[xPlayer.identifier] = { + playerIdentity[identifier] = { firstName = result.firstname, lastName = result.lastname, dateOfBirth = result.dateofbirth, @@ -286,49 +313,13 @@ else height = result.height } - alreadyRegistered[xPlayer.identifier] = true - setIdentity(xPlayer) - end - ) - end + alreadyRegistered[identifier] = true - if not multichar then - AddEventHandler('playerConnecting', function(playerName, setKickReason, deferrals) - deferrals.defer() - local playerId, identifier = source, ESX.GetIdentifier(source) - Wait(40) + deferrals.done() + end) + end) - if not identifier then - return deferrals.done(TranslateCap('no_identifier')) - end - MySQL.single('SELECT firstname, lastname, dateofbirth, sex, height FROM users WHERE identifier = ?', {identifier}, - function(result) - if not result then - playerIdentity[identifier] = nil - alreadyRegistered[identifier] = false - return deferrals.done() - end - if not result.firstname then - playerIdentity[identifier] = nil - alreadyRegistered[identifier] = false - return deferrals.done() - end - - playerIdentity[identifier] = { - firstName = result.firstname, - lastName = result.lastname, - dateOfBirth = result.dateofbirth, - sex = result.sex, - height = result.height - } - - alreadyRegistered[identifier] = true - - deferrals.done() - end) - end) - - AddEventHandler('onResourceStart', function(resource) + AddEventHandler('onResourceStart', function(resource) if resource ~= GetCurrentResourceName() then return end @@ -338,15 +329,15 @@ else local xPlayers = ESX.GetExtendedPlayers() - for i=1, #(xPlayers) do + for i = 1, #(xPlayers) do if xPlayers[i] then checkIdentity(xPlayers[i]) end end end) - RegisterNetEvent('esx:playerLoaded', function(playerId, xPlayer) - local currentIdentity = playerIdentity[xPlayer.identifier] + RegisterNetEvent('esx:playerLoaded', function(_, xPlayer) + local currentIdentity = playerIdentity[xPlayer.identifier] if currentIdentity and alreadyRegistered[xPlayer.identifier] then xPlayer.setName(('%s %s'):format(currentIdentity.firstName, currentIdentity.lastName)) @@ -368,35 +359,35 @@ else else TriggerClientEvent('esx_identity:showRegisterIdentity', xPlayer.source) end - end) - end + end) + end - ESX.RegisterServerCallback('esx_identity:registerIdentity', function(source, cb, data) - local xPlayer = ESX.GetPlayerFromId(source) - if not checkNameFormat(data.firstname) then - TriggerClientEvent('esx:showNotification',source,TranslateCap('invalid_firstname_format'), "error") - return cb(false) - end - if not checkNameFormat(data.lastname) then - TriggerClientEvent('esx:showNotification',source,TranslateCap('invalid_lastname_format'), "error") - return cb(false) - end - if not checkSexFormat(data.sex) then - TriggerClientEvent('esx:showNotification',source,TranslateCap('invalid_sex_format'), "error") - return cb(false) - end - if not checkDOBFormat(data.dateofbirth) then - TriggerClientEvent('esx:showNotification',source,TranslateCap('invalid_dob_format'), "error") - return cb(false) - end - if not checkHeightFormat(data.height) then - TriggerClientEvent('esx:showNotification',source,TranslateCap('invalid_height_format'), "error") - return cb(false) - end - if xPlayer then - if alreadyRegistered[xPlayer.identifier] then - xPlayer.showNotification(TranslateCap('already_registered'), "error") - return cb(false) + ESX.RegisterServerCallback('esx_identity:registerIdentity', function(source, cb, data) + local xPlayer = ESX.GetPlayerFromId(source) + if not checkNameFormat(data.firstname) then + TriggerClientEvent('esx:showNotification', source, TranslateCap('invalid_firstname_format'), "error") + return cb(false) + end + if not checkNameFormat(data.lastname) then + TriggerClientEvent('esx:showNotification', source, TranslateCap('invalid_lastname_format'), "error") + return cb(false) + end + if not checkSexFormat(data.sex) then + TriggerClientEvent('esx:showNotification', source, TranslateCap('invalid_sex_format'), "error") + return cb(false) + end + if not checkDOBFormat(data.dateofbirth) then + TriggerClientEvent('esx:showNotification', source, TranslateCap('invalid_dob_format'), "error") + return cb(false) + end + if not checkHeightFormat(data.height) then + TriggerClientEvent('esx:showNotification', source, TranslateCap('invalid_height_format'), "error") + return cb(false) + end + if xPlayer then + if alreadyRegistered[xPlayer.identifier] then + xPlayer.showNotification(TranslateCap('already_registered'), "error") + return cb(false) end playerIdentity[xPlayer.identifier] = { @@ -445,19 +436,19 @@ else TriggerEvent('esx_identity:completedRegistration', source, data) TriggerClientEvent('esx_identity:setPlayerData', source, Identity) cb(true) - end) + end) end if Config.EnableCommands then - ESX.RegisterCommand('char', 'user', function(xPlayer, args, showError) + ESX.RegisterCommand('char', 'user', function(xPlayer) if xPlayer and xPlayer.getName() then xPlayer.showNotification(TranslateCap('active_character', xPlayer.getName())) else xPlayer.showNotification(TranslateCap('error_active_character')) end - end, false, {help = TranslateCap('show_active_character')}) + end, false, { help = TranslateCap('show_active_character') }) - ESX.RegisterCommand('chardel', 'user', function(xPlayer, args, showError) + ESX.RegisterCommand('chardel', 'user', function(xPlayer) if xPlayer and xPlayer.getName() then if Config.UseDeferrals then xPlayer.kick(TranslateCap('deleted_identity')) @@ -476,55 +467,55 @@ if Config.EnableCommands then else xPlayer.showNotification(TranslateCap('error_delete_character')) end - end, false, {help = TranslateCap('delete_character')}) + end, false, { help = TranslateCap('delete_character') }) end if Config.EnableDebugging then - ESX.RegisterCommand('xPlayerGetFirstName', 'user', function(xPlayer, args, showError) + ESX.RegisterCommand('xPlayerGetFirstName', 'user', function(xPlayer) if xPlayer and xPlayer.get('firstName') then xPlayer.showNotification(TranslateCap('return_debug_xPlayer_get_first_name', xPlayer.get('firstName'))) else xPlayer.showNotification(TranslateCap('error_debug_xPlayer_get_first_name')) end - end, false, {help = TranslateCap('debug_xPlayer_get_first_name')}) + end, false, { help = TranslateCap('debug_xPlayer_get_first_name') }) - ESX.RegisterCommand('xPlayerGetLastName', 'user', function(xPlayer, args, showError) + ESX.RegisterCommand('xPlayerGetLastName', 'user', function(xPlayer) if xPlayer and xPlayer.get('lastName') then xPlayer.showNotification(TranslateCap('return_debug_xPlayer_get_last_name', xPlayer.get('lastName'))) else xPlayer.showNotification(TranslateCap('error_debug_xPlayer_get_last_name')) end - end, false, {help = TranslateCap('debug_xPlayer_get_last_name')}) + end, false, { help = TranslateCap('debug_xPlayer_get_last_name') }) - ESX.RegisterCommand('xPlayerGetFullName', 'user', function(xPlayer, args, showError) + ESX.RegisterCommand('xPlayerGetFullName', 'user', function(xPlayer) if xPlayer and xPlayer.getName() then xPlayer.showNotification(TranslateCap('return_debug_xPlayer_get_full_name', xPlayer.getName())) else xPlayer.showNotification(TranslateCap('error_debug_xPlayer_get_full_name')) end - end, false, {help = TranslateCap('debug_xPlayer_get_full_name')}) + end, false, { help = TranslateCap('debug_xPlayer_get_full_name') }) - ESX.RegisterCommand('xPlayerGetSex', 'user', function(xPlayer, args, showError) + ESX.RegisterCommand('xPlayerGetSex', 'user', function(xPlayer) if xPlayer and xPlayer.get('sex') then xPlayer.showNotification(TranslateCap('return_debug_xPlayer_get_sex', xPlayer.get('sex'))) else xPlayer.showNotification(TranslateCap('error_debug_xPlayer_get_sex')) end - end, false, {help = TranslateCap('debug_xPlayer_get_sex')}) + end, false, { help = TranslateCap('debug_xPlayer_get_sex') }) - ESX.RegisterCommand('xPlayerGetDOB', 'user', function(xPlayer, args, showError) + ESX.RegisterCommand('xPlayerGetDOB', 'user', function(xPlayer) if xPlayer and xPlayer.get('dateofbirth') then xPlayer.showNotification(TranslateCap('return_debug_xPlayer_get_dob', xPlayer.get('dateofbirth'))) else xPlayer.showNotification(TranslateCap('error_debug_xPlayer_get_dob')) end - end, false, {help = TranslateCap('debug_xPlayer_get_dob')}) + end, false, { help = TranslateCap('debug_xPlayer_get_dob') }) - ESX.RegisterCommand('xPlayerGetHeight', 'user', function(xPlayer, args, showError) + ESX.RegisterCommand('xPlayerGetHeight', 'user', function(xPlayer) if xPlayer and xPlayer.get('height') then xPlayer.showNotification(TranslateCap('return_debug_xPlayer_get_height', xPlayer.get('height'))) else xPlayer.showNotification(TranslateCap('error_debug_xPlayer_get_height')) end - end, false, {help = TranslateCap('debug_xPlayer_get_height')}) + end, false, { help = TranslateCap('debug_xPlayer_get_height') }) end diff --git a/[core]/esx_loadingscreen/client/client.lua b/[core]/esx_loadingscreen/client/client.lua index 62125c3b..383454ce 100644 --- a/[core]/esx_loadingscreen/client/client.lua +++ b/[core]/esx_loadingscreen/client/client.lua @@ -1,6 +1,6 @@ local ClientLoadESX = false -AddEventHandler("playerSpawned", function () +AddEventHandler("playerSpawned", function() if not ClientLoadESX then ShutdownLoadingScreenNui() ClientLoadESX = true @@ -10,4 +10,4 @@ AddEventHandler("playerSpawned", function () DoScreenFadeIn(2500) end end -end) \ No newline at end of file +end) diff --git a/[core]/esx_loadingscreen/config.lua b/[core]/esx_loadingscreen/config.lua index 67f639b2..302c9a5c 100644 --- a/[core]/esx_loadingscreen/config.lua +++ b/[core]/esx_loadingscreen/config.lua @@ -1,3 +1,3 @@ Config = {} -Config.Fade = true \ No newline at end of file +Config.Fade = true diff --git a/[core]/esx_loadingscreen/css/index.css b/[core]/esx_loadingscreen/css/index.css index 6cb39671..474a89b8 100644 --- a/[core]/esx_loadingscreen/css/index.css +++ b/[core]/esx_loadingscreen/css/index.css @@ -14,104 +14,104 @@ html, body { - margin: 0; - padding: 0; - font-family: "Quicksand", sans-serif; - overflow: hidden; + margin: 0; + padding: 0; + font-family: "Quicksand", sans-serif; + overflow: hidden; } #esx_intro { - z-index: 2; + z-index: 2; } #esx_loop { - z-index: 1; + z-index: 1; } #loading_txt { - bottom: 5%; - left: 50%; - margin-left: -80px; - position: absolute; - z-index: 999; + bottom: 5%; + left: 50%; + margin-left: -80px; + position: absolute; + z-index: 999; - -webkit-animation: fadein 5s; - -moz-animation: fadein 5s; - -ms-animation: fadein 5s; - -o-animation: fadein 5s; - animation: fadein 5s; + -webkit-animation: fadein 5s; + -moz-animation: fadein 5s; + -ms-animation: fadein 5s; + -o-animation: fadein 5s; + animation: fadein 5s; } p { - color: white; - font-size: 32px; + color: white; + font-size: 32px; } .text_thing:after { - content: " ."; - animation: dots 2s steps(5, end) infinite; + content: " ."; + animation: dots 2s steps(5, end) infinite; } @keyframes dots { - 0%, - 20% { - color: rgba(0, 0, 0, 0); - text-shadow: 0.25em 0 0 rgba(0, 0, 0, 0), 0.5em 0 0 rgba(0, 0, 0, 0); - } - 40% { - color: white; - text-shadow: 0.25em 0 0 rgba(0, 0, 0, 0), 0.5em 0 0 rgba(0, 0, 0, 0); - } - 60% { - text-shadow: 0.25em 0 0 white, 0.5em 0 0 rgba(0, 0, 0, 0); - } - 80%, - 100% { - text-shadow: 0.25em 0 0 white, 0.5em 0 0 white; - } + 0%, + 20% { + color: rgba(0, 0, 0, 0); + text-shadow: 0.25em 0 0 rgba(0, 0, 0, 0), 0.5em 0 0 rgba(0, 0, 0, 0); + } + 40% { + color: white; + text-shadow: 0.25em 0 0 rgba(0, 0, 0, 0), 0.5em 0 0 rgba(0, 0, 0, 0); + } + 60% { + text-shadow: 0.25em 0 0 white, 0.5em 0 0 rgba(0, 0, 0, 0); + } + 80%, + 100% { + text-shadow: 0.25em 0 0 white, 0.5em 0 0 white; + } } @keyframes fadein { - from { - opacity: 0; - } - to { - opacity: 1; - } + from { + opacity: 0; + } + to { + opacity: 1; + } } @-moz-keyframes fadein { - from { - opacity: 0; - } - to { - opacity: 1; - } + from { + opacity: 0; + } + to { + opacity: 1; + } } @-webkit-keyframes fadein { - from { - opacity: 0; - } - to { - opacity: 1; - } + from { + opacity: 0; + } + to { + opacity: 1; + } } @-ms-keyframes fadein { - from { - opacity: 0; - } - to { - opacity: 1; - } + from { + opacity: 0; + } + to { + opacity: 1; + } } @-o-keyframes fadein { - from { - opacity: 0; - } - to { - opacity: 1; - } + from { + opacity: 0; + } + to { + opacity: 1; + } } diff --git a/[core]/esx_loadingscreen/fxmanifest.lua b/[core]/esx_loadingscreen/fxmanifest.lua index bf772ad6..d0d9a914 100644 --- a/[core]/esx_loadingscreen/fxmanifest.lua +++ b/[core]/esx_loadingscreen/fxmanifest.lua @@ -1,5 +1,5 @@ game 'common' -version '1.9.4' +version '1.9.5' fx_version 'cerulean' author 'ESX-Framework' lua54 'yes' @@ -11,4 +11,4 @@ loadscreen_manual_shutdown "yes" client_script 'client/client.lua' -files {'index.html', './vid/*.mp4', './vid/*.webm', './js/index.js', './css/index.css'} +files { 'index.html', './vid/*.mp4', './vid/*.webm', './js/index.js', './css/index.css' } diff --git a/[core]/esx_loadingscreen/index.html b/[core]/esx_loadingscreen/index.html index 212b9e7e..590de522 100644 --- a/[core]/esx_loadingscreen/index.html +++ b/[core]/esx_loadingscreen/index.html @@ -1,25 +1,22 @@ - - - - - + + + + + - -
-
-

Loading

-
+ +
+
+

Loading

+
- - -
- + + +
+ diff --git a/[core]/esx_loadingscreen/js/index.js b/[core]/esx_loadingscreen/js/index.js index e2312b4a..c77c76ca 100644 --- a/[core]/esx_loadingscreen/js/index.js +++ b/[core]/esx_loadingscreen/js/index.js @@ -11,12 +11,12 @@ // This copyright should appear in every part of the project code document.addEventListener("DOMContentLoaded", () => { - const introTag = document.getElementById("esx_intro"); - const loopTag = document.getElementById("esx_loop"); + const introTag = document.getElementById("esx_intro"); + const loopTag = document.getElementById("esx_loop"); - introTag.onended = () => { - introTag.style.display = "none"; - loopTag.loop = true; // true - loopTag.play(); - }; + introTag.onended = () => { + introTag.style.display = "none"; + loopTag.loop = true; // true + loopTag.play(); + }; }); diff --git a/[core]/esx_menu_default/client/main.lua b/[core]/esx_menu_default/client/main.lua index 65d62d09..b1fbc586 100644 --- a/[core]/esx_menu_default/client/main.lua +++ b/[core]/esx_menu_default/client/main.lua @@ -3,7 +3,7 @@ GUI.Time = 0 local function openMenu(namespace, name, data) CurrentNameSpace = namespace - OpenedMenus += 1 + OpenedMenus = OpenedMenus + 1 SendNUIMessage({ action = 'openMenu', namespace = namespace, @@ -14,7 +14,10 @@ end local function closeMenu(namespace, name) CurrentNameSpace = namespace - OpenedMenus -= 1 + OpenedMenus = OpenedMenus - 1 + if OpenedMenus < 0 then + OpenedMenus = 0 + end SendNUIMessage({ action = 'closeMenu', namespace = namespace, @@ -23,7 +26,7 @@ local function closeMenu(namespace, name) end AddEventHandler('onResourceStop', function(resource) - if GetCurrentResourceName() == resource and OpenedMenus > 0 then + if GetCurrentResourceName() == resource and OpenedMenus > 0 then ESX.UI.Menu.CloseAll() elseif CurrentNameSpace ~= nil and CurrentNameSpace == resource and OpenedMenus > 0 then ESX.UI.Menu.CloseAll() @@ -126,4 +129,4 @@ ESX.RegisterInput('menu_default_right', 'Change menu slider to right', 'keyboard }) GUI.Time = GetGameTimer() end -end) \ No newline at end of file +end) diff --git a/[core]/esx_menu_default/fxmanifest.lua b/[core]/esx_menu_default/fxmanifest.lua index 8bab549c..7b82980b 100644 --- a/[core]/esx_menu_default/fxmanifest.lua +++ b/[core]/esx_menu_default/fxmanifest.lua @@ -4,12 +4,12 @@ game 'gta5' description 'ESX Menu Default' lua54 'yes' -version '1.9.4' +version '1.9.5' -client_scripts {'@es_extended/imports.lua', 'client/main.lua'} +client_scripts { '@es_extended/imports.lua', 'client/main.lua' } -ui_page {'html/ui.html'} +ui_page { 'html/ui.html' } -files {'html/ui.html', 'html/css/app.css', 'html/js/mustache.min.js', 'html/js/app.js'} +files { 'html/ui.html', 'html/css/app.css', 'html/js/mustache.min.js', 'html/js/app.js' } -dependencies {'es_extended'} +dependencies { 'es_extended' } diff --git a/[core]/esx_menu_default/html/css/app.css b/[core]/esx_menu_default/html/css/app.css index e7f07e2b..4658b79d 100644 --- a/[core]/esx_menu_default/html/css/app.css +++ b/[core]/esx_menu_default/html/css/app.css @@ -1,110 +1,110 @@ @import url("https://fonts.googleapis.com/css2?family=Poppins:wght@500;600&display=swap"); ::-webkit-scrollbar { - display: none; + display: none; } .menu { - font-family: "Poppins", sans-serif; - min-width: 350px; - color: #fff; - position: absolute; - background: rgba(33, 33, 33, 0); - text-align: center; + font-family: "Poppins", sans-serif; + min-width: 350px; + color: #fff; + position: absolute; + background: rgba(33, 33, 33, 0); + text-align: center; } .head { - display: block; - overflow: hidden; - padding-bottom: 3px; - text-align: center; - margin-bottom: 5px; - white-space: nowrap; - background: rgba(10, 10, 10, 0.9); + display: block; + overflow: hidden; + padding-bottom: 3px; + text-align: center; + margin-bottom: 5px; + white-space: nowrap; + background: rgba(10, 10, 10, 0.9); } .menu .head { - text-align: center; - height: 28px; - color: #ffffff; - font-weight: 700; - font-size: 20px; + text-align: center; + height: 28px; + color: #ffffff; + font-weight: 700; + font-size: 20px; } .menu .menu-items { - max-height: 450px; - overflow-y: auto; - font-weight: 550; + max-height: 450px; + overflow-y: auto; + font-weight: 550; } .menu-items { - margin-bottom: 2px; + margin-bottom: 2px; } .menu .menu-items .menu-item { - display: block; - padding: 7px; - font-size: 13px; - height: 16px; - text-indent: 5px; - margin-top: 5px; - background: rgba(40, 40, 40, 0.8); - color: rgb(202, 202, 202); - border-radius: 5px; - margin-bottom: 6px; + display: block; + padding: 7px; + font-size: 13px; + height: 16px; + text-indent: 5px; + margin-top: 5px; + background: rgba(40, 40, 40, 0.8); + color: rgb(202, 202, 202); + border-radius: 5px; + margin-bottom: 6px; } .menu .menu-items .menu-item.selected { - border: 1px solid rgba(55, 55, 55, 0.9); - background: rgba(20, 20, 20, 0.9); - color: rgba(243, 243, 243); - letter-spacing: 0.2px; - font-weight: 500; + border: 1px solid rgba(55, 55, 55, 0.9); + background: rgba(20, 20, 20, 0.9); + color: rgba(243, 243, 243); + letter-spacing: 0.2px; + font-weight: 500; } .menu.align-left { - left: 0; - top: 50%; + left: 0; + top: 50%; } .menu.align-top-left { - left: 3rem; - top: 0; + left: 3rem; + top: 0; } .menu.align-top { - left: 50%; - top: 0; + left: 50%; + top: 0; } .menu.align-top-right { - right: 3rem; - top: 0; + right: 3rem; + top: 0; } .menu.align-right { - right: 0; - top: 50%; + right: 0; + top: 50%; } .menu.align-bottom-right { - right: 3rem; - bottom: 0; + right: 3rem; + bottom: 0; } .menu.align-bottom { - left: 50%; - bottom: 0; - transform: translate(0, -50%); + left: 50%; + bottom: 0; + transform: translate(0, -50%); } .menu.align-bottom-left { - left: 3rem; - bottom: 0; + left: 3rem; + bottom: 0; } .menu.align-center { - left: 50%; - top: 35%; - transform: translate(-50%, 50%); + left: 50%; + top: 35%; + transform: translate(-50%, 50%); } diff --git a/[core]/esx_menu_default/html/js/app.js b/[core]/esx_menu_default/html/js/app.js index d53e3de8..36b960d1 100644 --- a/[core]/esx_menu_default/html/js/app.js +++ b/[core]/esx_menu_default/html/js/app.js @@ -1,378 +1,366 @@ (function () { - let MenuTpl = - '" + - "
"; - window.ESX_MENU = {}; - ESX_MENU.ResourceName = "esx_menu_default"; - ESX_MENU.opened = {}; - ESX_MENU.focus = []; - ESX_MENU.pos = {}; + let 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; - } + ESX_MENU.open = function (namespace, name, data) { + if (typeof ESX_MENU.opened[namespace] === "undefined") { + ESX_MENU.opened[namespace] = {}; } - 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; + if (typeof ESX_MENU.opened[namespace][name] != "undefined") { + ESX_MENU.close(namespace, name); } - break; - } - } - }; + if (typeof ESX_MENU.pos[namespace] === "undefined") { + ESX_MENU.pos[namespace] = {}; + } - window.onload = function (e) { - window.addEventListener("message", (event) => { - onData(event.data); - }); - }; + 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); + }); + }; })(); diff --git a/[core]/esx_menu_default/html/js/mustache.min.js b/[core]/esx_menu_default/html/js/mustache.min.js index 520cfcb9..f3656597 100644 --- a/[core]/esx_menu_default/html/js/mustache.min.js +++ b/[core]/esx_menu_default/html/js/mustache.min.js @@ -1 +1,347 @@ -(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)}})(this,function mustacheFactory(mustache){var objectToString=Object.prototype.toString;var isArray=Array.isArray||function isArrayPolyfill(object){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;i0?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")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": ">", '"': """, "'": "'", "/": "/", "`": "`", "=": "=" }; + 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; +}); diff --git a/[core]/esx_menu_default/html/ui.html b/[core]/esx_menu_default/html/ui.html index 5c090697..2cb88e7c 100644 --- a/[core]/esx_menu_default/html/ui.html +++ b/[core]/esx_menu_default/html/ui.html @@ -1,25 +1,16 @@ - - - - - - + + + + + + - - + + - - - - + + + + diff --git a/[core]/esx_menu_dialog/.editorconfig b/[core]/esx_menu_dialog/.editorconfig deleted file mode 100644 index 9b425256..00000000 --- a/[core]/esx_menu_dialog/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -root = true - -[*] -indent_size = 4 -indent_style = tab -end_of_line = crlf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true \ No newline at end of file diff --git a/[core]/esx_menu_dialog/client/main.lua b/[core]/esx_menu_dialog/client/main.lua index 2720c412..d9aab2cc 100644 --- a/[core]/esx_menu_dialog/client/main.lua +++ b/[core]/esx_menu_dialog/client/main.lua @@ -1,7 +1,7 @@ local Timeouts, OpenedMenus, MenuType = {}, {}, 'dialog' local function openMenu(namespace, name, data) - for i=1, #Timeouts, 1 do + for i = 1, #Timeouts, 1 do ESX.ClearTimeout(Timeouts[i]) end @@ -77,4 +77,4 @@ AddEventHandler('esx_menu_dialog:message:menu_change', function(data) if menu.change ~= nil then menu.change(data, menu) end -end) \ No newline at end of file +end) diff --git a/[core]/esx_menu_dialog/fxmanifest.lua b/[core]/esx_menu_dialog/fxmanifest.lua index 55ade7e8..62188ede 100644 --- a/[core]/esx_menu_dialog/fxmanifest.lua +++ b/[core]/esx_menu_dialog/fxmanifest.lua @@ -4,7 +4,7 @@ game 'gta5' description 'ESX Menu Dialog' lua54 'yes' -version '1.9.4' +version '1.9.5' client_scripts { '@es_extended/imports.lua', diff --git a/[core]/esx_menu_dialog/html/css/app.css b/[core]/esx_menu_dialog/html/css/app.css index c2f590c4..20b39923 100644 --- a/[core]/esx_menu_dialog/html/css/app.css +++ b/[core]/esx_menu_dialog/html/css/app.css @@ -1,132 +1,132 @@ @import url("https://fonts.googleapis.com/css?family=Montserrat&display=swap"); #controls { - font-family: montserrat; - font-size: 3em; - color: #fff; - position: absolute; - bottom: 40; - right: 40; + font-family: montserrat; + font-size: 3em; + color: #fff; + position: absolute; + bottom: 40; + right: 40; } .controls { - display: none; + display: none; } .dialog { - font-family: montserrat; - background: rgba(33, 33, 33, 0.8); - color: #fff; - position: absolute; - border-top-left-radius: 5px; - border-top-right-radius: 5px; - overflow: hidden; - top: 50%; - left: 50%; - width: 600px; - height: 152px; - transform: translate(-50%, -50%); + font-family: montserrat; + background: rgba(33, 33, 33, 0.8); + color: #fff; + position: absolute; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + overflow: hidden; + top: 50%; + left: 50%; + width: 600px; + height: 152px; + transform: translate(-50%, -50%); } .head { - display: flex; - flex-basis: 100%; - align-items: center; - color: #fff; + display: flex; + flex-basis: 100%; + align-items: center; + color: #fff; } .dialog.big { - height: 200px; + height: 200px; } .dialog .head { - background: rgba(25, 25, 25, 0.9); - text-align: center; - height: 40px; + background: rgba(25, 25, 25, 0.9); + text-align: center; + height: 40px; } .dialog .head span::before { - content: ""; - display: inline-block; - height: 100%; - vertical-align: middle; + content: ""; + display: inline-block; + height: 100%; + vertical-align: middle; } .dialog input[type="text"] { - width: 60%; - height: 32px; - outline: 0; - background: none; - text-align: center; - margin-top: 26px; - margin-left: 125px; - font-size: large; - transition: all 0.2s ease-in-out; - color: white; - border: 0.5px solid #ffffff3b; - border-radius: 0px; + width: 60%; + height: 32px; + outline: 0; + background: none; + text-align: center; + margin-top: 26px; + margin-left: 125px; + font-size: large; + transition: all 0.2s ease-in-out; + color: white; + border: 0.5px solid #ffffff3b; + border-radius: 0px; } .dialog input[type="text"]:active, .dialog input[type="text"]:hover { - color: white; + color: white; } .dialog textarea { - width: 100%; - height: 128px; + width: 100%; + height: 128px; } .dialog button[name="submit"] { - width: 17.6%; - height: 32px; - margin-left: 160px; - font-weight: 300; - color: rgb(37, 34, 53); - border-radius: 10px; - text-transform: uppercase; - background: rgb(50, 79, 208); - outline: 0; - border: none; - transition: all 0.2s ease-in-out; + width: 17.6%; + height: 32px; + margin-left: 160px; + font-weight: 300; + color: rgb(37, 34, 53); + border-radius: 10px; + text-transform: uppercase; + background: rgb(50, 79, 208); + outline: 0; + border: none; + transition: all 0.2s ease-in-out; } .dialog button { - z-index: 9999; - transform: translate(-0%, 50%); + z-index: 9999; + transform: translate(-0%, 50%); } .dialog button[name="cancel"] { - width: 17.6%; - height: 32px; - margin-left: 60px; - border: none; - text-transform: uppercase; - font-weight: 200; - border-radius: 10px; - color: rgb(53, 34, 34); - outline: 0; - background: #c74545; - transition: all 0.2s ease-in-out; + width: 17.6%; + height: 32px; + margin-left: 60px; + border: none; + text-transform: uppercase; + font-weight: 200; + border-radius: 10px; + color: rgb(53, 34, 34); + outline: 0; + background: #c74545; + transition: all 0.2s ease-in-out; } .dialog button[name="cancel"]:hover { - letter-spacing: 1px; - color: #ffffff; - width: 17.6%; + letter-spacing: 1px; + color: #ffffff; + width: 17.6%; } .dialog button[name="submit"]:hover { - letter-spacing: 1px; - color: white; - width: 17.6%; + letter-spacing: 1px; + color: white; + width: 17.6%; } .head::before, .head::after { - content: ""; - flex-grow: 1; - background: #00e1ff; - height: 2px; - margin: 0px 3px; + content: ""; + flex-grow: 1; + background: #00e1ff; + height: 2px; + margin: 0px 3px; } diff --git a/[core]/esx_menu_dialog/html/js/app.js b/[core]/esx_menu_dialog/html/js/app.js index 5186bcf7..9cbdf2ba 100644 --- a/[core]/esx_menu_dialog/html/js/app.js +++ b/[core]/esx_menu_dialog/html/js/app.js @@ -1,184 +1,181 @@ (function () { - let MenuTpl = - '