| | |
| | | import PlayerRune
|
| | | import GameFuncComm
|
| | | import PlayerFairyCeremony
|
| | | import PlayerNewFairyCeremony
|
| | | import PlayerSpringSale
|
| | | import PyGameData
|
| | |
|
| | |
| | | elif onEventType == ShareDefine.Def_OnEventTypeEx:
|
| | | refreshType = [4]
|
| | | openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
|
| | | if openServerDay % 3 == 0:
|
| | | refreshType = [4,7]
|
| | | isMixServer = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_IsMixServer)
|
| | | if isMixServer:
|
| | | mixServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerDay)
|
| | | if mixServerDay % 3 == 0:
|
| | | refreshType.append(7)
|
| | | elif openServerDay % 3 == 0:
|
| | | refreshType.append(7)
|
| | | else:
|
| | | return
|
| | | __ResetShopItemBuyCount(curPlayer, refreshType)
|
| | | ResetShopItemBuyCount(curPlayer, refreshType)
|
| | | return
|
| | |
|
| | | ##商店物品OnWeek
|
| | | # @param curPlayer 玩家实例
|
| | | # @return
|
| | | def ShopItemOnWeek(curPlayer, onEventType):
|
| | | __ResetShopItemBuyCount(curPlayer, [onEventType])
|
| | | if onEventType == ShareDefine.Def_OnEventType:
|
| | | refreshType = [1]
|
| | | elif onEventType == ShareDefine.Def_OnEventTypeEx:
|
| | | refreshType = [2]
|
| | | else:
|
| | | return
|
| | | ResetShopItemBuyCount(curPlayer, refreshType)
|
| | | return
|
| | |
|
| | | ##商店物品OnMonth
|
| | |
| | | refreshType = 6
|
| | | else:
|
| | | return
|
| | | __ResetShopItemBuyCount(curPlayer, [refreshType])
|
| | | ResetShopItemBuyCount(curPlayer, [refreshType])
|
| | | return
|
| | |
|
| | | def ShopItemOnCrossPKSeasonChange(curPlayer):
|
| | | ## 按跨服PK赛季重置
|
| | | refreshType = 8
|
| | | __ResetShopItemBuyCount(curPlayer, [refreshType])
|
| | | ResetShopItemBuyCount(curPlayer, [refreshType])
|
| | | return
|
| | |
|
| | | def __ResetShopItemBuyCount(curPlayer, onEventTypeList):
|
| | | def ResetShopItemBuyCount(curPlayer, resetTypeList):
|
| | | #@param resetTypeList: 需要重置的类型列表
|
| | | #重置商店物品购买次数 1:周一0点刷新 2:周一5点刷新 3:每日0点刷新 4:每日5点刷新 5每月0点 6每月5点 7每3天5点 8每赛季
|
| | | if not resetTypeList:
|
| | | # 暂定必须指定类型列表,防止终身限购的误被重置
|
| | | return
|
| | | |
| | | syncIndexList = []
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for i in xrange(ipyDataMgr.GetStoreCount()):
|
| | | shopItem = ipyDataMgr.GetStoreByIndex(i)
|
| | | if not shopItem.GetLimitCnt():
|
| | | continue
|
| | | if shopItem.GetRefreshType() not in onEventTypeList:
|
| | | if shopItem.GetRefreshType() not in resetTypeList:
|
| | | continue
|
| | | dayBuyCntKey = ChConfig.Def_PDict_ShopItemDayBuyCnt % shopItem.GetID()
|
| | | curDayBuyCnt = curPlayer.NomalDictGetProperty(dayBuyCntKey)
|
| | |
| | | if not state:
|
| | | GameWorld.DebugLog("限时特惠非活动中!state=%s" % (state), curPlayer.GetPlayerID())
|
| | | return
|
| | | shopTypeList = PlayerSpringSale.GetShopTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))
|
| | | shopTypeList = PlayerSpringSale.GetShopTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0), actInfo.get(ShareDefine.ActKey_WorldLV, 0))
|
| | | if not shopTypeList:
|
| | | return
|
| | | actShopType = shopTypeList[-1] if state > len(shopTypeList) else shopTypeList[state - 1]
|
| | |
| | | if not state:
|
| | | GameWorld.DebugLog("限时抢购非活动中!state=%s" % (state), curPlayer.GetPlayerID())
|
| | | return
|
| | | shopTypeList = PlayerFlashSale.GetShopTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0), state)
|
| | | shopTypeList = PlayerFlashSale.GetShopTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0), state, actInfo.get(ShareDefine.ActKey_WorldLV, 0))
|
| | | if not shopTypeList:
|
| | | return
|
| | | actShopType = shopTypeList[0]
|
| | |
| | | jobItemList = ipyData.GetJobItem()
|
| | | totalItemList = []
|
| | | if itemID:
|
| | | jobItemID = __GetShopJobItem(job, itemID, jobItemList)
|
| | | jobItemID = GetShopJobItem(job, itemID, jobItemList)
|
| | | totalItemList.append([jobItemID, itemCount * clientBuyCount, isBind])
|
| | | for itemIDEx, itemCountEx, isBindEx in itemListEx:
|
| | | jobItemID = __GetShopJobItem(job, itemIDEx, jobItemList)
|
| | | jobItemID = GetShopJobItem(job, itemIDEx, jobItemList)
|
| | | totalItemList.append([jobItemID, itemCountEx * clientBuyCount, isBindEx])
|
| | | #允许价钱配置0,用来免费购买
|
| | | if not totalItemList:
|
| | |
| | | SyncShoppingResult(curPlayer, itemIndex, clientBuyCount)
|
| | | if itemIndex in IpyGameDataPY.GetFuncEvalCfg('CeremonyFireParty', 1, {}).values():
|
| | | PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Fireworks, clientBuyCount)
|
| | | if itemIndex in IpyGameDataPY.GetFuncEvalCfg('NewCeremonyFireParty', 1, {}).values():
|
| | | PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Fireworks, clientBuyCount)
|
| | | |
| | | return
|
| | |
|
| | | def __GetShopJobItem(job, itemID, jobItemList):
|
| | | def GetShopJobItem(job, itemID, jobItemList):
|
| | | ## 获取商城物品对应的职业物品, 职业从1开始
|
| | | for jobItemIDList in jobItemList:
|
| | | if type(jobItemIDList) not in [list, tuple]:
|
| | |
| | | #烟花狂欢
|
| | | if itemIndex in IpyGameDataPY.GetFuncEvalCfg('CeremonyFireParty', 1, {}).values():
|
| | | return not PlayerFairyCeremony.IsCanBuyFireworks(curPlayer, itemIndex)
|
| | | |
| | | if itemIndex in IpyGameDataPY.GetFuncEvalCfg('NewCeremonyFireParty', 1, {}).values():
|
| | | return not PlayerNewFairyCeremony.IsCanBuyFireworks(curPlayer, itemIndex)
|
| | | # if itemIndex in dict(IpyGameDataPY.GetFuncEvalCfg('SuperGiftTimeList')):
|
| | | # return not CheckSuperGiftBuy(curPlayer, itemIndex)
|
| | | if shopNPCID == 16:#神秘限购
|