| | |
| | | import ItemControler
|
| | | import ItemCommon
|
| | |
|
| | | import datetime
|
| | | import time
|
| | |
|
| | | g_randomWellDict = {}
|
| | | g_specialMarkDict = {}
|
| | |
|
| | |
|
| | | (
|
| | | WellType_Select, #可选库
|
| | |
| | | return
|
| | |
|
| | | def RefreshWishingWellAction():
|
| | | #__InitWishRateList()
|
| | | __InitWishRateList()
|
| | | playerManager = GameWorld.GetPlayerManager()
|
| | | for i in xrange(playerManager.GetPlayerCount()):
|
| | | curPlayer = playerManager.GetPlayerByIndex(i)
|
| | |
| | | def __CheckPlayerWishingWellAction(curPlayer):
|
| | | ## 检查玩家许愿池活动数据信息
|
| | | global g_randomWellDict
|
| | | global g_specialMarkDict
|
| | |
|
| | | playerID = curPlayer.GetPlayerID()
|
| | |
|
| | | actWishingWellInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WishingWell, {})
|
| | |
| | | % (WishingWellID, playerWishingWellID, state, worldLV), playerID)
|
| | |
|
| | | # 未领取的奖励邮件发放
|
| | | __SendWishingWellMail(curPlayer, WishingWellID or int(time.time()), state)
|
| | | curDataTime = GameWorld.GetCurrentTime()
|
| | | curDayTime = datetime.datetime(curDataTime.year, curDataTime.month, curDataTime.day, 0, 0, 0)
|
| | | curDayTimeNum = GameWorld.ChangeTimeStrToNum(str(curDayTime))
|
| | | __SendWishingWellMail(curPlayer, WishingWellID or curDayTimeNum, state)
|
| | |
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellID, WishingWellID)
|
| | | #每天开始随机一次免费盘
|
| | | if state:
|
| | | g_randomWellDict = {}
|
| | | g_specialMarkDict = {}
|
| | | #g_randomWellDict = {}
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellRefreshCnt, 0)
|
| | | __DoActWishingRefresh(curPlayer, 1, True)
|
| | |
|
| | |
| | | if not lastAwardTime:
|
| | | if state != -1:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellAwardTime, curTime)
|
| | | GameWorld.DebugLog('__SendWishingWellMail curTime =%s'%curTime)
|
| | | return
|
| | | GameWorld.DebugLog('许愿池未领取的奖励邮件发放检查 lastAwardTime=%s,state=%s,pass=%s'%(lastAwardTime, state, curTime - lastAwardTime))
|
| | | passDay = (curTime - lastAwardTime)/86400
|
| | | passDay = (curTime - lastAwardTime)/86000
|
| | | if passDay <= 0:
|
| | | return
|
| | | isOver = True
|
| | |
| | | mailItemList.append([itemID, itemCnt, isBind])
|
| | | __SetItemData(curPlayer, WellType_Result, i, 0, 0, 0, 0)
|
| | | j +=1
|
| | | |
| | | if state > 0:
|
| | | isOver = False
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellAwardTime, 0 if isOver else curTime)
|
| | | if mailItemList:
|
| | | PlayerControl.SendMailByKey('WishPool', [curPlayer.GetID()], mailItemList)
|
| | | if state == -1:
|
| | | SyncWishingWellPlayerInfo(curPlayer)
|
| | | GameWorld.DebugLog('许愿池距离时间 passDay=%s,mailItemList=%s,saveItemList=%s,isOver=%s'%(passDay, mailItemList, saveItemList, isOver), curPlayer.GetID())
|
| | | GameWorld.DebugLog('许愿池距离时间 passDay=%s,mailItemList=%s,saveItemList=%s,isOver=%s,curTime=%s'%(passDay, mailItemList, saveItemList, isOver, curTime), curPlayer.GetID())
|
| | | return
|
| | |
|
| | |
|
| | | def __InitWishRateList():
|
| | | ## 初始许愿池随机库
|
| | | global g_randomWellDict
|
| | | global g_specialMarkDict
|
| | | actWishingWellInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WishingWell, {})
|
| | | state = actWishingWellInfo.get(ShareDefine.ActKey_State, 0)
|
| | | cfgID = actWishingWellInfo.get(ShareDefine.ActKey_CfgID, 0)
|
| | |
| | | isBind = ipyData.GetIsBind()
|
| | | weight = ipyData.GetWeight()
|
| | | mark = ipyData.GetMark()
|
| | | rare = ipyData.GetRare()
|
| | | weightDict[isFree] = weightDict.get(isFree, 0) + weight
|
| | | if isFree not in g_randomWellDict:
|
| | | g_randomWellDict[isFree] = []
|
| | | g_randomWellDict[isFree].append([weightDict[isFree], [itemID, itemCnt, isBind, mark]])
|
| | | g_randomWellDict[isFree].append([weightDict[isFree], [itemID, itemCnt, isBind, mark, rare]])
|
| | |
|
| | | groupID, rowID = mark / 100, mark % 100
|
| | | if rowID > g_specialMarkDict.get(groupID, 0) % 100:
|
| | | g_specialMarkDict[groupID] = mark
|
| | | GameWorld.DebugLog(' 初始许愿池随机库 g_randomWellDict=%s, g_specialMarkDict=%s' % (g_randomWellDict, g_specialMarkDict))
|
| | | |
| | | GameWorld.DebugLog(' 初始许愿池随机库 g_randomWellDict=%s' % (g_randomWellDict))
|
| | | return
|
| | |
|
| | |
|
| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellFreeTime, int(time.time()))
|
| | |
|
| | | for i, info in enumerate(randomResultList):
|
| | | itemID, itemCnt, isBind, mark = info
|
| | | isSpecial = 1 if mark in g_specialMarkDict.values() else 0
|
| | | itemID, itemCnt, isBind, mark, rare = info
|
| | | isSpecial = rare
|
| | | __SetItemData(curPlayer, WellType_Select, i, itemID, itemCnt, isBind, isSpecial)
|
| | | GameWorld.DebugLog(' 许愿池活动刷新 isFree=%s, randomResultList=%s' % (isFree, randomResultList), playerID)
|
| | | return
|
| | |
| | | PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
|
| | | return
|
| | | for itemID, itemCnt, isBind in giveItemList:
|
| | | ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem])
|
| | | ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem])
|
| | | for i in xrange(count):
|
| | | __SetItemData(curPlayer, WellType_Get, i, 0, 0, 0, 0)
|
| | | SyncWishingWellPlayerInfo(curPlayer)
|
| | |
| | | actInfo.WellItemInfo = []
|
| | | randomItemList = __GetRandomRateList(0)
|
| | | for itemInfo in randomItemList:
|
| | | itemID, itemCnt, isBind, mark = itemInfo[1]
|
| | | itemID, itemCnt, isBind, mark, rare = itemInfo[1]
|
| | | wellItemInfo = ChPyNetSendPack.tagMCWishingWellItem()
|
| | | wellItemInfo.ItemID = itemID
|
| | | wellItemInfo.ItemCnt = itemCnt
|
| | | wellItemInfo.IsBind = isBind
|
| | | wellItemInfo.Mark = mark
|
| | | wellItemInfo.Rare = rare
|
| | | actInfo.WellItemInfo.append(wellItemInfo)
|
| | | actInfo.Count = len(actInfo.WellItemInfo)
|
| | | NetPackCommon.SendFakePack(curPlayer, actInfo)
|