| | |
| | | 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):
|
| | | SyncTreeInfo(curPlayer)
|
| | | return
|
| | |
|
| | |
| | | % (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 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 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("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
|
| | | |
| | | 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.Energy = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeEnergy)
|
| | | clientPack.EnergyTimeLast = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeEnergyTimeLast)
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|