From 1d1669caef41ee6f7a433a891ec101b076a5df83 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 02 七月 2025 17:35:16 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(初版战斗,支持基础的三维属性战斗,支持简单的普攻技能、怒气技能、回血技能;主线章节关卡过关支持;阵容保存支持多阵容;)
---
ServerPack/HB4_FightDefine/TurnFightObjAction | 0
ServerPack/HB4_FightDefine/TurnFightObjDead.des | 1
ServerPack/HB4_FightDefine/TurnFightObjReborn.des | 1
ClientPack/CB4_FightDefine/TurnFight.h | 8 +-
ServerPack/HB4_FightDefine/TurnFightInit | 0
ServerPack/HB4_FightDefine/TurnFightReportRet.des | 1
ServerPack/HB4_FightDefine/TurnFightState.h | 9 +--
ServerPack/HB4_FightDefine/TurnFightReportRet.h | 9 +++
ServerPack/HB4_FightDefine/TurnFightInit.des | 1
ServerPack/HB4_FightDefine/TurnFightObjAction.des | 1
ClientPack/CB4_FightDefine/MainFightReq.des | 1
ClientPack/CB4_FightDefine/HeroLineupSave | 0
ServerPack/HB4_FightDefine/TurnFightObjAction.h | 8 ++
ServerPack/HB4_FightDefine/TurnFightInit.h | 42 ++++++++++++++
ClientPack/CB4_FightDefine/HeroLineupSave.des | 1
ServerPack/HB4_FightDefine/TurnFightReportSign.h | 7 ++
ClientPack/CB4_FightDefine/HeroLineupSave.h | 16 +++++
ServerPack/HB4_FightDefine/TurnFightReportRet | 0
ClientPack/CB4_FightDefine/MainFightReq | 0
ServerPack/HB4_FightDefine/TurnFightReportSign | 0
ServerPack/HB4_FightDefine/TurnFightObjReborn | 0
/dev/null | 15 -----
ClientPack/CB4_FightDefine/TurnFightReportView | 0
ServerPack/HB4_FightDefine/TurnFightObjDead | 0
ClientPack/CB4_FightDefine/TurnFightReportView.h | 7 ++
ServerPack/HB4_FightDefine/TurnFightObjDead.h | 7 ++
ServerPack/HB4_FightDefine/TurnFightObjReborn.h | 12 ++++
ClientPack/CB4_FightDefine/MainFightReq.h | 8 ++
ServerPack/HB4_FightDefine/TurnFightReportSign.des | 1
ClientPack/CB4_FightDefine/TurnFightReportView.des | 1
30 files changed, 132 insertions(+), 25 deletions(-)
diff --git a/ClientPack/CB4_FightDefine/HeroBattlePosSave.des b/ClientPack/CB4_FightDefine/HeroBattlePosSave.des
deleted file mode 100644
index ff6e689..0000000
--- a/ClientPack/CB4_FightDefine/HeroBattlePosSave.des
+++ /dev/null
@@ -1 +0,0 @@
-B4 12 战斗阵型保存 #tagCSHeroBattlePosSave
diff --git a/ClientPack/CB4_FightDefine/HeroBattlePosSave.h b/ClientPack/CB4_FightDefine/HeroBattlePosSave.h
deleted file mode 100644
index 9c7bc5b..0000000
--- a/ClientPack/CB4_FightDefine/HeroBattlePosSave.h
+++ /dev/null
@@ -1,15 +0,0 @@
-// B4 12 战斗阵型保存 #tagCSHeroBattlePosSave
-
-struct tagCSHeroBattlePos
-{
- WORD ItemIndex; //武将物品所在武将背包位置索引
- BYTE PosNum; //1~n上阵位置编号
-};
-
-struct tagCSHeroBattlePosSave
-{
- tagHead Head;
- BYTE FuncType; //布阵功能类型:0-默认主阵型;其他待扩展,如某个活动的防守阵型
- BYTE PosCnt;
- tagCSHeroBattlePos HeroPosList[PosCnt]; // 保存的阵型,只要发送最终的阵型武将位置即可
-};
diff --git a/ClientPack/CB4_FightDefine/HeroBattlePosSave b/ClientPack/CB4_FightDefine/HeroLineupSave
similarity index 100%
rename from ClientPack/CB4_FightDefine/HeroBattlePosSave
rename to ClientPack/CB4_FightDefine/HeroLineupSave
diff --git a/ClientPack/CB4_FightDefine/HeroLineupSave.des b/ClientPack/CB4_FightDefine/HeroLineupSave.des
new file mode 100644
index 0000000..f4cbe57
--- /dev/null
+++ b/ClientPack/CB4_FightDefine/HeroLineupSave.des
@@ -0,0 +1 @@
+B4 12 战斗阵容保存 #tagCSHeroLineupSave
diff --git a/ClientPack/CB4_FightDefine/HeroLineupSave.h b/ClientPack/CB4_FightDefine/HeroLineupSave.h
new file mode 100644
index 0000000..a3018aa
--- /dev/null
+++ b/ClientPack/CB4_FightDefine/HeroLineupSave.h
@@ -0,0 +1,16 @@
+// B4 12 战斗阵容保存 #tagCSHeroLineupSave
+
+struct tagCSHeroLineupPos
+{
+ WORD ItemIndex; //武将物品所在武将背包位置索引
+ BYTE PosNum; //1~n上阵位置编号
+};
+
+struct tagCSHeroLineupSave
+{
+ tagHead Head;
+ BYTE LineupID; //阵容ID:1-主阵容;其他待扩展,如某个防守阵容
+ BYTE ShapeType; //本阵容阵型,0为默认阵型,可扩展不同的阵型
+ BYTE PosCnt;
+ tagCSHeroLineupPos HeroPosList[PosCnt]; // 保存的阵容,只发送最终的阵容武将位置即可
+};
diff --git a/ClientPack/CB4_FightDefine/HeroBattlePosSave b/ClientPack/CB4_FightDefine/MainFightReq
similarity index 100%
copy from ClientPack/CB4_FightDefine/HeroBattlePosSave
copy to ClientPack/CB4_FightDefine/MainFightReq
diff --git a/ClientPack/CB4_FightDefine/MainFightReq.des b/ClientPack/CB4_FightDefine/MainFightReq.des
new file mode 100644
index 0000000..19df0d9
--- /dev/null
+++ b/ClientPack/CB4_FightDefine/MainFightReq.des
@@ -0,0 +1 @@
+B4 13 主线战斗请求 #tagCSMainFightReq
diff --git a/ClientPack/CB4_FightDefine/MainFightReq.h b/ClientPack/CB4_FightDefine/MainFightReq.h
new file mode 100644
index 0000000..d902307
--- /dev/null
+++ b/ClientPack/CB4_FightDefine/MainFightReq.h
@@ -0,0 +1,8 @@
+// B4 13 主线战斗请求 #tagCSMainFightReq
+
+struct tagCSMainFightReq
+{
+ tagHead Head;
+ BYTE ReqType; // 0-停止战斗回城;1-设置消耗倍值;2-挑战关卡小怪;3-挑战关卡boss;4-继续战斗;
+ DWORD ReqValue; // 请求值,ReqType为1时发送消耗倍值
+};
diff --git a/ClientPack/CB4_FightDefine/TurnFight.h b/ClientPack/CB4_FightDefine/TurnFight.h
index 4f20968..d7f8bf3 100644
--- a/ClientPack/CB4_FightDefine/TurnFight.h
+++ b/ClientPack/CB4_FightDefine/TurnFight.h
@@ -3,10 +3,10 @@
struct tagCMTurnFight
{
tagHead Head;
- DWORD MapID; // 自定义地图ID,可用于绑定战斗场景功能(如野外关卡,爬塔功能,竞技场等)
- WORD FuncLineID;
- BYTE TagType; // 战斗目标类型,0-NPC,1-玩家,2-队伍
- DWORD TagID; // 战斗目标类型对应的ID
+ DWORD MapID; // 自定义地图ID,可用于绑定战斗地图场景功能(如主线关卡、主线boss、爬塔、竞技场等)
+ DWORD FuncLineID; // MapID对应的扩展值,如具体某个关卡等
+ BYTE TagType; // 目标类型,0-NPC阵容,1-玩家
+ DWORD TagID; // 目标类型对应的ID,如阵容ID或玩家ID
BYTE ValueCount;
DWORD ValueList[ValueCount]; // 附加值列表,可选,具体含义由MapID决定
};
diff --git a/ClientPack/CB4_FightDefine/HeroBattlePosSave b/ClientPack/CB4_FightDefine/TurnFightReportView
similarity index 100%
copy from ClientPack/CB4_FightDefine/HeroBattlePosSave
copy to ClientPack/CB4_FightDefine/TurnFightReportView
diff --git a/ClientPack/CB4_FightDefine/TurnFightReportView.des b/ClientPack/CB4_FightDefine/TurnFightReportView.des
new file mode 100644
index 0000000..07a147f
--- /dev/null
+++ b/ClientPack/CB4_FightDefine/TurnFightReportView.des
@@ -0,0 +1 @@
+B4 14 查看战报 #tagCSTurnFightReportView
diff --git a/ClientPack/CB4_FightDefine/TurnFightReportView.h b/ClientPack/CB4_FightDefine/TurnFightReportView.h
new file mode 100644
index 0000000..5a7c2c0
--- /dev/null
+++ b/ClientPack/CB4_FightDefine/TurnFightReportView.h
@@ -0,0 +1,7 @@
+// B4 14 查看战报 #tagCSTurnFightReportView
+
+struct tagCSTurnFightReportView
+{
+ tagHead Head;
+ char GUID[40]; //战报guid
+};
diff --git a/ClientPack/CB4_FightDefine/HeroBattlePosSave b/ServerPack/HB4_FightDefine/TurnFightInit
similarity index 100%
copy from ClientPack/CB4_FightDefine/HeroBattlePosSave
copy to ServerPack/HB4_FightDefine/TurnFightInit
diff --git a/ServerPack/HB4_FightDefine/TurnFightInit.des b/ServerPack/HB4_FightDefine/TurnFightInit.des
new file mode 100644
index 0000000..a88bc50
--- /dev/null
+++ b/ServerPack/HB4_FightDefine/TurnFightInit.des
@@ -0,0 +1 @@
+B4 24 回合战斗初始化 #tagSCTurnFightInit
diff --git a/ServerPack/HB4_FightDefine/TurnFightInit.h b/ServerPack/HB4_FightDefine/TurnFightInit.h
new file mode 100644
index 0000000..7577ed0
--- /dev/null
+++ b/ServerPack/HB4_FightDefine/TurnFightInit.h
@@ -0,0 +1,42 @@
+// B4 24 回合战斗初始化 #tagSCTurnFightInit
+
+struct tagSCTurnFightObj
+{
+ DWORD ObjID; // 实例唯一ID
+ DWORD NPCID; // 绑定的NPCID,不同的实例ID对应的NPCID可能一样
+ DWORD HP; // 当前血量,求余20亿部分
+ DWORD HPEx; // 当前血量,整除20亿部分
+ DWORD MaxHP; // 最大血量,求余20亿部分
+ DWORD MaxHPEx; // 最大血量,整除20亿部分
+ WORD LV; // 等级
+ BYTE PosNum; // 在本阵容中的站位,从1开始,非主战斗武将为0,如红颜
+ WORD AngreXP; // 当前怒气值
+};
+
+struct tagSCTurnFightLineup
+{
+ BYTE Num; // 该阵容在本阵营的编号,不同阵营的阵容编号可能相同,都是从1开始,一般1V1时每个阵营为1个阵容,多V多时则每个阵营为多个阵容
+ DWORD OwnerID; // 阵容所属的玩家ID,可能为0,0代表非玩家阵容
+ BYTE ShapeType; // 本阵容阵型,0为默认阵型,可扩展不同的阵型,如boss特殊战斗阵型,或者其他不同站位的阵型
+ BYTE ObjCnt;
+ tagSCTurnFightObj ObjList[ObjCnt]; // 本阵容战斗单位列表
+};
+
+struct tagSCTurnFightFaction
+{
+ BYTE Faction; //阵营编号,1或2,1为发起方的阵营编号
+ BYTE LineupCnt;
+ tagSCTurnFightLineup LineupList[LineupCnt]; // 本阵营所有阵容列表,为支持多V多扩展用,通常情况下每个阵营只有一个阵容
+};
+
+struct tagSCTurnFightInit
+{
+ tagHead Head;
+ DWORD MapID; // 自定义地图ID,可用于绑定战斗地图场景功能(如主线关卡、主线boss、爬塔、竞技场等)
+ DWORD FuncLineID; // MapID对应的扩展值,如具体某个关卡等
+ BYTE TurnMax; // 最大轮次
+ WORD Len;
+ char Msg[Len]; // 本场战斗扩展信息,一般为json格式,具体内容由MapID决定
+ BYTE FactionCnt;
+ tagSCTurnFightFaction FactionList[FactionCnt]; // 阵营列表,通常固定只有两个阵营
+};
diff --git a/ClientPack/CB4_FightDefine/HeroBattlePosSave b/ServerPack/HB4_FightDefine/TurnFightObjAction
similarity index 100%
copy from ClientPack/CB4_FightDefine/HeroBattlePosSave
copy to ServerPack/HB4_FightDefine/TurnFightObjAction
diff --git a/ServerPack/HB4_FightDefine/TurnFightObjAction.des b/ServerPack/HB4_FightDefine/TurnFightObjAction.des
new file mode 100644
index 0000000..7c2d187
--- /dev/null
+++ b/ServerPack/HB4_FightDefine/TurnFightObjAction.des
@@ -0,0 +1 @@
+B4 21 回合战斗对象开始行动 #tagMCTurnFightObjAction
diff --git a/ServerPack/HB4_FightDefine/TurnFightObjAction.h b/ServerPack/HB4_FightDefine/TurnFightObjAction.h
new file mode 100644
index 0000000..58b94ae
--- /dev/null
+++ b/ServerPack/HB4_FightDefine/TurnFightObjAction.h
@@ -0,0 +1,8 @@
+// B4 21 回合战斗对象开始行动 #tagMCTurnFightObjAction
+
+struct tagMCTurnFightObjAction
+{
+ tagHead Head;
+ BYTE TurnNum; // 当前轮次
+ DWORD ObjID;
+};
diff --git a/ClientPack/CB4_FightDefine/HeroBattlePosSave b/ServerPack/HB4_FightDefine/TurnFightObjDead
similarity index 100%
copy from ClientPack/CB4_FightDefine/HeroBattlePosSave
copy to ServerPack/HB4_FightDefine/TurnFightObjDead
diff --git a/ServerPack/HB4_FightDefine/TurnFightObjDead.des b/ServerPack/HB4_FightDefine/TurnFightObjDead.des
new file mode 100644
index 0000000..07ef6d3
--- /dev/null
+++ b/ServerPack/HB4_FightDefine/TurnFightObjDead.des
@@ -0,0 +1 @@
+B4 22 回合战斗对象死亡 #tagMCTurnFightObjDead
diff --git a/ServerPack/HB4_FightDefine/TurnFightObjDead.h b/ServerPack/HB4_FightDefine/TurnFightObjDead.h
new file mode 100644
index 0000000..6a4be9e
--- /dev/null
+++ b/ServerPack/HB4_FightDefine/TurnFightObjDead.h
@@ -0,0 +1,7 @@
+// B4 22 回合战斗对象死亡 #tagMCTurnFightObjDead
+
+struct tagMCTurnFightObjDead
+{
+ tagHead Head;
+ DWORD ObjID;
+};
diff --git a/ClientPack/CB4_FightDefine/HeroBattlePosSave b/ServerPack/HB4_FightDefine/TurnFightObjReborn
similarity index 100%
copy from ClientPack/CB4_FightDefine/HeroBattlePosSave
copy to ServerPack/HB4_FightDefine/TurnFightObjReborn
diff --git a/ServerPack/HB4_FightDefine/TurnFightObjReborn.des b/ServerPack/HB4_FightDefine/TurnFightObjReborn.des
new file mode 100644
index 0000000..b568186
--- /dev/null
+++ b/ServerPack/HB4_FightDefine/TurnFightObjReborn.des
@@ -0,0 +1 @@
+B4 23 回合战斗对象复活 #tagMCTurnFightObjReborn
diff --git a/ServerPack/HB4_FightDefine/TurnFightObjReborn.h b/ServerPack/HB4_FightDefine/TurnFightObjReborn.h
new file mode 100644
index 0000000..f76478d
--- /dev/null
+++ b/ServerPack/HB4_FightDefine/TurnFightObjReborn.h
@@ -0,0 +1,12 @@
+// B4 23 回合战斗对象复活 #tagMCTurnFightObjReborn
+
+struct tagMCTurnFightObjReborn
+{
+ tagHead Head;
+ DWORD ObjID;
+ DWORD HP; // 复活后血量,求余亿部分
+ DWORD HPEx; // 复活后血量,整除亿部分
+ BYTE RebornType; // 复活方式:1-灵宠技能复活;2-待扩展
+ DWORD RebornValue1; // 复活方式对应值1,由复活方式决定其值意义
+ DWORD RebornValue2; // 复活方式对应值2
+};
diff --git a/ClientPack/CB4_FightDefine/HeroBattlePosSave b/ServerPack/HB4_FightDefine/TurnFightReportRet
similarity index 100%
copy from ClientPack/CB4_FightDefine/HeroBattlePosSave
copy to ServerPack/HB4_FightDefine/TurnFightReportRet
diff --git a/ServerPack/HB4_FightDefine/TurnFightReportRet.des b/ServerPack/HB4_FightDefine/TurnFightReportRet.des
new file mode 100644
index 0000000..9d8be14
--- /dev/null
+++ b/ServerPack/HB4_FightDefine/TurnFightReportRet.des
@@ -0,0 +1 @@
+B4 30 查看战报结果 #tagSCTurnFightReportRet
diff --git a/ServerPack/HB4_FightDefine/TurnFightReportRet.h b/ServerPack/HB4_FightDefine/TurnFightReportRet.h
new file mode 100644
index 0000000..289f9a4
--- /dev/null
+++ b/ServerPack/HB4_FightDefine/TurnFightReportRet.h
@@ -0,0 +1,9 @@
+// B4 30 查看战报结果 #tagSCTurnFightReportRet
+
+struct tagSCTurnFightReport
+{
+ tagHead Head;
+ char GUID[40]; //该战报guid
+ DWORD Len;
+ char Report[Len]; //完整战报
+};
diff --git a/ClientPack/CB4_FightDefine/HeroBattlePosSave b/ServerPack/HB4_FightDefine/TurnFightReportSign
similarity index 100%
copy from ClientPack/CB4_FightDefine/HeroBattlePosSave
copy to ServerPack/HB4_FightDefine/TurnFightReportSign
diff --git a/ServerPack/HB4_FightDefine/TurnFightReportSign.des b/ServerPack/HB4_FightDefine/TurnFightReportSign.des
new file mode 100644
index 0000000..c9f0fb2
--- /dev/null
+++ b/ServerPack/HB4_FightDefine/TurnFightReportSign.des
@@ -0,0 +1 @@
+B4 25 回合战斗战报片段标记 #tagSCTurnFightReportSign
diff --git a/ServerPack/HB4_FightDefine/TurnFightReportSign.h b/ServerPack/HB4_FightDefine/TurnFightReportSign.h
new file mode 100644
index 0000000..8c54fef
--- /dev/null
+++ b/ServerPack/HB4_FightDefine/TurnFightReportSign.h
@@ -0,0 +1,7 @@
+// B4 25 回合战斗战报片段标记 #tagSCTurnFightReportSign
+
+struct tagSCTurnFightReportSign
+{
+ tagHead Head;
+ BYTE Sign; // 0-战报片段开始;1-战报片段结束;
+};
diff --git a/ServerPack/HB4_FightDefine/TurnFightState.h b/ServerPack/HB4_FightDefine/TurnFightState.h
index fdd9d6b..63c134b 100644
--- a/ServerPack/HB4_FightDefine/TurnFightState.h
+++ b/ServerPack/HB4_FightDefine/TurnFightState.h
@@ -3,13 +3,10 @@
struct tagMCTurnFightState
{
tagHead Head;
- DWORD MapID; // 自定义地图ID,可用于绑定战斗场景功能(如野外关卡,爬塔功能,竞技场等)
- WORD FuncLineID;
- BYTE TagType; // 战斗目标类型,0-NPC,1-玩家,2-队伍
- DWORD TagID; // 战斗目标类型对应的ID
- BYTE State; // 0-起始状态标记;1-准备完毕;2-战斗中;3-战斗结束;4-结算奖励;5-结束状态标记
+ DWORD MapID; // 自定义地图ID,可用于绑定战斗地图场景功能(如主线关卡、主线boss、爬塔、竞技场等)
+ DWORD FuncLineID; // MapID对应的扩展值,如具体某个关卡等
+ BYTE State; // 0-起始状态标记;1-准备完毕;2-战斗中;3-战斗结束;4-结算奖励;5-结束状态标记
BYTE TurnNum; // 当前轮次
- BYTE TurnMax; // 最大轮次
WORD Len;
char Msg[Len]; //size = Len
};
--
Gitblit v1.8.0