From 94c9b0759bfa49e66bfce3f790c40f15d362ba1a Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 10 一月 2019 15:17:26 +0800 Subject: [PATCH] 5722 【后端】【1.5】跨服BOSS开发(支持跨服复活) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py | 39 ++++++++++++++++++++++++++++++++++++++- 1 files changed, 38 insertions(+), 1 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py index b90e7af..f0c731d 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py @@ -49,7 +49,7 @@ msgType = msgDict.get("MsgType", -1) msgData = msgDict.get("Data", "") serverGroupID = msgDict.get("ServerGroupID", 0) - + if msgType == ShareDefine.ClientServerMsg_PKMatch: CrossRealmPK.ClientServerMsg_PKMatch(serverGroupID, msgData, tick) @@ -71,6 +71,10 @@ elif msgType == ShareDefine.ClientServerMsg_ViewPlayerCache: CrossRealmPlayer.ClientServerMsg_ViewPlayerCache(serverGroupID, msgData) + # 需要发送到地图服务器处理的 + elif msgType in [ShareDefine.ClientServerMsg_Reborn]: + MapServer_CrossServerReceiveMsg(msgType, msgData, serverGroupID) + else: GameWorld.ErrLog("没有该信息类型逻辑处理!") @@ -88,6 +92,21 @@ CrossRealmPlayer.ClientServerMsg_ServerInitOK(serverGroupID) CrossRealmPK.ClientServerMsg_ServerInitOK(serverGroupID, tick) CrossBoss.ClientServerMsg_ServerInitOK(serverGroupID) + return + +def MapServer_CrossServerReceiveMsg(msgType, msgData, serverGroupID): + ## 收到子服信息,需要发送到地图服务器处理 + + if not isinstance(msgData, dict): + return + tagPlayerID = msgData.get("PlayerID") + if not tagPlayerID: + return + tagPlayer = GameWorld.GetPlayerManager().FindPlayerByID(tagPlayerID) + if not tagPlayer: + return + msgInfo = str([msgType, msgData, serverGroupID]) + tagPlayer.MapServer_QueryPlayerResult(0, 0, "CrossServerReceiveMsg", msgInfo, len(msgInfo)) return ## ================================================================================================ @@ -169,6 +188,10 @@ elif msgType == ShareDefine.CrossServerMsg_DropGoodItem: GameWorldBoss.CrossServerMsg_DropGoodItem(msgData, tick) + # 需要发送到地图服务器处理的 + elif msgType in [ShareDefine.CrossServerMsg_RebornRet]: + MapServer_ClientServerReceiveMsg(msgType, msgData) + elif msgType == ShareDefine.CrossServerMsg_CrossServerState: CrossRealmPlayer.CrossServerMsg_CrossServerState(msgData) @@ -182,6 +205,20 @@ return +def MapServer_ClientServerReceiveMsg(msgType, msgData): + ## 收到跨服服务器信息,需要发送到地图服务器处理 + + if not isinstance(msgData, dict): + return + tagPlayerID = msgData.get("PlayerID") + if not tagPlayerID: + return + tagPlayer = GameWorld.GetPlayerManager().FindPlayerByID(tagPlayerID) + if not tagPlayer: + return + msgInfo = str([msgType, msgData]) + tagPlayer.MapServer_QueryPlayerResult(0, 0, "ClientServerReceiveMsg", msgInfo, len(msgInfo)) + return # 连接跨服服务器状态 # 1 为连接成功; 其他为失败,失败会延迟通知 -- Gitblit v1.8.0