From 93a031366b3d30fd19c36afad29e8e9e260b65eb Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 23 五月 2022 17:00:28 +0800
Subject: [PATCH] 9415 【BT】【后端】古神战场(修复分流到非32060地图时准备时间进场无法在地图中间坐标范围bug;增加跨服分流地图请求、进入、退出流向)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFB.py |   27 ++++++++++++++++-----------
 1 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFB.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFB.py
index 927e896..7f38e29 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFB.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFB.py
@@ -33,6 +33,7 @@
 import IPY_PlayerDefine
 import CrossBattlefield
 import CrossRealmPlayer
+import DataRecordPack
 import CrossRealmMsg
 import ShareDefine
 import CrossBoss
@@ -261,21 +262,25 @@
     if openState == IPY_PlayerDefine.fbosOpen:
         funcLineID = tagCopyMapObj.funcLineID
         playerIDList = [playerID]
-        retInfo = [playerIDList, mapID, realMapID, copyMapID, funcLineID]
+        # 分流地图的地图数据ID直接使用场景ID,因为分流地图实际上是两张不同的地图,所以直接使用场景ID,不然会导致上传跨服玩家数据时坐标为0
+        retInfo = [playerIDList, mapID, realMapID, realMapID, copyMapID, funcLineID]
         CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_EnterFBRet, retInfo, [serverGroupID])
         
+    dataDict = {}
+    dataDict.update(msgData)
+    dataDict.update({"mapID":mapID, "realMapID":realMapID, "copyMapID":copyMapID, "realFuncLineID":funcLineID, "openState":openState})
+    DataRecordPack.SendEventPack("CrossFBRequest", dataDict)
     return tagCopyMapObj
 
 def CrossServerMsg_EnterFBRet(msgData, tick):
     ## 收到跨服服务器动态分配的跨服副本进入信息
-    
-    playerIDList, dataMapID, mapID, copyMapID, funcLineID = msgData
+    playerIDList, dataMapID, mapID, realMapID, copyMapID, funcLineID = msgData
     
     for playerID in playerIDList:
         curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
         if not curPlayer:
             continue
-        CrossRealmPlayer.SendCrossRealmReg(curPlayer, dataMapID, mapID, dataMapID, copyMapID, lineID=funcLineID)
+        CrossRealmPlayer.SendCrossRealmReg(curPlayer, dataMapID, realMapID, mapID, copyMapID, lineID=funcLineID)
         
     return
 
@@ -501,7 +506,7 @@
     return 0
 
 def OnCrossDynamicLineStateChange(msgList):
-    realMapID, copyMapID, state = msgList[:3]
+    mapID, realMapID, copyMapID, state = msgList[:4]
     
     if state == IPY_PlayerDefine.fbosWaitForClose:
         funcLineDataCache = msgList[3]
@@ -509,11 +514,11 @@
     elif state == IPY_PlayerDefine.fbosClosed:
         OnCrossDynamicLineClose(realMapID, copyMapID)
     elif state == IPY_PlayerDefine.fbosOpen:
-        OnCrossDynamicLineOpen(realMapID, copyMapID)
+        OnCrossDynamicLineOpen(mapID, realMapID, copyMapID)
         
     return
 
-def OnCrossDynamicLineOpen(realMapID, copyMapID):
+def OnCrossDynamicLineOpen(mapID, realMapID, copyMapID):
     ## 动态分配线路的地图虚拟线路启动成功
     
     key = (realMapID, copyMapID)
@@ -532,11 +537,11 @@
         playerIDList = serverPlayerIDListDict[serverGroupID]
         playerIDList.append(playerID)
         
-    mapID = GetRecordMapID(realMapID)
-    GameWorld.Log("动态分配虚拟线路启动成功,通知子服等待玩家可进入: mapID=%s,realMapID=%s,copyMapID=%s,serverPlayerIDListDict=%s" 
-                  % (mapID, realMapID, copyMapID, serverPlayerIDListDict))
+    recordMapID = GetRecordMapID(realMapID)
+    GameWorld.Log("动态分配虚拟线路启动成功,通知子服等待玩家可进入: recordMapID=%s,mapID=%s,realMapID=%s,copyMapID=%s,serverPlayerIDListDict=%s" 
+                  % (recordMapID, mapID, realMapID, copyMapID, serverPlayerIDListDict))
     for serverGroupID, playerIDList in serverPlayerIDListDict.items():
-        retInfo = [playerIDList, mapID, realMapID, copyMapID, funcLineID]
+        retInfo = [playerIDList, recordMapID, mapID, realMapID, copyMapID, funcLineID]
         CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_EnterFBRet, retInfo, [serverGroupID])
         
     #GameWorld.DebugLog("    PyGameData.g_crossDynamicLineInfo=%s" % PyGameData.g_crossDynamicLineInfo)

--
Gitblit v1.8.0