From f9792d81178d050d869a5ce21984b41986112580 Mon Sep 17 00:00:00 2001 From: SNAILX Date: Fri, 17 Oct 2025 17:33:31 +0100 Subject: [PATCH 1/2] Delay inventory load until character identity is set (non-multicharacter) Inventory was loading before firstName and lastName were assigned to new characters when multicharacter was disabled. Fix: * Check if multicharacter is disabled (Config.Multichar) * Identify new characters (isNew) * Wait for firstName and lastName to exist * Recheck every 3 seconds Ensures identity data loads before inventory initializes --- [core]/es_extended/server/main.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/[core]/es_extended/server/main.lua b/[core]/es_extended/server/main.lua index 96c5cc64..2896d5ec 100644 --- a/[core]/es_extended/server/main.lua +++ b/[core]/es_extended/server/main.lua @@ -354,6 +354,11 @@ function loadESXPlayer(identifier, playerId, isNew) if not Config.CustomInventory then xPlayer.triggerEvent("esx:createMissingPickups", Core.Pickups) elseif setPlayerInventory then + if not Config.Multichar and isNew and not xPlayer.get("firstName") and not xPlayer.get("lastName") then + while not xPlayer.get("firstName") and not xPlayer.get("lastName") do + Wait(3000) + end + end setPlayerInventory(playerId, xPlayer, userData.inventory, isNew) end From 080bf9728311fd3fecdce8e0c4ceb652d2157ec2 Mon Sep 17 00:00:00 2001 From: SNAILX Date: Fri, 17 Oct 2025 23:32:35 +0100 Subject: [PATCH 2/2] fix: delay ox_inventory load until character registration completes in non-multicharacter Delay ox_inventory load until character identity is set (non-multicharacter) Inventory was loading before firstName were assigned to new characters when multicharacter was disabled. Fix/Changes: * Check if multicharacter is disabled (Config.Multichar) * Identify new characters (isNew flag) * Wait for firstName to be registered * Implement 2-minute timeout to prevent infinite loops * Log warning if registration fails to complete in time * Continue loading inventory anyway after timeout Ensures identity data loads before inventory initializes --- [core]/es_extended/server/main.lua | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/[core]/es_extended/server/main.lua b/[core]/es_extended/server/main.lua index 2896d5ec..f9f272c2 100644 --- a/[core]/es_extended/server/main.lua +++ b/[core]/es_extended/server/main.lua @@ -354,11 +354,22 @@ function loadESXPlayer(identifier, playerId, isNew) if not Config.CustomInventory then xPlayer.triggerEvent("esx:createMissingPickups", Core.Pickups) elseif setPlayerInventory then - if not Config.Multichar and isNew and not xPlayer.get("firstName") and not xPlayer.get("lastName") then - while not xPlayer.get("firstName") and not xPlayer.get("lastName") do - Wait(3000) - end - end + -- Wait for identity to be set before loading inventory (for non-multichar) + if not Config.Multichar and isNew and not xPlayer.get("firstName") then + local sleep = 5000 + local registrationTimeout = 120 * 1000 -- 2 minutes + + while not xPlayer.get("firstName") do + registrationTimeout = registrationTimeout - sleep + + if registrationTimeout <= 0 then + print(('[^3WARNING^7] Player ^5"%s"^7 Registration Timeout Reached (Loading Inventory Anyway).'):format(xPlayer.getName())) + break + end + + Wait(sleep) + end + end setPlayerInventory(playerId, xPlayer, userData.inventory, isNew) end