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/PlayerChatBox.py             |    2 
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py                                |   42 ++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py                 |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerAward.py |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py                  |   20 +++-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py           |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py           |   16 +--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py               |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py         |    2 
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py                                       |   20 +++-
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py                                |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyTech.py          |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py      |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetOSCRecordData.py     |   12 --
 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py                       |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py                |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFace.py                |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerCampaign.py        |   29 +++++-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoat.py                |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py             |   56 ++++++++-----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerShentong.py            |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py          |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                         |   10 +-
 23 files changed, 157 insertions(+), 83 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 0abe7df..3bffc00 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -25965,7 +25965,8 @@
     _pack_ = 1
     _fields_ = [
                   ("MfpType", c_ubyte),    #模块编号类型
-                  ("FightPower", c_int),    #本模块战斗力
+                  ("FightPower", c_int),    #本模块战斗力,求余亿部分
+                  ("FightPowerEx", c_int),    #本模块战斗力,整除亿部分,1代表1亿
                   ]
 
     def __init__(self):
@@ -25980,6 +25981,7 @@
     def Clear(self):
         self.MfpType = 0
         self.FightPower = 0
+        self.FightPowerEx = 0
         return
 
     def GetLength(self):
@@ -25991,11 +25993,13 @@
     def OutputString(self):
         DumpString = '''//A3 A1 各功能模块战斗力信息 //tagMCModuleFightPowerInfo:
                                 MfpType:%d,
-                                FightPower:%d
+                                FightPower:%d,
+                                FightPowerEx:%d
                                 '''\
                                 %(
                                 self.MfpType,
-                                self.FightPower
+                                self.FightPower,
+                                self.FightPowerEx
                                 )
         return DumpString
 
@@ -50510,7 +50514,8 @@
                   ("CampaignType", c_ubyte),    #奖励类型
                   ("BillAwardRecord", c_ubyte),    #排行奖励是否已领取
                   ("TagAwardRecord", c_int),    #目标奖励索引位领取记录:0-未领;1-已领
-                  ("RecordData", c_int),    #活动时的记录值
+                  ("RecordData", c_int),    #活动时的记录值,求余亿部分,为了统一逻辑,其他非战力榜的也使用此规则
+                  ("RecordDataEx", c_int),    #活动时的记录值,整除亿部分,1代表1亿
                   ]
 
     def __init__(self):
@@ -50527,6 +50532,7 @@
         self.BillAwardRecord = 0
         self.TagAwardRecord = 0
         self.RecordData = 0
+        self.RecordDataEx = 0
         return
 
     def GetLength(self):
@@ -50540,13 +50546,15 @@
                                 CampaignType:%d,
                                 BillAwardRecord:%d,
                                 TagAwardRecord:%d,
