From c939b30761259159d62bdc92320375310b3bb010 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 22 四月 2019 21:11:16 +0800 Subject: [PATCH] 6459 【后端】【2.0】缥缈仙域开发单(查询副本功能线路人数信息逻辑修改,支持查询妖王地图) --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFB.py | 40 +++++++++++++++++++++++++++++++++++++++- 1 files changed, 39 insertions(+), 1 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFB.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFB.py index 286a645..f3e6c51 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFB.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFB.py @@ -33,6 +33,8 @@ import IPY_PlayerDefine import CrossRealmPlayer import CrossRealmMsg +import ChPyNetSendPack +import NetPackCommon import ShareDefine import CrossBoss @@ -348,10 +350,16 @@ break key = (mapID, copyMapID) - PyGameData.g_crossDynamicLineCopyMapInfo.pop(key, {}) + copyMapObj = PyGameData.g_crossDynamicLineCopyMapInfo.pop(key, {}) #GameWorld.DebugLog(" PyGameData.g_crossDynamicLineInfo=%s" % PyGameData.g_crossDynamicLineInfo) #GameWorld.DebugLog(" PyGameData.g_crossDynamicLineCopyMapInfo=%s" % PyGameData.g_crossDynamicLineCopyMapInfo) + + playerCount = 0 + zoneID = copyMapObj.zoneID + funcLineID = copyMapObj.funcLineID + playerCountInfo = [playerCount] + SyncClientServerCrossFBFuncLinePlayerCount(zoneID, mapID, funcLineID, playerCountInfo) return def OnCrossDynamicMapReset(msgList): @@ -393,6 +401,26 @@ # % (curPlayer.GetMapID(), mapID, copyMapID, serverGroupID), playerID) #GameWorld.DebugLog(" 副本中的玩家ID: %s" % copyMapObj.fbPlayerDict) #GameWorld.DebugLog(" 等待中的玩家ID: %s" % copyMapObj.waitPlayerDict) + + playerCount = len(copyMapObj.fbPlayerDict) # 等待进入的暂时不算 + zoneID = copyMapObj.zoneID + funcLineID = copyMapObj.funcLineID + playerCountInfo = [playerCount] + SyncClientServerCrossFBFuncLinePlayerCount(zoneID, mapID, funcLineID, playerCountInfo) + return + +def SyncClientServerCrossFBFuncLinePlayerCount(zoneID, mapID, funcLineID, playerCountInfo): + ## 同步子服跨服副本功能线路人数 + ## 注意: 此人数不是一个精确人数值,只是一个大概人数值,不用很精确,暂时只玩家进入时同步人数信息,玩家退出暂不处理 + mapID = GetRecordMapID(mapID) + if mapID not in ChConfig.Def_NeedCountFBFuncLinePlayerCrossMap: + return + zoneIpyData = CrossRealmPlayer.GetCrossZoneIpyDataByZoneID(mapID, zoneID) + if not zoneIpyData: + return + serverGroupIDList = zoneIpyData.GetServerGroupIDList() + playerCountInfo = [mapID, funcLineID, playerCountInfo] + CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_FBPlayerCount, playerCountInfo, serverGroupIDList) return def OnPlayerDisconnectCrossServer(curPlayer): @@ -414,6 +442,16 @@ #GameWorld.DebugLog(" 等待中的玩家ID: %s" % copyMapObj.waitPlayerDict) return +def CrossServerMsg_FBPlayerCount(msgData): + ## 收到跨服服务器同步的副本功能线路人数信息 + + mapID, funcLineID, playerCountInfo = msgData + if mapID not in PyGameData.g_crossFBFuncLinePlayerCountInfo: + PyGameData.g_crossFBFuncLinePlayerCountInfo[mapID] = {} + fbLinePlayerInfoDict = PyGameData.g_crossFBFuncLinePlayerCountInfo[mapID] + fbLinePlayerInfoDict[funcLineID] = playerCountInfo + return + ##-------------------------------------------------------------------------------------------------- ## 请求进入副本分线 -- Gitblit v1.8.0