From b5098dca7b3454da208d60d4944d132ca660bb77 Mon Sep 17 00:00:00 2001 From: yyl <yyl> Date: 星期二, 14 十月 2025 18:45:24 +0800 Subject: [PATCH] 125 战斗 子技能支持 --- Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs | 85 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 84 insertions(+), 1 deletions(-) diff --git a/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs b/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs index 563d00f..8262b27 100644 --- a/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs +++ b/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs @@ -99,6 +99,8 @@ Dictionary<int, GameNetPackBasic> indexDict = new Dictionary<int, GameNetPackBasic>(); + Dictionary<uint, HB427_tagSCUseSkill> skillDict = new Dictionary<uint, HB427_tagSCUseSkill>(); + for (int i = 0; i < b421SeriesPackList.Count; i++) { var pack = b421SeriesPackList[i]; @@ -134,7 +136,41 @@ } else { - indexDict.Add(i, pack); + if (pack is HB427_tagSCUseSkill skillPack) + { + // 澶勭悊鎶�鑳戒箣闂寸殑閾炬帴鍏崇郴 + if (skillPack.RelatedSkillID > 0) + { + skillDict.TryGetValue(skillPack.RelatedSkillID, out var parentSkill); + + if (parentSkill != null && skillPack.BattleType == 4)//4=瀛愭妧鑳� + { + parentSkill.subSkillList.Add(skillPack); + skillPack.parentSkill = parentSkill; + } + else + { + indexDict.Add(i, pack); + } + } + else + { + indexDict.Add(i, pack); + } + + if (skillDict.ContainsKey(skillPack.SkillID)) + { + skillDict[skillPack.SkillID] = skillPack; + } + else + { + skillDict.Add(skillPack.SkillID, skillPack); + } + } + else + { + indexDict.Add(i, pack); + } } } @@ -203,6 +239,53 @@ } + public static SkillRecordAction CreateSkillAction(string guid, List<GameNetPackBasic> _packList) + { + BattleField battleField = BattleManager.Instance.GetBattleField(guid); + + if (null == battleField) + { + Debug.LogError("BattleField not found for guid: " + guid); + return null; + } + + while (_packList.Count > 0) + { + var pack = _packList[0]; + _packList.RemoveAt(0); + + if (pack is HB427_tagSCUseSkill) + { + _packList.Insert(0, pack); + break; + } + else if (pack is CustomHB426CombinePack) + { + Debug.LogError("鏃犳硶鎵惧埌Skill鍖咃紝鍏堝彂鐜颁簡宓屽鍖�"); + return null; + } + else + { + // Debug.LogError("鍙戠幇闈濻kill鍖咃紝鍏堝垎鍙戞帀: " + pack.GetType().Name); + PackageRegedit.Distribute(pack); + } + } + + HB427_tagSCUseSkill skill = _packList[0] as HB427_tagSCUseSkill; + _packList.RemoveAt(0); + if (null == skill) + { + Debug.LogError("No HB427_tagSCUseSkill found in packList."); + return null; + } + + BattleObject _caster = battleField.battleObjMgr.GetBattleObject((int)skill.ObjID); + + SkillRecordAction skillAction = new SkillRecordAction(battleField, _caster, skill, _packList); + return skillAction; + + } + public SkillRecordAction CreateSkillAction() { BattleField battleField = BattleManager.Instance.GetBattleField(guid); -- Gitblit v1.8.0