| | |
| | | import NetPackCommon
|
| | | import IpyGameDataPY
|
| | | import ChPyNetSendPack
|
| | | import PlayerGoldInvest
|
| | | import PlayerControl
|
| | | import IPY_GameWorld
|
| | | import PlayerTask
|
| | |
| | | def OnPlayerLogin(curPlayer):
|
| | | treeLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeLV)
|
| | | if not treeLV:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreeLV, 1)
|
| | | treeLV = 1
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreeLV, treeLV)
|
| | | energyInit = IpyGameDataPY.GetFuncCfg("TreeEnergy", 1)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreeEnergy, energyInit)
|
| | | GameWorld.DebugLog("初始仙树等级: treeLV=%s,energyInit=%s" % (treeLV, energyInit))
|
| | | RefreshTreeEnergyTime(curPlayer)
|
| | | RefreshTreeLVUPTime(curPlayer)
|
| | | SyncTreeInfo(curPlayer)
|
| | | return
|
| | |
|
| | | def PlayerOnDay(curPlayer):
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreeFreeTimeCnt, 0)
|
| | | SyncTreeInfo(curPlayer)
|
| | | return
|
| | |
|
| | |
| | | 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))
|
| | | def GetTreeEnergyMax(curPlayer):
|
| | | energyMax = IpyGameDataPY.GetFuncCfg("TreeEnergy", 2)
|
| | | energyMax += PlayerGoldInvest.GetTreeEnergyAdd(curPlayer)
|
| | | return energyMax
|
| | |
|
| | | def RefreshTreeEnergyTime(curPlayer):
|
| | | ## 刷新充能时间
|
| | | energy = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeEnergy)
|
| | | energyMax = GetTreeEnergyMax(curPlayer)
|
| | | if energy >= energyMax:
|
| | | return
|
| | | energyTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeEnergyTimeLast)
|
| | | updEnergy = energy
|
| | | updEnergyTime = energyTime
|
| | |
|
| | | curTime = int(time.time())
|
| | | if freeCDSeconds and freeTimeLast and (curTime - freeTimeLast) < freeCDSeconds:
|
| | | GameWorld.DebugLog("免费仙树减时CD未到! passSeconds=%s < %s" % (curTime - freeTimeLast, freeCDSeconds))
|
| | | if not updEnergyTime:
|
| | | updEnergyTime = curTime
|
| | | |
| | | passSeconds = max(0, curTime - updEnergyTime)
|
| | | energyCDSeconds = IpyGameDataPY.GetFuncCfg("TreeEnergy", 3) * 60 # 免费CD,秒
|
| | | addEnergy = passSeconds / energyCDSeconds
|
| | | if addEnergy > 0:
|
| | | updEnergy += addEnergy
|
| | | if updEnergy >= energyMax:
|
| | | updEnergy = energyMax
|
| | | updEnergyTime = 0
|
| | | else:
|
| | | updEnergyTime = curTime - passSeconds % energyCDSeconds
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreeEnergy, updEnergy)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreeEnergyTimeLast, updEnergyTime)
|
| | | GameWorld.DebugLog("仙树充能时间刷新! energy=%s,energyTime=%s,addEnergy=%s,updEnergy=%s/%s,updEnergyTime=%s" |
| | | % (energy, energyTime, addEnergy, updEnergy, energyMax, updEnergyTime), curPlayer.GetPlayerID())
|
| | | return
|
| | |
|
| | | def GetTreeEnergyAward(curPlayer, useMoney=False):
|
| | | ## 领取充能奖励,可消耗货币或广告
|
| | | |
| | | GameWorld.DebugLog("领取祝福树充能奖励! useMoney=%s" % useMoney)
|
| | | |
| | | energy = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeEnergy)
|
| | | if energy <= 0:
|
| | | GameWorld.DebugLog("没有充能减时次数!")
|
| | | return
|
| | |
|
| | | reduceTime = IpyGameDataPY.GetFuncCfg("TreeLVUP", 5) * 60
|
| | | reduceTime = IpyGameDataPY.GetFuncCfg("TreeEnergy", 4) * 60
|
| | | if reduceTime <= 0:
|
| | | return
|
| | |
|
| | | if useMoney:
|
| | | moneyType, moneyValue = IpyGameDataPY.GetFuncEvalCfg("TreeEnergy", 5)
|
| | | if not PlayerControl.HaveMoney(curPlayer, moneyType, moneyValue):
|
| | | 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)
|
| | | if useMoney:
|
| | | if not PlayerControl.PayMoney(curPlayer, moneyType, moneyValue, "TreeEnergy"):
|
| | | return
|
| | | |
| | | energyMax = GetTreeEnergyMax(curPlayer)
|
| | | if energy == energyMax:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreeEnergyTimeLast, int(time.time()))
|
| | | GameWorld.DebugLog("重新开始充能倒计时!")
|
| | | |
| | | energy -= 1
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreeEnergy, energy)
|
| | | GameWorld.DebugLog("领取能量OK剩余能量: %s/%s" % (energy, energyMax))
|
| | | SyncTreeInfo(curPlayer)
|
| | | return
|
| | |
|
| | | def FreeReduceTreeLVTime(curPlayer, opType=1):
|
| | | ## 仙树领取充能减时
|
| | | |
| | | # 刷新累计充能次数
|
| | | if opType == 1:
|
| | | RefreshTreeEnergyTime(curPlayer)
|
| | | SyncTreeInfo(curPlayer)
|
| | | return
|
| | | GetTreeEnergyAward(curPlayer, True)
|
| | | 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)
|
| | | clientPack.Energy = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeEnergy)
|
| | | clientPack.EnergyTimeLast = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeEnergyTimeLast)
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|