From bd5edf598efb1ace2ab4ad66809aacd7df60347a Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期六, 17 八月 2019 16:14:12 +0800 Subject: [PATCH] 8237 【主干】【开发】七日巡礼支持不同职业不同奖励,充值支持多档配置 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py | 74 ++++++++++++++++++++---------------- 1 files changed, 41 insertions(+), 33 deletions(-) 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 be64102..fcddb73 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py @@ -184,40 +184,40 @@ return dayTidList = templateIDList[dayIndex] - findTid = 0 + findTidList = [] for tid in dayTidList: if tid / 100 == actionID: - findTid = tid - break - if not findTid: + findTidList.append(tid) + if not findTidList: return - ipyData = IpyGameDataPY.GetIpyGameData('WeekParty', findTid) - if not ipyData: - return - totalTimes = ipyData.GetTotalTimes() - curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyCurTimes % (dayIndex, findTid), 0, ChConfig.Def_PDictType_WeekParty) - if isAdd: - addCnt = addCnt if totalTimes == 0 else min(totalTimes - curTimes, addCnt) - if addCnt <= 0: - return - updTimes = curTimes + addCnt - else: - if not isCompatible and addCnt != totalTimes: - return - updTimes = min(addCnt, totalTimes) - realAddCnt = updTimes - curTimes - if realAddCnt <= 0: - return - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyCurTimes % (dayIndex, findTid), updTimes, ChConfig.Def_PDictType_WeekParty) - #加积分 - singleTimes = ipyData.GetSingleTimes() - addPoint = (curTimes % singleTimes + realAddCnt)/singleTimes* ipyData.GetPoint() - curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyPoint % dayIndex, 0, ChConfig.Def_PDictType_WeekParty) - updPoint = curPoint + addPoint - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyPoint % dayIndex, updPoint, ChConfig.Def_PDictType_WeekParty) - GameWorld.DebugLog(' 增加周狂欢相关活动完成次数 dayIndex=%s, findTid=%s, realAddCnt=%s,addPoint=%s' % (dayIndex, findTid, realAddCnt, addPoint)) - if isSync: - SyncWeekPartyPlayerInfo(curPlayer, dayIndex, findTid) + for findTid in findTidList: + ipyData = IpyGameDataPY.GetIpyGameData('WeekParty', findTid) + if not ipyData: + continue + totalTimes = ipyData.GetTotalTimes() + curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyCurTimes % (dayIndex, findTid), 0, ChConfig.Def_PDictType_WeekParty) + if isAdd: + curAddCnt = addCnt if totalTimes == 0 else min(totalTimes - curTimes, addCnt) + if curAddCnt <= 0: + continue + updTimes = curTimes + curAddCnt + else: + if not isCompatible and addCnt != totalTimes: + continue + updTimes = min(addCnt, totalTimes) + realAddCnt = updTimes - curTimes + if realAddCnt <= 0: + continue + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyCurTimes % (dayIndex, findTid), updTimes, ChConfig.Def_PDictType_WeekParty) + #加积分 + singleTimes = ipyData.GetSingleTimes() + addPoint = (curTimes % singleTimes + realAddCnt)/singleTimes* ipyData.GetPoint() + curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyPoint % dayIndex, 0, ChConfig.Def_PDictType_WeekParty) + updPoint = curPoint + addPoint + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyPoint % dayIndex, updPoint, ChConfig.Def_PDictType_WeekParty) + GameWorld.DebugLog(' 增加周狂欢相关活动完成次数 dayIndex=%s, findTid=%s, realAddCnt=%s,addPoint=%s' % (dayIndex, findTid, realAddCnt, addPoint)) + if isSync: + SyncWeekPartyPlayerInfo(curPlayer, dayIndex, findTid) return True @@ -329,13 +329,20 @@ def __GetAwardItem(curPlayer, ipyData, times=1): awardDict = {} - for itemID, itemCnt, isbind in ipyData.GetReward(): + awardItemList = __GetAwardItemListByJob(curPlayer, ipyData) + for itemID, itemCnt, isbind in awardItemList: if not itemID or not itemCnt: continue awardDict[itemID] = awardDict.get(itemID, 0) + itemCnt * times return awardDict +def __GetAwardItemListByJob(curPlayer, ipyData): + ## 根据职业获取对应奖励 + rewardItemInfo = ipyData.GetReward() + if isinstance(rewardItemInfo, dict): + return rewardItemInfo.get(curPlayer.GetJob(), []) + return rewardItemInfo def SyncWeekPartyPlayerInfo(curPlayer, day=-1, templateID=-1): #通知当前次数、已领次数 @@ -439,7 +446,8 @@ tInfo.SingleTimes = ipyData.GetSingleTimes() tInfo.Point = ipyData.GetPoint() tInfo.ItemInfo = [] - for itemID, itemCnt, isBind in ipyData.GetReward(): + awardItemList = __GetAwardItemListByJob(curPlayer, ipyData) + for itemID, itemCnt, isBind in awardItemList: awardItem = ChPyNetSendPack.tagMCWeekPartyItem() awardItem.ItemID = itemID awardItem.ItemCnt = itemCnt -- Gitblit v1.8.0