ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py
@@ -149,6 +149,17 @@
    CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_CrossServerState, {"isOpen":isOpen})
    return
def OnCrossServerClose():
    '''关服时处理
        注意关服只需设置关闭状态即可,不调用 DoChangeCrossServerState 改变db状态及其他额外处理
    db存储的关闭状态为维护状态(可能跨服服务器正常开着,但是运维后台GM手动设置处于维护状态)
    通知关服状态主要目的是让子服不再发送消息到跨服服务器了,等待跨服服务器重新开启即可
    '''
    isOpen = 0
    GameWorld.GetGameWorld().SetDict(ShareDefine.Def_Notify_WorldKey_CrossServerOpen, isOpen)
    CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_CrossServerState, {"isOpen":isOpen})
    return
def CrossServerMsg_CrossServerState(msgData):
    ## 子服收到跨服服务器状态变更,子服不存DB,默认跨服维护中,连接跨服成功后由跨服同步状态直接更新到字典即可,没连上就默认维护中
    if "crossZoneName" in msgData:
@@ -167,7 +178,9 @@
            if curPlayer == None:
                continue
            PlayerControl.SetCrossMapID(curPlayer, 0)
    else:
        CrossRealmMsg.OnCrossServerStateOpen()
    GameWorld.GetGameWorld().SendCrossServerStateToLoginServer(isOpen)
    # 通知地图
    GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_CrossServerOpen, isOpen)
@@ -241,21 +254,7 @@
    
    # 跨服PK上传数据完毕,通知跨服服务器,准备完毕
    if registerMap == ChConfig.Def_FBMapID_CrossRealmPK:
        regVSRoomID = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MergeRegisterRoomID)
        vsRoomID = curPlayer.GetVsRoomId()
        if regVSRoomID != vsRoomID:
            GameWorld.Log("上传跨服服务器的 regVSRoomID=%s 与玩家当前的 roomID=%s 不同!不发送准备完毕!"
                          % (regVSRoomID, vsRoomID), playerID)
            return
        dataMsg = {
                   "accID":curPlayer.GetAccID(), # 角色账号ID
                   "playerID":playerID, # 角色ID
                   "vsRoomID":vsRoomID, # 所属对战房间ID
                   }
        CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_PKPrepareOK, dataMsg)
        GameWorld.Log("通知跨服服务器, 玩家匹配PK准备完毕!%s" % str(dataMsg), playerID)
        pass
        
    # 其他的,在上传数据完毕后,使用通用的通知可进入跨服
    else: