From 8a0a247299265f7a2ba4ef3af1594ca5bd696d9c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 14 七月 2025 10:55:50 +0800
Subject: [PATCH] 121 【武将】武将系统-服务端(武将升级消耗改为由品质跟武将等级决定;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py | 12 ++++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 47 +++++++++++++++++------
PySysDB/PySysDBPY.h | 9 ++++
3 files changed, 51 insertions(+), 17 deletions(-)
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 907256c..513a1e7 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -98,7 +98,6 @@
struct HeroQuality
{
DWORD _Quality; //品质
- list UPCostItem; // 升级消耗道具
list InitTalentWeight; // 初始天赋数权重
BYTE InitStarUpper; // 初始星级上限
DWORD InitAddPer; // 上阵初始加成万分率
@@ -128,6 +127,14 @@
list UPCostItem; // 觉醒到下级消耗道具
};
+//品质武将升级表
+struct HeroQualityLV
+{
+ DWORD _Quality; //品质
+ DWORD _HeroLV; //武将等级
+ list UPCostItem; // 升级到下级消耗道具
+};
+
//主线章节表
struct MainChapter
{
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 7ccbec3..29411cc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -114,7 +114,6 @@
"HeroQuality":(
("DWORD", "Quality", 1),
- ("list", "UPCostItem", 0),
("list", "InitTalentWeight", 0),
("BYTE", "InitStarUpper", 0),
("DWORD", "InitAddPer", 0),
@@ -137,6 +136,12 @@
"HeroQualityAwake":(
("DWORD", "Quality", 1),
("DWORD", "AwakeLV", 1),
+ ("list", "UPCostItem", 0),
+ ),
+
+ "HeroQualityLV":(
+ ("DWORD", "Quality", 1),
+ ("DWORD", "HeroLV", 1),
("list", "UPCostItem", 0),
),
@@ -2940,17 +2945,16 @@
return
def GetQuality(self): return self.attrTuple[0] # 品质 DWORD
- def GetUPCostItem(self): return self.attrTuple[1] # 升级消耗道具 list
- def GetInitTalentWeight(self): return self.attrTuple[2] # 初始天赋数权重 list
- def GetInitStarUpper(self): return self.attrTuple[3] # 初始星级上限 BYTE
- def GetInitAddPer(self): return self.attrTuple[4] # 上阵初始加成万分率 DWORD
- def GetLVAddPer(self): return self.attrTuple[5] # 上阵每等级加成 DWORD
- def GetBreakLVAddPer(self): return self.attrTuple[6] # 上阵每突破等级加成 DWORD
- def GetStarAddPer(self): return self.attrTuple[7] # 上阵每星级加成 DWORD
- def GetBookActAwardMoney(self): return self.attrTuple[8] # 图鉴激活奖励货币 类型|值 list
- def GetBookInitAddPer(self): return self.attrTuple[9] # 图鉴初始加成 DWORD
- def GetBookStarAddPer(self): return self.attrTuple[10] # 图鉴每星级加成 DWORD
- def GetBookBreakLVAddPer(self): return self.attrTuple[11] # 图鉴每突破等级加成 DWORD
+ def GetInitTalentWeight(self): return self.attrTuple[1] # 初始天赋数权重 list
+ def GetInitStarUpper(self): return self.attrTuple[2] # 初始星级上限 BYTE
+ def GetInitAddPer(self): return self.attrTuple[3] # 上阵初始加成万分率 DWORD
+ def GetLVAddPer(self): return self.attrTuple[4] # 上阵每等级加成 DWORD
+ def GetBreakLVAddPer(self): return self.attrTuple[5] # 上阵每突破等级加成 DWORD
+ def GetStarAddPer(self): return self.attrTuple[6] # 上阵每星级加成 DWORD
+ def GetBookActAwardMoney(self): return self.attrTuple[7] # 图鉴激活奖励货币 类型|值 list
+ def GetBookInitAddPer(self): return self.attrTuple[8] # 图鉴初始加成 DWORD
+ def GetBookStarAddPer(self): return self.attrTuple[9] # 图鉴每星级加成 DWORD
+ def GetBookBreakLVAddPer(self): return self.attrTuple[10] # 图鉴每突破等级加成 DWORD
# 武将品质突破表
class IPY_HeroQualityBreak():
@@ -2974,6 +2978,17 @@
def GetQuality(self): return self.attrTuple[0] # 品质 DWORD
def GetAwakeLV(self): return self.attrTuple[1] # 觉醒等级 DWORD
def GetUPCostItem(self): return self.attrTuple[2] # 觉醒到下级消耗道具 list
+
+# 品质武将升级表
+class IPY_HeroQualityLV():
+
+ def __init__(self):
+ self.attrTuple = None
+ return
+
+ def GetQuality(self): return self.attrTuple[0] # 品质 DWORD
+ def GetHeroLV(self): return self.attrTuple[1] # 武将等级 DWORD
+ def GetUPCostItem(self): return self.attrTuple[2] # 升级到下级消耗道具 list
# 主线章节表
class IPY_MainChapter():
@@ -7090,6 +7105,7 @@
self.__LoadFileData("HeroQuality", onlyCheck)
self.__LoadFileData("HeroQualityBreak", onlyCheck)
self.__LoadFileData("HeroQualityAwake", onlyCheck)
+ self.__LoadFileData("HeroQualityLV", onlyCheck)
self.__LoadFileData("MainChapter", onlyCheck)
self.__LoadFileData("MainLevel", onlyCheck)
self.__LoadFileData("NPCLineup", onlyCheck)
@@ -7661,6 +7677,13 @@
self.CheckLoadData("HeroQualityAwake")
return self.ipyHeroQualityAwakeCache[index]
+ def GetHeroQualityLVCount(self):
+ self.CheckLoadData("HeroQualityLV")
+ return self.ipyHeroQualityLVLen
+ def GetHeroQualityLVByIndex(self, index):
+ self.CheckLoadData("HeroQualityLV")
+ return self.ipyHeroQualityLVCache[index]
+
def GetMainChapterCount(self):
self.CheckLoadData("MainChapter")
return self.ipyMainChapterLen
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
index efac7e6..e0515cf 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
@@ -234,10 +234,14 @@
if heroLV >= LVMax:
GameWorld.DebugLog("该武将已满级!LVMax=%s" % (LVMax), playerID)
return
- qualityIpyData = IpyGameDataPY.GetIpyGameData("HeroQuality", quality)
- if not qualityIpyData:
+ qualityLVIpyData = IpyGameDataPY.GetIpyGameData("HeroQualityLV", quality, heroLV)
+ if not qualityLVIpyData:
return
- costItemInfo = qualityIpyData.GetUPCostItem()
+ nextHeroLV = heroLV + 1
+ if not IpyGameDataPY.GetIpyGameData("HeroQualityLV", quality, nextHeroLV):
+ GameWorld.DebugLog("不存在该武将等级: quality=%s,nextHeroLV=%s" % (quality, nextHeroLV), playerID)
+ return
+ costItemInfo = qualityLVIpyData.GetUPCostItem()
if not costItemInfo:
return
costItemID, costItemCount = costItemInfo
@@ -250,7 +254,7 @@
return
ItemCommon.ReduceItem(curPlayer, itemPack, itemIndexList, costItemCount, True, "HeroLVUP")
- updHeroLV = heroLV + 1
+ updHeroLV = nextHeroLV
GameWorld.DebugLog("武将升级: itemIndex=%s,heroID=%s,updHeroLV=%s" % (itemIndex, heroID, updHeroLV), playerID)
heroItem.SetUserAttr(ShareDefine.Def_IudetHeroLV, updHeroLV)
--
Gitblit v1.8.0