-                                RecordData:%d
+                                RecordData:%d,
+                                RecordDataEx:%d
                                 '''\
                                 %(
                                 self.CampaignType,
                                 self.BillAwardRecord,
                                 self.TagAwardRecord,
-                                self.RecordData
+                                self.RecordData,
+                                self.RecordDataEx
                                 )
         return DumpString
 
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
index 61c2dfb..6f9ee27 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
@@ -1286,6 +1286,7 @@
     GameWorld.GetFamilyManager().SetFamilyUpperLimitCount(ChConfig.Def_Family_MaxCnt)
     #排序元宝交易平台
     GameWorld.GetGameWorld().GetDBGoldOrderFormMgr().Sort()
+    PlayerBillboard.FixBillboardBigCmpValue()
     #排序排行榜
     PlayerBillboard.SortServerBillboard()
     #功能队伍
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py
index 400a510..e68a555 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py
@@ -154,6 +154,43 @@
         
     return
 
+def FixBillboardBigCmpValue():
+    ## 修正部分榜单大比较值,支持超20亿,主要为了模块战力等支持超20亿
+    if PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FixBillboardBigCmpValue):
+        GameWorld.Log("修正部分榜单大比较值支持超20亿已经处理过")
+        return
+    PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FixBillboardBigCmpValue, 1)
+    fixBillTypeList = [ShareDefine.Def_BT_FightPower_Horse]
+    fixBillTypeList += ShareDefine.Def_Campaign_Billboard_Dict.values()
+    GameWorld.Log("修正部分榜单大比较值支持超20亿: %s" % fixBillTypeList)
+    
+    billboardMgr = GameWorld.GetBillboard()
+    for billboardType in fixBillTypeList:
+        billBoard = billboardMgr.FindBillboard(billboardType)
+        dataCount = billBoard.GetCount()
+        if not dataCount:
+            continue
+        DataRecordPack.DR_BillboardData(billboardType, "FixBillboardBigCmpValue")
+        GameWorld.Log("修正榜单大比较值: billboardType=%s" % billboardType)
+        for index in range(dataCount):
+            boardData = billBoard.At(index)
+            if not boardData:
+                continue
+            dataID = boardData.GetID()
+            cmpValue = boardData.GetCmpValue()
+            cmpValue2 = boardData.GetCmpValue2()
+            if cmpValue2:
+                GameWorld.Log("    index=%s,dataID=%s, keep CmpValue=%s,CmpValue2=%s" % (index, dataID, cmpValue, cmpValue2))
+                continue
+            boardData.SetCmpValue(0)
+            boardData.SetCmpValue2(cmpValue)
+            
+            cmpValue = boardData.GetCmpValue()
+            cmpValue2 = boardData.GetCmpValue2()
+            GameWorld.Log("    index=%s,dataID=%s, Update CmpValue=%s,CmpValue2=%s" % (index, dataID, cmpValue, cmpValue2))
+            
+    return
+
 def SortServerBillboard():
     ##排序所有排行榜
     billboardMgr = GameWorld.GetBillboard()
@@ -748,6 +785,9 @@
         else:
             cmpValue3 = playerBillBoardData.GetCmpValue3()
             
+    GameWorld.DebugLog("更新排行榜值 index=%s,type2=%s,value1=%s,value2=%s,cmpValue=%s,cmpValue2==%s,cmpValue3==%s,isNewData=%s,cmpValueChange=%s,%s" 
+                       % (billboardIndex, type2, value1, value2, cmpValue, cmpValue2, cmpValue3, isNewData, cmpValueChange, kwargs), curPlayerID)
+    
     #设置排行榜数据
     playerBillBoardData.SetType(billboardIndex)
     #附属类型
@@ -773,8 +813,6 @@
     if cmpValue3 > 0:
         playerBillBoardData.SetCmpValue3(cmpValue3)
         
-    GameWorld.DebugLog("更新排行榜值 index=%s,type2=%s,value1=%s,value2=%s,cmpValue=%s,cmpValue2==%s,cmpValue3==%s,isNewData=%s,cmpValueChange=%s,%s" 
-                       % (billboardIndex, type2, value1, value2, cmpValue, cmpValue2, cmpValue3, isNewData, cmpValueChange, kwargs), curPlayerID)
     if not cmpValueChange:
         return True
     
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py
index fa6239e..674d42a 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py
@@ -121,6 +121,9 @@
 #服务器开服自动逻辑处理 小时
 Def_Server_Hour = 'Def_Server_Hour'
 
+# 排行榜大数值比较值修正标记
+Def_FixBillboardBigCmpValue = "FixBillboardBigCmpValue"
+
 # 交易所开关
 Def_BourseState = "BourseState"
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index c27d053..f5268d8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3333,8 +3333,10 @@
 Def_PlayerKey_AttrXPRestorePer = "AttrXPRestorePer"    #自动恢复XP值比率
 Def_PlayerKey_MarkLoadMapTick = "LoadMapTickVIP"        #记录切换地图后的tick,VIP
 Def_PlayerKey_MTFreeOnlineRefreshTick = "MTFreeOnlineRTick"        # 寻宝在线计算时间
-Def_PlayerKey_MFPFightPower = "MFPFightPower_%s"        #模块战斗力, 参数(模块类型索引)
+Def_PlayerKey_MFPFightPower = "MFPFightPower_%s"        #模块战斗力, 求余亿部分,参数(模块类型索引)
+Def_PlayerKey_MFPFightPowerPoint = "MFPFightPowerPoint_%s"        #模块战斗力, 整除亿部分,参数(模块类型索引)
 Def_PlayerKey_MFPSkill = "MFPSkill_%s"        #技能附加战斗力, 参数(模块类型索引)
+Def_PlayerKey_MFPSkillEx = "MFPSkillEx_%s"        #技能附加战斗力, 参数(模块类型索引)
 Def_PlayerKey_MFPEx = "MFPEx_%s"        #模块附加战斗力, 参数(模块类型索引)
 Def_PlayerKey_MFPExPoint = "MFPExPoint_%s"        #模块附加战斗力, 参数(模块类型索引)
 Def_PlayerKey_AtkWithoutBuff = "AtkWithoutBuff"        #玩家无buff状态下的攻击值
@@ -4228,7 +4230,8 @@
 #奖励记录 - 从低位到高位,每位表示:0-不可领;1-可领取;2-已领
 Def_PDict_OSC_BillAwardRecord = "OSCBillAwardRecord"  # 开服活动排行奖励记录, 按活动类型位存储是否领取/处理过
 Def_PDict_OSC_TagAwardRecord = "OSCTagAwardRecord_%s"  # 开服活动目标奖励记录, 参数(活动类型), 按奖励位存储是否领取
-Def_PDict_OSC_RecordData = "OSCRecordData_%s"  # 开服活动记录数值, 参数(活动类型)
+Def_PDict_OSC_RecordData = "OSCRecordData_%s"  # 开服活动记录数值, 求余亿部分,参数(活动类型)
+Def_PDict_OSC_RecordDataEx = "OSCRecordDataEx_%s"  # 开服活动记录数值, 整除亿部分,参数(活动类型)
 Def_PDict_OSC_EndMailState = "EndMailState"  # 开服活动结束发放邮件处理状态, 记录该状态的目的是防止开服活动版本变更导致旧号重复补发奖励;
 
 # 法器
@@ -4282,9 +4285,8 @@
 Def_PDict_FightPower_HighestEx = "FightPower_HighestEx"  # 历史最高总战斗力
 Def_PDict_FightPower_Total = "FightPower_Total"  # 总战斗力
 Def_PDict_FightPower_TotalEx = "FightPower_TotalEx"  # 总战斗力
-Def_PDict_FightPower_Horse = "FightPower_Horse"  # 坐骑战斗力
 
-Def_PDict_FightPower_List = [Def_PDict_FightPower_Total, Def_PDict_FightPower_TotalEx, Def_PDict_FightPower_Horse]
+Def_PDict_FightPower_List = [Def_PDict_FightPower_Total, Def_PDict_FightPower_TotalEx]
 
 # 每日活跃度
 Def_PDict_Activity_FinishCnt = "Activity_FinishCnt_%s"  # 活跃度类型对应完成次数
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 0abe7df..3bffc00 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -25965,7 +25965,8 @@
     _pack_ = 1
     _fields_ = [
                   ("MfpType", c_ubyte),    #模块编号类型
-                  ("FightPower", c_int),    #本模块战斗力
+                  ("FightPower", c_int),    #本模块战斗力,求余亿部分
+                  ("FightPowerEx", c_int),    #本模块战斗力,整除亿部分,1代表1亿
                   ]
 
     def __init__(self):
@@ -25980,6 +25981,7 @@
     def Clear(self):
         self.MfpType = 0
         self.FightPower = 0
+        self.FightPowerEx = 0
         return
 
     def GetLength(self):
@@ -25991,11 +25993,13 @@
     def OutputString(self):
         DumpString = '''//A3 A1 各功能模块战斗力信息 //tagMCModuleFightPowerInfo:
                                 MfpType:%d,
