mirror of
https://github.com/esx-framework/esx_core.git
synced 2026-08-29 05:02:15 +00:00
@@ -632,7 +632,7 @@ state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
esx-legacy
|
||||
Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
esx-legacy Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
esx-legacy Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
+3
-3
@@ -632,7 +632,7 @@ state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
cron
|
||||
Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
cron Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
cron Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
@@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
||||
@@ -2,7 +2,7 @@ fx_version 'adamant'
|
||||
|
||||
game 'gta5'
|
||||
author 'ESX-Framework'
|
||||
description 'cron'
|
||||
description 'Allows resources to Run tasks at specific intervals.'
|
||||
lua54 'yes'
|
||||
version '1.10.5'
|
||||
|
||||
|
||||
@@ -632,7 +632,7 @@ state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
es_extended
|
||||
Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
es_extended Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
es_extended Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
@@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
||||
@@ -507,10 +507,10 @@ function ESX.Game.GetClosestEntity(entities, isPlayerEntities, coords, modelFilt
|
||||
|
||||
if modelFilter then
|
||||
filteredEntities = {}
|
||||
|
||||
for _, entity in pairs(entities) do
|
||||
if modelFilter[GetEntityModel(entity)] then
|
||||
filteredEntities[#filteredEntities + 1] = entity
|
||||
|
||||
for currentEntityIndex = 1, #entities do
|
||||
if modelFilter[GetEntityModel(entities[currentEntityIndex])] then
|
||||
filteredEntities[#filteredEntities + 1] = entities[currentEntityIndex]
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -576,21 +576,15 @@ function ESX.Game.GetVehicleProperties(vehicle)
|
||||
end
|
||||
|
||||
local doorsBroken, windowsBroken, tyreBurst = {}, {}, {}
|
||||
local numWheels = tostring(GetVehicleNumberOfWheels(vehicle))
|
||||
|
||||
local TyresIndex = { -- Wheel index list according to the number of vehicle wheels.
|
||||
["2"] = { 0, 4 }, -- Bike and cycle.
|
||||
["3"] = { 0, 1, 4, 5 }, -- Vehicle with 3 wheels (get for wheels because some 3 wheels vehicles have 2 wheels on front and one rear or the reverse).
|
||||
["4"] = { 0, 1, 4, 5 }, -- Vehicle with 4 wheels.
|
||||
["6"] = { 0, 1, 2, 3, 4, 5 }, -- Vehicle with 6 wheels.
|
||||
}
|
||||
|
||||
if TyresIndex[numWheels] then
|
||||
for _, idx in pairs(TyresIndex[numWheels]) do
|
||||
tyreBurst[tostring(idx)] = IsVehicleTyreBurst(vehicle, idx, false)
|
||||
end
|
||||
local wheel_count = GetVehicleNumberOfWheels(vehicle);
|
||||
|
||||
for wheel_index = 0, wheel_count - 1 do
|
||||
tyreBurst[tostring(wheel_index)] = IsVehicleTyreBurst(vehicle, wheel_index, false)
|
||||
end
|
||||
|
||||
|
||||
for windowId = 0, 7 do -- 13
|
||||
RollUpWindow(vehicle, windowId) --fix when you put the car away with the window down
|
||||
windowsBroken[tostring(windowId)] = not IsVehicleWindowIntact(vehicle, windowId)
|
||||
@@ -1128,8 +1122,8 @@ function ESX.ShowInventory()
|
||||
{ unselectable = true, icon = "fas fa-users", title = "Nearby Players" },
|
||||
}
|
||||
|
||||
for _, playerNearby in ipairs(playersNearby) do
|
||||
players[GetPlayerServerId(playerNearby)] = true
|
||||
for currentNearbyPlayerIndex = 1, #playersNearby do
|
||||
players[GetPlayerServerId(playersNearby[currentNearbyPlayerIndex])] = true
|
||||
end
|
||||
|
||||
ESX.TriggerServerCallback("esx:getPlayerNames", function(returnedPlayers)
|
||||
|
||||
@@ -24,7 +24,7 @@ function ESX.SpawnPlayer(skin, coords, cb)
|
||||
p:resolve()
|
||||
end)
|
||||
Citizen.Await(p)
|
||||
|
||||
|
||||
local playerPed = PlayerPedId()
|
||||
FreezeEntityPosition(playerPed, true)
|
||||
SetEntityCoordsNoOffset(playerPed, coords.x, coords.y, coords.z, false, false, false, true)
|
||||
@@ -56,7 +56,7 @@ AddEventHandler("esx:playerLoaded", function(xPlayer, _, skin)
|
||||
while not DoesEntityExist(ESX.PlayerData.ped) do
|
||||
Wait(20)
|
||||
end
|
||||
|
||||
|
||||
ESX.PlayerLoaded = true
|
||||
|
||||
local metadata = ESX.PlayerData.metadata
|
||||
@@ -271,29 +271,13 @@ AddEventHandler("esx:restoreLoadout", function()
|
||||
end
|
||||
end)
|
||||
|
||||
-- Credit: https://github.com/LukeWasTakenn, https://github.com/LukeWasTakenn/luke_garages/blob/master/client/client.lua#L331-L352
|
||||
AddStateBagChangeHandler("VehicleProperties", nil, function(bagName, _, value)
|
||||
if not value then
|
||||
return
|
||||
end
|
||||
|
||||
local netId = bagName:gsub("entity:", "")
|
||||
local timer = GetGameTimer()
|
||||
while not NetworkDoesEntityExistWithNetworkId(tonumber(netId)) do
|
||||
Wait(0)
|
||||
if GetGameTimer() - timer > 10000 then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local vehicle = NetToVeh(tonumber(netId))
|
||||
local timer2 = GetGameTimer()
|
||||
while NetworkGetEntityOwner(vehicle) ~= PlayerId() do
|
||||
Wait(0)
|
||||
if GetGameTimer() - timer2 > 10000 then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
ESX.Game.SetVehicleProperties(vehicle, value)
|
||||
end)
|
||||
@@ -378,6 +362,11 @@ AddEventHandler("esx:setJob", function(Job)
|
||||
ESX.SetPlayerData("job", Job)
|
||||
end)
|
||||
|
||||
RegisterNetEvent("esx:setGroup")
|
||||
AddEventHandler("esx:setGroup", function(group)
|
||||
ESX.SetPlayerData("group", group)
|
||||
end)
|
||||
|
||||
if not Config.OxInventory then
|
||||
RegisterNetEvent("esx:createPickup")
|
||||
AddEventHandler("esx:createPickup", function(pickupId, label, coords, itemType, name, components, tintIndex)
|
||||
|
||||
@@ -24,6 +24,11 @@ local function GetData(vehicle)
|
||||
return displayName, netId
|
||||
end
|
||||
|
||||
local function ToggleVehicleStatus(inVehicle, seat)
|
||||
ESX.SetPlayerData("vehicle", inVehicle)
|
||||
ESX.SetPlayerData("seat", seat)
|
||||
end
|
||||
|
||||
CreateThread(function()
|
||||
while not ESX.PlayerLoaded do Wait(200) end
|
||||
while true do
|
||||
@@ -64,11 +69,13 @@ CreateThread(function()
|
||||
isEnteringVehicle = true
|
||||
TriggerEvent("esx:enteringVehicle", vehicle, plate, seat, netId)
|
||||
TriggerServerEvent("esx:enteringVehicle", plate, seat, netId)
|
||||
ToggleVehicleStatus(vehicle, seat)
|
||||
elseif not DoesEntityExist(GetVehiclePedIsTryingToEnter(playerPed)) and not IsPedInAnyVehicle(playerPed, true) and isEnteringVehicle then
|
||||
-- vehicle entering aborted
|
||||
TriggerEvent("esx:enteringVehicleAborted")
|
||||
TriggerServerEvent("esx:enteringVehicleAborted")
|
||||
isEnteringVehicle = false
|
||||
ToggleVehicleStatus(false, false)
|
||||
elseif IsPedInAnyVehicle(playerPed, false) then
|
||||
-- suddenly appeared in a vehicle, possible teleport
|
||||
isEnteringVehicle = false
|
||||
@@ -79,6 +86,7 @@ CreateThread(function()
|
||||
current.displayName, current.netId = GetData(current.vehicle)
|
||||
TriggerEvent("esx:enteredVehicle", current.vehicle, current.plate, current.seat, current.displayName, current.netId)
|
||||
TriggerServerEvent("esx:enteredVehicle", current.plate, current.seat, current.displayName, current.netId)
|
||||
ToggleVehicleStatus(current.vehicle, current.seat)
|
||||
end
|
||||
elseif isInVehicle then
|
||||
if not IsPedInAnyVehicle(playerPed, false) or IsPlayerDead(PlayerId()) then
|
||||
@@ -87,6 +95,7 @@ CreateThread(function()
|
||||
TriggerServerEvent("esx:exitedVehicle", current.plate, current.seat, current.displayName, current.netId)
|
||||
isInVehicle = false
|
||||
current = {}
|
||||
ToggleVehicleStatus(false,false)
|
||||
end
|
||||
end
|
||||
Wait(200)
|
||||
|
||||
@@ -106,3 +106,36 @@ end
|
||||
function ESX.Round(value, numDecimalPlaces)
|
||||
return ESX.Math.Round(value, numDecimalPlaces)
|
||||
end
|
||||
|
||||
function ESX.ValidateType(value, ...)
|
||||
local types = { ... }
|
||||
if #types == 0 then return true end
|
||||
|
||||
local mapType = {}
|
||||
for i = 1, #types, 1 do
|
||||
local validateType = types[i]
|
||||
assert(type(validateType) == "string", "bad argument types, only expected string") -- should never use anyhing else than string
|
||||
mapType[validateType] = true
|
||||
end
|
||||
|
||||
local valueType = type(value)
|
||||
|
||||
local matches = mapType[valueType] ~= nil
|
||||
|
||||
if not matches then
|
||||
local requireTypes = table.concat(types, " or ")
|
||||
local errorMessage = ("bad value (%s expected, got %s)"):format(requireTypes, valueType)
|
||||
|
||||
return false, errorMessage
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
function ESX.AssertType(...)
|
||||
local matches, errorMessage = ESX.ValidateType(...)
|
||||
|
||||
assert(matches, errorMessage)
|
||||
|
||||
return matches
|
||||
end
|
||||
|
||||
@@ -23,3 +23,9 @@ function ESX.Math.Trim(value)
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
function ESX.Math.Random(minRange, maxRange)
|
||||
math.randomseed(GetGameTimer())
|
||||
return math.random(minRange or 1, maxRange or 10)
|
||||
end
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
exports("getSharedObject", function()
|
||||
return ESX
|
||||
end)
|
||||
|
||||
AddEventHandler("esx:getSharedObject", function()
|
||||
local Invoke = GetInvokingResource()
|
||||
print(("[^1ERROR^7] Resource ^5%s^7 Used the ^5getSharedObject^7 Event, this event ^1no longer exists!^7 Visit https://documentation.esx-framework.org/tutorials/tutorials-esx/sharedevent for how to fix!"):format(Invoke))
|
||||
end)
|
||||
exports("getSharedObject", function()
|
||||
return ESX
|
||||
end)
|
||||
|
||||
AddEventHandler("esx:getSharedObject", function()
|
||||
local Invoke = GetInvokingResource()
|
||||
print(("[^1ERROR^7] Resource ^5%s^7 Used the ^5getSharedObject^7 Event, this event ^1no longer exists!^7 Visit https://documentation.esx-framework.org/tutorials/tutorials-esx/sharedevent for how to fix!"):format(Invoke))
|
||||
end)
|
||||
@@ -38,21 +38,21 @@ 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.MaxWeight = 24 -- the max inventory weight without a backpack
|
||||
Config.PaycheckInterval = 7 * 60000 -- how often to receive paychecks 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.Identity = true -- Select a character identity data before they have loaded in (this happens by default with multichar)
|
||||
Config.DistanceGive = 4.0 -- Max distance when giving items, weapons etc.
|
||||
|
||||
Config.AdminLogging = false -- Logs the usage of certain commands by those with group.admin ace permissions (default is false)
|
||||
|
||||
Config.DisableHealthRegeneration = false -- Player will no longer regenerate health
|
||||
Config.DisableVehicleRewards = false -- Disables Player Recieving weapons from vehicles
|
||||
Config.DisableVehicleRewards = false -- Disables Player Receiving weapons from vehicles
|
||||
Config.DisableNPCDrops = false -- stops NPCs from dropping weapons on death
|
||||
Config.DisableDispatchServices = false -- Disable Dispatch services
|
||||
Config.DisableScenarios = false -- Disable Scenarios
|
||||
@@ -85,12 +85,12 @@ Config.RemoveHudComponents = {
|
||||
[22] = false, --HUD_WEAPONS
|
||||
}
|
||||
|
||||
Config.SpawnVehMaxUpgrades = true -- admin vehicles spawn with max vehcle settings
|
||||
Config.SpawnVehMaxUpgrades = true -- admin vehicles spawn with max vehicle settings
|
||||
Config.CustomAIPlates = "........" -- Custom plates for AI vehicles
|
||||
-- Pattern string format
|
||||
--1 will lead to a random number from 0-9.
|
||||
--A will lead to a random letter from A-Z.
|
||||
-- . will lead to a random letter or number, with 50% probability of being either.
|
||||
-- . will lead to a random letter or number, with a 50% probability of being either.
|
||||
--^1 will lead to a literal 1 being emitted.
|
||||
--^A will lead to a literal A being emitted.
|
||||
--Any other character will lead to said character being emitted.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
fx_version 'cerulean'
|
||||
|
||||
game 'gta5'
|
||||
description 'ES Extended'
|
||||
description 'The Core resource that provides the functionalities for all other resources.'
|
||||
lua54 'yes'
|
||||
version '1.10.5'
|
||||
|
||||
@@ -11,6 +11,9 @@ shared_scripts {
|
||||
|
||||
'config.lua',
|
||||
'config.weapons.lua',
|
||||
|
||||
'common/modules/*.lua',
|
||||
'common/*.lua',
|
||||
}
|
||||
|
||||
server_scripts {
|
||||
@@ -27,10 +30,9 @@ server_scripts {
|
||||
'server/main.lua',
|
||||
'server/commands.lua',
|
||||
|
||||
'common/modules/*.lua',
|
||||
'common/functions.lua',
|
||||
'server/modules/actions.lua',
|
||||
'server/modules/npwd.lua'
|
||||
'server/modules/npwd.lua',
|
||||
'server/modules/createJob.lua'
|
||||
}
|
||||
|
||||
client_scripts {
|
||||
@@ -41,9 +43,6 @@ client_scripts {
|
||||
|
||||
'client/main.lua',
|
||||
|
||||
'common/modules/*.lua',
|
||||
'common/functions.lua',
|
||||
|
||||
'common/functions.lua',
|
||||
'client/modules/actions.lua',
|
||||
'client/modules/death.lua',
|
||||
|
||||
@@ -140,7 +140,7 @@ Core.PlayerFunctionOverrides.OxInventory = {
|
||||
return function(newWeight)
|
||||
self.maxWeight = newWeight
|
||||
self.triggerEvent("esx:setMaxWeight", self.maxWeight)
|
||||
return Inventory.Set(self.source, "maxWeight", newWeight)
|
||||
return Inventory.SetMaxWeight(self.source, newWeight)
|
||||
end
|
||||
end,
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
local _GetPlayerPed = GetPlayerPed
|
||||
local _GetEntityCoords = GetEntityCoords
|
||||
local _GetEntityHeading = GetEntityHeading
|
||||
local _ExecuteCommand = ExecuteCommand
|
||||
local _SetEntityCoords = SetEntityCoords
|
||||
local _SetEntityHeading = SetEntityHeading
|
||||
@@ -80,8 +81,9 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
function self.getCoords(vector)
|
||||
local ped <const> = _GetPlayerPed(self.source)
|
||||
local coordinates <const> = _GetEntityCoords(ped)
|
||||
local heading <const> = _GetEntityHeading(ped)
|
||||
|
||||
return vector and coordinates or { x = coordinates.x, y = coordinates.y, z = coordinates.z }
|
||||
return vector and vector4(coordinates.xyz, heading) or { x = coordinates.x, y = coordinates.y, z = coordinates.z, heading = heading }
|
||||
end
|
||||
|
||||
---@param reason string
|
||||
@@ -127,9 +129,16 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
---@param newGroup string
|
||||
---@return void
|
||||
function self.setGroup(newGroup)
|
||||
local lastGroup = self.group
|
||||
|
||||
_ExecuteCommand(("remove_principal identifier.%s group.%s"):format(self.license, self.group))
|
||||
|
||||
self.group = newGroup
|
||||
|
||||
_TriggerEvent("esx:setGroup", self.source, self.group, lastGroup)
|
||||
self.triggerEvent("esx:setGroup", self.group, lastGroup)
|
||||
Player(self.source).state:set("group", self.group, true)
|
||||
|
||||
_ExecuteCommand(("add_principal identifier.%s group.%s"):format(self.license, self.group))
|
||||
end
|
||||
|
||||
@@ -475,7 +484,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
|
||||
skin_female = gradeObject.skin_female and json.decode(gradeObject.skin_female) or {},
|
||||
}
|
||||
|
||||
TriggerEvent("esx:setJob", self.source, self.job, lastJob)
|
||||
_TriggerEvent("esx:setJob", self.source, self.job, lastJob)
|
||||
self.triggerEvent("esx:setJob", self.job, lastJob)
|
||||
Player(self.source).state:set("job", self.job, true)
|
||||
end
|
||||
|
||||
@@ -18,15 +18,6 @@ RegisterNetEvent("esx:onPlayerSpawn", function()
|
||||
ESX.Players[source].spawned = true
|
||||
end)
|
||||
|
||||
AddEventHandler("esx:getSharedObject", function()
|
||||
local Invoke = GetInvokingResource()
|
||||
print(("[^1ERROR^7] Resource ^5%s^7 Used the ^5getSharedObject^7 Event, this event ^1no longer exists!^7 Visit https://documentation.esx-framework.org/tutorials/tutorials-esx/sharedevent for how to fix!"):format(Invoke))
|
||||
end)
|
||||
|
||||
exports("getSharedObject", function()
|
||||
return ESX
|
||||
end)
|
||||
|
||||
if Config.OxInventory then
|
||||
Config.PlayerFunctionOverride = "OxInventory"
|
||||
SetConvarReplicated("inventory:framework", "esx")
|
||||
|
||||
@@ -4,6 +4,24 @@ function ESX.Trace(msg)
|
||||
end
|
||||
end
|
||||
|
||||
--- Triggers an event for one or more clients.
|
||||
---@param eventName string The name of the event to trigger.
|
||||
---@param playerIds table|number If a number, represents a single player ID. If a table, represents an array of player IDs.
|
||||
---@param ... any Additional arguments to pass to the event handler.
|
||||
function ESX.TriggerClientEvent(eventName, playerIds, ...)
|
||||
if type(playerIds) == "number" then
|
||||
TriggerClientEvent(eventName, playerIds, ...)
|
||||
return
|
||||
end
|
||||
|
||||
local payload = msgpack.pack_args(...)
|
||||
local payloadLength = #payload
|
||||
|
||||
for i = 1, #playerIds do
|
||||
TriggerClientEventInternal(eventName, playerIds[i], payload, payloadLength)
|
||||
end
|
||||
end
|
||||
|
||||
function ESX.RegisterCommand(name, group, cb, allowConsole, suggestion)
|
||||
if type(name) == "table" then
|
||||
for _, v in ipairs(name) do
|
||||
@@ -106,13 +124,13 @@ function ESX.RegisterCommand(name, group, cb, allowConsole, suggestion)
|
||||
elseif v.type == "any" then
|
||||
newArgs[v.name] = args[k]
|
||||
elseif v.type == "merge" then
|
||||
local lenght = 0
|
||||
local length = 0
|
||||
for i = 1, k - 1 do
|
||||
lenght = lenght + string.len(args[i]) + 1
|
||||
length = length + string.len(args[i]) + 1
|
||||
end
|
||||
local merge = table.concat(args, " ")
|
||||
|
||||
newArgs[v.name] = string.sub(merge, lenght)
|
||||
newArgs[v.name] = string.sub(merge, length)
|
||||
elseif v.type == "coordinate" then
|
||||
local coord = tonumber(args[k]:match("(-?%d+%.?%d*)"))
|
||||
if not coord then
|
||||
@@ -406,37 +424,6 @@ function ESX.DiscordLogFields(name, title, color, fields)
|
||||
)
|
||||
end
|
||||
|
||||
--- Create Job at Runtime
|
||||
--- @param name string
|
||||
--- @param label string
|
||||
--- @param grades table
|
||||
function ESX.CreateJob(name, label, grades)
|
||||
if not name then
|
||||
return print("[^3WARNING^7] missing argument `name(string)` while creating a job")
|
||||
end
|
||||
|
||||
if not label then
|
||||
return print("[^3WARNING^7] missing argument `label(string)` while creating a job")
|
||||
end
|
||||
|
||||
if not grades or not next(grades) then
|
||||
return print("[^3WARNING^7] missing argument `grades(table)` while creating a job!")
|
||||
end
|
||||
|
||||
local parameters = {}
|
||||
local job = { name = name, label = label, grades = {} }
|
||||
|
||||
for _, v in pairs(grades) do
|
||||
job.grades[tostring(v.grade)] = { job_name = name, grade = v.grade, name = v.name, label = v.label, salary = v.salary, skin_male = v.skin_male or "{}", skin_female = v.skin_female or "{}" }
|
||||
parameters[#parameters + 1] = { name, v.grade, v.name, v.label, v.salary, v.skin_male or "{}", v.skin_female or "{}" }
|
||||
end
|
||||
|
||||
MySQL.insert("INSERT IGNORE INTO jobs (name, label) VALUES (?, ?)", { name, label })
|
||||
MySQL.prepare("INSERT INTO job_grades (job_name, grade, name, label, salary, skin_male, skin_female) VALUES (?, ?, ?, ?, ?, ?, ?)", parameters)
|
||||
|
||||
ESX.Jobs[name] = job
|
||||
end
|
||||
|
||||
function ESX.RefreshJobs()
|
||||
local Jobs = {}
|
||||
local jobs = MySQL.query.await("SELECT * FROM jobs")
|
||||
@@ -549,15 +536,7 @@ if not Config.OxInventory then
|
||||
end
|
||||
|
||||
function ESX.DoesJobExist(job, grade)
|
||||
grade = tostring(grade)
|
||||
|
||||
if job and grade then
|
||||
if ESX.Jobs[job] and ESX.Jobs[job].grades[grade] then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
return false
|
||||
return (ESX.Jobs[job] and ESX.Jobs[job].grades[tostring(grade)] ~= nil) or false
|
||||
end
|
||||
|
||||
function Core.IsPlayerAdmin(playerId)
|
||||
|
||||
@@ -239,7 +239,7 @@ function loadESXPlayer(identifier, playerId, isNew)
|
||||
end
|
||||
|
||||
-- Position
|
||||
userData.coords = json.decode(result.position) or Config.DefaultSpawns[math.random(#Config.DefaultSpawns)]
|
||||
userData.coords = json.decode(result.position) or Config.DefaultSpawns[ESX.Math.Random(1,#Config.DefaultSpawns)]
|
||||
|
||||
-- Skin
|
||||
userData.skin = (result.skin and result.skin ~= "") and json.decode(result.skin) or { sex = userData.sex == "f" and 1 or 0 }
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
|
||||
local NOTIFY_TYPES = {
|
||||
INFO = "^5[%s]^7-^6[INFO]^7 %s",
|
||||
SUCCESS = "^5[%s]^7-^2[SUCCESS]^7 %s",
|
||||
ERROR = "^5[%s]^7-^1[ERROR]^7 %s"
|
||||
}
|
||||
|
||||
local function doesJobAndGradesExist(name, grades)
|
||||
if not ESX.Jobs[name] then
|
||||
return false
|
||||
end
|
||||
|
||||
for _, grade in ipairs(grades) do
|
||||
if not ESX.DoesJobExist(name, grade.grade) then
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
local function generateTransactionQueries(name,grades)
|
||||
local queries = {}
|
||||
for _, grade in ipairs(grades) do
|
||||
queries[#queries+1] = {
|
||||
query = 'INSERT INTO job_grades (job_name, grade, name, label, salary, skin_male, skin_female) VALUES (?, ?, ?, ?, ?, ?, ?)',
|
||||
values = {name, grade.grade, grade.name, grade.label, grade.salary, '{}', '{}'}
|
||||
}
|
||||
end
|
||||
|
||||
return queries
|
||||
end
|
||||
|
||||
local function generateNewJobTable(name, label, grades)
|
||||
local job = { name = name, label = label, grades = {} }
|
||||
for _, v in pairs(grades) do
|
||||
job.grades[tostring(v.grade)] = { job_name = name, grade = v.grade, name = v.name, label = v.label, salary = v.salary, skin_male = {}, skin_female = {} }
|
||||
end
|
||||
|
||||
return job
|
||||
end
|
||||
|
||||
local function notify(notifyType,resourceName,message,...)
|
||||
local formattedMessage = string.format(message, ...)
|
||||
|
||||
if not NOTIFY_TYPES[notifyType] then
|
||||
return print(NOTIFY_TYPES.INFO:format(resourceName,formattedMessage))
|
||||
end
|
||||
|
||||
return print(NOTIFY_TYPES[notifyType]:format(resourceName,formattedMessage))
|
||||
end
|
||||
|
||||
--- Create Job at Runtime
|
||||
--- @param name string
|
||||
--- @param label string
|
||||
--- @param grades table
|
||||
function ESX.CreateJob(name, label, grades)
|
||||
local currentResourceName = GetInvokingResource()
|
||||
local success = false
|
||||
|
||||
if not name or name == '' then
|
||||
notify("ERROR",currentResourceName, 'Missing argument `name`')
|
||||
return
|
||||
end
|
||||
if not label or label == '' then
|
||||
notify("ERROR",currentResourceName, 'Missing argument `label`')
|
||||
return
|
||||
end
|
||||
if not grades or not next(grades) then
|
||||
notify("ERROR",currentResourceName, 'Missing argument `grades`')
|
||||
return
|
||||
end
|
||||
|
||||
local currentJobExist = doesJobAndGradesExist(name, grades)
|
||||
|
||||
if currentJobExist then
|
||||
notify("ERROR",currentResourceName, 'Job or grades already exists: `%s`', name)
|
||||
return
|
||||
end
|
||||
|
||||
MySQL.insert('INSERT IGNORE INTO jobs (name, label) VALUES (?, ?)', {name, label}, function(jobId)
|
||||
if jobId == nil or jobId == 0 then
|
||||
notify("ERROR",currentResourceName, 'Failed to insert job: `%s`', name)
|
||||
return
|
||||
end
|
||||
|
||||
local queries = generateTransactionQueries(name, grades)
|
||||
|
||||
MySQL.transaction(queries, function(results)
|
||||
success = results
|
||||
if not results then
|
||||
notify("ERROR",currentResourceName, 'Failed to insert one or more grades for job: `%s`', name)
|
||||
return
|
||||
end
|
||||
|
||||
ESX.Jobs[name] = generateNewJobTable(name,label,grades)
|
||||
notify("SUCCESS",currentResourceName, 'Job created successfully: `%s`', name)
|
||||
end)
|
||||
end)
|
||||
|
||||
return success
|
||||
end
|
||||
@@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
esx_boat
|
||||
Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
esx_context
|
||||
Copyright (C) 2022-2024 ESX Framework
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
esx_boat Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
esx_context Copyright (C) 2022-2024 ESX Framework
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
@@ -6,7 +6,7 @@ A elegant, easy to use Context Menu system to make User Interactions clean and h
|
||||
|
||||
esx_context
|
||||
|
||||
Copyright (C) ESX-Framework
|
||||
Copyright (C) 2022-2024 ESX Framework
|
||||
|
||||
This program Is free software: you can redistribute it And/Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option) any later version.
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ fx_version 'bodacious'
|
||||
|
||||
game 'gta5'
|
||||
author 'ESX-Framework & Brayden'
|
||||
description 'Offical ESX Legacy Context Menu'
|
||||
description 'A simplistic context menu for ESX.'
|
||||
lua54 'yes'
|
||||
version '1.10.5'
|
||||
|
||||
|
||||
@@ -632,7 +632,7 @@ state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
esx_identity
|
||||
Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
esx_identity Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
esx_identity Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
@@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
fx_version 'adamant'
|
||||
|
||||
game 'gta5'
|
||||
description 'ESX Identity'
|
||||
description 'Allows the player to Pick their characters: Name, Gender, Height and Date-of-birth.'
|
||||
lua54 'yes'
|
||||
version '1.10.5'
|
||||
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
Locales["de"] = {
|
||||
["show_active_character"] = "Aktiven Charakter anzeigen",
|
||||
["active_character"] = "Aktiver Charakter: %s",
|
||||
["error_active_character"] = "Beim Abrufen deiner Daten ist ein Fehler aufgetreten",
|
||||
["delete_character"] = "Lösche deinen aktuellen Charakter.",
|
||||
["deleted_character"] = "Charakter gelöscht",
|
||||
["error_delete_character"] = "Es gab ein Problem beim löschen deines Charakters.",
|
||||
["thank_you_for_registering"] = "Registrierung erfolgreich.",
|
||||
["debug_xPlayer_get_first_name"] = "Gibt deinen Vornamen zurück",
|
||||
["debug_xPlayer_get_last_name"] = "Gibt deinen Nachnamen zurück",
|
||||
["debug_xPlayer_get_full_name"] = "Gibt deinen vollständigen Namen zurück",
|
||||
["debug_xPlayer_get_sex"] = "Gibt dein Geschlecht zurück",
|
||||
["debug_xPlayer_get_dob"] = "Gibt dein Geburtsdatum zurück",
|
||||
["debug_xPlayer_get_height"] = "Gibt deine Körpergröße zurück",
|
||||
["error_debug_xPlayer_get_first_name"] = "Es gab ein Problem beim Abrufen deines Vornamens.",
|
||||
["error_debug_xPlayer_get_last_name"] = "Es gab ein Problem beim Abrufen deines Nachnamens.",
|
||||
["error_debug_xPlayer_get_full_name"] = "Es gab ein Problem beim Abrufen deines vollständigen Namens.",
|
||||
["error_debug_xPlayer_get_sex"] = "Es gab ein Problem beim Abrufen deines Geschlechts.",
|
||||
["error_debug_xPlayer_get_dob"] = "Es gab ein Problem beim Abrufen deines Geburtsdatums.",
|
||||
["error_debug_xPlayer_get_height"] = "Es gab ein Problem beim Abrufen deiner Körpergröße.",
|
||||
["return_debug_xPlayer_get_first_name"] = "Vorname: %s",
|
||||
["return_debug_xPlayer_get_last_name"] = "Nachname: %s",
|
||||
["return_debug_xPlayer_get_full_name"] = "Name: %s",
|
||||
["return_debug_xPlayer_get_sex"] = "Geschlecht: %s",
|
||||
["return_debug_xPlayer_get_dob"] = "Geburtsdatum: %s",
|
||||
["return_debug_xPlayer_get_height"] = "Größe: %s cm",
|
||||
["data_incorrect"] = "Ungültige Daten, bitte versuche es erneut",
|
||||
["invalid_format"] = "Ungültiges Datenformat, bitte versuche es erneut.",
|
||||
["no_identifier"] = "Es gab ein Problem beim Laden deines Charakters!\nFehlercode: identifier-missing\n\nDies wird dadurch verursacht, dass deine R* ID fehlt. Bitte versuche es erneut oder melde dieses Problem dem Support.",
|
||||
["missing_identity"] = "Es gab ein Problem beim Laden deines Charakters!\nFehlercode: identifier-missing\n\nDies wird dadurch verursacht, dass deine R* ID fehlt. Bitte versuche es erneut oder melde dieses Problem dem Support.",
|
||||
["deleted_identity"] = "Charakter gelöscht. Bitte verbinde dich erneut, um einen neuen Charakter zu erstellen.",
|
||||
["already_registered"] = "Du hast dich bereits registriert.",
|
||||
["invalid_firstname_format"] = "Ungültiges Format (Vorname): Bitte versuche es erneut.",
|
||||
["invalid_lastname_format"] = "Ungültiges Format (Nachname): Bitte versuche es erneut.",
|
||||
["invalid_dob_format"] = "Ungültiges Format (Geburtstag): Bitte versuche es erneut.",
|
||||
["invalid_sex_format"] = "Ungültiges Format (Geschlecht): Bitte versuche es erneut.",
|
||||
["invalid_height_format"] = "Ungültiges Format (Körpergröße): Bitte versuche es erneut.",
|
||||
}
|
||||
@@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
esx_menu_default
|
||||
Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
esx_loadingscreen
|
||||
Copyright (C) 2020-2024 ESX Framework
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
esx_menu_default Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
esx_loadingscreen Copyright (C) 2020-2024 ESX Framework
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
@@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
||||
@@ -6,7 +6,7 @@ A simple but beautiful Loading Screen for your server!
|
||||
|
||||
esx_loadingscreen - Loading in style!
|
||||
|
||||
Copyright (C) 2023 ESX-Framework
|
||||
Copyright (C) 2020-2024 ESX Framework
|
||||
|
||||
This program Is free software: you can redistribute it And/Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option) any later version.
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
game 'common'
|
||||
|
||||
version '1.10.5'
|
||||
fx_version 'cerulean'
|
||||
author 'ESX-Framework'
|
||||
description 'Allows resources to Run tasks at specific intervals.'
|
||||
version '1.10.5'
|
||||
lua54 'yes'
|
||||
|
||||
loadscreen 'index.html'
|
||||
|
||||
shared_script 'config.lua'
|
||||
|
||||
@@ -632,7 +632,7 @@ state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
esx_menu_default
|
||||
Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
esx_menu_default Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
esx_menu_default Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
@@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<h1 align='center'>[ESX] Menu Defualt</a></h1><p align='center'><b><a href='https://discord.esx-framework.org/'>Discord</a> - <a href='https://esx-framework.org/'>Website</a> - <a href='https://documentation.esx-framework.org/legacy/installation'>Documentation</a></b></h5>
|
||||
|
||||
A defualt List type menu for ESX.
|
||||
A default List type menu for ESX.
|
||||
|
||||

|
||||

|
||||
|
||||
## Legal
|
||||
|
||||
esx_menu_defualt - Default Menu!
|
||||
esx_menu_default - Default Menu!
|
||||
|
||||
Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
fx_version 'adamant'
|
||||
|
||||
game 'gta5'
|
||||
description 'ESX Menu Default'
|
||||
description 'A basic menu system for ESX Legacy.'
|
||||
lua54 'yes'
|
||||
version '1.10.5'
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
});
|
||||
|
||||
ESX_MENU.render();
|
||||
$("#menu_" + namespace + "_" + name)
|
||||
$(document.getElementById("menu_" + namespace + "_" + name))
|
||||
.find(".menu-item.selected")[0]
|
||||
.scrollIntoView();
|
||||
};
|
||||
@@ -121,7 +121,7 @@
|
||||
}
|
||||
|
||||
if (typeof focused != "undefined") {
|
||||
$("#menu_" + focused.namespace + "_" + focused.name).show();
|
||||
$(document.getElementById("menu_" + focused.namespace + "_" + focused.name)).show();
|
||||
}
|
||||
|
||||
$(menuContainer).show();
|
||||
@@ -231,7 +231,7 @@
|
||||
ESX_MENU.change(focused.namespace, focused.name, elem);
|
||||
ESX_MENU.render();
|
||||
|
||||
$("#menu_" + focused.namespace + "_" + focused.name)
|
||||
$(document.getElementById("menu_" + focused.namespace + "_" + focused.name))
|
||||
.find(".menu-item.selected")[0]
|
||||
.scrollIntoView();
|
||||
}
|
||||
@@ -266,7 +266,7 @@
|
||||
ESX_MENU.change(focused.namespace, focused.name, elem);
|
||||
ESX_MENU.render();
|
||||
|
||||
$("#menu_" + focused.namespace + "_" + focused.name)
|
||||
$(document.getElementById("menu_" + focused.namespace + "_" + focused.name))
|
||||
.find(".menu-item.selected")[0]
|
||||
.scrollIntoView();
|
||||
}
|
||||
@@ -302,7 +302,7 @@
|
||||
break;
|
||||
}
|
||||
|
||||
$("#menu_" + focused.namespace + "_" + focused.name)
|
||||
$(document.getElementById("menu_" + focused.namespace + "_" + focused.name))
|
||||
.find(".menu-item.selected")[0]
|
||||
.scrollIntoView();
|
||||
}
|
||||
@@ -341,7 +341,7 @@
|
||||
break;
|
||||
}
|
||||
|
||||
$("#menu_" + focused.namespace + "_" + focused.name)
|
||||
$(document.getElementById("menu_" + focused.namespace + "_" + focused.name))
|
||||
.find(".menu-item.selected")[0]
|
||||
.scrollIntoView();
|
||||
}
|
||||
|
||||
@@ -632,7 +632,7 @@ state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
esx_menu_dialog
|
||||
Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
esx_menu_dialog Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
esx_menu_dialog Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
@@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
||||
@@ -1,23 +1,6 @@
|
||||
# esx_menu_dialog
|
||||
Simple script used for inputs.
|
||||
|
||||
## Download & Installation
|
||||
|
||||
### Using [fvm](https://github.com/qlaffont/fvm-installer)
|
||||
```
|
||||
fvm install --save --folder=esx esx-org/esx_menu_dialog
|
||||
```
|
||||
|
||||
### Using Git
|
||||
```
|
||||
cd resources
|
||||
git clone https://github.com/ESX-Org/esx_menu_dialog [esx]/esx_menu_dialog
|
||||
```
|
||||
|
||||
### Manually
|
||||
- Download https://github.com/ESX-Org/esx_menu_dialog/archive/master.zip
|
||||
- Put it in the `[esx]` directory
|
||||
|
||||
## Installation
|
||||
- Add this to your `server.cfg`:
|
||||
|
||||
@@ -29,7 +12,7 @@ start esx_menu_dialog
|
||||
### License
|
||||
esx_menu_dialog - input dialog for ESX
|
||||
|
||||
Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
Copyright (C) 2015-2024 ESX-Framework
|
||||
|
||||
This program Is free software: you can redistribute it And/Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option) any later version.
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
fx_version 'adamant'
|
||||
|
||||
game 'gta5'
|
||||
description 'ESX Menu Dialog'
|
||||
description 'A basic input dialog for ESX Legacy.'
|
||||
lua54 'yes'
|
||||
version '1.10.5'
|
||||
|
||||
|
||||
@@ -632,7 +632,7 @@ state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
esx_menu_list
|
||||
Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
esx_menu_list Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
esx_menu_list Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
@@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
||||
@@ -1,35 +1,11 @@
|
||||
# esx_menu_list
|
||||
Advanced menu inputs for ESX
|
||||
|
||||
## Download & Installation
|
||||
|
||||
### Using [fvm](https://github.com/qlaffont/fvm-installer)
|
||||
```
|
||||
fvm install --save --folder=esx esx-org/esx_menu_list
|
||||
```
|
||||
|
||||
### Using Git
|
||||
```
|
||||
cd resources
|
||||
git clone https://github.com/ESX-Org/esx_menu_list [esx]/esx_menu_list
|
||||
```
|
||||
|
||||
### Manually
|
||||
- Download https://github.com/ESX-Org/esx_menu_list/archive/master.zip
|
||||
- Put it in the `[esx]` directory
|
||||
|
||||
## Installation
|
||||
- Add this to your `server.cfg`:
|
||||
|
||||
```
|
||||
start esx_menu_list
|
||||
```
|
||||
|
||||
# Legal
|
||||
### License
|
||||
esx_menu_list - advanced menu inputs for ESX
|
||||
|
||||
Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
Copyright (C) 2015-2024 ESX-Framework
|
||||
|
||||
This program Is free software: you can redistribute it And/Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option) any later version.
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
fx_version 'adamant'
|
||||
|
||||
game 'gta5'
|
||||
description 'ESX Menu List'
|
||||
description 'A basic table-based menu system for ESX Legacy.'
|
||||
lua54 'yes'
|
||||
version '1.10.5'
|
||||
|
||||
|
||||
@@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
esx_multicharacter
|
||||
Copyright (C) 2022-2024 ESX Framework, Linden, KASH
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
esx_multicharacter Copyright (C) 2022-2024 ESX Framework, Linden, KASH
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
local mp_m_freemode_01 = `mp_m_freemode_01`
|
||||
local mp_f_freemode_01 = `mp_f_freemode_01`
|
||||
|
||||
local SpawnCoords = Config.Spawn[math.random(#Config.Spawn)]
|
||||
local SpawnCoords = Config.Spawn[ESX.Math.Random(1,#Config.Spawn)]
|
||||
|
||||
if ESX.GetConfig().Multichar then
|
||||
CreateThread(function()
|
||||
|
||||
@@ -16,7 +16,7 @@ else
|
||||
-- Sets the location for the character selection scene
|
||||
-- To set the spawn location for new characters, modify the default value in the users SQL table
|
||||
Config.Spawn = {
|
||||
{ x = -284.2856, y = 562.4627, z = 172.9182, heading = 19.9895 },
|
||||
{ x = -284.2856, y = 562.4627, z = 172.9182, w = 19.9895 },
|
||||
}
|
||||
--------------------
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ fx_version 'cerulean'
|
||||
|
||||
game 'gta5'
|
||||
author 'ESX-Framework - Linden - KASH'
|
||||
description 'Official Multicharacter System For ESX Legacy'
|
||||
description 'Allows players to have multiple characters on the same account.'
|
||||
version '1.10.5'
|
||||
lua54 'yes'
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
Locales["de"] = {
|
||||
["male"] = "Männlich",
|
||||
["female"] = "Weiblich",
|
||||
["select_char"] = "Charakter auswählen",
|
||||
["select_char_description"] = "Wähle einen Charakter aus, mit den du spielen willst.",
|
||||
["create_char"] = "Neuer Charakter",
|
||||
["char_play"] = "Spielen",
|
||||
["char_play_description"] = "Weiter in die Stadt.",
|
||||
["char_disabled"] = "Deaktiviert",
|
||||
["char_disabled_description"] = "Dieser Charakter ist deaktiviert.",
|
||||
["char_delete"] = "Löschen",
|
||||
["char_delete_description"] = "Dieser Charakter wird dauerhaft entfernt.",
|
||||
["char_delete_confirmation"] = "Bestätigung zur Entfernung deines Charakters.",
|
||||
["char_delete_confirmation_description"] = "Bist du sicher, dass du den ausgewählten Charakter entfernen willst?",
|
||||
["char_delete_yes_description"] = "Ja, ich bin sicher, dass ich den ausgewählten Charakter lösche",
|
||||
["char_delete_no_description"] = "Nein, zurück zu den Charakteroptionen",
|
||||
["character"] = " Charakter: %s",
|
||||
["return"] = "Zurück",
|
||||
["return_description"] = "Zur Charakterauswahl zurückkehren.",
|
||||
["command_setslots"] = "Anzahl der Charakter-Slots eines Spielers festlegen",
|
||||
["command_remslots"] = "Die Anzahl der Charakter-Slots eines Spielers entfernen",
|
||||
["command_enablechar"] = "Aktiviere einen bestimmten Charakter eines Spielers",
|
||||
["command_disablechar"] = "Deaktiviere einen bestimmten Charakter eines Spielers",
|
||||
["command_charslot"] = "Slotnummer des Charakters",
|
||||
["command_identifier"] = "Spieler R* ID",
|
||||
["command_slots"] = "Anzahl von Charakter-Slots",
|
||||
["slotsadd"] = "Du hast %s Charakter-Slots auf %s gesetzt",
|
||||
["slotsrem"] = "Du hast &s Charakter-Slots auf %s entfernt",
|
||||
["charenabled"] = "Du hast den Charakter #%s von %s aktiviert",
|
||||
["chardisabled"] = "Du hast den Charakter #%s von %s deaktiviert",
|
||||
["charnotfound"] = "Charakter #%s von %s existiert nicht",
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
Locales["gr"] = {
|
||||
["male"] = "Άνδρας",
|
||||
["female"] = "Γυναίκα",
|
||||
["select_char"] = "Επιλογή Χαρακτήρα",
|
||||
["select_char_description"] = "Επιλέξτε ένα χαρακτήρα για να παίξετε.",
|
||||
["create_char"] = "Νέος Χαρακτήρας",
|
||||
["char_play"] = "Παίξτε",
|
||||
["char_play_description"] = "Συνέχεια στην πόλη.",
|
||||
["char_disabled"] = "Απενεργοποιημένος",
|
||||
["char_disabled_description"] = "Αυτός ο χαρακτήρας δεν είναι χρησιμοποιήσιμος.",
|
||||
["char_delete"] = "Διαγραφή",
|
||||
["char_delete_description"] = "Διαγράψτε οριστικά αυτόν τον χαρακτήρα.",
|
||||
["char_delete_confirmation"] = "Επιβεβαίωση Διαγραφής",
|
||||
["char_delete_confirmation_description"] = "Είστε σίγουρος ότι θέλετε να διαγράψετε τον επιλεγμένο χαρακτήρα;",
|
||||
["char_delete_yes_description"] = "Ναι, είμαι σίγουρος ότι θέλω να διαγράψω τον επιλεγμένο χαρακτήρα",
|
||||
["char_delete_no_description"] = "Όχι, επιστροφή στις επιλογές χαρακτήρα",
|
||||
["character"] = "Χαρακτήρας: %s",
|
||||
["return"] = "Επιστροφή",
|
||||
["return_description"] = "Επιστροφή στην επιλογή χαρακτήρα.",
|
||||
["command_setslots"] = "Ορίστε τον αριθμό των slot πολλαπλών χαρακτήρων ενός παίκτη",
|
||||
["command_remslots"] = "Αφαιρέστε τον αριθμό των slot πολλαπλών χαρακτήρων ενός παίκτη",
|
||||
["command_enablechar"] = "Ενεργοποιήστε έναν συγκεκριμένο χαρακτήρα ενός παίκτη",
|
||||
["command_disablechar"] = "Απενεργοποιήστε έναν συγκεκριμένο χαρακτήρα ενός παίκτη",
|
||||
["command_charslot"] = "Αριθμός υποδιαίρεσης του χαρακτήρα",
|
||||
["command_identifier"] = "Ταυτότητα παίκτη",
|
||||
["command_slots"] = "Αριθμός slot",
|
||||
["slotsadd"] = "Ορίσατε %s slot σε %s",
|
||||
["slotsrem"] = "Αφαιρέσατε slot από τον %s",
|
||||
["charenabled"] = "Ενεργοποιήσατε τον χαρακτήρα #%s του %s",
|
||||
["chardisabled"] = "Απενεργοποιήσατε τον χαρακτήρα #%s του %s",
|
||||
["charnotfound"] = "Ο χαρακτήρας #%s του %s δεν υπάρχει",
|
||||
}
|
||||
@@ -21,7 +21,7 @@ A Simplistic system, that allows Players to have multiple Characters, which can
|
||||
<tr><td>
|
||||
Official Multi-Character system for ESX Legacy
|
||||
|
||||
Copyright © 2022-2023 Linden, ESX-Framework and KASH
|
||||
Copyright © 2022-2024 Linden, ESX-Framework and KASH
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -136,7 +136,7 @@ end)
|
||||
|
||||
local function DeleteCharacter(source, charid)
|
||||
local identifier = ("%s%s:%s"):format(PREFIX, charid, GetIdentifier(source))
|
||||
local query = "DELETE FROM %s WHERE %s = ?"
|
||||
local query = "DELETE FROM `%s` WHERE %s = ?"
|
||||
local queries = {}
|
||||
local count = 0
|
||||
|
||||
|
||||
@@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
esx_menu_default
|
||||
Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
esx_notify
|
||||
Copyright (C) 2022-2024 ESX Framework
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
esx_menu_default Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
esx_notify Copyright (C) 2022-2024 ESX Framework
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
@@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
||||
@@ -25,8 +25,8 @@ local function Notify(notificatonType, length, message)
|
||||
end
|
||||
|
||||
SendNuiMessage(json.encode({
|
||||
type = notificatonType or "info",
|
||||
length = length or 3000,
|
||||
type = notificatonType,
|
||||
length = length,
|
||||
message = message or "ESX-Notify",
|
||||
}))
|
||||
end
|
||||
|
||||
@@ -4,7 +4,7 @@ lua54 'yes'
|
||||
game 'gta5'
|
||||
version '1.10.5'
|
||||
author 'ESX-Framework'
|
||||
description 'Official NUI Notification system for ESX'
|
||||
description 'A beautiful and simple NUI notification system for ESX'
|
||||
|
||||
shared_script '@es_extended/imports.lua'
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ ESX.ShowNotification("I i ~r~love~s~ donuts", "success", 3000)
|
||||
|
||||
esx_notify- Notify!
|
||||
|
||||
Copyright (C) 2023 ESX-Framework
|
||||
Copyright (C) 2022-2024 ESX-Framework
|
||||
|
||||
This program Is free software: you can redistribute it And/Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option) any later version.
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@ fx_version 'adamant'
|
||||
|
||||
game 'gta5'
|
||||
author 'ESX-Framework'
|
||||
lua54 'yes'
|
||||
description 'A beautiful and simple NUI progress bar for ESX'
|
||||
version '1.10.5'
|
||||
description 'ESX Progressbar'
|
||||
lua54 'yes'
|
||||
|
||||
client_scripts { 'Progress.lua' }
|
||||
shared_script '@es_extended/imports.lua'
|
||||
|
||||
@@ -632,7 +632,7 @@ state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
esx_skin
|
||||
Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
esx_skin Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
esx_skin Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
@@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
fx_version 'adamant'
|
||||
|
||||
game 'gta5'
|
||||
description 'ESX Skin'
|
||||
description 'Allows players to customise their character\'s appearance'
|
||||
version '1.10.5'
|
||||
lua54 'yes'
|
||||
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
Locales["de"] = {
|
||||
["skin_menu"] = "Skin Menü",
|
||||
["use_rotate_view"] = "Drücke ~INPUT_FRONTEND_LS~ oder ~INPUT_CHARACTER_WHEEL~ um deine Ansicht zu ändern.",
|
||||
["skin"] = "Aussehen ändern",
|
||||
["saveskin"] = "Aussehen abspeichern",
|
||||
}
|
||||
@@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
esx_menu_default
|
||||
Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
esx_textui
|
||||
Copyright (C) 2015-2024 ESX Framework
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
esx_menu_default Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
esx_textui Copyright (C) 2022-2024 ESX Framework
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
@@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
||||
@@ -2,8 +2,8 @@ fx_version 'adamant'
|
||||
|
||||
game 'gta5'
|
||||
author 'ESX-Framework'
|
||||
description 'A beautiful and simple Persistent Notification system for ESX.'
|
||||
version '1.10.5'
|
||||
description 'ESX TextUI'
|
||||
lua54 'yes'
|
||||
|
||||
client_scripts { 'TextUI.lua' }
|
||||
|
||||
@@ -41,9 +41,9 @@ ESX.TextUI("i ~r~love~s~ donuts", "error")
|
||||
|
||||
## Legal
|
||||
|
||||
esx_textui - Persistant Notifications!
|
||||
esx_textui - Persistent Notifications
|
||||
|
||||
Copyright (C) 2023 ESX-Framework
|
||||
Copyright (C) 2022-2024 ESX Framework
|
||||
|
||||
This program Is free software: you can redistribute it And/Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option) any later version.
|
||||
|
||||
|
||||
@@ -632,7 +632,7 @@ state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
skinchanger
|
||||
Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
skinchanger Copyright (C) 2015-2023 Jérémie N'gadi
|
||||
skinchanger Copyright (C) 2015-2024 Jérémie N'gadi
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
@@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
fx_version 'adamant'
|
||||
|
||||
game 'gta5'
|
||||
lua54 'yes'
|
||||
description 'Official ESX-Legacy resource for handling the Player`s Skin'
|
||||
description 'Saves/loads character appearances for ESX Legacy.'
|
||||
version '1.10.5'
|
||||
lua54 'yes'
|
||||
|
||||
client_scripts {
|
||||
'@es_extended/locale.lua',
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
Locales["de"] = {
|
||||
["sex"] = "Geschlecht",
|
||||
["mom"] = "Mutters Gesicht",
|
||||
["dad"] = "Vaters Gesicht",
|
||||
["resemblance"] = "Ähnlichkeit",
|
||||
["skin_tone"] = "Hautton",
|
||||
["nose_1"] = "Nasenbreite",
|
||||
["nose_2"] = "Höhe der Nasenspitze",
|
||||
["nose_3"] = "Länge der Nasenspitze",
|
||||
["nose_4"] = "Nasenbeinhöhe",
|
||||
["nose_5"] = "Nasenspitzenabsenkung",
|
||||
["nose_6"] = "Nasenbeinverdrehung",
|
||||
["cheeks_1"] = "Wangenknochenhöhe",
|
||||
["cheeks_2"] = "Wangenknochenbreite",
|
||||
["cheeks_3"] = "Wangenbreite",
|
||||
["lip_fullness"] = "Lippendicke",
|
||||
["jaw_bone_width"] = "Kieferknochenbreite",
|
||||
["jaw_bone_length"] = "Kieferknochenlänge",
|
||||
["chin_height"] = "Kinnhöhe",
|
||||
["chin_length"] = "Kinnlänge",
|
||||
["chin_width"] = "Kinnbreite",
|
||||
["chin_hole"] = "Kinnlochgröße",
|
||||
["neck_thickness"] = "Halsdicke",
|
||||
["wrinkles"] = "Falten",
|
||||
["wrinkle_thickness"] = "Faltenstärke",
|
||||
["beard_type"] = "Barttyp",
|
||||
["beard_size"] = "Bartgröße",
|
||||
["beard_color_1"] = "Bartfarbe 1",
|
||||
["beard_color_2"] = "Bartfarbe 2",
|
||||
["hair_1"] = "Haare 1",
|
||||
["hair_2"] = "Haare 2",
|
||||
["hair_color_1"] = "Haarfarbe 1",
|
||||
["hair_color_2"] = "Haarfarbe 2",
|
||||
["eye_color"] = "Augenfarbe",
|
||||
["eye_squint"] = "Augenblinzeln",
|
||||
["eyebrow_type"] = "Augenbrauentyp",
|
||||
["eyebrow_size"] = "Augenbrauengröße",
|
||||
["eyebrow_color_1"] = "Augenbrauenfarbe 1",
|
||||
["eyebrow_color_2"] = "Augenbrauenfarbe 2",
|
||||
["eyebrow_depth"] = "Augenbrauentiefe",
|
||||
["eyebrow_height"] = "Augenbrauenhöhe",
|
||||
["makeup_type"] = "Makeup-Typ",
|
||||
["makeup_thickness"] = "Makeupstärke",
|
||||
["makeup_color_1"] = "Schminkfarbe 1",
|
||||
["makeup_color_2"] = "Schminkfarbe 2",
|
||||
["lipstick_type"] = "Lippenstifttyp",
|
||||
["lipstick_thickness"] = "Lippenstiftdicke",
|
||||
["lipstick_color_1"] = "Lippenstiftfarbe 1",
|
||||
["lipstick_color_2"] = "Lippenstiftfarbe 2",
|
||||
["ear_accessories"] = "Ohrenzubehör",
|
||||
["ear_accessories_color"] = "Ohrenzubehör Farbe",
|
||||
["tshirt_1"] = "T-Shirt 1",
|
||||
["tshirt_2"] = "T-Shirt 2",
|
||||
["torso_1"] = "Oberkörper 1",
|
||||
["torso_2"] = "Oberkörper 2",
|
||||
["decals_1"] = "Abziehbilder 1",
|
||||
["decals_2"] = "Abziehbilder 2",
|
||||
["arms"] = "Arme 1",
|
||||
["arms_2"] = "Arme 2",
|
||||
["pants_1"] = "Hose 1",
|
||||
["pants_2"] = "Hose 2",
|
||||
["schuhe_1"] = "Schuhe 1",
|
||||
["Schuhe_2"] = "Schuhe 2",
|
||||
["mask_1"] = "Maske 1",
|
||||
["mask_2"] = "Maske 2",
|
||||
["bproof_1"] = "Kugelsichere Weste 1",
|
||||
["bproof_2"] = "Kugelsichere Weste 2",
|
||||
["chain_1"] = "Kette 1",
|
||||
["chain_2"] = "Kette 2",
|
||||
["helmet_1"] = "Helm 1",
|
||||
["helmet_2"] = "Helm 2",
|
||||
["watches_1"] = "Uhren 1",
|
||||
["watches_2"] = "Uhren 2",
|
||||
["bracelets_1"] = "Armbänder 1",
|
||||
["bracelets_2"] = "Armbänder 2",
|
||||
["glasses_1"] = "Brille 1",
|
||||
["glasses_2"] = "Brille 2",
|
||||
["bag"] = "Tasche",
|
||||
["bag_color"] = "Taschenfarbe",
|
||||
["blemishes"] = "Schönheitsfehler",
|
||||
["blemishes_size"] = "Fleckenstärke",
|
||||
["ageing"] = "Alterung",
|
||||
["ageing_1"] = "Alterungsstärke",
|
||||
["blush"] = "Erröten",
|
||||
["blush_1"] = "Errötungsstärke",
|
||||
["blush_color"] = "Errötungsfarbe",
|
||||
["complexion"] = "Teint",
|
||||
["complexion_1"] = "Teintstärke",
|
||||
["sun"] = "Sonne",
|
||||
["sun_1"] = "Sonnenstärke",
|
||||
["sommersprossen"] = "Sommersprossen",
|
||||
["sommersprossen_1"] = "Sommersprossenstärke",
|
||||
["chest_hair"] = "Brusthaar",
|
||||
["chest_hair_1"] = "Brusthaarstärke",
|
||||
["chest_color"] = "Brusthaarfarbe",
|
||||
["bodyb"] = "Körpermakel",
|
||||
["bodyb_size"] = "Körpermakelstärke",
|
||||
["bodyb_extra"] = "Körperfleckeneffekt",
|
||||
["bodyb_extra_thickness"] = "Körperfleckeneffektstärke",
|
||||
}
|
||||
Reference in New Issue
Block a user