From 72e91a62ea834ab33da32fea41831221f9083b56 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 24 二月 2025 18:16:23 +0800 Subject: [PATCH] 10407 【越南】【英语】【BT】【GM】【砍树】周末BUG汇总(模块战力支持超20亿;开服活动榜同步修改支持超20亿;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 56 +++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 35 insertions(+), 21 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 0f9757c..f1ee17e 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py @@ -3997,7 +3997,7 @@ #GameWorld.DebugLog("MfpType=%s,FightPower=%s, %s" % (self.mfpType, totalFightPower, self.GetMFPAttrStr())) if totalFightPower > ShareDefine.Def_UpperLimit_DWord: GameWorld.ErrLog("模块战力超过数值上限, MfpType=%s,fightPower=%s, %s" % (self.mfpType, totalFightPower, self.GetMFPAttrStr())) - totalFightPower = ShareDefine.Def_UpperLimit_DWord + #totalFightPower = ShareDefine.Def_UpperLimit_DWord 模块战力支持超20亿,日志暂保留用于输出提醒 return totalFightPower def GetMFPAttrStr(self): @@ -4525,7 +4525,7 @@ #GameWorld.DebugLog("等级属性点加属性: %s" % allAttrList) #GameWorld.DebugLog("灵根品阶等级属性: %s" % lingGenQualityAttrList) #GameWorld.DebugLog("灵根点数附加战力: %s" % pointFightPowerEx) - curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Role, pointFightPowerEx) + SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Role, pointFightPowerEx) SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_RoleBase, allAttrList) SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_LingGenQuailty, lingGenQualityAttrList) return hasChange_Qualitylv @@ -4970,11 +4970,10 @@ # 因为计算战力需要取到总属性,所以等各功能点属性累加完后再计算 for mfpType, mfpObj in mfpObjDict.items(): mfpValue = 0 if not fpParam else mfpObj.GetModuleFightPower(fpParam, curPlayer) - mfpSkill = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpObj.mfpType) - mfpEx = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPEx % mfpObj.mfpType) + mfpSkill = GetMFPSkillFightPower(curPlayer, mfpObj.mfpType) mfpEx = GetMFPExFightPower(curPlayer, mfpType) mfpTotal = mfpValue + mfpSkill + mfpEx - mfpDict[mfpObj.mfpType] = min(mfpTotal, ChConfig.Def_UpperLimit_DWord) + mfpDict[mfpObj.mfpType] = mfpTotal if mfpType == ShareDefine.Def_MFPType_Plus: OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_Plus, mfpTotal) @@ -5280,15 +5279,15 @@ # 重置模块技能战斗力 for mfpType in ShareDefine.ModuleFightPowerTypeList: - curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPSkill % mfpType, 0) + SetMFPSkillFightPower(curPlayer, mfpType, 0) for i in range(0, skillManager.GetSkillCount()): curSkill = skillManager.GetSkillByIndex(i) mfpType = ChConfig.Def_SkillFuncType_MFPType.get(curSkill.GetFuncType(), ShareDefine.Def_MFPType_Role) - - skillMFP = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpType) - curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPSkill % mfpType, skillMFP + curSkill.GetFightPower()) + + skillMFP = GetMFPSkillFightPower(curPlayer, mfpType) + SetMFPSkillFightPower(curPlayer, mfpType, skillMFP + curSkill.GetFightPower()) return @@ -5301,9 +5300,9 @@ return mfpType = ChConfig.Def_SkillFuncType_MFPType.get(curSkill.GetFuncType(), ShareDefine.Def_MFPType_Role) - addFightPower = curSkill.GetFightPower() - beforeFightPower - skillMFP = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpType) - curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPSkill % mfpType, max(0, skillMFP + addFightPower)) + addFightPower = curSkill.GetFightPower() - beforeFightPower + skillMFP = GetMFPSkillFightPower(curPlayer, mfpType) + SetMFPSkillFightPower(curPlayer, mfpType, max(0, skillMFP + addFightPower)) GameWorld.DebugLog("刷新技能附加战斗力: skillID=%s,beforeFightPower=%s,mfpType=%s,skillMFP=%s,updMFP=%s" % (skillID, beforeFightPower, mfpType, skillMFP, skillMFP + addFightPower), curPlayer.GetPlayerID()) @@ -5321,8 +5320,8 @@ return delFightPower = curSkill.GetFightPower() mfpType = ChConfig.Def_SkillFuncType_MFPType.get(curSkill.GetFuncType(), ShareDefine.Def_MFPType_Role) - skillMFP = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpType) - curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPSkill % mfpType, max(0, skillMFP - delFightPower)) + skillMFP = GetMFPSkillFightPower(curPlayer, mfpType) + SetMFPSkillFightPower(curPlayer, mfpType, max(0, skillMFP - delFightPower)) GameWorld.DebugLog("刷新技能附加战斗力: delSkillID=%s,mfpType=%s,skillMFP=%s,delFightPower=%s" % (delSkillID, mfpType, skillMFP, delFightPower), curPlayer.GetPlayerID()) @@ -5358,7 +5357,8 @@ mfpData = ChPyNetSendPack.tagMCModuleFightPower() mfpData.Clear() mfpData.MfpType = mfpType - mfpData.FightPower = fightPower # 当前模块战斗力数值 + mfpData.FightPower = fightPower % ChConfig.Def_PerPointValue # 当前模块战斗力数值 + mfpData.FightPowerEx = fightPower / ChConfig.Def_PerPointValue # 当前模块战斗力数值 mfpDataList.append(mfpData) totalFightPower += fightPower # 累加总战斗力 @@ -5387,8 +5387,8 @@ ChConfig.Def_PDictType_FightPower) GameWorld.DebugLog("总战力: %s, 历史最高战力: %s, beforeFightPower=%s" % (totalFightPower, highestFightPower, beforeFightPower), playerID) PlayerBillboard.UpdatePlayerFPTotalBillboard(curPlayer) - # 记录开服活动数据,开服活动前X天理论上不会超过20E,暂不处理 - OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_FightPower, min(totalFightPower, ChConfig.Def_UpperLimit_DWord)) + # 记录开服活动数据 + OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_FightPower, totalFightPower) if beforeFightPower != totalFightPower: CrossPlayerData.OnPlayerFightPowerChange(curPlayer) return @@ -6522,20 +6522,22 @@ def GetPrestige(curPlayer): return 0 def SetPrestige(curPlayer, value): return -##总战斗力,支持超过20E +##总战斗力,支持超过20E = 各模块战力总和 def GetFightPower(curPlayer): return curPlayer.GetFightPowerEx() * ChConfig.Def_PerPointValue + curPlayer.GetFightPower() def SetFightPower(curPlayer, value): curPlayer.SetFightPower(value % ChConfig.Def_PerPointValue, value / ChConfig.Def_PerPointValue, False) # 不通知GameServer bNotifyGameServer False return -## 设置模块战斗力,最大20E +## 设置模块战斗力,支持超过20E = 模块公式战力 + 技能附加战力 + 其他附加战力 def SetMFPFightPower(curPlayer, mfpType, fightPower): - curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPFightPower % mfpType, min(fightPower, ChConfig.Def_UpperLimit_DWord)) + curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPFightPower % mfpType, fightPower % ChConfig.Def_PerPointValue) + curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPFightPowerPoint % mfpType, fightPower / ChConfig.Def_PerPointValue) return ## 获取模块战斗力 def GetMFPFightPower(curPlayer, mfpType): - return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPFightPower % mfpType) + return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPFightPowerPoint % mfpType) * ChConfig.Def_PerPointValue + \ + curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPFightPower % mfpType) ## 设置模块附加战斗力,支持超过20E def SetMFPExFightPower(curPlayer, mfpType, fightPower): @@ -6547,6 +6549,18 @@ def GetMFPExFightPower(curPlayer, mfpType): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPExPoint % mfpType) * ChConfig.Def_PerPointValue + \ curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPEx % mfpType) + +## 设置模块技能附加战斗力,支持超过20E +def SetMFPSkillFightPower(curPlayer, mfpType, fightPower): + curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPSkill % mfpType, fightPower % ChConfig.Def_PerPointValue) + curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPSkillEx % mfpType, fightPower / ChConfig.Def_PerPointValue) + return + +## 获取模块技能附加战斗力 +def GetMFPSkillFightPower(curPlayer, mfpType): + return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkillEx % mfpType) * ChConfig.Def_PerPointValue + \ + curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpType) + #=============================================================================== ##获取玩家分线信息 # @param curPlayer 玩家实例 -- Gitblit v1.8.0