-                                FightPower:%d
+                                FightPower:%d,
+                                FightPowerEx:%d
                                 '''\
                                 %(
                                 self.MfpType,
-                                self.FightPower
+                                self.FightPower,
+                                self.FightPowerEx
                                 )
         return DumpString
 
@@ -50510,7 +50514,8 @@
                   ("CampaignType", c_ubyte),    #奖励类型
                   ("BillAwardRecord", c_ubyte),    #排行奖励是否已领取
                   ("TagAwardRecord", c_int),    #目标奖励索引位领取记录:0-未领;1-已领
-                  ("RecordData", c_int),    #活动时的记录值
+                  ("RecordData", c_int),    #活动时的记录值,求余亿部分,为了统一逻辑,其他非战力榜的也使用此规则
+                  ("RecordDataEx", c_int),    #活动时的记录值,整除亿部分,1代表1亿
                   ]
 
     def __init__(self):
@@ -50527,6 +50532,7 @@
         self.BillAwardRecord = 0
         self.TagAwardRecord = 0
         self.RecordData = 0
+        self.RecordDataEx = 0
         return
 
     def GetLength(self):
@@ -50540,13 +50546,15 @@
                                 CampaignType:%d,
                                 BillAwardRecord:%d,
                                 TagAwardRecord:%d,
-                                RecordData:%d
+                                RecordData:%d,
+                                RecordDataEx:%d
                                 '''\
                                 %(
                                 self.CampaignType,
                                 self.BillAwardRecord,
                                 self.TagAwardRecord,
-                                self.RecordData
+                                self.RecordData,
+                                self.RecordDataEx
                                 )
         return DumpString
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerAward.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerAward.py
index 7f0c88c..540987c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerAward.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerAward.py
@@ -74,7 +74,6 @@
 def __DoOSCReset(curPlayer, campaignType):
     # 更新领奖记录
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_TagAwardRecord % campaignType, 0)
-    #PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_RecordData % campaignType, 0)
     GameWorld.DebugAnswer(curPlayer, 'OSCReset %s OK!'%campaignType)
     return
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py
index aae630b..4921090 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py
@@ -52,7 +52,7 @@
     GameWorld.DebugAnswer(curPlayer, "===== 总战力: %s" % PlayerControl.GetFightPower(curPlayer))
     for mfpType in ChConfig.MFPTypeAttrFuncIndexDict.keys():
         fightPower = PlayerControl.GetMFPFightPower(curPlayer, mfpType)
