From 3e236bdc51a439594c52f0c558006d3f52997bfe Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期六, 08 十二月 2018 10:45:28 +0800
Subject: [PATCH] 4581 上古战场报错修复
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py | 81 +++++++++++++++++++++++++++++++++-------
1 files changed, 67 insertions(+), 14 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 801bb41..53d2397 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
@@ -63,6 +63,10 @@
Help_score = 'score' #已获得积分
Help_grade = 'grade' #评级(5-S,4-A,3-B,2-C,1-D)
Help_leaderID = 'leaderID' #渡劫玩家ID
+Help_isHelp = 'isHelp' #本次是否是助战
+Help_helpCount = 'helpCount' #该副本今日已助战次数
+Help_relation = 'relation' #该副本关系加成信息 [优先关系, 总加成]
+Help_robotJob = 'robotJob' #机器人职业 {"ObjID":job, ...}
#副本结算信息通用key
Over_dataMapID = 'dataMapID' #数据地图ID
@@ -87,6 +91,7 @@
Over_enterLV = 'enterLV' #进入时等级
Over_leaderID = 'leaderID' #渡劫玩家ID
Over_xianyuanCoin = 'xianyuanCoin' #获得仙缘币信息 [获得仙缘币数, 没有获得的原因] 原因: 1-达到助战次数上限,2-达到每日获得仙缘币上限
+Over_helpPlayer = 'helpPlayer' #助战玩家信息 {"玩家ID":{玩家信息key:value, ...}, ...}
#副本行为
(
@@ -164,19 +169,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
-
- # 周今日次数暂不做,待扩展...
+ 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:
@@ -217,6 +215,50 @@
return ShareDefine.EntFBAskRet_NoTicket
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 玩家实例
@@ -331,6 +373,17 @@
gameFB.SetGameFBDict(ChConfig.Def_FB_NPCStrengthenMaxLV, maxLV)
GameWorld.Log("NPC成长动态等级变更: isLeave=%s,totalLV=%s,playerCnt=%s,averageLV=%s,maxLV=%s"
% (isLeave, totalLV, playerCnt, averageLV, maxLV), playerID)
+ # 上古战场特殊处理
+ if mapID == ChConfig.Def_FBMapID_ElderBattlefield:
+ lineID = GameWorld.GetGameWorld().GetPropertyID() - 1
+ fbLineIpyData = GetFBLineIpyData(mapID, lineID)
+ lvLimitMin = 0 if not fbLineIpyData else fbLineIpyData.GetLVLimitMin()
+ robotLVDiff = IpyGameDataPY.GetFuncCfg("ElderBattlefieldCfg", 5)
+ robotLVMin, robotLVMax = averageLV - robotLVDiff, averageLV
+ robotLVMin = max(lvLimitMin, robotLVMin)
+ gameFB.SetGameFBDict(ChConfig.Def_FB_NPCStrengthenMaxLV, robotLVMax)
+ gameFB.SetGameFBDict(ChConfig.Def_FB_NPCStrengthenMinLV, robotLVMin)
+ GameWorld.Log(" 更新上古机器人等级范围: lineID=%s,robotLVDiff=%s,robotLV=(%s~%s)" % (lineID, robotLVDiff, robotLVMin, robotLVMax))
return True
def UpdFBLineNPCStrengthenPlayerCnt(playerID, isLeave):
@@ -1697,7 +1750,7 @@
maxDayTimes = ipyData.GetDayTimes()
maxCnt = GetEnterFBMaxCnt(curPlayer, mapID)
enterCnt = GetEnterFBCount(curPlayer, mapID)
- if maxDayTimes and maxCnt - enterCnt >= maxDayTimes:
+ if mapID == ChConfig.Def_FBMapID_SealDemon and maxDayTimes and maxCnt - enterCnt >= maxDayTimes:
GameWorld.DebugLog('当前次数已满,无需购买。。')
return
if hasBuyCnt >= canBuyCnt:
--
Gitblit v1.8.0