From 61bae8814450e86b1851cb892086b7081a675ff1 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 25 六月 2024 16:08:13 +0800
Subject: [PATCH] 10185 【越南】【港台】【主干】BOSS凭证修改

---
 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBillboard.py |  108 +++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 94 insertions(+), 14 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBillboard.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBillboard.py
index 56014c3..aee6b1f 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBillboard.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBillboard.py
@@ -28,8 +28,8 @@
 import operator
 import time
 
-Def_CrossBillboard_MaxDataCount = 100 # 跨服榜单数据最大条数暂固定最大为100条,如有需要调整需针对实际情况进行评估(如数据同步、同步封包等)
-    
+Def_CrossBillboard_MaxDataCount = 200 # 跨服榜单数据最大条数暂固定最大为100条,如有需要调整需针对实际情况进行评估(如数据同步、同步封包等)
+
 class CrossBillboardManager(object):
     ## 跨服排行榜管理,注意该类只处理数据逻辑,功能相关逻辑不要写在该类,不然重读脚本不会生效
     
@@ -171,8 +171,11 @@
                         "ID":billboardData.ID, "ID2":billboardData.ID2,
                         "Name1":billboardData.Name1, "Name2":billboardData.Name2,
                         "Value1":billboardData.Value1, "Value2":billboardData.Value2,
+                        "Value3":billboardData.Value3, "Value4":billboardData.Value4,
+                        "Value5":billboardData.Value5, "Value6":billboardData.Value6,
+                        "Value7":billboardData.Value7, "Value8":billboardData.Value8,
                         "CmpValue":billboardData.CmpValue, "CmpValue2":billboardData.CmpValue2, 
-                        "CmpValue3":billboardData.CmpValue3}
+                        "CmpValue3":billboardData.CmpValue3, "UserData":billboardData.UserData}
             DataRecordPack.SendEventPack(eventTypeName, dataDict)
         return
     
@@ -221,7 +224,7 @@
             self.__billboardList = self.__billboardList[:len(syncBillboardList)] # 直接用本服以后的排行数据实例clear后覆盖更新,不足的创建新实例
             self.__idOrderDict = {}
             for i, syncData in enumerate(syncBillboardList):
-                ID, ID2, Name1, Name2, Type2, Value1, Value2, CmpValue, CmpValue2, CmpValue3 = syncData
+                ID, ID2, Name1, Name2, Type2, Value1, Value2, CmpValue, CmpValue2, CmpValue3, Value3, Value4, Value5, Value6, Value7, Value8, UserData = syncData
                 if i < len(self.__billboardList):
                     billboardData = self.__billboardList[i]
                     billboardData.clear()
@@ -239,6 +242,14 @@
                 billboardData.Type2 = Type2
                 billboardData.Value1 = Value1
                 billboardData.Value2 = Value2
+                billboardData.Value3 = Value3
+                billboardData.Value4 = Value4
+                billboardData.Value5 = Value5
+                billboardData.Value6 = Value6
+                billboardData.Value7 = Value7
+                billboardData.Value8 = Value8
+                billboardData.UserData = UserData
+                billboardData.DataLen = len(billboardData.UserData)
                 billboardData.CmpValue = CmpValue
                 billboardData.CmpValue2 = CmpValue2
                 billboardData.CmpValue3 = CmpValue3
@@ -282,6 +293,14 @@
             tobillboardData.Type2 = frbillboardData.Type2
             tobillboardData.Value1 = frbillboardData.Value1
             tobillboardData.Value2 = frbillboardData.Value2
+            tobillboardData.Value3 = frbillboardData.Value3
+            tobillboardData.Value4 = frbillboardData.Value4
+            tobillboardData.Value5 = frbillboardData.Value5
+            tobillboardData.Value6 = frbillboardData.Value6
+            tobillboardData.Value7 = frbillboardData.Value7
+            tobillboardData.Value8 = frbillboardData.Value8
+            tobillboardData.UserData = frbillboardData.UserData
+            tobillboardData.DataLen = len(tobillboardData.UserData)
             tobillboardData.CmpValue = frbillboardData.CmpValue
             tobillboardData.CmpValue2 = frbillboardData.CmpValue2
             tobillboardData.CmpValue3 = frbillboardData.CmpValue3
@@ -357,10 +376,17 @@
             Type2 = billboardData.Type2
             Value1 = billboardData.Value1
             Value2 = billboardData.Value2
+            Value3 = billboardData.Value3
+            Value4 = billboardData.Value4
+            Value5 = billboardData.Value5
+            Value6 = billboardData.Value6
+            Value7 = billboardData.Value7
+            Value8 = billboardData.Value8
+            UserData = billboardData.UserData
             CmpValue = billboardData.CmpValue
             CmpValue2 = billboardData.CmpValue2
             CmpValue3 = billboardData.CmpValue3
