From 03d41fea9ad8e45bae143f98a334ffa7acb0490a Mon Sep 17 00:00:00 2001 From: HungDK <> Date: Mon, 5 Jan 2026 13:31:02 +0700 Subject: [PATCH] Fix null exception of task dlg --- Assets/PerfectWorld/Scripts/Task/UI/DlgTask.cs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Assets/PerfectWorld/Scripts/Task/UI/DlgTask.cs b/Assets/PerfectWorld/Scripts/Task/UI/DlgTask.cs index 056c535e0f..6a2f887065 100644 --- a/Assets/PerfectWorld/Scripts/Task/UI/DlgTask.cs +++ b/Assets/PerfectWorld/Scripts/Task/UI/DlgTask.cs @@ -483,7 +483,13 @@ namespace BrewMonster.Scripts.Task.UI // ATaskTemplMan *pMan = GetGame()->GetTaskTemplateMan(); ATaskTemplMan pMan = EC_Game.GetTaskTemplateMan(); - CECTaskInterface pTask = GetHostPlayer().GetTaskInterface(); + + // Host player can be null during early UI bootstrap (before InitCharacter/self-info). + // In that case just no-op; quest UI will populate once the player exists and the dialog is reopened/refreshed. + var host = EC_Game.GetGameRun()?.GetHostPlayer(); + if (host == null) return true; + + CECTaskInterface pTask = host.GetTaskInterface(); if (pTask == null) { @@ -610,7 +616,7 @@ namespace BrewMonster.Scripts.Task.UI // Setup managers and UI references ATaskTemplMan pMan = EC_Game.GetTaskTemplateMan(); - CECTaskInterface pTask = GetHostPlayer().GetTaskInterface(); + CECTaskInterface pTask = GetHostPlayer()?.GetTaskInterface(); var pTextDesc = m_pTxt_Content; var pTextItem = m_pTxt_QuestItem; @@ -871,7 +877,7 @@ namespace BrewMonster.Scripts.Task.UI { var pTreeTask = m_pTv_Quest; var pMan = EC_Game.GetTaskTemplateMan(); - var pTask = GetHostPlayer().GetTaskInterface(); + var pTask = GetHostPlayer()?.GetTaskInterface(); if (pTreeTask == null || pMan == null || pTask == null) return; ATaskTempl parentTempl = pMan.GetTaskTemplByID(idTask); @@ -1497,7 +1503,7 @@ namespace BrewMonster.Scripts.Task.UI private void UpdateTaskConfirm(int idTask, bool bFinishType) { - CECTaskInterface pTask = GetHostPlayer().GetTaskInterface(); + CECTaskInterface pTask = GetHostPlayer()?.GetTaskInterface(); if (m_pBtn_FinishTask != null && pTask != null && bFinishType) { m_pBtn_FinishTask.gameObject.SetActive(true); @@ -1575,7 +1581,8 @@ namespace BrewMonster.Scripts.Task.UI // pTreeTask.SetItemTextColor(pParent, GetTaskColor(pTemp)); } - CECTaskInterface pTask = GetHostPlayer().GetTaskInterface(); + CECTaskInterface pTask = GetHostPlayer()?.GetTaskInterface(); + if (pTask == null) return; string strItem = GetTaskNameWithColor(pTemp); bool bTaskPushed = pMan.IsTaskToPush(id) && !pTask.HasTask((uint)id); if (bTaskPushed) {