From 5b2feeb39f6907b30c558b452a81127255348a62 Mon Sep 17 00:00:00 2001 From: CuongNV <> Date: Thu, 16 Apr 2026 14:40:39 +0700 Subject: [PATCH 1/7] update log --- Assets/PerfectWorld/Scripts/NPC/NPCVisual.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/PerfectWorld/Scripts/NPC/NPCVisual.cs b/Assets/PerfectWorld/Scripts/NPC/NPCVisual.cs index eca6c7a647..afb8e2bd0c 100644 --- a/Assets/PerfectWorld/Scripts/NPC/NPCVisual.cs +++ b/Assets/PerfectWorld/Scripts/NPC/NPCVisual.cs @@ -181,7 +181,7 @@ public class NPCVisual : MonoBehaviour var currentBounds = new Bounds(worldCenter, worldSize); if (debugNamePlateBounds) { - Debug.Log($"[Cuong] [NPCVisual] smr={renderer.name} localCenter={meshBounds.center} localSize={meshBounds.size} worldCenter={worldCenter} worldSize={worldSize} worldMaxY={currentBounds.max.y}"); + BMLogger.Log($"[Cuong] [NPCVisual] smr={renderer.name} localCenter={meshBounds.center} localSize={meshBounds.size} worldCenter={worldCenter} worldSize={worldSize} worldMaxY={currentBounds.max.y}"); } if (!hasAnySkinnedMesh) From ef632e7f11fd980681c19b74b22f0af2d28ceba4 Mon Sep 17 00:00:00 2001 From: CuongNV <> Date: Mon, 20 Apr 2026 11:11:23 +0700 Subject: [PATCH 2/7] update icon combo --- Assets/PerfectWorld/Scripts/NPC/NPCVisual.cs | 2 +- .../Scripts/UI/GamePlay/AUIImagePicture.cs | 22 +------------------ .../UI/GamePlay/AUIToggleAssignSlot.cs | 20 ++++++++++++++++- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/Assets/PerfectWorld/Scripts/NPC/NPCVisual.cs b/Assets/PerfectWorld/Scripts/NPC/NPCVisual.cs index eca6c7a647..0ee2fb1358 100644 --- a/Assets/PerfectWorld/Scripts/NPC/NPCVisual.cs +++ b/Assets/PerfectWorld/Scripts/NPC/NPCVisual.cs @@ -11,7 +11,7 @@ public class NPCVisual : MonoBehaviour protected CECNPC.INFO m_NPCInfo; [SerializeField] private Queue _animationQueue = new Queue(); [SerializeField] private AnimancerState _currentState; - private bool debugNamePlateBounds = true; + private bool debugNamePlateBounds = false; private const float fadeTime = .2f; private const FadeMode FadeMode = Animancer.FadeMode.FixedDuration; diff --git a/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIImagePicture.cs b/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIImagePicture.cs index 6ffdda0042..8f9fc9a7d2 100644 --- a/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIImagePicture.cs +++ b/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIImagePicture.cs @@ -16,7 +16,6 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay public class AUIImagePicture : AUIImagePictureBase { public const string DefaultComboIcon = "爱你"; - [SerializeField] Button skillbutton; [SerializeField] GameObject borderImage; [SerializeField] int cooldownTime; [SerializeField] AUIClockIcon m_ClockCounter; @@ -37,13 +36,6 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay public override void Awake() { - if (skillbutton == null) - { - Debug.LogError("Skill Button is not assigned in AUIImagePicture"); - return; - } - skillbutton.onClick.RemoveAllListeners(); - skillbutton.onClick.AddListener(Execute); m_pParent = GetComponentInParent(); // _skillID = int.Parse(this.name.Split('_')[1]); } @@ -52,14 +44,11 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay { if (isInteract) { - skillbutton.interactable = true; disPlayImage.color = Color.white; } else { disPlayImage.color = Color.gray; - - skillbutton.interactable = false; } } @@ -98,7 +87,6 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay Debug.LogError("Skill Image is not assigned in AUIImagePicture"); return; } - skillbutton.interactable = true; disPlayImage.color = Color.white; disPlayImage.sprite = sprite; disPlayImage.gameObject.SetActive(true); @@ -107,11 +95,9 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay } private IEnumerator CooldownRoutine() { - skillbutton.interactable = false; disPlayImage.color = Color.gray; yield return new WaitForSeconds(cooldownTime); disPlayImage.color = Color.white; - skillbutton.interactable = true; } public AUIClockIcon GetClockIcon() => m_ClockCounter; @@ -130,7 +116,6 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay { // BMLogger.Log("Clear AUIImagePicture with name: " + name) ; base.Clear(); - skillbutton.interactable = true; if (disPlayImage != null) { disPlayImage.color = Color.white; @@ -222,17 +207,13 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay continue; } - if (TrySetSkillGroupIconByNIcon(index, comboSkills[index].nIcon)) + if (TrySetDefaultSkillGroupIcon()) { return true; } } _skillGroupIndex = resolvedGroup; - if (TrySetDefaultSkillGroupIcon()) - { - return true; - } Clear(); return false; @@ -246,7 +227,6 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay return false; } - skillbutton.interactable = true; var uiMan = EC_Game.GetGameRun()?.GetUIManager()?.GetInGameUIMan(); if (uiMan == null) { diff --git a/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIToggleAssignSlot.cs b/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIToggleAssignSlot.cs index cb88015b6e..49965d096e 100644 --- a/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIToggleAssignSlot.cs +++ b/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIToggleAssignSlot.cs @@ -104,7 +104,7 @@ namespace BrewMonster continue; } - if (TrySetSkillGroupIconByNIcon(groupIndex, comboSkills[groupIndex].nIcon)) + if (TrySetDefaultSkillGroupIcon()) { return true; } @@ -114,6 +114,24 @@ namespace BrewMonster return false; } + private bool TrySetDefaultSkillGroupIcon() + { + var uiMan = EC_Game.GetGameRun()?.GetUIManager()?.GetInGameUIMan(); + if (uiMan == null) + { + return false; + } + + var icon = uiMan.GetIcon(DefaultComboIcon, EC_GAMEUI_ICONS.ICONS_SKILLGRP); + if (icon == null) + { + return false; + } + + SetImage(icon); + return true; + } + private bool TrySetSkillGroupIconByNIcon(int groupIndex, int nIcon) { _skillGroupIndex = groupIndex; From 8167f7887a93dfa679a07cd8a8516792de3a47bc Mon Sep 17 00:00:00 2001 From: VDH Date: Mon, 20 Apr 2026 11:28:41 +0700 Subject: [PATCH 3/7] fix skill --- .../Scripts/Skills/SkillStubs1/skill88.cs | 40 +++++++++++++++++-- .../Scripts/UI/Dialogs/CDlgSkillSubList.cs | 3 +- Assets/Prefabs/UI/SkillUI.prefab | 2 +- 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/Assets/PerfectWorld/Scripts/Skills/SkillStubs1/skill88.cs b/Assets/PerfectWorld/Scripts/Skills/SkillStubs1/skill88.cs index 0d74af7434..772149e8b5 100644 --- a/Assets/PerfectWorld/Scripts/Skills/SkillStubs1/skill88.cs +++ b/Assets/PerfectWorld/Scripts/Skills/SkillStubs1/skill88.cs @@ -86,9 +86,9 @@ namespace BrewMonster public Skill88Stub() : base(88) { cls = 1; - name = "ӿȪ"; - nativename = "ӿȪ"; - icon = "ӿȪ"; + name = "涌泉"; + nativename = "涌泉"; + icon = "涌泉"; max_level = 10; type = 1; apcost = 0; @@ -109,11 +109,43 @@ namespace BrewMonster long_range = 0; restrict_corpse = 0; allow_forms = 1; - effect = "ӿȪ"; + effect = "涌泉"; doenchant = 1; dobless = 0; commoncooldown = 0; commoncooldowntime = 0; + m_szFlyGfxPath = string.Empty; + m_szHitGrndGfxPath = string.Empty; + m_szHitGfxPath = "策划联入/人物技能/飞行/涌泉中招.gfx"; + m_szFlySfxPath = string.Empty; + m_szHitGrndSfxPath = string.Empty; + m_szHitSfxPath = "skill/02mage/涌泉_c"; + + // GFX Movement and Behavior Parameters / GFX移动和行为参数 + m_MoveMode = (GfxMoveMode)0; + m_TargetMode = (GfxTargetMode)0; + m_AttFlyMode = (GfxAttackMode)0; + m_AttHitMode = (GfxAttackMode)0; + m_dwFlyTime = 0; + m_bTraceTarget = false; + m_FlyClusterCount = 1; + m_FlyClusterInterval = 0; + m_HitClusterCount = 1; + m_HitClusterInterval = 0; + m_bOneHit = true; + m_bFadeOut = false; + m_bRelScl = true; + m_fDefTarScl = 1.8f; + + // Area parameters (commented out) / 区域参数(已注释) + // m_bArea = false; + // m_Shape = (EmitShape)0; + // m_vSize = new Vector3(0.0f, 0.0f, 0.0f); + + // Param (commented out) / 参数(已注释) + // m_paramType = (GfxSkillValType)1; + // m_param = new GFX_SKILL_PARAM(); + // m_param.nVal = 0; restrict_weapons.Add(0); restrict_weapons.Add(292); range = new Range(); diff --git a/Assets/PerfectWorld/Scripts/UI/Dialogs/CDlgSkillSubList.cs b/Assets/PerfectWorld/Scripts/UI/Dialogs/CDlgSkillSubList.cs index 027e8af95c..dd156bb996 100644 --- a/Assets/PerfectWorld/Scripts/UI/Dialogs/CDlgSkillSubList.cs +++ b/Assets/PerfectWorld/Scripts/UI/Dialogs/CDlgSkillSubList.cs @@ -129,7 +129,7 @@ namespace BrewMonster.UI { CreateOneRankDlg(taoistRank); } - totalSPText.text = " Nguyên Thần: " +GetHostPlayer().GetBasicProps().iSP.ToString() + ""; + } // ��ʼ�����������ڶԻ���һ���Է�����ڴ� / Initialize rank sub-dialogs once to avoid realloc @@ -190,6 +190,7 @@ namespace BrewMonster.UI FitSize(); ShowLastSelectedSkill(); } + totalSPText.text = " Nguyên Thần: " + GetHostPlayer().GetBasicProps().iSP.ToString() + ""; } // ��鵯��ħ״̬ / Reset when switching between god/evil diff --git a/Assets/Prefabs/UI/SkillUI.prefab b/Assets/Prefabs/UI/SkillUI.prefab index 72df38ec75..6516114311 100644 --- a/Assets/Prefabs/UI/SkillUI.prefab +++ b/Assets/Prefabs/UI/SkillUI.prefab @@ -943,7 +943,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 335.91, y: -507.53912} + m_AnchoredPosition: {x: 335.91, y: -431.53912} m_SizeDelta: {x: 651.82, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &2731969899170380074 From 6f81209da673ecfc7731e52ada6541a4253bb16f Mon Sep 17 00:00:00 2001 From: CuongNV <> Date: Mon, 20 Apr 2026 11:40:43 +0700 Subject: [PATCH 4/7] resize mini chat --- .../ChatSystem/MiniChat/prefab_MiniChatContentsText.prefab | 6 +++--- Assets/Prefabs/ChatSystem/MiniChat/prefab_MiniChatUI.prefab | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Assets/Prefabs/ChatSystem/MiniChat/prefab_MiniChatContentsText.prefab b/Assets/Prefabs/ChatSystem/MiniChat/prefab_MiniChatContentsText.prefab index 1a0d3159d4..a0ea2466b1 100644 --- a/Assets/Prefabs/ChatSystem/MiniChat/prefab_MiniChatContentsText.prefab +++ b/Assets/Prefabs/ChatSystem/MiniChat/prefab_MiniChatContentsText.prefab @@ -112,7 +112,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} m_AnchoredPosition: {x: 104, y: -5} - m_SizeDelta: {x: 290, y: 0} + m_SizeDelta: {x: 600, y: 0} m_Pivot: {x: 0, y: 1} --- !u!222 &7228077960814023056 CanvasRenderer: @@ -252,9 +252,9 @@ MonoBehaviour: m_IgnoreLayout: 0 m_MinWidth: 290 m_MinHeight: -1 - m_PreferredWidth: -1 + m_PreferredWidth: 600 m_PreferredHeight: -1 - m_FlexibleWidth: 603.72 + m_FlexibleWidth: 600 m_FlexibleHeight: -1 m_LayoutPriority: 1 --- !u!1 &6627717456258223658 diff --git a/Assets/Prefabs/ChatSystem/MiniChat/prefab_MiniChatUI.prefab b/Assets/Prefabs/ChatSystem/MiniChat/prefab_MiniChatUI.prefab index 53715a1e13..3ed9074659 100644 --- a/Assets/Prefabs/ChatSystem/MiniChat/prefab_MiniChatUI.prefab +++ b/Assets/Prefabs/ChatSystem/MiniChat/prefab_MiniChatUI.prefab @@ -371,8 +371,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 0} - m_AnchoredPosition: {x: -175.64499, y: 151.8} - m_SizeDelta: {x: -1148.71, y: 227} + m_AnchoredPosition: {x: -157.2, y: 151.8} + m_SizeDelta: {x: -1235.6001, y: 227} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &5093099212117339368 CanvasRenderer: From 6859486b32b5728a624ac5737c49bce16324acec Mon Sep 17 00:00:00 2001 From: NguyenVanDat Date: Mon, 20 Apr 2026 11:41:15 +0700 Subject: [PATCH 5/7] update edit combo --- Assets/PerfectWorld/Scripts/UI/SkillUI/CDlgSkillSubPool.cs | 1 + Assets/PerfectWorld/Scripts/UI/SkillUI/SkillSetUpComboWidget.cs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Assets/PerfectWorld/Scripts/UI/SkillUI/CDlgSkillSubPool.cs b/Assets/PerfectWorld/Scripts/UI/SkillUI/CDlgSkillSubPool.cs index a6140ff294..420c0d55a1 100644 --- a/Assets/PerfectWorld/Scripts/UI/SkillUI/CDlgSkillSubPool.cs +++ b/Assets/PerfectWorld/Scripts/UI/SkillUI/CDlgSkillSubPool.cs @@ -144,6 +144,7 @@ namespace BrewMonster private void OnClickedConfirmCombo() { + _skillSetUpComboWidget.ShowCurrentCombos(); if (_currentSelectComboSlot != null && _skillSetUpComboWidget.CurrentComboSetting.comboSkill[_currentSelectComboSlot.GetSlotIndex].idSkill == null) { diff --git a/Assets/PerfectWorld/Scripts/UI/SkillUI/SkillSetUpComboWidget.cs b/Assets/PerfectWorld/Scripts/UI/SkillUI/SkillSetUpComboWidget.cs index eb9370f160..3bd01534b9 100644 --- a/Assets/PerfectWorld/Scripts/UI/SkillUI/SkillSetUpComboWidget.cs +++ b/Assets/PerfectWorld/Scripts/UI/SkillUI/SkillSetUpComboWidget.cs @@ -104,7 +104,7 @@ namespace BrewMonster _btnLoopAttack.OnClickedSkillSlot -= OnSelectedSkillToAsign; } - private void ShowCurrentCombos() + public void ShowCurrentCombos() { // setting.comboSkill[GetData() - 1].nIcon = (byte)m_nIcon; if (Setting.comboSkill == null || _combosList.Count != Setting.comboSkill.Length) From 48548d23cc9e919d1152da034a606aa11fcc8203 Mon Sep 17 00:00:00 2001 From: CuongNV <> Date: Mon, 20 Apr 2026 14:12:28 +0700 Subject: [PATCH 6/7] fix bug dont show icon skill --- .../Scripts/UI/GamePlay/AUIImagePicture.cs | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIImagePicture.cs b/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIImagePicture.cs index 8f9fc9a7d2..25babd77e4 100644 --- a/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIImagePicture.cs +++ b/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIImagePicture.cs @@ -16,6 +16,7 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay public class AUIImagePicture : AUIImagePictureBase { public const string DefaultComboIcon = "爱你"; + [SerializeField] Button skillbutton; [SerializeField] GameObject borderImage; [SerializeField] int cooldownTime; [SerializeField] AUIClockIcon m_ClockCounter; @@ -36,6 +37,12 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay public override void Awake() { + if (skillbutton == null) + { + return; + } + skillbutton.onClick.RemoveAllListeners(); + skillbutton.onClick.AddListener(Execute); m_pParent = GetComponentInParent(); // _skillID = int.Parse(this.name.Split('_')[1]); } @@ -44,11 +51,14 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay { if (isInteract) { + skillbutton.interactable = true; disPlayImage.color = Color.white; } else { disPlayImage.color = Color.gray; + + skillbutton.interactable = false; } } @@ -87,6 +97,12 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay Debug.LogError("Skill Image is not assigned in AUIImagePicture"); return; } + + if (skillbutton != null) + { + skillbutton.interactable = true; + } + disPlayImage.color = Color.white; disPlayImage.sprite = sprite; disPlayImage.gameObject.SetActive(true); @@ -95,9 +111,11 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay } private IEnumerator CooldownRoutine() { + skillbutton.interactable = false; disPlayImage.color = Color.gray; yield return new WaitForSeconds(cooldownTime); disPlayImage.color = Color.white; + skillbutton.interactable = true; } public AUIClockIcon GetClockIcon() => m_ClockCounter; @@ -116,6 +134,7 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay { // BMLogger.Log("Clear AUIImagePicture with name: " + name) ; base.Clear(); + skillbutton.interactable = true; if (disPlayImage != null) { disPlayImage.color = Color.white; @@ -214,7 +233,6 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay } _skillGroupIndex = resolvedGroup; - Clear(); return false; } @@ -227,6 +245,7 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay return false; } + skillbutton.interactable = true; var uiMan = EC_Game.GetGameRun()?.GetUIManager()?.GetInGameUIMan(); if (uiMan == null) { From d30a3d5e99e23849b1b1641ab83a7179b159859f Mon Sep 17 00:00:00 2001 From: CuongNV <> Date: Mon, 20 Apr 2026 14:37:28 +0700 Subject: [PATCH 7/7] update code hide popup before --- Assets/PerfectWorld/Scripts/Chat/UI/MiniChatUI.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Assets/PerfectWorld/Scripts/Chat/UI/MiniChatUI.cs b/Assets/PerfectWorld/Scripts/Chat/UI/MiniChatUI.cs index 271fd142a9..101a4f021e 100644 --- a/Assets/PerfectWorld/Scripts/Chat/UI/MiniChatUI.cs +++ b/Assets/PerfectWorld/Scripts/Chat/UI/MiniChatUI.cs @@ -14,6 +14,8 @@ namespace BrewMonster.Scripts.ChatUI { [Header("MiniChat")] public Button onOpenChatPanelButton; + [Tooltip("Dialog name registered in CECUIManager/CECGameUIMan for full chat panel.")] + [SerializeField] string chatDialogName = "Win_Chat"; [Tooltip("Parent cho các dòng tin xem trước (nên có VerticalLayoutGroup).")] public RectTransform miniChatContent; [Tooltip("ScrollRect bọc mini chat (null = không cuộn). Nếu để trống, Awake sẽ thử GetComponentInParent từ miniChatContent.")] @@ -78,6 +80,10 @@ namespace BrewMonster.Scripts.ChatUI void OnOpenChatPanelButtonClicked() { + // Open through CECUIManager stack so current top UI/popup is hidden consistently. + if (!string.IsNullOrEmpty(chatDialogName) && CECUIManager.Instance != null) + CECUIManager.Instance.ShowUI(chatDialogName); + EventBus.Publish(new OpenChatPanelRequestedEvent()); }