From 11c9a3b5846401523e4dafc17f2a074a712730da Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 11 三月 2026 18:27:10 +0800
Subject: [PATCH] 526 【挑战】PVP群英榜-后端(本服群英榜;优化机器人表支持按功能加载不同的机器人;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Billboard.py |   26 +++++++++++++++-----------
 1 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Billboard.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Billboard.py
index 309a4f3..cf018cb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Billboard.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Billboard.py
@@ -29,10 +29,8 @@
     GameWorld.DebugAnswer(curPlayer, "输出排行榜数据: Billboard p 类型 [分组值1 值2 从x名 到x名]")
     GameWorld.DebugAnswer(curPlayer, "注:如果没有特殊说明,本服榜单分组值均为0,跨服榜单分组值1为分区ID,分组2为0")
     
-    nameTypeList = ShareDefine.BillboardNameDict.keys()
-    nameTypeList.sort()
-    for billboardType in nameTypeList:
-        bName = ShareDefine.BillboardNameDict[billboardType]
+    for billboardType in ShareDefine.BillboardTypeAllList:
+        bName = ShareDefine.BillboardNameDict.get(billboardType, billboardType)
         GameWorld.DebugAnswer(curPlayer, "(%s) %s" % (billboardType, bName))
         
     return
@@ -91,7 +89,9 @@
     billboardObj = billboardMgr.GetBillboard(billboardType, groupValue1, groupValue2)
     curDataCount = billboardObj.GetCount()
     maxDataCount = billboardObj.GetMaxCount()
-    
+    isLayerMode = billboardObj.IsOrderRuleByLayer()
+    if isLayerMode:
+        cmpValue1 = min(cmpValue1, maxDataCount)
     count = min(count, maxDataCount - curDataCount)
     FakeName = GameWorld.GbkToCode("主公")
     
@@ -105,9 +105,12 @@
         name1 = dataPlayerName
         cmpValue = dataCmpValue1
         cmpValue2 = dataCmpValue2
-        PlayerBillboard.UpdateBillboard(billboardType, groupValue1, dataID, name1, name2, type2, value1, value2, 
-                                        cmpValue, cmpValue2, cmpValue3, groupValue2, id2, False, 
-                                        value3=value3, value4=value4, value5=value5)
+        if isLayerMode:
+            PlayerBillboard.UpdateBillboardLayer(dataID, billboardType, cmpValue, groupValue1, False)
+        else:
+            PlayerBillboard.UpdateBillboard(billboardType, groupValue1, dataID, name1, name2, type2, value1, value2, 
+                                            cmpValue, cmpValue2, cmpValue3, groupValue2, id2, False, 
+                                            value3=value3, value4=value4, value5=value5)
         
     billboardObj.SortData()
     
@@ -157,8 +160,9 @@
                 maxDataCount = billboardObj.GetMaxCount()
                 if not curDataCount:
                     continue
+                bName = ShareDefine.BillboardNameDict.get(bType, bType)
                 billTypeSign = __GetBillTypeSign(bType, groupValue1, groupValue2)
-                GameWorld.DebugAnswer(curPlayer, "榜单数据(%s)条数: %s/%s" % (billTypeSign, curDataCount, maxDataCount))
+                GameWorld.DebugAnswer(curPlayer, "%s(%s)条数: %s/%s" % (bName, billTypeSign, curDataCount, maxDataCount))
         return
     
     billboardType = gmList[1]
@@ -175,7 +179,7 @@
     
     printDebugCnt = 0
     billTypeSign = __GetBillTypeSign(billboardType, groupValue1, groupValue2)
-    bName = ShareDefine.BillboardNameDict[billboardType]
+    bName = ShareDefine.BillboardNameDict.get(billboardType, billboardType)
     GameWorld.DebugAnswer(curPlayer, "%s(%s)条数: %s/%s 详见日志" % (bName, billTypeSign, curDataCount, maxDataCount))
     for index in range(curDataCount):
         bbData = billboardObj.At(index)
@@ -188,7 +192,7 @@
         valueList = [getattr(bbData, "GetValue%s" % num)() for num in range(1, 9)]
         if printDebugCnt < 20:
             printDebugCnt += 1
-            GameWorld.DebugAnswer(curPlayer, "%s,ID:%s,榜值:%s" % (rank, dataID, cmpValues))
+            GameWorld.DebugAnswer(curPlayer, "名次:%s,ID:%s,榜值:%s" % (rank, dataID, cmpValues))
         GameWorld.DebugLog("%s,rank=%s,ID=%s,CmpValues=%s,Value=%s" 
                            % (index, rank, dataID, cmpValues, valueList), curPlayer.GetPlayerID())
         

--
Gitblit v1.8.0