| | |
| | | import ChConfig
|
| | | import GameWorld
|
| | | import ItemControler
|
| | | import IPY_GameWorld
|
| | | import ItemCommon
|
| | | import NetPackCommon
|
| | | import PlayerControl
|
| | | import IpyGameDataPY
|
| | | import PlayerTJG
|
| | |
|
| | | import time
|
| | |
|
| | | '''
|
| | | 特殊说明:
|
| | | 港台主干要修改为创角七日奖励,但是因为前端热更问题,前端无法使用旧表跟旧封包 A3 08 在线奖励信息 #tagMCOnlinePrize
|
| | | 为了保持前后端逻辑统一,后端不再动旧表跟旧封包A308,防止修改后前端报错
|
| | | 使用新表及新封包 B1 13 在线奖励信息新 #tagMCOnlinePrizeNew
|
| | | '''
|
| | |
|
| | | #//A5 06 玩家领取在线奖励 #tagCMGetOnlinePrize
|
| | | #
|
| | |
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | creatRoleDay = GameWorld.GetCreateRoleDays(curPlayer)
|
| | | prizeIndex = clientPack.Index
|
| | | GameWorld.DebugLog("领取在线奖励: creatRoleDay=%s,prizeIndex=%s" % (creatRoleDay, prizeIndex))
|
| | | if prizeIndex <= 0:
|
| | | GameWorld.DebugLog("prizeIndex需要从1开始,我也不想,保留原逻辑吧!!!")
|
| | | return
|
| | | dayID = creatRoleDay
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('OnlineAwardNew', dayID)
|
| | | ipyData = IpyGameDataPY.GetIpyGameDataNotLog('OnlineAwardNew', creatRoleDay)
|
| | | if ipyData:
|
| | | dayID = creatRoleDay
|
| | | GameWorld.DebugLog("领取创角天在线奖励: creatRoleDay=%s,prizeIndex=%s" % (creatRoleDay, prizeIndex))
|
| | | else:
|
| | | dayID = 0
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('OnlineAwardNew', 0)
|
| | | GameWorld.DebugLog("领取每天在线奖励: creatRoleDay=%s,prizeIndex=%s" % (creatRoleDay, prizeIndex))
|
| | | |
| | | if not ipyData:
|
| | | return
|
| | | #先纠正一次时间
|
| | | onlineTime = GetOnlineTime(curPlayer)
|
| | |
|
| | | #已领
|
| | | awardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote % dayID)
|
| | | awardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote)
|
| | | awardMark = pow(2, prizeIndex - 1)
|
| | | if awardInfo & awardMark:
|
| | | #已领取
|
| | |
| | | GameWorld.DebugLog("没有配置该索引对应在线奖励!")
|
| | | return
|
| | | itemList = awardDict[str(prizeIndex)]
|
| | | |
| | | # 检查背包
|
| | | needSpace = len(itemList)
|
| | | packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
|
| | | if needSpace > packSpace:
|
| | | PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
|
| | | if not itemList:
|
| | | return
|
| | | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote % dayID, awardInfo | awardMark)
|
| | | |
| | | # 给物品
|
| | | for itemID, itemCount in itemList:
|
| | | ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
|
| | | |
| | | #发包
|
| | | updAwardNote = awardInfo | awardMark
|
| | | GameWorld.DebugLog("在线奖励: %s, updAwardNote=%s" % (itemList, updAwardNote))
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote, updAwardNote)
|
| | | ItemControler.GivePlayerItemOrMail(curPlayer, itemList, event=["OnlinePrize", False, {}])
|
| | | SendOnlinePrizeInfo(curPlayer)
|
| | | return
|
| | |
|
| | |
|
| | | ##查询在线奖励
|
| | | # @param None
|
| | | # @return None
|
| | | def QueryOnlinePrize(index, clientPack, tick):
|
| | | # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | # # 计算时长
|
| | | # CalcOnlineTime(curPlayer, tick, True)
|
| | | return
|
| | |
|
| | | def GetOnlineTime(curPlayer):
|
| | |
| | | # @return None
|
| | | def CalcOnlineTime(curPlayer):
|
| | | if PlayerTJG.GetIsTJG(curPlayer):
|
| | | return
|
| | | return 0
|
| | | onlineTime = GetOnlineTime(curPlayer)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DayOnlineTime, onlineTime)
|
| | | SetStartCalcOnlineTick(curPlayer, 0)
|
| | | return
|
| | | GameWorld.DebugLog("更新记录在线时长: %s" % onlineTime)
|
| | | return onlineTime
|
| | |
|
| | |
|
| | | ##发送奖励信息包
|
| | |
| | | dataCount = IpyGameDataPY.IPY_Data().GetOnlineAwardNewCount()
|
| | | if not dataCount:
|
| | | return
|
| | | creatRoleDay = GameWorld.GetCreateRoleDays(curPlayer)
|
| | | sendPack = ChPyNetSendPack.tagMCOnlinePrizeNew()
|
| | | sendPack.Clear()
|
| | | sendPack.OnlineTime = GetOnlineTime(curPlayer) * 1000
|
| | | sendPack.PrizeInfo = [curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote % creatRoleDay)] # 创角7日的与前端约定固定只发当天的
|
| | | # for i in xrange(dataCount):
|
| | | # dayID = i + 1#i+1,增加了每日支持,从0开始,代表每日
|
| | | # sendPack.PrizeInfo.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote % dayID))
|
| | | sendPack.PrizeInfo = [curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote)] # 固定只发当天的
|
| | | sendPack.Len = len(sendPack.PrizeInfo)
|
| | | #通知客户端时间
|
| | | NetPackCommon.SendFakePack(curPlayer, sendPack)
|
| | |
| | | __OnlineMailPrize(curPlayer)
|
| | |
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DayOnlineTime, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote % 0, 0) # 重置每日在线奖励
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote, 0) # 重置每日在线奖励
|
| | |
|
| | | if PlayerTJG.GetIsTJG(curPlayer):
|
| | | return
|
| | |
| | | return
|
| | | mailAwardDay = 0 # 昨日非定制的,且有配置0常规的,则补发0的
|
| | |
|
| | | prizeInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote % mailAwardDay)
|
| | | prizeInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote)
|
| | | onlineTime = GetOnlineTime(curPlayer)
|
| | | needTimeList = ipyData.GetStageTime()
|
| | | awardDict = ipyData.GetReward()
|
| | |
| | | if not itemList:
|
| | | return
|
| | | GameWorld.DebugLog('补发昨日在线奖励: mailAwardDay=%s,onlineTime=%s' % (mailAwardDay, onlineTime))
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote % mailAwardDay, prizeInfo)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote, prizeInfo)
|
| | | PlayerControl.SendMailByKey('OnLineAward1', [curPlayer.GetID()], itemList)
|
| | | return
|
| | |
|