-        mfpSkillFP = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpType)
+        mfpSkillFP = PlayerControl.GetMFPSkillFightPower(curPlayer, mfpType)
         mfpEx = PlayerControl.GetMFPExFightPower(curPlayer, mfpType)
         name = mfpTypeName.get(mfpType, "模块%s" % mfpType)
         if mfpSkillFP or mfpEx:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetOSCRecordData.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetOSCRecordData.py
index b7051b7..39f186d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetOSCRecordData.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetOSCRecordData.py
@@ -46,14 +46,6 @@
                    ShareDefine.Def_Campaign_Type_Wash:"洗练",
                    }
     
-    if len(cmdList) == 1:
-        recordData = cmdList[0]
-        for oscType, name in oscTypeDict.items():
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_RecordData % oscType, recordData)
-            GameWorld.DebugAnswer(curPlayer, "设置[%s]活动数值: %s OK!" % (name, recordData))
-        OpenServerCampaign.Sync_OpenServerCampaignAward(curPlayer)
-        return
-    
     if len(cmdList) != 2:
         __AnswerHelp(curPlayer, oscTypeDict)
         return
@@ -64,7 +56,7 @@
         __AnswerHelp(curPlayer, oscTypeDict)
         return
     
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_RecordData % campaignType, recordData)
+    recordData = OpenServerCampaign.SetOSCRecordData(curPlayer, campaignType, recordData)
     OpenServerCampaign.Sync_OpenServerCampaignAward(curPlayer, campaignType)
     GameWorld.DebugAnswer(curPlayer, "设置[%s]活动数值: %s OK!" % (oscTypeDict.get(campaignType), recordData))
     return
@@ -75,7 +67,7 @@
     for oscType, name in oscTypeDict.items():
         helpTypeStr += "%s-%s," % (oscType, name)
         
-    GameWorld.DebugAnswer(curPlayer, "SetOSCRecordData [活动类型, 数值]")
+    GameWorld.DebugAnswer(curPlayer, "SetOSCRecordData 活动类型  数值")
     GameWorld.DebugAnswer(curPlayer, "活动类型:%s" % helpTypeStr)
     return
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerCampaign.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerCampaign.py
index 0b7b80c..a0e2da1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerCampaign.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerCampaign.py
@@ -35,7 +35,7 @@
 
 def DoBillboardOpen(curPlayer):
     for campaignType, billBoardType in ShareDefine.Def_Campaign_Billboard_Dict.items():
