From 6d52c69be5170f6518ac9be8aa05bae7bfd26b54 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 21 七月 2025 14:24:43 +0800 Subject: [PATCH] 121 【武将】武将系统-服务端(去除旧属性;优化命令Hero、PrintFightPower;优化武将技能战力计算;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py | 26 ++++++++++++++++++++++++-- 1 files changed, 24 insertions(+), 2 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py index 0c96bc7..872e5f6 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py @@ -43,6 +43,7 @@ self.heroBatAttrDict = {} # 武将的最终战斗属性字典, {attrID:value, ...} self.heroSkillIDList = [] # 武将拥有的技能ID列表 [skillID, ...] self.fightPower = 0 # 武将最终战力 + self.skillFightPower = 0 # 技能战力 return class Lineup(): @@ -674,23 +675,44 @@ else: attrValue = FormulaControl.Eval("otherAttrFormula", otherAttrFormula, attrParamDict) #GameWorld.DebugLog(" attrID=%s,attrValue=%s,attrParamDict=%s" % (attrID, attrValue, attrParamDict)) - lineupHero.heroBatAttrDict[attrID] = attrValue attrIpyData = IpyGameDataPY.GetIpyGameData("PlayerAttr", attrID) attrName = attrIpyData.GetParameter() if attrIpyData else "%s" % attrID fightPowerParamDict[attrName] = attrValue if attrValue: + lineupHero.heroBatAttrDict[attrID] = attrValue logAttrDict["%s-%s" % (attrID, attrName)] = attrValue # 计算战力 fightPower = FormulaControl.Eval("fightPowerFormula", fightPowerFormula, fightPowerParamDict) - skillFightPower = 0 + + GameWorld.DebugLog(" fightPower=%s,heroSkillIDList=%s" % (fightPower, lineupHero.heroSkillIDList)) + skillTypeIDDict = {} for skillID in lineupHero.heroSkillIDList: skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID) if not skillData: continue + skillTypeID = skillData.GetSkillTypeID() + if skillTypeID not in skillTypeIDDict: + skillTypeIDDict[skillTypeID] = skillData + else: + befSkillData = skillTypeIDDict[skillTypeID] + befSkillID = befSkillData.GetSkillID() + if befSkillID >= skillID: + continue + skillTypeIDDict[skillTypeID] = skillData + + skillFightPower = 0 + lineupHero.heroSkillIDList = [] + for skillData in skillTypeIDDict.values(): + skillID = skillData.GetSkillID() + lineupHero.heroSkillIDList.append(skillID) skillFightPower += skillData.GetFightPower() + GameWorld.DebugLog(" skillFightPower=%s,heroSkillIDList=%s" % (skillFightPower, lineupHero.heroSkillIDList)) + + # 最终战力 fightPowerTotal = fightPower + skillFightPower + lineupHero.skillFightPower = skillFightPower lineupHero.fightPower = fightPowerTotal lineupFightPower += fightPowerTotal -- Gitblit v1.8.0