ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTree.py
@@ -22,7 +22,7 @@
import ChPyNetSendPack
import PlayerControl
import IPY_GameWorld
#import PlayerTask
import PlayerTask
import ChConfig
import time
@@ -32,6 +32,11 @@
    if not treeLV:
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreeLV, 1)
    RefreshTreeLVUPTime(curPlayer)
    SyncTreeInfo(curPlayer)
    return
def PlayerOnDay(curPlayer):
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreeFreeTimeCnt, 0)
    SyncTreeInfo(curPlayer)
    return
@@ -152,7 +157,7 @@
                       % (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)
@@ -165,8 +170,39 @@
    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):
    ## 执行仙树升级
@@ -194,7 +230,7 @@
    GameWorld.DebugLog("执行仙树升级! updTreeLV=%s" % updTreeLV, playerID)
    SyncTreeInfo(curPlayer)
    
    #PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_TreeLV)
    PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_TreeLV)
    return True
def SyncTreeInfo(curPlayer):
@@ -202,5 +238,7 @@
    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