-        value = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_RecordData % campaignType)
+        value = GetOSCRecordData(curPlayer, campaignType)
         GameWorld.DebugLog("排行榜开启,同步开服活动记录!campaignType=%s,billBoardType=%s,value=%s" % (campaignType, billBoardType, value))
         if CanUpdOSCBillboard(curPlayer, campaignType, value):
             PlayerBillboard.UpdatePlayerBillboard(curPlayer, billBoardType, value)
@@ -64,9 +64,20 @@
 def CanUpdOSCBillboard(curPlayer, campaignType, curValue): return __CanUpdOSCRecordData(campaignType, curValue)
 def IsNeedSaveOpenServerCampaignRecordData(campaignType): return __CanUpdOSCRecordData(campaignType)
 
+def GetOSCRecordData(curPlayer, campaignType):
+    return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_RecordData % campaignType) + \
+        curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_RecordDataEx % campaignType) * ChConfig.Def_PerPointValue
+        
+def SetOSCRecordData(curPlayer, campaignType, updRecordData):
+    recordData = updRecordData % ChConfig.Def_PerPointValue
+    recordDataEx = updRecordData / ChConfig.Def_PerPointValue
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_RecordData % campaignType, recordData)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_RecordDataEx % campaignType, recordDataEx)
+    return GetOSCRecordData(curPlayer, campaignType)
+
 def AddOpenServerCampaignRecordData(curPlayer, campaignType, addValue):
     ## 增加开服活动数据记录(外调函数)
-    recordData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_RecordData % campaignType)
+    recordData = GetOSCRecordData(curPlayer, campaignType)
     
     recordData += addValue
     UpdOpenServerCampaignRecordData(curPlayer, campaignType, recordData)
@@ -78,7 +89,7 @@
         #GameWorld.DebugLog("    非开服活动记录数据时机, campaignType=%s" % campaignType)
         return
     
-    recordData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_RecordData % campaignType)
+    recordData = GetOSCRecordData(curPlayer, campaignType)
     
     if value == recordData:
         GameWorld.DebugLog("    开服活动数据等于历史记录, 不更新 campaignType=%s,recordData=%s,updValue=%s" 
@@ -92,18 +103,21 @@
         return
     
     # 更新开服活动时的记录数值
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_RecordData % campaignType, value)
+    value = SetOSCRecordData(curPlayer, campaignType, value)
     Sync_OpenServerCampaignAward(curPlayer, campaignType)
     GameWorld.DebugLog("    更新开服活动数据记录 campaignType=%s,recordData=%s,updValue=%s" 
                        % (campaignType, recordData, value), curPlayer.GetPlayerID())
     
     canUpdOSCBill = CanUpdOSCBillboard(curPlayer, campaignType, value)
     if campaignType in ShareDefine.Def_Campaign_Billboard_Dict and (value <= recordData or canUpdOSCBill):
+        cmpValue = value / ChConfig.Def_PerPointValue
+        cmpValue2 = value % ChConfig.Def_PerPointValue
         if not canUpdOSCBill:
-            value = -1
+            cmpValue = -1
+            cmpValue2 = 0
             GameWorld.DebugLog("    不能上榜降数据的,设置该榜单数据为-1,删除该数据!", curPlayer.GetPlayerID())
         billBoardType = ShareDefine.Def_Campaign_Billboard_Dict[campaignType]
-        PlayerBillboard.UpdatePlayerBillboard(curPlayer, billBoardType, value)
+        PlayerBillboard.UpdatePlayerBillboard(curPlayer, billBoardType, cmpValue, cmpValue2)
     return
 
 ##==================================================================================================
@@ -230,7 +244,7 @@
         return
     
     condition = tagAwardIpyData.GetTagCondition()
-    recordData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_RecordData % campaignType)
+    recordData = GetOSCRecordData(curPlayer, campaignType)
     if recordData < condition:
         GameWorld.DebugLog("    未达到该开服活动目标条件奖励!campaignType=%s,index=%s,recordData=%s < condition=%s" 
                            % (campaignType, index, recordData, condition), curPlayer.GetPlayerID())
