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/OpenServerCampaign.py |   29 ++++++++++++++++++++++-------
 1 files changed, 22 insertions(+), 7 deletions(-)

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)

--
Gitblit v1.8.0