Merge pull request #1363 from esx-framework/dev

📄 1.10.6 Release
This commit is contained in:
Gellipapa
2024-06-16 14:58:51 +02:00
committed by GitHub
59 changed files with 513 additions and 233 deletions
+2 -2
View File
@@ -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. the "copyright" line and a pointer to where the full notice is found.
esx-legacy 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 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 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 If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode: 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 program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. under certain conditions; type `show c' for details.
+3 -3
View File
@@ -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. the "copyright" line and a pointer to where the full notice is found.
cron 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 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 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 If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode: 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 program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. 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 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 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 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 -1
View File
@@ -2,7 +2,7 @@ fx_version 'adamant'
game 'gta5' game 'gta5'
author 'ESX-Framework' author 'ESX-Framework'
description 'cron' description 'Allows resources to Run tasks at specific intervals.'
lua54 'yes' lua54 'yes'
version '1.10.5' version '1.10.5'
+3 -3
View File
@@ -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. the "copyright" line and a pointer to where the full notice is found.
es_extended 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 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 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 If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode: 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 program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. 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 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 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 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>.
+11 -17
View File
@@ -507,10 +507,10 @@ function ESX.Game.GetClosestEntity(entities, isPlayerEntities, coords, modelFilt
if modelFilter then if modelFilter then
filteredEntities = {} filteredEntities = {}
for _, entity in pairs(entities) do for currentEntityIndex = 1, #entities do
if modelFilter[GetEntityModel(entity)] then if modelFilter[GetEntityModel(entities[currentEntityIndex])] then
filteredEntities[#filteredEntities + 1] = entity filteredEntities[#filteredEntities + 1] = entities[currentEntityIndex]
end end
end end
end end
@@ -576,21 +576,15 @@ function ESX.Game.GetVehicleProperties(vehicle)
end end
local doorsBroken, windowsBroken, tyreBurst = {}, {}, {} 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 local wheel_count = GetVehicleNumberOfWheels(vehicle);
for _, idx in pairs(TyresIndex[numWheels]) do
tyreBurst[tostring(idx)] = IsVehicleTyreBurst(vehicle, idx, false) for wheel_index = 0, wheel_count - 1 do
end tyreBurst[tostring(wheel_index)] = IsVehicleTyreBurst(vehicle, wheel_index, false)
end end
for windowId = 0, 7 do -- 13 for windowId = 0, 7 do -- 13
RollUpWindow(vehicle, windowId) --fix when you put the car away with the window down RollUpWindow(vehicle, windowId) --fix when you put the car away with the window down
windowsBroken[tostring(windowId)] = not IsVehicleWindowIntact(vehicle, windowId) windowsBroken[tostring(windowId)] = not IsVehicleWindowIntact(vehicle, windowId)
@@ -1128,8 +1122,8 @@ function ESX.ShowInventory()
{ unselectable = true, icon = "fas fa-users", title = "Nearby Players" }, { unselectable = true, icon = "fas fa-users", title = "Nearby Players" },
} }
for _, playerNearby in ipairs(playersNearby) do for currentNearbyPlayerIndex = 1, #playersNearby do
players[GetPlayerServerId(playerNearby)] = true players[GetPlayerServerId(playersNearby[currentNearbyPlayerIndex])] = true
end end
ESX.TriggerServerCallback("esx:getPlayerNames", function(returnedPlayers) ESX.TriggerServerCallback("esx:getPlayerNames", function(returnedPlayers)
+7 -18
View File
@@ -24,7 +24,7 @@ function ESX.SpawnPlayer(skin, coords, cb)
p:resolve() p:resolve()
end) end)
Citizen.Await(p) Citizen.Await(p)
local playerPed = PlayerPedId() local playerPed = PlayerPedId()
FreezeEntityPosition(playerPed, true) FreezeEntityPosition(playerPed, true)
SetEntityCoordsNoOffset(playerPed, coords.x, coords.y, coords.z, false, false, false, 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 while not DoesEntityExist(ESX.PlayerData.ped) do
Wait(20) Wait(20)
end end
ESX.PlayerLoaded = true ESX.PlayerLoaded = true
local metadata = ESX.PlayerData.metadata local metadata = ESX.PlayerData.metadata
@@ -271,29 +271,13 @@ AddEventHandler("esx:restoreLoadout", function()
end end
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) AddStateBagChangeHandler("VehicleProperties", nil, function(bagName, _, value)
if not value then if not value then
return return
end end
local netId = bagName:gsub("entity:", "") 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 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) end)
@@ -378,6 +362,11 @@ AddEventHandler("esx:setJob", function(Job)
ESX.SetPlayerData("job", Job) ESX.SetPlayerData("job", Job)
end) end)
RegisterNetEvent("esx:setGroup")
AddEventHandler("esx:setGroup", function(group)
ESX.SetPlayerData("group", group)
end)
if not Config.OxInventory then if not Config.OxInventory then
RegisterNetEvent("esx:createPickup") RegisterNetEvent("esx:createPickup")
AddEventHandler("esx:createPickup", function(pickupId, label, coords, itemType, name, components, tintIndex) AddEventHandler("esx:createPickup", function(pickupId, label, coords, itemType, name, components, tintIndex)
@@ -24,6 +24,11 @@ local function GetData(vehicle)
return displayName, netId return displayName, netId
end end
local function ToggleVehicleStatus(inVehicle, seat)
ESX.SetPlayerData("vehicle", inVehicle)
ESX.SetPlayerData("seat", seat)
end
CreateThread(function() CreateThread(function()
while not ESX.PlayerLoaded do Wait(200) end while not ESX.PlayerLoaded do Wait(200) end
while true do while true do
@@ -64,11 +69,13 @@ CreateThread(function()
isEnteringVehicle = true isEnteringVehicle = true
TriggerEvent("esx:enteringVehicle", vehicle, plate, seat, netId) TriggerEvent("esx:enteringVehicle", vehicle, plate, seat, netId)
TriggerServerEvent("esx:enteringVehicle", 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 elseif not DoesEntityExist(GetVehiclePedIsTryingToEnter(playerPed)) and not IsPedInAnyVehicle(playerPed, true) and isEnteringVehicle then
-- vehicle entering aborted -- vehicle entering aborted
TriggerEvent("esx:enteringVehicleAborted") TriggerEvent("esx:enteringVehicleAborted")
TriggerServerEvent("esx:enteringVehicleAborted") TriggerServerEvent("esx:enteringVehicleAborted")
isEnteringVehicle = false isEnteringVehicle = false
ToggleVehicleStatus(false, false)
elseif IsPedInAnyVehicle(playerPed, false) then elseif IsPedInAnyVehicle(playerPed, false) then
-- suddenly appeared in a vehicle, possible teleport -- suddenly appeared in a vehicle, possible teleport
isEnteringVehicle = false isEnteringVehicle = false
@@ -79,6 +86,7 @@ CreateThread(function()
current.displayName, current.netId = GetData(current.vehicle) current.displayName, current.netId = GetData(current.vehicle)
TriggerEvent("esx:enteredVehicle", current.vehicle, current.plate, current.seat, current.displayName, current.netId) TriggerEvent("esx:enteredVehicle", current.vehicle, current.plate, current.seat, current.displayName, current.netId)
TriggerServerEvent("esx:enteredVehicle", 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 end
elseif isInVehicle then elseif isInVehicle then
if not IsPedInAnyVehicle(playerPed, false) or IsPlayerDead(PlayerId()) 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) TriggerServerEvent("esx:exitedVehicle", current.plate, current.seat, current.displayName, current.netId)
isInVehicle = false isInVehicle = false
current = {} current = {}
ToggleVehicleStatus(false,false)
end end
end end
Wait(200) Wait(200)
+33
View File
@@ -106,3 +106,36 @@ end
function ESX.Round(value, numDecimalPlaces) function ESX.Round(value, numDecimalPlaces)
return ESX.Math.Round(value, numDecimalPlaces) return ESX.Math.Round(value, numDecimalPlaces)
end 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 return nil
end end
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() exports("getSharedObject", function()
return ESX return ESX
end) end)
AddEventHandler("esx:getSharedObject", function() AddEventHandler("esx:getSharedObject", function()
local Invoke = GetInvokingResource() 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)) 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) end)
+6 -6
View File
@@ -38,21 +38,21 @@ Config.AdminGroups = {
Config.EnablePaycheck = true -- enable paycheck Config.EnablePaycheck = true -- enable paycheck
Config.LogPaycheck = false -- Logs paychecks to a nominated Discord channel via webhook (default is false) 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.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.MaxWeight = 24 -- the max inventory weight without a backpack
Config.PaycheckInterval = 7 * 60000 -- how often to recieve pay checks in milliseconds Config.PaycheckInterval = 7 * 60000 -- how often to receive paychecks in milliseconds
Config.EnableDebug = false -- Use Debug options? Config.EnableDebug = false -- Use Debug options?
Config.EnableDefaultInventory = true -- Display the default Inventory ( F2 ) Config.EnableDefaultInventory = true -- Display the default Inventory ( F2 )
Config.EnableWantedLevel = false -- Use Normal GTA wanted Level? Config.EnableWantedLevel = false -- Use Normal GTA wanted Level?
Config.EnablePVP = true -- Allow Player to player combat Config.EnablePVP = true -- Allow Player to player combat
Config.Multichar = GetResourceState("esx_multicharacter") ~= "missing" 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.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.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.DisableNPCDrops = false -- stops NPCs from dropping weapons on death
Config.DisableDispatchServices = false -- Disable Dispatch services Config.DisableDispatchServices = false -- Disable Dispatch services
Config.DisableScenarios = false -- Disable Scenarios Config.DisableScenarios = false -- Disable Scenarios
@@ -85,12 +85,12 @@ Config.RemoveHudComponents = {
[22] = false, --HUD_WEAPONS [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 Config.CustomAIPlates = "........" -- Custom plates for AI vehicles
-- Pattern string format -- Pattern string format
--1 will lead to a random number from 0-9. --1 will lead to a random number from 0-9.
--A will lead to a random letter from A-Z. --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. --^1 will lead to a literal 1 being emitted.
--^A will lead to a literal A being emitted. --^A will lead to a literal A being emitted.
--Any other character will lead to said character being emitted. --Any other character will lead to said character being emitted.
+6 -7
View File
@@ -1,7 +1,7 @@
fx_version 'cerulean' fx_version 'cerulean'
game 'gta5' game 'gta5'
description 'ES Extended' description 'The Core resource that provides the functionalities for all other resources.'
lua54 'yes' lua54 'yes'
version '1.10.5' version '1.10.5'
@@ -11,6 +11,9 @@ shared_scripts {
'config.lua', 'config.lua',
'config.weapons.lua', 'config.weapons.lua',
'common/modules/*.lua',
'common/*.lua',
} }
server_scripts { server_scripts {
@@ -27,10 +30,9 @@ server_scripts {
'server/main.lua', 'server/main.lua',
'server/commands.lua', 'server/commands.lua',
'common/modules/*.lua',
'common/functions.lua',
'server/modules/actions.lua', 'server/modules/actions.lua',
'server/modules/npwd.lua' 'server/modules/npwd.lua',
'server/modules/createJob.lua'
} }
client_scripts { client_scripts {
@@ -41,9 +43,6 @@ client_scripts {
'client/main.lua', 'client/main.lua',
'common/modules/*.lua',
'common/functions.lua',
'common/functions.lua', 'common/functions.lua',
'client/modules/actions.lua', 'client/modules/actions.lua',
'client/modules/death.lua', 'client/modules/death.lua',
@@ -140,7 +140,7 @@ Core.PlayerFunctionOverrides.OxInventory = {
return function(newWeight) return function(newWeight)
self.maxWeight = newWeight self.maxWeight = newWeight
self.triggerEvent("esx:setMaxWeight", self.maxWeight) self.triggerEvent("esx:setMaxWeight", self.maxWeight)
return Inventory.Set(self.source, "maxWeight", newWeight) return Inventory.SetMaxWeight(self.source, newWeight)
end end
end, end,
+11 -2
View File
@@ -1,5 +1,6 @@
local _GetPlayerPed = GetPlayerPed local _GetPlayerPed = GetPlayerPed
local _GetEntityCoords = GetEntityCoords local _GetEntityCoords = GetEntityCoords
local _GetEntityHeading = GetEntityHeading
local _ExecuteCommand = ExecuteCommand local _ExecuteCommand = ExecuteCommand
local _SetEntityCoords = SetEntityCoords local _SetEntityCoords = SetEntityCoords
local _SetEntityHeading = SetEntityHeading local _SetEntityHeading = SetEntityHeading
@@ -80,8 +81,9 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
function self.getCoords(vector) function self.getCoords(vector)
local ped <const> = _GetPlayerPed(self.source) local ped <const> = _GetPlayerPed(self.source)
local coordinates <const> = _GetEntityCoords(ped) 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 end
---@param reason string ---@param reason string
@@ -127,9 +129,16 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
---@param newGroup string ---@param newGroup string
---@return void ---@return void
function self.setGroup(newGroup) function self.setGroup(newGroup)
local lastGroup = self.group
_ExecuteCommand(("remove_principal identifier.%s group.%s"):format(self.license, self.group)) _ExecuteCommand(("remove_principal identifier.%s group.%s"):format(self.license, self.group))
self.group = newGroup 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) Player(self.source).state:set("group", self.group, true)
_ExecuteCommand(("add_principal identifier.%s group.%s"):format(self.license, self.group)) _ExecuteCommand(("add_principal identifier.%s group.%s"):format(self.license, self.group))
end end
@@ -475,7 +484,7 @@ function CreateExtendedPlayer(playerId, identifier, group, accounts, inventory,
skin_female = gradeObject.skin_female and json.decode(gradeObject.skin_female) or {}, 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) self.triggerEvent("esx:setJob", self.job, lastJob)
Player(self.source).state:set("job", self.job, true) Player(self.source).state:set("job", self.job, true)
end end
-9
View File
@@ -18,15 +18,6 @@ RegisterNetEvent("esx:onPlayerSpawn", function()
ESX.Players[source].spawned = true ESX.Players[source].spawned = true
end) 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 if Config.OxInventory then
Config.PlayerFunctionOverride = "OxInventory" Config.PlayerFunctionOverride = "OxInventory"
SetConvarReplicated("inventory:framework", "esx") SetConvarReplicated("inventory:framework", "esx")
+22 -43
View File
@@ -4,6 +4,24 @@ function ESX.Trace(msg)
end end
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) function ESX.RegisterCommand(name, group, cb, allowConsole, suggestion)
if type(name) == "table" then if type(name) == "table" then
for _, v in ipairs(name) do for _, v in ipairs(name) do
@@ -106,13 +124,13 @@ function ESX.RegisterCommand(name, group, cb, allowConsole, suggestion)
elseif v.type == "any" then elseif v.type == "any" then
newArgs[v.name] = args[k] newArgs[v.name] = args[k]
elseif v.type == "merge" then elseif v.type == "merge" then
local lenght = 0 local length = 0
for i = 1, k - 1 do for i = 1, k - 1 do
lenght = lenght + string.len(args[i]) + 1 length = length + string.len(args[i]) + 1
end end
local merge = table.concat(args, " ") local merge = table.concat(args, " ")
newArgs[v.name] = string.sub(merge, lenght) newArgs[v.name] = string.sub(merge, length)
elseif v.type == "coordinate" then elseif v.type == "coordinate" then
local coord = tonumber(args[k]:match("(-?%d+%.?%d*)")) local coord = tonumber(args[k]:match("(-?%d+%.?%d*)"))
if not coord then if not coord then
@@ -406,37 +424,6 @@ function ESX.DiscordLogFields(name, title, color, fields)
) )
end 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() function ESX.RefreshJobs()
local Jobs = {} local Jobs = {}
local jobs = MySQL.query.await("SELECT * FROM jobs") local jobs = MySQL.query.await("SELECT * FROM jobs")
@@ -549,15 +536,7 @@ if not Config.OxInventory then
end end
function ESX.DoesJobExist(job, grade) function ESX.DoesJobExist(job, grade)
grade = tostring(grade) return (ESX.Jobs[job] and ESX.Jobs[job].grades[tostring(grade)] ~= nil) or false
if job and grade then
if ESX.Jobs[job] and ESX.Jobs[job].grades[grade] then
return true
end
end
return false
end end
function Core.IsPlayerAdmin(playerId) function Core.IsPlayerAdmin(playerId)
+1 -1
View File
@@ -239,7 +239,7 @@ function loadESXPlayer(identifier, playerId, isNew)
end end
-- Position -- 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 -- Skin
userData.skin = (result.skin and result.skin ~= "") and json.decode(result.skin) or { sex = userData.sex == "f" and 1 or 0 } 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
+3 -3
View File
@@ -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 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. the "copyright" line and a pointer to where the full notice is found.
esx_boat esx_context
Copyright (C) 2015-2023 Jérémie N'gadi Copyright (C) 2022-2024 ESX Framework
This program is free software: you can redistribute it and/or modify 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 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 If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode: 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 program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. under certain conditions; type `show c' for details.
+1 -1
View File
@@ -6,7 +6,7 @@ A elegant, easy to use Context Menu system to make User Interactions clean and h
esx_context 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. 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 -1
View File
@@ -2,7 +2,7 @@ fx_version 'bodacious'
game 'gta5' game 'gta5'
author 'ESX-Framework & Brayden' author 'ESX-Framework & Brayden'
description 'Offical ESX Legacy Context Menu' description 'A simplistic context menu for ESX.'
lua54 'yes' lua54 'yes'
version '1.10.5' version '1.10.5'
+3 -3
View File
@@ -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. the "copyright" line and a pointer to where the full notice is found.
esx_identity 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 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 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 If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode: 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 program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. 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 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 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 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 -1
View File
@@ -1,7 +1,7 @@
fx_version 'adamant' fx_version 'adamant'
game 'gta5' game 'gta5'
description 'ESX Identity' description 'Allows the player to Pick their characters: Name, Gender, Height and Date-of-birth.'
lua54 'yes' lua54 'yes'
version '1.10.5' version '1.10.5'
+38
View File
@@ -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.",
}
+4 -4
View File
@@ -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 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. the "copyright" line and a pointer to where the full notice is found.
esx_menu_default esx_loadingscreen
Copyright (C) 2015-2023 Jérémie N'gadi Copyright (C) 2020-2024 ESX Framework
This program is free software: you can redistribute it and/or modify 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 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 If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode: 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 program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. 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 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 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 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 -1
View File
@@ -6,7 +6,7 @@ A simple but beautiful Loading Screen for your server!
esx_loadingscreen - Loading in style! 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. 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.
+3 -1
View File
@@ -1,9 +1,11 @@
game 'common' game 'common'
version '1.10.5'
fx_version 'cerulean' fx_version 'cerulean'
author 'ESX-Framework' author 'ESX-Framework'
description 'Allows resources to Run tasks at specific intervals.'
version '1.10.5'
lua54 'yes' lua54 'yes'
loadscreen 'index.html' loadscreen 'index.html'
shared_script 'config.lua' shared_script 'config.lua'
+3 -3
View File
@@ -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. the "copyright" line and a pointer to where the full notice is found.
esx_menu_default 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 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 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 If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode: 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 program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. 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 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 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 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 -2
View File
@@ -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> <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.
![Preview_1](https://cdn.discordapp.com/attachments/944789399852417096/997882867336101948/Screenshot_52.png) ![Preview_1](https://cdn.discordapp.com/attachments/944789399852417096/997882867336101948/Screenshot_52.png)
![Preview_2](https://cdn.discordapp.com/attachments/944789399852417096/997882867688411176/Screenshot_53.png) ![Preview_2](https://cdn.discordapp.com/attachments/944789399852417096/997882867688411176/Screenshot_53.png)
## Legal ## Legal
esx_menu_defualt - Default Menu! esx_menu_default - Default Menu!
Copyright (C) 2015-2023 Jérémie N'gadi Copyright (C) 2015-2023 Jérémie N'gadi
+1 -1
View File
@@ -1,7 +1,7 @@
fx_version 'adamant' fx_version 'adamant'
game 'gta5' game 'gta5'
description 'ESX Menu Default' description 'A basic menu system for ESX Legacy.'
lua54 'yes' lua54 'yes'
version '1.10.5' version '1.10.5'
+6 -6
View File
@@ -62,7 +62,7 @@
}); });
ESX_MENU.render(); ESX_MENU.render();
$("#menu_" + namespace + "_" + name) $(document.getElementById("menu_" + namespace + "_" + name))
.find(".menu-item.selected")[0] .find(".menu-item.selected")[0]
.scrollIntoView(); .scrollIntoView();
}; };
@@ -121,7 +121,7 @@
} }
if (typeof focused != "undefined") { if (typeof focused != "undefined") {
$("#menu_" + focused.namespace + "_" + focused.name).show(); $(document.getElementById("menu_" + focused.namespace + "_" + focused.name)).show();
} }
$(menuContainer).show(); $(menuContainer).show();
@@ -231,7 +231,7 @@
ESX_MENU.change(focused.namespace, focused.name, elem); ESX_MENU.change(focused.namespace, focused.name, elem);
ESX_MENU.render(); ESX_MENU.render();
$("#menu_" + focused.namespace + "_" + focused.name) $(document.getElementById("menu_" + focused.namespace + "_" + focused.name))
.find(".menu-item.selected")[0] .find(".menu-item.selected")[0]
.scrollIntoView(); .scrollIntoView();
} }
@@ -266,7 +266,7 @@
ESX_MENU.change(focused.namespace, focused.name, elem); ESX_MENU.change(focused.namespace, focused.name, elem);
ESX_MENU.render(); ESX_MENU.render();
$("#menu_" + focused.namespace + "_" + focused.name) $(document.getElementById("menu_" + focused.namespace + "_" + focused.name))
.find(".menu-item.selected")[0] .find(".menu-item.selected")[0]
.scrollIntoView(); .scrollIntoView();
} }
@@ -302,7 +302,7 @@
break; break;
} }
$("#menu_" + focused.namespace + "_" + focused.name) $(document.getElementById("menu_" + focused.namespace + "_" + focused.name))
.find(".menu-item.selected")[0] .find(".menu-item.selected")[0]
.scrollIntoView(); .scrollIntoView();
} }
@@ -341,7 +341,7 @@
break; break;
} }
$("#menu_" + focused.namespace + "_" + focused.name) $(document.getElementById("menu_" + focused.namespace + "_" + focused.name))
.find(".menu-item.selected")[0] .find(".menu-item.selected")[0]
.scrollIntoView(); .scrollIntoView();
} }
+3 -3
View File
@@ -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. the "copyright" line and a pointer to where the full notice is found.
esx_menu_dialog 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 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 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 If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode: 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 program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. 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 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 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 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 -18
View File
@@ -1,23 +1,6 @@
# esx_menu_dialog # esx_menu_dialog
Simple script used for inputs. 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 ## Installation
- Add this to your `server.cfg`: - Add this to your `server.cfg`:
@@ -29,7 +12,7 @@ start esx_menu_dialog
### License ### License
esx_menu_dialog - input dialog for ESX 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. 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 -1
View File
@@ -1,7 +1,7 @@
fx_version 'adamant' fx_version 'adamant'
game 'gta5' game 'gta5'
description 'ESX Menu Dialog' description 'A basic input dialog for ESX Legacy.'
lua54 'yes' lua54 'yes'
version '1.10.5' version '1.10.5'
+3 -3
View File
@@ -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. the "copyright" line and a pointer to where the full notice is found.
esx_menu_list 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 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 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 If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode: 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 program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. 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 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 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 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 -25
View File
@@ -1,35 +1,11 @@
# esx_menu_list # esx_menu_list
Advanced menu inputs for ESX 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 # Legal
### License ### License
esx_menu_list - advanced menu inputs for ESX 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. 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 -1
View File
@@ -1,7 +1,7 @@
fx_version 'adamant' fx_version 'adamant'
game 'gta5' game 'gta5'
description 'ESX Menu List' description 'A basic table-based menu system for ESX Legacy.'
lua54 'yes' lua54 'yes'
version '1.10.5' version '1.10.5'
+3 -3
View File
@@ -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 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. 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.> esx_multicharacter
Copyright (C) <year> <name of author> Copyright (C) 2022-2024 ESX Framework, Linden, KASH
This program is free software: you can redistribute it and/or modify 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 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 If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode: 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 program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. under certain conditions; type `show c' for details.
+1 -1
View File
@@ -1,7 +1,7 @@
local mp_m_freemode_01 = `mp_m_freemode_01` local mp_m_freemode_01 = `mp_m_freemode_01`
local mp_f_freemode_01 = `mp_f_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 if ESX.GetConfig().Multichar then
CreateThread(function() CreateThread(function()
+1 -1
View File
@@ -16,7 +16,7 @@ else
-- Sets the location for the character selection scene -- 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 -- To set the spawn location for new characters, modify the default value in the users SQL table
Config.Spawn = { 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 },
} }
-------------------- --------------------
+1 -1
View File
@@ -2,7 +2,7 @@ fx_version 'cerulean'
game 'gta5' game 'gta5'
author 'ESX-Framework - Linden - KASH' 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' version '1.10.5'
lua54 'yes' lua54 'yes'
+32
View File
@@ -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",
}
+32
View File
@@ -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 δεν υπάρχει",
}
+1 -1
View File
@@ -21,7 +21,7 @@ A Simplistic system, that allows Players to have multiple Characters, which can
<tr><td> <tr><td>
Official Multi-Character system for ESX Legacy 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 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 it under the terms of the GNU General Public License as published by
+1 -1
View File
@@ -136,7 +136,7 @@ end)
local function DeleteCharacter(source, charid) local function DeleteCharacter(source, charid)
local identifier = ("%s%s:%s"):format(PREFIX, charid, GetIdentifier(source)) 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 queries = {}
local count = 0 local count = 0
+4 -4
View File
@@ -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 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. the "copyright" line and a pointer to where the full notice is found.
esx_menu_default esx_notify
Copyright (C) 2015-2023 Jérémie N'gadi Copyright (C) 2022-2024 ESX Framework
This program is free software: you can redistribute it and/or modify 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 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 If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode: 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 program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. 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 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 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 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 -2
View File
@@ -25,8 +25,8 @@ local function Notify(notificatonType, length, message)
end end
SendNuiMessage(json.encode({ SendNuiMessage(json.encode({
type = notificatonType or "info", type = notificatonType,
length = length or 3000, length = length,
message = message or "ESX-Notify", message = message or "ESX-Notify",
})) }))
end end
+1 -1
View File
@@ -4,7 +4,7 @@ lua54 'yes'
game 'gta5' game 'gta5'
version '1.10.5' version '1.10.5'
author 'ESX-Framework' 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' shared_script '@es_extended/imports.lua'
+1 -1
View File
@@ -55,7 +55,7 @@ ESX.ShowNotification("I i ~r~love~s~ donuts", "success", 3000)
esx_notify- Notify! 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. 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 -2
View File
@@ -2,9 +2,9 @@ fx_version 'adamant'
game 'gta5' game 'gta5'
author 'ESX-Framework' author 'ESX-Framework'
lua54 'yes' description 'A beautiful and simple NUI progress bar for ESX'
version '1.10.5' version '1.10.5'
description 'ESX Progressbar' lua54 'yes'
client_scripts { 'Progress.lua' } client_scripts { 'Progress.lua' }
shared_script '@es_extended/imports.lua' shared_script '@es_extended/imports.lua'
+3 -3
View File
@@ -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. the "copyright" line and a pointer to where the full notice is found.
esx_skin 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 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 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 If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode: 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 program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. 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 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 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 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 -1
View File
@@ -1,7 +1,7 @@
fx_version 'adamant' fx_version 'adamant'
game 'gta5' game 'gta5'
description 'ESX Skin' description 'Allows players to customise their character\'s appearance'
version '1.10.5' version '1.10.5'
lua54 'yes' lua54 'yes'
+6
View File
@@ -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",
}
+4 -4
View File
@@ -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 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. the "copyright" line and a pointer to where the full notice is found.
esx_menu_default esx_textui
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 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 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 If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode: 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 program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. 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 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 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 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 -1
View File
@@ -2,8 +2,8 @@ fx_version 'adamant'
game 'gta5' game 'gta5'
author 'ESX-Framework' author 'ESX-Framework'
description 'A beautiful and simple Persistent Notification system for ESX.'
version '1.10.5' version '1.10.5'
description 'ESX TextUI'
lua54 'yes' lua54 'yes'
client_scripts { 'TextUI.lua' } client_scripts { 'TextUI.lua' }
+2 -2
View File
@@ -41,9 +41,9 @@ ESX.TextUI("i ~r~love~s~ donuts", "error")
## Legal ## 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. 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.
+3 -3
View File
@@ -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. the "copyright" line and a pointer to where the full notice is found.
skinchanger 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 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 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 If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode: 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 program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. 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 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 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 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 -2
View File
@@ -1,9 +1,9 @@
fx_version 'adamant' fx_version 'adamant'
game 'gta5' game 'gta5'
lua54 'yes' description 'Saves/loads character appearances for ESX Legacy.'
description 'Official ESX-Legacy resource for handling the Player`s Skin'
version '1.10.5' version '1.10.5'
lua54 'yes'
client_scripts { client_scripts {
'@es_extended/locale.lua', '@es_extended/locale.lua',
+100
View File
@@ -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",
}