xdh
2019-04-18 ab2158916e07846e4be746673231dac6dfa27fc9
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py
@@ -40,6 +40,7 @@
import ChConfig
import PlayerControl
import FamilyRobBoss
import NPCCustomRefresh
import EventShell
import FBLogic
import FBCommon
@@ -74,6 +75,10 @@
    
    #调用副本开启触发器
    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))
    return
## 副本关闭
@@ -93,7 +98,8 @@
    gameFBMgr.SetPlayerLogoffTick(0)
    gameFBMgr.SetIsSafeClose(0)
    GameWorld.Log("FB Close! lineID = %s, openState = %s"%(gameWorld.GetLineID(), gameWorld.GetOpenState()))
    lineID = gameWorld.GetLineID()
    GameWorld.Log("FB Close! lineID = %s, openState = %s"%(lineID, gameWorld.GetOpenState()))
    
    gameWorld.SetOpenState(IPY_GameWorld.fbosClosed)
    gameMap = gameWorld.GetMap()
@@ -102,9 +108,23 @@
    if fbType == 0:
        return
    
    if fbType == IPY_GameWorld.fbtSingle:
        ownerID = gameFBMgr.GetGameFBDictByKey(ChConfig.Def_FB_SingleFBPlayerID)
        if ownerID in PyGameData.g_fbHelpBattlePlayerDict:
            PyGameData.g_fbHelpBattlePlayerDict.pop(ownerID)
            GameWorld.DebugLog("清除单人副本镜像助战信息: ownerID=%s" % ownerID)
    elif fbType == IPY_GameWorld.fbtTeam:
        teamID = gameWorld.GetPropertyID()
        if teamID in PyGameData.g_teamFBMemRelationDict:
            PyGameData.g_teamFBMemRelationDict.pop(teamID)
            GameWorld.DebugLog("清除组队副本队员关系信息: teamID=%s" % teamID)
    #副本关闭时统一清怪
    FBCommon.ClearFBNPC()
    
    if lineID in PyGameData.g_fbRobotJobDict:
        PyGameData.g_fbRobotJobDict.pop(lineID)
    mapID = FBCommon.GetRecordMapID(gameMap.GetMapID())
    #清理物品
    unPickItemDict = {}
@@ -151,6 +171,12 @@
    #根据是否收缩型FB处理
    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))
    return
##根据表中的收缩类型释放或者清空副本状态
@@ -505,6 +531,9 @@
    
    #仙盟归属boss定时处理
    FamilyRobBoss.OnFamilyOwnerBossProcess(tick)
    #地图自定义随机刷怪
    NPCCustomRefresh.ProcessMapRandomRefreshNPC(gameWorld, tick)
    return
## 通知RouteServer 消息
@@ -569,6 +598,11 @@
    if GameWorld.GetMap().GetMapFBType() == IPY_GameWorld.fbtNull:
        msgInfo = str([gameWorld.GetMapID(), gameWorld.GetLineID(), gameWorld.GetRealMapID(), gameWorld.GetCopyMapID()])
        GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "CommMapServerInitOK", msgInfo, len(msgInfo))
    if gameWorld.GetMapID() in ChConfig.Def_CrossDynamicLineMap and gameWorld.GetCopyMapID() == gameWorld.GetGameWorldCount() - 1:
        msgInfo = str([gameWorld.GetRealMapID(), gameWorld.GetGameWorldCount()])
        GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "DynamicLineMapInitOK", msgInfo, len(msgInfo))
    return