From ff49cc19f9916949c7eb9762c34f0c2c936917b0 Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期五, 05 七月 2019 21:13:10 +0800 Subject: [PATCH] 7858 【后端】【主干】上古战场玩家分配逻辑(人满后再随机选) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 43 insertions(+), 2 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py index 1cfe194..c6afb53 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py @@ -20,6 +20,7 @@ import PlayerControl import IPY_GameServer import CrossRealmPlayer +import PlayerCompensation import GameWorldBoss import CrossRealmPK import PlayerQuery @@ -92,10 +93,13 @@ PlayerQuery.ClientServerMsg_QueryNPCInfo(serverGroupID, msgData) elif msgType == ShareDefine.ClientServerMsg_EnterFB: - PlayerFB.ClientServerMsg_EnterFB(serverGroupID, msgData) + PlayerFB.ClientServerMsg_EnterFB(serverGroupID, msgData, tick) elif msgType == ShareDefine.ClientServerMsg_SetPlayerAttrValue: MapServer_CrossSetPlayerAttrValue(msgData) + + elif msgType == ShareDefine.ClientServerMsg_AddBuff: + MapServer_CrossAddBuff(msgData) # 需要发送到地图服务器处理的 elif msgType in [ShareDefine.ClientServerMsg_Reborn, ShareDefine.ClientServerMsg_CollectNPC]: @@ -155,6 +159,20 @@ player.MapServer_QueryPlayerResult(0, 0, "CrossSetPlayerAttrValue", msgInfo, len(msgInfo)) return +def MapServer_CrossAddBuff(msgData): + ## 收到子服信息,添加buff + tagPlayerID = msgData.get("PlayerID") + if not tagPlayerID: + return + tagPlayer = GameWorld.GetPlayerManager().FindPlayerByID(tagPlayerID) + if not tagPlayer: + return + buffID = msgData.get("buffID") + if not buffID: + return + sendMsg = str(buffID) + tagPlayer.MapServer_QueryPlayerResult(0, 0, 'AddBuff', sendMsg, len(sendMsg)) + return ## ================================================================================================ def SendMsgToClientServer(msgType, dataMsg, serverGroupIDList=[]): @@ -253,8 +271,15 @@ elif msgType == ShareDefine.CrossServerMsg_EnterFBRet: PlayerFB.CrossServerMsg_EnterFBRet(msgData, tick) + elif msgType == ShareDefine.CrossServerMsg_SendMail: + PlayerCompensation.CrossServerMsg_SendMail(msgData) + + elif msgType == ShareDefine.CrossServerMsg_FBPlayerCount: + PlayerFB.CrossServerMsg_FBPlayerCount(msgData) + # 需要发送到地图服务器处理的 - elif msgType in [ShareDefine.CrossServerMsg_RebornRet, ShareDefine.CrossServerMsg_CollectNPCOK]: + elif msgType in [ShareDefine.CrossServerMsg_RebornRet, ShareDefine.CrossServerMsg_CollectNPCOK, ShareDefine.CrossServerMsg_FBEnd, + ShareDefine.CrossServerMsg_NPCAttackCount]: MapServer_ClientServerReceiveMsg(msgType, msgData) elif msgType == ShareDefine.CrossServerMsg_CrossServerState: @@ -273,6 +298,22 @@ def MapServer_ClientServerReceiveMsg(msgType, msgData): ## 收到跨服服务器信息,需要发送到地图服务器处理 + if msgType in [ShareDefine.CrossServerMsg_FBEnd]: + curServerGroupID = GameWorld.GetServerGroupID() + for tagPlayerID, msgInfo in msgData.items(): + if not msgInfo: + continue + serverGroupID = msgInfo[0] + if curServerGroupID != serverGroupID: + continue + tagPlayer = GameWorld.GetPlayerManager().FindPlayerByID(tagPlayerID) + if not tagPlayer: + continue + msgInfo = str([msgType, msgInfo[1:]]) + tagPlayer.MapServer_QueryPlayerResult(0, 0, "ClientServerReceiveMsg", msgInfo, len(msgInfo)) + + return + if not isinstance(msgData, dict): return tagPlayerID = msgData.get("PlayerID") -- Gitblit v1.8.0