| | |
| | | DWORD LimitMissionID; //需要完成的任务ID
|
| | | WORD LimitOpenDay; //开服第几天开启
|
| | | char MailKey; //邮件
|
| | | list AwardList; //奖励列表[[物品ID,个数], ...]
|
| | | };
|
| | |
|
| | |
|
| | |
| | | DWORD Weight; //权重
|
| | | DWORD Mark; //排序用标识
|
| | | BYTE Rare; //珍稀值
|
| | | };
|
| | |
|
| | | //功能预告表
|
| | |
|
| | | struct tagFunctionForecast
|
| | | {
|
| | | DWORD _FuncID; //功能ID
|
| | | dict Award; //属性类型
|
| | | };
|
| | |
|
| | | //表情包表
|
| | |
| | | ("DWORD", "LimitMissionID", 0),
|
| | | ("WORD", "LimitOpenDay", 0),
|
| | | ("char", "MailKey", 0),
|
| | | ("list", "AwardList", 0),
|
| | | ),
|
| | |
|
| | | "ItemCompound":(
|
| | |
| | | ("DWORD", "Weight", 0),
|
| | | ("DWORD", "Mark", 0),
|
| | | ("BYTE", "Rare", 0),
|
| | | ),
|
| | |
|
| | | "FunctionForecast":(
|
| | | ("DWORD", "FuncID", 1),
|
| | | ("dict", "Award", 0),
|
| | | ),
|
| | |
|
| | | "EmojiPack":(
|
| | |
| | | def GetLimiRealmLV(self): return self.attrTuple[2] # 需要境界等级 WORD
|
| | | def GetLimitMissionID(self): return self.attrTuple[3] # 需要完成的任务ID DWORD
|
| | | def GetLimitOpenDay(self): return self.attrTuple[4] # 开服第几天开启 WORD
|
| | | def GetMailKey(self): return self.attrTuple[5] # 邮件 char |
| | | def GetMailKey(self): return self.attrTuple[5] # 邮件 char
|
| | | def GetAwardList(self): return self.attrTuple[6] # 奖励列表[[物品ID,个数], ...] list |
| | | |
| | | # 合成表 |
| | | class IPY_ItemCompound(): |
| | |
| | | def GetMark(self): return self.attrTuple[7] # 排序用标识 DWORD
|
| | | def GetRare(self): return self.attrTuple[8] # 珍稀值 BYTE |
| | | |
| | | # 功能预告表 |
| | | class IPY_FunctionForecast(): |
| | | |
| | | def __init__(self): |
| | | self.attrTuple = None |
| | | return |
| | | |
| | | def GetFuncID(self): return self.attrTuple[0] # 功能ID DWORD
|
| | | def GetAward(self): return self.attrTuple[1] # 属性类型 dict |
| | | |
| | | # 表情包表 |
| | | class IPY_EmojiPack(): |
| | | |
| | |
| | | self.__LoadFileData("ActFlashSale", onlyCheck)
|
| | | self.__LoadFileData("ActWishingWell", onlyCheck)
|
| | | self.__LoadFileData("WishingWell", onlyCheck)
|
| | | self.__LoadFileData("FunctionForecast", onlyCheck)
|
| | | self.__LoadFileData("EmojiPack", onlyCheck)
|
| | | self.__LoadFileData("ActRechargePrize", onlyCheck)
|
| | | self.__LoadFileData("RechargePrizeTemplate", onlyCheck)
|
| | |
| | | def GetWishingWellByIndex(self, index): |
| | | self.CheckLoadData("WishingWell") |
| | | return self.ipyWishingWellCache[index]
|
| | | |
| | | def GetFunctionForecastCount(self): |
| | | self.CheckLoadData("FunctionForecast") |
| | | return self.ipyFunctionForecastLen
|
| | | def GetFunctionForecastByIndex(self, index): |
| | | self.CheckLoadData("FunctionForecast") |
| | | return self.ipyFunctionForecastCache[index]
|
| | | |
| | | def GetEmojiPackCount(self): |
| | | self.CheckLoadData("EmojiPack") |
| | |
| | | # 阵容推荐奖励
|
| | | elif rewardType == ChConfig.Def_RewardType_LineupRecommend:
|
| | | PlayerHero.GetLineupRecommendAward(curPlayer, dataEx, dataExStr)
|
| | | # 功能开启奖励
|
| | | elif rewardType == ChConfig.Def_RewardType_OpenFunc:
|
| | | GameFuncComm.GetFuncOpenAward(curPlayer, dataEx)
|
| | |
|
| | |
|
| | | # 每日免费直购礼包
|
| | |
| | | # 领取许愿池奖励
|
| | | elif rewardType == ChConfig.Def_RewardType_WishingWell:
|
| | | PlayerWishingWell.DoGetWishingAward(curPlayer)
|
| | | # 功能开启奖励
|
| | | elif rewardType == ChConfig.Def_RewardType_OpenFunc:
|
| | | GameFuncComm.GetFuncOpenAward(curPlayer, dataEx)
|
| | | # 领取周狂欢活动奖励
|
| | | elif rewardType == ChConfig.Def_RewardType_WeekPartyAct:
|
| | | PlayerWeekParty.GetWeekPartyActionAward(curPlayer, dataEx, dataExStr)
|
| | |
| | |
|
| | | def GetFuncOpenAward(curPlayer, funcID):
|
| | | ## 领取功能开启奖励
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('FunctionForecast', funcID)
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("FuncOpenLV", funcID)
|
| | | if not ipyData:
|
| | | return
|
| | | getState = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_GameFuncAwardState, funcID)
|
| | | if getState:
|
| | | GameWorld.DebugLog("功能开启奖励已领取! funcID=%s" % funcID)
|
| | | return
|
| | | awardDict = ipyData.GetAward()
|
| | | job = curPlayer.GetJob()
|
| | | itemList = awardDict.get(str(job))
|
| | | openState = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_GameFuncFirstTouch, funcID)
|
| | | if not openState:
|
| | | GameWorld.DebugLog("功能未开启无法领取! funcID=%s" % funcID)
|
| | | return
|
| | | itemList = ipyData.GetAwardList()
|
| | | if not itemList:
|
| | | return
|
| | | # 检查背包
|
| | | needSpace = len(itemList)
|
| | | packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
|
| | | if needSpace > packSpace:
|
| | | PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
|
| | | return
|
| | | GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_GameFuncAwardState, funcID, 1)
|
| | | |
| | | # 给物品
|
| | | for itemID, itemCount in itemList:
|
| | | ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
|
| | | ItemControler.NotifyGiveAwardInfo(curPlayer, itemList, "FuncOpenAward")
|
| | | ItemControler.GivePlayerItemOrMail(curPlayer, itemList, event=["FuncOpenAward", False, {}])
|
| | | Sync_FuncOpenState(curPlayer, [funcID])
|
| | | return
|
| | |
|