| | |
| | | import ChConfig
|
| | | import PlayerControl
|
| | | import FamilyRobBoss
|
| | | import NPCCustomRefresh
|
| | | import EventShell
|
| | | import FBLogic
|
| | | import FBCommon
|
| | |
| | |
|
| | | #调用副本开启触发器
|
| | | 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
|
| | |
|
| | | ## 副本关闭
|
| | |
| | | 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()
|
| | |
| | | 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 = {}
|
| | |
| | | #根据是否收缩型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
|
| | |
|
| | | ##根据表中的收缩类型释放或者清空副本状态
|
| | |
| | |
|
| | | #仙盟归属boss定时处理
|
| | | FamilyRobBoss.OnFamilyOwnerBossProcess(tick)
|
| | | |
| | | #地图自定义随机刷怪
|
| | | NPCCustomRefresh.ProcessMapRandomRefreshNPC(gameWorld, tick)
|
| | | return
|
| | |
|
| | | ## 通知RouteServer 消息
|
| | |
| | | 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
|
| | |
|
| | |
|