diff --git a/[SQL]/legacy.sql b/[SQL]/legacy.sql index 18f4481b..848c0fa3 100644 --- a/[SQL]/legacy.sql +++ b/[SQL]/legacy.sql @@ -1,3 +1,5 @@ +-- ESX Tables + CREATE TABLE `addon_account` ( `name` varchar(60) NOT NULL, `label` varchar(100) NOT NULL, @@ -1012,4 +1014,4 @@ CREATE TABLE IF NOT EXISTS `banking` ( PRIMARY KEY (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; -ALTER TABLE `users` ADD COLUMN `pincode` INT NULL; \ No newline at end of file +ALTER TABLE `users` ADD COLUMN `pincode` INT NULL; diff --git a/[core]/cron/README.md b/[core]/cron/README.md index e5291b69..c330a433 100644 --- a/[core]/cron/README.md +++ b/[core]/cron/README.md @@ -1,4 +1,4 @@ -

[ESX] Cron

Discord - Website - Documentation +

[ESX] Cron

Discord - Website - Documentation A simple, but vital, resource that allows resources to Run tasks at specific intervals. diff --git a/[core]/cron/server/main.lua b/[core]/cron/server/main.lua index fb47a435..e82df4fe 100644 --- a/[core]/cron/server/main.lua +++ b/[core]/cron/server/main.lua @@ -9,39 +9,39 @@ function RunAt(h, m, cb) } end -function GetTime() - local timestamp = os.time() - local d = os.date('*t', timestamp).wday - local h = tonumber(os.date('%H', timestamp)) - local m = tonumber(os.date('%M', timestamp)) - - return { - d = d, - h = h, - m = m - } +function GetUnixTimestamp() + return os.time() end -function OnTime(d, h, m) +function OnTime(time) for i = 1, #Jobs, 1 do - if Jobs[i].h == h and Jobs[i].m == m then - Jobs[i].cb(d, h, m) + local scheduledTimestamp = os.time({ + hour = Jobs[i].h, + minute = Jobs[i].m, + second = 0, -- Assuming tasks run at the start of the minute + day = os.date('%d', time), + month = os.date('%m', time), + year = os.date('%Y', time) + }) + + if time >= scheduledTimestamp and (not LastTime or LastTime < scheduledTimestamp) then + Jobs[i].cb(Jobs[i].h, Jobs[i].m) end end end function Tick() - local time = GetTime() + local time = GetUnixTimestamp() - if time.h ~= LastTime.h or time.m ~= LastTime.m then - OnTime(time.d, time.h, time.m) + if not LastTime or os.date('%M', time) ~= os.date('%M', LastTime) then + OnTime(time) LastTime = time end SetTimeout(60000, Tick) end -LastTime = GetTime() +LastTime = GetUnixTimestamp() Tick() diff --git a/[core]/es_extended/client/functions.lua b/[core]/es_extended/client/functions.lua index af1c9183..50300ab4 100644 --- a/[core]/es_extended/client/functions.lua +++ b/[core]/es_extended/client/functions.lua @@ -70,17 +70,17 @@ function ESX.Progressbar(message, length, Options) print("[^1ERROR^7] ^5ESX Progressbar^7 is Missing!") end -function ESX.ShowNotification(message, type, length) +function ESX.ShowNotification(message, notifyType, length) if GetResourceState("esx_notify") ~= "missing" then - return exports["esx_notify"]:Notify(type, length, message) + return exports["esx_notify"]:Notify(notifyType, length, message) end print("[^1ERROR^7] ^5ESX Notify^7 is Missing!") end -function ESX.TextUI(message, type) +function ESX.TextUI(message, notifyType) if GetResourceState("esx_textui") ~= "missing" then - return exports["esx_textui"]:TextUI(message, type) + return exports["esx_textui"]:TextUI(message, notifyType) end print("[^1ERROR^7] ^5ESX TextUI^7 is Missing!") @@ -140,40 +140,23 @@ ESX.HashString = function(str) return input_map end -if GetResourceState("esx_context") ~= "missing" then - function ESX.OpenContext(...) - exports["esx_context"]:Open(...) - end +local contextAvailable = GetResourceState("esx_context") ~= "missing" - function ESX.PreviewContext(...) - exports["esx_context"]:Preview(...) - end - - function ESX.CloseContext(...) - exports["esx_context"]:Close(...) - end - - function ESX.RefreshContext(...) - exports["esx_context"]:Refresh(...) - end -else - function ESX.OpenContext() - print("[^1ERROR^7] Tried to ^5open^7 context menu, but ^5esx_context^7 is missing!") - end - - function ESX.PreviewContext() - print("[^1ERROR^7] Tried to ^5preview^7 context menu, but ^5esx_context^7 is missing!") - end - - function ESX.CloseContext() - print("[^1ERROR^7] Tried to ^5close^7 context menu, but ^5esx_context^7 is missing!") - end - - function ESX.RefreshContext() - print("[^1ERROR^7] Tried to ^5Refresh^7 context menu, but ^5esx_context^7 is missing!") - end +function ESX.OpenContext(...) + return contextAvailable and exports["esx_context"]:Open(...) or not contextAvailable and print("[^1ERROR^7] Tried to ^5open^7 context menu, but ^5esx_context^7 is missing!") end +function ESX.PreviewContext(...) + return contextAvailable and exports["esx_context"]:Preview(...) or not contextAvailable and print("[^1ERROR^7] Tried to ^5preview^7 context menu, but ^5esx_context^7 is missing!") +end + +function ESX.CloseContext(...) + return contextAvailable and exports["esx_context"]:Close(...) or not contextAvailable and print("[^1ERROR^7] Tried to ^5close^7 context menu, but ^5esx_context^7 is missing!") +end + +function ESX.RefreshContext(...) + return contextAvailable and exports["esx_context"]:Refresh(...) or not contextAvailable and print("[^1ERROR^7] Tried to ^5Refresh^7 context menu, but ^5esx_context^7 is missing!") +end ESX.RegisterInput = function(command_name, label, input_group, key, on_press, on_release) RegisterCommand(on_release ~= nil and "+" .. command_name or command_name, on_press) @@ -184,18 +167,19 @@ ESX.RegisterInput = function(command_name, label, input_group, key, on_press, on RegisterKeyMapping(on_release ~= nil and "+" .. command_name or command_name, label, input_group, key) end -function ESX.UI.Menu.RegisterType(type, open, close) - ESX.UI.Menu.RegisteredTypes[type] = { +function ESX.UI.Menu.RegisterType(menuType, open, close) + ESX.UI.Menu.RegisteredTypes[menuType] = { open = open, close = close } end -function ESX.UI.Menu.Open(type, namespace, name, data, submit, cancel, change, close) +function ESX.UI.Menu.Open(menuType, namespace, name, data, submit, cancel, change, close) local menu = {} - menu.type = type + menu.type = menuType menu.namespace = namespace + menu.resourceName = (GetInvokingResource() or "Unknown") menu.name = name menu.data = data menu.submit = submit @@ -203,11 +187,11 @@ 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) + ESX.UI.Menu.RegisteredTypes[menuType].close(namespace, name) for i = 1, #ESX.UI.Menu.Opened, 1 do if ESX.UI.Menu.Opened[i] then - if ESX.UI.Menu.Opened[i].type == type and ESX.UI.Menu.Opened[i].namespace == namespace and + if ESX.UI.Menu.Opened[i].type == menuType and ESX.UI.Menu.Opened[i].namespace == namespace and ESX.UI.Menu.Opened[i].name == name then ESX.UI.Menu.Opened[i] = nil end @@ -238,7 +222,7 @@ function ESX.UI.Menu.Open(type, namespace, name, data, submit, cancel, change, c end menu.refresh = function() - ESX.UI.Menu.RegisteredTypes[type].open(namespace, name, menu.data) + ESX.UI.Menu.RegisteredTypes[menuType].open(namespace, name, menu.data) end menu.setElement = function(i, key, val) @@ -267,15 +251,15 @@ function ESX.UI.Menu.Open(type, namespace, name, data, submit, cancel, change, c end ESX.UI.Menu.Opened[#ESX.UI.Menu.Opened + 1] = menu - ESX.UI.Menu.RegisteredTypes[type].open(namespace, name, data) + ESX.UI.Menu.RegisteredTypes[menuType].open(namespace, name, data) return menu end -function ESX.UI.Menu.Close(type, namespace, name) +function ESX.UI.Menu.Close(menuType, namespace, name) for i = 1, #ESX.UI.Menu.Opened, 1 do if ESX.UI.Menu.Opened[i] then - if ESX.UI.Menu.Opened[i].type == type and ESX.UI.Menu.Opened[i].namespace == namespace and + if ESX.UI.Menu.Opened[i].type == menuType and ESX.UI.Menu.Opened[i].namespace == namespace and ESX.UI.Menu.Opened[i].name == name then ESX.UI.Menu.Opened[i].close() ESX.UI.Menu.Opened[i] = nil @@ -293,10 +277,10 @@ function ESX.UI.Menu.CloseAll() end end -function ESX.UI.Menu.GetOpened(type, namespace, name) +function ESX.UI.Menu.GetOpened(menuType, namespace, name) for i = 1, #ESX.UI.Menu.Opened, 1 do if ESX.UI.Menu.Opened[i] then - if ESX.UI.Menu.Opened[i].type == type and ESX.UI.Menu.Opened[i].namespace == namespace and + if ESX.UI.Menu.Opened[i].type == menuType and ESX.UI.Menu.Opened[i].namespace == namespace and ESX.UI.Menu.Opened[i].name == name then return ESX.UI.Menu.Opened[i] end @@ -308,8 +292,8 @@ function ESX.UI.Menu.GetOpenedMenus() return ESX.UI.Menu.Opened end -function ESX.UI.Menu.IsOpen(type, namespace, name) - return ESX.UI.Menu.GetOpened(type, namespace, name) ~= nil +function ESX.UI.Menu.IsOpen(menuType, namespace, name) + return ESX.UI.Menu.GetOpened(menuType, namespace, name) ~= nil end function ESX.UI.ShowInventoryItemNotification(add, item, count) @@ -620,11 +604,6 @@ function ESX.Game.GetVehicleProperties(vehicle) 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)) @@ -689,7 +668,6 @@ function ESX.Game.GetVehicleProperties(vehicle) neonColor = table.pack(GetVehicleNeonLightsColour(vehicle)), extras = extras, - driftTyresEnabled = driftTyresEnabled, tyreSmokeColor = table.pack(GetVehicleTyreSmokeColor(vehicle)), modSpoilers = GetVehicleMod(vehicle, 0), @@ -830,10 +808,6 @@ 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 @@ -1032,7 +1006,7 @@ function ESX.Game.Utils.DrawText3D(coords, text, size, font) local fov = (1 / GetGameplayCamFov()) * 100 scale = scale * fov - SetTextScale(0.0 * scale, 0.55 * scale) + SetTextScale(0.0, 0.55 * scale) SetTextFont(font) SetTextProportional(1) SetTextColour(255, 255, 255, 215) @@ -1062,7 +1036,7 @@ 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' } } local currentWeight = 0 @@ -1101,7 +1075,10 @@ function ESX.ShowInventory() end end - for _, v in ipairs(Config.Weapons) do + elements[1].title = TranslateCap('inventory', currentWeight, Config.MaxWeight) + + for i=1, #Config.Weapons do + local v = Config.Weapons[i] local weaponHash = joaat(v.name) if HasPedGotWeapon(playerPed, weaponHash, false) then @@ -1120,14 +1097,8 @@ function ESX.ShowInventory() canRemove = true } end - end - - elements[#elements + 1] = { - unselectable = true, - icon = "fas fa-weight", - title = "Current Weight: " .. currentWeight - } - + end + ESX.CloseContext() ESX.OpenContext("right", elements, function(_, element) @@ -1182,7 +1153,7 @@ function ESX.ShowInventory() } ESX.OpenContext("right", elements2, function(_, element2) - local item, type = element2.value, element2.type + local item, itemType = element2.value, element2.type if element2.action == "give" then local playersNearby = ESX.Game.GetPlayersInArea(GetEntityCoords(playerPed), 3.0) @@ -1215,8 +1186,8 @@ function ESX.ShowInventory() local selectedPlayerPed = GetPlayerPed(selectedPlayer) if IsPedOnFoot(selectedPlayerPed) and not IsPedFalling(selectedPlayerPed) then - if type == 'item_weapon' then - TriggerServerEvent('esx:giveInventoryItem', selectedPlayerId, type, item, nil) + if itemType == 'item_weapon' then + TriggerServerEvent('esx:giveInventoryItem', selectedPlayerId, itemType, item, nil) ESX.CloseContext() else local elementsG = { @@ -1229,7 +1200,7 @@ function ESX.ShowInventory() local quantity = tonumber(menuG.eles[2].inputValue) if quantity and quantity > 0 and element.count >= quantity then - TriggerServerEvent('esx:giveInventoryItem', selectedPlayerId, type, item, quantity) + TriggerServerEvent('esx:giveInventoryItem', selectedPlayerId, itemType, item, quantity) ESX.CloseContext() else ESX.ShowNotification(TranslateCap('amount_invalid')) @@ -1251,12 +1222,12 @@ function ESX.ShowInventory() local dict, anim = 'weapons@first_person@aim_rng@generic@projectile@sticky_bomb@', 'plant_floor' ESX.Streaming.RequestAnimDict(dict) - if type == 'item_weapon' then + if itemType == 'item_weapon' then ESX.CloseContext() TaskPlayAnim(playerPed, dict, anim, 8.0, 1.0, 1000, 16, 0.0, false, false, false) RemoveAnimDict(dict) Wait(1000) - TriggerServerEvent('esx:removeInventoryItem', type, item) + TriggerServerEvent('esx:removeInventoryItem', itemType, item) else local elementsR = { { unselectable = true, icon = "fas fa-trash", title = element.title }, @@ -1272,7 +1243,7 @@ function ESX.ShowInventory() TaskPlayAnim(playerPed, dict, anim, 8.0, 1.0, 1000, 16, 0.0, false, false, false) RemoveAnimDict(dict) Wait(1000) - TriggerServerEvent('esx:removeInventoryItem', type, item, quantity) + TriggerServerEvent('esx:removeInventoryItem', itemType, item, quantity) else ESX.ShowNotification(TranslateCap('amount_invalid')) end @@ -1328,8 +1299,8 @@ function ESX.ShowInventory() end RegisterNetEvent('esx:showNotification') -AddEventHandler('esx:showNotification', function(msg, type, length) - ESX.ShowNotification(msg, type, length) +AddEventHandler('esx:showNotification', function(msg, notifyType, length) + ESX.ShowNotification(msg, notifyType, length) end) RegisterNetEvent('esx:showAdvancedNotification') @@ -1343,13 +1314,60 @@ AddEventHandler('esx:showHelpNotification', function(msg, thisFrame, beep, durat ESX.ShowHelpNotification(msg, thisFrame, beep, duration) end) +AddEventHandler('onResourceStop', function(resourceName) + for i = 1, #ESX.UI.Menu.Opened, 1 do + if ESX.UI.Menu.Opened[i] then + if ESX.UI.Menu.Opened[i].resourceName == resourceName or ESX.UI.Menu.Opened[i].namespace == resourceName then + ESX.UI.Menu.Opened[i].close() + ESX.UI.Menu.Opened[i] = nil + end + end + end +end) +-- Credits to txAdmin for the list. +local mismatchedTypes = { + [`airtug`] = "automobile", -- trailer + [`avisa`] = "submarine", -- boat + [`blimp`] = "heli", -- plane + [`blimp2`] = "heli", -- plane + [`blimp3`] = "heli", -- plane + [`caddy`] = "automobile", -- trailer + [`caddy2`] = "automobile", -- trailer + [`caddy3`] = "automobile", -- trailer + [`chimera`] = "automobile", -- bike + [`docktug`] = "automobile", -- trailer + [`forklift`] = "automobile", -- trailer + [`kosatka`] = "submarine", -- boat + [`mower`] = "automobile", -- trailer + [`policeb`] = "bike", -- automobile + [`ripley`] = "automobile", -- trailer + [`rrocket`] = "automobile", -- bike + [`sadler`] = "automobile", -- trailer + [`sadler2`] = "automobile", -- trailer + [`scrap`] = "automobile", -- trailer + [`slamtruck`] = "automobile", -- trailer + [`Stryder`] = "automobile", -- bike + [`submersible`] = "submarine", -- boat + [`submersible2`] = "submarine", -- boat + [`thruster`] = "heli", -- automobile + [`towtruck`] = "automobile", -- trailer + [`towtruck2`] = "automobile", -- trailer + [`tractor`] = "automobile", -- trailer + [`tractor2`] = "automobile", -- trailer + [`tractor3`] = "automobile", -- trailer + [`trailersmall2`] = "trailer", -- automobile + [`utillitruck`] = "automobile", -- trailer + [`utillitruck2`] = "automobile", -- trailer + [`utillitruck3`] = "automobile", -- trailer +} + ---@param model number|string ---@return string function ESX.GetVehicleType(model) model = type(model) == 'string' and joaat(model) or model - - if model == `submersible` or model == `submersible2` then - return 'submarine' + if not IsModelInCdimage(model) then return end + if mismatchedTypes[model] then + return mismatchedTypes[model] end local vehicleType = GetVehicleClassFromName(model) diff --git a/[core]/es_extended/client/main.lua b/[core]/es_extended/client/main.lua index 7cc84fc9..3804cfc1 100644 --- a/[core]/es_extended/client/main.lua +++ b/[core]/es_extended/client/main.lua @@ -59,10 +59,18 @@ AddEventHandler('esx:playerLoaded', function(xPlayer, isNew, skin) end local playerId = PlayerId() + local metadata = ESX.PlayerData.metadata + if metadata.health then + SetEntityHealth(ESX.PlayerData.ped, metadata.health) + end - -- RemoveHudCommonents - for i = 1, #(Config.RemoveHudCommonents) do - if Config.RemoveHudCommonents[i] then + if metadata.armor and metadata.armor > 0 then + SetPedArmour(ESX.PlayerData.ped, metadata.armor) + end + + -- RemoveHudComponents + for i = 1, #(Config.RemoveHudComponents) do + if Config.RemoveHudComponents[i] then SetHudComponentPosition(i, 999999.0, 999999.0) end end @@ -84,11 +92,15 @@ AddEventHandler('esx:playerLoaded', function(xPlayer, isNew, skin) end) end - if Config.DisableHealthRegeneration or Config.DisableWeaponWheel or Config.DisableAimAssist or Config.DisableVehicleRewards then + if Config.DisableHealthRegeneration then + SetPlayerHealthRechargeMultiplier(playerId, 0.0) + end + + if Config.DisableWeaponWheel or Config.DisableAimAssist or Config.DisableVehicleRewards then CreateThread(function() while true do - if Config.DisableHealthRegeneration then - SetPlayerHealthRechargeMultiplier(playerId, 0.0) + if Config.DisableDisplayAmmo then + DisplayAmmoThisFrame(false) end if Config.DisableWeaponWheel then @@ -331,7 +343,7 @@ if not Config.OxInventory then end) RegisterNetEvent('esx:removeWeapon') - AddEventHandler('esx:removeWeapon', function(weapon) + AddEventHandler('esx:removeWeapon', function() print("[^1ERROR^7] event ^5'esx:removeWeapon'^7 Has Been Removed. Please use ^5xPlayer.removeWeapon^7 Instead!") end) @@ -349,7 +361,7 @@ end) if not Config.OxInventory then RegisterNetEvent('esx:createPickup') - AddEventHandler('esx:createPickup', function(pickupId, label, coords, type, name, components, tintIndex) + AddEventHandler('esx:createPickup', function(pickupId, label, coords, itemType, name, components, tintIndex) local function setObjectProperties(object) SetEntityAsMissionEntity(object, true, false) PlaceObjectOnGroundProperly(object) @@ -360,11 +372,11 @@ if not Config.OxInventory then obj = object, label = label, inRange = false, - coords = vector3(coords.x, coords.y, coords.z) + coords = coords } end - if type == 'item_weapon' then + if itemType == 'item_weapon' then local weaponHash = joaat(name) ESX.Streaming.RequestWeaponAsset(weaponHash) local pickupObject = CreateWeaponObject(weaponHash, 50, coords.x, coords.y, coords.z, true, 1.0, 0) @@ -384,7 +396,7 @@ if not Config.OxInventory then RegisterNetEvent('esx:createMissingPickups') 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 + TriggerEvent('esx:createPickup', pickupId, pickup.label, vector3(pickup.coords.x, pickup.coords.y, pickup.coords.z - 1.0), pickup.type, pickup.name , pickup.components, pickup.tintIndex) end end) @@ -503,7 +515,7 @@ if not Config.OxInventory then end) end ------ Admin commnads from esx_adminplus +----- Admin commands from esx_adminplus RegisterNetEvent("esx:tpm") AddEventHandler("esx:tpm", function() @@ -655,7 +667,7 @@ AddEventHandler("esx:noclip", function() CreateThread(noclipThread) end - ESX.ShowNotification(TranslateCap('noclip_message', noclip and "enabled" or "disabled"), true, false, 140) + ESX.ShowNotification(TranslateCap('noclip_message', noclip and Translate('enabled') or Translate('disabled')), true, false, 140) end) end) @@ -664,6 +676,16 @@ AddEventHandler("esx:killPlayer", function() SetEntityHealth(ESX.PlayerData.ped, 0) end) +RegisterNetEvent("esx:repairPedVehicle") +AddEventHandler("esx:repairPedVehicle", function() + local ped = ESX.PlayerData.ped + local vehicle = GetVehiclePedIsIn(ped, false) + SetVehicleEngineHealth(vehicle, 1000) + SetVehicleEngineOn(vehicle, true, true) + SetVehicleFixed(vehicle) + SetVehicleDirtLevel(vehicle, 0) +end) + RegisterNetEvent("esx:freezePlayer") AddEventHandler("esx:freezePlayer", function(input) local player = PlayerId() @@ -682,23 +704,6 @@ ESX.RegisterClientCallback("esx:GetVehicleType", function(cb, model) cb(ESX.GetVehicleType(model)) end) -local DoNotUse = { - 'essentialmode', - 'es_admin2', - 'basic-gamemode', - 'mapmanager', - 'fivem-map-skater', - 'fivem-map-hipster', - 'qb-core', - 'default_spawnpoint', -} - -for i = 1, #DoNotUse do - if GetResourceState(DoNotUse[i]) == 'started' or GetResourceState(DoNotUse[i]) == 'starting' then - print("[^1ERROR^7] YOU ARE USING A RESOURCE THAT WILL BREAK ^1ESX^7, PLEASE REMOVE ^5" .. DoNotUse[i] .. "^7") - end -end - -RegisterNetEvent('esx:updatePlayerData', function(key, val) +AddStateBagChangeHandler('metadata', 'player:' .. tostring(GetPlayerServerId(PlayerId())), function(_, key, val) ESX.SetPlayerData(key, val) end) diff --git a/[core]/es_extended/client/modules/actions.lua b/[core]/es_extended/client/modules/actions.lua index 219c3508..2e4e0e67 100644 --- a/[core]/es_extended/client/modules/actions.lua +++ b/[core]/es_extended/client/modules/actions.lua @@ -15,12 +15,16 @@ local function GetData(vehicle) end local model = GetEntityModel(vehicle) local displayName = GetDisplayNameFromVehicleModel(model) - local netId = VehToNet(vehicle) + local netId = vehicle + if NetworkGetEntityIsNetworked(vehicle) then + netId = VehToNet(vehicle) + end return displayName, netId end CreateThread(function() while true do + ESX.SetPlayerData('coords',GetEntityCoords(playerPed)) if playerPed ~= PlayerPedId() then playerPed = PlayerPedId() ESX.SetPlayerData('ped', playerPed) diff --git a/[core]/es_extended/config.lua b/[core]/es_extended/config.lua index a2bf5b6a..574876b3 100644 --- a/[core]/es_extended/config.lua +++ b/[core]/es_extended/config.lua @@ -18,6 +18,7 @@ Config.Accounts = { Config.StartingAccountMoney = { bank = 50000 } +Config.StartingInventoryItems = false -- table/false 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 }, @@ -57,7 +58,8 @@ 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 = { +Config.DisableDisplayAmmo = false -- Disable ammunition display +Config.RemoveHudComponents = { [1] = false, --WANTED_STARS, [2] = false, --WEAPON_ICON [3] = false, --CASH diff --git a/[core]/es_extended/config.weapons.lua b/[core]/es_extended/config.weapons.lua index 83bdd8d7..89723d5c 100644 --- a/[core]/es_extended/config.weapons.lua +++ b/[core]/es_extended/config.weapons.lua @@ -824,6 +824,21 @@ Config.Weapons = { { name = 'camo_finish11', label = TranslateCap('component_camo_finish11'), hash = `COMPONENT_SPECIALCARBINE_MK2_CAMO_IND_01` } } }, + { + name = 'WEAPON_HEAVYRIFLE', + label = TranslateCap('weapon_heavyrifle'), + ammo = {label = TranslateCap('ammo_rounds'), hash = `AMMO_RIFLE`}, + tints = Config.DefaultWeaponTints, + components = { + {name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_HEAVYRIFLE_CLIP_01`}, + {name = 'clip_extended', label = TranslateCap('component_clip_extended'), hash = `COMPONENT_HEAVYRIFLE_CLIP_02`}, + {name = 'scope_holo', label = TranslateCap('component_scope_holo'), hash = `COMPONENT_HEAVYRIFLE_SIGHT_01` }, + {name = 'scope', label = TranslateCap('component_scope'), hash = `COMPONENT_AT_SCOPE_MEDIUM` }, + {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`} + } + }, -- Sniper { name = 'WEAPON_HEAVYSNIPER', @@ -1006,4 +1021,4 @@ Config.Weapons = { { name = 'clip_default', label = TranslateCap('component_clip_default'), hash = `COMPONENT_RAILGUNXM3_CLIP_01` }, }, }, -} +} \ No newline at end of file diff --git a/[core]/es_extended/fxmanifest.lua b/[core]/es_extended/fxmanifest.lua index 6dd7df0e..8e9e178e 100644 --- a/[core]/es_extended/fxmanifest.lua +++ b/[core]/es_extended/fxmanifest.lua @@ -1,4 +1,4 @@ -fx_version 'adamant' +fx_version 'cerulean' game 'gta5' description 'ES Extended' diff --git a/[core]/es_extended/locales/cs.lua b/[core]/es_extended/locales/cs.lua index 71bd3ea5..e658fc61 100644 --- a/[core]/es_extended/locales/cs.lua +++ b/[core]/es_extended/locales/cs.lua @@ -52,6 +52,7 @@ Locales["cs"] = { ["act_imp"] = "Nelze provést", ["in_vehicle"] = "Nelze provést, hráč je v autě", + ["not_in_vehicle"] = "Cannot Perform Action, Player isn't in a vehicle", -- Commands ['command_bring'] = 'Přivolat si hráče k sobě', @@ -59,6 +60,9 @@ Locales["cs"] = { ['command_car_car'] = 'Zadej jméno vozidla nebo spawnname', ['command_cardel'] = 'Odstranění vozidla v okolí', ['command_cardel_radius'] = 'Odstranění vozidla v určeném dosahu', + ['command_repair'] = 'Repair your vehicle', + ['command_repair_success'] = 'Successfully repaired vehicle', + ['command_repair_success_target'] = 'An admin repaired your vehicle', ['command_clear'] = 'Vymazat text v chatu', ['command_clearall'] = 'Vymazat chet pro všechny hráče', ['command_clearinventory'] = 'Vymazat všechny věci z invetáře hráče', @@ -194,6 +198,7 @@ Locales["cs"] = { ["weapon_militaryrifle"] = "Military Rifle", ["weapon_specialcarbine"] = "Special Carbine", ["weapon_specialcarbine_mk2"] = "Special Carbine MK2", + ["weapon_heavyrifle"] = "Heavy Rifle", -- Not Translated -- Sniper ["weapon_heavysniper"] = "Heavy Sniper", diff --git a/[core]/es_extended/locales/da.lua b/[core]/es_extended/locales/da.lua deleted file mode 100644 index 518778bf..00000000 --- a/[core]/es_extended/locales/da.lua +++ /dev/null @@ -1,372 +0,0 @@ -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 285fe595..414aefaf 100644 --- a/[core]/es_extended/locales/de.lua +++ b/[core]/es_extended/locales/de.lua @@ -52,6 +52,7 @@ Locales["de"] = { ["act_imp"] = "Du kannst diese Aktion nicht ausführen!", ["in_vehicle"] = "Du kannst diese Aktion nicht ausführen! Person ist in einem Fahrzeug", + ["not_in_vehicle"] = "Cannot Perform Action, Player isn't in a vehicle", -- Commands ['command_bring'] = 'Person zu dir bringen', @@ -59,6 +60,9 @@ Locales["de"] = { ['command_car_car'] = 'Fahrzeug Model oder Hash', ['command_cardel'] = 'Fahrzeuge entfernen', ['command_cardel_radius'] = 'Entfernt alle Fahrzeuge in einem bestimmten Radius', + ['command_repair'] = 'Repair your vehicle', + ['command_repair_success'] = 'Successfully repaired vehicle', + ['command_repair_success_target'] = 'An admin repaired your vehicle', ['command_clear'] = 'Textchat leeren', ['command_clearall'] = 'Textchat leeren für alle Spieler leeren', ['command_clearinventory'] = 'Alle Items von dem Inventar eines Spielers entfernen', @@ -97,6 +101,10 @@ Locales["de"] = { ['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', + ['command_removeaccountmoney'] = 'Entfernt Geld von einem bestimmten Account', + ['command_removeaccountmoney_account'] = 'Account von wem es entfernt werden soll', + ['command_removeaccountmoney_amount'] = 'Anzahl die Entfernt werden soll', + ['command_removeaccountmoney_invalid'] = 'Name des Accounts Ungültig', ['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)', @@ -200,6 +208,7 @@ Locales["de"] = { ["weapon_militaryrifle"] = "Militärgewehr", ["weapon_specialcarbine"] = "Spezialkarabiner", ["weapon_specialcarbine_mk2"] = "Spezialkarabiner MK2", + ["weapon_heavyrifle"] = "Schweres Gewehr", -- Sniper ["weapon_heavysniper"] = "Schwere Sniper", @@ -224,10 +233,10 @@ Locales["de"] = { ["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 + ['weapon_candycane'] = 'Zuckerstange', + ['weapon_acidpackage'] = 'Säure Paket', + ['weapon_pistolxm3'] = 'WM 29 Pistole', + ['weapon_railgunxm3'] = 'Railgun', -- Thrown ["weapon_ball"] = "Baseball", diff --git a/[core]/es_extended/locales/el.lua b/[core]/es_extended/locales/el.lua new file mode 100644 index 00000000..52dc72d4 --- /dev/null +++ b/[core]/es_extended/locales/el.lua @@ -0,0 +1,381 @@ +Locales["el"] = { + -- Inventory + ["inventory"] = "Αποθήκη ( Βάρος %s / %s )", + ["use"] = "Χρήση", + ["give"] = "Δώσε", + ["remove"] = "Πέτα", + ["return"] = "Επιστροφή", + ["give_to"] = "Δώσε σε", + ["amount"] = "Ποσότητα", + ["giveammo"] = "Δώσε σφαίρες", + ["amountammo"] = "Ποσότητα σφαιρών", + ["noammo"] = "Δεν υπάρχουν αρκετές σφαίρες!", + ["gave_item"] = "Δώσατε %sx %s στον/στην %s", + ["received_item"] = "Λάβατε %sx %s από τον/την %s", + ["gave_weapon"] = "Δίνετε %s στον/στην %s", + ["gave_weapon_ammo"] = "Δίνετε ~o~%sx %s για %s στον/στην %s", + ["gave_weapon_withammo"] = "Δίνετε %s με ~o~%sx %s στον/στην %s", + ["gave_weapon_hasalready"] = "Ο/Η %s έχει ήδη ένα %s", + ["gave_weapon_noweapon"] = "Ο/Η %s δεν έχει αυτό το όπλο", + ["received_weapon"] = "Λάβατε %s από τον/την %s", + ["received_weapon_ammo"] = "Λάβατε ~o~%sx %s για το %s από τον/την %s", + ["received_weapon_withammo"] = "Λάβατε %s για ~o~%sx %s από τον/την %s", + ["received_weapon_hasalready"] = "Ο/Η %s προσπάθησε να σας δώσει ένα %s, αλλά το έχετε ήδη", + ["received_weapon_noweapon"] = "Ο/Η %s προσπάθησε να σας δώσει σφαίρες για το %s, αλλά δεν έχετε αυτό το όπλο", + ["gave_account_money"] = "Δίνετε $%s (%s) στον/στην %s", + ["received_account_money"] = "Λάβατε $%s (%s) από τον/την %s", + ["amount_invalid"] = "Μη έγκυρη ποσότητα", + ["players_nearby"] = "Δεν υπάρχουν κοντινοί παίκτες", + ["ex_inv_lim"] = "Δεν είναι δυνατή η ενέργεια, υπέρβαση του μέγιστου βάρους των %s", +["imp_invalid_quantity"] = "Δεν είναι δυνατή η ενέργεια, η ποσότητα δεν είναι έγκυρη", +["imp_invalid_amount"] = "Δεν είναι δυνατή η ενέργεια, το ποσό δεν είναι έγκυρο", +["threw_standard"] = "Ρίχνοντας %sx %s", +["threw_account"] = "Ρίχνοντας $%s %s", +["threw_weapon"] = "Ρίχνοντας %s", +["threw_weapon_ammo"] = "Ρίχνοντας %s με ~o~%sx %s", +["threw_weapon_already"] = "Ήδη έχετε αυτό το όπλο", +["threw_cannot_pickup"] = "Η αποθήκη είναι γεμάτη, δεν μπορείτε να σηκώσετε!", +["threw_pickup_prompt"] = "Πατήστε E για να σηκώσετε", + +-- Key mapping +["keymap_showinventory"] = "Εμφάνιση Αποθήκης", + +-- Salary related +["received_salary"] = "Έχετε λάβει μισθό: $%s", +["received_help"] = "Έχετε λάβει το βοήθημά σας: $%s", +["company_nomoney"] = "Η εταιρεία στην οποία είστε απασχολούμενος/η δεν έχει αρκετά χρήματα για να καταβάλει τον μισθό σας", +["received_paycheck"] = "λάβατε μισθό", +["bank"] = "Τράπεζα Maze", +["account_bank"] = "Τραπεζικός Λογαριασμός", +["account_black_money"] = "Βρώμικα Χρήματα", +["account_money"] = "Μετρητά", + +["act_imp"] = "Δεν είναι δυνατή η εκτέλεση της ενέργειας", +["in_vehicle"] = "Δεν είναι δυνατή η εκτέλεση της ενέργειας, ο παίκτης βρίσκεται σε όχημα", +["not_in_vehicle"] = "Δεν είναι δυνατή η εκτέλεση της ενέργειας, ο παίκτης δεν βρίσκεται σε κάποιο όχημα", + +-- Commands +['command_bring'] = 'Φέρτε τον παίκτη σε εσάς', +['command_car'] = 'Κλήση οχήματος', +['command_car_car'] = 'Μοντέλο ή κωδικός οχήματος', +['command_cardel'] = 'Κατάργηση οχημάτων κοντά', +['command_cardel_radius'] = 'Καταργεί όλα τα οχήματα εντός της καθορισμένης ακτίνας', + ['command_repair'] = 'Επισκέυασε το όχημα σου', + ['command_repair_success'] = 'Το όχημα σου επισκευάστηκε', + ['command_repair_success_target'] = 'Ένας διαχειριστής επισκεύασε το όχημα σου', +['command_clear'] = 'Καθαρισμός κειμένου στο chat', +['command_clearall'] = 'Καθαρισμός κειμένου στο chat για όλους τους παίκτες', +['command_clearinventory'] = 'Κατάργηση όλων των αντικειμένων από την αποθήκη των παικτών', +['command_clearloadout'] = 'Κατάργηση όλων των όπλων από την εξάρτηση των παικτών', +['command_freeze'] = 'Πάγωμα ενός παίκτη', +['command_unfreeze'] = 'Ξεπάγωμα ενός παίκτη', +['command_giveaccountmoney'] = 'Δώστε χρήματα σε καθορισμένο λογαριασμό', +['command_giveaccountmoney_account'] = 'Λογαριασμός προς προσθήκη', +['command_giveaccountmoney_amount'] = 'Ποσό προς προσθήκη', +['command_giveaccountmoney_invalid'] = 'Μη έγκυρο όνομα λογαριασμού', +['command_removeaccountmoney'] = 'Κατάργηση χρημάτων από καθορισμένο λογαριασμό', +['command_removeaccountmoney_account'] = 'Λογαριασμός από τον οποίο θα καταργηθούν τα χρήματα', +['command_removeaccountmoney_amount'] = 'Ποσό προς αφαίρεση', +['command_removeaccountmoney_invalid'] = 'Μη έγκυρο όνομα λογαριασμού', +['command_giveitem'] = 'Δώστε σε έναν παίκτη ένα αντικείμενο', +['command_giveitem_item'] = 'Όνομα αντικειμένου', +['command_giveitem_count'] = 'Ποσότητα', +['command_giveweapon'] = 'Δώστε σε έναν παίκτη ένα όπλο', +['command_giveweapon_weapon'] = 'Όνομα όπλου', +['command_giveweapon_ammo'] = 'Ποσότητα πυρομαχικών', +['command_giveweapon_hasalready'] = 'Ο παίκτης έχει ήδη αυτό το όπλο', +['command_giveweaponcomponent'] = 'Δώστε σε έναν παίκτη μια εξάρτηση όπλου', +['command_giveweaponcomponent_component'] = 'Όνομα εξάρτησης', +['command_giveweaponcomponent_invalid'] = 'Μη έγκυρη εξάρτηση όπλου', +['command_giveweaponcomponent_hasalready'] = 'Ο παίκτης έχει ήδη αυτήν την εξάρτηση όπλου', +['command_giveweaponcomponent_missingweapon'] = 'Ο παίκτης δεν έχει αυτό το όπλο', +['command_goto'] = 'Τηλεμεταφέρεστε σε έναν παίκτη', +['command_kill'] = 'Σκοτώστε έναν παίκτη', +['command_save'] = 'Εξαναγκαστική αποθήκευση δεδομένων ενός παίκτη', +['command_saveall'] = 'Εξαναγκαστική αποθήκευση όλων των δεδομένων των παικτών', +['command_setaccountmoney'] = 'Ορίστε τα χρήματα σε έναν καθορισμένο λογαριασμό', +['command_setaccountmoney_amount'] = 'Ποσό', +['command_setcoords'] = 'Τηλεμεταφερθείτε σε καθορισμένες συντεταγμένες', +['command_setcoords_x'] = 'Τιμή X', +['command_setcoords_y'] = 'Τιμή Y', +['command_setcoords_z'] = 'Τιμή Z', +['command_setjob'] = 'Ορίστε το επάγγελμα ενός παίκτη', +['command_setjob_job'] = 'Όνομα', +['command_setjob_grade'] = 'Βαθμός επαγγέλματος', +['command_setjob_invalid'] = 'Το επάγγελμα, ο βαθμός ή και οι δύο είναι μη έγκυρα', +['command_setgroup'] = 'Ορίστε την ομάδα δικαιωμάτων ενός παίκτη', +['command_setgroup_group'] = 'Όνομα Ομάδας', +['commanderror_argumentmismatch'] = 'Μη έγκυρος αριθμός ορισμάτων (δόθηκαν %s, αναμενόμενα %s)', +['commanderror_argumentmismatch_number'] = 'Μη έγκυρος τύπος δεδομένων για το όρισμα #%s (δόθηκε συμβολοσειρά, αναμενόμενος αριθμός)', +['commanderror_argumentmismatch_string'] = 'Μη έγκυρος τύπος δεδομένων για το όρισμα #%s (δόθηκε αριθμός, αναμενόμενη συμβολοσειρά)', +['commanderror_invaliditem'] = 'Μη έγκυρο αντικείμενο', +['commanderror_invalidweapon'] = 'Μη έγκυρο όπλο', +['commanderror_console'] = 'Η εντολή δεν μπορεί να εκτελεστεί από την κονσόλα', +['commanderror_invalidcommand'] = 'Μη έγκυρη εντολή - /%s', +['commanderror_invalidplayerid'] = 'Ο καθορισμένος παίκτης δεν είναι συνδεδεμένος', +['commandgeneric_playerid'] = 'Αναγνωριστικό διακομιστή του παίκτη', +['command_giveammo_noweapon_found'] = 'Ο %s δεν έχει αυτό το όπλο', +['command_giveammo_weapon'] = 'Όνομα όπλου', +['command_giveammo_ammo'] = 'Ποσότητα πυρομαχικών', + ['tpm_nowaypoint'] = 'Δεν έχει οριστεί σημείο προορισμού.', + ['tpm_success'] = 'Επιτυχής τηλεμεταφορά', + + ['noclip_message'] = 'Το Noclip έχει %s', + ['enabled'] = '~g~ενεργοποιήθηκε~s~', + ['disabled'] = '~r~απενεργοποιήθηκε~s~', + + -- Ρυθμίσεις τοπικής γλώσσας + ["locale_digit_grouping_symbol"] = ",", + ["locale_currency"] = "£%s", + + -- Όπλα + + -- Χειροποίητα + ["weapon_dagger"] = "Στιλέτο", + ["weapon_bat"] = "Μπαστούνι", + ["weapon_battleaxe"] = "Πολεμική σείρα", + ["weapon_bottle"] = "Μπουκάλι", + ["weapon_crowbar"] = "Ροπαλάκι", + ["weapon_flashlight"] = "Φακός", + ["weapon_golfclub"] = "Γκολφ", + ["weapon_hammer"] = "Σφυρί", + ["weapon_hatchet"] = "Πέλεκυς", + ["weapon_knife"] = "Μαχαίρι", + ["weapon_knuckle"] = "Χειροπέδες", + ["weapon_machete"] = "Μαχαίρι μαχαιροπίρουνου", + ["weapon_nightstick"] = "Ρόπαλο νυχτερίδας", + ["weapon_wrench"] = "Ροκανίδι", + ["weapon_poolcue"] = "Καστήλα", + ["weapon_stone_hatchet"] = "Πέλεκυς από πέτρα", + ["weapon_switchblade"] = "Ξυραφάκι", + + -- Πιστόλια + ["weapon_appistol"] = "AP Πιστόλι", + ["weapon_ceramicpistol"] = "Κεραμικό πιστόλι", + ["weapon_combatpistol"] = "Πολεμικό πιστόλι", + ["weapon_doubleaction"] = "Διπλής δράσης Ριβόλβερ", + ["weapon_navyrevolver"] = "Ναυτικό Ρεβόλβερ", + ["weapon_flaregun"] = "Πιστόλι αστραπών", + ["weapon_gadgetpistol"] = "Πιστόλι συσκευών", + ["weapon_heavypistol"] = "Βαρύ πιστόλι", + ["weapon_revolver"] = "Βαρύ Ρεβόλβερ", + ["weapon_revolver_mk2"] = "Βαρύ Ρεβόλβερ MK2", + ["weapon_marksmanpistol"] = "Πιστόλι μονομάχου", + ["weapon_pistol"] = "Πιστόλι", + ["weapon_pistol_mk2"] = "Πιστόλι MK2", + ["weapon_pistol50"] = "Πιστόλι .50", + ["weapon_snspistol"] = "Πιστόλι SNS", + ["weapon_snspistol_mk2"] = "Πιστόλι SNS MK2", + ["weapon_stungun"] = "Ηλεκτροπληξία", + ["weapon_raypistol"] = "Up-N-Atomizer", + ["weapon_vintagepistol"] = "Βιομηχανικό πιστόλι", + + -- Καραμπίνες + ["weapon_assaultshotgun"] = "Πολεμική Καραμπίνα", + ["weapon_autoshotgun"] = "Αυτόματη Καραμπίνα", + ["weapon_bullpupshotgun"] = "Bullpup Καραμπίνα", + ["weapon_combatshotgun"] = "Καραμπίνα πολέμου", + ["weapon_dbshotgun"] = "Διπλής κάννης Καραμπίνα", + ["weapon_heavyshotgun"] = "Βαριά Καραμπίνα", + ["weapon_musket"] = "Μουσκέτα", + ["weapon_pumpshotgun"] = "Καραμπίνα αντλίας", + ["weapon_pumpshotgun_mk2"] = "Καραμπίνα αντλίας MK2", + ["weapon_sawnoffshotgun"] = "Καραμπίνα με κοντά κάννη", + + -- SMG & LMG + ["weapon_assaultsmg"] = "Πολεμικό SMG", + ["weapon_combatmg"] = "Πολεμικό MG", + ["weapon_combatmg_mk2"] = "Πολεμικό MG MK2", + ["weapon_combatpdw"] = "Πολεμικό PDW", + ["weapon_gusenberg"] = "Gusenberg Sweeper", + ["weapon_machinepistol"] = "Πιστόλι Αυτόματης Καραμπίνας", + ["weapon_mg"] = "MG", + ["weapon_microsmg"] = "Μικρό SMG", + ["weapon_minismg"] = "Μικρό SMG", + ["weapon_smg"] = "SMG", + ["weapon_smg_mk2"] = "SMG MK2", + ["weapon_raycarbine"] = "Ανεξίτηλο Hellbringer", + + -- Καραμπίνες + ["weapon_advancedrifle"] = "Προηγμένη Καραμπίνα", + ["weapon_assaultrifle"] = "Καραμπίνα Επίθεσης", + ["weapon_assaultrifle_mk2"] = "Καραμπίνα Επίθεσης MK2", + ["weapon_bullpuprifle"] = "Bullpup Καραμπίνα", + ["weapon_bullpuprifle_mk2"] = "Bullpup Καραμπίνα MK2", + ["weapon_carbinerifle"] = "Καραμπίνα", + ["weapon_carbinerifle_mk2"] = "Καραμπίνα MK2", + ["weapon_compactrifle"] = "Συμπαγής Καραμπίνα", + ["weapon_militaryrifle"] = "Στρατιωτική Καραμπίνα", + ["weapon_specialcarbine"] = "Ειδική Καραμπίνα", + ["weapon_specialcarbine_mk2"] = "Ειδική Καραμπίνα MK2", + + -- Κυνηγετικά + ["weapon_heavysniper"] = "Βαρύ Κυνηγετικό Ρίφλε", + ["weapon_heavysniper_mk2"] = "Βαρύ Κυνηγετικό Ρίφλε MK2", + ["weapon_marksmanrifle"] = "Ρίφλε Επαγγελματία Σκοπευτή", + ["weapon_marksmanrifle_mk2"] = "Ρίφλε Επαγγελματία Σκοπευτή MK2", + ["weapon_sniperrifle"] = "Κυνηγετικό Ρίφλε", + + -- Βαριά / Εκτοξευτές + ["weapon_compactlauncher"] = "Συμπαγής Εκτοξευτής", + ["weapon_firework"] = "Εκτοξευτής Πυροτεχνημάτων", + ["weapon_grenadelauncher"] = "Εκτοξευτής Γρανατών", + ["weapon_hominglauncher"] = "Εκτοξευτής Εξόρυξης", + ["weapon_minigun"] = "Minigun", + ["weapon_railgun"] = "Railgun", + ["weapon_rpg"] = "Εκτοξευτής Πυραύλων", + ["weapon_rayminigun"] = "Widowmaker", + + -- Επιπλέον Όπλα από το Criminal Enterprises DLC + ["weapon_metaldetector"] = "Ανιχνευτής Μετάλλων", + ["weapon_precisionrifle"] = "Όπλο Ακρίβειας", + ["weapon_tactilerifle"] = "Όπλο Εξυπηρέτησης", + + -- Drug wars dlc + ["weapon_candycane"] = "Candycane", + ["weapon_acidpackage"] = "Acid Package", + ["weapon_pistolxm3"] = "Pistol8 x3m", + ["weapon_railgunxm3"] = "Railgun", + + -- Ρίψεις + ["weapon_ball"] = "Μπάλα", + ["weapon_bzgas"] = "BZ Gas", + ["weapon_flare"] = "Πυροτεχνήματα", + ["weapon_grenade"] = "Χειροβομβίδα", + ["weapon_petrolcan"] = "Κανέλα Βενζίνης", + ["weapon_hazardcan"] = "Κανέλα Επικίνδυνης Υλικότητας", + ["weapon_molotov"] = "Μολότοφ", + ["weapon_proxmine"] = "Νάρκη Εγγύτητας", + ["weapon_pipebomb"] = "Βόμβα Σωλήνα", + ["weapon_snowball"] = "Χιονόμπαλα", + ["weapon_stickybomb"] = "Κολλητή Βόμβα", + ["weapon_smokegrenade"] = "Δακρυγόνο", + + -- Ειδικά + ["weapon_fireextinguisher"] = "Πυροσβεστήρας", + ["weapon_digiscanner"] = "Ψηφιακός Σαρωτής", + ["weapon_garbagebag"] = "Σακούλα Απορριμμάτων", + ["weapon_handcuffs"] = "Χειροπέδες", + ["gadget_nightvision"] = "Νυχτερινή Όραση", + ["gadget_parachute"] = "Αλεξίπτωτο", + + -- Συστατικά Όπλων + ["component_knuckle_base"] = "Βασικό Μοντέλο", + ["component_knuckle_pimp"] = "Ο Φιλότιμος", + ["component_knuckle_ballas"] = "Οι Ballas", + ["component_knuckle_dollar"] = "Ο Εξαπατητής", + ["component_knuckle_diamond"] = "Η Ρόκα", + ["component_knuckle_hate"] = "Ο Μισητός", + ["component_knuckle_love"] = "Ο Εραστής", + ["component_knuckle_player"] = "Ο Παίκτης", + ["component_knuckle_king"] = "Ο Βασιλιάς", + ["component_knuckle_vagos"] = "Οι Vagos", + + ["component_luxary_finish"] = "Πολυτελές Φινίρισμα Όπλου", + + ["component_handle_default"] = "Προεπιλεγμένη Χειρολαβή", + ["component_handle_vip"] = "Χειρολαβή VIP", + ["component_handle_bodyguard"] = "Χειρολαβή Σωματοφύλακα", + + ["component_vip_finish"] = "Πολυτελές Φινίρισμα VIP", + ["component_bodyguard_finish"] = "Πολυτελές Φινίρισμα Σωματοφύλακα", + + ["component_camo_finish"] = "Ψηφιακό Καμουφλάζ", + ["component_camo_finish2"] = "Καμουφλάζ Πινελίου", + ["component_camo_finish3"] = "Καμουφλάζ Δάσους", + ["component_camo_finish4"] = "Καμουφλάζ Κρανίου", + ["component_camo_finish5"] = "Καμουφλάζ Sessanta Nove", + ["component_camo_finish6"] = "Καμουφλάζ Perseus", + ["component_camo_finish7"] = "Καμουφλάζ Λεοπάρδαλης", + ["component_camo_finish8"] = "Καμουφλάζ Ζέβρας", + ["component_camo_finish9"] = "Γεωμετρικό Καμουφλάζ", + ["component_camo_finish10"] = "Καμουφλάζ Boom", + ["component_camo_finish11"] = "Πατριωτικό Καμουφλάζ", + + ["component_camo_slide_finish"] = "Ψηφιακό Καμουφλάζ Slide", + ["component_camo_slide_finish2"] = "Καμουφλάζ Πινελίου Slide", + ["component_camo_slide_finish3"] = "Καμουφλάζ Δάσους Slide", + ["component_camo_slide_finish4"] = "Καμουφλάζ Κρανίου Slide", + ["component_camo_slide_finish5"] = "Καμουφλάζ Sessanta Nove Slide", + ["component_camo_slide_finish6"] = "Καμουφλάζ Perseus Slide", + ["component_camo_slide_finish7"] = "Καμουφλάζ Λεοπάρδαλης Slide", + ["component_camo_slide_finish8"] = "Καμουφλάζ Ζέβρας Slide", + ["component_camo_slide_finish9"] = "Γεωμετρικό Καμουφλάζ Slide", + ["component_camo_slide_finish10"] = "Καμουφλάζ Boom Slide", + ["component_camo_slide_finish11"] = "Πατριωτικό Καμουφλάζ Slide", + + ["component_clip_default"] = "Προεπιλεγμένο Περιοδικό", + ["component_clip_extended"] = "Επέκταση Περιοδικού", + ["component_clip_drum"] = "Περιοδικό Κάδος", + ["component_clip_box"] = "Περιοδικό Κιβώτιο", + + ["component_scope_holo"] = "Ολογραφική Σκοπευτική Συσκευή", + ["component_scope_small"] = "Μικρή Σκοπευτική Συσκευή", + ["component_scope_medium"] = "Μεσαία Σκοπευτική Συσκευή", + ["component_scope_large"] = "Μεγάλη Σκοπευτική Συσκευή", + ["component_scope"] = "Σκοπευτική Συσκευή Εγκατεστημένη", + ["component_scope_advanced"] = "Προηγμένη Σκοπευτική Συσκευή", + ["component_ironsights"] = "Σκοπευτικά Σιδερά", + + ["component_suppressor"] = "Καταστεναγματοποιητής", + ["component_compensator"] = "Αποζημιωτής", + + ["component_muzzle_flat"] = "Επίπεδο Φρένο Αέρα", + ["component_muzzle_tactical"] = "Τακτικό Φρένο Αέρα", + ["component_muzzle_fat"] = "Φρένο Αέρα Παχύ Άκρο", + ["component_muzzle_precision"] = "Φρένο Αέρα Ακρίβειας", + ["component_muzzle_heavy"] = "Φρένο Αέρα Βαρέως Τύπου", + ["component_muzzle_slanted"] = "Φρένο Αέρα Ανοιγοκλειστό", + ["component_muzzle_split"] = "Φρένο Αέρα Υποκλιμακούμενο", + ["component_muzzle_squared"] = "Φρένο Αέρα Τετραγωνισμένο", + + ["component_flashlight"] = "Φακός", + ["component_grip"] = "Λαβή", + + ["component_barrel_default"] = "Προεπιλεγμένο Κάννα", + ["component_barrel_heavy"] = "Βαριά Κάννα", + + ["component_ammo_tracer"] = "Σφαίρες με Ιχνηθέν Φωτός", + ["component_ammo_incendiary"] = "Σφαίρες Φωτιάς", + ["component_ammo_hollowpoint"] = "Σφαίρες Κενές Άκρες", + ["component_ammo_fmj"] = "Σφαίρες FMJ", + ["component_ammo_armor"] = "Σφαίρες Διάτρησης Θωράκισης", + ["component_ammo_explosive"] = "Εκρηκτικές Σφαίρες Διάτρησης Θωράκισης", + + ["component_shells_default"] = "Προεπιλεγμένες Φυσίγγια", + ["component_shells_incendiary"] = "Φυσίγγια Διαμαντινών", + ["component_shells_armor"] = "Φυσίγγια Θωράκισης Χάλυβα", + ["component_shells_hollowpoint"] = "Φυσίγγια Κενών Άκρων", + ["component_shells_explosive"] = "Φυσίγγια Εκρηκτικών", + + -- Πυρομαχικά Όπλων + ["ammo_rounds"] = "σφαιρίδιο(α)", + ["ammo_shells"] = "φυσίγγιο(α)", + ["ammo_charge"] = "φορτίο", + ["ammo_petrol"] = "γαλόνια καυσίμου", + ["ammo_firework"] = "πυροτεχνήματο(α)", + ["ammo_rockets"] = "πύραυλο(ι)", + ["ammo_grenadelauncher"] = "χειροβομβίδα(ες)", + ["ammo_grenade"] = "χειροβομβίδα(ες)", + ["ammo_stickybomb"] = "βόμβα(ες)", + ["ammo_pipebomb"] = "βόμβα(ες)", + ["ammo_smokebomb"] = "βόμβα(ες) καπνού", + ["ammo_molotov"] = "κοκτέιλ μολότοφ(α)", + ["ammo_proxmine"] = "μίνα(ες) εγγύτητας", + ["ammo_bzgas"] = "κανίστρα(ες)", + ["ammo_ball"] = "μπάλα(ες)", + ["ammo_snowball"] = "χιονόμπαλα(ες)", + ["ammo_flare"] = "φλογοβολίδα(ες)", + ["ammo_flaregun"] = "φλογοβολίδα(ες)", + + -- Επιστρώσεις Όπλων + ["tint_default"] = "προεπιλεγμένο δέρμα", + ["tint_green"] = "πράσινο δέρμα", + ["tint_gold"] = "χρυσό δέρμα", + ["tint_pink"] = "ροζ δέρμα", + ["tint_army"] = "στρατιωτικό δέρμα", + ["tint_lspd"] = "μπλε δέρμα", + ["tint_orange"] = "πορτοκαλί δέρμα", + ["tint_platinum"] = "πλατίνενο δέρμα", + +} diff --git a/[core]/es_extended/locales/en.lua b/[core]/es_extended/locales/en.lua index 136819f5..92396e66 100644 --- a/[core]/es_extended/locales/en.lua +++ b/[core]/es_extended/locales/en.lua @@ -52,6 +52,7 @@ Locales["en"] = { ["act_imp"] = "Cannot Perform Action", ["in_vehicle"] = "Cannot Perform Action, Player is in a vehicle", + ["not_in_vehicle"] = "Cannot Perform Action, Player isn't in a vehicle", -- Commands ['command_bring'] = 'Bring player to you', @@ -59,6 +60,9 @@ Locales["en"] = { ['command_car_car'] = 'Vehicle model or hash', ['command_cardel'] = 'Remove vehicles in proximity', ['command_cardel_radius'] = 'Removes all vehicles within the specified radius', + ['command_repair'] = 'Repair your vehicle', + ['command_repair_success'] = 'Successfully repaired vehicle', + ['command_repair_success_target'] = 'An admin repaired your vehicle', ['command_clear'] = 'Clear chat Text', ['command_clearall'] = 'Clear chat Text for all players', ['command_clearinventory'] = 'Remove All items from the Players Inventory', @@ -204,6 +208,7 @@ Locales["en"] = { ["weapon_militaryrifle"] = "Military Rifle", ["weapon_specialcarbine"] = "Special Carbine", ["weapon_specialcarbine_mk2"] = "Special Carbine MK2", + ["weapon_heavyrifle"] = "Heavy Rifle", -- Sniper ["weapon_heavysniper"] = "Heavy Sniper", @@ -227,6 +232,12 @@ Locales["en"] = { ["weapon_precisionrifle"] = "Precision Rifle", ["weapon_tactilerifle"] = "Service Carbine", + -- Drug wars dlc + ["weapon_candycane"] = "Candycane", + ["weapon_acidpackage"] = "Acid Package", + ["weapon_pistolxm3"] = "Pistol8 x3m", + ["weapon_railgunxm3"] = "Railgun", + -- Thrown ["weapon_ball"] = "Baseball", ["weapon_bzgas"] = "BZ Gas", diff --git a/[core]/es_extended/locales/es.lua b/[core]/es_extended/locales/es.lua index 45bfb1d9..9a3791a0 100644 --- a/[core]/es_extended/locales/es.lua +++ b/[core]/es_extended/locales/es.lua @@ -52,6 +52,7 @@ Locales["es"] = { ["act_imp"] = "No se pudo realizar la acción.", ["in_vehicle"] = "Acción rechazada. El jugador se encuentra en un vehículo", + ["not_in_vehicle"] = "Cannot Perform Action, Player isn't in a vehicle", -- Commands ['command_bring'] = 'Traer un jugador hacia ti', @@ -59,6 +60,9 @@ Locales["es"] = { ['command_car_car'] = 'Nombre del vehículo', ['command_cardel'] = 'Eliminar vehículos cercanos', ['command_cardel_radius'] = 'Opcional, eliminar todos los vehículos en el radio especificado', + ['command_repair'] = 'Reparar tu vehiculo', + ['command_repair_success'] = 'Vehiculo reparado correctamente', + ['command_repair_success_target'] = 'Un administrador reparo tu vehiculo', ['command_clear'] = 'Limpiar chat para ti', ['command_clearall'] = 'Limpiar chat para todos los jugadores', ['command_clearinventory'] = 'Limpiar el inventario del jugador', @@ -117,10 +121,10 @@ Locales["es"] = { -- Weapons -- 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_candycane'] = 'Hacha de Caramelo ', + ['weapon_acidpackage'] = 'Paquete de Acido', + ['weapon_pistolxm3'] = 'Pistola WM 29', + ['weapon_railgunxm3'] = 'Fusil electromagnético', -- Melee ["weapon_dagger"] = "Daga", @@ -158,7 +162,7 @@ Locales["es"] = { ["weapon_pistol50"] = "Pistola .50", ["weapon_snspistol"] = "Pistola SNS", ["weapon_snspistol_mk2"] = "Pistola SNS MK2", - ["weapon_stungun"] = "Tazer", + ["weapon_stungun"] = "Taser", ["weapon_raypistol"] = "Up-N-Atomizer", ["weapon_vintagepistol"] = "Pistola Vintage", @@ -200,6 +204,7 @@ Locales["es"] = { ["weapon_militaryrifle"] = "Rifle Militar", ["weapon_specialcarbine"] = "Carabina Especial", ["weapon_specialcarbine_mk2"] = "Carabina Especial MK2", + ["weapon_heavyrifle"] = "Rifle Pesado", -- Sniper ["weapon_heavysniper"] = "Francotirador Pesado", diff --git a/[core]/es_extended/locales/fi.lua b/[core]/es_extended/locales/fi.lua index 9eff6471..bd32d952 100644 --- a/[core]/es_extended/locales/fi.lua +++ b/[core]/es_extended/locales/fi.lua @@ -52,12 +52,16 @@ Locales["fi"] = { ["act_imp"] = "Toiminto mahdoton", ["in_vehicle"] = "Et voi antaa ajoneuvossa olevalle mitään", + ["not_in_vehicle"] = "Cannot Perform Action, Player isn't in a vehicle", -- Commands ['command_car'] = 'Luo ajoneuvo', ['command_car_car'] = 'Ajoneuvon nimi tai hash', ['command_cardel'] = 'Poistaa ajoneuvon läheltä', ['command_cardel_radius'] = 'Valinnainen, poista kaikki ajoneuvot määritetyllä säteellä', + ['command_repair'] = 'Repair your vehicle', + ['command_repair_success'] = 'Successfully repaired vehicle', + ['command_repair_success_target'] = 'An admin repaired your vehicle', ['command_clear'] = 'Tyhjennä keskustelu', ['command_clearall'] = 'Tyhjennä keskustelu kaikilta pelaajilta', ['command_clearinventory'] = 'Tyhjennä pelaajan reppu', @@ -190,6 +194,7 @@ Locales["fi"] = { ["gadget_parachute"] = "Laskuvarjo", ["weapon_flare"] = "Hätäraketti", ["weapon_doubleaction"] = "Double action revolveri", + ["weapon_heavyrifle"] = "Heavy Rifle", -- Not Translated -- Weapon Components ["component_clip_default"] = "Oletus lipas", diff --git a/[core]/es_extended/locales/fr.lua b/[core]/es_extended/locales/fr.lua index bc5289d5..fafcbb30 100644 --- a/[core]/es_extended/locales/fr.lua +++ b/[core]/es_extended/locales/fr.lua @@ -52,6 +52,7 @@ Locales["fr"] = { ["act_imp"] = "Action impossible", ["in_vehicle"] = "Action impossible, le joueur est dans un véhicule", + ["not_in_vehicle"] = "Action impossible, le joueur n'est pas dans un véhicule", -- Commands ["command_bring"] = "Téléporter un joueur sur vous", @@ -59,6 +60,9 @@ Locales["fr"] = { ["command_car_car"] = "Nom ou hash du véhicule", ["command_cardel"] = "Supprimer les véhicules à proximité", ["command_cardel_radius"] = "Supprime tous les véhicules dans un rayon spécifié", + ["command_repair"] = "Réparer votre véhicule", + ["command_repair_success"] = "Véhicule réparé avec succès", + ["command_repair_success_target"] = "Votre véhicule a été réparé par un membre du staff", ["command_clear"] = "Effacer le chat", ["command_clearall"] = "Effacer le chat de tous les joueurs", ["command_clearinventory"] = "Retirer tous les objets de l'inventaire du joueur", @@ -103,6 +107,7 @@ Locales["fr"] = { ["command_setgroup_group"] = "Nom du groupe à définir", ["commanderror_argumentmismatch"] = "Le nombre d'arguments est invalide (Argument·s donné·s: %s, Argument·s demandé·s: %s)", ["commanderror_argumentmismatch_number"] = "Type de données de l'argument #%s invalide (Type donné: texte, Type demandé: nombre)", + ["commanderror_argumentmismatch_string"] = "Type de données de l'argument #%s invalide (Type donné: nombre, Type demandé: texte)", ["commanderror_invaliditem"] = "Le nom de l'objet est invalide", ["commanderror_invalidweapon"] = "Le nom de l'arme est invalide", ["commanderror_console"] = "Cette commande ne peut pas être éxécutée depuis la console", @@ -203,6 +208,7 @@ Locales["fr"] = { ["weapon_militaryrifle"] = "Fusil militaire", ["weapon_specialcarbine"] = "Carabine spéciale", ["weapon_specialcarbine_mk2"] = "Carabine spéciale MK2", + ["weapon_heavyrifle"] = "Fusil lourd", -- Sniper ["weapon_heavysniper"] = "Sniper lourd", @@ -226,6 +232,12 @@ Locales["fr"] = { ["weapon_precisionrifle"] = "Fusil de précision", ["weapon_tactilerifle"] = "Carabine tactique", + -- Drug wars dlc + ["weapon_candycane"] = "Sucre d'orge", + ["weapon_acidpackage"] = "Paquet d'acide", + ["weapon_pistolxm3"] = "Pistolet 8 x3m", + ["weapon_railgunxm3"] = "Fusil électro-magnétique", + -- Thrown ["weapon_ball"] = "Base-ball", ["weapon_bzgas"] = "Gaz BZ", diff --git a/[core]/es_extended/locales/he.lua b/[core]/es_extended/locales/he.lua new file mode 100644 index 00000000..c2bafc99 --- /dev/null +++ b/[core]/es_extended/locales/he.lua @@ -0,0 +1,374 @@ +Locales["he"] = { + -- Inventory + ["inventory"] = "מלאי ( משקל %s / %s )", + ["use"] = "שימוש", + ["give"] = "תן", + ["remove"] = "זרוק", + ["return"] = "חזור", + ["give_to"] = "תן ל", + ["amount"] = "כמות", + ["giveammo"] = "תן תחמושת", + ["amountammo"] = "כמות תחמושת", + ["noammo"] = "אין מספיק!", + ["gave_item"] = "נתת %sx %s ל %s", + ["received_item"] = "קיבלת %sx %s מ %s", + ["gave_weapon"] = "נתת %s ל %s", + ["gave_weapon_ammo"] = "נתת ~o~%sx %s עבור %s ל %s", + ["gave_weapon_withammo"] = "נתת %s עם ~o~%sx %s ל %s", + ["gave_weapon_hasalready"] = "%s כבר יש לו %s", + ["gave_weapon_noweapon"] = "%s אין לו את הנשק", + ["received_weapon"] = "קיבלת %s מ %s", + ["received_weapon_ammo"] = "קיבלת ~o~%sx %s ל %s שלך מ %s", + ["received_weapon_withammo"] = "קיבלת %s עם ~o~%sx %s מ %s", + ["received_weapon_hasalready"] = "%s ניסה לתת לך %s, אבל כבר יש לך את הנשק הזה", + ["received_weapon_noweapon"] = "%s ניסה לתת לך תחמושת עבור %s, אבל אין לך את הנשק הזה", + ["gave_account_money"] = "נתת $%s (%s) ל %s", + ["received_account_money"] = "קיבלת $%s (%s) מ %s", + ["amount_invalid"] = "כמות לא חוקית", + ["players_nearby"] = "אין שחקנים בקרבת מקום", + ["ex_inv_lim"] = "לא ניתן לבצע פעולה, משקל מרבי של %s", + ["imp_invalid_quantity"] = "לא ניתן לבצע פעולה, הכמות לא חוקית", + ["imp_invalid_amount"] = "לא ניתן לבצע פעולה, הסכום לא חוקי", + ["threw_standard"] = "זרקת %sx %s", + ["threw_account"] = "זרקת $%s %s", + ["threw_weapon"] = "זרקת %s", + ["threw_weapon_ammo"] = "זרקת %s עם ~o~%sx %s", + ["threw_weapon_already"] = "כבר יש לך את הנשק הזה", + ["threw_cannot_pickup"] = "המלאי מלא, לא ניתן לאסוף!", + ["threw_pickup_prompt"] = "לחץ על E כדי לאסוף", + + -- Key mapping + ["keymap_showinventory"] = "הצג מלאי", + + -- Salary related + ["received_salary"] = "קיבלת שכר: $%s", + ["received_help"] = "קיבלת הוצאה לפנסיה: $%s", + ["company_nomoney"] = "החברה שאצלה אתה עובד אינה מסוגלת לשלם את השכר שלך", + ["received_paycheck"] = "קיבלת פיקדון שכר", + ["bank"] = "בנק Maze", + ["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_removeaccountmoney'] = 'הסר כסף מחשבון מסוים', + ['command_removeaccountmoney_account'] = 'חשבון להסרה ממנו', + ['command_removeaccountmoney_amount'] = 'סכום להסרה', + ['command_removeaccountmoney_invalid'] = 'שם חשבון לא חוקי', + ['command_giveitem'] = 'תן לשחקן פריט', + ['command_giveitem_item'] = 'שם הפריט', + ['command_giveitem_count'] = 'כמות', + ['command_giveweapon'] = 'תן לשחקן נשק', + ['command_giveweapon_weapon'] = 'שם הנשק', + ['command_giveweapon_ammo'] = 'כמות תחמושת', + ['command_giveweapon_hasalready'] = 'לשחקן כבר יש את הנשק הזה', + ['command_giveweaponcomponent'] = 'תן רכיב נשק לשחקן', + ['command_giveweaponcomponent_component'] = 'שם הרכיב', + ['command_giveweaponcomponent_invalid'] = 'רכיב נשק לא חוקי', + ['command_giveweaponcomponent_hasalready'] = 'לשחקן כבר יש את הרכיב של הנשק', + ['command_giveweaponcomponent_missingweapon'] = 'לשחקן אין את הנשק הזה', + ['command_goto'] = 'העבר את עצמך לשחקן', + ['command_kill'] = 'הרוג שחקן', + ['command_save'] = 'שמור את המידע של השחקן', + ['command_saveall'] = 'שמור את המידע של כל השחקנים', + ['command_setaccountmoney'] = 'הגדר את הכסף בחשבון מסוים', + ['command_setaccountmoney_amount'] = 'סכום', + ['command_setcoords'] = 'העבר לנקודת הקואורדינטות שצוינו', + ['command_setcoords_x'] = 'ערך X', + ['command_setcoords_y'] = 'ערך Y', + ['command_setcoords_z'] = 'ערך Z', + ['command_setjob'] = 'הגדר את העבודה של השחקן', + ['command_setjob_job'] = 'שם', + ['command_setjob_grade'] = 'דרגת עבודה', + ['command_setjob_invalid'] = 'העבודה, הדרגה או שניהם לא חוקיים', + ['command_setgroup'] = 'הגדר את קבוצת ההרשאות של השחקן', + ['command_setgroup_group'] = 'שם הקבוצה', + ['commanderror_argumentmismatch'] = 'כמות הארגומנטים אינה תואמת (התקבלו %s, דרושים %s)', + ['commanderror_argumentmismatch_number'] = 'סוג הנתונים של הארגומנט #%s אינו תואם (התקבלה מחרוזת, נדרש מספר)', + ['commanderror_argumentmismatch_string'] = 'סוג הנתונים של הארגומנט #%s אינו תואם (התקבל מספר, נדרשה מחרוזת)', + ['commanderror_invaliditem'] = 'פריט לא חוקי', + ['commanderror_invalidweapon'] = 'נשק לא חוקי', + ['commanderror_console'] = 'לא ניתן לבצע את הפקודה מהקונסולה', + ['commanderror_invalidcommand'] = 'פקודה לא חוקית - /%s', + ['commanderror_invalidplayerid'] = 'השחקן שצוין אינו מחובר', + ['commandgeneric_playerid'] = 'מספר השחקן בשרת', + ['command_giveammo_noweapon_found'] = '%s אין לו את הנשק', + ['command_giveammo_weapon'] = 'שם הנשק', + ['command_giveammo_ammo'] = 'כמות תחמושת', + ['tpm_nowaypoint'] = 'לא הוגדרה נקודת דרך.', + ['tpm_success'] = 'הועברת בהצלחה', + + ['noclip_message'] = 'Noclip הופך להיות %s', + ['enabled'] = '~g~מופעל~s~', + ['disabled'] = '~r~מבוטל~s~', + + -- Locale settings + ["locale_digit_grouping_symbol"] = ",", + ["locale_currency"] = "£%s", + + -- Weapons + + -- Melee + ["weapon_dagger"] = "סכין", + ["weapon_bat"] = "מקל", + ["weapon_battleaxe"] = "קרדום לחימה", + ["weapon_bottle"] = "בקבוק", + ["weapon_crowbar"] = "מפתח עגלה", + ["weapon_flashlight"] = "פנס יד", + ["weapon_golfclub"] = "מקל גולף", + ["weapon_hammer"] = "פטיש", + ["weapon_hatchet"] = "קרדום", + ["weapon_knife"] = "סכין", + ["weapon_knuckle"] = "אגרופים", + ["weapon_machete"] = "מאצ'טה", + ["weapon_nightstick"] = "מקלון", + ["weapon_wrench"] = "מפתח ברגים", + ["weapon_poolcue"] = "מקל ביליארד", + ["weapon_stone_hatchet"] = "קרדום אבן", + ["weapon_switchblade"] = "סכין מתקפלת", + + -- Handguns + ["weapon_appistol"] = "אקדח AP", + ["weapon_ceramicpistol"] = "אקדח קרמיקה", + ["weapon_combatpistol"] = "אקדח לחימה", + ["weapon_doubleaction"] = "רבולבר פעולה כפולה", + ["weapon_navyrevolver"] = "רבולבר חיל הים", + ["weapon_flaregun"] = "אקדח תותחני", + ["weapon_gadgetpistol"] = "אקדח גאדג'ט", + ["weapon_heavypistol"] = "אקדח כבד", + ["weapon_revolver"] = "רבולבר כבד", + ["weapon_revolver_mk2"] = "רבולבר כבד MK2", + ["weapon_marksmanpistol"] = "אקדח מציין", + ["weapon_pistol"] = "אקדח", + ["weapon_pistol_mk2"] = "אקדח MK2", + ["weapon_pistol50"] = "אקדח .50", + ["weapon_snspistol"] = "אקדח SNS", + ["weapon_snspistol_mk2"] = "אקדח SNS MK2", + ["weapon_stungun"] = "טייזר", + ["weapon_raypistol"] = "אקדח קרניים", + ["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"] = "SMG תוקף", + ["weapon_combatmg"] = "MG לחימה", + ["weapon_combatmg_mk2"] = "MG לחימה MK2", + ["weapon_combatpdw"] = "PDW לחימה", + ["weapon_gusenberg"] = "גוזנברג מכשיר", + ["weapon_machinepistol"] = "אקדח מכונה", + ["weapon_mg"] = "MG", + ["weapon_microsmg"] = "SMG מיקרו", + ["weapon_minismg"] = "SMG מיני", + ["weapon_smg"] = "SMG", + ["weapon_smg_mk2"] = "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"] = "גז BZ", + ["weapon_flare"] = "זיקוק", + ["weapon_grenade"] = "רימון", + ["weapon_petrolcan"] = "קנקן דלק", + ["weapon_hazardcan"] = "קנקן דלק מסוכן", + ["weapon_molotov"] = "קוקטייל מולוטוב", + ["weapon_proxmine"] = "מוקש קרבה", + ["weapon_pipebomb"] = "פצצת צנרת", + ["weapon_snowball"] = "כדור שלג", + ["weapon_stickybomb"] = "רימון דביק", + ["weapon_smokegrenade"] = "רימון עשן", + + -- Special + ["weapon_fireextinguisher"] = "מטף כיבוי", + ["weapon_digiscanner"] = "סורק דיגיטלי", + ["weapon_garbagebag"] = "שק אשפה", + ["weapon_handcuffs"] = "כאסמים", + ["gadget_nightvision"] = "משקפי ראיית לילה", + ["gadget_parachute"] = "צניחה", + + -- Weapon Components + ["component_knuckle_base"] = "דגם בסיס", + ["component_knuckle_pimp"] = "הפימפ", + ["component_knuckle_ballas"] = "הבאלס", + ["component_knuckle_dollar"] = "המרוויח", + ["component_knuckle_diamond"] = "האבן", + ["component_knuckle_hate"] = "השונא", + ["component_knuckle_love"] = "האוהב", + ["component_knuckle_player"] = "השחקן", + ["component_knuckle_king"] = "המלך", + ["component_knuckle_vagos"] = "הוואגוס", + + ["component_luxary_finish"] = "סיום מפואר", + + ["component_handle_default"] = "ידית ברירת מחדל", + ["component_handle_vip"] = "ידית VIP", + ["component_handle_bodyguard"] = "ידית שומר גוף", + + ["component_vip_finish"] = "סיום VIP", + ["component_bodyguard_finish"] = "סיום שומר גוף", + + ["component_camo_finish"] = "סיום דיגיטלי", + ["component_camo_finish2"] = "סיום ציור מברשת", + ["component_camo_finish3"] = "סיום חורשתי", + ["component_camo_finish4"] = "סיום גולגולת", + ["component_camo_finish5"] = "סיום ססנטה נובה", + ["component_camo_finish6"] = "סיום פרסאוס", + ["component_camo_finish7"] = "סיום נמר", + ["component_camo_finish8"] = "סיום זברה", + ["component_camo_finish9"] = "סיום גיאומטרי", + ["component_camo_finish10"] = "סיום פיצוץ", + ["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"] = "סיום פיצוץ שקופה", + ["component_camo_slide_finish11"] = "סיום פטריוטי שקופה", + + ["component_clip_default"] = "מחסנית ברירת מחדל", + ["component_clip_extended"] = "מחסנית מורחבת", + ["component_clip_drum"] = "מחסנית תוף", + ["component_clip_box"] = "מחסנית קופסה", + + ["component_scope_holo"] = "מכ מכוון הולוגרפי", + ["component_scope_small"] = "מכוון קטן", + ["component_scope_medium"] = "מכוון בינוני", + ["component_scope_large"] = "מכוון גדול", + ["component_scope"] = "מכוון מותקן", + ["component_scope_advanced"] = "מכוון מתקדם", + ["component_ironsights"] = "מכוון מתכת", + + ["component_suppressor"] = "משתיק", + ["component_compensator"] = "פיצוי", + + ["component_muzzle_flat"] = "קצה חלק", + ["component_muzzle_tactical"] = "קצה טקטי", + ["component_muzzle_fat"] = "קצה שמני", + ["component_muzzle_precision"] = "קצה מדויק", + ["component_muzzle_heavy"] = "קצה כבד", + ["component_muzzle_slanted"] = "קצה מוטה", + ["component_muzzle_split"] = "קצה מחולק", + ["component_muzzle_squared"] = "קצה מרובע", + + ["component_flashlight"] = "פנס", + ["component_grip"] = "ידית", + + ["component_barrel_default"] = "חילוף ברירת מחדל", + ["component_barrel_heavy"] = "חילוף כבד", + + ["component_ammo_tracer"] = "כדורי עקיבה", + ["component_ammo_incendiary"] = "כדורי שריפה", + ["component_ammo_hollowpoint"] = "כדורי ריק", + ["component_ammo_fmj"] = "כדורי FMJ", + ["component_ammo_armor"] = "כדורי פריצת שריון", + ["component_ammo_explosive"] = "כדורי שריון מבעירים", + + ["component_shells_default"] = "קליעים ברירת מחדל", + ["component_shells_incendiary"] = "קליעים של נשיפת הדרקון", + ["component_shells_armor"] = "קליעים פלדתיים", + ["component_shells_hollowpoint"] = "קליעים של הטילים", + ["component_shells_explosive"] = "קליעים מתפצלים", + + -- Weapon Ammo + ["ammo_rounds"] = "סיבוב(ים)", + ["ammo_shells"] = "קליע(ים)", + ["ammo_charge"] = "תשלום", + ["ammo_petrol"] = "גלונים של דלק", + ["ammo_firework"] = "זיקוק(ים)", + ["ammo_rockets"] = "רקטה(ות)", + ["ammo_grenadelauncher"] = "רימון(ים)", + ["ammo_grenade"] = "רימון(ים)", + ["ammo_stickybomb"] = "פצצה(ות)", + ["ammo_pipebomb"] = "פצצה(ות)", + ["ammo_smokebomb"] = "פצצה(ות)", + ["ammo_molotov"] = "קוקטייל(ים)", + ["ammo_proxmine"] = "מוקש(ים)", + ["ammo_bzgas"] = "פחית(ות)", + ["ammo_ball"] = "כדור(ים)", + ["ammo_snowball"] = "כדור שלג", + ["ammo_flare"] = "זיקוק(ים)", + ["ammo_flaregun"] = "זיקוק(ים)", + + -- Weapon Tints + ["tint_default"] = "עור ברירת מחדל", + ["tint_green"] = "עור ירוק", + ["tint_gold"] = "עור זהב", + ["tint_pink"] = "עור ורוד", + ["tint_army"] = "עור צבאי", + ["tint_lspd"] = "עור כחול", + ["tint_orange"] = "עור כתום", + ["tint_platinum"] = "עור פלטינה", +} + + + + diff --git a/[core]/es_extended/locales/hu.lua b/[core]/es_extended/locales/hu.lua index b5336610..02feb4ed 100644 --- a/[core]/es_extended/locales/hu.lua +++ b/[core]/es_extended/locales/hu.lua @@ -52,6 +52,7 @@ Locales["hu"] = { ["act_imp"] = "Érvénytelen mennyiség", ["in_vehicle"] = "Nem tudod átadni, mivel benne ül a jármüben", + ["not_in_vehicle"] = "Cannot Perform Action, Player isn't in a vehicle", -- Commands ["command_bring"] = "Játékos magadhoz teleportálása", @@ -59,6 +60,9 @@ Locales["hu"] = { ["command_car_car"] = "Jármű név vagy hash", ["command_cardel"] = "Közeli járművek törlése", ["command_cardel_radius"] = "Megadott radiusban lévő járművek törlése", + ["command_repair"] = "Repair your vehicle", + ["command_repair_success"] = "Successfully repaired vehicle", + ["command_repair_success_target"] = "An admin repaired your vehicle", ["command_clear"] = "Chat ürítése", ["command_clearall"] = "Chat ürítése minden játékosnál", ["command_clearinventory"] = "Minden tárgy törlése a játékos inventoryból", @@ -200,6 +204,7 @@ Locales["hu"] = { ["weapon_militaryrifle"] = "Military Rifle", ["weapon_specialcarbine"] = "Special Carbine", ["weapon_specialcarbine_mk2"] = "Special Carbine MK2", + ["weapon_heavyrifle"] = "Heavy Rifle", -- Not Translated -- Sniper ["weapon_heavysniper"] = "Heavy Sniper", diff --git a/[core]/es_extended/locales/it.lua b/[core]/es_extended/locales/it.lua index 67b59bb7..283b7a98 100644 --- a/[core]/es_extended/locales/it.lua +++ b/[core]/es_extended/locales/it.lua @@ -52,6 +52,7 @@ Locales["it"] = { ["act_imp"] = "Non puoi farlo", ["in_vehicle"] = "Non puoi farlo, il giocatore è in un veicolo", + ["not_in_vehicle"] = "Non puoi farlo, il player non è in un veicolo", -- Commands ['command_bring'] = 'Porta il giocatore da te', @@ -59,6 +60,9 @@ Locales["it"] = { ['command_car_car'] = 'Modello o hash veicolo', ['command_cardel'] = 'Rimuovi i veicoli nelle prossimità', ['command_cardel_radius'] = 'Rimuovi i veicoli nel raggio specificato', + ['command_repair'] = 'Ripara il tuo veicolo', + ['command_repair_success'] = 'Hai riparato il veicolo con successo', + ['command_repair_success_target'] = 'Un admin ha riparato la tua macchina', ['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', @@ -69,6 +73,10 @@ Locales["it"] = { ['command_giveaccountmoney_account'] = 'Account a cui aggiungere', ['command_giveaccountmoney_amount'] = 'Quantità da aggiungere', ['command_giveaccountmoney_invalid'] = 'Nome account non valido', + ['command_removeaccountmoney'] = 'Rimuovi soldi da un account specifico', + ['command_removeaccountmoney_account'] = 'Account a cui togliere', + ['command_removeaccountmoney_amount'] = 'Quantità da rimuovere', + ['command_removeaccountmoney_invalid'] = 'Nome account non valido', ['command_giveitem'] = 'Dai un oggetto ad un giocatore', ['command_giveitem_item'] = 'Nome oggetto', ['command_giveitem_count'] = 'Quantità', @@ -200,6 +208,7 @@ Locales["it"] = { ["weapon_militaryrifle"] = "Fucile militare", ["weapon_specialcarbine"] = "Carabina speciale", ["weapon_specialcarbine_mk2"] = "Carabina speciale MK2", + ["weapon_heavyrifle"] = "Fucile pesante", -- Sniper ["weapon_heavysniper"] = "Cecchino pesante", @@ -224,10 +233,10 @@ Locales["it"] = { ["weapon_tactilerifle"] = "Carabina di servizio", -- 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_candycane'] = 'Bastoncino di zucchero', + ['weapon_acidpackage'] = 'Pacco di acidi', + ['weapon_pistolxm3'] = 'Pistola WM 29', + ['weapon_railgunxm3'] = 'Railgun', -- Thrown ["weapon_ball"] = "Palla", diff --git a/[core]/es_extended/locales/nl.lua b/[core]/es_extended/locales/nl.lua index af4b920f..2f5e4d79 100644 --- a/[core]/es_extended/locales/nl.lua +++ b/[core]/es_extended/locales/nl.lua @@ -1,372 +1,372 @@ Locales["nl"] = { - -- Inventory - ["inventory"] = "Inventaris ( Gewicht %s / %s )", - ["use"] = "Gebruik", - ["give"] = "Geef", - ["remove"] = "Gooi", - ["return"] = "Terug", - ["give_to"] = "Geef aan", - ["amount"] = "Aantal", - ["giveammo"] = "Geef munitie", - ["amountammo"] = "Hoeveelheid munitie", - ["noammo"] = "Niet genoeg!", - ["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 + ["inventory"] = "Inventaris ( Gewicht %s / %s )", + ["use"] = "Gebruik", + ["give"] = "Geef", + ["remove"] = "Gooi", + ["return"] = "Terug", + ["give_to"] = "Geef aan", + ["amount"] = "Aantal", + ["giveammo"] = "Geef munitie", + ["amountammo"] = "Hoeveelheid munitie", + ["noammo"] = "Niet genoeg munitie!", + ["gave_item"] = "%sx %s gegeven aan %s", + ["received_item"] = "%sx %s ontvangen van %s", + ["gave_weapon"] = "%s gegeven aan %s", + ["gave_weapon_ammo"] = "~o~%sx %s gegeven voor een %s aan %s", + ["gave_weapon_withammo"] = "%s gegeven met ~o~%sx %s aan %s", + ["gave_weapon_hasalready"] = "%s heeft al een %s", + ["gave_weapon_noweapon"] = "%s heeft dat wapen niet", + ["received_weapon"] = "%s ontvangen van %s", + ["received_weapon_ammo"] = "~o~%sx %s ontvangen voor je %s van %s", + ["received_weapon_withammo"] = "%s ontvangen met ~o~%sx %s van %s", + ["received_weapon_hasalready"] = "%s heeft geprobeerd je een %s te geven, maar je hebt dat wapen al.", + ["received_weapon_noweapon"] = "%s heeft geprobeerd je ammo te geven voor een %s, maar je hebt dit wapen niet", + ["gave_account_money"] = "€%s (%s) gegeven aan %s", + ["received_account_money"] = "€%s (%s) ontvangen van %s", + ["amount_invalid"] = "Ongeldige hoeveelheid", + ["players_nearby"] = "Geen spelers in de buurt", + ["ex_inv_lim"] = "Kan actie niet uitvoeren, overschrijdt max. gewicht van %s", + ["imp_invalid_quantity"] = "Kan actie niet uitvoeren, de hoeveelheid is ongeldig", + ["imp_invalid_amount"] = "Kan actie niet uitvoeren, het aantal is ongeldig", + ["threw_standard"] = "%sx %s weggegooid", + ["threw_account"] = "€%s %s weggegooid", + ["threw_weapon"] = "%s weggegooid", + ["threw_weapon_ammo"] = "%s met ~o~%sx %s weggegooid", + ["threw_weapon_already"] = "Je hebt dit wapen al !", + ["threw_cannot_pickup"] = "Inventaris is vol, je kan dit niet oppakken!", + ["threw_pickup_prompt"] = "Druk op E om op te pakken", - -- Key mapping - ["keymap_showinventory"] = "Laat inventaris zien", + -- Key mapping + ["keymap_showinventory"] = "Laat inventaris zien", - -- Salary related - ["received_salary"] = "Je bent betaald: €%s", - ["received_help"] = "Je hebt je uitkering gekregen: €%s", - ["company_nomoney"] = "Het bedrijf waar je bij werkt heeft te weinig geld om je uit te betalen.", - ["received_paycheck"] = "salaris ontvangen", - ["bank"] = "Maze Bank", - ["account_bank"] = "Bank", - ["account_black_money"] = "Zwart geld", - ["account_money"] = "Cash", + -- Salary related + ["received_salary"] = "Je bent betaald: €%s", + ["received_help"] = "Je hebt je uitkering gekregen: €%s", + ["company_nomoney"] = "Het bedrijf waar je bij werkt heeft te weinig geld om je uit te betalen.", + ["received_paycheck"] = "salaris ontvangen", + ["bank"] = "Maze Bank", + ["account_bank"] = "Bank", + ["account_black_money"] = "Zwart geld", + ["account_money"] = "Contant", - ["act_imp"] = "Kan actie niet uitvoeren", - ["in_vehicle"] = "Kan actie niet uitvoeren, de speler zit in een voertuig.", + ["act_imp"] = "Kan actie niet uitvoeren", + ["in_vehicle"] = "Kan actie niet uitvoeren, de speler zit in een voertuig.", - -- Commands - ['command_bring'] = 'Breng speler naar jou', - ['command_car'] = 'Spawn een voertuig', - ['command_car_car'] = 'Voertuig model of hash', - ['command_cardel'] = 'Verwijder voertuigen in straal', - ['command_cardel_radius'] = 'Verwijderd alle voertuigen in gewenste straal', - ['command_clear'] = 'Verwijder chat berichten', - ['command_clearall'] = 'Verwijder chat berichten voor alle spelers', - ['command_clearinventory'] = 'Verwijder alle items van een speler zijn inventory', - ['command_clearloadout'] = 'Verwijder alle wapens die een speler heeft', - ['command_freeze'] = 'Freeze een speler', - ['command_unfreeze'] = 'Unfreeze een speler', - ['command_giveaccountmoney'] = 'Geef geld aan een rekening', - ['command_giveaccountmoney_account'] = 'Account om aan toe te voegen', - ['command_giveaccountmoney_amount'] = 'Bedrag om toe te voegen', - ['command_giveaccountmoney_invalid'] = 'Account Naam ongeldig', - ['command_giveitem'] = 'Geef speler een item', - ['command_giveitem_item'] = 'Item naam', - ['command_giveitem_count'] = 'Hoeveelheid', - ['command_giveweapon'] = 'Geef de speler een wapen', - ['command_giveweapon_weapon'] = 'Wapen naam', - ['command_giveweapon_ammo'] = 'Ammo Hoeveelheid', - ['command_giveweapon_hasalready'] = 'Speler heeft dit wapen al', - ['command_giveweaponcomponent'] = 'Geef wapen component aan speler', - ['command_giveweaponcomponent_component'] = 'Component naam', - ['command_giveweaponcomponent_invalid'] = 'Ongeldig wapen component', - ['command_giveweaponcomponent_hasalready'] = 'De speler heeft dit wapen component al', - ['command_giveweaponcomponent_missingweapon'] = 'De speler heeft dit wapen niet', - ['command_goto'] = 'Teleporteer jezelf naar een speler', - ['command_kill'] = 'Vermoord een speler', - ['command_save'] = 'Slaag een speler zijn spelerdata geforceerd op', - ['command_saveall'] = 'Slaag iedereen zijn spelerdata geforceerd op', - ['command_setaccountmoney'] = 'Stel geld in op een account', - ['command_setaccountmoney_amount'] = 'Amount', - ['command_setcoords'] = 'Telepeer naar coordinaten', - ['command_setcoords_x'] = 'X waarde', - ['command_setcoords_y'] = 'Y waarde', - ['command_setcoords_z'] = 'Z waarde', - ['command_setjob'] = 'Zet een speler zijn / haar job', - ['command_setjob_job'] = 'Naam', - ['command_setjob_grade'] = 'Job grade', - ['command_setjob_invalid'] = 'De job, grade of beide zijn ongeldig', - ['command_setgroup'] = 'Stel een toestemmingsgroep voor spelers in', - ['command_setgroup_group'] = 'Naam van groep', - ['commanderror_argumentmismatch'] = 'Ongeldig aantal argumenten (geslaagd %s, gezocht %s)', - ['commanderror_argumentmismatch_number'] = 'Ongeldig argument #%s gegevenstype (doorgegeven string, gewenst nummer)', - ['commanderror_argumentmismatch_string'] = 'Invalid Argument #%s data type (passed number, wanted string)', - ['commanderror_invaliditem'] = 'Ongeldig item', - ['commanderror_invalidweapon'] = 'Ongeldig wapen', - ['commanderror_console'] = 'Command kan niet worden uitgevoerd vanaf console.', - ['commanderror_invalidcommand'] = 'Ongeldig commando - /%s', - ['commanderror_invalidplayerid'] = 'Opgegeven speler is niet online', - ['commandgeneric_playerid'] = 'Speler server id', - ['command_giveammo_noweapon_found'] = '%s heeft dat wapen niet', - ['command_giveammo_weapon'] = 'Wapen naam', - ['command_giveammo_ammo'] = 'Ammo Hoeveelheid', - ['tpm_nowaypoint'] = 'Geen waypoint gezet.', - ['tpm_success'] = 'Successvol geteleporteerd', + -- Commands + ['command_bring'] = 'Breng speler naar jou', + ['command_car'] = 'Spawn een voertuig', + ['command_car_car'] = 'Voertuig model of hash', + ['command_cardel'] = 'Verwijder voertuigen in straal', + ['command_cardel_radius'] = 'Verwijderd alle voertuigen in gewenste straal', + ['command_clear'] = 'Verwijder chat berichten', + ['command_clearall'] = 'Verwijder chat berichten voor alle spelers', + ['command_clearinventory'] = 'Verwijder alle items van een speler zijn inventory', + ['command_clearloadout'] = 'Verwijder alle wapens die een speler heeft', + ['command_freeze'] = 'Freeze een speler', + ['command_unfreeze'] = 'Unfreeze een speler', + ['command_giveaccountmoney'] = 'Geef geld aan een rekening', + ['command_giveaccountmoney_account'] = 'Account om aan toe te voegen', + ['command_giveaccountmoney_amount'] = 'Bedrag om toe te voegen', + ['command_giveaccountmoney_invalid'] = 'Account Naam ongeldig', + ['command_giveitem'] = 'Geef speler een item', + ['command_giveitem_item'] = 'Item naam', + ['command_giveitem_count'] = 'Hoeveelheid', + ['command_giveweapon'] = 'Geef de speler een wapen', + ['command_giveweapon_weapon'] = 'Wapen naam', + ['command_giveweapon_ammo'] = 'Munitie Hoeveelheid', + ['command_giveweapon_hasalready'] = 'Speler heeft dit wapen al', + ['command_giveweaponcomponent'] = 'Geef wapen component aan speler', + ['command_giveweaponcomponent_component'] = 'Component naam', + ['command_giveweaponcomponent_invalid'] = 'Ongeldig wapen component', + ['command_giveweaponcomponent_hasalready'] = 'De speler heeft dit wapen component al', + ['command_giveweaponcomponent_missingweapon'] = 'De speler heeft dit wapen niet', + ['command_goto'] = 'Teleporteer jezelf naar een speler', + ['command_kill'] = 'Vermoord een speler', + ['command_save'] = 'Slaag een speler zijn spelerdata geforceerd op', + ['command_saveall'] = 'Slaag iedereen zijn spelerdata geforceerd op', + ['command_setaccountmoney'] = 'Stel geld in op een account', + ['command_setaccountmoney_amount'] = 'Hoeveelheid', + ['command_setcoords'] = 'Telepeer naar coordinaten', + ['command_setcoords_x'] = 'X waarde', + ['command_setcoords_y'] = 'Y waarde', + ['command_setcoords_z'] = 'Z waarde', + ['command_setjob'] = 'Zet een speler zijn / haar job', + ['command_setjob_job'] = 'Naam', + ['command_setjob_grade'] = 'Job grade', + ['command_setjob_invalid'] = 'De job, grade of beide zijn ongeldig', + ['command_setgroup'] = 'Stel een toestemmingsgroep voor spelers in', + ['command_setgroup_group'] = 'Naam van groep', + ['commanderror_argumentmismatch'] = 'Ongeldig aantal argumenten (geslaagd %s, gezocht %s)', + ['commanderror_argumentmismatch_number'] = 'Ongeldig argument #%s gegevenstype (doorgegeven string, gewenst nummer)', + ['commanderror_argumentmismatch_string'] = 'Invalid Argument #%s data type (doorgegeven string, gewenst nummer)', + ['commanderror_invaliditem'] = 'Ongeldig item', + ['commanderror_invalidweapon'] = 'Ongeldig wapen', + ['commanderror_console'] = 'Command kan niet worden uitgevoerd vanaf console.', + ['commanderror_invalidcommand'] = 'Ongeldig commando - /%s', + ['commanderror_invalidplayerid'] = 'Opgegeven speler is niet online', + ['commandgeneric_playerid'] = 'Speler server id', + ['command_giveammo_noweapon_found'] = '%s heeft dat wapen niet', + ['command_giveammo_weapon'] = 'Wapen naam', + ['command_giveammo_ammo'] = 'Munitie Hoeveelheid', + ['tpm_nowaypoint'] = 'Geen navigatie ingesteld.', + ['tpm_success'] = 'Successvol geteleporteerd', - ['noclip_message'] = 'Noclip is %s', - ['enabled'] = '~g~aangezet~s~', - ['disabled'] = '~r~uitgezet~s~', + ['noclip_message'] = 'Noclip is %s', + ['enabled'] = '~g~aangezet~s~', + ['disabled'] = '~r~uitgezet~s~', - -- Locale settings - ["locale_digit_grouping_symbol"] = ",", - ["locale_currency"] = "€%s", + -- Locale settings + ["locale_digit_grouping_symbol"] = ",", + ["locale_currency"] = "€%s", - -- Weapons + -- 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", + -- Melee + ["weapon_dagger"] = "Dolk", + ["weapon_bat"] = "Knuppel", + ["weapon_battleaxe"] = "Gevechtsbijl", + ["weapon_bottle"] = "Fles", + ["weapon_crowbar"] = "Koevoet", + ["weapon_flashlight"] = "Zaklamp", + ["weapon_golfclub"] = "Golfclub", + ["weapon_hammer"] = "Hamer", + ["weapon_hatchet"] = "Bijl", + ["weapon_knife"] = "Mes", + ["weapon_knuckle"] = "Boksbeugel", + ["weapon_machete"] = "Machete", + ["weapon_nightstick"] = "Wapenstok", + ["weapon_wrench"] = "Pijpsleutel", + ["weapon_poolcue"] = "Biljart Keu", + ["weapon_stone_hatchet"] = "Steenbijl", + ["weapon_switchblade"] = "Stiletto", - -- Handguns - ["weapon_appistol"] = "AP-pistool", - ["weapon_ceramicpistol"] = "Keramische pistool", - ["weapon_combatpistol"] = "Gevechtspistool", - ["weapon_doubleaction"] = "Revolver met dubbele actie", - ["weapon_navyrevolver"] = "Marine Revolver", - ["weapon_flaregun"] = "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", + -- Handguns + ["weapon_appistol"] = "AP-pistool", + ["weapon_ceramicpistol"] = "Keramische pistool", + ["weapon_combatpistol"] = "Gevechtspistool", + ["weapon_doubleaction"] = "Revolver met dubbele actie", + ["weapon_navyrevolver"] = "Marine Revolver", + ["weapon_flaregun"] = "Noodsignaalpistool", + ["weapon_gadgetpistol"] = "Gadgetpistool", + ["weapon_heavypistol"] = "Zwaar pistool", + ["weapon_revolver"] = "Zware revolver", + ["weapon_revolver_mk2"] = "Zware revolver MK2", + ["weapon_marksmanpistol"] = "Marksman-pistool", + ["weapon_pistol"] = "Pistool", + ["weapon_pistol_mk2"] = "Pistool MK2", + ["weapon_pistol50"] = "Pistool .50", + ["weapon_snspistol"] = "SNS-pistool", + ["weapon_snspistol_mk2"] = "SNS-pistool MK2", + ["weapon_stungun"] = "Taser", + ["weapon_raypistol"] = "Up-N-Atomizer", + ["weapon_vintagepistol"] = "Vintage Pistool", - -- Shotguns - ["weapon_assaultshotgun"] = "Aanvalsgeweer", - ["weapon_autoshotgun"] = "Automatisch jachtgeweer", - ["weapon_bullpupshotgun"] = "Bullpup Shotgun", - ["weapon_combatshotgun"] = "Gevechtsgeweer", - ["weapon_dbshotgun"] = "Dubbelloops jachtgeweer", - ["weapon_heavyshotgun"] = "Zwaar jachtgeweer", - ["weapon_musket"] = "Musket", - ["weapon_pumpshotgun"] = "Pompgeweer", - ["weapon_pumpshotgun_mk2"] = "Pump Shotgun MK2", - ["weapon_sawnoffshotgun"] = "Afgezaagd jachtgeweer", + -- Shotguns + ["weapon_assaultshotgun"] = "Aanvalsgeweer", + ["weapon_autoshotgun"] = "Automatisch jachtgeweer", + ["weapon_bullpupshotgun"] = "Bullpup Shotgun", + ["weapon_combatshotgun"] = "Gevechtsgeweer", + ["weapon_dbshotgun"] = "Dubbelloops jachtgeweer", + ["weapon_heavyshotgun"] = "Zwaar jachtgeweer", + ["weapon_musket"] = "Musket", + ["weapon_pumpshotgun"] = "Pompgeweer", + ["weapon_pumpshotgun_mk2"] = "Pump Shotgun MK2", + ["weapon_sawnoffshotgun"] = "Afgezaagd jachtgeweer", - -- SMG & LMG - ["weapon_assaultsmg"] = "Aanval SMG", - ["weapon_combatmg"] = "Gevecht MG", - ["weapon_combatmg_mk2"] = "Combat MG MK2", - ["weapon_combatpdw"] = "Combat PDW", - ["weapon_gusenberg"] = "Gusenberg-veger", - ["weapon_machinepistol"] = "Machinepistool", - ["weapon_mg"] = "MG", - ["weapon_microsmg"] = "Micro-SMG", - ["weapon_minismg"] = "Mini-SMG", - ["weapon_smg"] = "SMG", - ["weapon_smg_mk2"] = "SMG MK2", - ["weapon_raycarbine"] = "Onheilige Hellbringer", + -- SMG & LMG + ["weapon_assaultsmg"] = "Aanval SMG", + ["weapon_combatmg"] = "Gevecht MG", + ["weapon_combatmg_mk2"] = "Combat MG MK2", + ["weapon_combatpdw"] = "Combat PDW", + ["weapon_gusenberg"] = "Gusenberg-veger", + ["weapon_machinepistol"] = "Machinepistool", + ["weapon_mg"] = "MG", + ["weapon_microsmg"] = "Micro-SMG", + ["weapon_minismg"] = "Mini-SMG", + ["weapon_smg"] = "SMG", + ["weapon_smg_mk2"] = "SMG MK2", + ["weapon_raycarbine"] = "Onheilige Hellbringer", - -- Rifles - ["weapon_advancedrifle"] = "Geavanceerd geweer", - ["weapon_assaultrifle"] = "Aanvalsgeweer", - ["weapon_assaultrifle_mk2"] = "Aanvalsgeweer MK2", - ["weapon_bullpuprifle"] = "Bullpup-geweer", - ["weapon_bullpuprifle_mk2"] = "Bullpup-geweer MK2", - ["weapon_carbinerifle"] = "Kabinet geweer", - ["weapon_carbinerifle_mk2"] = "Kabinet geweer MK2", - ["weapon_compactrifle"] = "Compact geweer", - ["weapon_militaryrifle"] = "Militair geweer", - ["weapon_specialcarbine"] = "Speciale karabijn", - ["weapon_specialcarbine_mk2"] = "Speciale karabijn MK2", + -- Rifles + ["weapon_advancedrifle"] = "Geavanceerd geweer", + ["weapon_assaultrifle"] = "Aanvalsgeweer", + ["weapon_assaultrifle_mk2"] = "Aanvalsgeweer MK2", + ["weapon_bullpuprifle"] = "Bullpup-geweer", + ["weapon_bullpuprifle_mk2"] = "Bullpup-geweer MK2", + ["weapon_carbinerifle"] = "Kabinet geweer", + ["weapon_carbinerifle_mk2"] = "Kabinet geweer MK2", + ["weapon_compactrifle"] = "Compact geweer", + ["weapon_militaryrifle"] = "Militair geweer", + ["weapon_specialcarbine"] = "Speciale karabijn", + ["weapon_specialcarbine_mk2"] = "Speciale karabijn MK2", - -- Sniper - ["weapon_heavysniper"] = "Zware sluipschutter", - ["weapon_heavysniper_mk2"] = "Zware Sniper MK2", - ["weapon_marksmanrifle"] = "Schuttersgeweer", - ["weapon_marksmanrifle_mk2"] = "Schuttersgeweer MK2", - ["weapon_sniperrifle"] = "Sniper Rifle", + -- Sniper + ["weapon_heavysniper"] = "Zware sluipschutter", + ["weapon_heavysniper_mk2"] = "Zware Sniper MK2", + ["weapon_marksmanrifle"] = "Schuttersgeweer", + ["weapon_marksmanrifle_mk2"] = "Schuttersgeweer MK2", + ["weapon_sniperrifle"] = "Sniper Rifle", - -- Heavy / Launchers - ["weapon_compactlauncher"] = "Compacte Launcher", - ["weapon_firework"] = "Vuurwerkstarter", - ["weapon_grenadelauncher"] = "Granaatwerper", - ["weapon_hominglauncher"] = "Homing Launcher", - ["weapon_minigun"] = "Minigun", - ["weapon_railgun"] = "Spoorgeweer", - ["weapon_rpg"] = "Raketwerper", - ["weapon_rayminigun"] = "Weduwemaker", + -- Heavy / Launchers + ["weapon_compactlauncher"] = "Compacte Launcher", + ["weapon_firework"] = "Vuurwerkstarter", + ["weapon_grenadelauncher"] = "Granaatwerper", + ["weapon_hominglauncher"] = "Homing Launcher", + ["weapon_minigun"] = "Minigun", + ["weapon_railgun"] = "Spoorgeweer", + ["weapon_rpg"] = "Raketwerper", + ["weapon_rayminigun"] = "Weduwemaker", - -- Criminal Enterprises DLC - ["weapon_metaldetector"] = "Metaal Detector", - ["weapon_precisionrifle"] = "Precisiegeweer", - ["weapon_tactilerifle"] = "Service Carbine", + -- Criminal Enterprises DLC + ["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 + -- Drug Wars DLC + ["weapon_candycane"] = "Snoep stok", + ["weapon_acidpackage"] = "LSD pakket", + ["weapon_pistolxm3"] = "WM 29 Pistool", + ["weapon_railgunxm3"] = "Railgun", - -- Thrown - ["weapon_ball"] = "Honkbal", - ["weapon_bzgas"] = "BZ-gas", - ["weapon_flare"] = "Flare", - ["weapon_grenade"] = "Granaat", - ["weapon_petrolcan"] = "Jerrycan", - ["weapon_hazardcan"] = "Gevaarlijke jerrycan", - ["weapon_molotov"] = "Molotovcocktail", - ["weapon_proxmine"] = "Nabijheidsmijn", - ["weapon_pipebomb"] = "Pijpbom", - ["weapon_snowball"] = "Sneeuwbal", - ["weapon_stickybomb"] = "Kleefbom", - ["weapon_smokegrenade"] = "Traangas", + -- Thrown + ["weapon_ball"] = "Honkbal", + ["weapon_bzgas"] = "BZ-gas", + ["weapon_flare"] = "Flare", + ["weapon_grenade"] = "Granaat", + ["weapon_petrolcan"] = "Jerrycan", + ["weapon_hazardcan"] = "Gevaarlijke jerrycan", + ["weapon_molotov"] = "Molotovcocktail", + ["weapon_proxmine"] = "Nabijheidsmijn", + ["weapon_pipebomb"] = "Pijpbom", + ["weapon_snowball"] = "Sneeuwbal", + ["weapon_stickybomb"] = "Kleefbom", + ["weapon_smokegrenade"] = "Traangas", - -- Special - ["weapon_firebluser"] = "Brandblusser", - ["weapon_digiscanner"] = "Digitale scanner", - ["weapon_garbagebag"] = "Vuilniszak", - ["weapon_handcuffs"] = "Handboeien", - ["gadget_nightvision"] = "Nachtzicht", - ["gadget_parachute"] = "parachute", + -- Special + ["weapon_firebluser"] = "Brandblusser", + ["weapon_digiscanner"] = "Digitale scanner", + ["weapon_garbagebag"] = "Vuilniszak", + ["weapon_handcuffs"] = "Handboeien", + ["gadget_nightvision"] = "Nachtzicht", + ["gadget_parachute"] = "parachute", - -- Weapon Components - ["component_knuckle_base"] = "basismodel", - ["component_knuckle_pimp"] = "de pooier", - ["component_knuckle_ballas"] = "de ballen", - ["component_knuckle_dollar"] = "de Hustler", - ["component_knuckle_diamond"] = "de rots", - ["component_knuckle_hate"] = "de Hater", - ["component_knuckle_love"] = "de minnaar", - ["component_knuckle_player"] = "de speler", - ["component_knuckle_king"] = "de koning", - ["component_knuckle_vagos"] = "de Vagos", + -- 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_luxary_finish"] = "luxe wapenafwerking", - ["component_handle_default"] = "standaard handvat", - ["component_handle_vip"] = "VIP-handvat", - ["component_handle_bodyguard"] = "bodyguard-handvat", + ["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_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_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_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_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_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_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_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_flashlight"] = "zaklamp", + ["component_grip"] = "grip", - ["component_barrel_default"] = "standaard handvat", - ["component_barrel_heavy"] = "zware handvat", + ["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_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_shells_default"] = "standaard shells", + ["component_shells_incendiary"] = "draken ademschelpen", + ["component_shells_armor"] = "stalen Buckshot Shells", + ["component_shells_hollowpoint"] = "flechette schelpen", + ["component_shells_explosive"] = "explosieve slakkenhuizen", - -- Weapon Ammo - ["ammo_rounds"] = "ronde(n)", - ["ammo_shells"] = "huls/(zen)", - ["ammo_charge"] = "charge", - ["ammo_petrol"] = "liters brandstof", - ["ammo_firework"] = "vuurwerkpijl(en)", - ["ammo_rockets"] = "raket(ten)", - ["ammo_grenadelauncher"] = "granaat(en)", - ["ammo_grenade"] = "granaat(en)", - ["ammo_stickybomb"] = "bom(men)", - ["ammo_pipebomb"] = "bom(men)", - ["ammo_smokebomb"] = "bom(men)", - ["ammo_molotov"] = "cocktail(s)", - ["ammo_proxmine"] = "mijn(en)", - ["ammo_bzgas"] = "blik(ken)", - ["ammo_ball"] = "bal(len)", - ["ammo_snowball"] = "sneeuwbal(len)", - ["ammo_flare"] = "flare(s)", - ["ammo_flaregun"] = "flare(s)", + -- Weapon Ammo + ["ammo_rounds"] = "ronde(n)", + ["ammo_shells"] = "huls/(zen)", + ["ammo_charge"] = "charge", + ["ammo_petrol"] = "liters brandstof", + ["ammo_firework"] = "vuurwerkpijl(en)", + ["ammo_rockets"] = "raket(ten)", + ["ammo_grenadelauncher"] = "granaat(en)", + ["ammo_grenade"] = "granaat(en)", + ["ammo_stickybomb"] = "bom(men)", + ["ammo_pipebomb"] = "bom(men)", + ["ammo_smokebomb"] = "bom(men)", + ["ammo_molotov"] = "cocktail(s)", + ["ammo_proxmine"] = "mijn(en)", + ["ammo_bzgas"] = "blik(ken)", + ["ammo_ball"] = "bal(len)", + ["ammo_snowball"] = "sneeuwbal(len)", + ["ammo_flare"] = "flare(s)", + ["ammo_flaregun"] = "flare(s)", - -- Weapon Tints - ["tint_default"] = "standaard skin", - ["tint_green"] = "groene skin", - ["tint_gold"] = "goude skin", - ["tint_pink"] = "roze skin", - ["tint_army"] = "legerprint", - ["tint_lspd"] = "blauwe skin", - ["tint_orange"] = "oranje skin", - ["tint_platinum"] = "platina skin", -} + -- 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", +} \ No newline at end of file diff --git a/[core]/es_extended/locales/pl.lua b/[core]/es_extended/locales/pl.lua index dbea4a26..d738239a 100644 --- a/[core]/es_extended/locales/pl.lua +++ b/[core]/es_extended/locales/pl.lua @@ -51,12 +51,16 @@ Locales["pl"] = { ["account_money"] = "pieniądze", ["act_imp"] = "działanie niemożliwe", ["in_vehicle"] = "nie możesz przekazywać przedmiotów w pojeździe", + ["not_in_vehicle"] = "Cannot Perform Action, Player isn't in a vehicle", -- Commands ['command_car'] = 'przywołaj pojazd', ['command_car_car'] = 'nazwa lub hash przywołanego pojazdu', ['command_cardel'] = 'usuń pojazd w pobliżu', ['command_cardel_radius'] = 'opcjonalnie usuń każdy pojazd w obszarze', + ['command_repair'] = 'Repair your vehicle', + ['command_repair_success'] = 'Successfully repaired vehicle', + ['command_repair_success_target'] = 'An admin repaired your vehicle', ['command_clear'] = 'wyczyść czat', ['command_clearall'] = 'wyczyść czat dla wszystkich graczy', ['command_clearinventory'] = 'wyczyść ekwipunek gracza', @@ -183,6 +187,7 @@ Locales["pl"] = { ["gadget_parachute"] = "spadochron", ["weapon_flare"] = "pistolet sygnałowy", ["weapon_doubleaction"] = "double-Action Revolver", + ["weapon_heavyrifle"] = "Heavy Rifle", -- Not Translated -- Weapon Components ["component_clip_default"] = "domyślny tłumik", diff --git a/[core]/es_extended/locales/sl.lua b/[core]/es_extended/locales/sl.lua index 0e5de612..0fe41be5 100644 --- a/[core]/es_extended/locales/sl.lua +++ b/[core]/es_extended/locales/sl.lua @@ -52,6 +52,7 @@ Locales["sl"] = { ["act_imp"] = "Dejanja ni mogoče izvesti", ["in_vehicle"] = "Dejanja ni mogoče izvesti, Oseba je v vozilu", + ["not_in_vehicle"] = "Cannot Perform Action, Player isn't in a vehicle", -- Commands ['command_bring'] = 'Teleportiraj osebo do sebe', @@ -59,6 +60,9 @@ Locales["sl"] = { ['command_car_car'] = 'Koda vozila', ['command_cardel'] = 'Odstranite vozila v bližini', ['command_cardel_radius'] = 'Odstrani vsa vozila v določenem radiju', + ['command_repair'] = 'Repair your vehicle', + ['command_repair_success'] = 'Successfully repaired vehicle', + ['command_repair_success_target'] = 'An admin repaired your vehicle', ['command_clear'] = 'Odstrani vsa sporocila v CHATU', ['command_clearall'] = 'Počisti besedilo klepeta za vse igralce', ['command_clearinventory'] = 'Vzemi vse stvari iz osebove shrambe', @@ -200,6 +204,7 @@ Locales["sl"] = { ["weapon_militaryrifle"] = "Military Rifle", ["weapon_specialcarbine"] = "Special Carbine", ["weapon_specialcarbine_mk2"] = "Special Carbine MK2", + ["weapon_heavyrifle"] = "Heavy Rifle", -- Not Translated -- Sniper ["weapon_heavysniper"] = "Heavy Sniper", diff --git a/[core]/es_extended/locales/sr.lua b/[core]/es_extended/locales/sr.lua index 5a5e8b39..2813b846 100644 --- a/[core]/es_extended/locales/sr.lua +++ b/[core]/es_extended/locales/sr.lua @@ -52,6 +52,7 @@ Locales["sr"] = { ["act_imp"] = "Ne možete izvršiti radnju", ["in_vehicle"] = "Ne možete uraditi to dok je igrač u vozilu", + ["not_in_vehicle"] = "Cannot Perform Action, Player isn't in a vehicle", -- Commands ['command_bring'] = 'TP-ajte igrača do Vas', @@ -59,6 +60,9 @@ Locales["sr"] = { ['command_car_car'] = 'Model ili hash vozila', ['command_cardel'] = 'Obrišite vozilo u blizini', ['command_cardel_radius'] = 'Obrišite sva vozila unutar navedenog radiusa', + ['command_repair'] = 'Repair your vehicle', + ['command_repair_success'] = 'Successfully repaired vehicle', + ['command_repair_success_target'] = 'An admin repaired your vehicle', ['command_clear'] = 'Obrišite chat', ['command_clearall'] = 'Obrišite chat za sve igrače', ['command_clearinventory'] = 'Obrišite sve stvari iz inventara igrača', @@ -200,6 +204,7 @@ Locales["sr"] = { ["weapon_militaryrifle"] = "Military Rifle", ["weapon_specialcarbine"] = "Special Carbine", ["weapon_specialcarbine_mk2"] = "Special Carbine MK2", + ["weapon_heavyrifle"] = "Heavy Rifle", -- Not Translated -- Sniper ["weapon_heavysniper"] = "Heavy Sniper", diff --git a/[core]/es_extended/locales/zh-cn.lua b/[core]/es_extended/locales/zh-cn.lua index e7500981..e5093c25 100644 --- a/[core]/es_extended/locales/zh-cn.lua +++ b/[core]/es_extended/locales/zh-cn.lua @@ -52,6 +52,7 @@ Locales["zh-cn"] = { ["act_imp"] = "操作失败", ["in_vehicle"] = "请离开当前载具", + ["not_in_vehicle"] = "Cannot Perform Action, Player isn't in a vehicle", -- Commands ['command_bring'] = '传送玩家到您身边', @@ -59,6 +60,9 @@ Locales["zh-cn"] = { ['command_car_car'] = '生成载具的模型名称或哈希值', ['command_cardel'] = '删除附近载具', ['command_cardel_radius'] = '可选,删除指定半径内的所有载具', + ['command_repair'] = 'Repair your vehicle', + ['command_repair_success'] = 'Successfully repaired vehicle', + ['command_repair_success_target'] = 'An admin repaired your vehicle', ['command_clear'] = '清除聊天记录', ['command_clearall'] = '清除所有玩家的聊天记录', ['command_clearinventory'] = '清除玩家库存', @@ -200,6 +204,7 @@ Locales["zh-cn"] = { ["weapon_militaryrifle"] = "军用步枪", ["weapon_specialcarbine"] = "特制卡宾步枪", ["weapon_specialcarbine_mk2"] = "特制卡宾步枪-MK2", + ["weapon_heavyrifle"] = "Heavy Rifle", -- Not Translated -- Sniper ["weapon_heavysniper"] = "重型狙击步枪", diff --git a/[core]/es_extended/server/classes/player.lua b/[core]/es_extended/server/classes/player.lua index 62c12cf1..49b600cf 100644 --- a/[core]/es_extended/server/classes/player.lua +++ b/[core]/es_extended/server/classes/player.lua @@ -20,6 +20,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, self.weight = weight self.maxWeight = Config.MaxWeight self.metadata = metadata + self.admin = Core.IsPlayerAdmin(playerId) 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)) @@ -462,7 +463,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, function self.removeWeapon(weaponName) local weaponLabel, playerPed = nil, GetPlayerPed(self.source) - if not playerPed then + if not playerPed then return print("[^1ERROR^7] xPlayer.removeWeapon ^5invalid^7 player ped!") end @@ -473,7 +474,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, for _, v2 in ipairs(v.components) do self.removeWeaponComponent(weaponName, v2) end - + local weaponHash = joaat(v.name) RemoveWeaponFromPed(playerPed, weaponHash) @@ -564,8 +565,8 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, end end - function self.showNotification(msg, type, length) - self.triggerEvent('esx:showNotification', msg, type, length) + function self.showNotification(msg, notifyType, length) + self.triggerEvent('esx:showNotification', msg, notifyType, length) end function self.showAdvancedNotification(sender, subject, msg, textureDict, iconType, flash, saveToBrief, hudColorIndex) @@ -643,33 +644,59 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, return print(("[^1ERROR^7] xPlayer.setMeta ^5value^7 should be ^5string^7 as a subIndex!"):format(value)) end + if not self.metadata[index] or type(self.metadata[index]) ~= "table" then + self.metadata[index] = { } + end + + self.metadata[index] = type(self.metadata[index]) == 'table' and self.metadata[index] or {} self.metadata[index][value] = subValue end - - self.triggerEvent('esx:updatePlayerData', 'metadata', self.metadata) Player(self.source).state:set('metadata', self.metadata, true) end - function self.clearMeta(index) + function self.clearMeta(index, subValues) if not index then - return print(("[^1ERROR^7] xPlayer.clearMeta ^5%s^7 is Missing!"):format(index)) + return print("[^1ERROR^7] xPlayer.clearMeta ^5index^7 is Missing!") end - - if type(index) == 'table' then - for _, val in pairs(index) do - self.clearMeta(val) + + if type(index) ~= "string" then + return print("[^1ERROR^7] xPlayer.clearMeta ^5index^7 should be ^5string^7!") + end + + local metaData = self.metadata[index] + if metaData == nil then + return Config.EnableDebug and print(("[^1ERROR^7] xPlayer.clearMeta ^5%s^7 does not exist!"):format(index)) or nil + end + + if not subValues then + -- If no subValues is provided, we will clear the entire value in the metaData table + self.metadata[index] = nil + elseif type(subValues) == "string" then + -- If subValues is a string, we will clear the specific subValue within the table + if type(metaData) == "table" then + metaData[subValues] = nil + else + return print(("[^1ERROR^7] xPlayer.clearMeta ^5%s^7 is not a table! Cannot clear subValue ^5%s^7."):format(index, subValues)) end - - return + elseif type(subValues) == "table" then + -- If subValues is a table, we will clear multiple subValues within the table + for i = 1, #subValues do + local subValue = subValues[i] + if type(subValue) == "string" then + if type(metaData) == "table" then + metaData[subValue] = nil + else + print(("[^1ERROR^7] xPlayer.clearMeta ^5%s^7 is not a table! Cannot clear subValue ^5%s^7."):format(index, subValue)) + end + else + print(("[^1ERROR^7] xPlayer.clearMeta subValues should contain ^5string^7, received ^5%s^7, skipping..."):format(type(subValue))) + end + end + else + return print(("[^1ERROR^7] xPlayer.clearMeta ^5subValues^7 should be ^5string^7 or ^5table^7, received ^5%s^7!"):format(type(subValues))) end - - if not self.metadata[index] then - return print(("[^1ERROR^7] xPlayer.clearMeta ^5%s^7 not exist!"):format(index)) - end - - self.metadata[index] = nil - self.triggerEvent('esx:updatePlayerData', 'metadata', self.metadata) + Player(self.source).state:set('metadata', self.metadata, true) end diff --git a/[core]/es_extended/server/commands.lua b/[core]/es_extended/server/commands.lua index 86c64b46..69817266 100644 --- a/[core]/es_extended/server/commands.lua +++ b/[core]/es_extended/server/commands.lua @@ -1,9 +1,9 @@ -ESX.RegisterCommand('setcoords', 'admin', function(xPlayer, args) +ESX.RegisterCommand({'setcoords', 'tp'}, '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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", 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 }, @@ -13,9 +13,9 @@ 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' } + { name = 'x', help = TranslateCap('command_setcoords_x'), type = 'coordinate' }, + { name = 'y', help = TranslateCap('command_setcoords_y'), type = 'coordinate' }, + { name = 'z', help = TranslateCap('command_setcoords_z'), type = 'coordinate' } } }) @@ -27,11 +27,11 @@ ESX.RegisterCommand('setjob', 'admin', function(xPlayer, args, showError) 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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, { name = "Target", value = args.playerId.name, inline = true }, - { name = "Job", value = args.playerId, inline = true }, - { name = "Grade", value = args.playerId, inline = true }, + { name = "Job", value = args.job, inline = true }, + { name = "Grade", value = args.grade, inline = true }, }) end end, true, { @@ -75,8 +75,8 @@ ESX.RegisterCommand('car', 'admin', function(xPlayer, args, showError) 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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, { name = "Vehicle", value = args.car, inline = true } }) end @@ -120,8 +120,8 @@ ESX.RegisterCommand({ 'cardel', 'dv' }, 'admin', function(xPlayer, args) end 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 }, + { name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, }) end end, false, { @@ -132,6 +132,34 @@ end, false, { } }) +ESX.RegisterCommand({ 'fix', 'repair' }, 'admin', function(xPlayer, args, showError) + local xTarget = args.playerId + local ped = GetPlayerPed(xTarget.source) + local pedVehicle = GetVehiclePedIsIn(ped, false) + if not pedVehicle or GetPedInVehicleSeat(pedVehicle, -1) ~= ped then + showError(TranslateCap('not_in_vehicle')) + return + end + xTarget.triggerEvent("esx:repairPedVehicle") + xPlayer.showNotification(TranslateCap('command_repair_success'), true, false, 140) + if xPlayer.source ~= xTarget.source then + xTarget.showNotification(TranslateCap('command_repair_success_target'), true, false, 140) + end + if Config.AdminLogging then + ESX.DiscordLogFields("UserActions", "Fix Vehicle /fix Triggered!", "pink", { + { name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, + { name = "Target", value = xTarget.name, inline = true }, + }) + end +end, true, { + help = TranslateCap('command_repair'), + validate = false, + arguments = { + { name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' } + } +}) + ESX.RegisterCommand('setaccountmoney', 'admin', function(xPlayer, args, showError) if not args.playerId.getAccount(args.account) then return showError(TranslateCap('command_giveaccountmoney_invalid')) @@ -139,8 +167,8 @@ ESX.RegisterCommand('setaccountmoney', 'admin', function(xPlayer, args, showErro 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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, { name = "Target", value = args.playerId.name, inline = true }, { name = "Account", value = args.account, inline = true }, { name = "Amount", value = args.amount, inline = true }, @@ -163,8 +191,8 @@ ESX.RegisterCommand('giveaccountmoney', 'admin', function(xPlayer, args, showErr 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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, { name = "Target", value = args.playerId.name, inline = true }, { name = "Account", value = args.account, inline = true }, { name = "Amount", value = args.amount, inline = true }, @@ -187,8 +215,8 @@ ESX.RegisterCommand('removeaccountmoney', 'admin', function(xPlayer, args, showE 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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, { name = "Target", value = args.playerId.name, inline = true }, { name = "Account", value = args.account, inline = true }, { name = "Amount", value = args.amount, inline = true }, @@ -209,8 +237,8 @@ if not Config.OxInventory then args.playerId.addInventoryItem(args.item, args.count) 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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, { name = "Target", value = args.playerId.name, inline = true }, { name = "Item", value = args.item, inline = true }, { name = "Quantity", value = args.count, inline = true }, @@ -233,8 +261,8 @@ if not Config.OxInventory then 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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, { name = "Target", value = args.playerId.name, inline = true }, { name = "Weapon", value = args.weapon, inline = true }, { name = "Ammo", value = args.ammo, inline = true }, @@ -257,8 +285,8 @@ if not Config.OxInventory then 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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, { name = "Target", value = args.playerId.name, inline = true }, { name = "Weapon", value = args.weapon, inline = true }, { name = "Ammo", value = args.ammo, inline = true }, @@ -286,8 +314,8 @@ if not Config.OxInventory then 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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, { name = "Target", value = args.playerId.name, inline = true }, { name = "Weapon", value = args.weaponName, inline = true }, { name = "Component", value = args.componentName, inline = true }, @@ -319,8 +347,8 @@ ESX.RegisterCommand({ 'clearall', 'clsall' }, 'admin', function(xPlayer) TriggerClientEvent('chat:clear', -1) 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 }, + { name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, }) end end, true, { help = TranslateCap('command_clearall') }) @@ -339,8 +367,8 @@ if not Config.OxInventory then 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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, { name = "Target", value = args.playerId.name, inline = true }, }) end @@ -359,8 +387,8 @@ if not Config.OxInventory then 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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, { name = "Target", value = args.playerId.name, inline = true }, }) end @@ -382,8 +410,8 @@ ESX.RegisterCommand('setgroup', 'admin', function(xPlayer, args) args.playerId.setGroup(args.group) 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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, { name = "Target", value = args.playerId.name, inline = true }, { name = "Group", value = args.group, inline = true }, }) @@ -423,7 +451,6 @@ end, true) ESX.RegisterCommand('info', { "user", "admin" }, function(xPlayer) local job = xPlayer.getJob().name - local jobgrade = xPlayer.getJob().grade_name 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) @@ -440,8 +467,8 @@ ESX.RegisterCommand('tpm', "admin", function(xPlayer) xPlayer.triggerEvent("esx:tpm") 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 }, + { name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, }) end end, true) @@ -451,8 +478,8 @@ ESX.RegisterCommand('goto', "admin", function(xPlayer, args) 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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, { name = "Target", value = args.playerId.name, inline = true }, { name = "Target Coords", value = targetCoords, inline = true }, }) @@ -471,8 +498,8 @@ ESX.RegisterCommand('bring', "admin", function(xPlayer, args) 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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, { name = "Target", value = args.playerId.name, inline = true }, { name = "Target Coords", value = targetCoords, inline = true }, }) @@ -489,8 +516,8 @@ 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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, { name = "Target", value = args.playerId.name, inline = true }, }) end @@ -506,8 +533,8 @@ 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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, { name = "Target", value = args.playerId.name, inline = true }, }) end @@ -523,8 +550,8 @@ 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 = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, { name = "Target", value = args.playerId.name, inline = true }, }) end @@ -540,18 +567,17 @@ 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 }, + { name = "Player", value = xPlayer and xPlayer.name or "Server Console", inline = true }, + { name = "ID", value = xPlayer and xPlayer.source or "Unknown ID", inline = true }, }) end end, false) ESX.RegisterCommand('players', "admin", function() - local xPlayers = ESX.GetExtendedPlayers() -- Returns all xPlayers + local xPlayers = ESX.GetExtendedPlayers() -- Returns all xPlayers print(('^5%s^2 online player(s)^0'):format(#xPlayers)) - for i = 1, #(xPlayers) do + 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 + 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 c0749590..1f87bf3b 100644 --- a/[core]/es_extended/server/common.lua +++ b/[core]/es_extended/server/common.lua @@ -1,6 +1,7 @@ ESX = {} ESX.Players = {} ESX.Jobs = {} +ESX.JobsPlayerCount = {} ESX.Items = {} Core = {} Core.UsableItemsCallbacks = {} @@ -31,8 +32,9 @@ end local function StartDBSync() CreateThread(function() + local interval = 10 * 60 * 1000 while true do - Wait(10 * 60 * 1000) + Wait(interval) Core.SavePlayers() end end) diff --git a/[core]/es_extended/server/functions.lua b/[core]/es_extended/server/functions.lua index d70369a1..49ee3a8e 100644 --- a/[core]/es_extended/server/functions.lua +++ b/[core]/es_extended/server/functions.lua @@ -113,11 +113,18 @@ function ESX.RegisterCommand(name, group, cb, allowConsole, suggestion) local merge = table.concat(args, " ") newArgs[v.name] = string.sub(merge, lenght) - end + elseif v.type == 'coordinate' then + local coord = tonumber(args[k]:match("(-?%d+%.?%d*)")) + if(not coord) then + error = TranslateCap('commanderror_argumentmismatch_number', k) + else + newArgs[v.name] = coord + end + end end --backwards compatibility - if not v.validate and not v.type then + if v.validate ~= nil and not v.validate then error = nil end @@ -157,7 +164,14 @@ function ESX.RegisterCommand(name, group, cb, allowConsole, suggestion) end end +local function updateHealthAndArmorInMetadata(xPlayer) + local ped = GetPlayerPed(xPlayer.source) + xPlayer.setMeta('health', GetEntityHealth(ped)) + xPlayer.setMeta('armor',GetPedArmour(ped)) +end + function Core.SavePlayer(xPlayer, cb) + updateHealthAndArmorInMetadata(xPlayer) local parameters = { json.encode(xPlayer.getAccounts(true)), xPlayer.job.name, @@ -195,6 +209,7 @@ function Core.SavePlayers(cb) local parameters = {} for _, xPlayer in pairs(ESX.Players) do + updateHealthAndArmorInMetadata(xPlayer) parameters[#parameters + 1] = { json.encode(xPlayer.getAccounts(true)), xPlayer.job.name, @@ -241,8 +256,6 @@ local function checkTable(key, val, player, xPlayers) end function ESX.GetExtendedPlayers(key, val) - if not key then return ESX.Players end - local xPlayers = {} if type(val) == "table" then for _, v in pairs(ESX.Players) do @@ -250,7 +263,11 @@ function ESX.GetExtendedPlayers(key, val) end else for _, v in pairs(ESX.Players) do - if (key == 'job' and v.job.name == val) or v[key] == val then + 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 @@ -259,6 +276,34 @@ function ESX.GetExtendedPlayers(key, val) return xPlayers end +function ESX.GetNumPlayers(key, val) + if not key then + return #GetPlayers() + end + + if type(val) == "table" then + local numPlayers = {} + if key == "job" then + for _, v in ipairs(val) do + numPlayers[v] = (ESX.JobsPlayerCount[v] or 0) + end + return numPlayers + end + + local filteredPlayers = ESX.GetExtendedPlayers(key, val) + for i, v in pairs(filteredPlayers) do + numPlayers[i] = (#v or 0) + end + return numPlayers + end + + if key == "job" then + return (ESX.JobsPlayerCount[val] or 0) + end + + return #ESX.GetExtendedPlayers(key, val) +end + function ESX.GetPlayerFromId(source) return ESX.Players[tonumber(source)] end @@ -272,12 +317,9 @@ function ESX.GetIdentifier(playerId) 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 + + local identifier = GetPlayerIdentifierByType(playerId, 'license') + return identifier and identifier:gsub('license:', '') end ---@param model string|number @@ -469,19 +511,19 @@ function ESX.GetUsableItems() end if not Config.OxInventory then - function ESX.CreatePickup(type, name, count, label, playerId, components, tintIndex) + function ESX.CreatePickup(itemType, name, count, label, playerId, components, tintIndex, coords) local pickupId = (Core.PickupId == 65635 and 0 or Core.PickupId + 1) local xPlayer = ESX.Players[playerId] - local coords = xPlayer.getCoords() + coords = ( (type(coords) == "vector3" or type(coords) == "vector4") and coords.xyz or xPlayer.getCoords(true)) - Core.Pickups[pickupId] = { type = type, name = name, count = count, label = label, coords = coords } + Core.Pickups[pickupId] = { type = itemType, name = name, count = count, label = label, coords = coords } - if type == 'item_weapon' then + if itemType == '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) + TriggerClientEvent('esx:createPickup', -1, pickupId, label, coords, itemType, name, components, tintIndex) Core.PickupId = pickupId end end diff --git a/[core]/es_extended/server/main.lua b/[core]/es_extended/server/main.lua index d1bc6e0f..b03092df 100644 --- a/[core]/es_extended/server/main.lua +++ b/[core]/es_extended/server/main.lua @@ -9,6 +9,10 @@ if Config.Multichar then newPlayer = newPlayer .. ', `firstname` = ?, `lastname` = ?, `dateofbirth` = ?, `sex` = ?, `height` = ?' end +if Config.StartingInventoryItems then + newPlayer = newPlayer .. ', `inventory` = ?' +end + if Config.Multichar or Config.Identity then loadPlayer = loadPlayer .. ', `firstname`, `lastname`, `dateofbirth`, `sex`, `height`' end @@ -78,16 +82,15 @@ function createESXPlayer(identifier, playerId, data) 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) + local parameters = Config.Multichar and { json.encode(accounts), identifier, defaultGroup, data.firstname, data.lastname, data.dateofbirth, data.sex, data.height } or { json.encode(accounts), identifier, defaultGroup } + + if Config.StartingInventoryItems then + table.insert(parameters, json.encode(Config.StartingInventoryItems)) end + + MySQL.prepare(newPlayer, parameters, function() + loadESXPlayer(identifier, playerId, true) + end) end if not Config.Multichar then @@ -322,6 +325,12 @@ function loadESXPlayer(identifier, playerId, isNew) xPlayer.set('height', userData.height) end end + --saved player health and armor in metadata + local ped = GetPlayerPed(xPlayer.source) + if ped then + xPlayer.setMeta('health', xPlayer.getMeta('health') or GetEntityHealth(ped)) + xPlayer.setMeta('armor', xPlayer.getMeta('armor') or GetPedArmour(ped)) + end TriggerEvent('esx:playerLoaded', playerId, xPlayer, isNew) @@ -377,7 +386,10 @@ AddEventHandler('playerDropped', function(reason) if xPlayer then TriggerEvent('esx:playerDropped', playerId, reason) - + local job = xPlayer.getJob().name + local currentJob = ESX.JobsPlayerCount[job] + ESX.JobsPlayerCount[job] = ((currentJob and currentJob > 0) and currentJob or 1) -1 + GlobalState[("%s:count"):format(job)] = ESX.JobsPlayerCount[job] Core.playersByIdentifier[xPlayer.identifier] = nil Core.SavePlayer(xPlayer, function() ESX.Players[playerId] = nil @@ -385,6 +397,26 @@ AddEventHandler('playerDropped', function(reason) end end) +AddEventHandler("esx:playerLoaded", function(playerId, xPlayer, isNew) + local job = xPlayer.getJob().name + local jobKey = ("%s:count"):format(job) + + ESX.JobsPlayerCount[job] = (ESX.JobsPlayerCount[job] or 0) +1 + GlobalState[jobKey] = ESX.JobsPlayerCount[job] +end) + +AddEventHandler("esx:setJob", function(src, job, lastJob) + local lastJobKey = ('%s:count'):format(lastJob.name) + local jobKey = ('%s:count'):format(job.name) + local currentLastJob = ESX.JobsPlayerCount[lastJob.name] + + ESX.JobsPlayerCount[lastJob.name] = ((currentLastJob and currentLastJob > 0) and currentLastJob or 1) -1 + ESX.JobsPlayerCount[job.name] = (ESX.JobsPlayerCount[job.name] or 0) + 1 + + GlobalState[lastJobKey] = ESX.JobsPlayerCount[lastJob.name] + GlobalState[jobKey] = ESX.JobsPlayerCount[job.name] +end) + AddEventHandler('esx:playerLogout', function(playerId, cb) local xPlayer = ESX.GetPlayerFromId(playerId) if xPlayer then @@ -412,7 +444,7 @@ if not Config.OxInventory then end) RegisterNetEvent('esx:giveInventoryItem') - AddEventHandler('esx:giveInventoryItem', function(target, type, itemName, itemCount) + AddEventHandler('esx:giveInventoryItem', function(target, itemType, itemName, itemCount) local playerId = source local sourceXPlayer = ESX.GetPlayerFromId(playerId) local targetXPlayer = ESX.GetPlayerFromId(target) @@ -422,7 +454,7 @@ if not Config.OxInventory then return end - if type == 'item_standard' then + if itemType == 'item_standard' then local sourceItem = sourceXPlayer.getInventoryItem(itemName) if itemCount > 0 and sourceItem.count >= itemCount then @@ -438,7 +470,7 @@ if not Config.OxInventory then else sourceXPlayer.showNotification(TranslateCap('imp_invalid_quantity')) end - elseif type == 'item_account' then + elseif itemType == '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) @@ -449,7 +481,7 @@ if not Config.OxInventory then else sourceXPlayer.showNotification(TranslateCap('imp_invalid_amount')) end - elseif type == 'item_weapon' then + elseif itemType == 'item_weapon' then if sourceXPlayer.hasWeapon(itemName) then local weaponLabel = ESX.GetWeaponLabel(itemName) if not targetXPlayer.hasWeapon(itemName) then @@ -482,7 +514,7 @@ if not Config.OxInventory then targetXPlayer.showNotification(TranslateCap('received_weapon_hasalready', sourceXPlayer.name, weaponLabel)) end end - elseif type == 'item_ammo' then + elseif itemType == 'item_ammo' then if sourceXPlayer.hasWeapon(itemName) then local _, weapon = sourceXPlayer.getWeapon(itemName) @@ -509,11 +541,11 @@ if not Config.OxInventory then end) RegisterNetEvent('esx:removeInventoryItem') - AddEventHandler('esx:removeInventoryItem', function(type, itemName, itemCount) + AddEventHandler('esx:removeInventoryItem', function(itemType, itemName, itemCount) local playerId = source local xPlayer = ESX.GetPlayerFromId(playerId) - if type == 'item_standard' then + if itemType == 'item_standard' then if itemCount == nil or itemCount < 1 then xPlayer.showNotification(TranslateCap('imp_invalid_quantity')) else @@ -528,7 +560,7 @@ if not Config.OxInventory then xPlayer.showNotification(TranslateCap('threw_standard', itemCount, xItem.label)) end end - elseif type == 'item_account' then + elseif itemType == 'item_account' then if itemCount == nil or itemCount < 1 then xPlayer.showNotification(TranslateCap('imp_invalid_amount')) else @@ -543,7 +575,7 @@ if not Config.OxInventory then xPlayer.showNotification(TranslateCap('threw_account', ESX.Math.GroupDigits(itemCount), string.lower(account.label))) end end - elseif type == 'item_weapon' then + elseif itemType == 'item_weapon' then itemName = string.upper(itemName) if xPlayer.hasWeapon(itemName) then @@ -584,6 +616,12 @@ if not Config.OxInventory then local pickup, xPlayer, success = Core.Pickups[pickupId], ESX.GetPlayerFromId(source) if pickup then + local playerPickupDistance = #(pickup.coords - xPlayer.getCoords(true)) + if(playerPickupDistance > 5.0) then + print(('[^3WARNING^7] Player Detected Cheating (Out of range pickup): ^5%s^7'):format(xPlayer.getIdentifier())) + return + end + if pickup.type == 'item_standard' then if xPlayer.canCarryItem(pickup.name, pickup.count) then xPlayer.addInventoryItem(pickup.name, pickup.count) @@ -698,3 +736,32 @@ end) AddEventHandler('txAdmin:events:serverShuttingDown', function() Core.SavePlayers() end) + +local DoNotUse = { + ['essentialmode'] = true, + ['es_admin2'] = true, + ['basic-gamemode'] = true, + ['mapmanager'] = true, + ['fivem-map-skater'] = true, + ['fivem-map-hipster'] = true, + ['qb-core'] = true, + ['default_spawnpoint'] = true, +} + +AddEventHandler('onResourceStart', function(key) + if DoNotUse[string.lower(key)] then + while GetResourceState(key) ~= 'started' do + Wait(0) + end + + StopResource(key) + print(("[^1ERROR^7] WE STOPPED A RESOURCE THAT WILL BREAK ^1ESX^7, PLEASE REMOVE ^5%s^7"):format(key)) + end +end) + +for key in pairs(DoNotUse) do + if GetResourceState(key) == 'started' or GetResourceState(key) == 'starting' then + StopResource(key) + print(("[^1ERROR^7] WE STOPPED A RESOURCE THAT WILL BREAK ^1ESX^7, PLEASE REMOVE ^5%s^7"):format(key)) + end +end diff --git a/[core]/es_extended/server/onesync.lua b/[core]/es_extended/server/onesync.lua index 515b5145..9fefaa74 100644 --- a/[core]/es_extended/server/onesync.lua +++ b/[core]/es_extended/server/onesync.lua @@ -7,15 +7,34 @@ ESX.OneSync = {} local function getNearbyPlayers(source, closest, distance, ignore) local result = {} local count = 0 - if not distance then distance = 100 end - if type(source) == 'number' then - source = GetPlayerPed(source) + local playerPed + local playerCoords + if not distance then distance = 100 end + + if type(source) == 'number' then + playerPed = GetPlayerPed(source) + if not source then - error("Received invalid first argument (source); should be playerId or vector3 coordinates") + error("Received invalid first argument (source); should be playerId") + return result end - source = GetEntityCoords(GetPlayerPed(source)) + playerCoords = GetEntityCoords(playerPed) + + if not playerCoords then + error("Received nil value (playerCoords); perhaps source is nil at first place?") + return result + end + end + + if type(source) == 'vector3' then + playerCoords = source + + if not playerCoords then + error("Received nil value (playerCoords); perhaps source is nil at first place?") + return result + end end for _, xPlayer in pairs(ESX.Players) do @@ -24,16 +43,18 @@ local function getNearbyPlayers(source, closest, distance, ignore) local coords = GetEntityCoords(entity) if not closest then - local dist = #(source - coords) + local dist = #(playerCoords - coords) if dist <= distance then 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 } - end + if xPlayer.source ~= source then + local dist = #(playerCoords - coords) + if dist <= (result.dist or distance) then + result = { id = xPlayer.source, ped = NetworkGetNetworkIdFromEntity(entity), coords = coords, dist = dist } + end + end end end end diff --git a/[core]/es_extended/version.json b/[core]/es_extended/version.json deleted file mode 100644 index ed35a3e9..00000000 --- a/[core]/es_extended/version.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "legacy", - "commit" : "1.9.0", - "changelog": "\n- Add PlayerOveride System, ESX Notify, ESX Progressbar and ESX TextUI" -} diff --git a/[core]/esx_context/README.md b/[core]/esx_context/README.md index 5092e5ae..97da2c83 100644 --- a/[core]/esx_context/README.md +++ b/[core]/esx_context/README.md @@ -1,4 +1,4 @@ -

[ESX] Context

Discord - Website - Documentation +

[ESX] Context

Discord - Website - Documentation A elegant, easy to use Context Menu system to make User Interactions clean and hassle free diff --git a/[core]/esx_identity/client/main.lua b/[core]/esx_identity/client/main.lua index 59b516e4..5e647b05 100644 --- a/[core]/esx_identity/client/main.lua +++ b/[core]/esx_identity/client/main.lua @@ -44,7 +44,7 @@ if not Config.UseDeferrals then RegisterNetEvent('esx_identity:showRegisterIdentity', function() TriggerEvent('esx_skin:resetFirstSpawn') - while not ready do + while not (ready and loadingScreenFinished) do print('Waiting for esx_identity NUI..') Wait(100) end diff --git a/[core]/esx_identity/locales/he.lua b/[core]/esx_identity/locales/he.lua new file mode 100644 index 00000000..62348188 --- /dev/null +++ b/[core]/esx_identity/locales/he.lua @@ -0,0 +1,38 @@ +Locales["he"] = { + ['show_active_character'] = 'הצג דמות פעילה', + ['active_character'] = 'דמות פעילה: %s', + ['error_active_character'] = 'אירעה שגיאה בקבלת הנתונים שלך.', + ['delete_character'] = 'מחק את הדמות הנוכחית שלך.', + ['deleted_character'] = 'הדמות נמחקה', + ['error_delete_character'] = 'אירעה בעיה במחיקת הדמות שלך.', + ['thank_you_for_registering'] = 'הרשמה הושלמה. תהנה!', + ['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 אינץ', + ['data_incorrect'] = 'נתונים לא תקניים, נסה שוב.', + ['invalid_format'] = 'פורמט נתונים לא תקני, נסה שוב.', + ['no_identifier'] = '[ESX Identity]\nהייתה בעיה בטעינת הדמות שלך!\nקוד שגיאה: מזהה חסר\n\nזה נגרם על ידי חוסר המזהה שלך. אנא חזור מאוחר יותר או דווח על הבעיה לבעל השרת.', + ['missing_identity'] = '[ESX Identity]\nהייתה בעיה בטעינת הדמות שלך!\nקוד שגיאה: זהות חסרה\n\nנראה שהזהות שלך חסרה, נסה להתחבר שוב.', + ['deleted_identity'] = 'הדמות נמחקה. אנא הצטרף מחדש כדי ליצור דמות חדשה.', + ['already_registered'] = 'כבר נרשמת.', + ['invalid_firstname_format'] = 'פורמט לא תקני (שם פרטי): נסה שוב.', + ['invalid_lastname_format'] = 'פורמט לא תקני (שם משפחה): נסה שוב.', + ['invalid_dob_format'] = 'פורמט לא תקני (תאריך לידה): נסה שוב.', + ['invalid_sex_format'] = 'פורמט לא תקני (מין): נסה שוב.', + ['invalid_height_format'] = 'פורמט לא תקני (גובה): נסה שוב.', +} diff --git a/[core]/esx_loadingscreen/README.md b/[core]/esx_loadingscreen/README.md index d5925203..57b3f585 100644 --- a/[core]/esx_loadingscreen/README.md +++ b/[core]/esx_loadingscreen/README.md @@ -1,4 +1,4 @@ -

[ESX] Loading Screen

Discord - Website - Documentation +

[ESX] Loading Screen

Discord - Website - Documentation A simple but beautiful Loading Screen for your server! diff --git a/[core]/esx_menu_default/README.md b/[core]/esx_menu_default/README.md index 83584ce1..b06d5124 100644 --- a/[core]/esx_menu_default/README.md +++ b/[core]/esx_menu_default/README.md @@ -1,4 +1,4 @@ -

[ESX] Menu Defualt

Discord - Website - Documentation +

[ESX] Menu Defualt

Discord - Website - Documentation A defualt List type menu for ESX. diff --git a/[core]/esx_multicharacter/client/main.lua b/[core]/esx_multicharacter/client/main.lua index fd2b2c06..4b30bb03 100644 --- a/[core]/esx_multicharacter/client/main.lua +++ b/[core]/esx_multicharacter/client/main.lua @@ -292,7 +292,9 @@ if ESX.GetConfig().Multichar then end) repeat Wait(200) until finished end - DoScreenFadeOut(100) + + DoScreenFadeOut(750) + Wait(750) SetCamActive(cam, false) RenderScriptCams(false, false, 0, true, true) @@ -302,8 +304,11 @@ if ESX.GetConfig().Multichar then SetEntityCoordsNoOffset(playerPed, spawn.x, spawn.y, spawn.z, false, false, false, true) SetEntityHeading(playerPed, spawn.heading) if not isNew then TriggerEvent('skinchanger:loadSkin', skin or Characters[spawned].skin) end - Wait(400) - DoScreenFadeIn(400) + Wait(500) + + DoScreenFadeIn(750) + Wait(750) + repeat Wait(200) until not IsScreenFadedOut() TriggerServerEvent('esx:onPlayerSpawn') TriggerEvent('esx:onPlayerSpawn') diff --git a/[core]/esx_multicharacter/locales/fr.lua b/[core]/esx_multicharacter/locales/fr.lua index 1ed05aeb..e6fcc034 100644 --- a/[core]/esx_multicharacter/locales/fr.lua +++ b/[core]/esx_multicharacter/locales/fr.lua @@ -1,15 +1,22 @@ Locales["fr"] = { ["male"] = "Homme", ["female"] = "Femme", - ["delete_label"] = "Supprimer %s %s?", ["select_char"] = "Sélectionnez un personnage", ["select_char_description"] = "Select a character to play as.", ["create_char"] = "Créer un nouveau personnage", ["char_play"] = "Jouer ce personnage", + ["char_play_description"] = "Continuez dans la ville.", ["char_disabled"] = "Ce personnage est désactivé", + ["char_disabled_description"] = "Ce personnage est inutilisable.", ["char_delete"] = "Supprimer ce personnage", - ["cancel"] = "Annuler", - ["confirm"] = "Confirmer", + ["char_delete_description"] = "Retiré définitivement ce personnage.", + ["char_delete_confirmation"] = "Confirmation de suppression", + ["char_delete_confirmation_description"] = "Êtes-vous sûr de vouloir supprimer ce personnage?", + ["char_delete_yes_description"] = "Oui, je suis sur de vouloir supprimer ce personnage", + ["char_delete_no_description"] = "Non, retourner aux options de personnages", + ["character"] = "Personnage: %s", + ["return"] = "Retour", + ["return_description"] = "Retourner à la sélection de personnage.", ["command_setslots"] = "Définir le numéro de créneau multi-caractères d'un joueur", ["command_remslots"] = "Suppression du numéro de créneau multi-caractères d'un joueur", ["command_enablechar"] = "Activer un personnage donné d'un joueur", diff --git a/[core]/esx_multicharacter/locales/he.lua b/[core]/esx_multicharacter/locales/he.lua new file mode 100644 index 00000000..dc591e71 --- /dev/null +++ b/[core]/esx_multicharacter/locales/he.lua @@ -0,0 +1,32 @@ +Locales["he"] = { + ["male"] = "זכר", + ["female"] = "נקבה", + ["select_char"] = "בחר דמות", + ["select_char_description"] = "בחר דמות לשחק.", + ["create_char"] = "דמות חדשה", + ["char_play"] = "שחק", + ["char_play_description"] = "המשך לעיר.", + ["char_disabled"] = "מושבת", + ["char_disabled_description"] = "דמות זו לא ניתן לשימוש.", + ["char_delete"] = "מחק", + ["char_delete_description"] = "הסר את הדמות לצמיתות.", + ["char_delete_confirmation"] = "אישור מחיקה", + ["char_delete_confirmation_description"] = "האם אתה בטוח שאתה מסיר את הדמות שנבחרה?", + ["char_delete_yes_description"] = "כן, אני בטוח שאני מסיר את הדמות שנבחרה", + ["char_delete_no_description"] = "לא, חזור לאפשרויות הדמות", + ["character"] = "דמות: %s", + ["return"] = "חזור", + ["return_description"] = "חזור לבחירת הדמות.", + ["command_setslots"] = "הגדר מספר מקומות לדמות של שחקן", + ["command_remslots"] = "הסר מספר מקומות לדמות של שחקן", + ["command_enablechar"] = "אפשר דמות מסוימת של שחקן", + ["command_disablechar"] = "השבת דמות מסוימת של שחקן", + ["command_charslot"] = "מספר מקום של הדמות", + ["command_identifier"] = "מזהה שחקן", + ["command_slots"] = "# של מקומות", + ["slotsadd"] = "הגדרת %s מקומות ל- %s", + ["slotsrem"] = "הסרת מקומות ל- %s", + ["charenabled"] = "אפשרת את הדמות #%s של %s", + ["chardisabled"] = "השבתת את הדמות #%s של %s", + ["charnotfound"] = "הדמות #%s של %s לא קיימת", +} diff --git a/[core]/esx_multicharacter/server/main.lua b/[core]/esx_multicharacter/server/main.lua index 15058c75..5e83f637 100644 --- a/[core]/esx_multicharacter/server/main.lua +++ b/[core]/esx_multicharacter/server/main.lua @@ -31,17 +31,13 @@ local PREFIX = Config.Prefix or 'char' local PRIMARY_IDENTIFIER = ESX.GetConfig().Identifier or GetConvar('sv_lan', '') == 'true' and 'ip' or "license" local function GetIdentifier(source) - local fxDk = GetConvarInt('sv_fxdkMode', 0) - if fxDk == 1 then - return "ESX-DEBUG-LICENCE" - end - local identifier = PRIMARY_IDENTIFIER..':' - for _, v in pairs(GetPlayerIdentifiers(source)) do - if string.match(v, identifier) then - identifier = string.gsub(v, identifier, '') - return identifier - end - end + local fxDk = GetConvarInt('sv_fxdkMode', 0) + if fxDk == 1 then + return "ESX-DEBUG-LICENCE" + end + + local identifier = GetPlayerIdentifierByType(source, PRIMARY_IDENTIFIER) + return identifier and identifier:gsub(PRIMARY_IDENTIFIER .. ':', '') end if next(ESX.Players) then diff --git a/[core]/esx_notify/readme.md b/[core]/esx_notify/readme.md index b5499924..9f00c0de 100644 --- a/[core]/esx_notify/readme.md +++ b/[core]/esx_notify/readme.md @@ -1,4 +1,4 @@ -

[ESX] Notify

Discord - Website - Documentation +

[ESX] Notify

Discord - Website - Documentation A beautiful and simple NUI notification system for ESX diff --git a/[core]/esx_skin/client/main.lua b/[core]/esx_skin/client/main.lua index 966f9ab5..8d952fde 100644 --- a/[core]/esx_skin/client/main.lua +++ b/[core]/esx_skin/client/main.lua @@ -147,6 +147,7 @@ function DeleteSkinCam() end CreateThread(function() + local customPI = math.pi / 180.0 while true do local sleep = 1500 @@ -164,7 +165,7 @@ CreateThread(function() local playerPed = PlayerPedId() local coords = GetEntityCoords(playerPed) - local angle = heading * math.pi / 180.0 + local angle = heading * customPI local theta = { x = math.cos(angle), y = math.sin(angle) @@ -182,7 +183,7 @@ CreateThread(function() angleToLook = angleToLook + 360 end - angleToLook = angleToLook * math.pi / 180.0 + angleToLook = angleToLook * customPI local thetaToLook = { x = math.cos(angleToLook), y = math.sin(angleToLook) diff --git a/[core]/esx_skin/locales/he.lua b/[core]/esx_skin/locales/he.lua new file mode 100644 index 00000000..283cbdc6 --- /dev/null +++ b/[core]/esx_skin/locales/he.lua @@ -0,0 +1,6 @@ +Locales["he"] = { + ["skin_menu"] = "תפריט עור", + ["use_rotate_view"] = "השתמש ~INPUT_FRONTEND_LS~ ו ~INPUT_CHARACTER_WHEEL~ כדי לסובב את התצוגה.", + ["skin"] = "שנה עור", + ["saveskin"] = "שמור עור לקובץ", +} diff --git a/[core]/esx_textui/readme.md b/[core]/esx_textui/readme.md index b9197d6c..2c1f30e9 100644 --- a/[core]/esx_textui/readme.md +++ b/[core]/esx_textui/readme.md @@ -1,4 +1,4 @@ -

[ESX] TextUI

Discord - Website - Documentation +

[ESX] TextUI

Discord - Website - Documentation A beautiful and simple Persistent Notification. diff --git a/[core]/skinchanger/README.md b/[core]/skinchanger/README.md index 267781df..0d8ad214 100644 --- a/[core]/skinchanger/README.md +++ b/[core]/skinchanger/README.md @@ -1,4 +1,4 @@ -

[ESX] SkinChanger

Discord - Website - Documentation +

[ESX] SkinChanger

Discord - Website - Documentation skinchanger is a resource used to both Set and Get Players clothing, accessories and Model - It supports the freemode peds `mp_m_freemode_01` and `mp_f_freemode_01` as well as all Ped Features. diff --git a/[core]/skinchanger/locales/fr.lua b/[core]/skinchanger/locales/fr.lua index 2887a133..bff1a222 100644 --- a/[core]/skinchanger/locales/fr.lua +++ b/[core]/skinchanger/locales/fr.lua @@ -1,7 +1,7 @@ Locales["fr"] = { ["sex"] = "sexe", - ["mom"] = "mère's visage", - ["dad"] = "père's visage", + ["mom"] = "visage de la mère", + ["dad"] = "visage du père", ["resemblance"] = "ressemblance", ["skin_tone"] = "teint", ["nose_1"] = "largeur du nez", @@ -32,7 +32,7 @@ Locales["fr"] = { ["hair_color_1"] = "couleur de cheveux 1", ["hair_color_2"] = "couleur de cheveux 2", ["eye_color"] = "couleur des yeux", - ["eye_squint"] = "eye squint", + ["eye_squint"] = "Louchement des yeux", ["eyebrow_type"] = "type de sourcil", ["eyebrow_size"] = "taille des sourcils", ["eyebrow_color_1"] = "couleur des sourcils 1", @@ -47,7 +47,7 @@ Locales["fr"] = { ["lipstick_thickness"] = "épaisseur du rouge à lèvres", ["lipstick_color_1"] = "couleur de rouge à lèvres 1", ["lipstick_color_2"] = "couleur de rouge à lèvres 2", - ["ear_accessories"] = "ear accessories", + ["ear_accessories"] = "accessoires d'oreille", ["ear_accessories_color"] = "couleur des accessoires d'oreille", ["tshirt_1"] = "t-Shirt 1", ["tshirt_2"] = "t-Shirt 2", diff --git a/[core]/skinchanger/locales/he.lua b/[core]/skinchanger/locales/he.lua new file mode 100644 index 00000000..5c081bd2 --- /dev/null +++ b/[core]/skinchanger/locales/he.lua @@ -0,0 +1,100 @@ +Locales["he"] = { + ['sex'] = 'מין', + ['mom'] = 'פנים של אמא', + ['dad'] = 'פנים של אבא', + ['resemblance'] = 'דמיון', + ['skin_tone'] = 'גוון העור', + ['nose_1'] = 'רוחב האף', + ['nose_2'] = 'גובה שיא האף', + ['nose_3'] = 'אורך שיא האף', + ['nose_4'] = 'גובה עצם האף', + ['nose_5'] = 'הורדת שיא האף', + ['nose_6'] = 'סיבוב עצם האף', + ['cheeks_1'] = 'גובה הלחיים', + ['cheeks_2'] = 'רוחב הלחיים', + ['cheeks_3'] = 'רוחב הלחיים', + ['lip_fullness'] = 'מלאות השפתיים', + ['jaw_bone_width'] = 'רוחב עצם הלסת', + ['jaw_bone_length'] = 'אורך עצם הלסת', + ['chin_height'] = 'גובה הסנטר', + ['chin_length'] = 'אורך הסנטר', + ['chin_width'] = 'רוחב הסנטר', + ['chin_hole'] = 'גודל חור הסנטר', + ['neck_thickness'] = 'עובי הצוואר', + ['wrinkles'] = 'קמטים', + ['wrinkle_thickness'] = 'עובי הקמטים', + ['beard_type'] = 'סוג הזקן', + ['beard_size'] = 'גודל הזקן', + ['beard_color_1'] = 'צבע הזקן 1', + ['beard_color_2'] = 'צבע הזקן 2', + ['hair_1'] = 'שיער 1', + ['hair_2'] = 'שיער 2', + ['hair_color_1'] = 'צבע השיער 1', + ['hair_color_2'] = 'צבע השיער 2', + ['eye_color'] = 'צבע העיניים', + ['eye_squint'] = 'קימוט העין', + ['eyebrow_type'] = 'סוג הגבות', + ['eyebrow_size'] = 'גודל הגבות', + ['eyebrow_color_1'] = 'צבע הגבות 1', + ['eyebrow_color_2'] = 'צבע הגבות 2', + ['eyebrow_depth'] = 'עומק הגבות', + ['eyebrow_height'] = 'גובה הגבות', + ['makeup_type'] = 'סוג האיפור', + ['makeup_thickness'] = 'עובי האיפור', + ['makeup_color_1'] = 'צבע האיפור 1', + ['makeup_color_2'] = 'צבע האיפור 2', + ['lipstick_type'] = 'סוג השפתון', + ['lipstick_thickness'] = 'עובי השפתון', + ['lipstick_color_1'] = 'צבע השפתון 1', + ['lipstick_color_2'] = 'צבע השפתון 2', + ['ear_accessories'] = 'תכשיטים לאוזניים', + ['ear_accessories_color'] = 'צבע התכשיטים לאוזניים', + ['tshirt_1'] = 'חולצת טי 1', + ['tshirt_2'] = 'חולצת טי 2', + ['torso_1'] = 'גוף עליון 1', + ['torso_2'] = 'גוף עליון 2', + ['decals_1'] = 'מדבקות 1', + ['decals_2'] = 'מדבקות 2', + ['arms'] = 'ידיים', + ['arms_2'] = 'ידיים 2', + ['pants_1'] = 'מכנסיים 1', + ['pants_2'] = 'מכנסיים 2', + ['shoes_1'] = 'נעליים 1', + ['shoes_2'] = 'נעליים 2', + ['mask_1'] = 'מסיכה 1', + ['mask_2'] = 'מסיכה 2', + ['bproof_1'] = 'שריון נגד קליעים 1', + ['bproof_2'] = 'שריון נגד קליעים 2', + ['chain_1'] = 'שרשרת 1', + ['chain_2'] = 'שרשרת 2', + ['helmet_1'] = 'קסדה 1', + ['helmet_2'] = 'קסדה 2', + ['watches_1'] = 'שעונים 1', + ['watches_2'] = 'שעונים 2', + ['bracelets_1'] = 'צמידים 1', + ['bracelets_2'] = 'צמידים 2', + ['glasses_1'] = 'משקפיים 1', + ['glasses_2'] = 'משקפיים 2', + ['bag'] = 'תיק', + ['bag_color'] = 'צבע התיק', + ['blemishes'] = 'כתמים', + ['blemishes_size'] = 'עובי הכתמים', + ['ageing'] = 'הזדקנות', + ['ageing_1'] = 'עובי ההזדקנות', + ['blush'] = 'רוגז', + ['blush_1'] = 'עובי הרוגז', + ['blush_color'] = 'צבע הרוגז', + ['complexion'] = 'מרקם העור', + ['complexion_1'] = 'עובי המרקם', + ['sun'] = 'שמש', + ['sun_1'] = 'עובי השמש', + ['freckles'] = 'נמשים', + ['freckles_1'] = 'עובי הנמשים', + ['chest_hair'] = 'שיער חזה', + ['chest_hair_1'] = 'עובי שיער החזה', + ['chest_color'] = 'צבע שיער החזה', + ['bodyb'] = 'כתמים בגוף', + ['bodyb_size'] = 'עובי הכתמים בגוף', + ['bodyb_extra'] = 'השפעת כתמים בגוף', + ['bodyb_extra_thickness'] = 'עובי השפעת הכתמים בגוף', + } diff --git a/server.cfg b/server.cfg index 80510f4e..a4741dd0 100644 --- a/server.cfg +++ b/server.cfg @@ -54,5 +54,3 @@ ensure oxmysql ensure es_extended ensure [core] -## ESX Addons -stop basic-gamemode #remove this if you don't want to use multicharacter