From 3475d7857f59be1f61c2e928d425e9a7b2526fae Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 22 四月 2019 11:29:56 +0800
Subject: [PATCH] 6459 【后端】【2.0】缥缈仙域开发单(跨服动态分配线路上线优化,踢出与当前线路分区或功能线路属性不一致的玩家,防止玩家跨服中重新上线后进入到不同功能线路的问题)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossRealmReg.py |   26 +++++++++++++++-----------
 1 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossRealmReg.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossRealmReg.py
index b01ff53..1fabaab 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossRealmReg.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossRealmReg.py
@@ -70,19 +70,22 @@
         GameWorld.ErrLog("跨服已经在上传数据,不重复提交!playerRegisterMap=%s,registerMap=%s" % (playerRegisterMap, registerMap), curPlayer.GetPlayerID())
         return
     
-    zoneID = 0
+    #跨服前更新自己所属服务器组ID
+    PlayerControl.UpdPlayerServerGroupID(curPlayer)
+    serverGroupID = PlayerControl.GetPlayerServerGroupID(curPlayer)
+    zoneIpyData = CrossRealmPlayer.GetCrossZoneIpyDataByServerGroupID(registerMap, serverGroupID)
+    if not zoneIpyData:
+        return
+    zoneID = zoneIpyData.GetZoneID()
+    
     if not mapID:
-        zoneIpyData = CrossRealmPlayer.GetServerCrossZoneMapIpyData(registerMap)
+        zoneIpyData = CrossRealmPlayer.GetServerCrossZoneMapIpyData(zoneID, registerMap)
         if not zoneIpyData:
             GameWorld.ErrLog("找不到该服务器对应跨服分区: registerMap=%s" % (registerMap))
             return
-        zoneID, mapID, dataMapID, copyMapID, posX, posY = zoneIpyData.GetZoneID(), zoneIpyData.GetMapID(), \
-            zoneIpyData.GetDataMapID(), zoneIpyData.GetCopyMapID(), zoneIpyData.GetPosX(), zoneIpyData.GetPosY()
-            
-    if not mapID:
-        return
+        mapID, dataMapID, copyMapID, posX, posY = zoneIpyData.GetMapID(), zoneIpyData.GetDataMapID(), zoneIpyData.GetCopyMapID(), zoneIpyData.GetPosX(), zoneIpyData.GetPosY()
     
-    if not posX and not posY:
+    if not posX or not posY:
         fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, lineID)
         if fbLineIpyData:
             tick = GameWorld.GetGameWorld().GetTick()
@@ -92,13 +95,13 @@
                 GameWorld.ErrLog("未找到进入副本坐标!mapID=%s,lineID=%s" % (mapID, lineID))
                 return
             posX, posY = retPos
+            
+    if not mapID or not posX or not posY:
+        return
     
     if not FBLogic.OnRegEnterCrossFB(curPlayer, mapID, lineID):
         GameWorld.ErrLog("OnRegEnterCrossFB 进入跨服副本注册失败,进入条件不足!无法注册! mapID=%s,lineID=%s" % (mapID, lineID), playerID)
         return
-    
-    #跨服前更新自己所属服务器组ID
-    PlayerControl.UpdPlayerServerGroupID(curPlayer)
     
     if registerMap in ChConfig.RegisterEnter_CrossServerMapIDList:
         prepareEnterCrossServer = ChPyNetSendPack.tagMCPrepareEnterCrossServer()
@@ -106,6 +109,7 @@
         NetPackCommon.SendFakePack(curPlayer, prepareEnterCrossServer)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PlayerKey_CrossRegisterMap, registerMap)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ReqCrossFBFuncLine, lineID)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ReqCrossFBZoneID, zoneID)
     CrossPlayerData.OnPlayerCrossReg(curPlayer)
     #curPlayer.SendMergeRegisterPlayer(mapID, dataMapID, copyMapID, posX, posY)
     curPlayer.SendMergeRegisterPlayerAfterChange(CrossRealmPlayer.GetCrossPlayerName(curPlayer), mapID, dataMapID, copyMapID, posX, posY)

--
Gitblit v1.8.0