ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
@@ -19,6 +19,7 @@
import PlayerControl
import GameWorldProcess
import CrossRealmPlayer
import DataRecordPack
import PlayerSuccess
import ReadChConfig
import PlayerAssist
@@ -508,6 +509,10 @@
    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()
@@ -517,16 +522,18 @@
                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})
            
        gameWorld = GameWorld.GetGameWorld()
        copyMapID = gameWorld.GetCopyMapID()
        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)
@@ -742,6 +749,23 @@
#  @return None
#  @remarks 函数详细说明.
def DoExitFBLogic(curPlayer, tick):
    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)
            dataDict.update({"fbZoneID":fbZoneID, "fbFuncLineID":fbFuncLineID, "playerZoneID":playerZoneID, "playerFuncLineID":playerFuncLineID})
        if curPlayer.GetFaction():
            dataDict["Faction"] = curPlayer.GetFaction()
        DataRecordPack.SendEventPack("CrossFBExit", dataDict, curPlayer)
    do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
    
    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "DoExitFB"))