@@ -356,6 +370,7 @@
         oscAward.BillAwardRecord = 1 if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_BillAwardRecord) & pow(2, syncOSCType) else 0
         oscAward.TagAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_TagAwardRecord % syncOSCType)
         oscAward.RecordData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_RecordData % syncOSCType)
+        oscAward.RecordDataEx = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_RecordDataEx % syncOSCType)
         oscAwardListPack.OSCAwardList.append(oscAward)
         
     oscAwardListPack.OSCAwardCnt = len(oscAwardListPack.OSCAwardList)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py
index a3100ef..b07fc85 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py
@@ -110,7 +110,7 @@
         bData["UserData"] = kwargs["userData"]
     sendMsg = "%s" % (bData) 
     GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "UpdateBillboard", sendMsg, len(sendMsg))
-    GameWorld.DebugLog("同步GameServer排行榜:bType=%s,cmpValue=%s, %s" % (bType, cmpValue, sendMsg), bID)
+    GameWorld.DebugLog("同步GameServer排行榜:bType=%s,cmpValue=%s,cmpValue2=%s %s" % (bType, cmpValue, cmpValue2, sendMsg), bID)
     return
 
 def UpdatePlayerCrossBillboard(curPlayer, bType, groupValue1, cmpValue, cmpValue2=0, cmpValue3=0, value1=0, value2=0, 
@@ -212,23 +212,17 @@
     
     return True
 
-def __GetUpdFightPower(curPlayer, key, fightPower):
-    ##获取更新排行榜的战力
-    #暂定更新实际战力
-    PlayerControl.NomalDictSetProperty(curPlayer, key, fightPower, ChConfig.Def_PDictType_FightPower)
-    return fightPower
-
 def UpdateHorseBillboard(curPlayer, isForceUpdate=False, isUpdateTotal=True):
     ##更新玩家坐骑排行榜
     
     HorseFightPower = PlayerControl.GetMFPFightPower(curPlayer, ShareDefine.Def_MFPType_Horse)
-    if not __CheckFightPowerCanUpdate(curPlayer, ChConfig.Def_PDict_FightPower_Horse,
-                                      HorseFightPower, isForceUpdate):
+    if not HorseFightPower:
         return
     
-    HorseFightPower = __GetUpdFightPower(curPlayer, ChConfig.Def_PDict_FightPower_Horse, HorseFightPower)
+    fightPower = HorseFightPower % ChConfig.Def_PerPointValue
+    fightPowerEx = HorseFightPower / ChConfig.Def_PerPointValue
     
-    UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_FightPower_Horse, HorseFightPower)
+    UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_FightPower_Horse, fightPowerEx, fightPower)
     
     if isUpdateTotal:
         UpdatePlayerFPTotalBillboard(curPlayer, isForceUpdate)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerChatBox.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerChatBox.py
index eec6f21..13fd627 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerChatBox.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerChatBox.py
@@ -218,7 +218,7 @@
                 
     # 保存计算值
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_ChatBox, allAttrList)
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_ChatBox, fightPowerEx)
+    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_ChatBox, fightPowerEx)
     return
 
 #// A2 30 设置聊天气泡框 #tagCMSetChatBubbleBox
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoat.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoat.py
index e068582..a9da587 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoat.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoat.py
@@ -193,7 +193,7 @@
             PlayerControl.CalcAttrDict_Type(int(attrID), attrValue, allAttrList)
     
     # 保存计算值
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Coat, initFPAdd)
+    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Coat, initFPAdd)
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Coat, allAttrList)
     return
 
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 玩家实例
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py
index 38cf5a0..f1bdd07 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py
@@ -585,7 +585,7 @@
                 PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListStar)
                 
     # 保存计算值
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Dienstgrad, initFPAdd)
+    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Dienstgrad, initFPAdd)
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Dienstgrad, allAttrList)
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_TitleStar, allAttrListStar)
     return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
