121 【武将】武将系统-服务端(武将升级消耗改为由品质跟武将等级决定;)
3个文件已修改
68 ■■■■ 已修改文件
PySysDB/PySysDBPY.h 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
{
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
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)