-            syncBillboardList.append([ID, ID2, Name1, Name2, Type2, Value1, Value2, CmpValue, CmpValue2, CmpValue3])
+            syncBillboardList.append([ID, ID2, Name1, Name2, Type2, Value1, Value2, CmpValue, CmpValue2, CmpValue3, Value3, Value4, Value5, Value6, Value7, Value8, UserData])
         msgData["BillboardDataList"] = syncBillboardList
         
     CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_SyncBillboard, msgData, serverGroupIDList)
@@ -419,9 +445,17 @@
         billboardInfoData.Type2 = billboardData.Type2
         billboardInfoData.Value1 = billboardData.Value1
         billboardInfoData.Value2 = billboardData.Value2
+        billboardInfoData.Value3 = billboardData.Value3
+        billboardInfoData.Value4 = billboardData.Value4
+        billboardInfoData.Value5 = billboardData.Value5
+        billboardInfoData.Value6 = billboardData.Value6
+        billboardInfoData.Value7 = billboardData.Value7
+        billboardInfoData.Value8 = billboardData.Value8
         billboardInfoData.CmpValue = billboardData.CmpValue
         billboardInfoData.CmpValue2 = billboardData.CmpValue2
         billboardInfoData.CmpValue3 = billboardData.CmpValue3
+        billboardInfoData.UserData = billboardData.UserData
+        billboardInfoData.DataLen = len(billboardInfoData.UserData)
         billboardInfo.CrossBillboardDataList.append(billboardInfoData)
     billboardInfo.BillboardCount = len(billboardInfo.CrossBillboardDataList)
     NetPackCommon.SendFakePack(curPlayer, billboardInfo)
@@ -454,9 +488,16 @@
     name2 = billInfoDict["Name2"]
     value1 = billInfoDict["Value1"]
     value2 = billInfoDict["Value2"]
+    value3 = billInfoDict.get("Value3", 0)
+    value4 = billInfoDict.get("Value4", 0)
+    value5 = billInfoDict.get("Value5", 0)
+    value6 = billInfoDict.get("Value6", 0)
+    value7 = billInfoDict.get("Value7", 0)
+    value8 = billInfoDict.get("Value8", 0)
     cmpValue = billInfoDict["CmpValue"]
     cmpValue2 = billInfoDict["CmpValue2"]
     cmpValue3 = billInfoDict["CmpValue3"]
+    userData = billInfoDict.get("UserData", "")
     
     billboardMgr = PyDataManager.GetCrossBillboardManager()
     billboardObj = billboardMgr.GetCrossBillboard(billboardType, groupValue1, groupValue2)
@@ -465,8 +506,11 @@
         if cmpValue == billboardData.CmpValue and cmpValue2 == billboardData.CmpValue2 \
             and (not cmpValue3 or cmpValue3 == billboardData.CmpValue3) \
             and value1 == billboardData.Value1 and value2 == billboardData.Value2 \
+            and value3 == billboardData.Value3 and value4 == billboardData.Value4 \
+            and value5 == billboardData.Value1 and value6 == billboardData.Value6 \
+            and value7 == billboardData.Value1 and value8 == billboardData.Value8 \
             and name1 == billboardData.Name1 and name2 == billboardData.Name2 \
-            and type2 == billboardData.Type2 and id2 == billboardData.ID2:
+            and type2 == billboardData.Type2 and id2 == billboardData.ID2 and userData == billboardData.UserData:
             GameWorld.DebugLog("    榜单值相同,不同步跨服服务器! ")
             return
         
@@ -499,16 +543,46 @@
     name2 = billInfoDict["Name2"]
     value1 = billInfoDict["Value1"]
     value2 = billInfoDict["Value2"]
+    value3 = billInfoDict.get("Value3", 0)
+    value4 = billInfoDict.get("Value4", 0)
+    value5 = billInfoDict.get("Value5", 0)
+    value6 = billInfoDict.get("Value6", 0)
+    value7 = billInfoDict.get("Value7", 0)
+    value8 = billInfoDict.get("Value8", 0)
     cmpValue = billInfoDict["CmpValue"]
     cmpValue2 = billInfoDict["CmpValue2"]
     cmpValue3 = billInfoDict["CmpValue3"]
