From 95fb3b3d2ebabcc183b50722f7e7c0d65c115952 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 24 二月 2021 14:13:56 +0800
Subject: [PATCH] 4949 【主干】【BT2】节日祝福-在boss之家击杀个人boss完成了击杀boss之家boss游历值
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py | 85 ++++++++++++++++++++++++++++++++++--------
1 files changed, 68 insertions(+), 17 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py
index b73e56f..95e4582 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py
@@ -59,6 +59,7 @@
actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_BossReborn, {})
bossRebornID = actBossRebornInfo.get(ShareDefine.ActKey_ID, 0)
state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
+ cfgID = actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0)
playerBossRebornID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornID) # 玩家身上的活动ID
@@ -66,15 +67,21 @@
if bossRebornID == playerBossRebornID:
#GameWorld.DebugLog("BOSS复活活动ID不变,不处理!", curPlayer.GetPlayerID())
return
- templateID = actBossRebornInfo.get(ShareDefine.ActKey_TemplateID, 0)
+ actWorldLV = actBossRebornInfo.get(ShareDefine.ActKey_WorldLV, 0)
+ playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionWorldLV)
+
+ templateID = 0
+ if cfgID:
+ actBossIpyData = IpyGameDataPY.GetIpyGameData("ActBossReborn", cfgID)
+ templateID = 0 if not actBossIpyData else actBossIpyData.GetTemplateID()
playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornTemplateID)
GameWorld.DebugLog("BOSS复活重置! costRebateID=%s,playerCostRebateID=%s,state=%s,templateID=%s,playerTemplateID=%s"
% (bossRebornID, playerBossRebornID, state, templateID, playerTemplateID), playerID)
# 未领取的奖励邮件发放
- __SendBossRebornMail(curPlayer, playerTemplateID)
-
+ __SendBossRebornMail(curPlayer, playerTemplateID, playerWorldLV)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BRActionWorldLV, actWorldLV)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BossRebornID, bossRebornID)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BossRebornTemplateID, templateID)
for brid in ChConfig.BossRebornActIDList:
@@ -86,7 +93,7 @@
return True
-def __SendBossRebornMail(curPlayer, playerTemplateID):
+def __SendBossRebornMail(curPlayer, playerTemplateID, playerWorldLV):
# 未领取的奖励邮件发放
ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("BossReborn", {'TemplateID':playerTemplateID}, True)
if not ipyDataList:
@@ -101,7 +108,7 @@
canGotCnt = (curTimes - gotTimes) / singleTimes
if not canGotCnt:
continue
- itemDict = __GetAwardItem(curPlayer, ipyData, canGotCnt)
+ itemDict = __GetAwardItem(curPlayer, ipyData, playerWorldLV, canGotCnt)
GameWorld.AddDictValue(totalItemDict, itemDict)
#去掉复活点道具
@@ -120,7 +127,8 @@
state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
if not state:
return
- ipyData = IpyGameDataPY.GetIpyGameData('BossReborn', actionID)
+ playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornTemplateID)
+ ipyData = IpyGameDataPY.GetIpyGameData('BossReborn', playerTemplateID, actionID)
if not ipyData:
return
totalTimes = ipyData.GetTotalTimes()
@@ -146,9 +154,9 @@
gotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionGotTimes % actionID)
if curTimes - gotTimes < singleTimes:
return
-
+ playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionWorldLV)
#给奖励
- awardDict = __GetAwardItem(curPlayer, ipyData)
+ awardDict = __GetAwardItem(curPlayer, ipyData, playerWorldLV)
# 检查背包
needSpace = len(awardDict)
packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
@@ -161,14 +169,16 @@
#GameWorld.Log(' actionID=%s,curTimes=%s,gotTimes=%s,singleTimes=%s,newGotTimes=%s'%(actionID, curTimes, gotTimes,singleTimes, newGotTimes))
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BRActionGotTimes % actionID, newGotTimes)
for itemID, itemCnt in awardDict.items():
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 1, [IPY_GameWorld.rptItem])
+ ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem])
SyncBossRebornPlayerInfo(curPlayer, actionID)
return
-def __GetAwardItem(curPlayer, ipyData, times=1):
+def __GetAwardItem(curPlayer, ipyData, worldLV, times=1):
awardDict = {}
- for itemID, itemCnt, isbind in ipyData.GetAward():
+
+ awardList = GameWorld.GetDictValueByRangeKey(ipyData.GetReward(), worldLV, [])
+ for itemID, itemCnt, isbind in awardList:
if not itemID or not itemCnt:
continue
awardDict[itemID] = awardDict.get(itemID, 0) + itemCnt * times
@@ -206,19 +216,26 @@
def SyncBossRebornInfo(curPlayer):
actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_BossReborn, {})
state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
- if not state:
+ cfgID = actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0)
+ if not state or not cfgID:
return
- templateID = actBossRebornInfo.get(ShareDefine.ActKey_TemplateID, 0)
+ actBossIpyData = IpyGameDataPY.GetIpyGameData("ActBossReborn", cfgID)
+ if not actBossIpyData:
+ return
+ templateID = actBossIpyData.GetTemplateID()
if not templateID:
return
ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("BossReborn", {'TemplateID':templateID}, True)
if not ipyDataList:
return
+ worldLV = actBossRebornInfo.get(ShareDefine.ActKey_WorldLV, 0)
+ openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
actInfo = ChPyNetSendPack.tagMCBossRebornInfo()
actInfo.Clear()
- actInfo.StartDate = actBossRebornInfo.get(ShareDefine.ActKey_StartDate, "")
- actInfo.EndtDate = actBossRebornInfo.get(ShareDefine.ActKey_EndDate, "")
- actInfo.LimitLV = actBossRebornInfo.get(ShareDefine.ActKey_LVLimit, 0)
+ actInfo.StartDate = GameWorld.GetOperationActionDateStr(actBossIpyData.GetStartDate(), openServerDay)
+ actInfo.EndtDate = GameWorld.GetOperationActionDateStr(actBossIpyData.GetEndDate(), openServerDay)
+ actInfo.ResetType = actBossIpyData.GetResetType()
+ actInfo.LimitLV = actBossIpyData.GetLVLimit()
actInfo.TaskInfo = []
for ipyData in ipyDataList:
taskInfo = ChPyNetSendPack.tagMCBossRebornTaskInfo()
@@ -226,7 +243,8 @@
taskInfo.TotalTimes = ipyData.GetTotalTimes()
taskInfo.SingleTimes = ipyData.GetSingleTimes()
taskInfo.AwardItem = []
- for itemID, itemCnt, isBind in ipyData.GetReward():
+ awardList = GameWorld.GetDictValueByRangeKey(ipyData.GetReward(), worldLV, [])
+ for itemID, itemCnt, isBind in awardList:
awardItem = ChPyNetSendPack.tagMCBossRebornAwardItem()
awardItem.ItemID = itemID
awardItem.ItemCount = itemCnt
@@ -237,3 +255,36 @@
actInfo.TaskCnt = len(actInfo.TaskInfo)
NetPackCommon.SendFakePack(curPlayer, actInfo)
return
+
+def DoBossRebornActionBossOnKilledLogic(npcRankHurtMgr):
+ ## boss复活活动boss被击杀
+ # @param rankHurtList: NPCHurtMgr.PlayerRankHurtList
+
+ npcID = npcRankHurtMgr.npcID
+
+ GameWorld.Log("Boss复活活动boss被击杀: npcID=%s" % (npcID))
+ rankItemDict = IpyGameDataPY.GetFuncEvalCfg("BossRebornServerBoss", 2) # {名次:[[物品ID,个数,是否拍品], ...], ...}
+
+ for index in xrange(npcRankHurtMgr.GetHurtCount()):
+ rank = index + 1
+ hurtObj = npcRankHurtMgr.GetHurtAt(index)
+ if hurtObj.GetValueType() != ChConfig.Def_NPCHurtTypePlayer:
+ continue
+ playerID = hurtObj.GetValueID()
+ rankItemList = GameWorld.GetOrderValueByDict(rankItemDict, rank)
+ GameWorld.Log(" 排行玩家奖励: rank=%s,rankItemList=%s" % (rank, rankItemList), playerID)
+ if not rankItemList:
+ continue
+ paramList = [npcID, rank]
+ PlayerControl.SendMailByKey("BossRebornActionBossRank", [playerID], rankItemList, paramList)
+
+ entireMailItemList = IpyGameDataPY.GetFuncEvalCfg("BossRebornServerBoss", 1) # [[物品ID,个数,是否拍品], ...]
+ if entireMailItemList:
+ getDays, limitLV, limitLVType = IpyGameDataPY.GetFuncEvalCfg("BossRebornServerBoss", 4)
+ paramList = [npcID]
+ PlayerControl.SendEntireMail("BossRebornActionBossAll", getDays, limitLV, limitLVType, entireMailItemList, paramList)
+
+ return
+
+
+
--
Gitblit v1.8.0