110 【主界面】仙树升级-服务端(增加每日免费减时支持;)
| | |
| | | Def_PDict_TreeLVUPState = "TreeLVUPState" # 仙树升级状态;0-未升级;1-升级中
|
| | | Def_PDict_TreeLVUPRemainTime = "TreeLVUPRemainTime" # 仙树升级剩余时间,秒
|
| | | Def_PDict_TreeLVUPRefreshTime = "TreeLVUPRefreshTime" # 仙树升级上次刷新时间戳
|
| | | Def_PDict_TreeFreeTimeCnt = "TreeFreeTimeCnt" # 今日已领取免费减时次数,过天重置
|
| | | Def_PDict_TreeFreeTimeLast = "TreeFreeTimeLast" # 今日上次领取免费减时时间戳,过天重置
|
| | |
|
| | | #任务,每个任务组有且仅有一个进行中的任务
|
| | | Def_PDict_TaskIDLast = "TaskIDLast_%s" # 上一次完成的任务ID,参数(任务组)
|
| | |
| | | Def_RewardType_LunhuidianAward, # 轮回殿奖励 78
|
| | | Def_RewardType_RechargeDayAward, # 累充每日奖励 79
|
| | | Def_RewardType_FamilyGCZ, # 仙盟攻城战 80
|
| | | )= range(81)
|
| | | Def_RewardType_ADAward, # 广告奖励 81
|
| | | Def_RewardType_TreeFreeTime, # 仙树免费减时 82
|
| | | )= range(83)
|
| | |
|
| | | #boss复活相关活动定义
|
| | | BossRebornActIDList = (
|
| | |
| | | ("TreeLV", c_ubyte), # 当前仙树等级
|
| | | ("LVUPState", c_ubyte), # 0-非升级中;1-升级中
|
| | | ("LVUPRemainTime", c_int), # 升级剩余时间,秒;当升级中且倒计时为0时可发送B223执行升级包进行升级
|
| | | ("FreeTimeCnt", c_ubyte), # 今日已免费减时次数
|
| | | ("FreeTimeLast", c_int), # 上次免费减时时间戳
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.TreeLV = 0
|
| | | self.LVUPState = 0
|
| | | self.LVUPRemainTime = 0
|
| | | self.FreeTimeCnt = 0
|
| | | self.FreeTimeLast = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | SubCmd:%s,
|
| | | TreeLV:%d,
|
| | | LVUPState:%d,
|
| | | LVUPRemainTime:%d
|
| | | LVUPRemainTime:%d,
|
| | | FreeTimeCnt:%d,
|
| | | FreeTimeLast:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.TreeLV,
|
| | | self.LVUPState,
|
| | | self.LVUPRemainTime
|
| | | self.LVUPRemainTime,
|
| | | self.FreeTimeCnt,
|
| | | self.FreeTimeLast
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | # 挂机奖励
|
| | | elif rewardType == ChConfig.Def_RewardType_Guaji:
|
| | | PlayerGuaji.OnGetGuajiAward(curPlayer, dataEx)
|
| | | # 仙树免费减时
|
| | | elif rewardType == ChConfig.Def_RewardType_TreeFreeTime:
|
| | | PlayerTree.FreeReduceTreeLVTime(curPlayer)
|
| | | # 每日免费直购礼包
|
| | | elif rewardType == ChConfig.Def_RewardType_DayFreeGoldGift:
|
| | | PlayerDailyGiftbag.OnGetDailyFreeGiftbag(curPlayer)
|
| | |
| | | import PlayerViewCache
|
| | | import PlayerMail
|
| | | import PlayerHero
|
| | | import PlayerTree
|
| | |
|
| | | import datetime
|
| | | import time
|
| | |
| | | #------------------------------------------------------------------------------
|
| | |
|
| | | PlayerCoin.OnDay(curPlayer)
|
| | | |
| | | PlayerTree.PlayerOnDay(curPlayer)
|
| | | #成就
|
| | | PlayerSuccess.SuccOnDay(curPlayer)
|
| | |
|
| | |
| | | SyncTreeInfo(curPlayer)
|
| | | return
|
| | |
|
| | | def PlayerOnDay(curPlayer):
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreeFreeTimeCnt, 0)
|
| | | SyncTreeInfo(curPlayer)
|
| | | return
|
| | |
|
| | | #// B2 23 仙树升级 #tagCMTreeLVUP
|
| | | #
|
| | | #struct tagCMTreeLVUP
|
| | |
| | | % (updLVUPRemainTime, treeLV, LVUPRemainTime, passSeconds, lastRefreshTime), curPlayer.GetPlayerID())
|
| | | return
|
| | |
|
| | | def ReduceTreeLVUPTime(curPlayer, reduceTime):
|
| | | def ReduceTreeLVUPTime(curPlayer, reduceTime, isNotify=True):
|
| | | ## 减少仙树升级剩余时间,可能是使用道具或其他功能等
|
| | | RefreshTreeLVUPTime(curPlayer)
|
| | | lvupState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeLVUPState)
|
| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreeLVUPRemainTime, updLVUPRemainTime)
|
| | | GameWorld.DebugLog("减少仙树升级剩余时间! updLVUPRemainTime=%s,LVUPRemainTime=%s,reduceTime=%s"
|
| | | % (updLVUPRemainTime, LVUPRemainTime, reduceTime), curPlayer.GetPlayerID())
|
| | | SyncTreeInfo(curPlayer)
|
| | | if isNotify:
|
| | | SyncTreeInfo(curPlayer)
|
| | | return True
|
| | |
|
| | | def FreeReduceTreeLVTime(curPlayer):
|
| | | ## 仙树免费减时
|
| | | dailyFreeCntMax = IpyGameDataPY.GetFuncCfg("TreeLVUP", 3)
|
| | | freeCDSeconds = IpyGameDataPY.GetFuncCfg("TreeLVUP", 4) * 60 # 免费CD,秒
|
| | | |
| | | freeTimeCntToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeFreeTimeCnt)
|
| | | freeTimeLast = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeFreeTimeLast)
|
| | | |
| | | if dailyFreeCntMax and freeTimeCntToday >= dailyFreeCntMax:
|
| | | GameWorld.DebugLog("已达今日免费仙树减时次数! freeTimeCntToday=%s >= %s" % (freeTimeCntToday, dailyFreeCntMax))
|
| | | return
|
| | | |
| | | curTime = int(time.time())
|
| | | if freeCDSeconds and freeTimeLast and (curTime - freeTimeLast) < freeCDSeconds:
|
| | | GameWorld.DebugLog("免费仙树减时CD未到! passSeconds=%s < %s" % (curTime - freeTimeLast, freeCDSeconds))
|
| | | return
|
| | | |
| | | reduceTime = IpyGameDataPY.GetFuncCfg("TreeLVUP", 5) * 60
|
| | | if reduceTime <= 0:
|
| | | return
|
| | | |
| | | if not ReduceTreeLVUPTime(curPlayer, reduceTime, False):
|
| | | return
|
| | | |
| | | freeTimeCntToday += 1
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreeFreeTimeCnt, freeTimeCntToday)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreeFreeTimeLast, curTime)
|
| | | SyncTreeInfo(curPlayer)
|
| | | return
|
| | |
|
| | | def DoTreeLVUP(curPlayer):
|
| | | ## 执行仙树升级
|
| | |
| | | clientPack.TreeLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeLV)
|
| | | clientPack.LVUPState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeLVUPState)
|
| | | clientPack.LVUPRemainTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeLVUPRemainTime)
|
| | | clientPack.FreeTimeCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeFreeTimeCnt)
|
| | | clientPack.FreeTimeLast = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeFreeTimeLast)
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|