From aa385f92cd9b9809fa3417a1c757ee60d36d35bf Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期四, 04 四月 2019 14:28:53 +0800
Subject: [PATCH] 3258 【主干】修为池显示错误

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py |   41 +++++++++++++++++++++++++++++++++++------
 1 files changed, 35 insertions(+), 6 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 b399c4a..0b816e1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py
@@ -39,6 +39,8 @@
 import GameWorld
 import ChConfig
 import PlayerControl
+import FamilyRobBoss
+import NPCCustomRefresh
 import EventShell
 import FBLogic
 import FBCommon
@@ -92,7 +94,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()
@@ -101,9 +104,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 = {}
@@ -307,7 +324,7 @@
         return
     
     #特殊副本,不执行这个逻辑
-    if not GameWorld.GetMap().GetAutoSize():
+    if not IsNoPlayerNeedCloseFB():
         return
     
     gameFB = GameWorld.GetGameFB()
@@ -422,9 +439,13 @@
             return IPY_GameWorld.cmePlayerFull
 
     #检查副本状态是否可以登录
-    if not FBCommon.CheckFBStateCanEnter(askStruct):
+    checkRet = FBCommon.CheckFBStateCanEnter(askStruct)
+    if type(checkRet) not in [tuple, list]:
+        checkRet = (checkRet, "FB_andyshao_861048")
+    canEnter, notifyMark = checkRet
+    if not canEnter:
         #副本关闭中, 请稍后
-        return IPY_GameWorld.cmeCustom, 'FB_andyshao_861048'
+        return IPY_GameWorld.cmeCustom, notifyMark
     
     changeMapAskResult = FBLogic.OnChangeMapAsk(askStruct, tick)
 
@@ -497,6 +518,12 @@
     __RefreshOnFiveMinute(tick)
     #定时检测关闭超时文件
     EventReport.OnTimeCloseScribeTxt()
+    
+    #仙盟归属boss定时处理
+    FamilyRobBoss.OnFamilyOwnerBossProcess(tick)
+    
+    #地图自定义随机刷怪
+    NPCCustomRefresh.ProcessMapRandomRefreshNPC(gameWorld, tick)
     return
 
 ## 通知RouteServer 消息
@@ -584,8 +611,7 @@
     if gameMap.GetMapFBType() == 0:
         return
     
-    if gameMap.GetAutoSize() == 0:
-        #只处理自动是否的地图
+    if not IsNoPlayerNeedCloseFB():
         return
     
     playerManager = gameWorld.GetMapCopyPlayerManager()
@@ -594,6 +620,9 @@
         __CloseFB(GameWorld.GetGameWorld(), GameWorld.GetGameWorld().GetTick())    
 
 
+def IsNoPlayerNeedCloseFB():
+    ## 副本中无玩家是否需要自动关闭的副本
+    return GameWorld.GetMap().GetAutoSize() and GameWorld.GetMap().GetMapID() not in ChConfig.Def_NoPlayerNotCloseAutoSizeMap
 
 #//08 06 根据国家统计的玩家数目#tagMPlayerCountByCountry
 #tagMPlayerCountByCountry       *   GettagMPlayerCountByCountry();

--
Gitblit v1.8.0