index f7398cf..b0d3e90 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
@@ -602,7 +602,7 @@
     equipFightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2))
     #GameWorld.DebugLog("神兽装备评分战力: equipScoreTotal=%s,equipFightPowerEx=%s" % (equipScoreTotal, equipFightPowerEx))
     fightPowerEx += equipFightPowerEx
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Dogz, fightPowerEx)
+    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Dogz, fightPowerEx)
     
     # 技能属性,从Def_CalcAttrFunc_Dogz获取
     skillAttrList = CalcDogzBattleSkillAttr(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFace.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFace.py
index e93b2bb..c93652b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFace.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFace.py
@@ -320,7 +320,7 @@
                 
     # 保存计算值
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Face, allAttrList)
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Face, fightPowerEx)
+    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Face, fightPowerEx)
     return
 
 def CalcFacePicAttr(curPlayer):
@@ -356,7 +356,7 @@
                 
     # 保存计算值
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_FacePic, allAttrList)
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_FacePic, fightPowerEx)
+    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_FacePic, fightPowerEx)
     return
 
 #// B2 26 头像幻化 #tagCMFaceChange
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyTech.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyTech.py
index 135f069..3ae6e80 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyTech.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyTech.py
@@ -149,7 +149,7 @@
     # 保存计算值
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_FamilyTech, allAttrList)
     
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Other, skillFPEx)
+    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Other, skillFPEx)
     return
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py
index f48e16f..b30eb98 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py
@@ -122,7 +122,7 @@
         
         
     # 附加战力
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_GodWeapon, fightPowerEx)
+    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_GodWeapon, fightPowerEx)
     #GameWorld.DebugLog("神兵属性:%s" % allAttrList)
     # 保存计算值
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_GodWeapon, allAttrList)   
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
index a82f78b..4d86f4f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
@@ -542,7 +542,7 @@
                 attrValue = eatItemAttrValueList[i]
                 PlayerControl.CalcAttrDict_Type(attrID, attrValue * attrMultiple, allAttrListTrain)
                 
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Horse, initFPAdd)
+    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Horse, initFPAdd)
     
     #GameWorld.DebugLog("坐骑功能属性: horseLV=%s,horseSpeed=%s,totalItemCount=%s,initFPAdd=%s" % (horseLV, horseSpeed, totalItemCount, initFPAdd))
     
@@ -551,7 +551,7 @@
     
     # 果实对坐骑的加成, 魂石果实算附加属性层,单独计算
     fightPowerEx = PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrListHorseSoul, ShareDefine.Def_AttrFruitFunc_Horse)
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_HorseSoul, fightPowerEx)
+    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_HorseSoul, fightPowerEx)
     
     # 保存计算值
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Horse, allAttrList, customAttrDict=customAttrDictHorse)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
index bddb711..0fddd13 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
@@ -887,7 +887,7 @@
     totalSignNum = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalSignNum) # 总签到天数
     # 果实给人物加属性, 魂石果实算附加属性层,单独计算
     fightPowerEx = PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrListPetSoul, ShareDefine.Def_AttrFruitFunc_Pet)
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_PetSoul, fightPowerEx)
+    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_PetSoul, fightPowerEx)
     
     #灵兽技能给人物加的属性
     learnSkillList, passiveSkillList = GetPetLearnSkill(curPlayer)
@@ -991,7 +991,7 @@
                 
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSkin, allAttrListPetSkin)
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetStar, allAttrListStar)
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Pet, fpExTotal)
+    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Pet, fpExTotal)
 #    GameWorld.DebugLog("宠物榜NPCID: %s, petDict=%s" % (billPetNPCID, str(billPetDict)))
     return
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
index 50930c2..761950d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
@@ -334,7 +334,7 @@
     allAttrYaoList = [{} for _ in range(4)]
     fightPowerEx = PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrYaoList, ShareDefine.Def_AttrFruitFunc_Stove)
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_StoveYao, allAttrYaoList)
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_StoveYao, fightPowerEx)
+    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_StoveYao, fightPowerEx)
     return
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerShentong.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerShentong.py
index 3372899..58e01bd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerShentong.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerShentong.py
@@ -270,7 +270,7 @@
                     
     customAttrDictShentong["shentongSkillInfo"] = shentongSkillInfo          
     # 附加战力
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Shentong, fightPowerEx)
+    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Shentong, fightPowerEx)
     # 保存计算值
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Shentong, allAttrList, customAttrDict=customAttrDictShentong)
     return

--
Gitblit v1.8.0