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/GameWorldLogic/FBLogic.py |   99 ++++++++++++-------------------------------------
 1 files changed, 24 insertions(+), 75 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
index 1e4d80c..bcc222c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
@@ -18,11 +18,8 @@
 import IPY_GameWorld
 import PlayerControl
 import GameWorldProcess
-import CrossRealmPlayer
 import DataRecordPack
 import ReadChConfig
-import ShareDefine
-import PyGameData
 import FBCommon
 import GameObj
 
@@ -482,36 +479,6 @@
 def DoEnterFBLogic(curPlayer, tick):
     curPlayerID = curPlayer.GetID()
     
-    if GameWorld.IsCrossServer():
-        mapID = GameWorld.GetMap().GetMapID()
-        mapID = FBCommon.GetRecordMapID(mapID)
-        gameWorld = GameWorld.GetGameWorld()
-        copyMapID = gameWorld.GetCopyMapID()
-        dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(), "AccID":curPlayer.GetAccID(), 
-                    "recordMapID":mapID, "mapID":GameWorld.GetMap().GetMapID(), "realMapID":gameWorld.GetRealMapID(), "copyMapID":copyMapID}
-        if mapID in ChConfig.Def_CrossDynamicLineMap:
-            fbZoneID = FBCommon.GetCrossDynamicLineMapZoneID()
-            fbFuncLineID = FBCommon.GetCrossDynamicLineMapFuncLineID()
-            playerZoneID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqCrossFBZoneID)
-            playerFuncLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqCrossFBFuncLine)
-            # 跨服排位分区与玩家分区可能不一样
-            if (fbZoneID != playerZoneID or fbFuncLineID != playerFuncLineID) and mapID not in []:
-                GameWorld.ErrLog("DoEnterFB 玩家与当前副本线路所属分区或功能分线不同,踢出玩家!fbZoneID=%s,playerZoneID=%s,fbFuncLineID=%s,playerFuncLineID=%s" 
-                                 % (fbZoneID, playerZoneID, fbFuncLineID, playerFuncLineID), curPlayerID)
-                CrossRealmPlayer.PlayerExitCrossServer(curPlayer)
-                dataDict.update({"Error":"zoneLineIDError"})
-                DataRecordPack.SendEventPack("CrossFBEnter", dataDict, curPlayer)
-                return
-            GameWorld.Log("玩家进入跨服副本动态分配的线路: fbZoneID=%s,playerZoneID=%s,fbFuncLineID=%s,playerFuncLineID=%s" 
-                          % (fbZoneID, playerZoneID, fbFuncLineID, playerFuncLineID), curPlayerID)
-            dataDict.update({"fbZoneID":fbZoneID, "fbFuncLineID":fbFuncLineID, "playerZoneID":playerZoneID, "playerFuncLineID":playerFuncLineID})
-            
-        if copyMapID not in PyGameData.g_crossPlayerServerGroupIDInfo:
-            PyGameData.g_crossPlayerServerGroupIDInfo[copyMapID] = {}
-        playerServerGroupIDDict = PyGameData.g_crossPlayerServerGroupIDInfo[copyMapID]
-        playerServerGroupIDDict[curPlayerID] = PlayerControl.GetPlayerServerGroupID(curPlayer)
-        DataRecordPack.SendEventPack("CrossFBEnter", dataDict, curPlayer)
-        
     # 自伸缩副本根据玩家进入开启,主动调用一次,避免间隔调用时机未触发导致逻辑错乱
     GameWorldProcess.EnterOpenFB(tick)
     
@@ -1026,37 +993,32 @@
         PlayerControl.PlayerLeaveFB(curPlayer)
     return
 
-## 副本每周逻辑
-#  @param tick 当前时间
-#  @return None or False
-#  @remarks 函数详细说明.
-def OnWeek(tick):
-    do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnWeek"))
-    
-    if callFunc == None:
-        return False
-    
-    #执行副本逻辑
-    callFunc(tick)
+def OnWeek():
+    for key, mapIDList in ChConfig.Def_FB_MapID.items():
+        if not mapIDList:
+            continue
+        callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (key, "OnWeek"))
+        if callFunc:
+            callFunc()
     return
 
-## 副本每日逻辑
-#  @param tick 当前时间
-#  @return None or False
-#  @remarks 函数详细说明.
-def OnDay(tick):
-    do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnDay"))
-    
-    if callFunc == None:
-        #GameWorld.Log("副本逻辑不可使用   GameLogic_%d"%(mapID))
-        return False
-    
-    #执行副本逻辑
-    callFunc(tick)
+def OnDay():
+    for key, mapIDList in ChConfig.Def_FB_MapID.items():
+        if not mapIDList:
+            continue
+        callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (key, "OnDay"))
+        if callFunc:
+            callFunc()
+    return
+
+## 副本每周逻辑-玩家, 不管玩家是否在该副本地图中都会触发
+def OnFBPlayerOnWeek(curPlayer, onWeekType):    
+    for key, mapIDList in ChConfig.Def_FB_MapID.items():
+        if not mapIDList:
+            continue
+        callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (key, "OnFBPlayerOnWeek"))
+        if callFunc:
+            callFunc(curPlayer)
     return
 
 ## 副本每日逻辑-玩家, 不管玩家是否在该副本地图中都会触发
@@ -2235,19 +2197,6 @@
         return True, funcLineID
     
     return callFunc(curPlayer, mapID, funcLineID, tagType, tagID, valueList)
-
-def GetFBPlayerLineupID(curPlayer, mapID, funcLineID):
-    ## 获取玩家使用的攻防阵容ID
-    # @return: 攻击方阵容ID, 防守方阵容ID
-    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "GetFBPlayerLineupID"))
-    
-    if callFunc == None:
-        # 默认不限制
-        return ShareDefine.Lineup_Main, ShareDefine.Lineup_Main
-    
-    return callFunc(curPlayer, mapID, funcLineID)
 
 def GetFBNPCLineupInfo(curPlayer, mapID, funcLineID):
     ## 获取NPC阵容相关

--
Gitblit v1.8.0