hch
2019-03-13 23b3fbb321e68c78fa4ceda608de44ea1a8fd585
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py
@@ -39,22 +39,25 @@
        return
    
    # 协议要用最高级2,可减少长度
    sendMsg = cPickle.dumps({"MsgType":msgType, "Data":dataMsg, "ServerGroupID":GameWorld.GetServerGroupID()}, 2)
    srcMsg = {"MsgType":msgType, "Data":dataMsg, "ServerGroupID":GameWorld.GetServerGroupID()}
    sendMsg = cPickle.dumps(srcMsg, 2)
    if not GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_GameWorldInitOK):
        GameWorld.ErrLog("服务器未启动好,不允许向跨服服务器发送数据! %s" % (sendMsg))
        GameWorld.ErrLog("服务器未启动好,不允许向跨服服务器发送数据! %s" % (srcMsg))
        return
    GameWorld.Log("SendMsgToCrossServer => %s" % (sendMsg))
    GameWorld.Log("SendMsgToCrossServer => %s" % (srcMsg))
    GameWorld.GetGameWorld().SendMergerChildToCenterStringData(sendMsg, len(sendMsg))
    return
def OnCrossServerReceiveMsg(recvMsg, tick):
    ## 跨服服务器收到信息处理
    try:
        GameWorld.Log("OnCrossServerReceiveMsg: %s" % recvMsg)
        GameWorld.Log("收到OnCrossServerReceiveMsg" )
        if not GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_GameWorldInitOK):
            GameWorld.Log("服务器未启动好,不处理子服信息!")
            return
        msgDict = cPickle.loads(recvMsg)
        GameWorld.Log("OnCrossServerReceiveMsg: %s" % msgDict)
        
        msgType = msgDict.get("MsgType", -1)    
        msgData = msgDict.get("Data", "")
@@ -98,7 +101,7 @@
            GameWorld.ErrLog("没有该信息类型逻辑处理!")
            
    except:
        GameWorld.ErrLog("OnCrossServerReceiveMsg:%s; except:%s" % (recvMsg, traceback.format_exc()))
        GameWorld.ErrLog("OnCrossServerReceiveMsg:%s; except:%s" % (cPickle.loads(recvMsg), traceback.format_exc()))
        if GameWorld.GetGameWorld().GetDebugLevel():
            raise BaseException(str(traceback.format_exc()))
    return
@@ -159,11 +162,13 @@
        return
    if not dataMsg:
        return
    sendMsg = cPickle.dumps({"MsgType":msgType, "Data":dataMsg}, 2)
    srcMsg = {"MsgType":msgType, "Data":dataMsg}
    sendMsg = cPickle.dumps(srcMsg, 2)
    if not GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_GameWorldInitOK):
        GameWorld.ErrLog("跨服服务器未启动好,不允许向子服发送数据! serverGroupIDList=%s, sendMsg=%s" % (serverGroupIDList, sendMsg))
        GameWorld.ErrLog("跨服服务器未启动好,不允许向子服发送数据! serverGroupIDList=%s, srcMsg=%s" % (serverGroupIDList, srcMsg))
        return
    GameWorld.Log("SendMsgToClientServer => serverGroupIDList=%s, sendMsg=%s" % (serverGroupIDList, sendMsg))
    GameWorld.Log("SendMsgToClientServer => serverGroupIDList=%s, srcMsg=%s" % (serverGroupIDList, srcMsg))
    if not serverGroupIDList:
        GameWorld.GetGameWorld().SendBroadcastMergeClient(sendMsg)
    else:
@@ -180,7 +185,7 @@
    dataMsg = dataPack.GetData()
    
    try:
        GameWorld.Log("OnClientServerReceiveMsg: %s" % dataMsg)
        GameWorld.Log("收到OnClientServerReceiveMsg" )
        if not GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_GameWorldInitOK):
            GameWorld.Log("服务器未启动好,不处理跨服信息!")
            return
@@ -188,6 +193,7 @@
        msgDict = cPickle.loads(dataMsg)
        msgType = msgDict.get("MsgType", -1)    
        msgData = msgDict.get("Data", "")
        GameWorld.Log("OnClientServerReceiveMsg: %s" % msgDict)
        
        if msgType == ShareDefine.CrossServerMsg_ExitCrossServer:
            CrossRealmPlayer.CrossServerMsg_ExitCrossServer(msgData)
@@ -251,7 +257,7 @@
            GameWorld.ErrLog("没有该信息类型逻辑处理!")
            
    except:
        GameWorld.ErrLog("OnClientServerReceiveMsg:%s; except:%s" % (dataMsg, traceback.format_exc()))
        GameWorld.ErrLog("OnClientServerReceiveMsg:%s; except:%s" % (cPickle.loads(dataMsg), traceback.format_exc()))
        if GameWorld.GetGameWorld().GetDebugLevel():
            raise BaseException(str(traceback.format_exc()))