From e1b60e8db5adcf635cc843a39abb991bdc6d9391 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期一, 11 二月 2019 13:50:47 +0800
Subject: [PATCH] 5819 【后端】【1.6】运营活动支持对应不同的职业和世界等级(boss复活)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 3 ++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py | 24 +++++++++++++++---------
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 3 ++-
3 files changed, 19 insertions(+), 11 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index e7bac34..28ca7e5 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -249,7 +249,8 @@
+ FeastOperationActionNameList
#需要记录开启活动时的世界等级的运营活动
NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell,
- OperationActionName_NewFairyCeremony, OperationActionName_FlashSale]
+ OperationActionName_NewFairyCeremony, OperationActionName_FlashSale,
+ OperationActionName_BossReborn, ]
#活动信息字典key定义
ActKey_ID = "ID" # 活动ID,唯一标识的ID,一般是活动开启的time值
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 12184dd..3fecf2e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py
@@ -67,6 +67,8 @@
if bossRebornID == playerBossRebornID:
#GameWorld.DebugLog("BOSS复活活动ID不变,不处理!", curPlayer.GetPlayerID())
return
+ actWorldLV = actBossRebornInfo.get(ShareDefine.ActKey_WorldLV, 0)
+ playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionWorldLV)
templateID = 0
if cfgID:
@@ -78,8 +80,8 @@
% (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:
@@ -91,7 +93,7 @@
return True
-def __SendBossRebornMail(curPlayer, playerTemplateID):
+def __SendBossRebornMail(curPlayer, playerTemplateID, playerWorldLV):
# 未领取的奖励邮件发放
ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("BossReborn", {'TemplateID':playerTemplateID}, True)
if not ipyDataList:
@@ -106,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)
#去掉复活点道具
@@ -152,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)
@@ -172,9 +174,11 @@
return
-def __GetAwardItem(curPlayer, ipyData, times=1):
+def __GetAwardItem(curPlayer, ipyData, worldLV, times=1):
awardDict = {}
- for itemID, itemCnt, isbind in ipyData.GetReward():
+
+ 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
@@ -224,6 +228,7 @@
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()
@@ -238,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
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index e7bac34..28ca7e5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -249,7 +249,8 @@
+ FeastOperationActionNameList
#需要记录开启活动时的世界等级的运营活动
NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell,
- OperationActionName_NewFairyCeremony, OperationActionName_FlashSale]
+ OperationActionName_NewFairyCeremony, OperationActionName_FlashSale,
+ OperationActionName_BossReborn, ]
#活动信息字典key定义
ActKey_ID = "ID" # 活动ID,唯一标识的ID,一般是活动开启的time值
--
Gitblit v1.8.0