From d7f44d8d871a90c818bdb3ffe9a60af875b7100a Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 30 九月 2025 10:12:23 +0800 Subject: [PATCH] 135 【挑战】战锤秘境-服务端(白骨盈野;副本基础;副本扫荡;广告奖励支持;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py | 81 ++++++---------------------------------- 1 files changed, 12 insertions(+), 69 deletions(-) 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 16b8dcb..fce4034 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py @@ -23,17 +23,12 @@ #------------------------------------------------------------------------------ #"""Version = 2016-12-02 11:00""" #------------------------------------------------------------------------------ -import IPY_GameWorld import PlayerControl import GameWorld import FBCommon -import ChConfig import FBLogic -import PlayerSuccess -import ItemCommon import IpyGameDataPY import ShareDefine -import GameFuncComm import NPCCommon #--------------------------------------------------------------------- @@ -60,100 +55,48 @@ # DWORD MapID; # WORD LineID; # BYTE Cnt; // 扫荡次数 -# BYTE IsFinish; // 是否立即完成; 0-否;1-花钱立即完成;2-客户端自行倒计时间到后发送2代表领取扫荡完成奖励 # DWORD DataEx; //附带信息 -# BYTE IsLittleHelper; // 是否小助手扫荡 #}; def OnPlayerFBWipeOut(playerIndex, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex) - #if not GameWorld.CheckPlayerTick(curPlayer, ChConfig.TYPE_Player_Tick_BeginFBWipeOut, tick): - # GameWorld.DebugLog("玩家副本扫荡请求CD中...", curPlayer.GetPlayerID()) - # return - mapID = clientData.MapID lineID = clientData.LineID cnt = clientData.Cnt - #isFinish = clientData.IsFinish - isFinish = 1 # 暂时默认1,之后有需要扫荡等待的再说 dataEx = clientData.DataEx - isLittleHelper = clientData.IsLittleHelper - if isLittleHelper: - if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_LittleHelper): - GameWorld.DebugLog("玩家没有小助手功能权限!", curPlayer.GetPlayerID()) - return if cnt <= 0: return fbIpyData = FBCommon.GetFBIpyData(mapID) - if FBCommon.GetRecordMapID(GameWorld.GetMap().GetMapID()) == FBCommon.GetRecordMapID(mapID): - if fbIpyData and fbIpyData.GetDayTimes():#没有限制进入次数的不限制在目标地图扫荡 - GameWorld.DebugLog("玩家在扫荡目标地图中,无法扫荡!mapID=%s" % mapID) - return + fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, lineID, False) + if not fbIpyData or not fbLineIpyData: + GameWorld.DebugLog("不存在该副本或线路无法扫荡!mapID=%s, lineID=%s" % (mapID, lineID)) + return - - fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, lineID) - if not fbLineIpyData: - GameWorld.DebugLog("找不到该副本线路,无法扫荡!mapID=%s, lineID=%s" % (mapID, lineID)) + if not FBCommon.IsFBPass(curPlayer, mapID, lineID): + GameWorld.DebugLog("未过关无法扫荡!mapID=%s, lineID=%s" % (mapID, lineID)) return if FBCommon.CheckCanEnterFBComm(curPlayer, mapID, lineID, fbIpyData, fbLineIpyData, cnt) != ShareDefine.EntFBAskRet_OK: return - costMoneyList = [] - sweepCostindexList = [] - sweepCostCnt = 0 - itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem) - - if fbLineIpyData: - #扫荡等级判断 - sweepLVLimit = fbLineIpyData.GetSweepLVLimit() - if sweepLVLimit and curPlayer.GetLV() < sweepLVLimit: - GameWorld.DebugLog('玩家副本扫荡,等级不足!mapID=%s, lineID=%s, playerLV=%s, sweepLVLimit=%s' - % (mapID, lineID, curPlayer.GetLV(), sweepLVLimit), curPlayer.GetPlayerID()) - return - - #扫荡道具判断,小助手不消耗扫荡道具 - sweepItemID = fbLineIpyData.GetSweepItemID() - if sweepItemID and not isLittleHelper: - sweepItemCnt = fbLineIpyData.GetSweepCostCnt() - sweepCostCnt = sweepItemCnt * cnt - #isEnough, sweepCostindexList = ItemCommon.GetItem_FromPack_ByID(sweepItemID, itemPack, sweepCostCnt) - isEnough, sweepCostindexList, hasBind, lackCnt = ItemCommon.GetItem_FromPack_ByID_ExEx(sweepItemID, itemPack, sweepCostCnt) - if not isEnough: - itemPrice = ItemCommon.GetShopItemPrice(sweepItemID, IPY_GameWorld.TYPE_Price_Gold_Money) - if itemPrice: - costMoney = itemPrice * lackCnt - costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, ShareDefine.TYPE_Price_Gold_Paper_Money, costMoney) - if not costMoneyList: - GameWorld.DebugLog("扫荡消耗道具不足, mapID=%s,lineID=%s,sweepItemID=%s,sweepCostCnt=%s" - % (mapID, lineID, sweepItemID, sweepCostCnt), curPlayer.GetPlayerID()) - return # 副本是否可扫荡, 这里只判断副本自身的特殊条件, 公共条件上面已经判断 - if not FBLogic.OnPlayerFBSweepAsk(curPlayer, mapID, lineID, cnt, isFinish, dataEx): + if not FBLogic.OnPlayerFBSweepAsk(curPlayer, mapID, lineID, cnt, dataEx): + GameWorld.DebugLog("该副本当前无法扫荡!mapID=%s, lineID=%s" % (mapID, lineID)) return - PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_FBSweep, 1, [mapID]) - - #扣除扫荡道具 - if sweepCostindexList and sweepCostCnt: - ItemCommon.ReduceItem(curPlayer, itemPack, sweepCostindexList, sweepCostCnt, False, 'FBSweepCostItem') - if costMoneyList: - infoDict = {"MapID":mapID, "LineID":lineID, 'SweepCount':cnt} - for moneyType, moneyNum in costMoneyList: - if not PlayerControl.PayMoney(curPlayer, moneyType, moneyNum, ChConfig.Def_Cost_FBSweep, infoDict): - return False, hasBind + #PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_FBSweep, 1, [mapID]) #需先扣除门票, 再增加次数, 否则可能导致扣除的数量错误 - FBCommon.DelFBEnterTicket(curPlayer, mapID, lineID, cnt) - + #FBCommon.DelFBEnterTicket(curPlayer, mapID, lineID, cnt) + #增加副本进入次数 if fbIpyData and fbIpyData.GetDayTimes(): FBCommon.AddEnterFBCount(curPlayer, mapID, cnt) #扫荡结果给奖励等 - FBLogic.OnPlayerFBSweepResult(curPlayer, mapID, lineID, cnt, isFinish, dataEx) + FBLogic.OnPlayerFBSweepResult(curPlayer, mapID, lineID, cnt, dataEx) return #// B1 08 快速一键过关副本 #tagCMFBQuickPass -- Gitblit v1.8.0