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