From 3e0c89d9b20f366b6241240b0b95091566871e6f Mon Sep 17 00:00:00 2001 From: Kenshin13 <63159154+Kenshiin13@users.noreply.github.com> Date: Sat, 14 Jun 2025 21:05:51 +0200 Subject: [PATCH] feat(es_extended/server/main): add optional cb fun for playerDropped wrapper --- [core]/es_extended/server/main.lua | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/[core]/es_extended/server/main.lua b/[core]/es_extended/server/main.lua index 69b42fe6..9395d9d6 100644 --- a/[core]/es_extended/server/main.lua +++ b/[core]/es_extended/server/main.lua @@ -69,6 +69,7 @@ end ---@param playerId number ---@param reason string +---@param cb function? local function onPlayerDropped(playerId, reason, cb) local xPlayer = ESX.GetPlayerFromId(playerId) @@ -84,15 +85,27 @@ local function onPlayerDropped(playerId, reason, cb) GlobalState[("%s:count"):format(job)] = Core.JobsPlayerCount[job] Core.playersByIdentifier[xPlayer.identifier] = nil - local p = promise:new() + local p = not cb and promise:new() + local function resolve() + if cb then + return cb() + elseif(p) then + return p:resolve() + end + end + Core.SavePlayer(xPlayer, function() GlobalState["playerCount"] = GlobalState["playerCount"] - 1 ESX.Players[playerId] = nil - p:resolve() + resolve() end) - return Citizen.Await(p) + if p then + return Citizen.Await(p) + end end +AddEventHandler("esx:onPlayerDropped", onPlayerDropped) + if Config.Multichar then AddEventHandler("esx:onPlayerJoined", function(src, char, data) @@ -147,7 +160,6 @@ if not Config.Multichar then end local xPlayer = ESX.GetPlayerFromIdentifier(identifier) - if not xPlayer then return deferrals.done() end