+    userData = billInfoDict.get("UserData", "")
+    kwargs = {"value3":value3, "value4":value4, "value5":value5, "value6":value6, "value7":value7, "value8":value8, "userData":userData}
     
     UpdCrossBillboard(billboardType, groupValue1, dataID, name1, name2, type2, value1, value2,
-                      cmpValue, cmpValue2, cmpValue3, groupValue2, id2)
+                      cmpValue, cmpValue2, cmpValue3, groupValue2, id2, **kwargs)
+    return
+
+def UpdCrossBillboardFamily(bType, groupValue1, familyBillInfo, cmpValue, cmpValue2=0, autoSort=True):
+    ## 更新跨服仙盟榜单
+    if not familyBillInfo:
+        return
+    if "id" not in familyBillInfo:
+        return
+    familyID = familyBillInfo["id"]
+    familyName = familyBillInfo["name"]
+    id2 = familyBillInfo["id2"]
+    name2 = familyBillInfo["name2"]
+    value1 = familyBillInfo["value1"]
+    value2 = familyBillInfo["value2"]
+    value3 = familyBillInfo["value3"]
+    value4 = familyBillInfo["value4"]
+    value5 = familyBillInfo["value5"]
+    type2 = 0
+    
+    UpdCrossBillboard(bType, groupValue1, familyID, familyName, name2, type2, value1, value2, cmpValue, cmpValue2, 
+                      id2=id2, autoSort=autoSort, value3=value3, value4=value4, value5=value5)
     return
 
 def UpdCrossBillboard(billboardType, groupValue1, dataID, name1, name2, type2, value1, value2, cmpValue,
-                      cmpValue2=0, cmpValue3=0, groupValue2=0, id2=0, autoSort=True, noSortAndSync=False):
+                      cmpValue2=0, cmpValue3=0, groupValue2=0, id2=0, autoSort=True, noSortAndSync=False,
+                      **kwargs):
     ''' 更新跨服排行榜
     @param billboardType: 排行榜索引类型,同个榜单类型可以有多个分组榜单数据,独立排序
     @param groupValue1: 榜单分组1
@@ -551,17 +625,16 @@
             if not billboardObj.AddBillboardData(billboardData):
                 return
             
+    cmpValueChange = isNewData or billboardData.CmpValue != cmpValue or billboardData.CmpValue2 != cmpValue2 or billboardData.CmpValue3 != cmpValue3
     # 没设置值默认为时间time,先上榜的排前面
     if cmpValue3 == 0:
         # 时间权值仅在比较值变更的情况下才更新, 防止其他附属值更新时导致比较值相同的玩家名次间会变动的问题
-        if isNewData or billboardData.CmpValue != cmpValue or billboardData.CmpValue2 != cmpValue2:
+        if cmpValueChange:
             calcTime = GameWorld.ChangeTimeStrToNum("2090-01-01 00:00:00")
             cmpValue3 = max(0, calcTime - int(time.time())) # 比较值3如果没指定值则默认存当前更新的time
         else:
             cmpValue3 = billboardData.CmpValue3
             
-    cmpValueChange = billboardData.CmpValue != cmpValue or billboardData.CmpValue2 != cmpValue2 or billboardData.CmpValue3 != cmpValue3
-    
     # 更新所有值
     billboardData.GroupValue1 = groupValue1
     billboardData.GroupValue2 = groupValue2
@@ -573,14 +646,21 @@
     billboardData.Type2 = type2
     billboardData.Value1 = value1
     billboardData.Value2 = value2
+    billboardData.Value3 = kwargs.get("value3", 0)
+    billboardData.Value4 = kwargs.get("value4", 0)
+    billboardData.Value5 = kwargs.get("value5", 0)
+    billboardData.Value6 = kwargs.get("value6", 0)
+    billboardData.Value7 = kwargs.get("value7", 0)
+    billboardData.Value8 = kwargs.get("value8", 0)
+    billboardData.UserData = kwargs.get("userData", "")    
+    billboardData.DataLen = len(billboardData.UserData)    
     billboardData.CmpValue = cmpValue
     billboardData.CmpValue2 = cmpValue2
     billboardData.CmpValue3 = cmpValue3
     
-    GameWorld.DebugLog("更新跨服排行榜值: billboardType=%s,groupValue1=%s,groupValue2=%s,dataID=%s,isNewData=%s,cmpValueChange=%s,type2=%s,value1=%s,value2=%s,cmpValue=%s,cmpValue2=%s,cmpValue3=%s" 
+    GameWorld.DebugLog("更新跨服排行榜值: billboardType=%s,groupValue1=%s,groupValue2=%s,dataID=%s,isNewData=%s,cmpValueChange=%s,type2=%s,value1=%s,value2=%s,cmpValue=%s,cmpValue2=%s,cmpValue3=%s,%s" 
                        % (billboardType, groupValue1, groupValue2, dataID, isNewData, cmpValueChange,
-                          type2, value1, value2, cmpValue, cmpValue2, cmpValue3), dataID)
-    
+                          type2, value1, value2, cmpValue, cmpValue2, cmpValue3, kwargs), dataID)
     if noSortAndSync:
         return True
     if autoSort and cmpValueChange:

--
Gitblit v1.8.0