diff --git a/[core]/esx_multicharacter/server/modules/functions.lua b/[core]/esx_multicharacter/server/modules/functions.lua index b46dd43a..78ef5516 100644 --- a/[core]/esx_multicharacter/server/modules/functions.lua +++ b/[core]/esx_multicharacter/server/modules/functions.lua @@ -49,12 +49,21 @@ function Server:OnConnecting(source, deferrals) if ESX.GetConfig().EnableDebug or not ESX.Players[identifier] then deferrals.done() end - TriggerEvent('esx:playerCrashed', identifier, function() - ESX.Players[identifier] = nil - deferrals.update(('[ESX] Cleaning old Player entry for [%s] (player invalid)'):format(identifier)) - end) + local xPlayer = ESX.GetPlayerFromIdentifier(identifier) + if not xPlayer then + return deferrals.done() + end - deferrals.done() -- proceed + if DoesPlayerExist(xPlayer.source --[[@as string]]) then + return deferrals.done( + ("[ESX] There was an error loading your character!\nError code: identifier-active\n\nThis error is caused by a player on this server who has the same identifier as you have. Make sure you are not playing on the same account.\n\nYour identifier: %s"):format(identifier) + ) + end + + deferrals.update(("[ESX] Cleaning stale player entry..."):format(identifier)) + TriggerEvent("esx:onPlayerDropped", xPlayer.source, "esx_stale_player_obj", function() + deferrals.done() + end) end