From bc938da93f0118cd5232327aa9382a0adbbf5a8e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 19 四月 2019 18:07:06 +0800
Subject: [PATCH] 6459 【后端】【2.0】缥缈仙域开发单(跨服副本动态线路分配优化)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py |   29 +++++++++++++++++++++--------
 1 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py
index fa0def1..8a104c0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py
@@ -77,8 +77,7 @@
     FBLogic.OnOpenFB(tick)
     
     if gameWorld.GetMapID() in ChConfig.Def_CrossDynamicLineMap:
-        msgInfo = str([gameWorld.GetRealMapID(), gameWorld.GetCopyMapID()])
-        GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "DynamicLineMapOpen", msgInfo, len(msgInfo))
+        GameServer_DynamicLineMapStateChange(gameWorld, IPY_GameWorld.fbosOpen)
     return
 
 ## 副本关闭
@@ -97,7 +96,7 @@
     gameFBMgr = gameWorld.GetGameFB() 
     gameFBMgr.SetPlayerLogoffTick(0)
     gameFBMgr.SetIsSafeClose(0)
-
+    
     lineID = gameWorld.GetLineID()
     GameWorld.Log("FB Close! lineID = %s, openState = %s"%(lineID, gameWorld.GetOpenState()))
     
@@ -172,11 +171,21 @@
     FreeOrClearFBByAutoSize(gameWorld)
     
     if gameWorld.GetMapID() in ChConfig.Def_CrossDynamicLineMap:
-        realMapID, copyMapID = gameWorld.GetRealMapID(), gameWorld.GetCopyMapID()
-        key = (mapID, copyMapID)
-        funcLineDataCache = PyGameData.g_crossFuncLineDataCache.pop(key, None)
-        msgInfo = str([realMapID, copyMapID, funcLineDataCache])
-        GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "DynamicLineMapClose", msgInfo, len(msgInfo))
+        GameServer_DynamicLineMapStateChange(gameWorld, IPY_GameWorld.fbosClosed)
+        
+    gameWorld.SetPropertyID(0)
+    return
+
+def GameServer_DynamicLineMapStateChange(gameWorld, state):
+    realMapID, copyMapID = gameWorld.GetRealMapID(), gameWorld.GetCopyMapID()
+    if state == IPY_GameWorld.fbosWaitForClose:
+        crossFuncLineDataCache = FBLogic.OnGetCrossFuncLineDataCache()
+        msgInfo = [realMapID, copyMapID, state, crossFuncLineDataCache]
+    else:
+        msgInfo = [realMapID, copyMapID, state]
+        
+    msgInfo = str(msgInfo)
+    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "DynamicLineMapStateChange", msgInfo, len(msgInfo))
     return
 
 ##根据表中的收缩类型释放或者清空副本状态
@@ -612,6 +621,10 @@
 #  @remarks 函数详细说明.
 def CloseFB(tick):
     GameWorld.GetGameWorld().SetCloseFBTick(tick)
+    
+    gameWorld = GameWorld.GetGameWorld()
+    if gameWorld.GetMapID() in ChConfig.Def_CrossDynamicLineMap:
+        GameServer_DynamicLineMapStateChange(gameWorld, IPY_GameWorld.fbosWaitForClose)
     return
 
 ## 玩家离开地图时,尝试关闭副本

--
Gitblit v1.8.0