From ee85c07264f0dbedb35c114e71b102dc2fc116f1 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 25 一月 2021 18:27:45 +0800
Subject: [PATCH] 8710 【开发】【主干】【BT2】根据世界等级配置奖励(七日巡礼周狂欢支持按世界等级配置);
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 1 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py | 56 ++++++++++++++++++++++++++++++++++++++++++--------------
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 1 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 1 +
4 files changed, 45 insertions(+), 14 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index de9c5de..2e4ece3 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -244,6 +244,7 @@
OperationActionName_CostRebate, OperationActionName_FlashGiftbag,
OperationActionName_SpringSale, OperationActionName_LuckyTreasure,
OperationActionName_DailyGiftbag, OperationActionName_GrowupBuy,
+ OperationActionName_WeekParty,
]
#跨服运营活动表名定义
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 9fe2b72..c9d865d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3798,6 +3798,7 @@
#周狂欢
Def_PDict_WeekPartyActID = "WeekPartyActID" # 玩家身上的活动ID,唯一标识,取活动开始日期time值
Def_PDict_WeekPartyID = "WeekPartyID" # 玩家身上的活动ID,配置ID,用于补发上次活动用
+Def_PDict_WeekPartyWorldLV = "WeekPartyWorldLV" # 玩家身上的活动世界等级
Def_PDict_WeekPartyCurTimes = "WeekPartyCurTimes_%s_%s" #当前完成次数 参数(第X天,模板ID)
Def_PDict_WeekPartyGotTimes = "WeekPartyGotTimes_%s_%s" #当前已领次数 参数(第X天,模板ID)
Def_PDict_WeekPartyAwardRecord = "WeekPartyAwardRecord_%s" #积分领奖记录 参数(第X天)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py
index cdb60de..5d56d19 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py
@@ -67,6 +67,7 @@
cfgID = actWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyActID, 0, ChConfig.Def_PDictType_WeekParty) # 玩家身上的活动ID
playerWeekPartyID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyID, 0, ChConfig.Def_PDictType_WeekParty) # 玩家身上的活动配置ID
+ playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyWorldLV, 0, ChConfig.Def_PDictType_WeekParty) # 玩家身上的活动世界等级
# 活动ID 相同的话不处理
if actID == playerActID:
GameWorld.DebugLog("周狂欢活动ID不变,不处理!playerActID=%s" % playerActID, curPlayer.GetPlayerID())
@@ -75,14 +76,16 @@
return
# 未领取的奖励邮件发放
if playerWeekPartyID:
- __SendWeekPartyMail(curPlayer, playerWeekPartyID)
+ __SendWeekPartyMail(curPlayer, playerWeekPartyID, playerWorldLV)
GameWorld.DebugLog('周狂欢活动重置!')
curPlayer.ClearNomalDict(ChConfig.Def_PDictType_WeekParty)
- GameWorld.DebugLog("周狂欢变更! state=%s,actID=%s,cfgID=%s,playerWeekPartyID=%s" % (state, actID, cfgID, playerWeekPartyID), playerID)
+ worldLV = actWeekPartyInfo.get(ShareDefine.ActKey_WorldLV, 0)
+ GameWorld.DebugLog("周狂欢变更! state=%s,actID=%s,cfgID=%s,playerWeekPartyID=%s,worldLV=%s" % (state, actID, cfgID, playerWeekPartyID, worldLV), playerID)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyActID, actID, ChConfig.Def_PDictType_WeekParty)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyID, cfgID, ChConfig.Def_PDictType_WeekParty)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyWorldLV, worldLV, ChConfig.Def_PDictType_WeekParty)
if state:
CheckWeekPartyActionCnt(curPlayer, False)
SyncWeekPartyInfo(curPlayer)
@@ -90,8 +93,7 @@
return True
-
-def __SendWeekPartyMail(curPlayer, cfgID):
+def __SendWeekPartyMail(curPlayer, cfgID, playerWorldLV):
# 未领取的奖励邮件发放
actBossIpyData = IpyGameDataPY.GetIpyGameData("ActWeekParty", cfgID)
if not actBossIpyData:
@@ -112,10 +114,11 @@
canGotCnt = (curTimes - gotTimes) / singleTimes
if not canGotCnt:
continue
- itemDict = __GetAwardItem(curPlayer, ipyData, canGotCnt)
+ itemDict = __GetAwardItem(curPlayer, ipyData, playerWorldLV, canGotCnt)
GameWorld.AddDictValue(totalItemDict, itemDict)
#积分奖励
- for day, awardDict in actBossIpyData.GetPointAward().items():
+ pointAwardInfo = __GetPointAwardInfo(actBossIpyData.GetPointAward(), playerWorldLV)
+ for day, awardDict in pointAwardInfo.items():
pointList = awardDict.keys()
pointList.sort()
for i, point in enumerate(pointList):
@@ -135,6 +138,8 @@
PlayerControl.SendMailByKey('SecondWeekReward', [curPlayer.GetID()], totalItemList)
return
+def __GetPointAwardInfo(cfgPointAwardInfo, worldLV):
+ return GameWorld.GetDictValueByRangeKey(cfgPointAwardInfo, worldLV, {})
def AddWeekPartyActionCnt(curPlayer, actionID, addCnt=1, isAdd=True, isCompatible=False, isSync=True):
'''增加周狂欢相关活动完成次数'''
@@ -238,6 +243,22 @@
def GetWeekPartyActionAward(curPlayer, day, templateID):
'''领取周狂欢活动奖励'''
templateID = GameWorld.ToIntDef(templateID, 0)
+ actWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WeekParty, {})
+ state = actWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
+ cfgID = actWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
+ if not state or not cfgID:
+ return
+ actBossIpyData = IpyGameDataPY.GetIpyGameData("ActWeekParty", cfgID)
+ if not actBossIpyData:
+ return
+ templateIDList = actBossIpyData.GetTemplateID()
+ if not templateIDList:
+ return
+ if day >= len(templateIDList):
+ return
+ dayTempIDList = templateIDList[day]
+ if templateID not in dayTempIDList:
+ return
ipyData = IpyGameDataPY.GetIpyGameData('WeekParty', templateID)
if not ipyData:
return
@@ -248,7 +269,7 @@
return
#给奖励
- awardDict = __GetAwardItem(curPlayer, ipyData)
+ awardDict = __GetAwardItem(curPlayer, ipyData, actWeekPartyInfo.get(ShareDefine.ActKey_WorldLV, 0))
# 检查背包
needSpace = len(awardDict)
packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
@@ -280,7 +301,8 @@
curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyPoint % day, 0, ChConfig.Def_PDictType_WeekParty)
if curPoint < getPoint:
return
- pointAwardDict = actBossIpyData.GetPointAward().get(day, {})
+ pointAwardInfo = __GetPointAwardInfo(actBossIpyData.GetPointAward(), actWeekPartyInfo.get(ShareDefine.ActKey_WorldLV, 0))
+ pointAwardDict = pointAwardInfo.get(day, {})
pointList = pointAwardDict.keys()
pointList.sort()
if getPoint not in pointList:
@@ -304,9 +326,9 @@
return
-def __GetAwardItem(curPlayer, ipyData, times=1):
+def __GetAwardItem(curPlayer, ipyData, worldLV, times=1):
awardDict = {}
- awardItemList = __GetAwardItemListByJob(curPlayer, ipyData)
+ awardItemList = __GetAwardItemListByJob(curPlayer, ipyData.GetReward(), worldLV)
for itemID, itemCnt, isbind in awardItemList:
if not itemID or not itemCnt:
continue
@@ -314,10 +336,15 @@
return awardDict
-def __GetAwardItemListByJob(curPlayer, ipyData):
+def __GetAwardItemListByJob(curPlayer, rewardItemInfo, worldLV):
## 根据职业获取对应奖励
- rewardItemInfo = ipyData.GetReward()
+ if not rewardItemInfo:
+ return []
if isinstance(rewardItemInfo, dict):
+ keyList = rewardItemInfo.keys()
+ # 配世界等级范围的
+ if isinstance(keyList[0], tuple) and len(keyList[0]) == 2:
+ return __GetAwardItemListByJob(curPlayer, GameWorld.GetDictValueByRangeKey(rewardItemInfo, worldLV), worldLV)
return rewardItemInfo.get(curPlayer.GetJob(), [])
return rewardItemInfo
@@ -379,7 +406,8 @@
templateIDList = actBossIpyData.GetTemplateID()
if not templateIDList:
return
- pointAwardDict = actBossIpyData.GetPointAward()
+ worldLV = actWeekPartyInfo.get(ShareDefine.ActKey_WorldLV, 0)
+ pointAwardDict = __GetPointAwardInfo(actBossIpyData.GetPointAward(), worldLV)
openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
actInfo = ChPyNetSendPack.tagMCWeekPartyInfo()
actInfo.Clear()
@@ -423,7 +451,7 @@
tInfo.SingleTimes = ipyData.GetSingleTimes()
tInfo.Point = ipyData.GetPoint()
tInfo.ItemInfo = []
- awardItemList = __GetAwardItemListByJob(curPlayer, ipyData)
+ awardItemList = __GetAwardItemListByJob(curPlayer, ipyData.GetReward(), worldLV)
for itemID, itemCnt, isBind in awardItemList:
awardItem = ChPyNetSendPack.tagMCWeekPartyItem()
awardItem.ItemID = itemID
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index de9c5de..2e4ece3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -244,6 +244,7 @@
OperationActionName_CostRebate, OperationActionName_FlashGiftbag,
OperationActionName_SpringSale, OperationActionName_LuckyTreasure,
OperationActionName_DailyGiftbag, OperationActionName_GrowupBuy,
+ OperationActionName_WeekParty,
]
#跨服运营活动表名定义
--
Gitblit v1.8.0