From 9272d71ba89ee58b2226861400b41f31560dcf8c Mon Sep 17 00:00:00 2001 From: Ilias Rbayti <63159154+Kenshiin13@users.noreply.github.com> Date: Tue, 26 Nov 2024 22:00:16 +0100 Subject: [PATCH 1/5] fix(esx_multicharacter/client/modules/multicharacter): remove redundant playerSpawned trigger --- [core]/esx_multicharacter/client/modules/multicharacter.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/[core]/esx_multicharacter/client/modules/multicharacter.lua b/[core]/esx_multicharacter/client/modules/multicharacter.lua index 9ea9b974..ef099f58 100644 --- a/[core]/esx_multicharacter/client/modules/multicharacter.lua +++ b/[core]/esx_multicharacter/client/modules/multicharacter.lua @@ -272,7 +272,6 @@ function Multicharacter:PlayerLoaded(playerData, isNew, skin) TriggerServerEvent("esx:onPlayerSpawn") TriggerEvent("esx:onPlayerSpawn") - TriggerEvent("playerSpawned") TriggerEvent("esx:restoreLoadout") self:Reset() From 8528321c055c33ae07148598e92df57bddaa48ca Mon Sep 17 00:00:00 2001 From: Ilias Rbayti <63159154+Kenshiin13@users.noreply.github.com> Date: Tue, 26 Nov 2024 22:00:56 +0100 Subject: [PATCH 2/5] fix(es_extended/client/main): apply player metadata in esx:onPlayerSpawn to fix race condition --- [core]/es_extended/client/main.lua | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/[core]/es_extended/client/main.lua b/[core]/es_extended/client/main.lua index b989857f..6516355e 100644 --- a/[core]/es_extended/client/main.lua +++ b/[core]/es_extended/client/main.lua @@ -4,16 +4,6 @@ ESX.SecureNetEvent("esx:requestModel", function(model) ESX.Streaming.RequestModel(model) end) -local function ApplyMetadata(metadata) - if metadata.health then - SetEntityHealth(ESX.PlayerData.ped, metadata.health) - end - - if metadata.armor and metadata.armor > 0 then - SetPedArmour(ESX.PlayerData.ped, metadata.armor) - end -end - RegisterNetEvent("esx:playerLoaded", function(xPlayer, _, skin) ESX.PlayerData = xPlayer @@ -34,8 +24,6 @@ RegisterNetEvent("esx:playerLoaded", function(xPlayer, _, skin) ESX.PlayerLoaded = true - ApplyMetadata(ESX.PlayerData.metadata) - local timer = GetGameTimer() while not HaveAllStreamingRequestsCompleted(ESX.PlayerData.ped) and (GetGameTimer() - timer) < 2000 do Wait(0) @@ -72,7 +60,17 @@ local function onPlayerSpawn() end AddEventHandler("playerSpawned", onPlayerSpawn) -AddEventHandler("esx:onPlayerSpawn", onPlayerSpawn) +AddEventHandler("esx:onPlayerSpawn", function() + onPlayerSpawn() + + if ESX.PlayerData.metadata.health then + SetEntityHealth(ESX.PlayerData.ped, ESX.PlayerData.metadata.health) + end + + if ESX.PlayerData.metadata.armor and ESX.PlayerData.metadata.armor > 0 then + SetPedArmour(ESX.PlayerData.ped, ESX.PlayerData.metadata.armor) + end +end) AddEventHandler("esx:onPlayerDeath", function() ESX.SetPlayerData("ped", PlayerPedId()) From 47442020074e75fa6b3d577236501b974f15a86a Mon Sep 17 00:00:00 2001 From: Ilias Rbayti <63159154+Kenshiin13@users.noreply.github.com> Date: Tue, 26 Nov 2024 22:05:01 +0100 Subject: [PATCH 3/5] fix(es_extended/client/main): only apply metadata on first spawn --- [core]/es_extended/client/main.lua | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/[core]/es_extended/client/main.lua b/[core]/es_extended/client/main.lua index 6516355e..9912bbff 100644 --- a/[core]/es_extended/client/main.lua +++ b/[core]/es_extended/client/main.lua @@ -59,16 +59,21 @@ local function onPlayerSpawn() ESX.SetPlayerData("dead", false) end +local isFirstSpawn = true AddEventHandler("playerSpawned", onPlayerSpawn) AddEventHandler("esx:onPlayerSpawn", function() onPlayerSpawn() - if ESX.PlayerData.metadata.health then - SetEntityHealth(ESX.PlayerData.ped, ESX.PlayerData.metadata.health) - end + if isFirstSpawn then + isFirstSpawn = false - if ESX.PlayerData.metadata.armor and ESX.PlayerData.metadata.armor > 0 then - SetPedArmour(ESX.PlayerData.ped, ESX.PlayerData.metadata.armor) + if ESX.PlayerData.metadata.health then + SetEntityHealth(ESX.PlayerData.ped, ESX.PlayerData.metadata.health) + end + + if ESX.PlayerData.metadata.armor and ESX.PlayerData.metadata.armor > 0 then + SetPedArmour(ESX.PlayerData.ped, ESX.PlayerData.metadata.armor) + end end end) From 51c777f6c27709cadb0b84b35ccc326d4dbed508 Mon Sep 17 00:00:00 2001 From: Ilias Rbayti <63159154+Kenshiin13@users.noreply.github.com> Date: Tue, 26 Nov 2024 23:02:13 +0100 Subject: [PATCH 4/5] fix(es_extended/client/main): reset isFirstSpawn on logout --- [core]/es_extended/client/main.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/[core]/es_extended/client/main.lua b/[core]/es_extended/client/main.lua index 9912bbff..3cfdc449 100644 --- a/[core]/es_extended/client/main.lua +++ b/[core]/es_extended/client/main.lua @@ -46,8 +46,10 @@ RegisterNetEvent("esx:playerLoaded", function(xPlayer, _, skin) StartServerSyncLoops() end) +local isFirstSpawn = true ESX.SecureNetEvent("esx:onPlayerLogout", function() ESX.PlayerLoaded = false + isFirstSpawn = true end) ESX.SecureNetEvent("esx:setMaxWeight", function(newMaxWeight) @@ -59,7 +61,6 @@ local function onPlayerSpawn() ESX.SetPlayerData("dead", false) end -local isFirstSpawn = true AddEventHandler("playerSpawned", onPlayerSpawn) AddEventHandler("esx:onPlayerSpawn", function() onPlayerSpawn() From 47ae063aa150722ff5019741d6ab726dd31fc1f3 Mon Sep 17 00:00:00 2001 From: Ilias Rbayti <63159154+Kenshiin13@users.noreply.github.com> Date: Tue, 26 Nov 2024 23:20:35 +0100 Subject: [PATCH 5/5] feat(es_extended/shared/config/main): add Config.SaveDeathStatus --- [core]/es_extended/client/main.lua | 2 +- [core]/es_extended/shared/config/main.lua | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/[core]/es_extended/client/main.lua b/[core]/es_extended/client/main.lua index 3cfdc449..a4d1daa9 100644 --- a/[core]/es_extended/client/main.lua +++ b/[core]/es_extended/client/main.lua @@ -68,7 +68,7 @@ AddEventHandler("esx:onPlayerSpawn", function() if isFirstSpawn then isFirstSpawn = false - if ESX.PlayerData.metadata.health then + if ESX.PlayerData.metadata.health and (ESX.PlayerData.metadata.health > 0 or Config.SaveDeathStatus) then SetEntityHealth(ESX.PlayerData.ped, ESX.PlayerData.metadata.health) end diff --git a/[core]/es_extended/shared/config/main.lua b/[core]/es_extended/shared/config/main.lua index 2c375605..7db1e472 100644 --- a/[core]/es_extended/shared/config/main.lua +++ b/[core]/es_extended/shared/config/main.lua @@ -40,6 +40,7 @@ Config.LogPaycheck = false -- Logs paychecks to a nominated Discord channel via 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 a backpack Config.PaycheckInterval = 7 * 60000 -- how often to receive paychecks in milliseconds +Config.SaveDeathStatus = true -- Save the death status of a player Config.EnableDebug = false -- Use Debug options? Config.DefaultJobDuty = true -- A players default duty status when changing jobs