hxp
2021-11-22 4a5de5f9b8f4617bdb7f6d4733fcc0200e458d65
9367 【BT5】【主干】战力压制拓展到21亿以上

# Conflicts:
# ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
3个文件已修改
50 ■■■■■ 已修改文件
PySysDB/PySysDBPY.h 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PySysDB/PySysDBPY.h
@@ -460,6 +460,15 @@
    dict        AttrExDict;    //特殊属性值字典 {attrKey:value, ...}
};
//NPC表扩展
struct tagNPCEx
{
    DWORD        _NPCID;    //NPCID
    BYTE        FightPowerLackAtkLimit;    //战力不足限制攻击
    DWORD        SuppressFightPower;    //推荐/压制战力
};
//成长型怪物参数公式表
struct tagNPCStrengthen
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -385,6 +385,12 @@
                        ("dict", "AttrExDict", 0),
                        ),
                "NPCEx":(
                        ("DWORD", "NPCID", 1),
                        ("BYTE", "FightPowerLackAtkLimit", 0),
                        ("DWORD", "SuppressFightPower", 0),
                        ),
                "NPCStrengthen":(
                        ("DWORD", "NPCID", 1),
                        ("BYTE", "IsStrengthenByPlayerCount", 0),
@@ -2668,6 +2674,19 @@
    def GetAttrPer(self): return self.AttrPer # 对应等级表中的比例
    def GetAttrSpecDict(self): return self.AttrSpecDict # 特殊属性值字典 {attrKey:value, ...}
    def GetAttrExDict(self): return self.AttrExDict # 特殊属性值字典 {attrKey:value, ...}
# NPC表扩展
class IPY_NPCEx():
    def __init__(self):
        self.NPCID = 0
        self.FightPowerLackAtkLimit = 0
        self.SuppressFightPower = 0
        return
    def GetNPCID(self): return self.NPCID # NPCID
    def GetFightPowerLackAtkLimit(self): return self.FightPowerLackAtkLimit # 战力不足限制攻击
    def GetSuppressFightPower(self): return self.SuppressFightPower # 推荐/压制战力
# 成长型怪物参数公式表
class IPY_NPCStrengthen():
@@ -6007,6 +6026,8 @@
        self.ipyPlayerLVLen = len(self.ipyPlayerLVCache)
        self.ipyGMAttrCache = self.__LoadFileData("GMAttr", IPY_GMAttr)
        self.ipyGMAttrLen = len(self.ipyGMAttrCache)
        self.ipyNPCExCache = self.__LoadFileData("NPCEx", IPY_NPCEx)
        self.ipyNPCExLen = len(self.ipyNPCExCache)
        self.ipyNPCStrengthenCache = self.__LoadFileData("NPCStrengthen", IPY_NPCStrengthen)
        self.ipyNPCStrengthenLen = len(self.ipyNPCStrengthenCache)
        self.ipyNPCTimeLostHPCache = self.__LoadFileData("NPCTimeLostHP", IPY_NPCTimeLostHP)
@@ -6565,6 +6586,8 @@
    def GetPlayerLVByIndex(self, index): return self.ipyPlayerLVCache[index]
    def GetGMAttrCount(self): return self.ipyGMAttrLen
    def GetGMAttrByIndex(self, index): return self.ipyGMAttrCache[index]
    def GetNPCExCount(self): return self.ipyNPCExLen
    def GetNPCExByIndex(self, index): return self.ipyNPCExCache[index]
    def GetNPCStrengthenCount(self): return self.ipyNPCStrengthenLen
    def GetNPCStrengthenByIndex(self, index): return self.ipyNPCStrengthenCache[index]
    def GetNPCTimeLostHPCount(self): return self.ipyNPCTimeLostHPLen
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -114,11 +114,25 @@
        return max(curNPC.GetCurLV(), curNPC.GetLV())
    return curNPC.GetLV()
def GetNPCDataEx(npcID):
    ## 获取NPC扩展数据表,可热更
    npcDataEx = IpyGameDataPY.GetIpyGameDataNotLog("NPCEx", npcID)
    if not npcDataEx:
        if False: # 不可能成立的条件,只为了 . 出代码提示
            npcDataEx = IpyGameDataPY.IPY_NPCEx()
        return npcDataEx
    return npcDataEx
def GetRealmLV(curNPC): return curNPC.GetMAtkMin()      # NPC表中此字段含义改成境界等级
def SetRealmLV(curNPC, realmLV): return curNPC.SetMAtkMin(realmLV)      # NPC表中此字段含义改成境界等级
def GetIsLVSuppress(curNPC): return curNPC.GetWindDef() # 风防代表是否等级压制
def GetSuppressFightPower(curNPC): return curNPC.GetThunderDef() # 雷防代表压制战力
def SetSuppressFightPower(curNPC, value): return curNPC.SetThunderDef(value)
def GetFightPowerLackAtkLimit(curNPC): # 战力不足限制攻击,默认不限制
    npcDataEx = GetNPCDataEx(curNPC.GetNPCID())
    return npcDataEx.GetFightPowerLackAtkLimit() if npcDataEx else 0
def GetSuppressFightPower(curNPC):
    npcDataEx = GetNPCDataEx(curNPC.GetNPCID())
    return npcDataEx.GetSuppressFightPower() if npcDataEx else curNPC.GetThunderDef() # 雷防代表压制战力
def SetSuppressFightPower(curNPC, value): return curNPC.SetThunderDef(min(value, ShareDefine.Def_UpperLimit_DWord))
def GetCommendFightPower(curNPC): return curNPC.GetFireDef() # 火防代表推荐战力
def GetDropOwnerType(curNPC): return curNPC.GetThunderAtk() # 雷攻代表掉落归属类型
def GetFaction(curNPC): return curNPC.GetCountry()