From 1acf83792e439322b3620227178ed0fd243e54a2 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 30 十一月 2018 15:46:55 +0800
Subject: [PATCH] 2540 【1.3】混乱妖域单人进入被拦住

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py |   69 +++++++++++++++++++++++++---------
 1 files changed, 50 insertions(+), 19 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
index 71649ca..60dd666 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
@@ -167,25 +167,12 @@
             return ShareDefine.EntFBAskRet_FBClose
         
         #进入次数判断
-        maxTimes = fbIpyData.GetDayTimes()
-        helpPoint = fbIpyData.GetHelpPoint()
-        if maxTimes and not helpPoint and mapID not in ChConfig.Def_NoLimitEnterCntMap:
-            enterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntDay % mapID)
-            maxCnt = GetEnterFBMaxCnt(curPlayer, mapID)
-            if enterCnt + reqEnterCnt > maxCnt:
-                GameWorld.Log("已达到当日最大进入次数!mapID=%s,enterCnt=%s,reqEnterCnt=%s,maxTimes=%s,maxCnt=%s" 
-                              % (mapID, enterCnt, reqEnterCnt, maxTimes, maxCnt), playerID)
-                if isNotify:
-                    PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_268121", [mapID])
-                return ShareDefine.EntFBAskRet_NoEnterCnt
-            
-        if not isTeamAsk and fbIpyData.GetDayHelpCountMax():
-            if not curPlayer.GetTeamID() or curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_TeamMemCount) == 1:
-                if isNotify:
-                    PlayerControl.NotifyCode(curPlayer, "TeamSingleEnter", [mapID])
-                return ShareDefine.EntFBAskRet_NoEnterCnt
-            
-            # 周今日次数暂不做,待扩展...
+        canEnter, notifyMark = __CheckCanEnterFBByTime(curPlayer, mapID, fbIpyData, reqEnterCnt, isTeamAsk)
+        if not canEnter:
+            if notifyMark:
+                PlayerControl.NotifyCode(curPlayer, notifyMark, [mapID])
+            return ShareDefine.EntFBAskRet_NoEnterCnt
+        
         #进入CD判断
         if CheckIsEnterCD(curPlayer, mapID):
             if isNotify:
@@ -227,6 +214,50 @@
         
     return ShareDefine.EntFBAskRet_OK
 
+def __CheckCanEnterFBByTime(curPlayer, mapID, fbIpyData, reqEnterCnt, isTeamAsk):
+    #进入次数判断
+    maxTimes = fbIpyData.GetDayTimes()
+    if not maxTimes:
+        return True, ""
+    
+    #playerID = curPlayer.GetPlayerID()
+    enterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntDay % mapID)
+    maxCnt = GetEnterFBMaxCnt(curPlayer, mapID)
+    if enterCnt + reqEnterCnt <= maxCnt:
+        return True, ""
+    
+    ### 以下是到达次数上限后的处理
+    fbType = GameWorld.GetMap().GetMapFBTypeByMapID(mapID)
+    
+    # 单人副本达到次数后不可再进入
+    if fbType == IPY_GameWorld.fbtSingle:
+        #GameWorld.Log("已达到当日最大进入次数!单人副本 mapID=%s,enterCnt=%s,reqEnterCnt=%s,maxTimes=%s,maxCnt=%s" 
+        #              % (mapID, enterCnt, reqEnterCnt, maxTimes, maxCnt), playerID)
+        return False, "GeRen_chenxin_268121"
+    
+    # 组队副本
+    if fbType == IPY_GameWorld.fbtTeam:
+        # 无助战的不可再进入
+        if not fbIpyData.GetHelpPoint():
+            #GameWorld.Log("已达到当日最大进入次数!组队副本 mapID=%s,enterCnt=%s,reqEnterCnt=%s,maxTimes=%s,maxCnt=%s" 
+            #              % (mapID, enterCnt, reqEnterCnt, maxTimes, maxCnt), playerID)
+            return False, "GeRen_chenxin_268121"
+        
+        # 可助战的不可单人进入助战,可发起匹配
+        if not isTeamAsk and (not curPlayer.GetTeamID() or curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_TeamMemCount) <= 1):
+            #GameWorld.Log("已达到当日最大进入次数!组队副本不可单人助战! mapID=%s,enterCnt=%s,reqEnterCnt=%s,maxTimes=%s,maxCnt=%s" 
+            #              % (mapID, enterCnt, reqEnterCnt, maxTimes, maxCnt), playerID)
+            return False, "TeamSingleEnter"
+        
+    elif mapID not in ChConfig.Def_NoLimitEnterCntMap:
+        #GameWorld.Log("已达到当日最大进入次数! mapID=%s,enterCnt=%s,reqEnterCnt=%s,maxTimes=%s,maxCnt=%s" 
+        #              % (mapID, enterCnt, reqEnterCnt, maxTimes, maxCnt), playerID)
+        return False, "GeRen_chenxin_268121"
+    
+    # 周进入次数暂不做,待扩展...
+    
+    return True, ""
+
 ## 获取副本进入门票信息
 #  @param curPlayer 玩家实例
 #  @param mapID 地图id

--
Gitblit v1.8.0