From aeaea61638d86f166c24a8826df4b6be83ade16b Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 24 二月 2025 17:18:49 +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 997baef..1870ff8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -4033,7 +4033,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 __GetAttrFightPowerParamDiff(self, job):
@@ -4581,7 +4581,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
@@ -5026,11 +5026,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)
@@ -5336,15 +5335,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
     
@@ -5357,9 +5356,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())
         
@@ -5377,8 +5376,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())
         
@@ -5414,7 +5413,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 # 累加总战斗力
             
@@ -5443,8 +5443,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
@@ -6586,20 +6586,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):
@@ -6611,6 +6613,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