From eae877b5a46fd8ae4ba36c80010d93fb6fec4d32 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 25 八月 2025 20:14:14 +0800
Subject: [PATCH] 110 【主界面】仙树升级-服务端(增加每日免费减时支持;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTree.py | 42 ++++++++++++++++++++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 12 +++++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 3 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 3 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 6 ++
5 files changed, 60 insertions(+), 6 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index dbb4529..fdcffe8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/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 = (
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index f393934..143b4cf 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/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
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index 2b212c8..11ada8d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/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)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
index afcdfa2..dee4d3b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/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)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTree.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTree.py
index e104f94..ae4a7e6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTree.py
+++ b/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
--
Gitblit v1.8.0