mirror of
https://github.com/esx-framework/esx_core.git
synced 2026-08-29 00:01:20 +00:00
formatting(core): Format all
This commit is contained in:
@@ -4,6 +4,6 @@ game 'gta5'
|
||||
author 'ESX-Framework'
|
||||
description 'cron'
|
||||
lua54 'yes'
|
||||
version '1.9.4'
|
||||
version '1.9.5'
|
||||
|
||||
server_script 'server/main.lua'
|
||||
|
||||
@@ -15,11 +15,10 @@ function GetTime()
|
||||
local h = tonumber(os.date('%H', timestamp))
|
||||
local m = tonumber(os.date('%M', timestamp))
|
||||
|
||||
return {d = d, h = h, m = m}
|
||||
return { d = d, h = h, m = m }
|
||||
end
|
||||
|
||||
function OnTime(d, h, m)
|
||||
|
||||
for i = 1, #Jobs, 1 do
|
||||
if Jobs[i].h == h and Jobs[i].m == m then
|
||||
Jobs[i].cb(d, h, m)
|
||||
|
||||
@@ -26,7 +26,7 @@ end
|
||||
|
||||
function ESX.SearchInventory(items, count)
|
||||
if type(items) == 'string' then
|
||||
items = {items}
|
||||
items = { items }
|
||||
end
|
||||
|
||||
local returnData = {}
|
||||
@@ -154,7 +154,7 @@ if GetResourceState("esx_context") ~= "missing" then
|
||||
end
|
||||
|
||||
function ESX.RefreshContext(...)
|
||||
exports["esx_context"]:Refresh(...)
|
||||
exports["esx_context"]:Refresh(...)
|
||||
end
|
||||
else
|
||||
function ESX.OpenContext()
|
||||
@@ -203,7 +203,6 @@ function ESX.UI.Menu.Open(type, namespace, name, data, submit, cancel, change, c
|
||||
menu.change = change
|
||||
|
||||
menu.close = function()
|
||||
|
||||
ESX.UI.Menu.RegisteredTypes[type].close(namespace, name)
|
||||
|
||||
for i = 1, #ESX.UI.Menu.Opened, 1 do
|
||||
@@ -218,11 +217,9 @@ function ESX.UI.Menu.Open(type, namespace, name, data, submit, cancel, change, c
|
||||
if close then
|
||||
close()
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
menu.update = function(query, newData)
|
||||
|
||||
for i = 1, #menu.data.elements, 1 do
|
||||
local match = true
|
||||
|
||||
@@ -238,7 +235,6 @@ function ESX.UI.Menu.Open(type, namespace, name, data, submit, cancel, change, c
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
menu.refresh = function()
|
||||
@@ -266,7 +262,6 @@ function ESX.UI.Menu.Open(type, namespace, name, data, submit, cancel, change, c
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -496,7 +491,6 @@ function ESX.Game.GetPlayers(onlyOtherPlayers, returnKeyValue, returnPeds)
|
||||
return players
|
||||
end
|
||||
|
||||
|
||||
function ESX.Game.GetClosestObject(coords, modelFilter)
|
||||
return ESX.Game.GetClosestEntity(ESX.Game.GetObjects(), false, coords, modelFilter)
|
||||
end
|
||||
@@ -604,19 +598,19 @@ function ESX.Game.GetVehicleProperties(vehicle)
|
||||
local interiorColor = GetVehicleInteriorColour(vehicle)
|
||||
local customPrimaryColor = nil
|
||||
if hasCustomPrimaryColor then
|
||||
customPrimaryColor = {GetVehicleCustomPrimaryColour(vehicle)}
|
||||
customPrimaryColor = { GetVehicleCustomPrimaryColour(vehicle) }
|
||||
end
|
||||
|
||||
local hasCustomXenonColor, customXenonColorR, customXenonColorG, customXenonColorB = GetVehicleXenonLightsCustomColor(vehicle)
|
||||
local customXenonColor = nil
|
||||
if hasCustomXenonColor then
|
||||
customXenonColor = {customXenonColorR, customXenonColorG, customXenonColorB}
|
||||
customXenonColor = { customXenonColorR, customXenonColorG, customXenonColorB }
|
||||
end
|
||||
|
||||
local hasCustomSecondaryColor = GetIsVehicleSecondaryColourCustom(vehicle)
|
||||
local customSecondaryColor = nil
|
||||
if hasCustomSecondaryColor then
|
||||
customSecondaryColor = {GetVehicleCustomSecondaryColour(vehicle)}
|
||||
customSecondaryColor = { GetVehicleCustomSecondaryColour(vehicle) }
|
||||
end
|
||||
|
||||
local extras = {}
|
||||
@@ -634,11 +628,11 @@ function ESX.Game.GetVehicleProperties(vehicle)
|
||||
local doorsBroken, windowsBroken, tyreBurst = {}, {}, {}
|
||||
local numWheels = tostring(GetVehicleNumberOfWheels(vehicle))
|
||||
|
||||
local TyresIndex = { -- Wheel index list according to the number of vehicle wheels.
|
||||
['2'] = {0, 4}, -- Bike and cycle.
|
||||
['3'] = {0, 1, 4, 5}, -- Vehicle with 3 wheels (get for wheels because some 3 wheels vehicles have 2 wheels on front and one rear or the reverse).
|
||||
['4'] = {0, 1, 4, 5}, -- Vehicle with 4 wheels.
|
||||
['6'] = {0, 1, 2, 3, 4, 5} -- Vehicle with 6 wheels.
|
||||
local TyresIndex = { -- Wheel index list according to the number of vehicle wheels.
|
||||
['2'] = { 0, 4 }, -- Bike and cycle.
|
||||
['3'] = { 0, 1, 4, 5 }, -- Vehicle with 3 wheels (get for wheels because some 3 wheels vehicles have 2 wheels on front and one rear or the reverse).
|
||||
['4'] = { 0, 1, 4, 5 }, -- Vehicle with 4 wheels.
|
||||
['6'] = { 0, 1, 2, 3, 4, 5 } -- Vehicle with 6 wheels.
|
||||
}
|
||||
|
||||
if TyresIndex[numWheels] then
|
||||
@@ -688,8 +682,8 @@ function ESX.Game.GetVehicleProperties(vehicle)
|
||||
xenonColor = GetVehicleXenonLightsColor(vehicle),
|
||||
customXenonColor = customXenonColor,
|
||||
|
||||
neonEnabled = {IsVehicleNeonLightEnabled(vehicle, 0), IsVehicleNeonLightEnabled(vehicle, 1),
|
||||
IsVehicleNeonLightEnabled(vehicle, 2), IsVehicleNeonLightEnabled(vehicle, 3)},
|
||||
neonEnabled = { IsVehicleNeonLightEnabled(vehicle, 0), IsVehicleNeonLightEnabled(vehicle, 1),
|
||||
IsVehicleNeonLightEnabled(vehicle, 2), IsVehicleNeonLightEnabled(vehicle, 3) },
|
||||
|
||||
neonColor = table.pack(GetVehicleNeonLightsColour(vehicle)),
|
||||
extras = extras,
|
||||
@@ -720,7 +714,7 @@ function ESX.Game.GetVehicleProperties(vehicle)
|
||||
modXenon = IsToggleModOn(vehicle, 22),
|
||||
|
||||
modFrontWheels = GetVehicleMod(vehicle, 23),
|
||||
modCustomFrontWheels = GetVehicleModVariation(vehicle, 23),
|
||||
modCustomFrontWheels = GetVehicleModVariation(vehicle, 23),
|
||||
modBackWheels = GetVehicleMod(vehicle, 24),
|
||||
modCustomBackWheels = GetVehicleModVariation(vehicle, 24),
|
||||
|
||||
@@ -909,7 +903,7 @@ function ESX.Game.SetVehicleProperties(vehicle, props)
|
||||
if props.modFrontWheels ~= nil then
|
||||
SetVehicleMod(vehicle, 23, props.modFrontWheels, false)
|
||||
end
|
||||
if props.modCustomFrontWheels ~= nil then
|
||||
if props.modCustomFrontWheels ~= nil then
|
||||
SetVehicleMod(vehicle, 23, props.modCustomFrontWheels, false)
|
||||
end
|
||||
if props.modBackWheels ~= nil then
|
||||
@@ -1062,7 +1056,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', title = 'Player Inventory' }
|
||||
}
|
||||
local currentWeight = 0
|
||||
|
||||
@@ -1071,7 +1065,7 @@ function ESX.ShowInventory()
|
||||
local formattedMoney = TranslateCap('locale_currency', ESX.Math.GroupDigits(ESX.PlayerData.accounts[i].money))
|
||||
local canDrop = ESX.PlayerData.accounts[i].name ~= 'bank'
|
||||
|
||||
elements[#elements+1] = {
|
||||
elements[#elements + 1] = {
|
||||
icon = 'fas fa-money-bill-wave',
|
||||
title = ('%s: <span style="color:green;">%s</span>'):format(ESX.PlayerData.accounts[i].label, formattedMoney),
|
||||
count = ESX.PlayerData.accounts[i].money,
|
||||
@@ -1088,7 +1082,7 @@ function ESX.ShowInventory()
|
||||
if v.count > 0 then
|
||||
currentWeight = currentWeight + (v.weight * v.count)
|
||||
|
||||
elements[#elements+1] = {
|
||||
elements[#elements + 1] = {
|
||||
icon = 'fas fa-box',
|
||||
title = ('%s x%s'):format(v.label, v.count),
|
||||
count = v.count,
|
||||
@@ -1107,7 +1101,7 @@ function ESX.ShowInventory()
|
||||
if HasPedGotWeapon(playerPed, weaponHash, false) then
|
||||
local ammo = GetAmmoInPedWeapon(playerPed, weaponHash)
|
||||
|
||||
elements[#elements+1] = {
|
||||
elements[#elements + 1] = {
|
||||
icon = 'fas fa-gun',
|
||||
title = v.ammo and ('%s - %s %s'):format(v.label, ammo, v.ammo.label) or v.label,
|
||||
count = 1,
|
||||
@@ -1122,10 +1116,10 @@ function ESX.ShowInventory()
|
||||
end
|
||||
end
|
||||
|
||||
elements[#elements+1] = {
|
||||
elements[#elements + 1] = {
|
||||
unselectable = true,
|
||||
icon = "fas fa-weight",
|
||||
title = "Current Weight: "..currentWeight
|
||||
title = "Current Weight: " .. currentWeight
|
||||
}
|
||||
|
||||
ESX.CloseContext()
|
||||
@@ -1136,7 +1130,7 @@ function ESX.ShowInventory()
|
||||
local elements2 = {}
|
||||
|
||||
if element.usable then
|
||||
elements2[#elements2+1] = {
|
||||
elements2[#elements2 + 1] = {
|
||||
icon = "fas fa-utensils",
|
||||
title = TranslateCap('use'),
|
||||
action = 'use',
|
||||
@@ -1147,7 +1141,7 @@ function ESX.ShowInventory()
|
||||
|
||||
if element.canRemove then
|
||||
if player ~= -1 and distance <= 3.0 then
|
||||
elements2[#elements2+1] = {
|
||||
elements2[#elements2 + 1] = {
|
||||
icon = "fas fa-hands",
|
||||
title = TranslateCap('give'),
|
||||
action = 'give',
|
||||
@@ -1156,7 +1150,7 @@ function ESX.ShowInventory()
|
||||
}
|
||||
end
|
||||
|
||||
elements2[#elements2+1] = {
|
||||
elements2[#elements2 + 1] = {
|
||||
icon = "fas fa-trash",
|
||||
title = TranslateCap('remove'),
|
||||
action = 'remove',
|
||||
@@ -1166,7 +1160,7 @@ function ESX.ShowInventory()
|
||||
end
|
||||
|
||||
if element.type == 'item_weapon' and element.canGiveAmmo and element.ammo > 0 and player ~= -1 and distance <= 3.0 then
|
||||
elements2[#elements2+1] = {
|
||||
elements2[#elements2 + 1] = {
|
||||
icon = "fas fa-gun",
|
||||
title = TranslateCap('giveammo'),
|
||||
action = 'give_ammo',
|
||||
@@ -1175,7 +1169,7 @@ function ESX.ShowInventory()
|
||||
}
|
||||
end
|
||||
|
||||
elements2[#elements2+1] = {
|
||||
elements2[#elements2 + 1] = {
|
||||
icon = "fas fa-arrow-left",
|
||||
title = TranslateCap('return'),
|
||||
action = 'return'
|
||||
@@ -1190,7 +1184,7 @@ function ESX.ShowInventory()
|
||||
if #playersNearby > 0 then
|
||||
local players = {}
|
||||
local elements3 = {
|
||||
{unselectable = true, icon = "fas fa-users", title = "Nearby Players"}
|
||||
{ unselectable = true, icon = "fas fa-users", title = "Nearby Players" }
|
||||
}
|
||||
|
||||
for _, playerNearby in ipairs(playersNearby) do
|
||||
@@ -1199,7 +1193,7 @@ function ESX.ShowInventory()
|
||||
|
||||
ESX.TriggerServerCallback('esx:getPlayerNames', function(returnedPlayers)
|
||||
for playerId, playerName in pairs(returnedPlayers) do
|
||||
elements3[#elements3+1] = {
|
||||
elements3[#elements3 + 1] = {
|
||||
icon = "fas fa-user",
|
||||
title = playerName,
|
||||
playerId = playerId
|
||||
@@ -1220,9 +1214,9 @@ function ESX.ShowInventory()
|
||||
ESX.CloseContext()
|
||||
else
|
||||
local elementsG = {
|
||||
{unselectable = true, icon = "fas fa-trash", title = element.title},
|
||||
{icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to give..", inputMin = 1, inputMax = 1000},
|
||||
{icon = "fas fa-check-double", title = "Confirm", val = "confirm"}
|
||||
{ unselectable = true, icon = "fas fa-trash", title = element.title },
|
||||
{ icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to give..", inputMin = 1, inputMax = 1000 },
|
||||
{ icon = "fas fa-check-double", title = "Confirm", val = "confirm" }
|
||||
}
|
||||
|
||||
ESX.OpenContext("right", elementsG, function(menuG)
|
||||
@@ -1259,9 +1253,9 @@ function ESX.ShowInventory()
|
||||
TriggerServerEvent('esx:removeInventoryItem', type, item)
|
||||
else
|
||||
local elementsR = {
|
||||
{unselectable = true, icon = "fas fa-trash", title = element.title},
|
||||
{icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to remove..", inputMin = 1, inputMax = 1000},
|
||||
{icon = "fas fa-check-double", title = "Confirm", val = "confirm"}
|
||||
{ unselectable = true, icon = "fas fa-trash", title = element.title },
|
||||
{ icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to remove..", inputMin = 1, inputMax = 1000 },
|
||||
{ icon = "fas fa-check-double", title = "Confirm", val = "confirm" }
|
||||
}
|
||||
|
||||
ESX.OpenContext("right", elementsR, function(menuR)
|
||||
@@ -1294,9 +1288,9 @@ function ESX.ShowInventory()
|
||||
if closestPlayer ~= -1 and closestDistance < 3.0 then
|
||||
if pedAmmo > 0 then
|
||||
local elementsGA = {
|
||||
{unselectable = true, icon = "fas fa-trash", title = element.title},
|
||||
{icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to give..", inputMin = 1, inputMax = 1000},
|
||||
{icon = "fas fa-check-double", title = "Confirm", val = "confirm"}
|
||||
{ unselectable = true, icon = "fas fa-trash", title = element.title },
|
||||
{ icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to give..", inputMin = 1, inputMax = 1000 },
|
||||
{ icon = "fas fa-check-double", title = "Confirm", val = "confirm" }
|
||||
}
|
||||
|
||||
ESX.OpenContext("right", elementsGA, function(menuGA)
|
||||
@@ -1348,20 +1342,20 @@ end)
|
||||
function ESX.GetVehicleType(model)
|
||||
model = type(model) == 'string' and joaat(model) or model
|
||||
|
||||
if model == `submersible` or model == `submersible2` then
|
||||
if model == `submersible` or model == `submersible2` then
|
||||
return 'submarine'
|
||||
end
|
||||
end
|
||||
|
||||
local vehicleType = GetVehicleClassFromName(model)
|
||||
local types = {
|
||||
[8] = "bike",
|
||||
[11] = "trailer",
|
||||
[13] = "bike",
|
||||
[14] = "boat",
|
||||
[15] = "heli",
|
||||
[16] = "plane",
|
||||
[21] = "train",
|
||||
}
|
||||
local vehicleType = GetVehicleClassFromName(model)
|
||||
local types = {
|
||||
[8] = "bike",
|
||||
[11] = "trailer",
|
||||
[13] = "bike",
|
||||
[14] = "boat",
|
||||
[15] = "heli",
|
||||
[16] = "plane",
|
||||
[21] = "train",
|
||||
}
|
||||
|
||||
return types[vehicleType] or "automobile"
|
||||
end
|
||||
|
||||
@@ -3,7 +3,7 @@ local pickups = {}
|
||||
CreateThread(function()
|
||||
while not Config.Multichar do
|
||||
Wait(100)
|
||||
|
||||
|
||||
if NetworkIsPlayerActive(PlayerId()) then
|
||||
exports.spawnmanager:setAutoSpawn(false)
|
||||
DoScreenFadeOut(0)
|
||||
@@ -101,7 +101,7 @@ AddEventHandler('esx:playerLoaded', function(xPlayer, isNew, skin)
|
||||
SetPlayerLockonRangeOverride(playerId, 2.0)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if Config.DisableVehicleRewards then
|
||||
DisablePlayerVehicleRewards(playerId)
|
||||
end
|
||||
@@ -173,7 +173,7 @@ AddEventHandler('esx:playerLoaded', function(xPlayer, isNew, skin)
|
||||
'WORLD_VEHICLE_DISTANT_EMPTY_GROUND',
|
||||
'WORLD_HUMAN_PAPARAZZI'
|
||||
}
|
||||
|
||||
|
||||
for _, v in pairs(scenarios) do
|
||||
SetScenarioTypeEnabled(v, false)
|
||||
end
|
||||
@@ -246,25 +246,25 @@ AddStateBagChangeHandler('VehicleProperties', nil, function(bagName, _, value)
|
||||
return
|
||||
end
|
||||
|
||||
local netId = bagName:gsub('entity:', '')
|
||||
local timer = GetGameTimer()
|
||||
while not NetworkDoesEntityExistWithNetworkId(tonumber(netId)) do
|
||||
Wait(0)
|
||||
if GetGameTimer() - timer > 10000 then
|
||||
return
|
||||
end
|
||||
end
|
||||
local netId = bagName:gsub('entity:', '')
|
||||
local timer = GetGameTimer()
|
||||
while not NetworkDoesEntityExistWithNetworkId(tonumber(netId)) do
|
||||
Wait(0)
|
||||
if GetGameTimer() - timer > 10000 then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local vehicle = NetToVeh(tonumber(netId))
|
||||
local timer2 = GetGameTimer()
|
||||
while NetworkGetEntityOwner(vehicle) ~= PlayerId() do
|
||||
Wait(0)
|
||||
if GetGameTimer() - timer2 > 10000 then
|
||||
return
|
||||
end
|
||||
end
|
||||
local vehicle = NetToVeh(tonumber(netId))
|
||||
local timer2 = GetGameTimer()
|
||||
while NetworkGetEntityOwner(vehicle) ~= PlayerId() do
|
||||
Wait(0)
|
||||
if GetGameTimer() - timer2 > 10000 then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
ESX.Game.SetVehicleProperties(vehicle, value)
|
||||
ESX.Game.SetVehicleProperties(vehicle, value)
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx:setAccountMoney')
|
||||
@@ -332,7 +332,6 @@ if not Config.OxInventory then
|
||||
RegisterNetEvent('esx:setWeaponTint')
|
||||
AddEventHandler('esx:setWeaponTint', function(weapon, weaponTintIndex)
|
||||
SetPedWeaponTintIndex(ESX.PlayerData.ped, joaat(weapon), weaponTintIndex)
|
||||
|
||||
end)
|
||||
|
||||
RegisterNetEvent('esx:removeWeapon')
|
||||
@@ -392,7 +391,7 @@ if not Config.OxInventory then
|
||||
AddEventHandler('esx:createMissingPickups', function(missingPickups)
|
||||
for pickupId, pickup in pairs(missingPickups) do
|
||||
TriggerEvent('esx:createPickup', pickupId, pickup.label, pickup.coords - vector3(0, 0, 1.0), pickup.type, pickup.name
|
||||
, pickup.components, pickup.tintIndex)
|
||||
, pickup.components, pickup.tintIndex)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
@@ -21,7 +21,6 @@ end
|
||||
|
||||
CreateThread(function()
|
||||
while true do
|
||||
|
||||
if playerPed ~= PlayerPedId() then
|
||||
playerPed = PlayerPedId()
|
||||
ESX.SetPlayerData('ped', playerPed)
|
||||
@@ -37,7 +36,7 @@ CreateThread(function()
|
||||
isJumping = false
|
||||
end
|
||||
|
||||
if IsPauseMenuActive() and not inPauseMenu then
|
||||
if IsPauseMenuActive() and not inPauseMenu then
|
||||
inPauseMenu = true
|
||||
TriggerEvent('esx:pauseMenuActive', inPauseMenu)
|
||||
elseif not IsPauseMenuActive() and inPauseMenu then
|
||||
@@ -87,7 +86,6 @@ CreateThread(function()
|
||||
end)
|
||||
|
||||
if Config.EnableDebug then
|
||||
|
||||
AddEventHandler('esx:playerPedChanged', function(netId)
|
||||
print('esx:playerPedChanged', netId)
|
||||
end)
|
||||
@@ -111,5 +109,4 @@ if Config.EnableDebug then
|
||||
AddEventHandler('esx:exitedVehicle', function(vehicle, plate, seat, displayName, netId)
|
||||
print('esx:exitedVehicle', 'vehicle', vehicle, 'plate', plate, 'seat', seat, 'displayName', displayName, 'netId', netId)
|
||||
end)
|
||||
|
||||
end
|
||||
|
||||
@@ -8,7 +8,7 @@ local clientCallbacks = {}
|
||||
---@param ... any
|
||||
ESX.TriggerServerCallback = function(eventName, callback, ...)
|
||||
serverRequests[RequestId] = callback
|
||||
|
||||
|
||||
TriggerServerEvent('esx:triggerServerCallback', eventName, RequestId, GetInvokingResource() or "unknown", ...)
|
||||
|
||||
RequestId = RequestId + 1
|
||||
|
||||
@@ -4,7 +4,7 @@ AddEventHandler('gameEventTriggered', function(event, data)
|
||||
if not IsPedAPlayer(victim) then return end
|
||||
local player = PlayerId()
|
||||
local playerPed = PlayerPedId()
|
||||
if victimDied and NetworkGetPlayerIndexFromPed(victim) == player and (IsPedDeadOrDying(victim, true) or IsPedFatallyInjured(victim)) then
|
||||
if victimDied and NetworkGetPlayerIndexFromPed(victim) == player and (IsPedDeadOrDying(victim, true) or IsPedFatallyInjured(victim)) then
|
||||
local killerEntity, deathCause = GetPedSourceOfDeath(playerPed), GetPedCauseOfDeath(playerPed)
|
||||
local killerClientId = NetworkGetPlayerIndexFromPed(killerEntity)
|
||||
if killerEntity ~= playerPed and killerClientId and NetworkIsPlayerActive(killerClientId) then
|
||||
@@ -21,8 +21,8 @@ function PlayerKilledByPlayer(killerServerId, killerClientId, deathCause)
|
||||
local distance = #(victimCoords - killerCoords)
|
||||
|
||||
local data = {
|
||||
victimCoords = {x = ESX.Math.Round(victimCoords.x, 1), y = ESX.Math.Round(victimCoords.y, 1), z = ESX.Math.Round(victimCoords.z, 1)},
|
||||
killerCoords = {x = ESX.Math.Round(killerCoords.x, 1), y = ESX.Math.Round(killerCoords.y, 1), z = ESX.Math.Round(killerCoords.z, 1)},
|
||||
victimCoords = { x = ESX.Math.Round(victimCoords.x, 1), y = ESX.Math.Round(victimCoords.y, 1), z = ESX.Math.Round(victimCoords.z, 1) },
|
||||
killerCoords = { x = ESX.Math.Round(killerCoords.x, 1), y = ESX.Math.Round(killerCoords.y, 1), z = ESX.Math.Round(killerCoords.z, 1) },
|
||||
|
||||
killedByPlayer = true,
|
||||
deathCause = deathCause,
|
||||
@@ -41,7 +41,7 @@ function PlayerKilled(deathCause)
|
||||
local victimCoords = GetEntityCoords(playerPed)
|
||||
|
||||
local data = {
|
||||
victimCoords = {x = ESX.Math.Round(victimCoords.x, 1), y = ESX.Math.Round(victimCoords.y, 1), z = ESX.Math.Round(victimCoords.z, 1)},
|
||||
victimCoords = { x = ESX.Math.Round(victimCoords.x, 1), y = ESX.Math.Round(victimCoords.y, 1), z = ESX.Math.Round(victimCoords.z, 1) },
|
||||
|
||||
killedByPlayer = false,
|
||||
deathCause = deathCause
|
||||
|
||||
@@ -15,7 +15,7 @@ AddEventHandler('onClientResourceStart', function(resource)
|
||||
if resource ~= 'npwd' then
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
npwd = GetResourceState('npwd'):find('start') and exports.npwd or nil
|
||||
|
||||
if ESX.PlayerLoaded then
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
local Charset = {}
|
||||
|
||||
for i = 48, 57 do table.insert(Charset, string.char(i)) end
|
||||
for i = 65, 90 do table.insert(Charset, string.char(i)) end
|
||||
for i = 48, 57 do table.insert(Charset, string.char(i)) end
|
||||
for i = 65, 90 do table.insert(Charset, string.char(i)) end
|
||||
for i = 97, 122 do table.insert(Charset, string.char(i)) end
|
||||
|
||||
local weaponsByName = {}
|
||||
@@ -78,11 +78,11 @@ function ESX.DumpTable(table, nb)
|
||||
|
||||
s = '{\n'
|
||||
for k, v in pairs(table) do
|
||||
if type(k) ~= 'number' then k = '"'..k..'"' end
|
||||
if type(k) ~= 'number' then k = '"' .. k .. '"' end
|
||||
for _ = 1, nb, 1 do
|
||||
s = s .. " "
|
||||
end
|
||||
s = s .. '['..k..'] = ' .. ESX.DumpTable(v, nb + 1) .. ',\n'
|
||||
s = s .. '[' .. k .. '] = ' .. ESX.DumpTable(v, nb + 1) .. ',\n'
|
||||
end
|
||||
|
||||
for _ = 1, nb, 1 do
|
||||
|
||||
@@ -2,7 +2,7 @@ ESX.Math = {}
|
||||
|
||||
function ESX.Math.Round(value, numDecimalPlaces)
|
||||
if numDecimalPlaces then
|
||||
local power = 10^numDecimalPlaces
|
||||
local power = 10 ^ numDecimalPlaces
|
||||
return math.floor((value * power) + 0.5) / (power)
|
||||
else
|
||||
return math.floor(value + 0.5)
|
||||
@@ -11,9 +11,9 @@ end
|
||||
|
||||
-- credit http://richard.warburton.it
|
||||
function ESX.Math.GroupDigits(value)
|
||||
local left,num,right = string.match(value,'^([^%d]*%d)(%d*)(.-)$')
|
||||
local left, num, right = string.match(value, '^([^%d]*%d)(%d*)(.-)$')
|
||||
|
||||
return left..(num:reverse():gsub('(%d%d%d)','%1' .. TranslateCap('locale_digit_grouping_symbol')):reverse())..right
|
||||
return left .. (num:reverse():gsub('(%d%d%d)', '%1' .. TranslateCap('locale_digit_grouping_symbol')):reverse()) .. right
|
||||
end
|
||||
|
||||
function ESX.Math.Trim(value)
|
||||
@@ -22,4 +22,4 @@ function ESX.Math.Trim(value)
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -4,7 +4,7 @@ ESX.Table = {}
|
||||
function ESX.Table.SizeOf(t)
|
||||
local count = 0
|
||||
|
||||
for _,_ in pairs(t) do
|
||||
for _, _ in pairs(t) do
|
||||
count = count + 1
|
||||
end
|
||||
|
||||
@@ -28,7 +28,7 @@ function ESX.Table.IndexOf(t, value)
|
||||
end
|
||||
|
||||
function ESX.Table.LastIndexOf(t, value)
|
||||
for i=#t, 1, -1 do
|
||||
for i = #t, 1, -1 do
|
||||
if t[i] == value then
|
||||
return i
|
||||
end
|
||||
@@ -82,7 +82,7 @@ end
|
||||
function ESX.Table.Reverse(t)
|
||||
local newTable = {}
|
||||
|
||||
for i=#t, 1, -1 do
|
||||
for i = #t, 1, -1 do
|
||||
table.insert(newTable, t[i])
|
||||
end
|
||||
|
||||
@@ -134,21 +134,21 @@ end
|
||||
|
||||
-- Credits: https://github.com/JonasDev99/qb-garages/blob/b0335d67cb72a6b9ac60f62a87fb3946f5c2f33d/server/main.lua#L5
|
||||
function ESX.Table.TableContains(tab, val)
|
||||
if type(val) == "table" then
|
||||
for _, value in pairs(tab) do
|
||||
if ESX.Table.TableContains(val, value) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
else
|
||||
for _, value in pairs(tab) do
|
||||
if value == val then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
return false
|
||||
if type(val) == "table" then
|
||||
for _, value in pairs(tab) do
|
||||
if ESX.Table.TableContains(val, value) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
else
|
||||
for _, value in pairs(tab) do
|
||||
if value == val then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
-- Credit: https://stackoverflow.com/a/15706820
|
||||
@@ -157,14 +157,14 @@ function ESX.Table.Sort(t, order)
|
||||
-- collect the keys
|
||||
local keys = {}
|
||||
|
||||
for k,_ in pairs(t) do
|
||||
for k, _ in pairs(t) do
|
||||
keys[#keys + 1] = k
|
||||
end
|
||||
|
||||
-- if order function given, sort by it by passing the table and keys a, b,
|
||||
-- otherwise just sort the keys
|
||||
if order then
|
||||
table.sort(keys, function(a,b)
|
||||
table.sort(keys, function(a, b)
|
||||
return order(t, a, b)
|
||||
end)
|
||||
else
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
Config = {}
|
||||
Config.Locale = GetConvar('esx:locale', 'en')
|
||||
Config = {}
|
||||
Config.Locale = GetConvar('esx:locale', 'en')
|
||||
|
||||
Config.Accounts = {
|
||||
Config.Accounts = {
|
||||
bank = {
|
||||
label = TranslateCap('account_bank'),
|
||||
round = true
|
||||
@@ -16,15 +16,15 @@ Config.Accounts = {
|
||||
}
|
||||
}
|
||||
|
||||
Config.StartingAccountMoney = {bank = 50000}
|
||||
Config.StartingAccountMoney = { bank = 50000 }
|
||||
|
||||
|
||||
Config.DefaultSpawns = { -- If you want to have more spawn positions and select them randomly uncomment commented code or add more locations
|
||||
{x = 222.2027, y = -864.0162, z = 30.2922, heading = 1.0},
|
||||
--{x = 224.9865, y = -865.0871, z = 30.2922, heading = 1.0},
|
||||
--{x = 227.8436, y = -866.0400, z = 30.2922, heading = 1.0},
|
||||
--{x = 230.6051, y = -867.1450, z = 30.2922, heading = 1.0},
|
||||
--{x = 233.5459, y = -868.2626, z = 30.2922, heading = 1.0}
|
||||
{ x = 222.2027, y = -864.0162, z = 30.2922, heading = 1.0 },
|
||||
--{x = 224.9865, y = -865.0871, z = 30.2922, heading = 1.0},
|
||||
--{x = 227.8436, y = -866.0400, z = 30.2922, heading = 1.0},
|
||||
--{x = 230.6051, y = -867.1450, z = 30.2922, heading = 1.0},
|
||||
--{x = 233.5459, y = -868.2626, z = 30.2922, heading = 1.0}
|
||||
}
|
||||
|
||||
Config.AdminGroups = {
|
||||
@@ -33,57 +33,57 @@ Config.AdminGroups = {
|
||||
}
|
||||
|
||||
|
||||
Config.EnablePaycheck = true -- enable paycheck
|
||||
Config.LogPaycheck = false -- Logs paychecks to a nominated Discord channel via webhook (default is false)
|
||||
Config.EnableSocietyPayouts = false -- pay from the society account that the player is employed at? Requirement: esx_society
|
||||
Config.MaxWeight = 24 -- the max inventory weight without backpack
|
||||
Config.PaycheckInterval = 7 * 60000 -- how often to recieve pay checks in milliseconds
|
||||
Config.EnableDebug = false -- Use Debug options?
|
||||
Config.EnableDefaultInventory = true -- Display the default Inventory ( F2 )
|
||||
Config.EnableWantedLevel = false -- Use Normal GTA wanted Level?
|
||||
Config.EnablePVP = true -- Allow Player to player combat
|
||||
Config.EnablePaycheck = true -- enable paycheck
|
||||
Config.LogPaycheck = false -- Logs paychecks to a nominated Discord channel via webhook (default is false)
|
||||
Config.EnableSocietyPayouts = false -- pay from the society account that the player is employed at? Requirement: esx_society
|
||||
Config.MaxWeight = 24 -- the max inventory weight without backpack
|
||||
Config.PaycheckInterval = 7 * 60000 -- how often to recieve pay checks in milliseconds
|
||||
Config.EnableDebug = false -- Use Debug options?
|
||||
Config.EnableDefaultInventory = true -- Display the default Inventory ( F2 )
|
||||
Config.EnableWantedLevel = false -- Use Normal GTA wanted Level?
|
||||
Config.EnablePVP = true -- Allow Player to player combat
|
||||
|
||||
Config.Multichar = GetResourceState("esx_multicharacter") ~= "missing"
|
||||
Config.Identity = true -- Select a characters identity data before they have loaded in (this happens by default with multichar)
|
||||
Config.DistanceGive = 4.0 -- Max distance when giving items, weapons etc.
|
||||
Config.Multichar = GetResourceState("esx_multicharacter") ~= "missing"
|
||||
Config.Identity = true -- Select a characters identity data before they have loaded in (this happens by default with multichar)
|
||||
Config.DistanceGive = 4.0 -- Max distance when giving items, weapons etc.
|
||||
|
||||
Config.AdminLogging = false -- Logs the usage of certain commands by those with group.admin ace permissions (default is false)
|
||||
Config.AdminLogging = false -- Logs the usage of certain commands by those with group.admin ace permissions (default is false)
|
||||
|
||||
Config.DisableHealthRegeneration = false -- Player will no longer regenerate health
|
||||
Config.DisableVehicleRewards = false -- Disables Player Recieving weapons from vehicles
|
||||
Config.DisableNPCDrops = false -- stops NPCs from dropping weapons on death
|
||||
Config.DisableDispatchServices = false -- Disable Dispatch services
|
||||
Config.DisableScenarios = false -- Disable Scenarios
|
||||
Config.DisableWeaponWheel = false -- Disables default weapon wheel
|
||||
Config.DisableAimAssist = false -- disables AIM assist (mainly on controllers)
|
||||
Config.DisableVehicleSeatShuff = false -- Disables vehicle seat shuff
|
||||
Config.RemoveHudCommonents = {
|
||||
[1] = false, --WANTED_STARS,
|
||||
[2] = false, --WEAPON_ICON
|
||||
[3] = false, --CASH
|
||||
[4] = false, --MP_CASH
|
||||
[5] = false, --MP_MESSAGE
|
||||
[6] = false, --VEHICLE_NAME
|
||||
[7] = false,-- AREA_NAME
|
||||
[8] = false,-- VEHICLE_CLASS
|
||||
[9] = false, --STREET_NAME
|
||||
[10] = false, --HELP_TEXT
|
||||
[11] = false, --FLOATING_HELP_TEXT_1
|
||||
[12] = false, --FLOATING_HELP_TEXT_2
|
||||
[13] = false, --CASH_CHANGE
|
||||
[14] = false, --RETICLE
|
||||
[15] = false, --SUBTITLE_TEXT
|
||||
[16] = false, --RADIO_STATIONS
|
||||
[17] = false, --SAVING_GAME,
|
||||
[18] = false, --GAME_STREAM
|
||||
[19] = false, --WEAPON_WHEEL
|
||||
[20] = false, --WEAPON_WHEEL_STATS
|
||||
[21] = false, --HUD_COMPONENTS
|
||||
[22] = false, --HUD_WEAPONS
|
||||
Config.DisableHealthRegeneration = false -- Player will no longer regenerate health
|
||||
Config.DisableVehicleRewards = false -- Disables Player Recieving weapons from vehicles
|
||||
Config.DisableNPCDrops = false -- stops NPCs from dropping weapons on death
|
||||
Config.DisableDispatchServices = false -- Disable Dispatch services
|
||||
Config.DisableScenarios = false -- Disable Scenarios
|
||||
Config.DisableWeaponWheel = false -- Disables default weapon wheel
|
||||
Config.DisableAimAssist = false -- disables AIM assist (mainly on controllers)
|
||||
Config.DisableVehicleSeatShuff = false -- Disables vehicle seat shuff
|
||||
Config.RemoveHudCommonents = {
|
||||
[1] = false, --WANTED_STARS,
|
||||
[2] = false, --WEAPON_ICON
|
||||
[3] = false, --CASH
|
||||
[4] = false, --MP_CASH
|
||||
[5] = false, --MP_MESSAGE
|
||||
[6] = false, --VEHICLE_NAME
|
||||
[7] = false, -- AREA_NAME
|
||||
[8] = false, -- VEHICLE_CLASS
|
||||
[9] = false, --STREET_NAME
|
||||
[10] = false, --HELP_TEXT
|
||||
[11] = false, --FLOATING_HELP_TEXT_1
|
||||
[12] = false, --FLOATING_HELP_TEXT_2
|
||||
[13] = false, --CASH_CHANGE
|
||||
[14] = false, --RETICLE
|
||||
[15] = false, --SUBTITLE_TEXT
|
||||
[16] = false, --RADIO_STATIONS
|
||||
[17] = false, --SAVING_GAME,
|
||||
[18] = false, --GAME_STREAM
|
||||
[19] = false, --WEAPON_WHEEL
|
||||
[20] = false, --WEAPON_WHEEL_STATS
|
||||
[21] = false, --HUD_COMPONENTS
|
||||
[22] = false, --HUD_WEAPONS
|
||||
}
|
||||
|
||||
Config.SpawnVehMaxUpgrades = true -- admin vehicles spawn with max vehcle settings
|
||||
Config.CustomAIPlates = 'ESX.A111' -- Custom plates for AI vehicles
|
||||
Config.SpawnVehMaxUpgrades = true -- admin vehicles spawn with max vehcle settings
|
||||
Config.CustomAIPlates = 'ESX.A111' -- Custom plates for AI vehicles
|
||||
-- Pattern string format
|
||||
--1 will lead to a random number from 0-9.
|
||||
--A will lead to a random letter from A-Z.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,7 +5,7 @@ game 'gta5'
|
||||
description 'ES Extended'
|
||||
|
||||
lua54 'yes'
|
||||
version '1.9.4'
|
||||
version '1.9.5'
|
||||
|
||||
shared_scripts {
|
||||
'locale.lua',
|
||||
@@ -42,7 +42,7 @@ client_scripts {
|
||||
'client/modules/callback.lua',
|
||||
|
||||
'client/main.lua',
|
||||
|
||||
|
||||
'common/modules/*.lua',
|
||||
'common/functions.lua',
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Locales = {}
|
||||
|
||||
function Translate(str, ...) -- Translate string
|
||||
function Translate(str, ...) -- Translate string
|
||||
if not str then
|
||||
print(("[^1ERROR^7] Resource ^5%s^7 You did not specify a parameter for the Translate function or the value is nil!"):format(GetInvokingResource() or GetCurrentResourceName()))
|
||||
return 'Given translate function parameter is nil!'
|
||||
@@ -14,7 +14,7 @@ function Translate(str, ...) -- Translate string
|
||||
return 'Translation [' .. Config.Locale .. '][' .. str .. '] does not exist'
|
||||
end
|
||||
elseif Config.Locale ~= 'en' and Locales['en'] and Locales['en'][str] then
|
||||
return string.format(Locales['en'][str], ...)
|
||||
return string.format(Locales['en'][str], ...)
|
||||
else
|
||||
return 'Locale [' .. Config.Locale .. '] does not exist'
|
||||
end
|
||||
|
||||
@@ -217,10 +217,10 @@ Locales["cs"] = {
|
||||
["weapon_tactilerifle"] = "Service Carbine",
|
||||
|
||||
-- Drug Wars DLC
|
||||
['weapon_candycane'] = 'Candy Cane', -- not translated
|
||||
['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_railgunxm3'] = 'Railgun', -- not translated
|
||||
|
||||
-- Thrown
|
||||
["weapon_ball"] = "Míček",
|
||||
|
||||
@@ -223,10 +223,10 @@ Locales["da"] = {
|
||||
["weapon_tactilerifle"] = "Service Carbine",
|
||||
|
||||
-- Drug Wars DLC
|
||||
['weapon_candycane'] = 'Candy Cane', -- not translated
|
||||
['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_railgunxm3'] = 'Railgun', -- not translated
|
||||
|
||||
-- Thrown
|
||||
["weapon_ball"] = "Baseball",
|
||||
|
||||
@@ -223,10 +223,10 @@ Locales["de"] = {
|
||||
["weapon_tactilerifle"] = "Service Karabiner",
|
||||
|
||||
-- Drug Wars DLC
|
||||
['weapon_candycane'] = 'Candy Cane', -- not translated
|
||||
['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_railgunxm3'] = 'Railgun', -- not translated
|
||||
|
||||
-- Thrown
|
||||
["weapon_ball"] = "Baseball",
|
||||
|
||||
@@ -366,4 +366,4 @@ Locales["en"] = {
|
||||
["tint_lspd"] = "blue skin",
|
||||
["tint_orange"] = "orange skin",
|
||||
["tint_platinum"] = "platinum skin",
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,10 +116,10 @@ Locales["es"] = {
|
||||
-- Weapons
|
||||
|
||||
-- Drug Wars DLC
|
||||
['weapon_candycane'] = 'Candy Cane', -- not translated
|
||||
['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_railgunxm3'] = 'Railgun', -- not translated
|
||||
|
||||
-- Melee
|
||||
["weapon_dagger"] = "Daga",
|
||||
@@ -357,7 +357,7 @@ Locales["es"] = {
|
||||
["tint_lspd"] = "Skin Azul",
|
||||
["tint_orange"] = "Skin Naranja",
|
||||
["tint_platinum"] = "Skin Plata",
|
||||
|
||||
|
||||
-- Duty related
|
||||
["stopped_duty"] = "Has salido de servicio.",
|
||||
["started_duty"] = "Has entrado de servicio.",
|
||||
|
||||
@@ -109,10 +109,10 @@ Locales["fi"] = {
|
||||
["locale_currency"] = "$%s",
|
||||
|
||||
-- Drug Wars DLC
|
||||
['weapon_candycane'] = 'Candy Cane', -- not translated
|
||||
['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_railgunxm3'] = 'Railgun', -- not translated
|
||||
|
||||
-- Weapons
|
||||
["weapon_knife"] = "Veitsi",
|
||||
|
||||
@@ -197,10 +197,10 @@ Locales["fr"] = {
|
||||
["component_luxary_finish"] = "finition de luxe",
|
||||
|
||||
-- Drug Wars DLC
|
||||
['weapon_candycane'] = 'Candy Cane', -- not translated
|
||||
['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_railgunxm3'] = 'Railgun', -- not translated
|
||||
|
||||
-- Weapon Ammo
|
||||
["ammo_rounds"] = "cartouche(s)",
|
||||
@@ -231,7 +231,7 @@ Locales["fr"] = {
|
||||
["tint_lspd"] = "skin bleu",
|
||||
["tint_orange"] = "skin orange",
|
||||
["tint_platinum"] = "skin platine",
|
||||
|
||||
|
||||
-- Duty related
|
||||
["stopped_duty"] = "Vous êtes maintenant hors-service.",
|
||||
["started_duty"] = "Vous êtes maintenant en-service.",
|
||||
|
||||
@@ -64,7 +64,7 @@ Locales["hu"] = {
|
||||
["command_clearinventory"] = "Minden tárgy törlése a játékos inventoryból",
|
||||
["command_clearloadout"] = "Minden fegyver elvétele a játékostól",
|
||||
["command_freeze"] = "Játékos fagyasztása",
|
||||
["command_unfreeze"] = "Játékos kiolvasztása",
|
||||
["command_unfreeze"] = "Játékos kiolvasztása",
|
||||
["command_giveaccountmoney"] = "Pénz adás a megadott típusban",
|
||||
["command_giveaccountmoney_account"] = "Típus",
|
||||
["command_giveaccountmoney_amount"] = "Mennyiség",
|
||||
@@ -82,7 +82,7 @@ Locales["hu"] = {
|
||||
["command_giveweaponcomponent_hasalready"] = "Játékosnak már van ilyen fegyver kiegészítője",
|
||||
["command_giveweaponcomponent_missingweapon"] = "Játékosnak nincs ilyen fegyvere",
|
||||
["command_goto"] = "Teleportálás játékoshoz",
|
||||
["command_kill"] = "Játékos megölése",
|
||||
["command_kill"] = "Játékos megölése",
|
||||
["command_save"] = "Játékos adatainak mentése",
|
||||
["command_saveall"] = "Összes játékos adatainak mentése",
|
||||
["command_setaccountmoney"] = "Játékos pénzének beállítása megadott típusban",
|
||||
@@ -223,10 +223,10 @@ Locales["hu"] = {
|
||||
["weapon_tactilerifle"] = "Service Carbine",
|
||||
|
||||
-- Drug Wars DLC
|
||||
['weapon_candycane'] = 'Candy Cane', -- not translated
|
||||
['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_railgunxm3'] = 'Railgun', -- not translated
|
||||
|
||||
-- Thrown
|
||||
["weapon_ball"] = "Baseball",
|
||||
|
||||
@@ -223,10 +223,10 @@ Locales["it"] = {
|
||||
["weapon_tactilerifle"] = "Carabina di servizio",
|
||||
|
||||
-- Drug Wars DLC
|
||||
['weapon_candycane'] = 'Candy Cane', -- not translated
|
||||
['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_railgunxm3'] = 'Railgun', -- not translated
|
||||
|
||||
-- Thrown
|
||||
["weapon_ball"] = "Palla",
|
||||
|
||||
@@ -36,10 +36,10 @@ Locales["nl"] = {
|
||||
["threw_weapon_already"] = "Je hebt dit wapen al !",
|
||||
["threw_cannot_pickup"] = "Inventoraris is vol, Kan niet oppakken!",
|
||||
["threw_pickup_prompt"] = "Druk op E om op te pakken",
|
||||
|
||||
|
||||
-- Key mapping
|
||||
["keymap_showinventory"] = "Laat inventaris zien",
|
||||
|
||||
|
||||
-- Salary related
|
||||
["received_salary"] = "Je bent betaald: €%s",
|
||||
["received_help"] = "Je hebt je uitkering gekregen: €%s",
|
||||
@@ -49,10 +49,10 @@ Locales["nl"] = {
|
||||
["account_bank"] = "Bank",
|
||||
["account_black_money"] = "Zwart geld",
|
||||
["account_money"] = "Cash",
|
||||
|
||||
|
||||
["act_imp"] = "Kan actie niet uitvoeren",
|
||||
["in_vehicle"] = "Kan actie niet uitvoeren, de speler zit in een voertuig.",
|
||||
|
||||
|
||||
-- Commands
|
||||
["command_bring"] = "Breng speler naar jou",
|
||||
["command_car"] = "Spawn een voertuig",
|
||||
@@ -110,17 +110,17 @@ Locales["nl"] = {
|
||||
["command_giveammo_ammo"] = "Ammo Hoeveelheid",
|
||||
["tpm_nowaypoint"] = "Geen waypoint gezet.",
|
||||
["tpm_success"] = "Successvol geteleporteerd",
|
||||
|
||||
|
||||
["noclip_message"] = "Noclip is %s",
|
||||
["enabled"] = "~g~aangezet~s~",
|
||||
["disabled"] = "~r~uitgezet~s~",
|
||||
|
||||
|
||||
-- Locale settings
|
||||
["locale_digit_grouping_symbol"] = ",",
|
||||
["locale_currency"] = "€%s",
|
||||
|
||||
|
||||
-- Weapons
|
||||
|
||||
|
||||
-- Melee
|
||||
["weapon_dagger"] = "Dolk",
|
||||
["weapon_bat"] = "Knuppel",
|
||||
@@ -139,7 +139,7 @@ Locales["nl"] = {
|
||||
["weapon_poolcue"] = "Pool Cue",
|
||||
["weapon_stone_hatchet"] = "Steenbijl",
|
||||
["weapon_switchblade"] = "Switchblade",
|
||||
|
||||
|
||||
-- Handguns
|
||||
["weapon_appistol"] = "AP-pistool",
|
||||
["weapon_ceramicpistol"] = "Keramische pistool",
|
||||
@@ -160,7 +160,7 @@ Locales["nl"] = {
|
||||
["weapon_stungun"] = "Taser",
|
||||
["weapon_raypistol"] = "Up-N-Atomizer",
|
||||
["weapon_vintagepistol"] = "Vintage Pistool",
|
||||
|
||||
|
||||
-- Shotguns
|
||||
["weapon_assaultshotgun"] = "Aanvalsgeweer",
|
||||
["weapon_autoshotgun"] = "Automatisch jachtgeweer",
|
||||
@@ -172,7 +172,7 @@ Locales["nl"] = {
|
||||
["weapon_pumpshotgun"] = "Pompgeweer",
|
||||
["weapon_pumpshotgun_mk2"] = "Pump Shotgun MK2",
|
||||
["weapon_sawnoffshotgun"] = "Afgezaagd jachtgeweer",
|
||||
|
||||
|
||||
-- SMG & LMG
|
||||
["weapon_assaultsmg"] = "Aanval SMG",
|
||||
["weapon_combatmg"] = "Gevecht MG",
|
||||
@@ -186,7 +186,7 @@ Locales["nl"] = {
|
||||
["weapon_smg"] = "SMG",
|
||||
["weapon_smg_mk2"] = "SMG MK2",
|
||||
["weapon_raycarbine"] = "Onheilige Hellbringer",
|
||||
|
||||
|
||||
-- Rifles
|
||||
["weapon_advancedrifle"] = "Geavanceerd geweer",
|
||||
["weapon_assaultrifle"] = "Aanvalsgeweer",
|
||||
@@ -199,14 +199,14 @@ Locales["nl"] = {
|
||||
["weapon_militaryrifle"] = "Militair geweer",
|
||||
["weapon_specialcarbine"] = "Speciale karabijn",
|
||||
["weapon_specialcarbine_mk2"] = "Speciale karabijn MK2",
|
||||
|
||||
|
||||
-- Sniper
|
||||
["weapon_heavysniper"] = "Zware sluipschutter",
|
||||
["weapon_heavysniper_mk2"] = "Zware Sniper MK2",
|
||||
["weapon_marksmanrifle"] = "Schuttersgeweer",
|
||||
["weapon_marksmanrifle_mk2"] = "Schuttersgeweer MK2",
|
||||
["weapon_sniperrifle"] = "Sniper Rifle",
|
||||
|
||||
|
||||
-- Heavy / Launchers
|
||||
["weapon_compactlauncher"] = "Compacte Launcher",
|
||||
["weapon_firework"] = "Vuurwerkstarter",
|
||||
@@ -216,18 +216,18 @@ Locales["nl"] = {
|
||||
["weapon_railgun"] = "Spoorgeweer",
|
||||
["weapon_rpg"] = "Raketwerper",
|
||||
["weapon_rayminigun"] = "Weduwemaker",
|
||||
|
||||
|
||||
-- Criminal Enterprises DLC
|
||||
["weapon_metaldetector"] = "Metaal Detector",
|
||||
["weapon_precisionrifle"] = "Precisiegeweer",
|
||||
["weapon_tactilerifle"] = "Service Carbine",
|
||||
|
||||
-- Drug Wars DLC
|
||||
["weapon_candycane"] = "Candy Cane", -- not translated
|
||||
-- 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_pistolxm3"] = "WM 29 Pistol", -- not translated
|
||||
["weapon_railgunxm3"] = "Railgun", -- not translated
|
||||
|
||||
-- Thrown
|
||||
["weapon_ball"] = "Honkbal",
|
||||
["weapon_bzgas"] = "BZ-gas",
|
||||
@@ -241,7 +241,7 @@ Locales["nl"] = {
|
||||
["weapon_snowball"] = "Sneeuwbal",
|
||||
["weapon_stickybomb"] = "Kleefbom",
|
||||
["weapon_smokegrenade"] = "Traangas",
|
||||
|
||||
|
||||
-- Special
|
||||
["weapon_firebluser"] = "Brandblusser",
|
||||
["weapon_digiscanner"] = "Digitale scanner",
|
||||
@@ -249,7 +249,7 @@ Locales["nl"] = {
|
||||
["weapon_handcuffs"] = "Handboeien",
|
||||
["gadget_nightvision"] = "Nachtzicht",
|
||||
["gadget_parachute"] = "parachute",
|
||||
|
||||
|
||||
-- Weapon Components
|
||||
["component_knuckle_base"] = "basismodel",
|
||||
["component_knuckle_pimp"] = "de pooier",
|
||||
@@ -261,16 +261,16 @@ Locales["nl"] = {
|
||||
["component_knuckle_player"] = "de speler",
|
||||
["component_knuckle_king"] = "de koning",
|
||||
["component_knuckle_vagos"] = "de Vagos",
|
||||
|
||||
|
||||
["component_luxary_finish"] = "luxe wapenafwerking",
|
||||
|
||||
|
||||
["component_handle_default"] = "standaard handvat",
|
||||
["component_handle_vip"] = "VIP-handvat",
|
||||
["component_handle_bodyguard"] = "bodyguard-handvat",
|
||||
|
||||
|
||||
["component_vip_finish"] = "VIP Finish",
|
||||
["component_bodyguard_finish"] = "bodyguard Finish",
|
||||
|
||||
|
||||
["component_camo_finish"] = "digitale camouflage",
|
||||
["component_camo_finish2"] = "penseelstreek camouflage",
|
||||
["component_camo_finish3"] = "bos camouflage",
|
||||
@@ -282,7 +282,7 @@ Locales["nl"] = {
|
||||
["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",
|
||||
@@ -294,12 +294,12 @@ Locales["nl"] = {
|
||||
["component_camo_slide_finish9"] = "geometrische diacamouflage",
|
||||
["component_camo_slide_finish10"] = "boom Slide camouflage",
|
||||
["component_camo_slide_finish11"] = "patriottische diacamouflage",
|
||||
|
||||
|
||||
["component_clip_default"] = "standaard magazijn",
|
||||
["component_clip_extended"] = "uitgebreid magazijn",
|
||||
["component_clip_drum"] = "drum magazijn",
|
||||
["component_clip_box"] = "box magazijn",
|
||||
|
||||
|
||||
["component_scope_holo"] = "holografisch bereik",
|
||||
["component_scope_small"] = "klein bereik",
|
||||
["component_scope_medium"] = "gemiddeld bereik",
|
||||
@@ -307,10 +307,10 @@ Locales["nl"] = {
|
||||
["component_scope"] = "gemonteerde scope",
|
||||
["component_scope_advanced"] = "geavanceerd bereik",
|
||||
["component_ironsights"] = "ironsights",
|
||||
|
||||
|
||||
["component_suppressor"] = "suppressor",
|
||||
["component_compensator"] = "compensator",
|
||||
|
||||
|
||||
["component_muzzle_flat"] = "platte mondingsrem",
|
||||
["component_muzzle_tactical"] = "tactische mondingsrem",
|
||||
["component_muzzle_fat"] = "fat-end mondingsrem",
|
||||
@@ -319,26 +319,26 @@ Locales["nl"] = {
|
||||
["component_muzzle_slanted"] = "schuine mondingsrem",
|
||||
["component_muzzle_split"] = "gespleten mondingsrem",
|
||||
["component_muzzle_squared"] = "kwadraat mondingsrem",
|
||||
|
||||
|
||||
["component_flashlight"] = "zaklamp",
|
||||
["component_grip"] = "grip",
|
||||
|
||||
|
||||
["component_barrel_default"] = "standaard handvat",
|
||||
["component_barrel_heavy"] = "zware handvat",
|
||||
|
||||
|
||||
["component_ammo_tracer"] = "tracermunitie",
|
||||
["component_ammo_incendiary"] = "brandgevaarlijke munitie",
|
||||
["component_ammo_hollowpoint"] = "hollowpoint munitie",
|
||||
["component_ammo_fmj"] = "fMJ-munitie",
|
||||
["component_ammo_armor"] = "pantser piercing munitie",
|
||||
["component_ammo_explosive"] = "pantserpiercing brandgevaarlijke munitie",
|
||||
|
||||
|
||||
["component_shells_default"] = "standaard shells",
|
||||
["component_shells_incendiary"] = "draken ademschelpen",
|
||||
["component_shells_armor"] = "stalen Buckshot Shells",
|
||||
["component_shells_hollowpoint"] = "flechette schelpen",
|
||||
["component_shells_explosive"] = "explosieve slakkenhuizen",
|
||||
|
||||
|
||||
-- Weapon Ammo
|
||||
["ammo_rounds"] = "ronde(n)",
|
||||
["ammo_shells"] = "huls/(zen)",
|
||||
@@ -358,7 +358,7 @@ Locales["nl"] = {
|
||||
["ammo_snowball"] = "sneeuwbal(len)",
|
||||
["ammo_flare"] = "flare(s)",
|
||||
["ammo_flaregun"] = "flare(s)",
|
||||
|
||||
|
||||
-- Weapon Tints
|
||||
["tint_default"] = "standaard skin",
|
||||
["tint_green"] = "groene skin",
|
||||
|
||||
@@ -196,10 +196,10 @@ Locales["pl"] = {
|
||||
["component_luxary_finish"] = "luksusowe wykończenie broni",
|
||||
|
||||
-- Drug Wars DLC
|
||||
['weapon_candycane'] = 'Candy Cane', -- not translated
|
||||
['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_railgunxm3'] = 'Railgun', -- not translated
|
||||
|
||||
-- Weapon Ammo
|
||||
["ammo_rounds"] = "nabój/oi",
|
||||
|
||||
@@ -36,10 +36,10 @@ Locales["sl"] = {
|
||||
["threw_weapon_already"] = "Ti ze imas to orozje",
|
||||
["threw_cannot_pickup"] = "Shramba je poln, nemorem pobrati!",
|
||||
["threw_pickup_prompt"] = "Pritisni E da poberes",
|
||||
|
||||
|
||||
-- Key mapping
|
||||
["keymap_showinventory"] = "Pokazi Shrambo",
|
||||
|
||||
|
||||
-- Salary related
|
||||
["received_salary"] = "Vi ste plačali: $%s",
|
||||
["received_help"] = "Vi ste placali svoj CEK v vrednosti: $%s",
|
||||
@@ -49,10 +49,10 @@ Locales["sl"] = {
|
||||
["account_bank"] = "Banka",
|
||||
["account_black_money"] = "Umazan Denar",
|
||||
["account_money"] = "Denar",
|
||||
|
||||
|
||||
["act_imp"] = "Dejanja ni mogoče izvesti",
|
||||
["in_vehicle"] = "Dejanja ni mogoče izvesti, Oseba je v vozilu",
|
||||
|
||||
|
||||
-- Commands
|
||||
["command_bring"] = "Teleportiraj osebo do sebe",
|
||||
["command_car"] = "Spawnaj si vozilo",
|
||||
@@ -110,17 +110,17 @@ Locales["sl"] = {
|
||||
["command_giveammo_ammo"] = "Kolicina streliva",
|
||||
["tpm_nowaypoint"] = "Ni nastavljene poti!.",
|
||||
["tpm_success"] = "Uspesno teleportiran",
|
||||
|
||||
|
||||
["noclip_message"] = "Noclip je bil %s",
|
||||
["enabled"] = "~g~Vkljucen~s~",
|
||||
["disabled"] = "~r~Izkljucen~s~",
|
||||
|
||||
|
||||
-- Locale settings
|
||||
["locale_digit_grouping_symbol"] = ",",
|
||||
["locale_currency"] = "€%s",
|
||||
|
||||
|
||||
-- Weapons
|
||||
|
||||
|
||||
-- Melee
|
||||
["weapon_dagger"] = "Dagger",
|
||||
["weapon_bat"] = "Bat",
|
||||
@@ -139,7 +139,7 @@ Locales["sl"] = {
|
||||
["weapon_poolcue"] = "Pool Cue",
|
||||
["weapon_stone_hatchet"] = "Stone Hatchet",
|
||||
["weapon_switchblade"] = "Switchblade",
|
||||
|
||||
|
||||
-- Handguns
|
||||
["weapon_appistol"] = "AP Pistol",
|
||||
["weapon_ceramicpistol"] = "Ceramic Pistol",
|
||||
@@ -160,7 +160,7 @@ Locales["sl"] = {
|
||||
["weapon_stungun"] = "Taser",
|
||||
["weapon_raypistol"] = "Up-N-Atomizer",
|
||||
["weapon_vintagepistol"] = "Vintage Pistol",
|
||||
|
||||
|
||||
-- Shotguns
|
||||
["weapon_assaultshotgun"] = "Assault Shotgun",
|
||||
["weapon_autoshotgun"] = "Auto Shotgun",
|
||||
@@ -172,7 +172,7 @@ Locales["sl"] = {
|
||||
["weapon_pumpshotgun"] = "Pump Shotgun",
|
||||
["weapon_pumpshotgun_mk2"] = "Pump Shotgun MK2",
|
||||
["weapon_sawnoffshotgun"] = "Sawed Off Shotgun",
|
||||
|
||||
|
||||
-- SMG & LMG
|
||||
["weapon_assaultsmg"] = "Assault SMG",
|
||||
["weapon_combatmg"] = "Combat MG",
|
||||
@@ -186,7 +186,7 @@ Locales["sl"] = {
|
||||
["weapon_smg"] = "SMG",
|
||||
["weapon_smg_mk2"] = "SMG MK2",
|
||||
["weapon_raycarbine"] = "Unholy Hellbringer",
|
||||
|
||||
|
||||
-- Rifles
|
||||
["weapon_advancedrifle"] = "Advanced Rifle",
|
||||
["weapon_assaultrifle"] = "Assault Rifle",
|
||||
@@ -199,14 +199,14 @@ Locales["sl"] = {
|
||||
["weapon_militaryrifle"] = "Military Rifle",
|
||||
["weapon_specialcarbine"] = "Special Carbine",
|
||||
["weapon_specialcarbine_mk2"] = "Special Carbine MK2",
|
||||
|
||||
|
||||
-- Sniper
|
||||
["weapon_heavysniper"] = "Heavy Sniper",
|
||||
["weapon_heavysniper_mk2"] = "Heavy Sniper MK2",
|
||||
["weapon_marksmanrifle"] = "Marksman Rifle",
|
||||
["weapon_marksmanrifle_mk2"] = "Marksman Rifle MK2",
|
||||
["weapon_sniperrifle"] = "Sniper Rifle",
|
||||
|
||||
|
||||
-- Heavy / Launchers
|
||||
["weapon_compactlauncher"] = "Compact Launcher",
|
||||
["weapon_firework"] = "Firework Launcher",
|
||||
@@ -216,18 +216,18 @@ Locales["sl"] = {
|
||||
["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_candycane"] = "Candy Cane", -- not translated
|
||||
["weapon_acidpackage"] = "Acid Package", -- not translated
|
||||
["weapon_pistolxm3"] = "WM 29 Pistol", -- not translated
|
||||
["weapon_railgunxm3"] = "Railgun", -- not translated
|
||||
|
||||
["weapon_railgunxm3"] = "Railgun", -- not translated
|
||||
|
||||
-- Thrown
|
||||
["weapon_ball"] = "Baseball",
|
||||
["weapon_bzgas"] = "BZ Gas",
|
||||
@@ -241,7 +241,7 @@ Locales["sl"] = {
|
||||
["weapon_snowball"] = "Snowball",
|
||||
["weapon_stickybomb"] = "Sticky Bomb",
|
||||
["weapon_smokegrenade"] = "Tear Gas",
|
||||
|
||||
|
||||
-- Special
|
||||
["weapon_fireextinguisher"] = "Fire Extinguisher",
|
||||
["weapon_digiscanner"] = "Digital Scanner",
|
||||
@@ -249,7 +249,7 @@ Locales["sl"] = {
|
||||
["weapon_handcuffs"] = "Handcuffs",
|
||||
["gadget_nightvision"] = "Night Vision",
|
||||
["gadget_parachute"] = "parachute",
|
||||
|
||||
|
||||
-- Weapon Components
|
||||
["component_knuckle_base"] = "base Model",
|
||||
["component_knuckle_pimp"] = "the Pimp",
|
||||
@@ -261,16 +261,16 @@ Locales["sl"] = {
|
||||
["component_knuckle_player"] = "the Player",
|
||||
["component_knuckle_king"] = "the King",
|
||||
["component_knuckle_vagos"] = "the Vagos",
|
||||
|
||||
|
||||
["component_luxary_finish"] = "luxary Weapon Finish",
|
||||
|
||||
|
||||
["component_handle_default"] = "default Handle",
|
||||
["component_handle_vip"] = "vIP Handle",
|
||||
["component_handle_bodyguard"] = "bodyguard Handle",
|
||||
|
||||
|
||||
["component_vip_finish"] = "vIP Finish",
|
||||
["component_bodyguard_finish"] = "bodyguard Finish",
|
||||
|
||||
|
||||
["component_camo_finish"] = "digital Camo",
|
||||
["component_camo_finish2"] = "brushstroke Camo",
|
||||
["component_camo_finish3"] = "woodland Camo",
|
||||
@@ -282,7 +282,7 @@ Locales["sl"] = {
|
||||
["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",
|
||||
@@ -294,12 +294,12 @@ Locales["sl"] = {
|
||||
["component_camo_slide_finish9"] = "geometric Slide Camo",
|
||||
["component_camo_slide_finish10"] = "boom Slide Camo",
|
||||
["component_camo_slide_finish11"] = "patriotic Slide Camo",
|
||||
|
||||
|
||||
["component_clip_default"] = "default Magazine",
|
||||
["component_clip_extended"] = "extended Magazine",
|
||||
["component_clip_drum"] = "drum Magazine",
|
||||
["component_clip_box"] = "box Magazine",
|
||||
|
||||
|
||||
["component_scope_holo"] = "holographic Scope",
|
||||
["component_scope_small"] = "small Scope",
|
||||
["component_scope_medium"] = "medium Scope",
|
||||
@@ -307,10 +307,10 @@ Locales["sl"] = {
|
||||
["component_scope"] = "mounted Scope",
|
||||
["component_scope_advanced"] = "advanced Scope",
|
||||
["component_ironsights"] = "ironsights",
|
||||
|
||||
|
||||
["component_suppressor"] = "suppressor",
|
||||
["component_compensator"] = "compensator",
|
||||
|
||||
|
||||
["component_muzzle_flat"] = "flat Muzzle Brake",
|
||||
["component_muzzle_tactical"] = "tactical Muzzle Brake",
|
||||
["component_muzzle_fat"] = "fat-End Muzzle Brake",
|
||||
@@ -319,26 +319,26 @@ Locales["sl"] = {
|
||||
["component_muzzle_slanted"] = "slanted Muzzle Brake",
|
||||
["component_muzzle_split"] = "split-End Muzzle Brake",
|
||||
["component_muzzle_squared"] = "squared Muzzle Brake",
|
||||
|
||||
|
||||
["component_flashlight"] = "flashlight",
|
||||
["component_grip"] = "grip",
|
||||
|
||||
|
||||
["component_barrel_default"] = "default Barrel",
|
||||
["component_barrel_heavy"] = "heavy Barrel",
|
||||
|
||||
|
||||
["component_ammo_tracer"] = "tracer Ammo",
|
||||
["component_ammo_incendiary"] = "incendiary Ammo",
|
||||
["component_ammo_hollowpoint"] = "hollowpoint Ammo",
|
||||
["component_ammo_fmj"] = "fMJ Ammo",
|
||||
["component_ammo_armor"] = "armor Piercing Ammo",
|
||||
["component_ammo_explosive"] = "armor Piercing Incendiary Ammo",
|
||||
|
||||
|
||||
["component_shells_default"] = "default Shells",
|
||||
["component_shells_incendiary"] = "dragons Breath Shells",
|
||||
["component_shells_armor"] = "steel Buckshot Shells",
|
||||
["component_shells_hollowpoint"] = "flechette Shells",
|
||||
["component_shells_explosive"] = "explosive Slug Shells",
|
||||
|
||||
|
||||
-- Weapon Ammo
|
||||
["ammo_rounds"] = "round(s)",
|
||||
["ammo_shells"] = "shell(s)",
|
||||
@@ -358,7 +358,7 @@ Locales["sl"] = {
|
||||
["ammo_snowball"] = "snowball(s)",
|
||||
["ammo_flare"] = "flare(s)",
|
||||
["ammo_flaregun"] = "flare(s)",
|
||||
|
||||
|
||||
-- Weapon Tints
|
||||
["tint_default"] = "default skin",
|
||||
["tint_green"] = "green skin",
|
||||
@@ -368,5 +368,4 @@ Locales["sl"] = {
|
||||
["tint_lspd"] = "blue skin",
|
||||
["tint_orange"] = "orange skin",
|
||||
["tint_platinum"] = "platinum skin",
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -223,10 +223,10 @@ Locales["sr"] = {
|
||||
["weapon_tactilerifle"] = "Service Carbine",
|
||||
|
||||
-- Drug Wars DLC
|
||||
['weapon_candycane'] = 'Candy Cane', -- not translated
|
||||
['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_railgunxm3'] = 'Railgun', -- not translated
|
||||
|
||||
-- Thrown
|
||||
["weapon_ball"] = "Baseball",
|
||||
|
||||
@@ -223,10 +223,10 @@ Locales["zh-cn"] = {
|
||||
["weapon_tactilerifle"] = "制式卡宾步枪",
|
||||
|
||||
-- Drug Wars DLC
|
||||
['weapon_candycane'] = 'Candy Cane', -- not translated
|
||||
['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_railgunxm3'] = 'Railgun', -- not translated
|
||||
|
||||
-- Thrown
|
||||
["weapon_ball"] = "棒球",
|
||||
|
||||
@@ -20,7 +20,7 @@ Core.PlayerFunctionOverrides.OxInventory = {
|
||||
metadata = nil
|
||||
end
|
||||
|
||||
minimalInventory[#minimalInventory+1] = {
|
||||
minimalInventory[#minimalInventory + 1] = {
|
||||
name = v.name,
|
||||
count = v.count,
|
||||
slot = k,
|
||||
@@ -43,7 +43,7 @@ Core.PlayerFunctionOverrides.OxInventory = {
|
||||
end,
|
||||
|
||||
setAccountMoney = function(self)
|
||||
return function(accountName,money, reason)
|
||||
return function(accountName, money, reason)
|
||||
reason = reason or 'unknown'
|
||||
if money >= 0 then
|
||||
local account = self.getAccount(accountName)
|
||||
@@ -63,16 +63,16 @@ Core.PlayerFunctionOverrides.OxInventory = {
|
||||
end,
|
||||
|
||||
addAccountMoney = function(self)
|
||||
return function(accountName,money, reason)
|
||||
return function(accountName, money, reason)
|
||||
reason = reason or 'unknown'
|
||||
if money > 0 then
|
||||
local account = self.getAccount(accountName)
|
||||
|
||||
if account then
|
||||
money = account.round and ESX.Math.Round(money) or money
|
||||
self.accounts[account.index].money = self.accounts[account.index].money + money
|
||||
self.triggerEvent('esx:setAccountMoney', account)
|
||||
TriggerEvent('esx:addAccountMoney', self.source, accountName, money, reason)
|
||||
money = account.round and ESX.Math.Round(money) or money
|
||||
self.accounts[account.index].money = self.accounts[account.index].money + money
|
||||
self.triggerEvent('esx:setAccountMoney', account)
|
||||
TriggerEvent('esx:addAccountMoney', self.source, accountName, money, reason)
|
||||
if Inventory.accounts[accountName] then
|
||||
Inventory.AddItem(self.source, accountName, money)
|
||||
end
|
||||
@@ -82,7 +82,7 @@ Core.PlayerFunctionOverrides.OxInventory = {
|
||||
end,
|
||||
|
||||
removeAccountMoney = function(self)
|
||||
return function(accountName,money, reason)
|
||||
return function(accountName, money, reason)
|
||||
reason = reason or 'unknown'
|
||||
if money > 0 then
|
||||
local account = self.getAccount(accountName)
|
||||
@@ -101,31 +101,31 @@ Core.PlayerFunctionOverrides.OxInventory = {
|
||||
end,
|
||||
|
||||
getInventoryItem = function(self)
|
||||
return function(name,metadata)
|
||||
return function(name, metadata)
|
||||
return Inventory.GetItem(self.source, name, metadata)
|
||||
end
|
||||
end,
|
||||
|
||||
addInventoryItem = function(self)
|
||||
return function(name,count,metadata,slot)
|
||||
return function(name, count, metadata, slot)
|
||||
return Inventory.AddItem(self.source, name, count or 1, metadata, slot)
|
||||
end
|
||||
end,
|
||||
|
||||
removeInventoryItem = function(self)
|
||||
return function(name,count,metadata,slot)
|
||||
return function(name, count, metadata, slot)
|
||||
return Inventory.RemoveItem(self.source, name, count or 1, metadata, slot)
|
||||
end
|
||||
end,
|
||||
|
||||
setInventoryItem = function(self)
|
||||
return function(name,count,metadata)
|
||||
return function(name, count, metadata)
|
||||
return Inventory.SetItem(self.source, name, count, metadata)
|
||||
end
|
||||
end,
|
||||
|
||||
canCarryItem = function(self)
|
||||
return function(name,count,metadata)
|
||||
return function(name, count, metadata)
|
||||
return Inventory.CanCarryItem(self.source, name, count, metadata)
|
||||
end
|
||||
end,
|
||||
@@ -193,7 +193,7 @@ Core.PlayerFunctionOverrides.OxInventory = {
|
||||
end,
|
||||
|
||||
hasItem = function(self)
|
||||
return function(name,metadata)
|
||||
return function(name, metadata)
|
||||
return Inventory.GetItem(self.source, name, metadata)
|
||||
end
|
||||
end,
|
||||
|
||||
@@ -3,7 +3,7 @@ local GetEntityCoords = GetEntityCoords
|
||||
|
||||
function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory, weight, job, loadout, name, coords, metadata)
|
||||
local targetOverrides = Config.PlayerFunctionOverride and Core.PlayerFunctionOverrides[Config.PlayerFunctionOverride] or {}
|
||||
|
||||
|
||||
local self = {}
|
||||
|
||||
self.accounts = accounts
|
||||
@@ -20,10 +20,10 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
self.weight = weight
|
||||
self.maxWeight = Config.MaxWeight
|
||||
self.metadata = metadata
|
||||
if Config.Multichar then self.license = 'license'.. identifier:sub(identifier:find(':'), identifier:len()) else self.license = 'license:'..identifier end
|
||||
if Config.Multichar then self.license = 'license' .. identifier:sub(identifier:find(':'), identifier:len()) else self.license = 'license:' .. identifier end
|
||||
|
||||
ExecuteCommand(('add_principal identifier.%s group.%s'):format(self.license, self.group))
|
||||
|
||||
|
||||
local stateBag = Player(self.source).state
|
||||
stateBag:set("identifier", self.identifier, true)
|
||||
stateBag:set("license", self.license, true)
|
||||
@@ -39,7 +39,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
function self.setCoords(coordinates)
|
||||
local Ped = GetPlayerPed(self.source)
|
||||
local vector = type(coordinates) == "vector4" and coordinates or type(coordinates) == "vector3" and vector4(coordinates, 0.0) or
|
||||
vec(coordinates.x, coordinates.y, coordinates.z, coordinates.heading or 0.0)
|
||||
vec(coordinates.x, coordinates.y, coordinates.z, coordinates.heading or 0.0)
|
||||
SetEntityCoords(Ped, vector.xyz, false, false, false, false)
|
||||
SetEntityHeading(Ped, vector.w)
|
||||
end
|
||||
@@ -156,7 +156,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
local minimalLoadout = {}
|
||||
|
||||
for _, v in ipairs(self.loadout) do
|
||||
minimalLoadout[v.name] = {ammo = v.ammo}
|
||||
minimalLoadout[v.name] = { ammo = v.ammo }
|
||||
if v.tintIndex > 0 then minimalLoadout[v.name].tintIndex = v.tintIndex end
|
||||
|
||||
if #v.components > 0 then
|
||||
@@ -319,14 +319,14 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
end
|
||||
|
||||
function self.canCarryItem(itemName, count)
|
||||
if ESX.Items[itemName] then
|
||||
local currentWeight, itemWeight = self.weight, ESX.Items[itemName].weight
|
||||
local newWeight = currentWeight + (itemWeight * count)
|
||||
if ESX.Items[itemName] then
|
||||
local currentWeight, itemWeight = self.weight, ESX.Items[itemName].weight
|
||||
local newWeight = currentWeight + (itemWeight * count)
|
||||
|
||||
return newWeight <= self.maxWeight
|
||||
else
|
||||
print(('[^3WARNING^7] Item ^5"%s"^7 was used but does not exist!'):format(itemName))
|
||||
end
|
||||
return newWeight <= self.maxWeight
|
||||
else
|
||||
print(('[^3WARNING^7] Item ^5"%s"^7 was used but does not exist!'):format(itemName))
|
||||
end
|
||||
end
|
||||
|
||||
function self.canSwapItem(firstItem, firstItemCount, testItem, testItemCount)
|
||||
@@ -355,14 +355,14 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
if ESX.DoesJobExist(newJob, grade) then
|
||||
local jobObject, gradeObject = ESX.Jobs[newJob], ESX.Jobs[newJob].grades[grade]
|
||||
|
||||
self.job.id = jobObject.id
|
||||
self.job.name = jobObject.name
|
||||
self.job.label = jobObject.label
|
||||
self.job.id = jobObject.id
|
||||
self.job.name = jobObject.name
|
||||
self.job.label = jobObject.label
|
||||
|
||||
self.job.grade = tonumber(grade)
|
||||
self.job.grade_name = gradeObject.name
|
||||
self.job.grade_label = gradeObject.label
|
||||
self.job.grade_salary = gradeObject.salary
|
||||
self.job.grade = tonumber(grade)
|
||||
self.job.grade_name = gradeObject.name
|
||||
self.job.grade_label = gradeObject.label
|
||||
self.job.grade_salary = gradeObject.salary
|
||||
|
||||
if gradeObject.skin_male then
|
||||
self.job.skin_male = json.decode(gradeObject.skin_male)
|
||||
@@ -466,7 +466,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
if v.name == weaponName then
|
||||
weaponLabel = v.label
|
||||
|
||||
for _,v2 in ipairs(v.components) do
|
||||
for _, v2 in ipairs(v.components) do
|
||||
self.removeWeaponComponent(weaponName, v2)
|
||||
end
|
||||
|
||||
@@ -568,47 +568,46 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
self.triggerEvent('esx:showHelpNotification', msg, thisFrame, beep, duration)
|
||||
end
|
||||
|
||||
function self.getMeta(index, subIndex)
|
||||
if not (index) then return self.metadata end
|
||||
function self.getMeta(index, subIndex)
|
||||
if not (index) then return self.metadata end
|
||||
|
||||
if type(index) ~= "string" then
|
||||
return print("[^1ERROR^7] xPlayer.getMeta ^5index^7 should be ^5string^7!")
|
||||
end
|
||||
if type(index) ~= "string" then
|
||||
return print("[^1ERROR^7] xPlayer.getMeta ^5index^7 should be ^5string^7!")
|
||||
end
|
||||
|
||||
local metaData = self.metadata[index]
|
||||
if (metaData == nil) then
|
||||
return Config.EnableDebug and print(("[^1ERROR^7] xPlayer.getMeta ^5%s^7 not exist!"):format(index)) or nil
|
||||
end
|
||||
local metaData = self.metadata[index]
|
||||
if (metaData == nil) then
|
||||
return Config.EnableDebug and print(("[^1ERROR^7] xPlayer.getMeta ^5%s^7 not exist!"):format(index)) or nil
|
||||
end
|
||||
|
||||
if (subIndex and type(metaData) == "table") then
|
||||
local _type = type(subIndex)
|
||||
if (subIndex and type(metaData) == "table") then
|
||||
local _type = type(subIndex)
|
||||
|
||||
if (_type == "string") then
|
||||
local value = metaData[subIndex]
|
||||
return value
|
||||
end
|
||||
if (_type == "string") then
|
||||
local value = metaData[subIndex]
|
||||
return value
|
||||
end
|
||||
|
||||
if (_type == "table") then
|
||||
local returnValues = {}
|
||||
if (_type == "table") then
|
||||
local returnValues = {}
|
||||
|
||||
for i = 1, #subIndex do
|
||||
local key = subIndex[i]
|
||||
if (type(key) == "string") then
|
||||
returnValues[key] = self.getMeta(index, key)
|
||||
else
|
||||
print(("[^1ERROR^7] xPlayer.getMeta subIndex should be ^5string^7 or ^5table^7! that contains ^5string^7, received ^5%s^7!, skipping..."):format(type(key)))
|
||||
end
|
||||
end
|
||||
for i = 1, #subIndex do
|
||||
local key = subIndex[i]
|
||||
if (type(key) == "string") then
|
||||
returnValues[key] = self.getMeta(index, key)
|
||||
else
|
||||
print(("[^1ERROR^7] xPlayer.getMeta subIndex should be ^5string^7 or ^5table^7! that contains ^5string^7, received ^5%s^7!, skipping..."):format(type(key)))
|
||||
end
|
||||
end
|
||||
|
||||
return returnValues
|
||||
end
|
||||
return returnValues
|
||||
end
|
||||
|
||||
return print(("[^1ERROR^7] xPlayer.getMeta subIndex should be ^5string^7 or ^5table^7!, received ^5%s^7!"):format(_type))
|
||||
end
|
||||
|
||||
return metaData
|
||||
end
|
||||
return print(("[^1ERROR^7] xPlayer.getMeta subIndex should be ^5string^7 or ^5table^7!, received ^5%s^7!"):format(_type))
|
||||
end
|
||||
|
||||
return metaData
|
||||
end
|
||||
|
||||
function self.setMeta(index, value, subValue)
|
||||
if not index then
|
||||
@@ -626,14 +625,12 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
local _type = type(value)
|
||||
|
||||
if not subValue then
|
||||
|
||||
if _type ~= "number" and _type ~= "string" and _type ~= "table" then
|
||||
return print(("[^1ERROR^7] xPlayer.setMeta ^5%s^7 should be ^5number^7 or ^5string^7 or ^5table^7!"):format(value))
|
||||
end
|
||||
|
||||
self.metadata[index] = value
|
||||
else
|
||||
|
||||
if _type ~= "string" then
|
||||
return print(("[^1ERROR^7] xPlayer.setMeta ^5value^7 should be ^5string^7 as a subIndex!"):format(value))
|
||||
end
|
||||
@@ -668,7 +665,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
Player(self.source).state:set('metadata', self.metadata, true)
|
||||
end
|
||||
|
||||
for fnName,fn in pairs(targetOverrides) do
|
||||
for fnName, fn in pairs(targetOverrides) do
|
||||
self[fnName] = fn(self)
|
||||
end
|
||||
|
||||
|
||||
@@ -1,19 +1,23 @@
|
||||
ESX.RegisterCommand('setcoords', 'admin', function(xPlayer, args)
|
||||
xPlayer.setCoords({x = args.x, y = args.y, z = args.z})
|
||||
xPlayer.setCoords({ x = args.x, y = args.y, z = args.z })
|
||||
if Config.AdminLogging then
|
||||
ESX.DiscordLogFields("UserActions", "Set Coordinates /setcoords Triggered!", "pink", {
|
||||
{name = "Player", value = xPlayer.name, inline = true},
|
||||
{name = "ID", value = xPlayer.source, inline = true},
|
||||
{name = "X Coord", value = args.x, inline = true},
|
||||
{name = "Y Coord", value = args.y, inline = true},
|
||||
{name = "Z Coord", value = args.z, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "X Coord", value = args.x, inline = true },
|
||||
{ name = "Y Coord", value = args.y, inline = true },
|
||||
{ name = "Z Coord", value = args.z, inline = true },
|
||||
})
|
||||
end
|
||||
end, false, {help = TranslateCap('command_setcoords'), validate = true, arguments = {
|
||||
{name = 'x', help = TranslateCap('command_setcoords_x'), type = 'number'},
|
||||
{name = 'y', help = TranslateCap('command_setcoords_y'), type = 'number'},
|
||||
{name = 'z', help = TranslateCap('command_setcoords_z'), type = 'number'}
|
||||
}})
|
||||
end, false, {
|
||||
help = TranslateCap('command_setcoords'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'x', help = TranslateCap('command_setcoords_x'), type = 'number' },
|
||||
{ name = 'y', help = TranslateCap('command_setcoords_y'), type = 'number' },
|
||||
{ name = 'z', help = TranslateCap('command_setcoords_z'), type = 'number' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand('setjob', 'admin', function(xPlayer, args, showError)
|
||||
if not ESX.DoesJobExist(args.job, args.grade) then
|
||||
@@ -23,35 +27,39 @@ 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 = "Target", value = args.playerId.name, inline = true},
|
||||
{name = "Job", value = args.playerId, inline = true},
|
||||
{name = "Grade", value = args.playerId, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Target", value = args.playerId.name, inline = true },
|
||||
{ name = "Job", value = args.playerId, inline = true },
|
||||
{ name = "Grade", value = args.playerId, inline = true },
|
||||
})
|
||||
end
|
||||
end, true, {help = TranslateCap('command_setjob'), validate = true, arguments = {
|
||||
{name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'},
|
||||
{name = 'job', help = TranslateCap('command_setjob_job'), type = 'string'},
|
||||
{name = 'grade', help = TranslateCap('command_setjob_grade'), type = 'number'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_setjob'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' },
|
||||
{ name = 'job', help = TranslateCap('command_setjob_job'), type = 'string' },
|
||||
{ name = 'grade', help = TranslateCap('command_setjob_grade'), type = 'number' }
|
||||
}
|
||||
})
|
||||
|
||||
local upgrades = Config.SpawnVehMaxUpgrades and
|
||||
{
|
||||
plate = "ADMINCAR",
|
||||
modEngine = 3,
|
||||
modBrakes = 2,
|
||||
modTransmission = 2,
|
||||
modSuspension = 3,
|
||||
modArmor = true,
|
||||
windowTint = 1
|
||||
} or {}
|
||||
{
|
||||
plate = "ADMINCAR",
|
||||
modEngine = 3,
|
||||
modBrakes = 2,
|
||||
modTransmission = 2,
|
||||
modSuspension = 3,
|
||||
modArmor = true,
|
||||
windowTint = 1
|
||||
} or {}
|
||||
|
||||
ESX.RegisterCommand('car', 'admin', function(xPlayer, args, showError)
|
||||
if not xPlayer then
|
||||
return showError('[^1ERROR^7] The xPlayer value is nil')
|
||||
end
|
||||
|
||||
|
||||
local playerPed = GetPlayerPed(xPlayer.source)
|
||||
local playerCoords = GetEntityCoords(playerPed)
|
||||
local playerHeading = GetEntityHeading(playerPed)
|
||||
@@ -67,9 +75,9 @@ 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 = "Vehicle", value = args.car, inline = true}
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Vehicle", value = args.car, inline = true }
|
||||
})
|
||||
end
|
||||
|
||||
@@ -79,7 +87,7 @@ ESX.RegisterCommand('car', 'admin', function(xPlayer, args, showError)
|
||||
for _ = 1, 20 do
|
||||
Wait(0)
|
||||
SetPedIntoVehicle(playerPed, vehicle, -1)
|
||||
|
||||
|
||||
if GetVehiclePedIsIn(playerPed, false) == vehicle then
|
||||
break
|
||||
end
|
||||
@@ -89,11 +97,15 @@ ESX.RegisterCommand('car', 'admin', function(xPlayer, args, showError)
|
||||
end
|
||||
end
|
||||
end)
|
||||
end, false, {help = TranslateCap('command_car'), validate = false, arguments = {
|
||||
{name = 'car',validate = false, help = TranslateCap('command_car_car'), type = 'string'}
|
||||
}})
|
||||
end, false, {
|
||||
help = TranslateCap('command_car'),
|
||||
validate = false,
|
||||
arguments = {
|
||||
{ name = 'car', validate = false, help = TranslateCap('command_car_car'), type = 'string' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand({'cardel', 'dv'}, 'admin', function(xPlayer, args)
|
||||
ESX.RegisterCommand({ 'cardel', 'dv' }, 'admin', function(xPlayer, args)
|
||||
local PedVehicle = GetVehiclePedIsIn(GetPlayerPed(xPlayer.source), false)
|
||||
if DoesEntityExist(PedVehicle) then
|
||||
DeleteEntity(PedVehicle)
|
||||
@@ -107,13 +119,17 @@ 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.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
})
|
||||
end
|
||||
end, false, {help = TranslateCap('command_cardel'), validate = false, arguments = {
|
||||
{name = 'radius',validate = false, help = TranslateCap('command_cardel_radius'), type = 'number'}
|
||||
}})
|
||||
end, false, {
|
||||
help = TranslateCap('command_cardel'),
|
||||
validate = false,
|
||||
arguments = {
|
||||
{ name = 'radius', validate = false, help = TranslateCap('command_cardel_radius'), type = 'number' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand('setaccountmoney', 'admin', function(xPlayer, args, showError)
|
||||
if not args.playerId.getAccount(args.account) then
|
||||
@@ -122,18 +138,22 @@ 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 = "Target", value = args.playerId.name, inline = true},
|
||||
{name = "Account", value = args.account, inline = true},
|
||||
{name = "Amount", value = args.amount, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Target", value = args.playerId.name, inline = true },
|
||||
{ name = "Account", value = args.account, inline = true },
|
||||
{ name = "Amount", value = args.amount, inline = true },
|
||||
})
|
||||
end
|
||||
end, true, {help = TranslateCap('command_setaccountmoney'), validate = true, arguments = {
|
||||
{name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'},
|
||||
{name = 'account', help = TranslateCap('command_giveaccountmoney_account'), type = 'string'},
|
||||
{name = 'amount', help = TranslateCap('command_setaccountmoney_amount'), type = 'number'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_setaccountmoney'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' },
|
||||
{ name = 'account', help = TranslateCap('command_giveaccountmoney_account'), type = 'string' },
|
||||
{ name = 'amount', help = TranslateCap('command_setaccountmoney_amount'), type = 'number' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand('giveaccountmoney', 'admin', function(xPlayer, args, showError)
|
||||
if not args.playerId.getAccount(args.account) then
|
||||
@@ -142,18 +162,22 @@ 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 = "Target", value = args.playerId.name, inline = true},
|
||||
{name = "Account", value = args.account, inline = true},
|
||||
{name = "Amount", value = args.amount, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Target", value = args.playerId.name, inline = true },
|
||||
{ name = "Account", value = args.account, inline = true },
|
||||
{ name = "Amount", value = args.amount, inline = true },
|
||||
})
|
||||
end
|
||||
end, true, {help = TranslateCap('command_giveaccountmoney'), validate = true, arguments = {
|
||||
{name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'},
|
||||
{name = 'account', help = TranslateCap('command_giveaccountmoney_account'), type = 'string'},
|
||||
{name = 'amount', help = TranslateCap('command_giveaccountmoney_amount'), type = 'number'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_giveaccountmoney'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' },
|
||||
{ name = 'account', help = TranslateCap('command_giveaccountmoney_account'), type = 'string' },
|
||||
{ name = 'amount', help = TranslateCap('command_giveaccountmoney_amount'), type = 'number' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand('removeaccountmoney', 'admin', function(xPlayer, args, showError)
|
||||
if not args.playerId.getAccount(args.account) then
|
||||
@@ -162,36 +186,44 @@ 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 = "Target", value = args.playerId.name, inline = true},
|
||||
{name = "Account", value = args.account, inline = true},
|
||||
{name = "Amount", value = args.amount, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Target", value = args.playerId.name, inline = true },
|
||||
{ name = "Account", value = args.account, inline = true },
|
||||
{ name = "Amount", value = args.amount, inline = true },
|
||||
})
|
||||
end
|
||||
end, true, {help = TranslateCap('command_removeaccountmoney'), validate = true, arguments = {
|
||||
{name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'},
|
||||
{name = 'account', help = TranslateCap('command_removeaccountmoney_account'), type = 'string'},
|
||||
{name = 'amount', help = TranslateCap('command_removeaccountmoney_amount'), type = 'number'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_removeaccountmoney'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' },
|
||||
{ name = 'account', help = TranslateCap('command_removeaccountmoney_account'), type = 'string' },
|
||||
{ name = 'amount', help = TranslateCap('command_removeaccountmoney_amount'), type = 'number' }
|
||||
}
|
||||
})
|
||||
|
||||
if not Config.OxInventory then
|
||||
ESX.RegisterCommand('giveitem', 'admin', function(xPlayer, args)
|
||||
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 = "Target", value = args.playerId.name, inline = true},
|
||||
{name = "Item", value = args.item, inline = true},
|
||||
{name = "Quantity", value = args.count, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Target", value = args.playerId.name, inline = true },
|
||||
{ name = "Item", value = args.item, inline = true },
|
||||
{ name = "Quantity", value = args.count, inline = true },
|
||||
})
|
||||
end
|
||||
end, true, {help = TranslateCap('command_giveitem'), validate = true, arguments = {
|
||||
{name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'},
|
||||
{name = 'item', help = TranslateCap('command_giveitem_item'), type = 'item'},
|
||||
{name = 'count', help = TranslateCap('command_giveitem_count'), type = 'number'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_giveitem'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' },
|
||||
{ name = 'item', help = TranslateCap('command_giveitem_item'), type = 'item' },
|
||||
{ name = 'count', help = TranslateCap('command_giveitem_count'), type = 'number' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand('giveweapon', 'admin', function(xPlayer, args, showError)
|
||||
if args.playerId.hasWeapon(args.weapon) then
|
||||
@@ -200,18 +232,22 @@ 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 = "Target", value = args.playerId.name, inline = true},
|
||||
{name = "Weapon", value = args.weapon, inline = true},
|
||||
{name = "Ammo", value = args.ammo, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Target", value = args.playerId.name, inline = true },
|
||||
{ name = "Weapon", value = args.weapon, inline = true },
|
||||
{ name = "Ammo", value = args.ammo, inline = true },
|
||||
})
|
||||
end
|
||||
end, true, {help = TranslateCap('command_giveweapon'), validate = true, arguments = {
|
||||
{name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'},
|
||||
{name = 'weapon', help = TranslateCap('command_giveweapon_weapon'), type = 'weapon'},
|
||||
{name = 'ammo', help = TranslateCap('command_giveweapon_ammo'), type = 'number'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_giveweapon'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' },
|
||||
{ name = 'weapon', help = TranslateCap('command_giveweapon_weapon'), type = 'weapon' },
|
||||
{ name = 'ammo', help = TranslateCap('command_giveweapon_ammo'), type = 'number' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand('giveammo', 'admin', function(xPlayer, args, showError)
|
||||
if not args.playerId.hasWeapon(args.weapon) then
|
||||
@@ -220,18 +256,22 @@ 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 = "Target", value = args.playerId.name, inline = true},
|
||||
{name = "Weapon", value = args.weapon, inline = true},
|
||||
{name = "Ammo", value = args.ammo, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Target", value = args.playerId.name, inline = true },
|
||||
{ name = "Weapon", value = args.weapon, inline = true },
|
||||
{ name = "Ammo", value = args.ammo, inline = true },
|
||||
})
|
||||
end
|
||||
end, true, {help = TranslateCap('command_giveweapon'), validate = false, arguments = {
|
||||
{name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'},
|
||||
{name = 'weapon', help = TranslateCap('command_giveammo_weapon'), type = 'weapon'},
|
||||
{name = 'ammo', help = TranslateCap('command_giveammo_ammo'), type = 'number'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_giveweapon'),
|
||||
validate = false,
|
||||
arguments = {
|
||||
{ name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' },
|
||||
{ name = 'weapon', help = TranslateCap('command_giveammo_weapon'), type = 'weapon' },
|
||||
{ name = 'ammo', help = TranslateCap('command_giveammo_ammo'), type = 'number' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand('giveweaponcomponent', 'admin', function(xPlayer, args, showError)
|
||||
if args.playerId.hasWeapon(args.weaponName) then
|
||||
@@ -244,11 +284,11 @@ if not Config.OxInventory then
|
||||
args.playerId.addWeaponComponent(args.weaponName, args.componentName)
|
||||
if Config.AdminLogging then
|
||||
ESX.DiscordLogFields("UserActions", "Give Weapon Component /giveweaponcomponent Triggered!", "pink", {
|
||||
{name = "Player", value = xPlayer.name, inline = true},
|
||||
{name = "ID", value = xPlayer.source, inline = true},
|
||||
{name = "Target", value = args.playerId.name, inline = true},
|
||||
{name = "Weapon", value = args.weaponName, inline = true},
|
||||
{name = "Component", value = args.componentName, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Target", value = args.playerId.name, inline = true },
|
||||
{ name = "Weapon", value = args.weaponName, inline = true },
|
||||
{ name = "Component", value = args.componentName, inline = true },
|
||||
})
|
||||
end
|
||||
end
|
||||
@@ -258,30 +298,34 @@ if not Config.OxInventory then
|
||||
else
|
||||
showError(TranslateCap('command_giveweaponcomponent_missingweapon'))
|
||||
end
|
||||
end, true, {help = TranslateCap('command_giveweaponcomponent'), validate = true, arguments = {
|
||||
{name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'},
|
||||
{name = 'weaponName', help = TranslateCap('command_giveweapon_weapon'), type = 'weapon'},
|
||||
{name = 'componentName', help = TranslateCap('command_giveweaponcomponent_component'), type = 'string'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_giveweaponcomponent'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' },
|
||||
{ name = 'weaponName', help = TranslateCap('command_giveweapon_weapon'), type = 'weapon' },
|
||||
{ name = 'componentName', help = TranslateCap('command_giveweaponcomponent_component'), type = 'string' }
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
ESX.RegisterCommand({'clear', 'cls'}, 'user', function(xPlayer)
|
||||
ESX.RegisterCommand({ 'clear', 'cls' }, 'user', function(xPlayer)
|
||||
xPlayer.triggerEvent('chat:clear')
|
||||
end, false, {help = TranslateCap('command_clear')})
|
||||
end, false, { help = TranslateCap('command_clear') })
|
||||
|
||||
ESX.RegisterCommand({'clearall', 'clsall'}, 'admin', function(xPlayer)
|
||||
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.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
})
|
||||
end
|
||||
end, true, {help = TranslateCap('command_clearall')})
|
||||
end, true, { help = TranslateCap('command_clearall') })
|
||||
|
||||
ESX.RegisterCommand("refreshjobs", 'admin', function()
|
||||
ESX.RefreshJobs()
|
||||
end, true, {help = TranslateCap('command_clearall')})
|
||||
end, true, { help = TranslateCap('command_clearall') })
|
||||
|
||||
if not Config.OxInventory then
|
||||
ESX.RegisterCommand('clearinventory', 'admin', function(xPlayer, args)
|
||||
@@ -290,90 +334,109 @@ if not Config.OxInventory then
|
||||
args.playerId.setInventoryItem(v.name, 0)
|
||||
end
|
||||
end
|
||||
TriggerEvent('esx:playerInventoryCleared',args.playerId)
|
||||
TriggerEvent('esx:playerInventoryCleared', args.playerId)
|
||||
if Config.AdminLogging then
|
||||
ESX.DiscordLogFields("UserActions", "Clear Inventory /clearinventory Triggered!", "pink", {
|
||||
{name = "Player", value = xPlayer.name, inline = true},
|
||||
{name = "ID", value = xPlayer.source, inline = true},
|
||||
{name = "Target", value = args.playerId.name, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Target", value = args.playerId.name, inline = true },
|
||||
})
|
||||
end
|
||||
end, true, {help = TranslateCap('command_clearinventory'), validate = true, arguments = {
|
||||
{name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_clearinventory'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand('clearloadout', 'admin', function(xPlayer, args)
|
||||
for i=#args.playerId.loadout, 1, -1 do
|
||||
for i = #args.playerId.loadout, 1, -1 do
|
||||
args.playerId.removeWeapon(args.playerId.loadout[i].name)
|
||||
end
|
||||
TriggerEvent('esx:playerLoadoutCleared',args.playerId)
|
||||
TriggerEvent('esx:playerLoadoutCleared', args.playerId)
|
||||
if Config.AdminLogging then
|
||||
ESX.DiscordLogFields("UserActions", "/clearloadout Triggered!", "pink", {
|
||||
{name = "Player", value = xPlayer.name, inline = true},
|
||||
{name = "ID", value = xPlayer.source, inline = true},
|
||||
{name = "Target", value = args.playerId.name, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Target", value = args.playerId.name, inline = true },
|
||||
})
|
||||
end
|
||||
end, true, {help = TranslateCap('command_clearloadout'), validate = true, arguments = {
|
||||
{name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_clearloadout'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' }
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
ESX.RegisterCommand('setgroup', 'admin', function(xPlayer, args)
|
||||
if not args.playerId then args.playerId = xPlayer.source end
|
||||
if args.group == "superadmin" then args.group = "admin" print("[^3WARNING^7] ^5Superadmin^7 detected, setting group to ^5admin^7") end
|
||||
if args.group == "superadmin" then
|
||||
args.group = "admin"
|
||||
print("[^3WARNING^7] ^5Superadmin^7 detected, setting group to ^5admin^7")
|
||||
end
|
||||
args.playerId.setGroup(args.group)
|
||||
if Config.AdminLogging then
|
||||
ESX.DiscordLogFields("UserActions", "/setgroup Triggered!", "pink", {
|
||||
{name = "Player", value = xPlayer.name, inline = true},
|
||||
{name = "ID", value = xPlayer.source, inline = true},
|
||||
{name = "Target", value = args.playerId.name, inline = true},
|
||||
{name = "Group", value = args.group, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Target", value = args.playerId.name, inline = true },
|
||||
{ name = "Group", value = args.group, inline = true },
|
||||
})
|
||||
end
|
||||
end, true, {help = TranslateCap('command_setgroup'), validate = true, arguments = {
|
||||
{name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'},
|
||||
{name = 'group', help = TranslateCap('command_setgroup_group'), type = 'string'},
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_setgroup'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' },
|
||||
{ name = 'group', help = TranslateCap('command_setgroup_group'), type = 'string' },
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand('save', 'admin', function(_, args)
|
||||
Core.SavePlayer(args.playerId)
|
||||
print("[^2Info^0] Saved Player - ^5".. args.playerId.source .. "^0")
|
||||
end, true, {help = TranslateCap('command_save'), validate = true, arguments = {
|
||||
{name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'}
|
||||
}})
|
||||
print("[^2Info^0] Saved Player - ^5" .. args.playerId.source .. "^0")
|
||||
end, true, {
|
||||
help = TranslateCap('command_save'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand('saveall', 'admin', function()
|
||||
Core.SavePlayers()
|
||||
end, true, {help = TranslateCap('command_saveall')})
|
||||
end, true, { help = TranslateCap('command_saveall') })
|
||||
|
||||
ESX.RegisterCommand('group', {"user", "admin"}, function(xPlayer)
|
||||
print(xPlayer.getName()..", You are currently: ^5".. xPlayer.getGroup() .. "^0")
|
||||
ESX.RegisterCommand('group', { "user", "admin" }, function(xPlayer)
|
||||
print(xPlayer.getName() .. ", You are currently: ^5" .. xPlayer.getGroup() .. "^0")
|
||||
end, true)
|
||||
|
||||
ESX.RegisterCommand('job', {"user", "admin"}, function(xPlayer)
|
||||
print(xPlayer.getName()..", You are currently: ^5".. xPlayer.getJob().name.. "^0 - ^5".. xPlayer.getJob().grade_label .. "^0")
|
||||
ESX.RegisterCommand('job', { "user", "admin" }, function(xPlayer)
|
||||
print(xPlayer.getName() .. ", You are currently: ^5" .. xPlayer.getJob().name .. "^0 - ^5" .. xPlayer.getJob().grade_label .. "^0")
|
||||
end, true)
|
||||
|
||||
ESX.RegisterCommand('info', {"user", "admin"}, function(xPlayer)
|
||||
ESX.RegisterCommand('info', { "user", "admin" }, function(xPlayer)
|
||||
local job = xPlayer.getJob().name
|
||||
print("^2ID : ^5"..xPlayer.source.." ^0| ^2Name:^5"..xPlayer.getName().." ^0 | ^2Group:^5"..xPlayer.getGroup().."^0 | ^2Job:^5".. job.."^0")
|
||||
print("^2ID : ^5" .. xPlayer.source .. " ^0| ^2Name:^5" .. xPlayer.getName() .. " ^0 | ^2Group:^5" .. xPlayer.getGroup() .. "^0 | ^2Job:^5" .. job .. "^0")
|
||||
end, true)
|
||||
|
||||
ESX.RegisterCommand('coords', "admin", function(xPlayer)
|
||||
local ped = GetPlayerPed(xPlayer.source)
|
||||
local ped = GetPlayerPed(xPlayer.source)
|
||||
local coords = GetEntityCoords(ped, false)
|
||||
local heading = GetEntityHeading(ped)
|
||||
print("Coords - Vector3: ^5".. vector3(coords.x,coords.y,coords.z).. "^0")
|
||||
print("Coords - Vector4: ^5".. vector4(coords.x, coords.y, coords.z, heading) .. "^0")
|
||||
print("Coords - Vector3: ^5" .. vector3(coords.x, coords.y, coords.z) .. "^0")
|
||||
print("Coords - Vector4: ^5" .. vector4(coords.x, coords.y, coords.z, heading) .. "^0")
|
||||
end, true)
|
||||
|
||||
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.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
})
|
||||
end
|
||||
end, true)
|
||||
@@ -383,15 +446,19 @@ 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 = "Target", value = args.playerId.name, inline = true},
|
||||
{name = "Target Coords", value = targetCoords, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Target", value = args.playerId.name, inline = true },
|
||||
{ name = "Target Coords", value = targetCoords, inline = true },
|
||||
})
|
||||
end
|
||||
end, true, {help = TranslateCap('command_goto'), validate = true, arguments = {
|
||||
{name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_goto'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand('bring', "admin", function(xPlayer, args)
|
||||
local targetCoords = args.playerId.getCoords()
|
||||
@@ -399,70 +466,86 @@ 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 = "Target", value = args.playerId.name, inline = true},
|
||||
{name = "Target Coords", value = targetCoords, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Target", value = args.playerId.name, inline = true },
|
||||
{ name = "Target Coords", value = targetCoords, inline = true },
|
||||
})
|
||||
end
|
||||
end, true, {help = TranslateCap('command_bring'), validate = true, arguments = {
|
||||
{name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_bring'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand('kill', "admin", function(xPlayer, args)
|
||||
args.playerId.triggerEvent("esx:killPlayer")
|
||||
if Config.AdminLogging then
|
||||
ESX.DiscordLogFields("UserActions", "Kill Command /kill Triggered!", "pink", {
|
||||
{name = "Player", value = xPlayer.name, inline = true},
|
||||
{name = "ID", value = xPlayer.source, inline = true},
|
||||
{name = "Target", value = args.playerId.name, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Target", value = args.playerId.name, inline = true },
|
||||
})
|
||||
end
|
||||
end, true, {help = TranslateCap('command_kill'), validate = true, arguments = {
|
||||
{name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_kill'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand('freeze', "admin", function(xPlayer, args)
|
||||
args.playerId.triggerEvent('esx:freezePlayer', "freeze")
|
||||
if Config.AdminLogging then
|
||||
ESX.DiscordLogFields("UserActions", "Admin Freeze /freeze Triggered!", "pink", {
|
||||
{name = "Player", value = xPlayer.name, inline = true},
|
||||
{name = "ID", value = xPlayer.source, inline = true},
|
||||
{name = "Target", value = args.playerId.name, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Target", value = args.playerId.name, inline = true },
|
||||
})
|
||||
end
|
||||
end, true, {help = TranslateCap('command_freeze'), validate = true, arguments = {
|
||||
{name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_freeze'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand('unfreeze', "admin", function(xPlayer, args)
|
||||
args.playerId.triggerEvent('esx:freezePlayer', "unfreeze")
|
||||
if Config.AdminLogging then
|
||||
ESX.DiscordLogFields("UserActions", "Admin UnFreeze /unfreeze Triggered!", "pink", {
|
||||
{name = "Player", value = xPlayer.name, inline = true},
|
||||
{name = "ID", value = xPlayer.source, inline = true},
|
||||
{name = "Target", value = args.playerId.name, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Target", value = args.playerId.name, inline = true },
|
||||
})
|
||||
end
|
||||
end, true, {help = TranslateCap('command_unfreeze'), validate = true, arguments = {
|
||||
{name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_unfreeze'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'playerId', help = TranslateCap('commandgeneric_playerid'), type = 'player' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand("noclip", 'admin', function(xPlayer)
|
||||
xPlayer.triggerEvent('esx:noclip')
|
||||
if Config.AdminLogging then
|
||||
ESX.DiscordLogFields("UserActions", "Admin NoClip /noclip Triggered!", "pink", {
|
||||
{name = "Player", value = xPlayer.name, inline = true},
|
||||
{name = "ID", value = xPlayer.source, inline = true},
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
})
|
||||
end
|
||||
end, false)
|
||||
|
||||
ESX.RegisterCommand('players', "admin", function()
|
||||
local xPlayers = ESX.GetExtendedPlayers() -- Returns all xPlayers
|
||||
print("^5"..#xPlayers.." ^2online player(s)^0")
|
||||
print("^5" .. #xPlayers .. " ^2online player(s)^0")
|
||||
for i = 1, #(xPlayers) do
|
||||
local xPlayer = xPlayers[i]
|
||||
print("^1[ ^2ID : ^5"..xPlayer.source.." ^0| ^2Name : ^5"..xPlayer.getName().." ^0 | ^2Group : ^5"..xPlayer.getGroup().." ^0 | ^2Identifier : ^5".. xPlayer.identifier .."^1]^0\n")
|
||||
print("^1[ ^2ID : ^5" .. xPlayer.source .. " ^0| ^2Name : ^5" .. xPlayer.getName() .. " ^0 | ^2Group : ^5" .. xPlayer.getGroup() .. " ^0 | ^2Identifier : ^5" .. xPlayer.identifier .. "^1]^0\n")
|
||||
end
|
||||
end, true)
|
||||
|
||||
@@ -43,7 +43,7 @@ MySQL.ready(function()
|
||||
if not Config.OxInventory then
|
||||
local items = MySQL.query.await('SELECT * FROM items')
|
||||
for _, v in ipairs(items) do
|
||||
ESX.Items[v.name] = {label = v.label, weight = v.weight, rare = v.rare, canRemove = v.can_remove}
|
||||
ESX.Items[v.name] = { label = v.label, weight = v.weight, rare = v.rare, canRemove = v.can_remove }
|
||||
end
|
||||
else
|
||||
TriggerEvent('__cfx_export_ox_inventory_Items', function(ref)
|
||||
@@ -64,7 +64,7 @@ MySQL.ready(function()
|
||||
ESX.RefreshJobs()
|
||||
|
||||
print(('[^2INFO^7] ESX ^5Legacy %s^0 initialized!'):format(GetResourceMetadata(GetCurrentResourceName(), "version", 0)))
|
||||
|
||||
|
||||
StartDBSync()
|
||||
if Config.EnablePaycheck then
|
||||
StartPayCheck()
|
||||
|
||||
@@ -32,7 +32,7 @@ function ESX.RegisterCommand(name, group, cb, allowConsole, suggestion)
|
||||
TriggerClientEvent('chat:addSuggestion', -1, ('/%s'):format(name), suggestion.help, suggestion.arguments)
|
||||
end
|
||||
|
||||
Core.RegisteredCommands[name] = {group = group, cb = cb, allowConsole = allowConsole, suggestion = suggestion}
|
||||
Core.RegisteredCommands[name] = { group = group, cb = cb, allowConsole = allowConsole, suggestion = suggestion }
|
||||
|
||||
RegisterCommand(name, function(playerId, args)
|
||||
local command = Core.RegisteredCommands[name]
|
||||
@@ -100,10 +100,10 @@ function ESX.RegisterCommand(name, group, cb, allowConsole, suggestion)
|
||||
end
|
||||
elseif v.type == 'any' then
|
||||
newArgs[v.name] = args[k]
|
||||
elseif v.type == 'merge' then
|
||||
elseif v.type == 'merge' then
|
||||
local lenght = 0
|
||||
for i = 1, k-1 do
|
||||
lenght = lenght + string.len(args[i]) +1
|
||||
for i = 1, k - 1 do
|
||||
lenght = lenght + string.len(args[i]) + 1
|
||||
end
|
||||
local merge = table.concat(args, " ")
|
||||
|
||||
@@ -188,7 +188,7 @@ function Core.SavePlayers(cb)
|
||||
if not next(xPlayers) then
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
local startTime <const> = os.time()
|
||||
local parameters = {}
|
||||
|
||||
@@ -217,7 +217,7 @@ function Core.SavePlayers(cb)
|
||||
if type(cb) == 'function' then
|
||||
return cb()
|
||||
end
|
||||
|
||||
|
||||
print(('[^2INFO^7] Saved ^5%s^7 %s over ^5%s^7 ms'):format(#parameters, #parameters > 1 and 'players' or 'player', ESX.Math.Round((os.time() - startTime) / 1000000, 2)))
|
||||
end
|
||||
)
|
||||
@@ -226,35 +226,35 @@ end
|
||||
ESX.GetPlayers = GetPlayers
|
||||
|
||||
local function checkTable(key, val, player, xPlayers)
|
||||
for valIndex = 1, #val do
|
||||
local value = val[valIndex]
|
||||
if not xPlayers[value] then
|
||||
xPlayers[value] = {}
|
||||
end
|
||||
|
||||
if (key == 'job' and player.job.name == value) or player[key] == value then
|
||||
xPlayers[value][#xPlayers[value] + 1] = player
|
||||
end
|
||||
end
|
||||
for valIndex = 1, #val do
|
||||
local value = val[valIndex]
|
||||
if not xPlayers[value] then
|
||||
xPlayers[value] = {}
|
||||
end
|
||||
|
||||
if (key == 'job' and player.job.name == value) or player[key] == value then
|
||||
xPlayers[value][#xPlayers[value] + 1] = player
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ESX.GetExtendedPlayers(key, val)
|
||||
if not key then return ESX.Players end
|
||||
if not key then return ESX.Players end
|
||||
|
||||
local xPlayers = {}
|
||||
if type(val) == "table" then
|
||||
for _, v in pairs(ESX.Players) do
|
||||
checkTable(key, val, v, xPlayers)
|
||||
end
|
||||
else
|
||||
for _, v in pairs(ESX.Players) do
|
||||
if (key == 'job' and v.job.name == val) or v[key] == val then
|
||||
xPlayers[#xPlayers + 1] = v
|
||||
end
|
||||
end
|
||||
end
|
||||
local xPlayers = {}
|
||||
if type(val) == "table" then
|
||||
for _, v in pairs(ESX.Players) do
|
||||
checkTable(key, val, v, xPlayers)
|
||||
end
|
||||
else
|
||||
for _, v in pairs(ESX.Players) do
|
||||
if (key == 'job' and v.job.name == val) or v[key] == val then
|
||||
xPlayers[#xPlayers + 1] = v
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return xPlayers
|
||||
return xPlayers
|
||||
end
|
||||
|
||||
function ESX.GetPlayerFromId(source)
|
||||
@@ -284,7 +284,7 @@ end
|
||||
|
||||
function ESX.GetVehicleType(model, player, cb)
|
||||
model = type(model) == 'string' and joaat(model) or model
|
||||
|
||||
|
||||
if Core.vehicleTypesByModel[model] then
|
||||
return cb(Core.vehicleTypesByModel[model])
|
||||
end
|
||||
@@ -296,50 +296,49 @@ function ESX.GetVehicleType(model, player, cb)
|
||||
end
|
||||
|
||||
function ESX.DiscordLog(name, title, color, message)
|
||||
|
||||
local webHook = Config.DiscordLogs.Webhooks[name] or Config.DiscordLogs.Webhooks.default
|
||||
local embedData = {{
|
||||
['title'] = title,
|
||||
['color'] = Config.DiscordLogs.Colors[color] or Config.DiscordLogs.Colors.default,
|
||||
['footer'] = {
|
||||
['text'] = "| ESX Logs | " .. os.date(),
|
||||
['icon_url'] = "https://cdn.discordapp.com/attachments/944789399852417096/1020099828266586193/blanc-800x800.png"
|
||||
},
|
||||
['description'] = message,
|
||||
['author'] = {
|
||||
['name'] = "ESX Framework",
|
||||
['icon_url'] = "https://cdn.discordapp.com/emojis/939245183621558362.webp?size=128&quality=lossless"
|
||||
}
|
||||
}}
|
||||
local embedData = { {
|
||||
['title'] = title,
|
||||
['color'] = Config.DiscordLogs.Colors[color] or Config.DiscordLogs.Colors.default,
|
||||
['footer'] = {
|
||||
['text'] = "| ESX Logs | " .. os.date(),
|
||||
['icon_url'] = "https://cdn.discordapp.com/attachments/944789399852417096/1020099828266586193/blanc-800x800.png"
|
||||
},
|
||||
['description'] = message,
|
||||
['author'] = {
|
||||
['name'] = "ESX Framework",
|
||||
['icon_url'] = "https://cdn.discordapp.com/emojis/939245183621558362.webp?size=128&quality=lossless"
|
||||
}
|
||||
} }
|
||||
PerformHttpRequest(webHook, nil, 'POST', json.encode({
|
||||
username = 'Logs',
|
||||
embeds = embedData
|
||||
username = 'Logs',
|
||||
embeds = embedData
|
||||
}), {
|
||||
['Content-Type'] = 'application/json'
|
||||
['Content-Type'] = 'application/json'
|
||||
})
|
||||
end
|
||||
|
||||
function ESX.DiscordLogFields(name, title, color, fields)
|
||||
local webHook = Config.DiscordLogs.Webhooks[name] or Config.DiscordLogs.Webhooks.default
|
||||
local embedData = {{
|
||||
['title'] = title,
|
||||
['color'] = Config.DiscordLogs.Colors[color] or Config.DiscordLogs.Colors.default,
|
||||
['footer'] = {
|
||||
['text'] = "| ESX Logs | " .. os.date(),
|
||||
['icon_url'] = "https://cdn.discordapp.com/attachments/944789399852417096/1020099828266586193/blanc-800x800.png"
|
||||
},
|
||||
['fields'] = fields,
|
||||
['description'] = "",
|
||||
['author'] = {
|
||||
['name'] = "ESX Framework",
|
||||
['icon_url'] = "https://cdn.discordapp.com/emojis/939245183621558362.webp?size=128&quality=lossless"
|
||||
}
|
||||
}}
|
||||
local embedData = { {
|
||||
['title'] = title,
|
||||
['color'] = Config.DiscordLogs.Colors[color] or Config.DiscordLogs.Colors.default,
|
||||
['footer'] = {
|
||||
['text'] = "| ESX Logs | " .. os.date(),
|
||||
['icon_url'] = "https://cdn.discordapp.com/attachments/944789399852417096/1020099828266586193/blanc-800x800.png"
|
||||
},
|
||||
['fields'] = fields,
|
||||
['description'] = "",
|
||||
['author'] = {
|
||||
['name'] = "ESX Framework",
|
||||
['icon_url'] = "https://cdn.discordapp.com/emojis/939245183621558362.webp?size=128&quality=lossless"
|
||||
}
|
||||
} }
|
||||
PerformHttpRequest(webHook, nil, 'POST', json.encode({
|
||||
username = 'Logs',
|
||||
embeds = embedData
|
||||
username = 'Logs',
|
||||
embeds = embedData
|
||||
}), {
|
||||
['Content-Type'] = 'application/json'
|
||||
['Content-Type'] = 'application/json'
|
||||
})
|
||||
end
|
||||
|
||||
@@ -348,30 +347,30 @@ end
|
||||
--- @param label string
|
||||
--- @param grades table
|
||||
function ESX.CreateJob(name, label, grades)
|
||||
if not name then
|
||||
return print('[^3WARNING^7] missing argument `name(string)` while creating a job')
|
||||
end
|
||||
|
||||
if not label then
|
||||
return print('[^3WARNING^7] missing argument `label(string)` while creating a job')
|
||||
end
|
||||
|
||||
if not grades or not next(grades) then
|
||||
return print('[^3WARNING^7] missing argument `grades(table)` while creating a job!')
|
||||
end
|
||||
if not name then
|
||||
return print('[^3WARNING^7] missing argument `name(string)` while creating a job')
|
||||
end
|
||||
|
||||
local parameters = {}
|
||||
local job = {name = name, label = label, grades = {}}
|
||||
if not label then
|
||||
return print('[^3WARNING^7] missing argument `label(string)` while creating a job')
|
||||
end
|
||||
|
||||
for _,v in pairs(grades) do
|
||||
job.grades[tostring(v.grade)] = {job_name = name, grade = v.grade, name = v.name, label = v.label, salary = v.salary, skin_male = {}, skin_female = {}}
|
||||
parameters[#parameters + 1] = { name, v.grade, v.name, v.label, v.salary}
|
||||
end
|
||||
if not grades or not next(grades) then
|
||||
return print('[^3WARNING^7] missing argument `grades(table)` while creating a job!')
|
||||
end
|
||||
|
||||
MySQL.insert('INSERT IGNORE INTO jobs (name, label) VALUES (?, ?)', {name, label})
|
||||
MySQL.prepare('INSERT INTO job_grades (job_name, grade, name, label, salary) VALUES (?, ?, ?, ?, ?)', parameters)
|
||||
|
||||
ESX.Jobs[name] = job
|
||||
local parameters = {}
|
||||
local job = { name = name, label = label, grades = {} }
|
||||
|
||||
for _, v in pairs(grades) do
|
||||
job.grades[tostring(v.grade)] = { job_name = name, grade = v.grade, name = v.name, label = v.label, salary = v.salary, skin_male = {}, skin_female = {} }
|
||||
parameters[#parameters + 1] = { name, v.grade, v.name, v.label, v.salary }
|
||||
end
|
||||
|
||||
MySQL.insert('INSERT IGNORE INTO jobs (name, label) VALUES (?, ?)', { name, label })
|
||||
MySQL.prepare('INSERT INTO job_grades (job_name, grade, name, label, salary) VALUES (?, ?, ?, ?, ?)', parameters)
|
||||
|
||||
ESX.Jobs[name] = job
|
||||
end
|
||||
|
||||
function ESX.RefreshJobs()
|
||||
@@ -402,8 +401,10 @@ function ESX.RefreshJobs()
|
||||
|
||||
if not Jobs then
|
||||
-- Fallback data, if no jobs exist
|
||||
ESX.Jobs['unemployed'] = {label = 'Unemployed',
|
||||
grades = {['0'] = {grade = 0, label = 'Unemployed', salary = 200, skin_male = {}, skin_female = {}}}}
|
||||
ESX.Jobs['unemployed'] = {
|
||||
label = 'Unemployed',
|
||||
grades = { ['0'] = { grade = 0, label = 'Unemployed', salary = 200, skin_male = {}, skin_female = {} } }
|
||||
}
|
||||
else
|
||||
ESX.Jobs = Jobs
|
||||
end
|
||||
@@ -422,7 +423,7 @@ function ESX.UseItem(source, item, ...)
|
||||
|
||||
if not success then
|
||||
return result and print(result) or
|
||||
print(('[^3WARNING^7] An error occured when using item ^5"%s"^7! This was not caused by ESX.'):format(item))
|
||||
print(('[^3WARNING^7] An error occured when using item ^5"%s"^7! This was not caused by ESX.'):format(item))
|
||||
end
|
||||
end
|
||||
else
|
||||
@@ -475,7 +476,7 @@ if not Config.OxInventory then
|
||||
local xPlayer = ESX.Players[playerId]
|
||||
local coords = xPlayer.getCoords()
|
||||
|
||||
Core.Pickups[pickupId] = {type = type, name = name, count = count, label = label, coords = coords}
|
||||
Core.Pickups[pickupId] = { type = type, name = name, count = count, label = label, coords = coords }
|
||||
|
||||
if type == 'item_weapon' then
|
||||
Core.Pickups[pickupId].components = components
|
||||
|
||||
@@ -6,7 +6,6 @@ RegisterServerEvent('esx:enteredVehicle')
|
||||
RegisterServerEvent('esx:exitedVehicle')
|
||||
|
||||
if Config.EnableDebug then
|
||||
|
||||
AddEventHandler('esx:playerPedChanged', function(netId)
|
||||
print('esx:playerPedChanged', source, netId)
|
||||
end)
|
||||
@@ -30,5 +29,4 @@ if Config.EnableDebug then
|
||||
AddEventHandler('esx:exitedVehicle', function(plate, seat, displayName, netId)
|
||||
print('esx:exitedVehicle', 'source', source, 'plate', plate, 'seat', seat, 'displayName', displayName, 'netId', netId)
|
||||
end)
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -35,7 +35,7 @@ end
|
||||
|
||||
RegisterNetEvent('esx:clientCallback', function(requestId, invoker, ...)
|
||||
if not clientRequests[requestId] then
|
||||
return print(('[^1ERROR^7] Client Callback with requestId ^5%s^7 Was Called by ^5%s^7 but does not exist.'):format(requestId, invoker))
|
||||
return print(('[^1ERROR^7] Client Callback with requestId ^5%s^7 Was Called by ^5%s^7 but does not exist.'):format(requestId, invoker))
|
||||
end
|
||||
|
||||
clientRequests[requestId](...)
|
||||
|
||||
@@ -27,12 +27,12 @@ local function getNearbyPlayers(source, closest, distance, ignore)
|
||||
local dist = #(source - coords)
|
||||
if dist <= distance then
|
||||
count = count + 1
|
||||
result[count] = {id = xPlayer.source, ped = NetworkGetNetworkIdFromEntity(entity), coords = coords, dist = dist}
|
||||
result[count] = { id = xPlayer.source, ped = NetworkGetNetworkIdFromEntity(entity), coords = coords, dist = dist }
|
||||
end
|
||||
else
|
||||
local dist = #(source - coords)
|
||||
if dist <= (result.dist or distance) then
|
||||
result = {id = xPlayer.source, ped = NetworkGetNetworkIdFromEntity(entity), coords = coords, dist = dist}
|
||||
result = { id = xPlayer.source, ped = NetworkGetNetworkIdFromEntity(entity), coords = coords, dist = dist }
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -83,7 +83,6 @@ function ESX.OneSync.SpawnVehicle(model, coords, heading, properties, cb)
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
---@param model number|string
|
||||
---@param coords vector3|table
|
||||
---@param heading number
|
||||
@@ -133,7 +132,7 @@ local function getNearbyEntities(entities, coords, modelFilter, maxDistance, isP
|
||||
if not modelFilter or modelFilter[GetEntityModel(entity)] then
|
||||
local entityCoords = GetEntityCoords(entity)
|
||||
if not maxDistance or #(coords - entityCoords) <= maxDistance then
|
||||
nearbyEntities[#nearbyEntities+1] = NetworkGetNetworkIdFromEntity(entity)
|
||||
nearbyEntities[#nearbyEntities + 1] = NetworkGetNetworkIdFromEntity(entity)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
function StartPayCheck()
|
||||
CreateThread(function()
|
||||
while true do
|
||||
Wait(Config.PaycheckInterval)
|
||||
CreateThread(function()
|
||||
while true do
|
||||
Wait(Config.PaycheckInterval)
|
||||
for player, xPlayer in pairs(ESX.Players) do
|
||||
local jobLabel = xPlayer.job.label
|
||||
local job = xPlayer.job.grade_name
|
||||
@@ -14,23 +14,23 @@ function StartPayCheck()
|
||||
'CHAR_BANK_MAZE', 9)
|
||||
if Config.LogPaycheck then
|
||||
ESX.DiscordLogFields("Paycheck", "Paycheck - Unemployment Benefits", "green", {
|
||||
{name = "Player", value = xPlayer.name, inline = true},
|
||||
{name = "ID", value = xPlayer.source, inline = true},
|
||||
{name = "Amount", value = salary, inline = true}
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Amount", value = salary, inline = true }
|
||||
})
|
||||
end
|
||||
elseif Config.EnableSocietyPayouts then -- possibly a society
|
||||
TriggerEvent('esx_society:getSociety', xPlayer.job.name, function(society)
|
||||
if society ~= nil then -- verified society
|
||||
if society ~= nil then -- verified society
|
||||
TriggerEvent('esx_addonaccount:getSharedAccount', society.account, function(account)
|
||||
if account.money >= salary then -- does the society money to pay its employees?
|
||||
xPlayer.addAccountMoney('bank', salary, "Paycheck")
|
||||
account.removeMoney(salary)
|
||||
if Config.LogPaycheck then
|
||||
ESX.DiscordLogFields("Paycheck", "Paycheck - "..jobLabel, "green", {
|
||||
{name = "Player", value = xPlayer.name, inline = true},
|
||||
{name = "ID", value = xPlayer.source, inline = true},
|
||||
{name = "Amount", value = salary, inline = true}
|
||||
ESX.DiscordLogFields("Paycheck", "Paycheck - " .. jobLabel, "green", {
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Amount", value = salary, inline = true }
|
||||
})
|
||||
end
|
||||
|
||||
@@ -43,10 +43,10 @@ function StartPayCheck()
|
||||
else -- not a society
|
||||
xPlayer.addAccountMoney('bank', salary, "Paycheck")
|
||||
if Config.LogPaycheck then
|
||||
ESX.DiscordLogFields("Paycheck", "Paycheck - "..jobLabel, "green", {
|
||||
{name = "Player", value = xPlayer.name, inline = true},
|
||||
{name = "ID", value = xPlayer.source, inline = true},
|
||||
{name = "Amount", value = salary, inline = true}
|
||||
ESX.DiscordLogFields("Paycheck", "Paycheck - " .. jobLabel, "green", {
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Amount", value = salary, inline = true }
|
||||
})
|
||||
end
|
||||
TriggerClientEvent('esx:showAdvancedNotification', player, TranslateCap('bank'), TranslateCap('received_paycheck'), TranslateCap('received_salary', salary),
|
||||
@@ -57,9 +57,9 @@ function StartPayCheck()
|
||||
xPlayer.addAccountMoney('bank', salary, "Paycheck")
|
||||
if Config.LogPaycheck then
|
||||
ESX.DiscordLogFields("Paycheck", "Paycheck - Generic", "green", {
|
||||
{name = "Player", value = xPlayer.name, inline = true},
|
||||
{name = "ID", value = xPlayer.source, inline = true},
|
||||
{name = "Amount", value = salary, inline = true}
|
||||
{ name = "Player", value = xPlayer.name, inline = true },
|
||||
{ name = "ID", value = xPlayer.source, inline = true },
|
||||
{ name = "Amount", value = salary, inline = true }
|
||||
})
|
||||
end
|
||||
TriggerClientEvent('esx:showAdvancedNotification', player, TranslateCap('bank'), TranslateCap('received_paycheck'), TranslateCap('received_salary', salary),
|
||||
|
||||
@@ -1 +1 @@
|
||||
PREVIEW_KEYBIND = "LMENU"
|
||||
PREVIEW_KEYBIND = "LMENU"
|
||||
|
||||
@@ -4,7 +4,7 @@ game 'gta5'
|
||||
author 'ESX-Framework & Brayden'
|
||||
description 'Offical ESX Legacy Context Menu'
|
||||
lua54 'yes'
|
||||
version '1.9.4'
|
||||
version '1.9.5'
|
||||
|
||||
ui_page 'index.html'
|
||||
|
||||
@@ -21,4 +21,4 @@ files {
|
||||
|
||||
dependencies {
|
||||
'es_extended'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ if not Config.UseDeferrals then
|
||||
ClearTimecycleModifier()
|
||||
end
|
||||
|
||||
SendNUIMessage({type = "enableui", enable = state})
|
||||
SendNUIMessage({ type = "enableui", enable = state })
|
||||
end
|
||||
|
||||
RegisterNetEvent('esx_identity:showRegisterIdentity', function()
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
Config = {}
|
||||
Config.Locale = GetConvar('esx:locale', 'en')
|
||||
Config = {}
|
||||
Config.Locale = GetConvar('esx:locale', 'en')
|
||||
|
||||
-- [Config.EnableCommands]
|
||||
-- Enables Commands Such As /char and /chardel
|
||||
Config.EnableCommands = ESX.GetConfig().EnableDebug
|
||||
Config.EnableCommands = ESX.GetConfig().EnableDebug
|
||||
|
||||
-- EXPERIMENTAL Character Registration Method
|
||||
Config.UseDeferrals = false
|
||||
Config.UseDeferrals = false
|
||||
|
||||
-- These values are for the date format in the registration menu
|
||||
-- Choices: DD/MM/YYYY | MM/DD/YYYY | YYYY/MM/DD
|
||||
Config.DateFormat = 'DD/MM/YYYY'
|
||||
Config.DateFormat = 'DD/MM/YYYY'
|
||||
|
||||
-- These values are for the second input validation in server/main.lua
|
||||
Config.MaxNameLength = 20 -- Max Name Length.
|
||||
Config.MinHeight = 120 -- 120 cm lowest height
|
||||
Config.MaxHeight = 220 -- 220 cm max height.
|
||||
Config.LowestYear = 1900 -- 112 years old is the oldest you can be.
|
||||
Config.HighestYear = 2005 -- 18 years old is the youngest you can be.
|
||||
Config.MaxNameLength = 20 -- Max Name Length.
|
||||
Config.MinHeight = 120 -- 120 cm lowest height
|
||||
Config.MaxHeight = 220 -- 220 cm max height.
|
||||
Config.LowestYear = 1900 -- 112 years old is the oldest you can be.
|
||||
Config.HighestYear = 2005 -- 18 years old is the youngest you can be.
|
||||
|
||||
Config.FullCharDelete = true -- Delete all reference to character.
|
||||
Config.EnableDebugging = ESX.GetConfig().EnableDebug -- prints for debugging :)
|
||||
Config.FullCharDelete = true -- Delete all reference to character.
|
||||
Config.EnableDebugging = ESX.GetConfig().EnableDebug -- prints for debugging :)
|
||||
|
||||
@@ -4,7 +4,7 @@ game 'gta5'
|
||||
|
||||
description 'ESX Identity'
|
||||
lua54 'yes'
|
||||
version '1.9.4'
|
||||
version '1.9.5'
|
||||
|
||||
shared_scripts {
|
||||
'@es_extended/imports.lua',
|
||||
@@ -32,4 +32,4 @@ files {
|
||||
'html/css/style.css',
|
||||
}
|
||||
|
||||
dependency 'es_extended'
|
||||
dependency 'es_extended'
|
||||
|
||||
@@ -1,39 +1,38 @@
|
||||
Locales["da"] = {
|
||||
["show_active_character"] = "Vis aktiv karakter",
|
||||
["active_character"] = "Aktiv karakter: %s",
|
||||
["error_active_character"] = "Der opstod en fejl under indhentning af dine data.",
|
||||
["delete_character"] = "Slet din nuværende karakter.",
|
||||
["deleted_character"] = "Karakter slettet",
|
||||
["error_delete_character"] = "Der opstod et problem med at slette din karakter.",
|
||||
["thank_you_for_registering"] = "Registreringen lykkedes. God fornøjelse!",
|
||||
["debug_xPlayer_get_first_name"] = "Returnerer dit fornavn",
|
||||
["debug_xPlayer_get_last_name"] = "Returnerer dit efternavn",
|
||||
["debug_xPlayer_get_full_name"] = "Returnerer dit fulde navn",
|
||||
["debug_xPlayer_get_sex"] = "Returnerer dit køn",
|
||||
["debug_xPlayer_get_dob"] = "Returnerer din fødselsdato",
|
||||
["debug_xPlayer_get_height"] = "Giver din højde tilbage",
|
||||
["error_debug_xPlayer_get_first_name"] = "Der opstod et problem med at få dit fornavn.",
|
||||
["error_debug_xPlayer_get_last_name"] = "Der opstod et problem med at få dit efternavn.",
|
||||
["error_debug_xPlayer_get_full_name"] = "Der opstod et problem under indhentning af dit fulde navn.",
|
||||
["error_debug_xPlayer_get_sex"] = "Der var et problem med at få dit sex.",
|
||||
["error_debug_xPlayer_get_dob"] = "Der var et problem med at få din fødselsdato.",
|
||||
["error_debug_xPlayer_get_height"] = "Der var et problem med at få din højde.",
|
||||
["return_debug_xPlayer_get_first_name"] = "Fornavn: %s",
|
||||
["return_debug_xPlayer_get_last_name"] = "Efternavn: %s",
|
||||
["return_debug_xPlayer_get_full_name"] = "Fulde Navn: %s",
|
||||
["return_debug_xPlayer_get_sex"] = "Køn: %s",
|
||||
["return_debug_xPlayer_get_dob"] = "Fødselsdato: %s",
|
||||
["return_debug_xPlayer_get_height"] = "Højde: %s Tommer",
|
||||
["data_incorrect"] = "Ugyldige data. Prøv venligst igen.",
|
||||
["invalid_format"] = "Ugyldigt dataformat. Prøv venligst igen.",
|
||||
["no_identifier"] = "[ESX Identitet]\nDer var et problem under indlæsning af din karakter!\nFejlkode: identifikator mangler\n\nDette skyldes, at din identifikator mangler. Venligst vend tilbage senere eller rapporter dette problem til serverejeren.",
|
||||
["missing_identity"] = "[ESX Identitet]\nDer var et problem med at indlæse din karakter!\nFejlkode: identitet mangler\n\nDet ser ud til, at din identitet mangler, prøv at oprette forbindelse igen.",
|
||||
["deleted_identity"] = "Tegn slettet. Tilmeld dig igen for at oprette en ny karakter.",
|
||||
["already_registered"] = "Du har allerede tilmeldt dig.",
|
||||
["invalid_firstname_format"] = "Ugyldigt format (fornavn): Prøv venligst igen.",
|
||||
["invalid_lastname_format"] = "Ugyldigt format (efternavn): Prøv igen.",
|
||||
["invalid_dob_format"] = "Ugyldigt format (DOB): Prøv venligst igen.",
|
||||
["invalid_sex_format"] = "Ugyldigt format (køn): Prøv venligst igen.",
|
||||
["invalid_height_format"] = "Ugyldigt format (højde): Prøv venligst igen.",
|
||||
}
|
||||
|
||||
["show_active_character"] = "Vis aktiv karakter",
|
||||
["active_character"] = "Aktiv karakter: %s",
|
||||
["error_active_character"] = "Der opstod en fejl under indhentning af dine data.",
|
||||
["delete_character"] = "Slet din nuværende karakter.",
|
||||
["deleted_character"] = "Karakter slettet",
|
||||
["error_delete_character"] = "Der opstod et problem med at slette din karakter.",
|
||||
["thank_you_for_registering"] = "Registreringen lykkedes. God fornøjelse!",
|
||||
["debug_xPlayer_get_first_name"] = "Returnerer dit fornavn",
|
||||
["debug_xPlayer_get_last_name"] = "Returnerer dit efternavn",
|
||||
["debug_xPlayer_get_full_name"] = "Returnerer dit fulde navn",
|
||||
["debug_xPlayer_get_sex"] = "Returnerer dit køn",
|
||||
["debug_xPlayer_get_dob"] = "Returnerer din fødselsdato",
|
||||
["debug_xPlayer_get_height"] = "Giver din højde tilbage",
|
||||
["error_debug_xPlayer_get_first_name"] = "Der opstod et problem med at få dit fornavn.",
|
||||
["error_debug_xPlayer_get_last_name"] = "Der opstod et problem med at få dit efternavn.",
|
||||
["error_debug_xPlayer_get_full_name"] = "Der opstod et problem under indhentning af dit fulde navn.",
|
||||
["error_debug_xPlayer_get_sex"] = "Der var et problem med at få dit sex.",
|
||||
["error_debug_xPlayer_get_dob"] = "Der var et problem med at få din fødselsdato.",
|
||||
["error_debug_xPlayer_get_height"] = "Der var et problem med at få din højde.",
|
||||
["return_debug_xPlayer_get_first_name"] = "Fornavn: %s",
|
||||
["return_debug_xPlayer_get_last_name"] = "Efternavn: %s",
|
||||
["return_debug_xPlayer_get_full_name"] = "Fulde Navn: %s",
|
||||
["return_debug_xPlayer_get_sex"] = "Køn: %s",
|
||||
["return_debug_xPlayer_get_dob"] = "Fødselsdato: %s",
|
||||
["return_debug_xPlayer_get_height"] = "Højde: %s Tommer",
|
||||
["data_incorrect"] = "Ugyldige data. Prøv venligst igen.",
|
||||
["invalid_format"] = "Ugyldigt dataformat. Prøv venligst igen.",
|
||||
["no_identifier"] = "[ESX Identitet]\nDer var et problem under indlæsning af din karakter!\nFejlkode: identifikator mangler\n\nDette skyldes, at din identifikator mangler. Venligst vend tilbage senere eller rapporter dette problem til serverejeren.",
|
||||
["missing_identity"] = "[ESX Identitet]\nDer var et problem med at indlæse din karakter!\nFejlkode: identitet mangler\n\nDet ser ud til, at din identitet mangler, prøv at oprette forbindelse igen.",
|
||||
["deleted_identity"] = "Tegn slettet. Tilmeld dig igen for at oprette en ny karakter.",
|
||||
["already_registered"] = "Du har allerede tilmeldt dig.",
|
||||
["invalid_firstname_format"] = "Ugyldigt format (fornavn): Prøv venligst igen.",
|
||||
["invalid_lastname_format"] = "Ugyldigt format (efternavn): Prøv igen.",
|
||||
["invalid_dob_format"] = "Ugyldigt format (DOB): Prøv venligst igen.",
|
||||
["invalid_sex_format"] = "Ugyldigt format (køn): Prøv venligst igen.",
|
||||
["invalid_height_format"] = "Ugyldigt format (højde): Prøv venligst igen.",
|
||||
}
|
||||
|
||||
@@ -1,38 +1,38 @@
|
||||
Locales["es"] = {
|
||||
["show_active_character"] = "Mostrar personaje actual",
|
||||
["active_character"] = "Personaje actual: %s",
|
||||
["error_active_character"] = "Se produjo un error al recuperar tu nombre. Por favor contacta con un administrador",
|
||||
["delete_character"] = "Elimina tu personaje y crea uno nuevo",
|
||||
["deleted_character"] = "Tu personaje ha sido eliminado",
|
||||
["error_delete_character"] = "Se produjo un error al eliminar tu personaje. Por favor contacta con un administrador",
|
||||
["thank_you_for_registering"] = "Gracias por registrarte. Bienvenido a la ciudad",
|
||||
["debug_xPlayer_get_first_name"] = "Devuelve tu nombre",
|
||||
["debug_xPlayer_get_last_name"] = "Devuelve tu apellido",
|
||||
["debug_xPlayer_get_full_name"] = "Devuelve tu nombre completo",
|
||||
["debug_xPlayer_get_sex"] = "Devuelve tu sexo",
|
||||
["debug_xPlayer_get_dob"] = "Devuelve tu fecha de nacimiento",
|
||||
["debug_xPlayer_get_height"] = "Devuelve tu altura",
|
||||
["error_debug_xPlayer_get_first_name"] = "Se produjo un error al recuperar tu nombre",
|
||||
["error_debug_xPlayer_get_last_name"] = "Se produjo un error al recuperar tu apellido",
|
||||
["error_debug_xPlayer_get_full_name"] = "Se produjo un error al recuperar tu nombre completo",
|
||||
["error_debug_xPlayer_get_sex"] = "Se produjo un error al recuperar tu sexo",
|
||||
["error_debug_xPlayer_get_dob"] = "Se produjo un error al recuperar tu fecha de nacimiento",
|
||||
["error_debug_xPlayer_get_height"] = "Se produjo un error al recuperar tu altura",
|
||||
["return_debug_xPlayer_get_first_name"] = "Nombre: %s",
|
||||
["return_debug_xPlayer_get_last_name"] = "Apellido: %s",
|
||||
["return_debug_xPlayer_get_full_name"] = "Nombre completo: %s",
|
||||
["return_debug_xPlayer_get_sex"] = "Sexo: %s",
|
||||
["return_debug_xPlayer_get_dob"] = "Fecha de nacimiento: %s",
|
||||
["return_debug_xPlayer_get_height"] = "Altura: %s centímetros",
|
||||
["data_incorrect"] = "Datos introducidos de forma incorrecta. Inténtalo de nuevo",
|
||||
["invalid_format"] = "Datos con formato incorrecto. Inténtalo de nuevo",
|
||||
["no_identifier"] = "¡Se ha producido un error al cargar tu personaje!\nCódigo de error: identifier-missing\n\nSe desconoce la causa de este error, no se pudo encontrar su identificador. Intentalo más tarde o informa de este problema al equipo administrativo del servidor",
|
||||
["missing_identity"] = "¡Se ha producido un error al cargar tu personaje!\nCódigo de error: identity-missing\n\nParece que falta su identidad, intenta conectarte nuevamente",
|
||||
["deleted_identity"] = "Tu personaje ha sido borrado. Vuelva a iniciar sesión para crear un nuevo personaje",
|
||||
["already_registered"] = "Ya estás registrado.",
|
||||
["invalid_firstname_format"] = "Formato Inválido (Nombre): Inténtalo de nuevo.",
|
||||
["invalid_lastname_format"] = "Formato Inválido (Apellido): Inténtalo de nuevo.",
|
||||
["invalid_dob_format"] = "Formato Inválido (Fec. Nac.): Inténtalo de nuevo.",
|
||||
["invalid_sex_format"] = "Formato Inválido (Sexo): Inténtalo de nuevo.",
|
||||
["invalid_height_format"] = "Formato Inválido (Altura): Inténtalo de nuevo.",
|
||||
["show_active_character"] = "Mostrar personaje actual",
|
||||
["active_character"] = "Personaje actual: %s",
|
||||
["error_active_character"] = "Se produjo un error al recuperar tu nombre. Por favor contacta con un administrador",
|
||||
["delete_character"] = "Elimina tu personaje y crea uno nuevo",
|
||||
["deleted_character"] = "Tu personaje ha sido eliminado",
|
||||
["error_delete_character"] = "Se produjo un error al eliminar tu personaje. Por favor contacta con un administrador",
|
||||
["thank_you_for_registering"] = "Gracias por registrarte. Bienvenido a la ciudad",
|
||||
["debug_xPlayer_get_first_name"] = "Devuelve tu nombre",
|
||||
["debug_xPlayer_get_last_name"] = "Devuelve tu apellido",
|
||||
["debug_xPlayer_get_full_name"] = "Devuelve tu nombre completo",
|
||||
["debug_xPlayer_get_sex"] = "Devuelve tu sexo",
|
||||
["debug_xPlayer_get_dob"] = "Devuelve tu fecha de nacimiento",
|
||||
["debug_xPlayer_get_height"] = "Devuelve tu altura",
|
||||
["error_debug_xPlayer_get_first_name"] = "Se produjo un error al recuperar tu nombre",
|
||||
["error_debug_xPlayer_get_last_name"] = "Se produjo un error al recuperar tu apellido",
|
||||
["error_debug_xPlayer_get_full_name"] = "Se produjo un error al recuperar tu nombre completo",
|
||||
["error_debug_xPlayer_get_sex"] = "Se produjo un error al recuperar tu sexo",
|
||||
["error_debug_xPlayer_get_dob"] = "Se produjo un error al recuperar tu fecha de nacimiento",
|
||||
["error_debug_xPlayer_get_height"] = "Se produjo un error al recuperar tu altura",
|
||||
["return_debug_xPlayer_get_first_name"] = "Nombre: %s",
|
||||
["return_debug_xPlayer_get_last_name"] = "Apellido: %s",
|
||||
["return_debug_xPlayer_get_full_name"] = "Nombre completo: %s",
|
||||
["return_debug_xPlayer_get_sex"] = "Sexo: %s",
|
||||
["return_debug_xPlayer_get_dob"] = "Fecha de nacimiento: %s",
|
||||
["return_debug_xPlayer_get_height"] = "Altura: %s centímetros",
|
||||
["data_incorrect"] = "Datos introducidos de forma incorrecta. Inténtalo de nuevo",
|
||||
["invalid_format"] = "Datos con formato incorrecto. Inténtalo de nuevo",
|
||||
["no_identifier"] = "¡Se ha producido un error al cargar tu personaje!\nCódigo de error: identifier-missing\n\nSe desconoce la causa de este error, no se pudo encontrar su identificador. Intentalo más tarde o informa de este problema al equipo administrativo del servidor",
|
||||
["missing_identity"] = "¡Se ha producido un error al cargar tu personaje!\nCódigo de error: identity-missing\n\nParece que falta su identidad, intenta conectarte nuevamente",
|
||||
["deleted_identity"] = "Tu personaje ha sido borrado. Vuelva a iniciar sesión para crear un nuevo personaje",
|
||||
["already_registered"] = "Ya estás registrado.",
|
||||
["invalid_firstname_format"] = "Formato Inválido (Nombre): Inténtalo de nuevo.",
|
||||
["invalid_lastname_format"] = "Formato Inválido (Apellido): Inténtalo de nuevo.",
|
||||
["invalid_dob_format"] = "Formato Inválido (Fec. Nac.): Inténtalo de nuevo.",
|
||||
["invalid_sex_format"] = "Formato Inválido (Sexo): Inténtalo de nuevo.",
|
||||
["invalid_height_format"] = "Formato Inválido (Altura): Inténtalo de nuevo.",
|
||||
}
|
||||
|
||||
@@ -1,38 +1,38 @@
|
||||
Locales["fr"] = {
|
||||
["show_active_character"] = "Afficher le personnage actif",
|
||||
["active_character"] = "Personnage actif: %s",
|
||||
["error_active_character"] = "Une erreur s'est produite lors de l'obtention de vos données.",
|
||||
["delete_character"] = "Supprimez votre personnage actuel.",
|
||||
["deleted_character"] = "Caractère supprimé",
|
||||
["error_delete_character"] = "Un problème est survenu lors de la suppression de votre personnage.",
|
||||
["thank_you_for_registering"] = "Inscription réussi. Profitez!",
|
||||
["debug_xPlayer_get_first_name"] = "Renvoie votre prénom",
|
||||
["debug_xPlayer_get_last_name"] = "Renvoie votre nom de famille",
|
||||
["debug_xPlayer_get_full_name"] = "Renvoie votre nom complet",
|
||||
["debug_xPlayer_get_sex"] = "Renvoie votre sexe",
|
||||
["debug_xPlayer_get_dob"] = "Renvoie votre date de naissance",
|
||||
["debug_xPlayer_get_height"] = "Renvoie votre taille",
|
||||
["error_debug_xPlayer_get_first_name"] = "Un problème est survenu lors de l'obtention de votre prénom.",
|
||||
["error_debug_xPlayer_get_last_name"] = "Un problème est survenu lors de l'obtention de votre nom de famille.",
|
||||
["error_debug_xPlayer_get_full_name"] = "Un problème est survenu lors de l'obtention de votre nom complet.",
|
||||
["error_debug_xPlayer_get_sex"] = "Il y a eu un problème lors de l'obtention de votre sexe.",
|
||||
["error_debug_xPlayer_get_dob"] = "Un problème est survenu lors de l'obtention de votre date de naissance.",
|
||||
["error_debug_xPlayer_get_height"] = "Un problème est survenu lors de l'obtention de votre taille.",
|
||||
["return_debug_xPlayer_get_first_name"] = "Prénom: %s",
|
||||
["return_debug_xPlayer_get_last_name"] = "Nom de famille: %s",
|
||||
["return_debug_xPlayer_get_full_name"] = "Nom: %s",
|
||||
["return_debug_xPlayer_get_sex"] = "Sexe: %s",
|
||||
["return_debug_xPlayer_get_dob"] = "Date de naissance: %s",
|
||||
["return_debug_xPlayer_get_height"] = "Hauteur: %s pouces",
|
||||
["data_incorrect"] = "Données non valides, veuillez réessayer.",
|
||||
["invalid_format"] = "Format de données non valide, veuillez réessayer.",
|
||||
["no_identifier"] = "[ESX Identity]\nIl y a eu un problème lors du chargement de votre personnage !\nCode d'erreur : identifiant manquant\n\nCela est dû au fait que votre identifiant est manquant. Veuillez revenir plus tard ou signaler ce problème au propriétaire du serveur.",
|
||||
["missing_identity"] = "[ESX Identity]Un problème est survenu lors du chargement de votre personnage !Code d'erreur : identité manquante\n\nIl semble que votre identité soit manquante, essayez de vous reconnecter.",
|
||||
["deleted_identity"] = "Personnage supprimé. Veuillez vous réinscrire pour créer un nouveau personnage.",
|
||||
["already_registered"] = "Vous êtes déjà inscrit.",
|
||||
["invalid_firstname_format"] = "Format non valide (prénom) : veuillez réessayer.",
|
||||
["invalid_lastname_format"] = "Format non valide (nom de famille) : veuillez réessayer.",
|
||||
["invalid_dob_format"] = "Format non valide (DDN) : veuillez réessayer.",
|
||||
["invalid_sex_format"] = "Format non valide (sexe) : veuillez réessayer.",
|
||||
["invalid_height_format"] = "Format non valide (hauteur) : veuillez réessayer.",
|
||||
}
|
||||
["show_active_character"] = "Afficher le personnage actif",
|
||||
["active_character"] = "Personnage actif: %s",
|
||||
["error_active_character"] = "Une erreur s'est produite lors de l'obtention de vos données.",
|
||||
["delete_character"] = "Supprimez votre personnage actuel.",
|
||||
["deleted_character"] = "Caractère supprimé",
|
||||
["error_delete_character"] = "Un problème est survenu lors de la suppression de votre personnage.",
|
||||
["thank_you_for_registering"] = "Inscription réussi. Profitez!",
|
||||
["debug_xPlayer_get_first_name"] = "Renvoie votre prénom",
|
||||
["debug_xPlayer_get_last_name"] = "Renvoie votre nom de famille",
|
||||
["debug_xPlayer_get_full_name"] = "Renvoie votre nom complet",
|
||||
["debug_xPlayer_get_sex"] = "Renvoie votre sexe",
|
||||
["debug_xPlayer_get_dob"] = "Renvoie votre date de naissance",
|
||||
["debug_xPlayer_get_height"] = "Renvoie votre taille",
|
||||
["error_debug_xPlayer_get_first_name"] = "Un problème est survenu lors de l'obtention de votre prénom.",
|
||||
["error_debug_xPlayer_get_last_name"] = "Un problème est survenu lors de l'obtention de votre nom de famille.",
|
||||
["error_debug_xPlayer_get_full_name"] = "Un problème est survenu lors de l'obtention de votre nom complet.",
|
||||
["error_debug_xPlayer_get_sex"] = "Il y a eu un problème lors de l'obtention de votre sexe.",
|
||||
["error_debug_xPlayer_get_dob"] = "Un problème est survenu lors de l'obtention de votre date de naissance.",
|
||||
["error_debug_xPlayer_get_height"] = "Un problème est survenu lors de l'obtention de votre taille.",
|
||||
["return_debug_xPlayer_get_first_name"] = "Prénom: %s",
|
||||
["return_debug_xPlayer_get_last_name"] = "Nom de famille: %s",
|
||||
["return_debug_xPlayer_get_full_name"] = "Nom: %s",
|
||||
["return_debug_xPlayer_get_sex"] = "Sexe: %s",
|
||||
["return_debug_xPlayer_get_dob"] = "Date de naissance: %s",
|
||||
["return_debug_xPlayer_get_height"] = "Hauteur: %s pouces",
|
||||
["data_incorrect"] = "Données non valides, veuillez réessayer.",
|
||||
["invalid_format"] = "Format de données non valide, veuillez réessayer.",
|
||||
["no_identifier"] = "[ESX Identity]\nIl y a eu un problème lors du chargement de votre personnage !\nCode d'erreur : identifiant manquant\n\nCela est dû au fait que votre identifiant est manquant. Veuillez revenir plus tard ou signaler ce problème au propriétaire du serveur.",
|
||||
["missing_identity"] = "[ESX Identity]Un problème est survenu lors du chargement de votre personnage !Code d'erreur : identité manquante\n\nIl semble que votre identité soit manquante, essayez de vous reconnecter.",
|
||||
["deleted_identity"] = "Personnage supprimé. Veuillez vous réinscrire pour créer un nouveau personnage.",
|
||||
["already_registered"] = "Vous êtes déjà inscrit.",
|
||||
["invalid_firstname_format"] = "Format non valide (prénom) : veuillez réessayer.",
|
||||
["invalid_lastname_format"] = "Format non valide (nom de famille) : veuillez réessayer.",
|
||||
["invalid_dob_format"] = "Format non valide (DDN) : veuillez réessayer.",
|
||||
["invalid_sex_format"] = "Format non valide (sexe) : veuillez réessayer.",
|
||||
["invalid_height_format"] = "Format non valide (hauteur) : veuillez réessayer.",
|
||||
}
|
||||
|
||||
@@ -1,38 +1,38 @@
|
||||
Locales["pt"] = {
|
||||
["show_active_character"] = "Mostrar personagem ativa",
|
||||
["active_character"] = "Personagem ativa: %s",
|
||||
["error_active_character"] = "Houve um erro a obter os teus dados.",
|
||||
["delete_character"] = "Apagar a tua personagem atual.",
|
||||
["deleted_character"] = "Personagem apagada!",
|
||||
["error_delete_character"] = "Houve um problema ao apagar a tua personagem.",
|
||||
["thank_you_for_registering"] = "Registo concluído. Diverte-te!",
|
||||
["debug_xPlayer_get_first_name"] = "Retorna o teu primeiro nome",
|
||||
["debug_xPlayer_get_last_name"] = "Retorna o teu último nome",
|
||||
["debug_xPlayer_get_full_name"] = "Retorna o teu nome completo",
|
||||
["debug_xPlayer_get_sex"] = "Retorna o teu sexo",
|
||||
["debug_xPlayer_get_dob"] = "Retorna a tua data de nascimento",
|
||||
["debug_xPlayer_get_height"] = "Retorna a tua altura",
|
||||
["error_debug_xPlayer_get_first_name"] = "Houve um problema ao obter o teu primeiro nome.",
|
||||
["error_debug_xPlayer_get_last_name"] = "Houve um problema ao obter o teu último nome.",
|
||||
["error_debug_xPlayer_get_full_name"] = "Houve um problema ao obter o teu nome completo.",
|
||||
["error_debug_xPlayer_get_sex"] = "Houve um problema ao obter o teu sexo.",
|
||||
["error_debug_xPlayer_get_dob"] = "Houve um problema ao obter a tua data de nascimento.",
|
||||
["error_debug_xPlayer_get_height"] = "Houve um problema ao obter a tua altura.",
|
||||
["return_debug_xPlayer_get_first_name"] = "Primeiro nome: %s",
|
||||
["return_debug_xPlayer_get_last_name"] = "Último nome: %s",
|
||||
["return_debug_xPlayer_get_full_name"] = "Nome: %s",
|
||||
["return_debug_xPlayer_get_sex"] = "Sexo: %s",
|
||||
["return_debug_xPlayer_get_dob"] = "Data de nascimento: %s",
|
||||
["return_debug_xPlayer_get_height"] = "Altura: %s cm",
|
||||
["data_incorrect"] = "Dados inválidos, tenta novamente.",
|
||||
["invalid_format"] = "Formato dos dados inválido, tenta novamente.",
|
||||
["no_identifier"] = "[ESX Identity]\nHouve um erro ao carregar a tua personagem!\nCódigo do erro: identifier-missing\n\nEste erro é devido à falta do teu identificador. Porfavor volta mais tarde ou reporta este problema a um Administrador.",
|
||||
["missing_identity"] = "[ESX Identity]\nHouve um erro ao carregar a tua personagem!\nCódigo do erro: identity-missing\n\nParece que a tua identidade está em falta, experimenta reentrar no servidor!",
|
||||
["deleted_identity"] = "Personagem apagada. Porfavor reentra para criar uma nova personagem.",
|
||||
["already_registered"] = "Tu já estás registado.",
|
||||
["invalid_firstname_format"] = "Formato inválido (Primeiro nome): Porfavor tenta novamente!",
|
||||
["invalid_lastname_format"] = "Formato inválido (Último nome): Porfavor tenta novamente!",
|
||||
["invalid_dob_format"] = "Formato inválido (Data de nascimento): Porfavor tenta novamente!",
|
||||
["invalid_sex_format"] = "Formato inválido (Sexo): Porfavor tenta novamente!",
|
||||
["invalid_height_format"] = "Formato inválido (Altura): Porfavor tenta novamente!",
|
||||
}
|
||||
["show_active_character"] = "Mostrar personagem ativa",
|
||||
["active_character"] = "Personagem ativa: %s",
|
||||
["error_active_character"] = "Houve um erro a obter os teus dados.",
|
||||
["delete_character"] = "Apagar a tua personagem atual.",
|
||||
["deleted_character"] = "Personagem apagada!",
|
||||
["error_delete_character"] = "Houve um problema ao apagar a tua personagem.",
|
||||
["thank_you_for_registering"] = "Registo concluído. Diverte-te!",
|
||||
["debug_xPlayer_get_first_name"] = "Retorna o teu primeiro nome",
|
||||
["debug_xPlayer_get_last_name"] = "Retorna o teu último nome",
|
||||
["debug_xPlayer_get_full_name"] = "Retorna o teu nome completo",
|
||||
["debug_xPlayer_get_sex"] = "Retorna o teu sexo",
|
||||
["debug_xPlayer_get_dob"] = "Retorna a tua data de nascimento",
|
||||
["debug_xPlayer_get_height"] = "Retorna a tua altura",
|
||||
["error_debug_xPlayer_get_first_name"] = "Houve um problema ao obter o teu primeiro nome.",
|
||||
["error_debug_xPlayer_get_last_name"] = "Houve um problema ao obter o teu último nome.",
|
||||
["error_debug_xPlayer_get_full_name"] = "Houve um problema ao obter o teu nome completo.",
|
||||
["error_debug_xPlayer_get_sex"] = "Houve um problema ao obter o teu sexo.",
|
||||
["error_debug_xPlayer_get_dob"] = "Houve um problema ao obter a tua data de nascimento.",
|
||||
["error_debug_xPlayer_get_height"] = "Houve um problema ao obter a tua altura.",
|
||||
["return_debug_xPlayer_get_first_name"] = "Primeiro nome: %s",
|
||||
["return_debug_xPlayer_get_last_name"] = "Último nome: %s",
|
||||
["return_debug_xPlayer_get_full_name"] = "Nome: %s",
|
||||
["return_debug_xPlayer_get_sex"] = "Sexo: %s",
|
||||
["return_debug_xPlayer_get_dob"] = "Data de nascimento: %s",
|
||||
["return_debug_xPlayer_get_height"] = "Altura: %s cm",
|
||||
["data_incorrect"] = "Dados inválidos, tenta novamente.",
|
||||
["invalid_format"] = "Formato dos dados inválido, tenta novamente.",
|
||||
["no_identifier"] = "[ESX Identity]\nHouve um erro ao carregar a tua personagem!\nCódigo do erro: identifier-missing\n\nEste erro é devido à falta do teu identificador. Porfavor volta mais tarde ou reporta este problema a um Administrador.",
|
||||
["missing_identity"] = "[ESX Identity]\nHouve um erro ao carregar a tua personagem!\nCódigo do erro: identity-missing\n\nParece que a tua identidade está em falta, experimenta reentrar no servidor!",
|
||||
["deleted_identity"] = "Personagem apagada. Porfavor reentra para criar uma nova personagem.",
|
||||
["already_registered"] = "Tu já estás registado.",
|
||||
["invalid_firstname_format"] = "Formato inválido (Primeiro nome): Porfavor tenta novamente!",
|
||||
["invalid_lastname_format"] = "Formato inválido (Último nome): Porfavor tenta novamente!",
|
||||
["invalid_dob_format"] = "Formato inválido (Data de nascimento): Porfavor tenta novamente!",
|
||||
["invalid_sex_format"] = "Formato inválido (Sexo): Porfavor tenta novamente!",
|
||||
["invalid_height_format"] = "Formato inválido (Altura): Porfavor tenta novamente!",
|
||||
}
|
||||
|
||||
@@ -1,38 +1,38 @@
|
||||
Locales["sl"] = {
|
||||
["show_active_character"] = "Prikazi aktivni Karakter",
|
||||
["active_character"] = "Aktivni Karakter: %s",
|
||||
["error_active_character"] = "Pri pridobivanju vasih podatkov je prislo do napake.",
|
||||
["delete_character"] = "Izbrisi vas trenutni Karakter.",
|
||||
["deleted_character"] = "Karakter izbrisan",
|
||||
["error_delete_character"] = "Pri brisanju vasega lika je prislo do tezave.",
|
||||
["thank_you_for_registering"] = "Registracija uspesna. Uzivajte!",
|
||||
["debug_xPlayer_get_first_name"] = "Vrne vase ime",
|
||||
["debug_xPlayer_get_last_name"] = "Vrne vas priimek",
|
||||
["debug_xPlayer_get_full_name"] = "Vrne vase polno ime",
|
||||
["debug_xPlayer_get_sex"] = "Vrne vas spol",
|
||||
["debug_xPlayer_get_dob"] = "Vrne vas DOB",
|
||||
["debug_xPlayer_get_height"] = "Vrne vaso visino",
|
||||
["error_debug_xPlayer_get_first_name"] = "Pri pridobivanju vasega imena je prislo do tezave.",
|
||||
["error_debug_xPlayer_get_last_name"] = "Pri pridobivanju vasega priimka je prislo do tezave.",
|
||||
["error_debug_xPlayer_get_full_name"] = "Pri pridobivanju vasega polnega imena je prislo do tezave.",
|
||||
["error_debug_xPlayer_get_sex"] = "Pri pridobivanju vasega spola je prislo do tezave.",
|
||||
["error_debug_xPlayer_get_dob"] = "Pri pridobivanju vasega datuma rojstva je prislo do tezave.",
|
||||
["error_debug_xPlayer_get_height"] = "Pri pridobivanju vase visine je prislo do tezave.",
|
||||
["return_debug_xPlayer_get_first_name"] = "Ime: %s",
|
||||
["return_debug_xPlayer_get_last_name"] = "Priimek: %s",
|
||||
["return_debug_xPlayer_get_full_name"] = "Ime: %s",
|
||||
["return_debug_xPlayer_get_sex"] = "Spol: %s",
|
||||
["return_debug_xPlayer_get_dob"] = "DOB: %s",
|
||||
["return_debug_xPlayer_get_height"] = "Visina: %s palcev",
|
||||
["data_incorrect"] = "Neveljavni podatki, poskusite znova.",
|
||||
["invalid_format"] = "Neveljavna oblika podatkov, poskusite znova.",
|
||||
["no_identifier"] = "[ESX Identiteta]\nPri nalaganju vasega lika je prislo do tezave!\nKoda napake: identifikator-manjka\n\nTo je posledica tega, da manjka vas identifikator. Vrnite se pozneje ali prijavite to tezavo lastniku streznika.",
|
||||
["missing_identity"] = "[ESX Identity]\nPri nalaganju vasega lika je prislo do tezave!\nKoda napake: identity-missing\n\nVideti je, da vasa identiteta manjka, poskusite znova vzpostaviti povezavo.",
|
||||
["deleted_identity"] = "Karakter izbrisan. Ponovno se pridruzite, da ustvarite nov lik.",
|
||||
["already_registered"] = "Registrirali ste se ze.",
|
||||
["invalid_firstname_format"] = "Neveljavna oblika (ime): Prosimo, poskusite znova.",
|
||||
["invalid_lastname_format"] = "Neveljavna oblika (priimek): Poskusite ponovno.",
|
||||
["invalid_dob_format"] = "Neveljavna oblika (DOB): Prosimo, poskusite znova.",
|
||||
["invalid_sex_format"] = "Neveljavna oblika (spol): Poskusite ponovno.",
|
||||
["invalid_height_format"] = "Neveljavna oblika (visina): Prosimo, poskusite znova.",
|
||||
}
|
||||
["show_active_character"] = "Prikazi aktivni Karakter",
|
||||
["active_character"] = "Aktivni Karakter: %s",
|
||||
["error_active_character"] = "Pri pridobivanju vasih podatkov je prislo do napake.",
|
||||
["delete_character"] = "Izbrisi vas trenutni Karakter.",
|
||||
["deleted_character"] = "Karakter izbrisan",
|
||||
["error_delete_character"] = "Pri brisanju vasega lika je prislo do tezave.",
|
||||
["thank_you_for_registering"] = "Registracija uspesna. Uzivajte!",
|
||||
["debug_xPlayer_get_first_name"] = "Vrne vase ime",
|
||||
["debug_xPlayer_get_last_name"] = "Vrne vas priimek",
|
||||
["debug_xPlayer_get_full_name"] = "Vrne vase polno ime",
|
||||
["debug_xPlayer_get_sex"] = "Vrne vas spol",
|
||||
["debug_xPlayer_get_dob"] = "Vrne vas DOB",
|
||||
["debug_xPlayer_get_height"] = "Vrne vaso visino",
|
||||
["error_debug_xPlayer_get_first_name"] = "Pri pridobivanju vasega imena je prislo do tezave.",
|
||||
["error_debug_xPlayer_get_last_name"] = "Pri pridobivanju vasega priimka je prislo do tezave.",
|
||||
["error_debug_xPlayer_get_full_name"] = "Pri pridobivanju vasega polnega imena je prislo do tezave.",
|
||||
["error_debug_xPlayer_get_sex"] = "Pri pridobivanju vasega spola je prislo do tezave.",
|
||||
["error_debug_xPlayer_get_dob"] = "Pri pridobivanju vasega datuma rojstva je prislo do tezave.",
|
||||
["error_debug_xPlayer_get_height"] = "Pri pridobivanju vase visine je prislo do tezave.",
|
||||
["return_debug_xPlayer_get_first_name"] = "Ime: %s",
|
||||
["return_debug_xPlayer_get_last_name"] = "Priimek: %s",
|
||||
["return_debug_xPlayer_get_full_name"] = "Ime: %s",
|
||||
["return_debug_xPlayer_get_sex"] = "Spol: %s",
|
||||
["return_debug_xPlayer_get_dob"] = "DOB: %s",
|
||||
["return_debug_xPlayer_get_height"] = "Visina: %s palcev",
|
||||
["data_incorrect"] = "Neveljavni podatki, poskusite znova.",
|
||||
["invalid_format"] = "Neveljavna oblika podatkov, poskusite znova.",
|
||||
["no_identifier"] = "[ESX Identiteta]\nPri nalaganju vasega lika je prislo do tezave!\nKoda napake: identifikator-manjka\n\nTo je posledica tega, da manjka vas identifikator. Vrnite se pozneje ali prijavite to tezavo lastniku streznika.",
|
||||
["missing_identity"] = "[ESX Identity]\nPri nalaganju vasega lika je prislo do tezave!\nKoda napake: identity-missing\n\nVideti je, da vasa identiteta manjka, poskusite znova vzpostaviti povezavo.",
|
||||
["deleted_identity"] = "Karakter izbrisan. Ponovno se pridruzite, da ustvarite nov lik.",
|
||||
["already_registered"] = "Registrirali ste se ze.",
|
||||
["invalid_firstname_format"] = "Neveljavna oblika (ime): Prosimo, poskusite znova.",
|
||||
["invalid_lastname_format"] = "Neveljavna oblika (priimek): Poskusite ponovno.",
|
||||
["invalid_dob_format"] = "Neveljavna oblika (DOB): Prosimo, poskusite znova.",
|
||||
["invalid_sex_format"] = "Neveljavna oblika (spol): Poskusite ponovno.",
|
||||
["invalid_height_format"] = "Neveljavna oblika (visina): Prosimo, poskusite znova.",
|
||||
}
|
||||
|
||||
+115
-126
@@ -3,16 +3,12 @@ local alreadyRegistered = {}
|
||||
local multichar = ESX.GetConfig().Multichar
|
||||
|
||||
local function deleteIdentityFromDatabase(xPlayer)
|
||||
MySQL.query.await(
|
||||
'UPDATE users SET firstname = ?, lastname = ?, dateofbirth = ?, sex = ?, height = ?, skin = ? WHERE identifier = ?',
|
||||
{ nil, nil, nil, nil, nil, nil, xPlayer.identifier })
|
||||
MySQL.query.await('UPDATE users SET firstname = ?, lastname = ?, dateofbirth = ?, sex = ?, height = ?, skin = ? WHERE identifier = ?', { nil, nil, nil, nil, nil, nil, xPlayer.identifier })
|
||||
|
||||
if Config.FullCharDelete then
|
||||
MySQL.update.await('UPDATE addon_account_data SET money = 0 WHERE account_name IN (?) AND owner = ?',
|
||||
{ { 'bank_savings', 'caution' }, xPlayer.identifier })
|
||||
MySQL.update.await('UPDATE addon_account_data SET money = 0 WHERE account_name IN (?) AND owner = ?', { { 'bank_savings', 'caution' }, xPlayer.identifier })
|
||||
|
||||
MySQL.prepare.await('UPDATE datastore_data SET data = ? WHERE name IN (?) AND owner = ?',
|
||||
{ '\'{}\'', { 'user_ears', 'user_glasses', 'user_helmet', 'user_mask' }, xPlayer.identifier })
|
||||
MySQL.prepare.await('UPDATE datastore_data SET data = ? WHERE name IN (?) AND owner = ?', { '\'{}\'', { 'user_ears', 'user_glasses', 'user_helmet', 'user_mask' }, xPlayer.identifier })
|
||||
end
|
||||
end
|
||||
|
||||
@@ -31,9 +27,7 @@ local function deleteIdentity(xPlayer)
|
||||
end
|
||||
|
||||
local function saveIdentityToDatabase(identifier, identity)
|
||||
MySQL.update.await(
|
||||
'UPDATE users SET firstname = ?, lastname = ?, dateofbirth = ?, sex = ?, height = ? WHERE identifier = ?',
|
||||
{ identity.firstName, identity.lastName, identity.dateOfBirth, identity.sex, identity.height, identifier })
|
||||
MySQL.update.await('UPDATE users SET firstname = ?, lastname = ?, dateofbirth = ?, sex = ?, height = ? WHERE identifier = ?', { identity.firstName, identity.lastName, identity.dateOfBirth, identity.sex, identity.height, identifier })
|
||||
end
|
||||
|
||||
local function checkDOBFormat(str)
|
||||
@@ -125,22 +119,21 @@ if Config.UseDeferrals then
|
||||
Wait(100)
|
||||
|
||||
if identifier then
|
||||
MySQL.single('SELECT firstname, lastname, dateofbirth, sex, height FROM users WHERE identifier = ?',
|
||||
{ identifier }, function(result)
|
||||
if result then
|
||||
if result.firstname then
|
||||
playerIdentity[identifier] = {
|
||||
firstName = result.firstname,
|
||||
lastName = result.lastname,
|
||||
dateOfBirth = result.dateofbirth,
|
||||
sex = result.sex,
|
||||
height = result.height
|
||||
}
|
||||
MySQL.single('SELECT firstname, lastname, dateofbirth, sex, height FROM users WHERE identifier = ?', { identifier }, function(result)
|
||||
if result then
|
||||
if result.firstname then
|
||||
playerIdentity[identifier] = {
|
||||
firstName = result.firstname,
|
||||
lastName = result.lastname,
|
||||
dateOfBirth = result.dateofbirth,
|
||||
sex = result.sex,
|
||||
height = result.height
|
||||
}
|
||||
|
||||
deferrals.done()
|
||||
else
|
||||
deferrals.presentCard(
|
||||
[==[{"type": "AdaptiveCard","body":[{"type":"Container","items":[{"type":"ColumnSet",
|
||||
deferrals.done()
|
||||
else
|
||||
deferrals.presentCard(
|
||||
[==[{"type": "AdaptiveCard","body":[{"type":"Container","items":[{"type":"ColumnSet",
|
||||
"columns":[{"type":"Column","items":[{"type":"Input.Text","placeholder":"First Name",
|
||||
"id":"firstname","maxLength":15},{"type":"Input.Text","placeholder":"Date of Birth (MM/DD/YYYY)",
|
||||
"id":"dateofbirth","maxLength":10}],"width":"stretch"},{"type":"Column","width":"stretch",
|
||||
@@ -150,33 +143,33 @@ if Config.UseDeferrals then
|
||||
{"title":"Female","value":"f"}],"style":"expanded","id":"sex"}]},{"type": "ActionSet",
|
||||
"actions": [{"type":"Action.Submit","title":"Submit"}]}],
|
||||
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json","version":"1.0"}]==],
|
||||
function(data)
|
||||
if data.firstname == '' or data.lastname == '' or data.dateofbirth == '' or data.sex ==
|
||||
'' or data.height == '' then
|
||||
deferrals.done(TranslateCap('data_incorrect'))
|
||||
else
|
||||
if checkNameFormat(data.firstname) and checkNameFormat(data.lastname) and
|
||||
checkDOBFormat(data.dateofbirth) and checkSexFormat(data.sex) and
|
||||
checkHeightFormat(data.height) then
|
||||
playerIdentity[identifier] = {
|
||||
firstName = formatName(data.firstname),
|
||||
lastName = formatName(data.lastname),
|
||||
dateOfBirth = data.dateofbirth,
|
||||
sex = data.sex,
|
||||
height = tonumber(data.height),
|
||||
saveToDatabase = true
|
||||
}
|
||||
function(data)
|
||||
if data.firstname == '' or data.lastname == '' or data.dateofbirth == '' or data.sex ==
|
||||
'' or data.height == '' then
|
||||
deferrals.done(TranslateCap('data_incorrect'))
|
||||
else
|
||||
if checkNameFormat(data.firstname) and checkNameFormat(data.lastname) and
|
||||
checkDOBFormat(data.dateofbirth) and checkSexFormat(data.sex) and
|
||||
checkHeightFormat(data.height) then
|
||||
playerIdentity[identifier] = {
|
||||
firstName = formatName(data.firstname),
|
||||
lastName = formatName(data.lastname),
|
||||
dateOfBirth = data.dateofbirth,
|
||||
sex = data.sex,
|
||||
height = tonumber(data.height),
|
||||
saveToDatabase = true
|
||||
}
|
||||
|
||||
deferrals.done()
|
||||
else
|
||||
deferrals.done(TranslateCap('invalid_format'))
|
||||
end
|
||||
deferrals.done()
|
||||
else
|
||||
deferrals.done(TranslateCap('invalid_format'))
|
||||
end
|
||||
end)
|
||||
end
|
||||
else
|
||||
deferrals.presentCard(
|
||||
[==[{"type": "AdaptiveCard","body":[{"type":"Container","items":[{"type":"ColumnSet","columns":[{
|
||||
end
|
||||
end)
|
||||
end
|
||||
else
|
||||
deferrals.presentCard(
|
||||
[==[{"type": "AdaptiveCard","body":[{"type":"Container","items":[{"type":"ColumnSet","columns":[{
|
||||
"type":"Column","items":[{"type":"Input.Text","placeholder":"First Name","id":"firstname",
|
||||
"maxLength":15},{"type":"Input.Text","placeholder":"Date of Birth (MM/DD/YYYY)","id":"dateofbirth",
|
||||
"maxLength":10}],"width":"stretch"},{"type":"Column","width":"stretch","items":[{"type":"Input.Text",
|
||||
@@ -185,39 +178,39 @@ if Config.UseDeferrals then
|
||||
"placeholder":"Sex","choices":[{"title":"Male","value":"m"},{"title":"Female","value":"f"}],
|
||||
"style":"expanded","id":"sex"}]},{"type": "ActionSet","actions": [{"type":"Action.Submit",
|
||||
"title":"Submit"}]}],"$schema": "http://adaptivecards.io/schemas/adaptive-card.json","version":"1.0"}]==],
|
||||
function(data)
|
||||
if data.firstname == '' or data.lastname == '' or data.dateofbirth == '' or data.sex == '' or data.height == '' then
|
||||
return deferrals.done(TranslateCap('data_incorrect'))
|
||||
end
|
||||
if not checkNameFormat(data.firstname) then
|
||||
return deferrals.done(TranslateCap('invalid_firstname_format'))
|
||||
end
|
||||
if not checkNameFormat(data.lastname) then
|
||||
return deferrals.done(TranslateCap('invalid_lastname_format'))
|
||||
end
|
||||
if not checkDOBFormat(data.dateofbirth) then
|
||||
return deferrals.done(TranslateCap('invalid_dob_format'))
|
||||
end
|
||||
if not checkSexFormat(data.sex) then
|
||||
return deferrals.done(TranslateCap('invalid_sex_format'))
|
||||
end
|
||||
if not checkHeightFormat(data.height) then
|
||||
return deferrals.done(TranslateCap('invalid_height_format'))
|
||||
end
|
||||
function(data)
|
||||
if data.firstname == '' or data.lastname == '' or data.dateofbirth == '' or data.sex == '' or data.height == '' then
|
||||
return deferrals.done(TranslateCap('data_incorrect'))
|
||||
end
|
||||
if not checkNameFormat(data.firstname) then
|
||||
return deferrals.done(TranslateCap('invalid_firstname_format'))
|
||||
end
|
||||
if not checkNameFormat(data.lastname) then
|
||||
return deferrals.done(TranslateCap('invalid_lastname_format'))
|
||||
end
|
||||
if not checkDOBFormat(data.dateofbirth) then
|
||||
return deferrals.done(TranslateCap('invalid_dob_format'))
|
||||
end
|
||||
if not checkSexFormat(data.sex) then
|
||||
return deferrals.done(TranslateCap('invalid_sex_format'))
|
||||
end
|
||||
if not checkHeightFormat(data.height) then
|
||||
return deferrals.done(TranslateCap('invalid_height_format'))
|
||||
end
|
||||
|
||||
playerIdentity[identifier] = {
|
||||
firstName = formatName(data.firstname),
|
||||
lastName = formatName(data.lastname),
|
||||
dateOfBirth = formatDate(data.dateofbirth),
|
||||
sex = data.sex,
|
||||
height = tonumber(data.height),
|
||||
saveToDatabase = true
|
||||
}
|
||||
playerIdentity[identifier] = {
|
||||
firstName = formatName(data.firstname),
|
||||
lastName = formatName(data.lastname),
|
||||
dateOfBirth = formatDate(data.dateofbirth),
|
||||
sex = data.sex,
|
||||
height = tonumber(data.height),
|
||||
saveToDatabase = true
|
||||
}
|
||||
|
||||
deferrals.done()
|
||||
end)
|
||||
end
|
||||
end)
|
||||
deferrals.done()
|
||||
end)
|
||||
end
|
||||
end)
|
||||
else
|
||||
deferrals.done(TranslateCap('no_identifier'))
|
||||
end
|
||||
@@ -267,29 +260,27 @@ else
|
||||
end
|
||||
|
||||
local function checkIdentity(xPlayer)
|
||||
MySQL.single('SELECT firstname, lastname, dateofbirth, sex, height FROM users WHERE identifier = ?',
|
||||
{ xPlayer.identifier },
|
||||
function(result)
|
||||
if not result then
|
||||
return TriggerClientEvent('esx_identity:showRegisterIdentity', xPlayer.source)
|
||||
end
|
||||
if not result.firstname then
|
||||
playerIdentity[xPlayer.identifier] = nil
|
||||
alreadyRegistered[xPlayer.identifier] = false
|
||||
return TriggerClientEvent('esx_identity:showRegisterIdentity', xPlayer.source)
|
||||
end
|
||||
|
||||
playerIdentity[xPlayer.identifier] = {
|
||||
firstName = result.firstname,
|
||||
lastName = result.lastname,
|
||||
dateOfBirth = result.dateofbirth,
|
||||
sex = result.sex,
|
||||
height = result.height
|
||||
}
|
||||
|
||||
alreadyRegistered[xPlayer.identifier] = true
|
||||
setIdentity(xPlayer)
|
||||
MySQL.single('SELECT firstname, lastname, dateofbirth, sex, height FROM users WHERE identifier = ?', { xPlayer.identifier }, function(result)
|
||||
if not result then
|
||||
return TriggerClientEvent('esx_identity:showRegisterIdentity', xPlayer.source)
|
||||
end
|
||||
if not result.firstname then
|
||||
playerIdentity[xPlayer.identifier] = nil
|
||||
alreadyRegistered[xPlayer.identifier] = false
|
||||
return TriggerClientEvent('esx_identity:showRegisterIdentity', xPlayer.source)
|
||||
end
|
||||
|
||||
playerIdentity[xPlayer.identifier] = {
|
||||
firstName = result.firstname,
|
||||
lastName = result.lastname,
|
||||
dateOfBirth = result.dateofbirth,
|
||||
sex = result.sex,
|
||||
height = result.height
|
||||
}
|
||||
|
||||
alreadyRegistered[xPlayer.identifier] = true
|
||||
setIdentity(xPlayer)
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
@@ -302,32 +293,30 @@ else
|
||||
if not identifier then
|
||||
return deferrals.done(TranslateCap('no_identifier'))
|
||||
end
|
||||
MySQL.single('SELECT firstname, lastname, dateofbirth, sex, height FROM users WHERE identifier = ?',
|
||||
{ identifier },
|
||||
function(result)
|
||||
if not result then
|
||||
playerIdentity[identifier] = nil
|
||||
alreadyRegistered[identifier] = false
|
||||
return deferrals.done()
|
||||
end
|
||||
if not result.firstname then
|
||||
playerIdentity[identifier] = nil
|
||||
alreadyRegistered[identifier] = false
|
||||
return deferrals.done()
|
||||
end
|
||||
MySQL.single('SELECT firstname, lastname, dateofbirth, sex, height FROM users WHERE identifier = ?', { identifier }, function(result)
|
||||
if not result then
|
||||
playerIdentity[identifier] = nil
|
||||
alreadyRegistered[identifier] = false
|
||||
return deferrals.done()
|
||||
end
|
||||
if not result.firstname then
|
||||
playerIdentity[identifier] = nil
|
||||
alreadyRegistered[identifier] = false
|
||||
return deferrals.done()
|
||||
end
|
||||
|
||||
playerIdentity[identifier] = {
|
||||
firstName = result.firstname,
|
||||
lastName = result.lastname,
|
||||
dateOfBirth = result.dateofbirth,
|
||||
sex = result.sex,
|
||||
height = result.height
|
||||
}
|
||||
playerIdentity[identifier] = {
|
||||
firstName = result.firstname,
|
||||
lastName = result.lastname,
|
||||
dateOfBirth = result.dateofbirth,
|
||||
sex = result.sex,
|
||||
height = result.height
|
||||
}
|
||||
|
||||
alreadyRegistered[identifier] = true
|
||||
alreadyRegistered[identifier] = true
|
||||
|
||||
deferrals.done()
|
||||
end)
|
||||
deferrals.done()
|
||||
end)
|
||||
end)
|
||||
|
||||
AddEventHandler('onResourceStart', function(resource)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local ClientLoadESX = false
|
||||
|
||||
AddEventHandler("playerSpawned", function ()
|
||||
AddEventHandler("playerSpawned", function()
|
||||
if not ClientLoadESX then
|
||||
ShutdownLoadingScreenNui()
|
||||
ClientLoadESX = true
|
||||
@@ -10,4 +10,4 @@ AddEventHandler("playerSpawned", function ()
|
||||
DoScreenFadeIn(2500)
|
||||
end
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
Config = {}
|
||||
|
||||
Config.Fade = true
|
||||
Config.Fade = true
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
game 'common'
|
||||
version '1.9.4'
|
||||
version '1.9.5'
|
||||
fx_version 'cerulean'
|
||||
author 'ESX-Framework'
|
||||
lua54 'yes'
|
||||
@@ -11,4 +11,4 @@ loadscreen_manual_shutdown "yes"
|
||||
|
||||
client_script 'client/client.lua'
|
||||
|
||||
files {'index.html', './vid/*.mp4', './vid/*.webm', './js/index.js', './css/index.css'}
|
||||
files { 'index.html', './vid/*.mp4', './vid/*.webm', './js/index.js', './css/index.css' }
|
||||
|
||||
@@ -26,7 +26,7 @@ local function closeMenu(namespace, name)
|
||||
end
|
||||
|
||||
AddEventHandler('onResourceStop', function(resource)
|
||||
if GetCurrentResourceName() == resource and OpenedMenus > 0 then
|
||||
if GetCurrentResourceName() == resource and OpenedMenus > 0 then
|
||||
ESX.UI.Menu.CloseAll()
|
||||
elseif CurrentNameSpace ~= nil and CurrentNameSpace == resource and OpenedMenus > 0 then
|
||||
ESX.UI.Menu.CloseAll()
|
||||
|
||||
@@ -4,12 +4,12 @@ game 'gta5'
|
||||
|
||||
description 'ESX Menu Default'
|
||||
lua54 'yes'
|
||||
version '1.9.4'
|
||||
version '1.9.5'
|
||||
|
||||
client_scripts {'@es_extended/imports.lua', 'client/main.lua'}
|
||||
client_scripts { '@es_extended/imports.lua', 'client/main.lua' }
|
||||
|
||||
ui_page {'html/ui.html'}
|
||||
ui_page { 'html/ui.html' }
|
||||
|
||||
files {'html/ui.html', 'html/css/app.css', 'html/js/mustache.min.js', 'html/js/app.js'}
|
||||
files { 'html/ui.html', 'html/css/app.css', 'html/js/mustache.min.js', 'html/js/app.js' }
|
||||
|
||||
dependencies {'es_extended'}
|
||||
dependencies { 'es_extended' }
|
||||
|
||||
@@ -77,4 +77,4 @@ AddEventHandler('esx_menu_dialog:message:menu_change', function(data)
|
||||
if menu.change ~= nil then
|
||||
menu.change(data, menu)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
@@ -4,7 +4,7 @@ game 'gta5'
|
||||
|
||||
description 'ESX Menu Dialog'
|
||||
lua54 'yes'
|
||||
version '1.9.4'
|
||||
version '1.9.5'
|
||||
|
||||
client_scripts {
|
||||
'@es_extended/imports.lua',
|
||||
|
||||
@@ -3,7 +3,6 @@ CreateThread(function()
|
||||
local OpenedMenus = {}
|
||||
|
||||
local function openMenu(namespace, name, data)
|
||||
|
||||
OpenedMenus[namespace .. '_' .. name] = true
|
||||
|
||||
SendNUIMessage({
|
||||
@@ -13,12 +12,11 @@ CreateThread(function()
|
||||
data = data
|
||||
})
|
||||
SetTimeout(200, function()
|
||||
SetNuiFocus(true, true)
|
||||
end)
|
||||
SetNuiFocus(true, true)
|
||||
end)
|
||||
end
|
||||
|
||||
local function closeMenu(namespace, name)
|
||||
|
||||
OpenedMenus[namespace .. '_' .. name] = nil
|
||||
local OpenedMenuCount = 0
|
||||
|
||||
@@ -37,7 +35,6 @@ CreateThread(function()
|
||||
if OpenedMenuCount == 0 then
|
||||
SetNuiFocus(false)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
ESX.UI.Menu.RegisterType(MenuType, openMenu, closeMenu)
|
||||
@@ -59,5 +56,4 @@ CreateThread(function()
|
||||
|
||||
cb('OK')
|
||||
end)
|
||||
|
||||
end)
|
||||
|
||||
@@ -4,7 +4,7 @@ game 'gta5'
|
||||
|
||||
description 'ESX Menu List'
|
||||
lua54 'yes'
|
||||
version '1.9.4'
|
||||
version '1.9.5'
|
||||
|
||||
client_scripts {
|
||||
'@es_extended/imports.lua',
|
||||
|
||||
@@ -4,11 +4,10 @@ local mp_f_freemode_01 = `mp_f_freemode_01`
|
||||
local SpawnCoords = Config.Spawn[math.random(#Config.Spawn)]
|
||||
|
||||
if ESX.GetConfig().Multichar then
|
||||
|
||||
CreateThread(function()
|
||||
while not ESX.PlayerLoaded do
|
||||
Wait(100)
|
||||
|
||||
|
||||
if NetworkIsPlayerActive(PlayerId()) then
|
||||
exports.spawnmanager:setAutoSpawn(false)
|
||||
DoScreenFadeOut(0)
|
||||
@@ -22,7 +21,7 @@ if ESX.GetConfig().Multichar then
|
||||
end)
|
||||
|
||||
local canRelog, cam, spawned = true, nil, nil
|
||||
local Characters = {}
|
||||
local Characters = {}
|
||||
|
||||
RegisterNetEvent('esx_multicharacter:SetupCharacters')
|
||||
AddEventHandler('esx_multicharacter:SetupCharacters', function()
|
||||
@@ -51,7 +50,7 @@ if ESX.GetConfig().Multichar then
|
||||
hidePlayers = true
|
||||
MumbleSetVolumeOverride(PlayerId(), 0.0)
|
||||
CreateThread(function()
|
||||
local keys = {18, 27, 172, 173, 174, 175, 176, 177, 187, 188, 191, 201, 108, 109}
|
||||
local keys = { 18, 27, 172, 173, 174, 175, 176, 177, 187, 188, 191, 201, 108, 109 }
|
||||
while hidePlayers do
|
||||
DisableAllControlActions(0)
|
||||
for i = 1, #keys do
|
||||
@@ -118,8 +117,7 @@ if ESX.GetConfig().Multichar then
|
||||
end
|
||||
DoScreenFadeIn(600)
|
||||
end)
|
||||
repeat Wait(200) until not IsScreenFadedOut()
|
||||
|
||||
repeat Wait(200) until not IsScreenFadedOut()
|
||||
elseif Characters[index] and Characters[index].skin then
|
||||
if Characters[spawned] and Characters[spawned].model then
|
||||
RequestModel(Characters[index].model)
|
||||
@@ -145,11 +143,11 @@ if ESX.GetConfig().Multichar then
|
||||
|
||||
function CharacterDeleteConfirmation(Characters, slots, SelectedCharacter, value)
|
||||
local elements = {
|
||||
{title = TranslateCap('char_delete_confirmation'), icon = "fa-solid fa-users", description = TranslateCap('char_delete_confirmation_description'), unselectable = true},
|
||||
{title = TranslateCap('char_delete'), icon ="fa-solid fa-xmark", description = TranslateCap('char_delete_yes_description'), action = 'delete', value = value},
|
||||
{title = TranslateCap('return'), unselectable = false, icon = "fa-solid fa-arrow-left", description = TranslateCap('char_delete_no_description'), action = "return"}
|
||||
{ title = TranslateCap('char_delete_confirmation'), icon = "fa-solid fa-users", description = TranslateCap('char_delete_confirmation_description'), unselectable = true },
|
||||
{ title = TranslateCap('char_delete'), icon = "fa-solid fa-xmark", description = TranslateCap('char_delete_yes_description'), action = 'delete', value = value },
|
||||
{ title = TranslateCap('return'), unselectable = false, icon = "fa-solid fa-arrow-left", description = TranslateCap('char_delete_no_description'), action = "return" }
|
||||
}
|
||||
|
||||
|
||||
ESX.OpenContext("left", elements, function(_, Action)
|
||||
if Action.action == "delete" then
|
||||
ESX.CloseContext()
|
||||
@@ -162,14 +160,14 @@ if ESX.GetConfig().Multichar then
|
||||
end
|
||||
|
||||
function CharacterOptions(Characters, slots, SelectedCharacter)
|
||||
local elements = {{title = TranslateCap('character', Characters[SelectedCharacter.value].firstname .. " ".. Characters[SelectedCharacter.value].lastname),icon = "fa-regular fa-user", unselectable = true},
|
||||
{title = TranslateCap('return'), unselectable = false,icon = "fa-solid fa-arrow-left",description = TranslateCap('return_description'), action = "return"}}
|
||||
local elements = { { title = TranslateCap('character', Characters[SelectedCharacter.value].firstname .. " " .. Characters[SelectedCharacter.value].lastname), icon = "fa-regular fa-user", unselectable = true },
|
||||
{ title = TranslateCap('return'), unselectable = false, icon = "fa-solid fa-arrow-left", description = TranslateCap('return_description'), action = "return" } }
|
||||
if not Characters[SelectedCharacter.value].disabled then
|
||||
elements[3] = {title = TranslateCap('char_play'), description = TranslateCap('char_play_description'), icon ="fa-solid fa-play",action = 'play', value = SelectedCharacter.value}
|
||||
elements[3] = { title = TranslateCap('char_play'), description = TranslateCap('char_play_description'), icon = "fa-solid fa-play", action = 'play', value = SelectedCharacter.value }
|
||||
else
|
||||
elements[3] = {title = TranslateCap('char_disabled'), value = SelectedCharacter.value, icon ="fa-solid fa-xmark", description = TranslateCap('char_disabled_description'),}
|
||||
elements[3] = { title = TranslateCap('char_disabled'), value = SelectedCharacter.value, icon = "fa-solid fa-xmark", description = TranslateCap('char_disabled_description'), }
|
||||
end
|
||||
if Config.CanDelete then elements[4] = {title = TranslateCap('char_delete'),icon ="fa-solid fa-xmark",description = TranslateCap('char_delete_description'), action = 'delete', value = SelectedCharacter.value} end
|
||||
if Config.CanDelete then elements[4] = { title = TranslateCap('char_delete'), icon = "fa-solid fa-xmark", description = TranslateCap('char_delete_description'), action = 'delete', value = SelectedCharacter.value } end
|
||||
ESX.OpenContext("left", elements, function(_, Action)
|
||||
if Action.action == "play" then
|
||||
SendNUIMessage({
|
||||
@@ -187,21 +185,21 @@ if ESX.GetConfig().Multichar then
|
||||
|
||||
function SelectCharacterMenu(Characters, slots)
|
||||
local Character = next(Characters)
|
||||
local elements = {{title = TranslateCap('select_char') , icon = "fa-solid fa-users", description = TranslateCap('select_char_description') , unselectable = true}}
|
||||
local elements = { { title = TranslateCap('select_char'), icon = "fa-solid fa-users", description = TranslateCap('select_char_description'), unselectable = true } }
|
||||
for k, v in pairs(Characters) do
|
||||
if not v.model and v.skin then
|
||||
if v.skin.model then v.model = v.skin.model elseif v.skin.sex == 1 then v.model = mp_f_freemode_01 else v.model = mp_m_freemode_01 end
|
||||
end
|
||||
if not spawned then SetupCharacter(Character) end
|
||||
local label = v.firstname..' '..v.lastname
|
||||
local label = v.firstname .. ' ' .. v.lastname
|
||||
if Characters[k].disabled then
|
||||
elements[#elements+1] = {title = label,icon = "fa-regular fa-user", value = v.id}
|
||||
elements[#elements + 1] = { title = label, icon = "fa-regular fa-user", value = v.id }
|
||||
else
|
||||
elements[#elements+1] = {title = label,icon = "fa-regular fa-user", value = v.id}
|
||||
elements[#elements + 1] = { title = label, icon = "fa-regular fa-user", value = v.id }
|
||||
end
|
||||
end
|
||||
if #elements - 1 < slots then
|
||||
elements[#elements+1] = {title = TranslateCap('create_char'), icon = "fa-solid fa-plus", value = (#elements+1), new = true}
|
||||
elements[#elements + 1] = { title = TranslateCap('create_char'), icon = "fa-solid fa-plus", value = (#elements + 1), new = true }
|
||||
end
|
||||
|
||||
ESX.OpenContext("left", elements, function(_, SelectedCharacter)
|
||||
@@ -218,13 +216,13 @@ if ESX.GetConfig().Multichar then
|
||||
TriggerServerEvent('esx_multicharacter:CharacterChosen', slot, true)
|
||||
TriggerEvent('esx_identity:showRegisterIdentity')
|
||||
local playerPed = PlayerPedId()
|
||||
SetPedAoBlobRendering(playerPed, false)
|
||||
SetEntityAlpha(playerPed, 0)
|
||||
SendNUIMessage({
|
||||
action = "closeui"
|
||||
})
|
||||
SetPedAoBlobRendering(playerPed, false)
|
||||
SetEntityAlpha(playerPed, 0)
|
||||
SendNUIMessage({
|
||||
action = "closeui"
|
||||
})
|
||||
else
|
||||
CharacterOptions(Characters,slots, SelectedCharacter)
|
||||
CharacterOptions(Characters, slots, SelectedCharacter)
|
||||
SetupCharacter(SelectedCharacter.value)
|
||||
local playerPed = PlayerPedId()
|
||||
SetPedAoBlobRendering(playerPed, true)
|
||||
@@ -232,6 +230,7 @@ if ESX.GetConfig().Multichar then
|
||||
end
|
||||
end, nil, false)
|
||||
end
|
||||
|
||||
RegisterNetEvent('esx_multicharacter:SetupUI')
|
||||
AddEventHandler('esx_multicharacter:SetupUI', function(data, slots)
|
||||
DoScreenFadeOut(0)
|
||||
@@ -286,7 +285,9 @@ if ESX.GetConfig().Multichar then
|
||||
SetPedAoBlobRendering(playerPed, true)
|
||||
ResetEntityAlpha(playerPed)
|
||||
TriggerEvent('esx_skin:openSaveableMenu', function()
|
||||
finished = true end, function() finished = true
|
||||
finished = true
|
||||
end, function()
|
||||
finished = true
|
||||
end)
|
||||
end)
|
||||
repeat Wait(200) until finished
|
||||
@@ -331,5 +332,4 @@ if ESX.GetConfig().Multichar then
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -2,17 +2,17 @@ fx_version 'cerulean'
|
||||
game 'gta5'
|
||||
author 'ESX-Framework - Linden - KASH'
|
||||
description 'Official Multicharacter System For ESX Legacy'
|
||||
version '1.9.4'
|
||||
version '1.9.5'
|
||||
lua54 'yes'
|
||||
|
||||
dependencies {'es_extended', 'esx_context', 'esx_identity', 'esx_skin'}
|
||||
dependencies { 'es_extended', 'esx_context', 'esx_identity', 'esx_skin' }
|
||||
|
||||
shared_scripts {'@es_extended/imports.lua', '@es_extended/locale.lua', 'locales/*.lua', 'config.lua'}
|
||||
shared_scripts { '@es_extended/imports.lua', '@es_extended/locale.lua', 'locales/*.lua', 'config.lua' }
|
||||
|
||||
server_scripts {'@oxmysql/lib/MySQL.lua', 'server/*.lua'}
|
||||
server_scripts { '@oxmysql/lib/MySQL.lua', 'server/*.lua' }
|
||||
|
||||
client_scripts {'client/*.lua'}
|
||||
client_scripts { 'client/*.lua' }
|
||||
|
||||
ui_page {'html/ui.html'}
|
||||
ui_page { 'html/ui.html' }
|
||||
|
||||
files {'html/ui.html', 'html/css/main.css', 'html/js/app.js', 'html/locales/*.js'}
|
||||
files { 'html/ui.html', 'html/css/main.css', 'html/js/app.js', 'html/locales/*.js' }
|
||||
|
||||
@@ -10,11 +10,11 @@ Locales["sl"] = {
|
||||
["char_disabled_description"] = "Ta znak je neuporaben.",
|
||||
["char_delete"] = "Izbriši",
|
||||
["char_delete_description"] = "Trajno odstrani ta znak.",
|
||||
["char_delete_confirmation"] = "Potrditev brisanja",
|
||||
["char_delete_confirmation_description"] = "Ali ste prepicani da hocete zbrisati svoj karakter*",
|
||||
["char_delete_yes_description"] = "Da",
|
||||
["char_delete_no_description"] = "Ne",
|
||||
["character"] = "Znak: %s",
|
||||
["char_delete_confirmation"] = "Potrditev brisanja",
|
||||
["char_delete_confirmation_description"] = "Ali ste prepicani da hocete zbrisati svoj karakter*",
|
||||
["char_delete_yes_description"] = "Da",
|
||||
["char_delete_no_description"] = "Ne",
|
||||
["character"] = "Znak: %s",
|
||||
["return"] = "Vrni se",
|
||||
["return_description"] = "Nazaj na izbiro znakov.",
|
||||
["command_setslots"] = "Nastavi število večznakovnih mest za igralca",
|
||||
@@ -30,4 +30,4 @@ Locales["sl"] = {
|
||||
["charenabled"] = "Omogočili ste znak #%s od %s",
|
||||
["chardisabled"] = "Onemogočili ste znak #%s od %s",
|
||||
["charnotfound"] = "Znak #%s od %s ne obstaja",
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,4 +30,4 @@ Locales["sr"] = {
|
||||
["charenabled"] = "Dozvolili ste karakter #%s od %s",
|
||||
["chardisabled"] = "Zabranili ste karakter #%s od %s",
|
||||
["charnotfound"] = "Karakter #%s od %s ne postoji",
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ESX.RegisterCommand('setslots', 'admin', function(xPlayer, args)
|
||||
MySQL.insert('INSERT INTO `multicharacter_slots` (`identifier`, `slots`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `slots` = VALUES(`slots`)', {
|
||||
args.identifier,
|
||||
args.slots,
|
||||
})
|
||||
xPlayer.triggerEvent('esx:showNotification', TranslateCap('slotsadd', args.slots, args.identifier))
|
||||
end, true, {help = TranslateCap('command_setslots'), validate = true, arguments = {
|
||||
{name = 'identifier', help = TranslateCap('command_identifier'), type = 'string'},
|
||||
{name = 'slots', help = TranslateCap('command_slots'), type = 'number'}
|
||||
}})
|
||||
MySQL.insert('INSERT INTO `multicharacter_slots` (`identifier`, `slots`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `slots` = VALUES(`slots`)', {
|
||||
args.identifier,
|
||||
args.slots,
|
||||
})
|
||||
xPlayer.triggerEvent('esx:showNotification', TranslateCap('slotsadd', args.slots, args.identifier))
|
||||
end, true, {
|
||||
help = TranslateCap('command_setslots'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'identifier', help = TranslateCap('command_identifier'), type = 'string' },
|
||||
{ name = 'slots', help = TranslateCap('command_slots'), type = 'number' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand('remslots', 'admin', function(xPlayer, args)
|
||||
local slots = MySQL.scalar.await('SELECT `slots` FROM `multicharacter_slots` WHERE identifier = ?', {
|
||||
@@ -20,14 +24,17 @@ ESX.RegisterCommand('remslots', 'admin', function(xPlayer, args)
|
||||
})
|
||||
xPlayer.triggerEvent('esx:showNotification', TranslateCap('slotsrem', args.identifier))
|
||||
end
|
||||
end, true, {help = TranslateCap('command_remslots'), validate = true, arguments = {
|
||||
{name = 'identifier', help = TranslateCap('command_identifier'), type = 'string'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_remslots'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'identifier', help = TranslateCap('command_identifier'), type = 'string' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand('enablechar', 'admin', function(xPlayer, args)
|
||||
local selectedCharacter = 'char' .. args.charslot .. ':' .. args.identifier;
|
||||
|
||||
local selectedCharacter = 'char'..args.charslot..':'..args.identifier;
|
||||
|
||||
MySQL.update('UPDATE `users` SET `disabled` = 0 WHERE identifier = ?', {
|
||||
selectedCharacter
|
||||
}, function(result)
|
||||
@@ -37,16 +44,18 @@ ESX.RegisterCommand('enablechar', 'admin', function(xPlayer, args)
|
||||
xPlayer.triggerEvent('esx:showNotification', TranslateCap('charnotfound', args.charslot, args.identifier))
|
||||
end
|
||||
end)
|
||||
|
||||
end, true, {help = TranslateCap('command_enablechar'), validate = true, arguments = {
|
||||
{name = 'identifier', help = TranslateCap('command_identifier'), type = 'string'},
|
||||
{name = 'charslot', help = TranslateCap('command_charslot'), type = 'number'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_enablechar'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'identifier', help = TranslateCap('command_identifier'), type = 'string' },
|
||||
{ name = 'charslot', help = TranslateCap('command_charslot'), type = 'number' }
|
||||
}
|
||||
})
|
||||
|
||||
ESX.RegisterCommand('disablechar', 'admin', function(xPlayer, args)
|
||||
local selectedCharacter = 'char' .. args.charslot .. ':' .. args.identifier;
|
||||
|
||||
local selectedCharacter = 'char'..args.charslot..':'..args.identifier;
|
||||
|
||||
MySQL.update('UPDATE `users` SET `disabled` = 1 WHERE identifier = ?', {
|
||||
selectedCharacter
|
||||
}, function(result)
|
||||
@@ -56,12 +65,15 @@ ESX.RegisterCommand('disablechar', 'admin', function(xPlayer, args)
|
||||
xPlayer.triggerEvent('esx:showNotification', TranslateCap('charnotfound', args.charslot, args.identifier))
|
||||
end
|
||||
end)
|
||||
|
||||
end, true, {help = TranslateCap('command_disablechar'), validate = true, arguments = {
|
||||
{name = 'identifier', help = TranslateCap('command_identifier'), type = 'string'},
|
||||
{name = 'charslot', help = TranslateCap('command_charslot'), type = 'number'}
|
||||
}})
|
||||
end, true, {
|
||||
help = TranslateCap('command_disablechar'),
|
||||
validate = true,
|
||||
arguments = {
|
||||
{ name = 'identifier', help = TranslateCap('command_identifier'), type = 'string' },
|
||||
{ name = 'charslot', help = TranslateCap('command_charslot'), type = 'number' }
|
||||
}
|
||||
})
|
||||
|
||||
RegisterCommand('forcelog', function(source)
|
||||
TriggerEvent('esx:playerLogout', source)
|
||||
end, true)
|
||||
end, true)
|
||||
|
||||
@@ -4,11 +4,10 @@ local Debug = ESX.GetConfig().EnableDebug
|
||||
---@param length number the length of the notification
|
||||
---@param message any the message :D
|
||||
local function Notify(notificatonType, length, message)
|
||||
|
||||
if Debug then
|
||||
print("1 ".. tostring(notificatonType))
|
||||
print("2 "..tostring(length))
|
||||
print("3 "..message)
|
||||
print("1 " .. tostring(notificatonType))
|
||||
print("2 " .. tostring(length))
|
||||
print("3 " .. message)
|
||||
end
|
||||
|
||||
if type(notificatonType) ~= "string" then
|
||||
@@ -20,9 +19,9 @@ local function Notify(notificatonType, length, message)
|
||||
end
|
||||
|
||||
if Debug then
|
||||
print("4 ".. tostring(notificatonType))
|
||||
print("5 "..tostring(length))
|
||||
print("6 "..message)
|
||||
print("4 " .. tostring(notificatonType))
|
||||
print("5 " .. tostring(length))
|
||||
print("6 " .. message)
|
||||
end
|
||||
|
||||
SendNuiMessage(json.encode({
|
||||
@@ -56,4 +55,4 @@ if Debug then
|
||||
RegisterCommand("notify3", function()
|
||||
ESX.ShowNotification("You Did something ~r~WRONG~s~!", "error", 3000)
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
fx_version 'adamant'
|
||||
lua54 'yes'
|
||||
game 'gta5'
|
||||
version '1.9.4'
|
||||
version '1.9.5'
|
||||
author 'ESX-Framework'
|
||||
description 'Official NUI Notification system for ESX'
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local CurrentProgress = nil
|
||||
|
||||
local function Progressbar(message,length,Options)
|
||||
local function Progressbar(message, length, Options)
|
||||
if CurrentProgress then
|
||||
return false
|
||||
end
|
||||
@@ -8,7 +8,7 @@ local function Progressbar(message,length,Options)
|
||||
if CurrentProgress.animation then
|
||||
if CurrentProgress.animation.type == "anim" then
|
||||
ESX.Streaming.RequestAnimDict(CurrentProgress.animation.dict, function()
|
||||
TaskPlayAnim(ESX.PlayerData.ped, CurrentProgress.animation.dict, CurrentProgress.animation.lib, 1.0, 1.0, length, 1, 1.0, false,false,false)
|
||||
TaskPlayAnim(ESX.PlayerData.ped, CurrentProgress.animation.dict, CurrentProgress.animation.lib, 1.0, 1.0, length, 1, 1.0, false, false, false)
|
||||
RemoveAnimDict(CurrentProgress.animation.dict)
|
||||
end)
|
||||
elseif CurrentProgress.animation.type == "Scenario" then
|
||||
|
||||
@@ -2,7 +2,7 @@ fx_version 'adamant'
|
||||
game 'gta5'
|
||||
author 'ESX-Framework'
|
||||
lua54 'yes'
|
||||
version '1.9.4'
|
||||
version '1.9.5'
|
||||
description 'ESX Progressbar'
|
||||
|
||||
client_scripts { 'Progress.lua' }
|
||||
|
||||
@@ -23,7 +23,7 @@ function OpenMenu(submitCb, cancelCb, restrict)
|
||||
for i = 1, #components, 1 do
|
||||
local found = false
|
||||
|
||||
for j=1, #restrict, 1 do
|
||||
for j = 1, #restrict, 1 do
|
||||
if components[i].name == restrict[j] then
|
||||
found = true
|
||||
end
|
||||
@@ -49,7 +49,7 @@ function OpenMenu(submitCb, cancelCb, restrict)
|
||||
value = value,
|
||||
min = _components[i].min,
|
||||
textureof = _components[i].textureof,
|
||||
zoomOffset= _components[i].zoomOffset,
|
||||
zoomOffset = _components[i].zoomOffset,
|
||||
camOffset = _components[i].camOffset,
|
||||
type = 'slider'
|
||||
}
|
||||
@@ -112,7 +112,7 @@ function OpenMenu(submitCb, cancelCb, restrict)
|
||||
newData.value = 0
|
||||
end
|
||||
|
||||
menu.update({name = elements[i].name}, newData)
|
||||
menu.update({ name = elements[i].name }, newData)
|
||||
end
|
||||
|
||||
menu.refresh()
|
||||
@@ -161,16 +161,16 @@ CreateThread(function()
|
||||
DisableControlAction(0, 25, true) -- Input Aim
|
||||
DisableControlAction(0, 24, true) -- Input Attack
|
||||
|
||||
local playerPed = PlayerPedId()
|
||||
local coords = GetEntityCoords(playerPed)
|
||||
local playerPed = PlayerPedId()
|
||||
local coords = GetEntityCoords(playerPed)
|
||||
|
||||
local angle = heading * math.pi / 180.0
|
||||
local theta = {
|
||||
local angle = heading * math.pi / 180.0
|
||||
local theta = {
|
||||
x = math.cos(angle),
|
||||
y = math.sin(angle)
|
||||
}
|
||||
|
||||
local pos = {
|
||||
local pos = {
|
||||
x = coords.x + (zoomOffset * theta.x),
|
||||
y = coords.y + (zoomOffset * theta.y)
|
||||
}
|
||||
@@ -224,7 +224,7 @@ CreateThread(function()
|
||||
|
||||
heading = angle + 0.0
|
||||
end
|
||||
Wait(sleep)
|
||||
Wait(sleep)
|
||||
end
|
||||
end)
|
||||
|
||||
@@ -242,7 +242,6 @@ function OpenSaveableMenu(submitCb, cancelCb, restrict)
|
||||
submitCb(data, menu)
|
||||
end
|
||||
end)
|
||||
|
||||
end, cancelCb, restrict)
|
||||
end
|
||||
|
||||
@@ -260,7 +259,7 @@ AddEventHandler('esx_skin:playerRegistered', function()
|
||||
if firstSpawn then
|
||||
ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin)
|
||||
if skin == nil then
|
||||
TriggerEvent('skinchanger:loadSkin', {sex = 0}, OpenSaveableMenu)
|
||||
TriggerEvent('skinchanger:loadSkin', { sex = 0 }, OpenSaveableMenu)
|
||||
Wait(100)
|
||||
else
|
||||
TriggerEvent('skinchanger:loadSkin', skin)
|
||||
|
||||
@@ -4,7 +4,7 @@ game 'gta5'
|
||||
|
||||
description 'ESX Skin'
|
||||
|
||||
version '1.9.4'
|
||||
version '1.9.5'
|
||||
lua54 'yes'
|
||||
shared_script '@es_extended/imports.lua'
|
||||
|
||||
|
||||
@@ -3,4 +3,4 @@ Locales["da"] = {
|
||||
["use_rotate_view"] = "brug ~INPUT_FRONTEND_LS~ og ~INPUT_CHARACTER_WHEEL~ for at dreje kameraet.",
|
||||
["skin"] = "skift udseende",
|
||||
["saveskin"] = "gem udseende til en fil",
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Locales["pt"] = {
|
||||
["skin_menu"] = "Menu de Skin",
|
||||
["use_rotate_view"] = "Usa ~INPUT_FRONTEND_LS~ e ~INPUT_CHARACTER_WHEEL~ para rodar a câmara.",
|
||||
["skin"] = "alterar skin",
|
||||
["saveskin"] = "salvar a skin num ficheiro",
|
||||
}
|
||||
["skin_menu"] = "Menu de Skin",
|
||||
["use_rotate_view"] = "Usa ~INPUT_FRONTEND_LS~ e ~INPUT_CHARACTER_WHEEL~ para rodar a câmara.",
|
||||
["skin"] = "alterar skin",
|
||||
["saveskin"] = "salvar a skin num ficheiro",
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Locales["zh-cn"] = {
|
||||
["skin_menu"] = "皮肤选单",
|
||||
["use_rotate_view"] = "使用 ~INPUT_FRONTEND_LS~ 和 ~INPUT_CHARACTER_WHEEL~ 旋转镜头视角.",
|
||||
["skin"] = "更换皮肤数据",
|
||||
["saveskin"] = "保存皮肤数据",
|
||||
}
|
||||
["skin_menu"] = "皮肤选单",
|
||||
["use_rotate_view"] = "使用 ~INPUT_FRONTEND_LS~ 和 ~INPUT_CHARACTER_WHEEL~ 旋转镜头视角.",
|
||||
["skin"] = "更换皮肤数据",
|
||||
["saveskin"] = "保存皮肤数据",
|
||||
}
|
||||
|
||||
@@ -21,18 +21,18 @@ end)
|
||||
|
||||
RegisterServerEvent('esx_skin:setWeight')
|
||||
AddEventHandler('esx_skin:setWeight', function(skin)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
|
||||
if not ESX.GetConfig().OxInventory then
|
||||
local defaultMaxWeight = ESX.GetConfig().MaxWeight
|
||||
local backpackModifier = Config.BackpackWeight[skin.bags_1]
|
||||
if not ESX.GetConfig().OxInventory then
|
||||
local defaultMaxWeight = ESX.GetConfig().MaxWeight
|
||||
local backpackModifier = Config.BackpackWeight[skin.bags_1]
|
||||
|
||||
if backpackModifier then
|
||||
xPlayer.setMaxWeight(defaultMaxWeight + backpackModifier)
|
||||
else
|
||||
xPlayer.setMaxWeight(defaultMaxWeight)
|
||||
end
|
||||
end
|
||||
if backpackModifier then
|
||||
xPlayer.setMaxWeight(defaultMaxWeight + backpackModifier)
|
||||
else
|
||||
xPlayer.setMaxWeight(defaultMaxWeight)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterServerEvent('esx_skin:responseSaveSkin')
|
||||
@@ -73,8 +73,8 @@ end)
|
||||
|
||||
ESX.RegisterCommand('skin', 'admin', function(xPlayer)
|
||||
xPlayer.triggerEvent('esx_skin:openSaveableMenu')
|
||||
end, false, {help = TranslateCap('skin')})
|
||||
end, false, { help = TranslateCap('skin') })
|
||||
|
||||
ESX.RegisterCommand('skinsave', 'admin', function(xPlayer)
|
||||
xPlayer.triggerEvent('esx_skin:requestSaveSkin')
|
||||
end, false, {help = TranslateCap('saveskin')})
|
||||
end, false, { help = TranslateCap('saveskin') })
|
||||
|
||||
@@ -12,8 +12,8 @@ local function TextUI(message, typ)
|
||||
end
|
||||
|
||||
local function HideUI()
|
||||
if not isShowing then return end
|
||||
isShowing = false
|
||||
if not isShowing then return end
|
||||
isShowing = false
|
||||
SendNUIMessage({
|
||||
action = 'hide'
|
||||
})
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
fx_version 'adamant'
|
||||
game 'gta5'
|
||||
author 'ESX-Framework'
|
||||
version '1.9.4'
|
||||
version '1.9.5'
|
||||
description 'ESX TextUI'
|
||||
lua54 'yes'
|
||||
client_scripts { 'TextUI.lua' }
|
||||
|
||||
@@ -178,47 +178,47 @@ function ApplySkin(skin, clothes)
|
||||
SetPedHeadBlendData(playerPed, Character['mom'], Character['dad'], 0, Character['mom'], Character['dad'], 0,
|
||||
face_weight, skin_weight, 0.0, false)
|
||||
|
||||
SetPedFaceFeature(playerPed, 0, (Character['nose_1'] / 10) + 0.0) -- Nose Width
|
||||
SetPedFaceFeature(playerPed, 1, (Character['nose_2'] / 10) + 0.0) -- Nose Peak Height
|
||||
SetPedFaceFeature(playerPed, 2, (Character['nose_3'] / 10) + 0.0) -- Nose Peak Length
|
||||
SetPedFaceFeature(playerPed, 3, (Character['nose_4'] / 10) + 0.0) -- Nose Bone Height
|
||||
SetPedFaceFeature(playerPed, 4, (Character['nose_5'] / 10) + 0.0) -- Nose Peak Lowering
|
||||
SetPedFaceFeature(playerPed, 5, (Character['nose_6'] / 10) + 0.0) -- Nose Bone Twist
|
||||
SetPedFaceFeature(playerPed, 6, (Character['eyebrows_5'] / 10) + 0.0) -- Eyebrow height
|
||||
SetPedFaceFeature(playerPed, 7, (Character['eyebrows_6'] / 10) + 0.0) -- Eyebrow depth
|
||||
SetPedFaceFeature(playerPed, 8, (Character['cheeks_1'] / 10) + 0.0) -- Cheekbones Height
|
||||
SetPedFaceFeature(playerPed, 9, (Character['cheeks_2'] / 10) + 0.0) -- Cheekbones Width
|
||||
SetPedFaceFeature(playerPed, 10, (Character['cheeks_3'] / 10) + 0.0) -- Cheeks Width
|
||||
SetPedFaceFeature(playerPed, 11, (Character['eye_squint'] / 10) + 0.0) -- Eyes squint
|
||||
SetPedFaceFeature(playerPed, 12, (Character['lip_thickness'] / 10) + 0.0) -- Lip Fullness
|
||||
SetPedFaceFeature(playerPed, 13, (Character['jaw_1'] / 10) + 0.0) -- Jaw Bone Width
|
||||
SetPedFaceFeature(playerPed, 14, (Character['jaw_2'] / 10) + 0.0) -- Jaw Bone Length
|
||||
SetPedFaceFeature(playerPed, 15, (Character['chin_1'] / 10) + 0.0) -- Chin Height
|
||||
SetPedFaceFeature(playerPed, 16, (Character['chin_2'] / 10) + 0.0) -- Chin Length
|
||||
SetPedFaceFeature(playerPed, 17, (Character['chin_3'] / 10) + 0.0) -- Chin Width
|
||||
SetPedFaceFeature(playerPed, 18, (Character['chin_4'] / 10) + 0.0) -- Chin Hole Size
|
||||
SetPedFaceFeature(playerPed, 19, (Character['neck_thickness'] / 10) + 0.0) -- Neck Thickness
|
||||
SetPedFaceFeature(playerPed, 0, (Character['nose_1'] / 10) + 0.0) -- Nose Width
|
||||
SetPedFaceFeature(playerPed, 1, (Character['nose_2'] / 10) + 0.0) -- Nose Peak Height
|
||||
SetPedFaceFeature(playerPed, 2, (Character['nose_3'] / 10) + 0.0) -- Nose Peak Length
|
||||
SetPedFaceFeature(playerPed, 3, (Character['nose_4'] / 10) + 0.0) -- Nose Bone Height
|
||||
SetPedFaceFeature(playerPed, 4, (Character['nose_5'] / 10) + 0.0) -- Nose Peak Lowering
|
||||
SetPedFaceFeature(playerPed, 5, (Character['nose_6'] / 10) + 0.0) -- Nose Bone Twist
|
||||
SetPedFaceFeature(playerPed, 6, (Character['eyebrows_5'] / 10) + 0.0) -- Eyebrow height
|
||||
SetPedFaceFeature(playerPed, 7, (Character['eyebrows_6'] / 10) + 0.0) -- Eyebrow depth
|
||||
SetPedFaceFeature(playerPed, 8, (Character['cheeks_1'] / 10) + 0.0) -- Cheekbones Height
|
||||
SetPedFaceFeature(playerPed, 9, (Character['cheeks_2'] / 10) + 0.0) -- Cheekbones Width
|
||||
SetPedFaceFeature(playerPed, 10, (Character['cheeks_3'] / 10) + 0.0) -- Cheeks Width
|
||||
SetPedFaceFeature(playerPed, 11, (Character['eye_squint'] / 10) + 0.0) -- Eyes squint
|
||||
SetPedFaceFeature(playerPed, 12, (Character['lip_thickness'] / 10) + 0.0) -- Lip Fullness
|
||||
SetPedFaceFeature(playerPed, 13, (Character['jaw_1'] / 10) + 0.0) -- Jaw Bone Width
|
||||
SetPedFaceFeature(playerPed, 14, (Character['jaw_2'] / 10) + 0.0) -- Jaw Bone Length
|
||||
SetPedFaceFeature(playerPed, 15, (Character['chin_1'] / 10) + 0.0) -- Chin Height
|
||||
SetPedFaceFeature(playerPed, 16, (Character['chin_2'] / 10) + 0.0) -- Chin Length
|
||||
SetPedFaceFeature(playerPed, 17, (Character['chin_3'] / 10) + 0.0) -- Chin Width
|
||||
SetPedFaceFeature(playerPed, 18, (Character['chin_4'] / 10) + 0.0) -- Chin Hole Size
|
||||
SetPedFaceFeature(playerPed, 19, (Character['neck_thickness'] / 10) + 0.0) -- Neck Thickness
|
||||
|
||||
SetPedHairColor(playerPed, Character['hair_color_1'], Character['hair_color_2']) -- Hair Color
|
||||
SetPedHeadOverlay(playerPed, 3, Character['age_1'], (Character['age_2'] / 10) + 0.0) -- Age + opacity
|
||||
SetPedHeadOverlay(playerPed, 0, Character['blemishes_1'], (Character['blemishes_2'] / 10) + 0.0) -- Blemishes + opacity
|
||||
SetPedHeadOverlay(playerPed, 1, Character['beard_1'], (Character['beard_2'] / 10) + 0.0) -- Beard + opacity
|
||||
SetPedEyeColor(playerPed, Character['eye_color']) -- Eyes color
|
||||
SetPedHeadOverlay(playerPed, 2, Character['eyebrows_1'], (Character['eyebrows_2'] / 10) + 0.0) -- Eyebrows + opacity
|
||||
SetPedHeadOverlay(playerPed, 4, Character['makeup_1'], (Character['makeup_2'] / 10) + 0.0) -- Makeup + opacity
|
||||
SetPedHeadOverlay(playerPed, 8, Character['lipstick_1'], (Character['lipstick_2'] / 10) + 0.0) -- Lipstick + opacity
|
||||
SetPedComponentVariation(playerPed, 2, Character['hair_1'], Character['hair_2'], 2) -- Hair
|
||||
SetPedHeadOverlayColor(playerPed, 1, 1, Character['beard_3'], Character['beard_4']) -- Beard Color
|
||||
SetPedHeadOverlayColor(playerPed, 2, 1, Character['eyebrows_3'], Character['eyebrows_4']) -- Eyebrows Color
|
||||
SetPedHeadOverlayColor(playerPed, 4, 2, Character['makeup_3'], Character['makeup_4']) -- Makeup Color
|
||||
SetPedHeadOverlayColor(playerPed, 8, 1, Character['lipstick_3'], Character['lipstick_4']) -- Lipstick Color
|
||||
SetPedHeadOverlay(playerPed, 5, Character['blush_1'], (Character['blush_2'] / 10) + 0.0) -- Blush + opacity
|
||||
SetPedHeadOverlayColor(playerPed, 5, 2, Character['blush_3']) -- Blush Color
|
||||
SetPedHairColor(playerPed, Character['hair_color_1'], Character['hair_color_2']) -- Hair Color
|
||||
SetPedHeadOverlay(playerPed, 3, Character['age_1'], (Character['age_2'] / 10) + 0.0) -- Age + opacity
|
||||
SetPedHeadOverlay(playerPed, 0, Character['blemishes_1'], (Character['blemishes_2'] / 10) + 0.0) -- Blemishes + opacity
|
||||
SetPedHeadOverlay(playerPed, 1, Character['beard_1'], (Character['beard_2'] / 10) + 0.0) -- Beard + opacity
|
||||
SetPedEyeColor(playerPed, Character['eye_color']) -- Eyes color
|
||||
SetPedHeadOverlay(playerPed, 2, Character['eyebrows_1'], (Character['eyebrows_2'] / 10) + 0.0) -- Eyebrows + opacity
|
||||
SetPedHeadOverlay(playerPed, 4, Character['makeup_1'], (Character['makeup_2'] / 10) + 0.0) -- Makeup + opacity
|
||||
SetPedHeadOverlay(playerPed, 8, Character['lipstick_1'], (Character['lipstick_2'] / 10) + 0.0) -- Lipstick + opacity
|
||||
SetPedComponentVariation(playerPed, 2, Character['hair_1'], Character['hair_2'], 2) -- Hair
|
||||
SetPedHeadOverlayColor(playerPed, 1, 1, Character['beard_3'], Character['beard_4']) -- Beard Color
|
||||
SetPedHeadOverlayColor(playerPed, 2, 1, Character['eyebrows_3'], Character['eyebrows_4']) -- Eyebrows Color
|
||||
SetPedHeadOverlayColor(playerPed, 4, 2, Character['makeup_3'], Character['makeup_4']) -- Makeup Color
|
||||
SetPedHeadOverlayColor(playerPed, 8, 1, Character['lipstick_3'], Character['lipstick_4']) -- Lipstick Color
|
||||
SetPedHeadOverlay(playerPed, 5, Character['blush_1'], (Character['blush_2'] / 10) + 0.0) -- Blush + opacity
|
||||
SetPedHeadOverlayColor(playerPed, 5, 2, Character['blush_3']) -- Blush Color
|
||||
SetPedHeadOverlay(playerPed, 6, Character['complexion_1'], (Character['complexion_2'] / 10) + 0.0) -- Complexion + opacity
|
||||
SetPedHeadOverlay(playerPed, 7, Character['sun_1'], (Character['sun_2'] / 10) + 0.0) -- Sun Damage + opacity
|
||||
SetPedHeadOverlay(playerPed, 9, Character['moles_1'], (Character['moles_2'] / 10) + 0.0) -- Moles/Freckles + opacity
|
||||
SetPedHeadOverlay(playerPed, 10, Character['chest_1'], (Character['chest_2'] / 10) + 0.0) -- Chest Hair + opacity
|
||||
SetPedHeadOverlayColor(playerPed, 10, 1, Character['chest_3']) -- Torso Color
|
||||
SetPedHeadOverlay(playerPed, 7, Character['sun_1'], (Character['sun_2'] / 10) + 0.0) -- Sun Damage + opacity
|
||||
SetPedHeadOverlay(playerPed, 9, Character['moles_1'], (Character['moles_2'] / 10) + 0.0) -- Moles/Freckles + opacity
|
||||
SetPedHeadOverlay(playerPed, 10, Character['chest_1'], (Character['chest_2'] / 10) + 0.0) -- Chest Hair + opacity
|
||||
SetPedHeadOverlayColor(playerPed, 10, 1, Character['chest_3']) -- Torso Color
|
||||
|
||||
if Character['bodyb_1'] == -1 then
|
||||
SetPedHeadOverlay(playerPed, 11, 255, (Character['bodyb_2'] / 10) + 0.0) -- Body Blemishes + opacity
|
||||
@@ -238,16 +238,16 @@ function ApplySkin(skin, clothes)
|
||||
SetPedPropIndex(playerPed, 2, Character['ears_1'], Character['ears_2'], 2) -- Ears Accessories
|
||||
end
|
||||
|
||||
SetPedComponentVariation(playerPed, 8, Character['tshirt_1'], Character['tshirt_2'], 2) -- Tshirt
|
||||
SetPedComponentVariation(playerPed, 11, Character['torso_1'], Character['torso_2'], 2) -- torso parts
|
||||
SetPedComponentVariation(playerPed, 3, Character['arms'], Character['arms_2'], 2) -- Arms
|
||||
SetPedComponentVariation(playerPed, 8, Character['tshirt_1'], Character['tshirt_2'], 2) -- Tshirt
|
||||
SetPedComponentVariation(playerPed, 11, Character['torso_1'], Character['torso_2'], 2) -- torso parts
|
||||
SetPedComponentVariation(playerPed, 3, Character['arms'], Character['arms_2'], 2) -- Arms
|
||||
SetPedComponentVariation(playerPed, 10, Character['decals_1'], Character['decals_2'], 2) -- decals
|
||||
SetPedComponentVariation(playerPed, 4, Character['pants_1'], Character['pants_2'], 2) -- pants
|
||||
SetPedComponentVariation(playerPed, 6, Character['shoes_1'], Character['shoes_2'], 2) -- shoes
|
||||
SetPedComponentVariation(playerPed, 1, Character['mask_1'], Character['mask_2'], 2) -- mask
|
||||
SetPedComponentVariation(playerPed, 9, Character['bproof_1'], Character['bproof_2'], 2) -- bulletproof
|
||||
SetPedComponentVariation(playerPed, 7, Character['chain_1'], Character['chain_2'], 2) -- chain
|
||||
SetPedComponentVariation(playerPed, 5, Character['bags_1'], Character['bags_2'], 2) -- Bag
|
||||
SetPedComponentVariation(playerPed, 4, Character['pants_1'], Character['pants_2'], 2) -- pants
|
||||
SetPedComponentVariation(playerPed, 6, Character['shoes_1'], Character['shoes_2'], 2) -- shoes
|
||||
SetPedComponentVariation(playerPed, 1, Character['mask_1'], Character['mask_2'], 2) -- mask
|
||||
SetPedComponentVariation(playerPed, 9, Character['bproof_1'], Character['bproof_2'], 2) -- bulletproof
|
||||
SetPedComponentVariation(playerPed, 7, Character['chain_1'], Character['chain_2'], 2) -- chain
|
||||
SetPedComponentVariation(playerPed, 5, Character['bags_1'], Character['bags_2'], 2) -- Bag
|
||||
|
||||
if Character['helmet_1'] == -1 then
|
||||
ClearPedProp(playerPed, 0)
|
||||
|
||||
@@ -2,7 +2,7 @@ Config = {}
|
||||
|
||||
Config.Locale = GetConvar('esx:locale', 'en')
|
||||
|
||||
Config.Components = {{
|
||||
Config.Components = { {
|
||||
label = TranslateCap('sex'),
|
||||
name = 'sex',
|
||||
value = 0,
|
||||
@@ -702,4 +702,4 @@ Config.Components = {{
|
||||
min = 0,
|
||||
zoomOffset = 0.4,
|
||||
camOffset = 0.65
|
||||
}}
|
||||
} }
|
||||
|
||||
@@ -6,7 +6,7 @@ lua54 'yes'
|
||||
|
||||
description 'Official ESX-Legacy resource for handling the Player`s Skin'
|
||||
|
||||
version '1.9.4'
|
||||
version '1.9.5'
|
||||
|
||||
client_scripts {
|
||||
'@es_extended/locale.lua',
|
||||
|
||||
@@ -97,4 +97,4 @@ Locales["da"] = {
|
||||
["bodyb_size"] = "krops pletter tykkelse",
|
||||
["bodyb_extra"] = "pletter kropseffekt",
|
||||
["bodyb_extra_thickness"] = "pletter kropseffekt tykkelse",
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ Locales["fi"] = {
|
||||
["bag"] = "Reput",
|
||||
["bag_color"] = "Repun väri",
|
||||
["blemishes"] = "Pisamat",
|
||||
["blemishes_size"]= "Pisamien vahvuus",
|
||||
["blemishes_size"] = "Pisamien vahvuus",
|
||||
["ageing"] = "Ikääntyminen",
|
||||
["ageing_1"] = "Ikääntyminen vahvuus",
|
||||
["blush"] = "Punastuminen",
|
||||
|
||||
@@ -1,100 +1,100 @@
|
||||
Locales["nl"] = {
|
||||
["sex"] = "geslacht",
|
||||
["mom"] = "gezicht moeder",
|
||||
["dad"] = "gezicht vader",
|
||||
["resemblance"] = "gelijkenis",
|
||||
["skin_tone"] = "huidskleur",
|
||||
["nose_1"] = "neusbreedte",
|
||||
["nose_2"] = "neuspiek hoogte",
|
||||
["nose_3"] = "neuspiek lengte",
|
||||
["nose_4"] = "neusbeen hoogte",
|
||||
["nose_5"] = "neusbeen verlaging",
|
||||
["nose_6"] = "neusbeen verdraaiing",
|
||||
["cheeks_1"] = "jukbeenderen hoogte",
|
||||
["cheeks_2"] = "jukbeenderen breedte",
|
||||
["cheeks_3"] = "wangen breedte",
|
||||
["lip_fullness"] = "lipvolheid",
|
||||
["jaw_bone_width"] = "kaakbeen breedte",
|
||||
["jaw_bone_length"] = "kaakbeen lengte",
|
||||
["chin_height"] = "kin hoogte",
|
||||
["chin_length"] = "kin lengte",
|
||||
["chin_width"] = "kin breedte",
|
||||
["chin_hole"] = "grootte van het kin-gat",
|
||||
["neck_thickness"] = "nek dikte",
|
||||
["wrinkles"] = "rimpels",
|
||||
["wrinkle_thickness"] = "rimpels dikte",
|
||||
["beard_type"] = "baard type",
|
||||
["beard_size"] = "baard grootte",
|
||||
["beard_color_1"] = "baard kleur 1",
|
||||
["beard_color_2"] = "baard kleur 2",
|
||||
["hair_1"] = "haar 1",
|
||||
["hair_2"] = "haar 2",
|
||||
["hair_color_1"] = "haar kleur 1",
|
||||
["hair_color_2"] = "haar kleur 2",
|
||||
["eye_color"] = "oogkleur",
|
||||
["eye_squint"] = "oog scheelte",
|
||||
["eyebrow_type"] = "wenkbrauw type",
|
||||
["eyebrow_size"] = "wenkbrauw formaat",
|
||||
["eyebrow_color_1"] = "wenkbrauw kleur 1",
|
||||
["eyebrow_color_2"] = "wenkbrauw kleur 2",
|
||||
["eyebrow_depth"] = "wenkbrauw diepte",
|
||||
["eyebrow_height"] = "wenkbrauw hoogte",
|
||||
["makeup_type"] = "makeup type",
|
||||
["makeup_thickness"] = "makeup dikte",
|
||||
["makeup_color_1"] = "makeup kleur 1",
|
||||
["makeup_color_2"] = "makeup kleur 2",
|
||||
["lipstick_type"] = "lippenstift type",
|
||||
["lipstick_thickness"] = "lippenstift dikte",
|
||||
["lipstick_color_1"] = "lippenstift kleur 1",
|
||||
["lipstick_color_2"] = "lippenstift kleur 2",
|
||||
["ear_accessories"] = "ooraccessoires",
|
||||
["ear_accessories_color"] = "ooraccessoires kleur",
|
||||
["tshirt_1"] = "t-shirt 1",
|
||||
["tshirt_2"] = "t-shirt 2",
|
||||
["torso_1"] = "vest 1",
|
||||
["torso_2"] = "vest 2",
|
||||
["decals_1"] = "stickers 1",
|
||||
["decals_2"] = "stickers 2",
|
||||
["arms"] = "armen",
|
||||
["arms_2"] = "armen 2",
|
||||
["pants_1"] = "broek 1",
|
||||
["pants_2"] = "broek 2",
|
||||
["shoes_1"] = "shoenen 1",
|
||||
["shoes_2"] = "shoenen 2",
|
||||
["mask_1"] = "masker 1",
|
||||
["mask_2"] = "masker 2",
|
||||
["bproof_1"] = "kogelvrij vest 1",
|
||||
["bproof_2"] = "kogelvrij vest 2",
|
||||
["chain_1"] = "ketting 1",
|
||||
["chain_2"] = "ketting 2",
|
||||
["helmet_1"] = "helm 1",
|
||||
["helmet_2"] = "helm 2",
|
||||
["watches_1"] = "horloge 1",
|
||||
["watches_2"] = "horloge 2",
|
||||
["bracelets_1"] = "armband(en) 1",
|
||||
["bracelets_2"] = "armband(en) 2",
|
||||
["glasses_1"] = "bril 1",
|
||||
["glasses_2"] = "bril 2",
|
||||
["bag"] = "rugzak",
|
||||
["bag_color"] = "rugzak kleur",
|
||||
["blemishes"] = "vlekken",
|
||||
["blemishes_size"] = "vlekken dikte",
|
||||
["ageing"] = "veroudering",
|
||||
["ageing_1"] = "veroudering zichtbaarheid",
|
||||
["blush"] = "blozen",
|
||||
["blush_1"] = "blozen zichtbaarheid",
|
||||
["blush_color"] = "blozen kleur",
|
||||
["complexion"] = "gelaatskleur",
|
||||
["complexion_1"] = "gelaatskleur 1",
|
||||
["sun"] = "zon",
|
||||
["sun_1"] = "zon dikte",
|
||||
["freckles"] = "sproeten",
|
||||
["freckles_1"] = "sproeten dikte",
|
||||
["chest_hair"] = "borsthaar",
|
||||
["chest_hair_1"] = "borsthaar dikte",
|
||||
["chest_color"] = "borsthaar kleur",
|
||||
["bodyb"] = "lichaamsvlekken",
|
||||
["bodyb_size"] = "lichaamsvlekken zichtbaarheid",
|
||||
["bodyb_extra"] = "lichaamsvlekken effect",
|
||||
["bodyb_extra_thickness"] = "lichaamsvlekken effect zichtbaarheid",
|
||||
}
|
||||
["sex"] = "geslacht",
|
||||
["mom"] = "gezicht moeder",
|
||||
["dad"] = "gezicht vader",
|
||||
["resemblance"] = "gelijkenis",
|
||||
["skin_tone"] = "huidskleur",
|
||||
["nose_1"] = "neusbreedte",
|
||||
["nose_2"] = "neuspiek hoogte",
|
||||
["nose_3"] = "neuspiek lengte",
|
||||
["nose_4"] = "neusbeen hoogte",
|
||||
["nose_5"] = "neusbeen verlaging",
|
||||
["nose_6"] = "neusbeen verdraaiing",
|
||||
["cheeks_1"] = "jukbeenderen hoogte",
|
||||
["cheeks_2"] = "jukbeenderen breedte",
|
||||
["cheeks_3"] = "wangen breedte",
|
||||
["lip_fullness"] = "lipvolheid",
|
||||
["jaw_bone_width"] = "kaakbeen breedte",
|
||||
["jaw_bone_length"] = "kaakbeen lengte",
|
||||
["chin_height"] = "kin hoogte",
|
||||
["chin_length"] = "kin lengte",
|
||||
["chin_width"] = "kin breedte",
|
||||
["chin_hole"] = "grootte van het kin-gat",
|
||||
["neck_thickness"] = "nek dikte",
|
||||
["wrinkles"] = "rimpels",
|
||||
["wrinkle_thickness"] = "rimpels dikte",
|
||||
["beard_type"] = "baard type",
|
||||
["beard_size"] = "baard grootte",
|
||||
["beard_color_1"] = "baard kleur 1",
|
||||
["beard_color_2"] = "baard kleur 2",
|
||||
["hair_1"] = "haar 1",
|
||||
["hair_2"] = "haar 2",
|
||||
["hair_color_1"] = "haar kleur 1",
|
||||
["hair_color_2"] = "haar kleur 2",
|
||||
["eye_color"] = "oogkleur",
|
||||
["eye_squint"] = "oog scheelte",
|
||||
["eyebrow_type"] = "wenkbrauw type",
|
||||
["eyebrow_size"] = "wenkbrauw formaat",
|
||||
["eyebrow_color_1"] = "wenkbrauw kleur 1",
|
||||
["eyebrow_color_2"] = "wenkbrauw kleur 2",
|
||||
["eyebrow_depth"] = "wenkbrauw diepte",
|
||||
["eyebrow_height"] = "wenkbrauw hoogte",
|
||||
["makeup_type"] = "makeup type",
|
||||
["makeup_thickness"] = "makeup dikte",
|
||||
["makeup_color_1"] = "makeup kleur 1",
|
||||
["makeup_color_2"] = "makeup kleur 2",
|
||||
["lipstick_type"] = "lippenstift type",
|
||||
["lipstick_thickness"] = "lippenstift dikte",
|
||||
["lipstick_color_1"] = "lippenstift kleur 1",
|
||||
["lipstick_color_2"] = "lippenstift kleur 2",
|
||||
["ear_accessories"] = "ooraccessoires",
|
||||
["ear_accessories_color"] = "ooraccessoires kleur",
|
||||
["tshirt_1"] = "t-shirt 1",
|
||||
["tshirt_2"] = "t-shirt 2",
|
||||
["torso_1"] = "vest 1",
|
||||
["torso_2"] = "vest 2",
|
||||
["decals_1"] = "stickers 1",
|
||||
["decals_2"] = "stickers 2",
|
||||
["arms"] = "armen",
|
||||
["arms_2"] = "armen 2",
|
||||
["pants_1"] = "broek 1",
|
||||
["pants_2"] = "broek 2",
|
||||
["shoes_1"] = "shoenen 1",
|
||||
["shoes_2"] = "shoenen 2",
|
||||
["mask_1"] = "masker 1",
|
||||
["mask_2"] = "masker 2",
|
||||
["bproof_1"] = "kogelvrij vest 1",
|
||||
["bproof_2"] = "kogelvrij vest 2",
|
||||
["chain_1"] = "ketting 1",
|
||||
["chain_2"] = "ketting 2",
|
||||
["helmet_1"] = "helm 1",
|
||||
["helmet_2"] = "helm 2",
|
||||
["watches_1"] = "horloge 1",
|
||||
["watches_2"] = "horloge 2",
|
||||
["bracelets_1"] = "armband(en) 1",
|
||||
["bracelets_2"] = "armband(en) 2",
|
||||
["glasses_1"] = "bril 1",
|
||||
["glasses_2"] = "bril 2",
|
||||
["bag"] = "rugzak",
|
||||
["bag_color"] = "rugzak kleur",
|
||||
["blemishes"] = "vlekken",
|
||||
["blemishes_size"] = "vlekken dikte",
|
||||
["ageing"] = "veroudering",
|
||||
["ageing_1"] = "veroudering zichtbaarheid",
|
||||
["blush"] = "blozen",
|
||||
["blush_1"] = "blozen zichtbaarheid",
|
||||
["blush_color"] = "blozen kleur",
|
||||
["complexion"] = "gelaatskleur",
|
||||
["complexion_1"] = "gelaatskleur 1",
|
||||
["sun"] = "zon",
|
||||
["sun_1"] = "zon dikte",
|
||||
["freckles"] = "sproeten",
|
||||
["freckles_1"] = "sproeten dikte",
|
||||
["chest_hair"] = "borsthaar",
|
||||
["chest_hair_1"] = "borsthaar dikte",
|
||||
["chest_color"] = "borsthaar kleur",
|
||||
["bodyb"] = "lichaamsvlekken",
|
||||
["bodyb_size"] = "lichaamsvlekken zichtbaarheid",
|
||||
["bodyb_extra"] = "lichaamsvlekken effect",
|
||||
["bodyb_extra_thickness"] = "lichaamsvlekken effect zichtbaarheid",
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ Locales["pl"] = {
|
||||
["bag"] = "torba",
|
||||
["bag_color"] = "kolor torby",
|
||||
["blemishes"] = "skazy",
|
||||
["blemishes_size"]= "wielkość skaz",
|
||||
["blemishes_size"] = "wielkość skaz",
|
||||
["ageing"] = "starzenie",
|
||||
["ageing_1"] = "wielkość starzenia",
|
||||
["blush"] = "rumieńce",
|
||||
|
||||
@@ -1,100 +1,100 @@
|
||||
Locales["pt"] = {
|
||||
["sex"] = "sexo",
|
||||
["mom"] = "cara da mãe",
|
||||
["dad"] = "cara do pai",
|
||||
["resemblance"] = "semelhanças",
|
||||
["skin_tone"] = "tom de pele",
|
||||
["nose_1"] = "largura do nariz",
|
||||
["nose_2"] = "altura da ponta do nariz",
|
||||
["nose_3"] = "tamanho da ponta do nariz",
|
||||
["nose_4"] = "altura do nariz",
|
||||
["nose_5"] = "reduzir ponta do nariz",
|
||||
["nose_6"] = "torcer o nariz",
|
||||
["cheeks_1"] = "altura das maçãs do rosto",
|
||||
["cheeks_2"] = "largura das maçãs do rosto",
|
||||
["cheeks_3"] = "largura das bochechas",
|
||||
["lip_fullness"] = "preenchimento labial",
|
||||
["jaw_bone_width"] = "largura do maxilar",
|
||||
["jaw_bone_length"] = "comprimento do maxilar",
|
||||
["chin_height"] = "altura do queixo",
|
||||
["chin_length"] = "comprimento do queixo",
|
||||
["chin_width"] = "largura do queixo",
|
||||
["chin_hole"] = "tamanho do buraco do queixo",
|
||||
["neck_thickness"] = "espessura do pescoço",
|
||||
["wrinkles"] = "rugas",
|
||||
["wrinkle_thickness"] = "espessura das rugas",
|
||||
["beard_type"] = "tipo de barba",
|
||||
["beard_size"] = "tamanho da barba",
|
||||
["beard_color_1"] = "cor da barba 1",
|
||||
["beard_color_2"] = "cor da barba 2",
|
||||
["hair_1"] = "cabelo 1",
|
||||
["hair_2"] = "cabelo 2",
|
||||
["hair_color_1"] = "cor do cabelo 1",
|
||||
["hair_color_2"] = "cor do cabelo 2",
|
||||
["eye_color"] = "cor dos olhos",
|
||||
["eye_squint"] = "estrabismo",
|
||||
["eyebrow_type"] = "tipo de sobrancelha",
|
||||
["eyebrow_size"] = "tamanho da sobrancelha",
|
||||
["eyebrow_color_1"] = "cor da sobrancelha 1",
|
||||
["eyebrow_color_2"] = "cor da sobrancelha 2",
|
||||
["eyebrow_depth"] = "profundidade da sobrancelha",
|
||||
["eyebrow_height"] = "altura da sobrancelha",
|
||||
["makeup_type"] = "tipo de maquiagem",
|
||||
["makeup_thickness"] = "espessura da maquiagem",
|
||||
["makeup_color_1"] = "cor da maquiagem 1",
|
||||
["makeup_color_2"] = "cor da maquiagem 2",
|
||||
["lipstick_type"] = "tipo de batom",
|
||||
["lipstick_thickness"] = "espessura do batom",
|
||||
["lipstick_color_1"] = "cor do batom 1",
|
||||
["lipstick_color_2"] = "cor do batom 2",
|
||||
["ear_accessories"] = "acessórios de ouvido",
|
||||
["ear_accessories_color"] = "cor dos acessórios de ouvido",
|
||||
["tshirt_1"] = "t-Shirt 1",
|
||||
["tshirt_2"] = "t-Shirt 2",
|
||||
["torso_1"] = "casaco 1",
|
||||
["torso_2"] = "casaco 2",
|
||||
["decals_1"] = "autocolantes 1",
|
||||
["decals_2"] = "autocolantes 2",
|
||||
["arms"] = "braços",
|
||||
["arms_2"] = "braços 2",
|
||||
["pants_1"] = "calças 1",
|
||||
["pants_2"] = "calças 2",
|
||||
["shoes_1"] = "sapatos 1",
|
||||
["shoes_2"] = "sapatos 2",
|
||||
["mask_1"] = "máscara 1",
|
||||
["mask_2"] = "máscara 2",
|
||||
["bproof_1"] = "colete 1",
|
||||
["bproof_2"] = "colete 2",
|
||||
["chain_1"] = "colar 1",
|
||||
["chain_2"] = "colar 2",
|
||||
["helmet_1"] = "capacete 1",
|
||||
["helmet_2"] = "capacete 2",
|
||||
["watches_1"] = "relógio 1",
|
||||
["watches_2"] = "relógio 2",
|
||||
["bracelets_1"] = "pulseiras 1",
|
||||
["bracelets_2"] = "pulseiras 2",
|
||||
["glasses_1"] = "óculos 1",
|
||||
["glasses_2"] = "óculos 2",
|
||||
["bag"] = "mochila",
|
||||
["bag_color"] = "cor da mochila",
|
||||
["blemishes"] = "manchas",
|
||||
["blemishes_size"] = "espessura de manchas",
|
||||
["ageing"] = "envelhecimento",
|
||||
["ageing_1"] = "espessura de envelhecimento",
|
||||
["blush"] = "corar",
|
||||
["blush_1"] = "espessura do blush",
|
||||
["blush_color"] = "cor de blush",
|
||||
["complexion"] = "aparência",
|
||||
["complexion_1"] = "aparência 2",
|
||||
["sun"] = "sol",
|
||||
["sun_1"] = "espessura do sol",
|
||||
["freckles"] = "sardas",
|
||||
["freckles_1"] = "espessura das sardas",
|
||||
["chest_hair"] = "pelos no peito",
|
||||
["chest_hair_1"] = "espessura dos pelos do peito",
|
||||
["chest_color"] = "cor dos pelos dos peitos",
|
||||
["bodyb"] = "manchas no corpo",
|
||||
["bodyb_size"] = "espessura das manchas no corpo",
|
||||
["bodyb_extra"] = "extra das manchas no corpo",
|
||||
["bodyb_extra_thickness"] = "cor do extra das manchas no corpo",
|
||||
}
|
||||
["sex"] = "sexo",
|
||||
["mom"] = "cara da mãe",
|
||||
["dad"] = "cara do pai",
|
||||
["resemblance"] = "semelhanças",
|
||||
["skin_tone"] = "tom de pele",
|
||||
["nose_1"] = "largura do nariz",
|
||||
["nose_2"] = "altura da ponta do nariz",
|
||||
["nose_3"] = "tamanho da ponta do nariz",
|
||||
["nose_4"] = "altura do nariz",
|
||||
["nose_5"] = "reduzir ponta do nariz",
|
||||
["nose_6"] = "torcer o nariz",
|
||||
["cheeks_1"] = "altura das maçãs do rosto",
|
||||
["cheeks_2"] = "largura das maçãs do rosto",
|
||||
["cheeks_3"] = "largura das bochechas",
|
||||
["lip_fullness"] = "preenchimento labial",
|
||||
["jaw_bone_width"] = "largura do maxilar",
|
||||
["jaw_bone_length"] = "comprimento do maxilar",
|
||||
["chin_height"] = "altura do queixo",
|
||||
["chin_length"] = "comprimento do queixo",
|
||||
["chin_width"] = "largura do queixo",
|
||||
["chin_hole"] = "tamanho do buraco do queixo",
|
||||
["neck_thickness"] = "espessura do pescoço",
|
||||
["wrinkles"] = "rugas",
|
||||
["wrinkle_thickness"] = "espessura das rugas",
|
||||
["beard_type"] = "tipo de barba",
|
||||
["beard_size"] = "tamanho da barba",
|
||||
["beard_color_1"] = "cor da barba 1",
|
||||
["beard_color_2"] = "cor da barba 2",
|
||||
["hair_1"] = "cabelo 1",
|
||||
["hair_2"] = "cabelo 2",
|
||||
["hair_color_1"] = "cor do cabelo 1",
|
||||
["hair_color_2"] = "cor do cabelo 2",
|
||||
["eye_color"] = "cor dos olhos",
|
||||
["eye_squint"] = "estrabismo",
|
||||
["eyebrow_type"] = "tipo de sobrancelha",
|
||||
["eyebrow_size"] = "tamanho da sobrancelha",
|
||||
["eyebrow_color_1"] = "cor da sobrancelha 1",
|
||||
["eyebrow_color_2"] = "cor da sobrancelha 2",
|
||||
["eyebrow_depth"] = "profundidade da sobrancelha",
|
||||
["eyebrow_height"] = "altura da sobrancelha",
|
||||
["makeup_type"] = "tipo de maquiagem",
|
||||
["makeup_thickness"] = "espessura da maquiagem",
|
||||
["makeup_color_1"] = "cor da maquiagem 1",
|
||||
["makeup_color_2"] = "cor da maquiagem 2",
|
||||
["lipstick_type"] = "tipo de batom",
|
||||
["lipstick_thickness"] = "espessura do batom",
|
||||
["lipstick_color_1"] = "cor do batom 1",
|
||||
["lipstick_color_2"] = "cor do batom 2",
|
||||
["ear_accessories"] = "acessórios de ouvido",
|
||||
["ear_accessories_color"] = "cor dos acessórios de ouvido",
|
||||
["tshirt_1"] = "t-Shirt 1",
|
||||
["tshirt_2"] = "t-Shirt 2",
|
||||
["torso_1"] = "casaco 1",
|
||||
["torso_2"] = "casaco 2",
|
||||
["decals_1"] = "autocolantes 1",
|
||||
["decals_2"] = "autocolantes 2",
|
||||
["arms"] = "braços",
|
||||
["arms_2"] = "braços 2",
|
||||
["pants_1"] = "calças 1",
|
||||
["pants_2"] = "calças 2",
|
||||
["shoes_1"] = "sapatos 1",
|
||||
["shoes_2"] = "sapatos 2",
|
||||
["mask_1"] = "máscara 1",
|
||||
["mask_2"] = "máscara 2",
|
||||
["bproof_1"] = "colete 1",
|
||||
["bproof_2"] = "colete 2",
|
||||
["chain_1"] = "colar 1",
|
||||
["chain_2"] = "colar 2",
|
||||
["helmet_1"] = "capacete 1",
|
||||
["helmet_2"] = "capacete 2",
|
||||
["watches_1"] = "relógio 1",
|
||||
["watches_2"] = "relógio 2",
|
||||
["bracelets_1"] = "pulseiras 1",
|
||||
["bracelets_2"] = "pulseiras 2",
|
||||
["glasses_1"] = "óculos 1",
|
||||
["glasses_2"] = "óculos 2",
|
||||
["bag"] = "mochila",
|
||||
["bag_color"] = "cor da mochila",
|
||||
["blemishes"] = "manchas",
|
||||
["blemishes_size"] = "espessura de manchas",
|
||||
["ageing"] = "envelhecimento",
|
||||
["ageing_1"] = "espessura de envelhecimento",
|
||||
["blush"] = "corar",
|
||||
["blush_1"] = "espessura do blush",
|
||||
["blush_color"] = "cor de blush",
|
||||
["complexion"] = "aparência",
|
||||
["complexion_1"] = "aparência 2",
|
||||
["sun"] = "sol",
|
||||
["sun_1"] = "espessura do sol",
|
||||
["freckles"] = "sardas",
|
||||
["freckles_1"] = "espessura das sardas",
|
||||
["chest_hair"] = "pelos no peito",
|
||||
["chest_hair_1"] = "espessura dos pelos do peito",
|
||||
["chest_color"] = "cor dos pelos dos peitos",
|
||||
["bodyb"] = "manchas no corpo",
|
||||
["bodyb_size"] = "espessura das manchas no corpo",
|
||||
["bodyb_extra"] = "extra das manchas no corpo",
|
||||
["bodyb_extra_thickness"] = "cor do extra das manchas no corpo",
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user