| | |
| | | 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())
|
| | |
| | | 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)
|
| | |
| | |
|
| | | return True
|
| | |
|
| | |
|
| | | def __SendWeekPartyMail(curPlayer, cfgID):
|
| | | def __SendWeekPartyMail(curPlayer, cfgID, playerWorldLV):
|
| | | # 未领取的奖励邮件发放
|
| | | actBossIpyData = IpyGameDataPY.GetIpyGameData("ActWeekParty", cfgID)
|
| | | if not actBossIpyData:
|
| | |
| | | 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):
|
| | |
| | | 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):
|
| | | '''增加周狂欢相关活动完成次数'''
|
| | |
| | | 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
|
| | |
| | | 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)
|
| | |
| | | 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:
|
| | |
| | | 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
|
| | |
| | |
|
| | | 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
|
| | |
|
| | |
| | | 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()
|
| | |
| | | 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
|