From 71a26587b4adb83f1ce0810a1b67b1a48c525a8b Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 17 十二月 2024 14:19:17 +0800 Subject: [PATCH] 10337 【越南】【英文】【BT】【砍树】爬塔通关类的支持一键过关 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py | 50 +++++++ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py | 30 ++++ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py | 69 +++++++++ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini | 6 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py | 56 ++++++++ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_RealmTower.py | 58 +++++++ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_TrialTower.py | 78 ++++++++++ ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 56 ++++++++ 8 files changed, 393 insertions(+), 10 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py index 80b6ad4..27aa94f 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py @@ -18984,6 +18984,62 @@ #------------------------------------------------------ +# B1 08 快速一键过关副本 #tagCMFBQuickPass + +class tagCMFBQuickPass(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MapID", c_int), + ("LineID", c_ushort), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB1 + self.SubCmd = 0x08 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xB1 + self.SubCmd = 0x08 + self.MapID = 0 + self.LineID = 0 + return + + def GetLength(self): + return sizeof(tagCMFBQuickPass) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B1 08 快速一键过关副本 //tagCMFBQuickPass: + Cmd:%s, + SubCmd:%s, + MapID:%d, + LineID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MapID, + self.LineID + ) + return DumpString + + +m_NAtagCMFBQuickPass=tagCMFBQuickPass() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFBQuickPass.Cmd,m_NAtagCMFBQuickPass.SubCmd))] = m_NAtagCMFBQuickPass + + +#------------------------------------------------------ # B1 06 助战召唤 #tagCMHelpBattleCall class tagCMHelpBattleCall(Structure): diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini index dee19f4..4538b16 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini @@ -476,9 +476,9 @@ PacketSubCMD_8=0x04 PacketCallFunc_8=OnClientStartFB -PacketCMD_9= -PacketSubCMD_9= -PacketCallFunc_9= +PacketCMD_9=0xB1 +PacketSubCMD_9=0x08 +PacketCallFunc_9=OnFBQuickPass PacketCMD_10= PacketSubCMD_10= diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py index 80b6ad4..27aa94f 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py @@ -18984,6 +18984,62 @@ #------------------------------------------------------ +# B1 08 快速一键过关副本 #tagCMFBQuickPass + +class tagCMFBQuickPass(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MapID", c_int), + ("LineID", c_ushort), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB1 + self.SubCmd = 0x08 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xB1 + self.SubCmd = 0x08 + self.MapID = 0 + self.LineID = 0 + return + + def GetLength(self): + return sizeof(tagCMFBQuickPass) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B1 08 快速一键过关副本 //tagCMFBQuickPass: + Cmd:%s, + SubCmd:%s, + MapID:%d, + LineID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MapID, + self.LineID + ) + return DumpString + + +m_NAtagCMFBQuickPass=tagCMFBQuickPass() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFBQuickPass.Cmd,m_NAtagCMFBQuickPass.SubCmd))] = m_NAtagCMFBQuickPass + + +#------------------------------------------------------ # B1 06 助战召唤 #tagCMHelpBattleCall class tagCMHelpBattleCall(Structure): diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py index a543acd..6ef3d49 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py @@ -1668,6 +1668,36 @@ return callFunc(curPlayer, mapID, lineID, cnt, dataEx) +def OnPlayerFBQuickPass(curPlayer, mapID, lineID): + '''副本快速过关验证 + @param mapID: 数据地图ID + @param lineID: 目标关卡线路ID,可一次性跳多关,由前端发包决定 + @return: (bossID, quickCnt) 或 None + @note: bossID 目标NPCID - 目标关卡所需要挑战的主NPCID,一般是boss,用于验证战力是否满足快速过关 + @note: quickCnt 本次总共跳过几关 - 默认1 + ''' + do_FBLogic_ID = __GetFBLogic_MapID(mapID) + + callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnPlayerFBQuickPass")) + + # 没有额外条件判断默认返回True + if callFunc == None: + return + + return callFunc(curPlayer, mapID, lineID) + +def OnPlayerFBQuickPassResult(curPlayer, mapID, lineID): + '''副本快速过关结果 + ''' + do_FBLogic_ID = __GetFBLogic_MapID(mapID) + + callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnPlayerFBQuickPassResult")) + + if callFunc == None: + return + + return callFunc(curPlayer, mapID, lineID) + #--------------------------------------------------------------------- ## 切换地图询问(只询问第一条线) 判断是否可以进入副本 diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_RealmTower.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_RealmTower.py index 25a083f..80776a2 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_RealmTower.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_RealmTower.py @@ -67,7 +67,7 @@ return __CheckCanChallenge(curPlayer, nextFloorID) ## 检查可否进行挑战 -def __CheckCanChallenge(curPlayer, floorID): +def __CheckCanChallenge(curPlayer, floorID, checkPre=True): playerID = curPlayer.GetPlayerID() ipyData = GetTowerIpyData(floorID) if not ipyData: @@ -79,7 +79,7 @@ GameWorld.DebugLog("该境界塔层已过关: floorID=%s" % floorID, playerID) return False - if floorID > curFloorID + 1: + if checkPre and floorID > curFloorID + 1: GameWorld.DebugLog("上一层未过关: floorID=%s > curFloorID=%s+1" % (floorID, curFloorID), playerID) return False @@ -138,9 +138,10 @@ return ## 获取BossID -def __GetRealmTowerBossID(): - gameFB = GameWorld.GetGameFB() - floorID = gameFB.GetGameFBDictByKey(FBDict_Floor) +def __GetRealmTowerBossID(floorID=-1): + if floorID == -1: + gameFB = GameWorld.GetGameFB() + floorID = gameFB.GetGameFBDictByKey(FBDict_Floor) ipyData = GetTowerIpyData(floorID) if not ipyData: GameWorld.ErrLog("__GetRealmTowerBossID() can not find %s in RealmTowerNPC.txt" % floorID) @@ -308,3 +309,50 @@ StartfloorID(curPlayer, floorID, tick) return + +def OnPlayerFBQuickPass(curPlayer, mapID, lineID): + '''副本快速过关验证 + @param mapID: 数据地图ID + @param lineID: 目标关卡线路ID,可一次性跳多关,由前端发包决定 + @return: (bossID, quickCnt) 或 None + @note: bossID 目标NPCID - 目标关卡所需要挑战的主NPCID,一般是boss,用于验证战力是否满足快速过关 + @note: quickCnt 本次总共跳过几关 - 默认1 + ''' + + if not __CheckCanChallenge(curPlayer, lineID, False): + return + curLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RealmTowerFloor) + bossID = __GetRealmTowerBossID(lineID) + quickCnt = lineID - curLineID + + return bossID, quickCnt + +def OnPlayerFBQuickPassResult(curPlayer, mapID, lineID): + '''副本快速过关结果 + ''' + + playerID = curPlayer.GetPlayerID() + curLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RealmTowerFloor) + fromLineID = curLineID + 1 + GameWorld.DebugLog("处理快速过关结算: mapID=%s,fromLineID=%s to %s" % (mapID, fromLineID, lineID), playerID) + + itemListTotal = [] + for floorID in range(fromLineID, lineID + 1): + ipyData = GetTowerIpyData(floorID) + if not ipyData: + continue + + #更新关卡 + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RealmTowerFloor, floorID) + GameWorld.DebugLog('更新境界塔快速过关: floorID=%s' % floorID, playerID) + + # 给过关奖励 + giveItemList = ipyData.GetRewardItemList() + itemListTotal += giveItemList + + prizeItemList = GameWorld.MergeItemList(itemListTotal) + ItemControler.GivePlayerItemOrMail(curPlayer, prizeItemList, None, ["RealmTower", False, {}]) + quickPassDict = {FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(prizeItemList), "quickPass":1} + __SendRealmTowerOverInfo(curPlayer, floorID, True, quickPassDict) + SyncRealmTowerInfo(curPlayer) + return diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py index e3212f3..a8d0845 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py @@ -570,4 +570,73 @@ return +def OnPlayerFBQuickPass(curPlayer, mapID, lineID): + '''副本快速过关验证 + @param mapID: 数据地图ID + @param lineID: 目标关卡线路ID,可一次性跳多关,由前端发包决定 + @return: (bossID, quickCnt) 或 None + @note: bossID 目标NPCID - 目标关卡所需要挑战的主NPCID,一般是boss,用于验证战力是否满足快速过关 + @note: quickCnt 本次总共跳过几关 - 默认1 + ''' + + if not __CheckCanChallenge(curPlayer, lineID): + return + curLineID = __GetSkyTowerCurFloor(curPlayer) + bossID = __GetSkyTowerBossID(lineID) + quickCnt = lineID - curLineID + + return bossID, quickCnt +def OnPlayerFBQuickPassResult(curPlayer, mapID, lineID): + '''副本快速过关结果 + ''' + + playerID = curPlayer.GetPlayerID() + curLineID = __GetSkyTowerCurFloor(curPlayer) + fromLineID = curLineID + 1 + GameWorld.DebugLog("处理快速过关结算: mapID=%s,fromLineID=%s to %s" % (mapID, fromLineID, lineID), playerID) + + itemListTotal = [] + for floorID in range(fromLineID, lineID + 1): + ipyData = GetTowerIpyData(floorID) + if not ipyData: + continue + + if ipyData.GetIsNotify(): + sysMark = 'KillGodTowerInfo_1'# if floorID == maxLevel else 'GeRen_liubo_471172' + PlayerControl.WorldNotify(0, sysMark, [curPlayer.GetPlayerName(), floorID]) + + #更新关卡 + SetSkyTowerCurfloorID(curPlayer, floorID) + + #过关奖励 + giveItemDict = ipyData.GetReward() + giveItemList = [[itemID, itemCnt, 0] for itemID, itemCnt in giveItemDict.items()] + itemListTotal += giveItemList + + PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_SkyTower) + + # 全服目标 + ipyDataServer = IpyGameDataPY.GetIpyGameDataNotLog("SkyTowerServerChallenge", floorID) + if ipyDataServer: + maxNeedPassCount = 0 + rankRewardInfo = ipyDataServer.GetPassRankRewardInfo() + for rank in rankRewardInfo.keys(): + maxNeedPassCount = max(maxNeedPassCount, int(rank)) + for needPlayerCount in ipyDataServer.GetServerRewardInfo().keys(): + maxNeedPassCount = max(maxNeedPassCount, int(needPlayerCount)) + playerID = curPlayer.GetPlayerID() + msgInfo = str(["ServerChallengePass", [floorID, maxNeedPassCount, rankRewardInfo]]) + GameWorld.DebugLog("全服过关信息同步GameServer: %s" % msgInfo, playerID) + GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(playerID, 0, 0, "SkyTower", msgInfo, len(msgInfo)) + + prizeItemList = GameWorld.MergeItemList(itemListTotal) + ItemControler.GivePlayerItemOrMail(curPlayer, prizeItemList, None, ["SKYTower", False, {}]) + + quickPassDict = {FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(prizeItemList), "quickPass":1} + __SendSkyTowerOverInfo(curPlayer, floorID, True, quickPassDict) + SyncSkyTowerInfo(curPlayer, 0) # 同步最新关卡信息 + if floorID >= 10: + PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_SkyTower, floorID) + + return diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_TrialTower.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_TrialTower.py index 2a292a0..aaeb8ce 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_TrialTower.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_TrialTower.py @@ -355,7 +355,7 @@ ## 给过关奖励 -def __GiveFBPassPrize(curPlayer, fbLevel): +def __GiveFBPassPrize(curPlayer, fbLevel, moneyDictTotal=None, itemListTotal=None): ipyData = GetTowerIpyData(fbLevel) if not ipyData: return {} @@ -406,6 +406,11 @@ moneyDict = {ShareDefine.TYPE_Price_Rune:addJH, ShareDefine.TYPE_Price_Ysog:RuneMagicEssence} prizeDict = {FBCommon.Over_money:FBCommon.GetJsonMoneyList(moneyDict), FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(prizeItemList)} + if isinstance(moneyDictTotal, dict): + for moneyType, addValue in moneyDict.items(): + moneyDictTotal[moneyType] = moneyDictTotal.get(moneyType, 0) + addValue + if isinstance(itemListTotal, list): + itemListTotal += prizeItemList # for _ in xrange(challengeCnt): # EventReport.WriteEvent_custom_mission_log(curPlayer, ChConfig.CME_FB_TrialTower, ChConfig.CME_Log_End, 1, cmeInfoEx=bossName) return prizeDict @@ -659,4 +664,73 @@ #BOSS复活活动 PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_TowerSweep, 1) PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_TowerSweep, 1) - return True \ No newline at end of file + return True + +def OnPlayerFBQuickPass(curPlayer, mapID, lineID): + '''副本快速过关验证 + @param mapID: 数据地图ID + @param lineID: 目标关卡线路ID,可一次性跳多关,由前端发包决定 + @return: (bossID, quickCnt) 或 None + @note: bossID 目标NPCID - 目标关卡所需要挑战的主NPCID,一般是boss,用于验证战力是否满足快速过关 + @note: quickCnt 本次总共跳过几关 - 默认1 + ''' + + ipyData = GetTowerIpyData(lineID) + if not ipyData: + return + curLineID = __GetTrialLevelCurPassLV(curPlayer) + if lineID <= curLineID: + GameWorld.DebugLog("符印塔本关已过关, 无法挑战! lineID=%s" % lineID, curPlayer.GetPlayerID()) + return + bossID = ipyData.GetNPCID() + quickCnt = 0 #lineID - curLineID + + fromLineID = curLineID + 1 + for passLineID in range(fromLineID, lineID + 1): + # 符印塔lineID可能会跳,这里遍历不输出找不到的lineID + ipyData = IpyGameDataPY.GetIpyGameDataNotLog('RuneTower', passLineID) + if not ipyData: + continue + quickCnt += 1 + + return bossID, quickCnt + +def OnPlayerFBQuickPassResult(curPlayer, mapID, lineID): + '''副本快速过关结果 + ''' + + playerID = curPlayer.GetPlayerID() + curLineID = __GetTrialLevelCurPassLV(curPlayer) + fromLineID = curLineID + 1 + GameWorld.DebugLog("处理快速过关结算: mapID=%s,fromLineID=%s to %s" % (mapID, fromLineID, lineID), playerID) + + moneyDictTotal = {} + itemListTotal = [] + for passLineID in range(fromLineID, lineID + 1): + ipyData = IpyGameDataPY.GetIpyGameDataNotLog('RuneTower', passLineID) + if not ipyData: + continue + + if ipyData.GetIsNotify(): + IPY_Data = IpyGameDataPY.IPY_Data() + maxLevel = IPY_Data.GetRuneTowerByIndex(IPY_Data.GetRuneTowerCount()-1).GetID() + sysMark = 'RuneTowerInfo_1' if passLineID == maxLevel else 'GeRen_liubo_471172' + PlayerControl.WorldNotify(0, sysMark, [curPlayer.GetPlayerName(), passLineID / 100]) + + #更新关卡 + SetTrialLevelCurPassLV(curPlayer, passLineID) + # 给过关奖励 + __GiveFBPassPrize(curPlayer, passLineID, moneyDictTotal, itemListTotal) + + #任务 + EventShell.EventRespons_TrialTowerCnt(curPlayer, passLineID) + #每日任务 + PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_Tower) + + prizeItemList = GameWorld.MergeItemList(itemListTotal) + quickPassDict = {FBCommon.Over_money:FBCommon.GetJsonMoneyList(moneyDictTotal), + FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(prizeItemList), + "quickPass":1} + __SendTrialTowerOverInfo(curPlayer, passLineID, True, quickPassDict) + SyncTrialLevelInfo(curPlayer) # 同步最新关卡信息 + return diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py index 029f675..8213c7e 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py @@ -626,3 +626,53 @@ packData.Cnt = len(packData.InfoList) NetPackCommon.SendFakePack(curPlayer, packData) return + +#// B1 08 快速一键过关副本 #tagCMFBQuickPass +# +#struct tagCMFBQuickPass +#{ +# tagHead Head; +# DWORD MapID; +# WORD LineID; +#}; +def OnFBQuickPass(playerIndex, clientData, tick): + curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex) + playerID = curPlayer.GetPlayerID() + mapID = clientData.MapID + lineID = clientData.LineID + GameWorld.DebugLog("玩家请求快速一键过关副本: mapID=%s,lineID=%s" % (mapID, lineID), playerID) + + fbIpyData = FBCommon.GetFBIpyData(mapID) + fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, lineID) + if FBCommon.CheckCanEnterFBComm(curPlayer, mapID, lineID, fbIpyData, fbLineIpyData) != ShareDefine.EntFBAskRet_OK: + return + + reqRet = FBLogic.OnPlayerFBQuickPass(curPlayer, mapID, lineID) + if not reqRet or len(reqRet) != 2: + GameWorld.DebugLog("无法一键过关副本: mapID=%s,lineID=%s" % (mapID, lineID), playerID) + return + bossID, quickCnt = reqRet + if bossID: + npcData = GameWorld.GetGameData().FindNPCDataByID(bossID) + if not npcData: + return + npcFightPower = NPCCommon.GetSuppressFightPower(npcData) + quickNeedRatio = IpyGameDataPY.GetFuncCfg("FBQuickPass", 1) + quickNeedFightPower = int(npcFightPower * quickNeedRatio) + curFightPower = PlayerControl.GetFightPower(curPlayer) + if quickNeedFightPower and curFightPower < quickNeedFightPower: + GameWorld.DebugLog("无法一键过关副本! 战力限制: mapID=%s,lineID=%s,bossID=%s,npcFightPower=%s,quickNeedFightPower=%s > %s" + % (mapID, lineID, bossID, npcFightPower, quickNeedFightPower, curFightPower), playerID) + return + + #增加副本进入次数 + if fbIpyData and fbIpyData.GetDayTimes() and quickCnt: + # 跳关超过1关的要重新验证下 + if quickCnt > 1 and FBCommon.CheckCanEnterFBComm(curPlayer, mapID, lineID, fbIpyData, fbLineIpyData, quickCnt) != ShareDefine.EntFBAskRet_OK: + return + FBCommon.AddEnterFBCount(curPlayer, mapID, quickCnt) + + #扫荡结果给奖励等 + FBLogic.OnPlayerFBQuickPassResult(curPlayer, mapID, lineID) + return + -- Gitblit v1.8.0