ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -1932,7 +1932,7 @@
        SendToGameServerEnterFB(curPlayer, mapID, lineID, tick, extendParamList)
        return
    
    PlayerResetWorldPosFB(curPlayer, sceneMapID, posX, posY, False, fbID, funcLineID=lineID)
    PlayerResetWorldPosFB(curPlayer, mapID, posX, posY, False, fbID, funcLineID=lineID)
    return
##发送到GameServer请求进入副本
@@ -2112,6 +2112,7 @@
    if curPlayer.GetMapID() != mapID:
        return
    
    reqMapID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqFBMapID) # 由于后端地图不变所以不修改直接读
    NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ReqFBFuncLine, funcLineID)
    GameWorld.Log("玩家副本中变更功能线路虚拟切地图: mapID=%s,posX=%s,posY=%s,funcLineID=%s" 
                  % (mapID, posX, posY, funcLineID), curPlayer.GetPlayerID())
@@ -2119,7 +2120,7 @@
    curPlayer.SetDict(ChConfig.Def_PlayerKey_ResetFBLinePosX, posX)
    curPlayer.SetDict(ChConfig.Def_PlayerKey_ResetFBLinePosY, posY)
    
    NotifyPrepareChangeMap(curPlayer, mapID, funcLineID)
    NotifyPrepareChangeMap(curPlayer)
    NotifyStartChangeMap(curPlayer)
    
    ## 发送 04 01 人物所在的场景初始化#tagPlayerMapInit
@@ -2132,7 +2133,7 @@
    
    curPlayer.SetSight(0) # 视野置0,切成功后恢复视野,防止接下来提前设置坐标导致前端视野刷新异常
    curPlayer.ResetPos(posX, posY) # 这里直接设置坐标,防止前端未加载场景成功掉线导致重登后坐标错误
    SetFBFuncLineID(curPlayer, funcLineID) # 这里直接设置成目标功能线路ID,防止前端未加载场景成功掉线导致重登后加载场景异常
    SetFBFuncLineID(curPlayer, reqMapID, funcLineID) # 这里直接设置成目标功能线路ID,防止前端未加载场景成功掉线导致重登后加载场景异常
    
    ## 发送 01 09 服务器准备就绪#tagServerPrepareOK
    prepareOK = ChNetSendPack.tagServerPrepareOK()
@@ -2181,14 +2182,10 @@
        return
    curPlayer.SetDict(ChConfig.Def_PlayerKey_TransTick, tick)
    
    sceneMapID = mapID
    if GameWorld.GetMap().GetMapFBTypeByMapID(mapID) != IPY_GameWorld.fbtNull:
        # 副本功能场景地图
        mapID = FBCommon.GetRecordMapID(mapID)
        fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, funcLineID)
        if fbLineIpyData:
            sceneMapID = fbLineIpyData.GetMapID()
    mapID = FBCommon.GetRecordMapID(mapID)
    fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, funcLineID)
    sceneMapID = mapID if not fbLineIpyData else fbLineIpyData.GetMapID()
    # 地图分流, 减少单地图压力
    FBMapShuntDict = ReadChConfig.GetEvalChConfig("FBMapShunt")
    if mapID in FBMapShuntDict:
@@ -2209,6 +2206,7 @@
    #获取副本传入副本需要携带的信息
    msg = FBLogic.GetPlayerResetWorldPosFBMsg(curPlayer, mapID, funcLineID)
    
    NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ReqFBMapID, mapID)
    NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ReqFBFuncLine, funcLineID)
    GameWorld.Log("玩家请求开始切图: sceneMapID=%s,posX=%s,posY=%s,takeTruck=%s,fbID=%s,msg=%s,funcLineID=%s,tick=%s,lastTransTick=%s" 
                  % (sceneMapID, posX, posY, takeTruck, fbID, msg, funcLineID, tick, lastTransTick), curPlayer.GetPlayerID())
@@ -2221,16 +2219,17 @@
    
    #切地图处理玩家时钟纠正问题(需要一直通过玩家时钟计算的)
    RefreshPlayerTick(curPlayer)
    NotifyPrepareChangeMap(curPlayer, sceneMapID, funcLineID)
    NotifyPrepareChangeMap(curPlayer)
    return
# 通知准备切换地图
def NotifyPrepareChangeMap(curPlayer, sceneMapID, funcLineID):
def NotifyPrepareChangeMap(curPlayer):
    curPlayer.SetVisible(False)
    sendPack = ChPyNetSendPack.tagMCPrepareChangeMap()
    sendPack.Clear()
    sendPack.MapID = GameWorld.GetMapDataMapID(sceneMapID)
    sendPack.FuncLineID = funcLineID
    sendPack.MapID = GameWorld.GetMapDataMapID(curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ChangeMapID))
    sendPack.FuncLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqFBFuncLine)
    sendPack.FuncMapID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqFBMapID)
    
    NetPackCommon.SendFakePack(curPlayer, sendPack)
    GameWorld.Log("准备切换地图", curPlayer.GetID())
@@ -2242,6 +2241,7 @@
    sendPack.Clear()
    sendPack.MapID = GameWorld.GetMapDataMapID(curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ChangeMapID))
    sendPack.FuncLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqFBFuncLine)
    sendPack.FuncMapID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqFBMapID)
    NetPackCommon.SendFakePack(curPlayer, sendPack)
    
    GameWorld.Log("通知开始切换地图", curPlayer.GetID())
@@ -6349,8 +6349,13 @@
def GetTeamCheckState(curPlayer): return curPlayer.GetExAttr2()
## 副本功能线路ID, 这里做db存储,防止在合并地图副本中掉线重上时前端无法加载正确的场景资源,登录加载场景时机为0102包
def SetFBFuncLineID(curPlayer, funcLineID): return curPlayer.SetExAttr3(funcLineID, False, True)
def GetFBFuncLineID(curPlayer): return curPlayer.GetExAttr3()
def SetFBFuncLineID(curPlayer, mapID, funcLineID):
    value = mapID * 1000 + funcLineID
    if value != curPlayer.GetExAttr3():
        curPlayer.SetExAttr3(value, False, True)
    return
def GetFBFuncMapID(curPlayer): return curPlayer.GetExAttr3() / 1000
def GetFBFuncLineID(curPlayer): return curPlayer.GetExAttr3() % 1000
## 跨服状态所在地图ID: 0-非跨服状态,非0-跨服状态对应的地图ID
def GetCrossMapID(curPlayer): return curPlayer.GetExAttr5()