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