yyl
2025-08-29 9e91c51e4ece0002b58e22e27ec57fd8d23176a9
125 【战斗】战斗系统 协议更新
4个文件已修改
75 ■■■■■ 已修改文件
Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB424_tagSCTurnFightInit.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB428_tagSCBuffRefresh.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB424_tagSCTurnFightInit.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB428_tagSCBuffRefresh.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB424_tagSCTurnFightInit.cs
@@ -1,67 +1,11 @@
using UnityEngine;
using System.Collections;
using LitJson;
using System.Collections.Generic;
// B4 24 回合战斗初始化 #tagSCTurnFightInit
public class DTCB424_tagSCTurnFightInit : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack)
    {
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HB424_tagSCTurnFightInit vNetData = vNetPack as HB424_tagSCTurnFightInit;
        // 【战斗地图定义】
        // 前后端协议通讯时,如果有MapID、FuncLineID信息,一般代表的是某个战斗功能,
        // 并可绑定某个战斗场景(相当于MMO中的不同功能及战斗场景地图)
        // 卡牌中也可理解为不同的战斗功能及绑定不同的战斗背景图之类
        // 目前几个固定MapID定义
        // 主线小怪战斗 MapID = 1
        // FuncLineID = 章节*10000+关卡编号*100+第x波,如第一章,第10关卡,第5波时值 = 11005,
        // 单章最大支持99小关,单关最大支持99波怪
        // 主线boss战斗 MapID = 2
        // FuncLineID = 章节*10000+关卡编号*100+第x波,如第一章,第10关卡的boss值 = 11001,
        // 注:关卡boss波数固定为只有1波
        // 前端可通过MapID及对应的FuncLineID加载不同的战斗场景背景、背景音乐等
        // HB424_tagSCTurnFightInit
        // MapID;    // 自定义地图ID,可用于绑定战斗地图场景功能(如主线关卡、主线boss、爬塔、竞技场等)
        // FuncLineID;    // MapID对应的扩展值,如具体某个关卡等
        // TurnMax;    // 最大轮次
        // Len;
        // Msg;    // 本场战斗扩展信息,一般为json格式,具体内容由MapID决定
        // FactionCnt;
        // FactionList;    // 阵营列表,通常固定只有两个阵营
        List<TeamBase> redTeamList = new List<TeamBase>();
        List<TeamBase> blueTeamList = new List<TeamBase>();
        if (null != vNetData.FactionList)
        {
            foreach (var vFaction in vNetData.FactionList)
            {
                if (vFaction.Faction == 1)
                {
                    foreach (var lineUp in vFaction.LineupList)
                    {
                        redTeamList.Add(new TeamBase(lineUp));
                    }
                }
                else if (vFaction.Faction == 2)
                {
                    foreach (var lineUp in vFaction.LineupList)
                    {
                        blueTeamList.Add(new TeamBase(lineUp));
                    }
                }
            }
        }
        JsonData extendData = JsonMapper.ToObject(vNetData.Msg);
        string guid = BattleManager.Instance.GetGUID(vNetPack.packUID);
        BattleField battleField = BattleManager.Instance.CreateBattleField(guid, (int)vNetData.MapID, (int)vNetData.FuncLineID, extendData, redTeamList, blueTeamList);
        BattleStartAction battleStartAction = new BattleStartAction(battleField);
        battleField.recordPlayer.PlayRecord(battleStartAction);
    }
}
Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB428_tagSCBuffRefresh.cs
@@ -4,15 +4,8 @@
// B4 28 Buff刷新 #tagSCBuffRefresh
public class DTCB428_tagSCBuffRefresh : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack)
    {
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HB428_tagSCBuffRefresh vNetData = vNetPack as HB428_tagSCBuffRefresh;
        BattleField battleField = BattleManager.Instance.GetBattleField(vNetData.packUID);
        if (null != battleField)
        {
            battleField.OnRefreshBuff(vNetData);
        }
    }
}
Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB424_tagSCTurnFightInit.cs
@@ -63,13 +63,13 @@
    public class tagSCTurnFightObj {
        public uint ObjID;        // 战斗单位唯一ID
        public uint NPCID;        // 战斗NPCID,不同的实例ID对应的NPCID可能一样
        public uint HeroID;        // 玩家武将ID,仅玩家阵容有
        public uint SkinID;        // 玩家武将皮肤ID,仅玩家阵容有
        public uint HeroID;        // 武将ID,玩家或NPC均可能有,如果有值则外观相关以该武将为准,否则以NPCID为准
        public uint SkinID;        // 武将皮肤ID,玩家或NPC均可能有,如果有值则皮肤以该值为准,否则取NPCID对应的皮肤ID
        public uint HP;        // 当前血量,求余20亿部分
        public uint HPEx;        // 当前血量,整除20亿部分
        public uint MaxHP;        // 最大血量,求余20亿部分
        public uint MaxHPEx;        // 最大血量,整除20亿部分
        public ushort LV;        // 等级
        public ushort LV;        // 等级,玩家的武将等级或NPC成长等级,等级显示以该值为准
        public byte PosNum;        // 在本阵容中的站位,从1开始,非主战斗武将为0,如红颜
        public ushort AngreXP;        // 当前怒气值
    }
Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB428_tagSCBuffRefresh.cs
@@ -14,6 +14,7 @@
    public uint Value1;
    public uint Value2;
    public uint Value3;
    public byte IsAdd;    // 是否是添加/覆盖的,1-是;0-否一般为buff的数据刷新
    public HB428_tagSCBuffRefresh () {
        _cmd = (ushort)0xB428;
@@ -30,6 +31,7 @@
        TransBytes (out Value1, vBytes, NetDataType.DWORD);
        TransBytes (out Value2, vBytes, NetDataType.DWORD);
        TransBytes (out Value3, vBytes, NetDataType.DWORD);
        TransBytes (out IsAdd, vBytes, NetDataType.BYTE);
    }
}