hch
2019-04-19 f37fe3b1d7b81b2dcdaeeb81971a6cbdf0b9372d
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
## 玩家离开地图时,尝试关闭副本