From dd3d1998f3a219118b9c24af1763a96e1fef85d1 Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期一, 28 一月 2019 17:45:23 +0800 Subject: [PATCH] 6112 【后端】【1.5.200】诛仙塔优化 --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py | 75 +++++++++++++++++++++++++++++++++++++ 1 files changed, 74 insertions(+), 1 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py index 0f714f0..8291317 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py @@ -20,7 +20,10 @@ import PlayerControl import IPY_GameServer import CrossRealmPlayer +import GameWorldBoss import CrossRealmPK +import PlayerQuery +import PlayerTalk import CrossBoss import ChConfig import GMShell @@ -48,7 +51,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) @@ -61,6 +64,9 @@ elif msgType == ShareDefine.ClientServerMsg_PKBillboard: CrossRealmPK.ClientServerMsg_PKBillboard(serverGroupID, msgData) + elif msgType == ShareDefine.ClientServerMsg_ChatCrossWorld: + PlayerTalk.ClientServerMsg_ChatCrossWorld(serverGroupID, msgData, tick) + elif msgType == ShareDefine.ClientServerMsg_GMCMD: GMShell.ClientServerMsg_GMCMD(msgData, tick) @@ -69,6 +75,16 @@ elif msgType == ShareDefine.ClientServerMsg_ViewPlayerCache: CrossRealmPlayer.ClientServerMsg_ViewPlayerCache(serverGroupID, msgData) + + elif msgType == ShareDefine.ClientServerMsg_QueryNPCInfo: + PlayerQuery.ClientServerMsg_QueryNPCInfo(serverGroupID, msgData) + + elif msgType == ShareDefine.ClientServerMsg_SetPlayerAttrValue: + MapServer_CrossSetPlayerAttrValue(msgData) + + # 需要发送到地图服务器处理的 + elif msgType in [ShareDefine.ClientServerMsg_Reborn, ShareDefine.ClientServerMsg_CollectNPC]: + MapServer_CrossServerReceiveMsg(msgType, msgData, serverGroupID) else: GameWorld.ErrLog("没有该信息类型逻辑处理!") @@ -87,6 +103,30 @@ 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 + +def MapServer_CrossSetPlayerAttrValue(msgData): + for playerID, setAttrInfoList in msgData.items(): + player = GameWorld.GetPlayerManager().FindPlayerByID(playerID) + if not player: + return + msgInfo = str(setAttrInfoList) + player.MapServer_QueryPlayerResult(0, 0, "CrossSetPlayerAttrValue", msgInfo, len(msgInfo)) return ## ================================================================================================ @@ -129,6 +169,9 @@ elif msgType == ShareDefine.CrossServerMsg_Notify: PlayerControl.CrossServerMsg_Notify(msgData) + elif msgType == ShareDefine.CrossServerMsg_ChatCrossWorld: + PlayerTalk.CrossServerMsg_ChatCrossWorld(msgData) + elif msgType == ShareDefine.CrossServerMsg_ViewPlayerCacheRet: CrossRealmPlayer.CrossServerMsg_ViewPlayerCacheRet(msgData, tick) @@ -159,6 +202,22 @@ elif msgType == ShareDefine.CrossServerMsg_CrossBossState: CrossBoss.CrossServerMsg_CrossBossState(msgData) + elif msgType == ShareDefine.CrossServerMsg_PutInItem: + CrossRealmPlayer.CrossServerMsg_PutInItem(msgData) + + elif msgType == ShareDefine.CrossServerMsg_GiveMoney: + CrossRealmPlayer.CrossServerMsg_GiveMoney(msgData) + + elif msgType == ShareDefine.CrossServerMsg_DropGoodItem: + GameWorldBoss.CrossServerMsg_DropGoodItem(msgData, tick) + + elif msgType == ShareDefine.CrossServerMsg_NPCInfoRet: + PlayerQuery.CrossServerMsg_NPCInfoRet(msgData, tick) + + # 需要发送到地图服务器处理的 + elif msgType in [ShareDefine.CrossServerMsg_RebornRet, ShareDefine.CrossServerMsg_CollectNPCOK]: + MapServer_ClientServerReceiveMsg(msgType, msgData) + elif msgType == ShareDefine.CrossServerMsg_CrossServerState: CrossRealmPlayer.CrossServerMsg_CrossServerState(msgData) @@ -172,6 +231,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