From 112e6e57009cdfee014bdfeb97c22b9520fd4dca Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 17 五月 2019 16:53:20 +0800 Subject: [PATCH] 6828 【后端】【2.0】角色部分初始属性不计算战力 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 28 ++++++++++++++++++++++++++-- 1 files changed, 26 insertions(+), 2 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py index 18f7198..36a2e8f 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py @@ -3569,7 +3569,7 @@ attrName = self.__AttrName % attrIndex setattr(self, attrName, getattr(self, attrName) + value) - def GetModuleFightPower(self, fpParam): + def GetModuleFightPower(self, fpParam, job): MaxHP = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_AttrMaxHP) # 最大血量 MinAtk = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_AttrATKMin) # 最小攻击 MaxAtk = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_AttrATKMax) # 最大攻击 @@ -3638,6 +3638,10 @@ #其他需作为公式参数的系数 AtkSpeedParameter = fpParam.GetCftAtkSpeed() LuckyHitParameter = fpParam.GetCftLuckyHit() + + diffAttrDict = self.__GetAttrFightPowerParamDiff(job) + for paramName, diffValue in diffAttrDict.items(): + exec("%s = max(0, %s - %s)" % (paramName, paramName, diffValue)) #获取策划配置的表格 FightpowerFormula = IpyGameDataPY.GetFuncCfg("FightpowerFormula") @@ -3649,6 +3653,26 @@ totalFightPower = ShareDefine.Def_UpperLimit_DWord return totalFightPower + def __GetAttrFightPowerParamDiff(self, job): + ## 战力计算属性参数与实际属性差值 + + #角色基础模块某些属性不计算战力 + if self.mfpType != ShareDefine.Def_MFPType_Role: + return {} + + roleBaseAttrDict = IpyGameDataPY.GetFuncEvalCfg("CreatRoleBaseAttr", 1) + notFightPowerEffIDNameDict = IpyGameDataPY.GetFuncEvalCfg("CreatRoleBaseAttr", 2) + if job not in roleBaseAttrDict: + return {} + + diffAttrDict = {} + jobBaseAttrDict = roleBaseAttrDict[job] + for attrID, paramName in notFightPowerEffIDNameDict.items(): + if attrID not in jobBaseAttrDict: + continue + diffAttrDict[paramName] = jobBaseAttrDict[attrID] + return diffAttrDict + def GetMFPAttrStr(self): attrStr = "" for attrIndex in xrange(1, ChConfig.Def_Calc_AllAttrType_MAX): @@ -4532,7 +4556,7 @@ for attrIndex, value in mfpAttrExDict.items(): mfpObj.AddCalcMFPAttr(attrIndex, value) - mfpValue = 0 if not fpParam else mfpObj.GetModuleFightPower(fpParam) + mfpValue = 0 if not fpParam else mfpObj.GetModuleFightPower(fpParam, curPlayer.GetJob()) mfpSkill = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpObj.mfpType) mfpEx = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPEx % mfpObj.mfpType) mfpTotal = mfpValue + mfpSkill + mfpEx -- Gitblit v1.8.0