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