hxp
2025-08-25 eae877b5a46fd8ae4ba36c80010d93fb6fec4d32
110 【主界面】仙树升级-服务端(增加每日免费减时支持;)
5个文件已修改
66 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTree.py 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4181,6 +4181,8 @@
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,参数(任务组)
@@ -5232,7 +5234,9 @@
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 = (
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -43396,6 +43396,8 @@
                  ("TreeLV", c_ubyte),    # 当前仙树等级
                  ("LVUPState", c_ubyte),    # 0-非升级中;1-升级中
                  ("LVUPRemainTime", c_int),    # 升级剩余时间,秒;当升级中且倒计时为0时可发送B223执行升级包进行升级
                  ("FreeTimeCnt", c_ubyte),    # 今日已免费减时次数
                  ("FreeTimeLast", c_int),    # 上次免费减时时间戳
                  ]
    def __init__(self):
@@ -43415,6 +43417,8 @@
        self.TreeLV = 0
        self.LVUPState = 0
        self.LVUPRemainTime = 0
        self.FreeTimeCnt = 0
        self.FreeTimeLast = 0
        return
    def GetLength(self):
@@ -43429,14 +43433,18 @@
                                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
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -3441,6 +3441,9 @@
    # 挂机奖励
    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)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -106,6 +106,7 @@
import PlayerViewCache
import PlayerMail
import PlayerHero
import PlayerTree
import datetime
import time
@@ -280,7 +281,7 @@
        #------------------------------------------------------------------------------ 
        
        PlayerCoin.OnDay(curPlayer)
        PlayerTree.PlayerOnDay(curPlayer)
        #成就
        PlayerSuccess.SuccOnDay(curPlayer)
        
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTree.py
@@ -35,6 +35,11 @@
    SyncTreeInfo(curPlayer)
    return
def PlayerOnDay(curPlayer):
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreeFreeTimeCnt, 0)
    SyncTreeInfo(curPlayer)
    return
#// B2 23 仙树升级 #tagCMTreeLVUP
#
#struct    tagCMTreeLVUP
@@ -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):
    ## 执行仙树升级
@@ -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