From fe42c2433fea4cfd894b38fec62f24fa4a5d047a Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期二, 12 三月 2019 13:50:18 +0800 Subject: [PATCH] 6291 【后端】【2.0】限时仙盟boss(鼓舞修改) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py | 97 +++++++++++++++++++++++++++++------------------- 1 files changed, 58 insertions(+), 39 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py index 33fe2a7..45f3a77 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py @@ -39,6 +39,7 @@ FBPlayerDict_Rank = "FBPlayerDict_Rank" # 玩家排名 FBDict_BossTotalHP = 'FBDict_BossTotalHP' #BOSS血量 FBDict_LastHurtTick = 'FBDict_LastHurtTick' #上次伤害时间 +FBDict_IsEncourage = 'FBDict_IsEncourage' #是否鼓舞过 ( Def_BossTime, #BOSS时间 @@ -142,7 +143,8 @@ playerCnt = GameWorld.GetGameWorld().GetMapCopyPlayerManager().GetPlayerCount() GameWorld.DebugLog("DoEnterFB...playerCnt=%s,lineID=%s" % (playerCnt, lineID), playerID) - + familyID = curPlayer.GetFamilyID() + fbStep = GameWorld.GetGameFB().GetFBStep() hadDelTicket = FBCommon.GetHadDelTicket(curPlayer) if not hadDelTicket: FBCommon.SetHadDelTicket(curPlayer) @@ -151,26 +153,29 @@ PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_FamilyBoss1, 1) else: PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_FamilyBoss2, 1) - if GameWorld.GetGameFB().GetFBStep() == FB_Step_Open: + if fbStep == FB_Step_Open: FBCommon.SetFBStep(FB_Step_Fighting, tick) - familyID = curPlayer.GetFamilyID() - if familyID not in PyGameData.g_allfamilyBossDict: - PyGameData.g_allfamilyBossDict[familyID] = [curPlayer.GetFamilyName(), 0, [playerID]] - elif playerID not in PyGameData.g_allfamilyBossDict[familyID][2]: - PyGameData.g_allfamilyBossDict[familyID][2].append(playerID) EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_AllFamilyBoss, 0, ChConfig.CME_Log_Start) + if fbStep >= FB_Step_Over: + PlayerControl.PlayerLeaveFB(curPlayer) + return + + if familyID not in PyGameData.g_allfamilyBossDict: + PyGameData.g_allfamilyBossDict[familyID] = [curPlayer.GetFamilyName(), 0, [playerID]] + elif playerID not in PyGameData.g_allfamilyBossDict[familyID][2]: + PyGameData.g_allfamilyBossDict[familyID][2].append(playerID) UpdateHPReduceSpeed(tick) gameFB = GameWorld.GetGameFB() # 上鼓舞buff - encourageLV = gameFB.GetPlayerGameFBDictByKey(playerID, FBPlayerDict_EncourageLV) + encourageLV = gameFB.GetPlayerGameFBDictByKey(familyID, FBPlayerDict_EncourageLV) if encourageLV > 0: - FBCommon.AddFbEncourageBuff(curPlayer, FBPlayerDict_EncourageLV, tick) + FBCommon.AddFbEncourageBuff(curPlayer, FBPlayerDict_EncourageLV, tick, familyID) else: - FBCommon.SendFBEncourageInfo(curPlayer, encourageLV) + FBCommon.SendFBEncourageInfo(curPlayer, encourageLV, familyID) - #DoFBHelp(curPlayer, tick) + DoFBHelp(curPlayer, tick) return @@ -217,19 +222,20 @@ # @return 返回值无意义 def DoPlayerLeaveFB(curPlayer, tick): # FBCommon.SetHadDelTicket(curPlayer, 0) -# #主动退出的去掉排行榜信息 -# lineID = GameWorld.GetGameWorld().GetPropertyID() - 1 -# playerHurtDict = PyGameData.g_AllFamilyBossPlayerHurtDict.get(lineID, {}) -# playerHurtDict.pop(curPlayer.GetPlayerID(), 0) -# PyGameData.g_AllFamilyBossPlayerHurtDict[lineID] = playerHurtDict -# if not playerHurtDict: #榜上没人,停止掉血 -# StopReduceHP(lineID, tick) + #主动退出的去掉排行榜信息 + familyHurtInfo = PyGameData.g_allfamilyBossDict.get(curPlayer.GetFamilyID(), []) + if familyHurtInfo: + playerID = curPlayer.GetPlayerID() + if playerID in familyHurtInfo[2]: + familyHurtInfo[2].remove(playerID) + FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 0) return ##玩家切换地图 def DoPlayerChangeMapLogic(curPlayer): #FBCommon.SetHadDelTicket(curPlayer, 0) + return @@ -271,12 +277,13 @@ totalHP = __GetBossTotalHP() hpReduceSpeed = curSpeed * 10000 / totalHP if totalHP else 0 remainHPPer = min(1000000, remainHP * 1000000 / totalHP) if totalHP else 0 - - fbHelpDict = {"hurtInfo":hurtInfo, 'hpReduceSpeed':hpReduceSpeed, + playerID = curPlayer.GetPlayerID() + IsEncourage = GameWorld.GetGameFB().GetPlayerGameFBDictByKey(playerID, FBDict_IsEncourage) + fbHelpDict = {"hurtInfo":hurtInfo, 'hpReduceSpeed':hpReduceSpeed,'IsEncourage':IsEncourage, 'remainHPPer':remainHPPer, 'isReduceing':isReduceing, 'myHurt':myHurt % ChConfig.Def_PerPointValue, 'myHurtEx':myHurt / ChConfig.Def_PerPointValue, 'myRank':myRank, 'myMenberCnt':myMenberCnt } - GameWorld.DebugLog("DoFBHelp: %s" % fbHelpDict, curPlayer.GetPlayerID()) + GameWorld.DebugLog("DoFBHelp: %s" % fbHelpDict, playerID) FBCommon.Notify_FBHelp(curPlayer, fbHelpDict) return @@ -289,7 +296,17 @@ # @return None def DoFBAction(curPlayer, actionType, actionInfo, tick): if actionType == 0: - FBCommon.FbEncourageBuff(curPlayer, FBPlayerDict_EncourageLV, actionInfo, tick) + playerID = curPlayer.GetID() + gameFB = GameWorld.GetGameFB() + if gameFB.GetPlayerGameFBDictByKey(playerID, FBDict_IsEncourage): + GameWorld.DebugLog('只能鼓舞一次!', playerID) + return + if FBCommon.FbEncourageBuff(curPlayer, FBPlayerDict_EncourageLV, actionInfo, tick, curPlayer.GetFamilyID()): + gameFB.SetPlayerGameFBDict(playerID, FBDict_IsEncourage, 1) + #给鼓舞奖励 + itemList = IpyGameDataPY.GetFuncEvalCfg('LeagueBOSSReward1') + giveItemList = [[itemID, itemCnt, 0] for itemID, itemCnt in itemList] + ItemControler.GivePlayerItemOrMail(curPlayer, giveItemList) return @@ -389,27 +406,29 @@ memberCnt = len(memberIDList) familyAuctionItemList, menberItemList = __GetFamilyBossAward(rank, worldLV) GameWorld.Log('rank=%s,worldLV=%s,familyAuctionItemList=%s,menberItemList=%s,memberCnt=%s'%(rank, worldLV,familyAuctionItemList,menberItemList, memberCnt), familyID) + + overDict = {FBCommon.Over_rank:rank, 'memberCnt':len(memberIDList)} if memberCnt >= needMemberCnt and familyAuctionItemList:#仙盟拍品 familyAuctionItemDict[familyID] = [memberIDList, familyAuctionItemList] + overDict['AuctionItem'] = FBCommon.GetJsonItemList(familyAuctionItemList) if menberItemList: #成员奖励 - overDict = {FBCommon.Over_rank:rank, - FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(menberItemList), - 'AuctionItem':FBCommon.GetJsonItemList(familyAuctionItemList), - 'memberCnt':len(memberIDList)} - mailPlayerIDList = [] - for memberID in memberIDList: - member = playerManager.FindPlayerByID(memberID) - if member: + overDict[FBCommon.Over_itemInfo] = FBCommon.GetJsonItemList(menberItemList) + + mailPlayerIDList = [] + for memberID in memberIDList: + member = playerManager.FindPlayerByID(memberID) + if member: + if menberItemList: ItemControler.GivePlayerItemOrMail(member, menberItemList, 'LeagueBOSS1', event) - member.Sync_TimeTick(IPY_GameWorld.tttLeaveMap, 0, leaveTick, True) - FBCommon.NotifyFBOver(member, ChConfig.Def_FBMapID_AllFamilyBoss, lineID, isPass, overDict) - else: - mailPlayerIDList.append(memberID) - if mailPlayerIDList: - batchPlayerIDList.append(mailPlayerIDList) - batchAddItemList.append(menberItemList) - batchParamList.append([]) - batchDetailList.append({'rank':rank}) + member.Sync_TimeTick(IPY_GameWorld.tttLeaveMap, 0, leaveTick, True) + FBCommon.NotifyFBOver(member, ChConfig.Def_FBMapID_AllFamilyBoss, lineID, isPass, overDict) + elif menberItemList: + mailPlayerIDList.append(memberID) + if mailPlayerIDList: + batchPlayerIDList.append(mailPlayerIDList) + batchAddItemList.append(menberItemList) + batchParamList.append([]) + batchDetailList.append({'rank':rank}) if batchPlayerIDList: PlayerControl.SendMailBatch("LeagueBOSS2", batchPlayerIDList, batchAddItemList, batchParamList, batchDetail=batchDetailList) -- Gitblit v1.8.0