fix bug move to select character scene then enter world again then player can't learn new skills

This commit is contained in:
vuong dinh hoang
2026-04-22 15:34:26 +07:00
parent 4ed178bb3c
commit 07b4134905
2 changed files with 17 additions and 9 deletions
@@ -176,12 +176,14 @@ namespace BrewMonster.Scripts.Skills
//BMLogger.LogError("ProcessServiceList npcList.count:" + npcList.count);
//BMLogger.LogError("ProcessServiceList m_allProfNPCs.count:" + m_allProfNPCs.Count);
int i;
bool sawProfSkillNpcInList = false;
for (i = 0; i < npcList.count; i++)
{
int tid = npcList.list[i].tid;
//BMLogger.LogError("ProcessServiceList tid:" + tid);
if (m_allProfNPCs.Contains(tid))
{
sawProfSkillNpcInList = true;
//BMLogger.LogError("m_skillLearnNPCNID : " + m_skillLearnNPCNID);
//BMLogger.LogError("npcList.list[i].nid : " + npcList.list[i].nid);
if (m_skillLearnNPCNID != npcList.list[i].nid)
@@ -193,17 +195,25 @@ namespace BrewMonster.Scripts.Skills
//NotifyObservers(change);
break;
}
else
{
// Same trainer instance as before — still refresh service skills (re-enter world / list refresh).
SetCurServiceSkills(tid);
var change = new CECSkillPanelChange(CECSkillPanelChange.enumChangeMask.CHANGE_SKILL_NPC, 0, 0);
break;
}
}
}
if (i == npcList.count && m_skillLearnNPCNID != 0)
if (i == npcList.count && m_skillLearnNPCNID != 0 && !sawProfSkillNpcInList)
{
m_skillLearnNPCNID = 0;
SetCurServiceSkills(0);
var change = new CECSkillPanelChange(CECSkillPanelChange.enumChangeMask.CHANGE_SKILL_NPC, 0, 0);
//NotifyObservers(change);
}
m_npcListData.Clear();
// Do not Clear m_npcListData: Initialize() may run ProcessServiceList again after Release();
// clearing here left npcDataSize 0 on world re-entry. New packets replace m_npcListData in RecvNPCServiceList.
}
//BMLogger.LogError("HoangDev: m_npcListData.Size :"+ m_npcListData.Size);
@@ -320,10 +330,8 @@ namespace BrewMonster.Scripts.Skills
{
return;
}
else
{
ProcessServiceList();
}
ProcessServiceList();
}
private void InitSkillTreeRootMap(IEnumerable<int> rootSkills)
{
@@ -6,7 +6,7 @@ using BrewMonster.Scripts.Skills;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace BrewMonster.UI
{
[DisallowMultipleComponent]
@@ -129,7 +129,7 @@ namespace BrewMonster.UI
{
CreateOneRankDlg(taoistRank);
}
}
// ʼڶԻһԷڴ / Initialize rank sub-dialogs once to avoid realloc
@@ -214,7 +214,7 @@ namespace BrewMonster.UI
CDlgSkillSubListItem subListItem = pSub;
if(subListItem == null )
{
BMLogger.LogError("HoangDev: UpdateOneSubDlg subListItem is null for skillID " + skillID);
// BMLogger.LogError("HoangDev: UpdateOneSubDlg subListItem is null for skillID " + skillID);
return;
}
subListItem.UpdateSkill(skillID);