From 378c281fc81dd9a136421503cc8cb267c0eaf995 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期日, 28 九月 2025 16:13:24 +0800 Subject: [PATCH] 16 卡牌服务端(删除副本鼓舞、副本buff;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py | 232 +++------------------------------------------------------ 1 files changed, 14 insertions(+), 218 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 32d0998..1cf4a1e 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 @@ -33,7 +33,6 @@ import PlayerSuccess import GameFuncComm import PyGameData -import PlayerVip import GameObj import FBLogic import ChConfig @@ -167,20 +166,16 @@ def IsFBPass(curPlayer, mapID, lineID): ## 副本线路是否已过关 passLineID = 0 - if mapID == ChConfig.Def_FBMapID_RealmTower: - passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RealmTowerFloor) - elif mapID == ChConfig.Def_FBMapID_SkyTower: - passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_SkyTowerFloor) - elif mapID == ChConfig.Def_FBMapID_TrialTower: - passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV) + if mapID == ChConfig.Def_FBMapID_Main: + return PlayerControl.IsMainLevelPass(curPlayer, lineID) + + ipyData = IpyGameDataPY.GetIpyGameDataNotLog('FBGeneralTrain', mapID, lineID) + if ipyData: + passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBPassLineID % mapID) else: - ipyData = IpyGameDataPY.GetIpyGameDataNotLog('FBGeneralTrain', mapID, lineID) - if ipyData: - passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBPassLineID % mapID) - else: - grade = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [mapID]) - if grade: - return True + grade = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [mapID]) + if grade: + return True if passLineID >= lineID: return True @@ -248,13 +243,6 @@ if not maxTimes: return True, "" - # 首次进入免费 - if mapID in [ChConfig.Def_FBMapID_PersonalBoss]: - curfbStar = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [mapID]) - if not curfbStar: - GameWorld.DebugLog("OnEnterFBEvent 首次进入该副本线路免费!mapID=%s,lineID=%s" % (mapID, lineID)) - return True, "" - #playerID = curPlayer.GetPlayerID() enterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntDay % mapID) maxCnt = GetEnterFBMaxCnt(curPlayer, mapID) @@ -406,17 +394,6 @@ 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): @@ -1606,7 +1583,7 @@ mwAddCnt = 0#wmpIpyData.GetEffectValue() if wmpIpyData else 0 extraTimesVIPPriID = fbIpyData.GetExtraTimesVIPPriID() - extraCnt = PlayerVip.GetPrivilegeValue(curPlayer, extraTimesVIPPriID) + extraCnt = 0 buyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_BuyFbCntDay % mapID) recoverFbCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RecoverFbCnt % mapID) itemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ItemAddFbCnt % mapID) @@ -1630,7 +1607,7 @@ mwAddCnt = 0#wmpIpyData.GetEffectValue() if wmpIpyData else 0 maxTimes += mwAddCnt #法宝增加的次数加到基础次数里 extraTimesVIPPriID = fbIpyData.GetExtraTimesVIPPriID() - extraCnt = PlayerVip.GetPrivilegeValue(curPlayer, extraTimesVIPPriID) + extraCnt = 0 buyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_BuyFbCntDay % mapID) recoverFbCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RecoverFbCnt % mapID) itemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ItemAddFbCnt % mapID) @@ -1647,7 +1624,7 @@ #未买次数 buyTimesVIPPriID = fbIpyData.GetBuyTimesVIPPriID() - canBuyCnt = PlayerVip.GetPrivilegeValue(curPlayer, buyTimesVIPPriID) + canBuyCnt = 0 noBuyCnt = max(0, canBuyCnt - buyCnt) return [[rCommonCnt, rRegainFbCnt, rExtraCnt, rBuyCnt, rItemAddCnt, noBuyCnt], [maxTimes, maxRegainFbCnt, extraCnt, canBuyCnt, 10000, canBuyCnt]] @@ -1879,13 +1856,6 @@ ipyData = ipyDataMgr.GetFBFuncByIndex(i) mapID = ipyData.GetDataMapID() - # 有真实助战次数奖励限制的 - if ipyData.GetDayHelpCountMax(): - helpCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FBRealHelpCount % mapID) - if helpCount: - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FBRealHelpCount % mapID, 0) - GameWorld.DebugLog("重置日助战奖励次数限制!mapID=%s" % mapID) - dayTimes = ipyData.GetDayTimes() # 没有日次数限制的不处理 if not dayTimes and not ipyData.GetBuyTimesVIPPriID() and not ipyData.GetExtraTimesVIPPriID() and not ipyData.GetExtraTimesMWPriID(): @@ -1929,14 +1899,7 @@ GameWorld.DebugLog(" 重置:mapID=%s,dayTimes=%s,buyCnt=%s,recoverCnt=%s,itemAddCnt=%s,regainFBCnt=%s,maxCnt=%s,enterCnt=%s" % (mapID, dayTimes, buyCnt, recoverCnt, itemAddCnt, regainFBCnt, maxCnt, enterCnt)) - if mapID == ChConfig.Def_FBMapID_ZhuXianBoss: - if GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_ZhuXianBoss): - curCnt = min(maxCnt - enterCnt + IpyGameDataPY.GetFuncCfg('ZhuXianBossCntCfg'), IpyGameDataPY.GetFuncCfg('ZhuXianBossCntCfg', 2)) - if curCnt > dayTimes: - PlayerControl.NomalDictSetProperty(curPlayer, itemAddCntKey, curCnt - dayTimes) - elif curCnt < dayTimes: - PlayerControl.NomalDictSetProperty(curPlayer, enterCntKey, dayTimes - curCnt) - + mapIDInfo.append(mapID) if mapIDInfo: @@ -1995,9 +1958,6 @@ if not ipyData: return canBuyCnt = 0 - buyTimesVIPPriID = ipyData.GetBuyTimesVIPPriID() - if buyTimesVIPPriID: - canBuyCnt += PlayerVip.GetPrivilegeValue(curPlayer, buyTimesVIPPriID) canBuyCnt += PlayerGoldInvest.GetAddFBBuyCnt(curPlayer, mapID) GameWorld.DebugLog("购买副本进入次数: mapID=%s,canBuyCnt=%s" % (mapID, canBuyCnt)) if canBuyCnt <= 0: @@ -2011,11 +1971,9 @@ if mapID == ChConfig.Def_FBMapID_SealDemon and maxDayTimes and maxCnt - enterCnt >= maxDayTimes: GameWorld.DebugLog('当前次数已满,无需购买。。') return - if mapID == ChConfig.Def_FBMapID_ZhuXianBoss and maxCnt - enterCnt >= IpyGameDataPY.GetFuncCfg('ZhuXianBossCntCfg', 2): - return if hasBuyCnt >= canBuyCnt: - GameWorld.DebugLog("购买次数已经用完mapID=%s,buyTimesVIPPriID=%s,hasBuyCnt=%s >= canBuyCnt=%s" % (mapID, buyTimesVIPPriID, hasBuyCnt, canBuyCnt)) + GameWorld.DebugLog("购买次数已经用完mapID=%s,hasBuyCnt=%s >= canBuyCnt=%s" % (mapID, hasBuyCnt, canBuyCnt)) return costGoldDict = IpyGameDataPY.GetFuncEvalCfg('BuyFBCntCost', 1, {}) costGold = costGoldDict.get(str(mapID), '0') @@ -2046,9 +2004,6 @@ paramList = [curPlayer.GetPlayerName()] PlayerControl.SendMailByKey("BuyLoveFBCntCoupleMail", [coupleID], addItemList, paramList) return - -def DoFuncOpen_RunDaily(curPlayer): return EventReport.WriteFuncCMEAcceptable(curPlayer, ShareDefine.GameFuncID_RunDaily) -def DoFuncOpen_RunFamily(curPlayer): return EventReport.WriteFuncCMEAcceptable(curPlayer, ShareDefine.GameFuncID_RunFamily) #--------------------------------------------------------------------- ## 副本开启提示(几分钟) @@ -2153,157 +2108,6 @@ return True return False - - -## 副本行为 - 鼓舞buff -# @param curPlayer 玩家 -# @param key 副本玩家字典key -# @param encourageType 金钱类型 -# @param tick 当前时间 -# @param isMaxlv 是否直接满级 -# @return None -def FbEncourageBuff(curPlayer, key, encourageType, tick, ownerID=0): - #GameWorld.Log("FbEncourageBuff moneyType=%s" % (moneyType)) - curMapID = curPlayer.GetMapID() - curMapID = GetRecordMapID(curMapID) - ipyData = IpyGameDataPY.GetIpyGameData('FbEncourage', curMapID, encourageType) - if not ipyData: - return - maxCnt = ipyData.GetInspireMaxLV() - gameFB = GameWorld.GetGameFB() - ownerID = ownerID or curPlayer.GetID() - encourageLV = gameFB.GetPlayerGameFBDictByKey(ownerID, key) - encourageCntKey = 'FbEncourageCnt_%s' % encourageType - encourageCnt = gameFB.GetPlayerGameFBDictByKey(ownerID, encourageCntKey) - maxLV = IpyGameDataPY.GetFuncEvalCfg('FBEncourageBuff', 2, {}).get(curMapID, 0) - if encourageLV >= maxLV: - PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_93643") - return - if encourageCnt >= maxCnt: - if encourageType == IPY_GameWorld.TYPE_Price_Silver_Money: - PlayerControl.NotifyCode(curPlayer, "Xjmj_CopperInspireFull") - else: - PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_93643") - return - - encourageCost = eval(ipyData.GetMoneyCount()) - if curMapID == ChConfig.Def_FBMapID_SealDemon: - isDouble = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FMTDouble) - if isDouble: #封魔坛双倍挑战则鼓舞双倍花费 - encourageCost *= 2 - - costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, encourageType, encourageCost) - if not costMoneyList: - return - - # 扣除鼓舞消耗 - infoDict = {"MapID":curMapID} - for moneyType, moneyCnt in costMoneyList: - if not PlayerControl.PayMoney(curPlayer, moneyType, moneyCnt, ChConfig.Def_Cost_FBEncourage, infoDict): - return - buffTypeID = IpyGameDataPY.GetFuncEvalCfg('FBEncourageBuff', 1, {}).get(curMapID, ChConfig.Def_SkillID_FBEncourageBuff) - skillBuffID = buffTypeID + encourageLV - skillBuff = GameWorld.GetGameData().GetSkillBySkillID(skillBuffID) - if not skillBuff: - GameWorld.Log("FbEncourageBuff 找不到技能%s" % skillBuffID) - return - - buffType = SkillCommon.GetBuffType(skillBuff) - - gameFB.SetPlayerGameFBDict(ownerID, key, encourageLV+1) - gameFB.SetPlayerGameFBDict(ownerID, encourageCntKey, encourageCnt+1) - #GameWorld.Log("FbEncourageBuff encourage nextLV=%s success" % encourageLV) - addHurtNum = IpyGameDataPY.GetFuncEvalCfg('FBEncourageBuff', 3, {}).get(curMapID, 0) - if curMapID == ChConfig.Def_FBMapID_AllFamilyBoss: - #给副本里所有盟成员提示 - playerManager = GameWorld.GetMapCopyPlayerManager() - for index in xrange(playerManager.GetPlayerCount()): - player = playerManager.GetPlayerByIndex(index) - if not player: - continue - if player.GetFamilyID() != ownerID: - continue - BuffSkill.DoAddBuff(player, buffType, skillBuff, tick) - PlayerControl.NotifyCode(player, "AllianceBossText2", [curPlayer.GetName(), encourageLV+1]) - SendFBEncourageInfo(player, encourageLV+1, ownerID) - if player.GetID() == curPlayer.GetID(): - PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FBEncourage, 1, [curMapID]) - - else: - BuffSkill.DoAddBuff(curPlayer, buffType, skillBuff, tick) - PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_628920", [(encourageLV+1)*addHurtNum]) - SendFBEncourageInfo(curPlayer, encourageLV+1, ownerID) - #成就 - PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FBEncourage, 1, [curMapID]) - return True - -## 添加副本鼓舞buff,一般用于玩家掉线后,在规定时间内重新上线回到副本时重新上buff -# @param curPlayer 玩家 -# @param key 副本玩家字典key -# @param tick 当前时间 -# @return None -def AddFbEncourageBuff(curPlayer, key, tick, ownerID=0): - curPlayerID = curPlayer.GetID() - GameWorld.Log("AddFbEncourageBuff() curPlayerID=%s" % curPlayerID) - ownerID = ownerID or curPlayer.GetID() - gameFB = GameWorld.GetGameFB() - encourageLV = gameFB.GetPlayerGameFBDictByKey(ownerID, key) - if not encourageLV: - return - mapID = GameWorld.GetMap().GetMapID() - mapID = GetRecordMapID(mapID) - buffTypeID = IpyGameDataPY.GetFuncEvalCfg('FBEncourageBuff', 1, {}).get(mapID, ChConfig.Def_SkillID_FBEncourageBuff) - skillBuffID = buffTypeID + encourageLV -1 - skillBuff = GameWorld.GetGameData().GetSkillBySkillID(skillBuffID) - if not skillBuff: - GameWorld.Log("FbEncourageBuff 找不到技能%s" % skillBuffID) - return - - buffType = SkillCommon.GetBuffType(skillBuff) - BuffSkill.DoAddBuff(curPlayer, buffType, skillBuff, tick) - - SendFBEncourageInfo(curPlayer, encourageLV, ownerID) - return - -## 清除鼓舞buff -# @param curPlayer 玩家 -# @param tick 当前时间 -# @return True - 清除成功 ; False - 无该buff -def ClearEncourageBuff(curPlayer, tick): - for buffTypeID in list(set(IpyGameDataPY.GetFuncEvalCfg('FBEncourageBuff', 1, {}).values())): - if BuffSkill.DelBuffBySkillID(curPlayer, buffTypeID, tick): - playerControl = PlayerControl.PlayerControl(curPlayer) - playerControl.RefreshPlayerAttrByBuff() - GameWorld.Log("ClearEncourageBuff() True") - return True - GameWorld.Log("ClearEncourageBuff() False") - return False - -## 发送副本鼓舞信息 -# @param curPlayer 玩家 -# @return None -def SendFBEncourageInfo(curPlayer, lv, ownerID=0): - #//A3 0A 副本鼓舞信息通知 #tagMCFBEncourageInfo - curMapID = curPlayer.GetMapID() - curMapID = GetRecordMapID(curMapID) - ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('FbEncourage', {'DataMapID':curMapID}, True) - if not ipyDataList: - return - encourageInfo = ChPyNetSendPack.tagMCFBEncourageInfo() - encourageInfo.Clear() - encourageInfo.InfoList = [] - encourageCntKey = 'FbEncourageCnt_%s' - gameFB = GameWorld.GetGameFB() - ownerID = ownerID or curPlayer.GetID() - for ipyData in ipyDataList: - inspireType = ipyData.GetInspireType() - packData = ChPyNetSendPack.tagMCFBEncourageCnt() - packData.MoneyType = inspireType - packData.EncourageCnt = gameFB.GetPlayerGameFBDictByKey(ownerID, encourageCntKey % inspireType) - encourageInfo.InfoList.append(packData) - encourageInfo.Cnt = len(encourageInfo.InfoList) - NetPackCommon.SendFakePack(curPlayer, encourageInfo) - return ## 获取玩家所在副本区域福利倍值 # @param curPlayer 玩家 @@ -2651,14 +2455,6 @@ totalZhenQi = gameWorld.GetGameWorldDictByKey(ChConfig.Map_Player_AreaReward_GetZhenQiTotal%playerID) totalZhenQi += addZhenQi gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetZhenQiTotal%playerID, totalZhenQi) - - if "TechPoint" in rewardFormatDict: - addTechPoint = eval(rewardFormatDict["TechPoint"]) - PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, addTechPoint, True, ShareDefine.Def_AddFAVReason_FamilyInvade, True) - - techPoint = gameWorld.GetGameWorldDictByKey(ChConfig.Map_Player_AreaReward_GetTechPoint%playerID) - techPoint += addTechPoint - gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetTechPoint%playerID, techPoint) #GameWorld.DebugLog(" 战场福利 倍区=%s,reLV=%s,reExp=%s,addExp=%s,addZQ=%s,totalExp=%s,totalZQ=%s" # % (multiple, reLV, reExp, addExp, addZhenQi, totalExp, totalZhenQi), playerID) -- Gitblit v1.8.0