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.
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
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.
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>.
+1 -1
View File
@@ -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'
+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.
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>.
+11 -17
View File
@@ -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)
+7 -18
View File
@@ -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)
+33
View File
@@ -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)
+6 -6
View File
@@ -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.
+6 -7
View File
@@ -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,
+11 -2
View File
@@ -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
-9
View File
@@ -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")
+22 -43
View File
@@ -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)
+1 -1
View File
@@ -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
+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
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.
+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
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.
+1 -1
View File
@@ -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'
+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.
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 -1
View File
@@ -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'
+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
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>.
+1 -1
View File
@@ -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.
+3 -1
View File
@@ -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'
+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.
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>.
+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>
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_2](https://cdn.discordapp.com/attachments/944789399852417096/997882867688411176/Screenshot_53.png)
## Legal
esx_menu_defualt - Default Menu!
esx_menu_default - Default Menu!
Copyright (C) 2015-2023 Jérémie N'gadi
+1 -1
View File
@@ -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'
+6 -6
View File
@@ -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();
}
+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.
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 -18
View File
@@ -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 -1
View File
@@ -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'
+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.
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 -25
View File
@@ -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 -1
View File
@@ -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'
+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
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 -1
View File
@@ -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()
+1 -1
View File
@@ -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 },
}
--------------------
+1 -1
View File
@@ -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'
+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>
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
+1 -1
View File
@@ -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
+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
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>.
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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'
+1 -1
View File
@@ -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 -2
View File
@@ -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'
+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.
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 -1
View File
@@ -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'
+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
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>.
+1 -1
View File
@@ -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' }
+2 -2
View File
@@ -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.
+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.
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>.
+2 -2
View File
@@ -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',
+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",
}