From 4360a832bd5450d54b633e892b664e912460da55 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 29 五月 2024 17:21:50 +0800
Subject: [PATCH] 10170 【越南】【主干】【港台】终身卡(过天补发每日奖励未领取累计天数奖励;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldInvest.py | 44 ++++++++++++++++++++++++++++++++++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 1 +
2 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 9308f44..ec4e449 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4169,6 +4169,7 @@
Def_PDict_InvestTime = "InvestTime_%s" # 投资时的时间,参数为投资类型
Def_PDict_InvestProgress = "InvestProgress_%s_%s" # 投资可领奖进度值,参数为(投资类型, key编号)
Def_PDict_InvestReward = "InvestReward_%s_%s" # 投资领奖记录,参数为(投资类型, key编号)
+Def_PDict_InvestRewardTime = "InvestRewardTime_%s" # 投资最后一次领奖时间,参数为(投资类型)
Def_PDict_InvestKeyCount = 3 # key编号数
# 成就 Def_PDictType_Success
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldInvest.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldInvest.py
index abbbfd2..8a17266 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldInvest.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldInvest.py
@@ -90,10 +90,50 @@
# 终身卡
elif investType == ChConfig.InvestType_Life:
+ __GiveUnGetPerDayReward(curPlayer, investType)
for keyNum in range(ChConfig.Def_PDict_InvestKeyCount):
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_InvestReward % (investType, keyNum), 0)
Sync_InvestInfo(curPlayer, investType)
+ return
+
+def __GiveUnGetPerDayReward(curPlayer, investType):
+ ## 补发未领取的每日奖励,一般用于 每日可领取的固定奖励,如永久卡等
+ playerID = curPlayer.GetPlayerID()
+ curTime = int(time.time())
+ lastRewardTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_InvestRewardTime % investType)
+ if not lastRewardTime:
+ passDays = __GetInvestPassDays(curPlayer, investType)
+ #GameWorld.DebugLog("补发奖励时,距离开通投资已过天数: %s" % passDays, playerID)
+ else:
+ passDays = GameWorld.GetDiff_Day(curTime, lastRewardTime)
+ #GameWorld.DebugLog("补发奖励时,距离上次领奖已过天数: %s" % passDays, playerID)
+
+ rewardDays = passDays - 1 # # 需要补发的奖励天数,只补到昨天,不算当天
+ if rewardDays <= 0:
+ GameWorld.DebugLog("不用补发投资卡每日奖励: investType=%s,rewardDays=%s" % (investType, rewardDays), playerID)
+ return
+ updRewardTime = curTime - 3600 * 24 # 最后一次领奖强制设置到昨天
+
+ rewardIndex = 0 # 每日奖励默认0索引
+ ipyData = IpyGameDataPY.GetIpyGameData("Invest", investType * 100 + rewardIndex)
+ if not ipyData:
+ return
+ rewardInfo = ipyData.GetReward()
+
+ rewardKey = "1" # 默认1
+ rewardItemList = rewardInfo.get(str(rewardKey), [])
+ if not rewardItemList:
+ return
+
+ mailItemList = []
+ for itemID, itemCount, isAuctionItem in rewardItemList:
+ mailItemList.append([itemID, itemCount * rewardDays, isAuctionItem])
+
+ GameWorld.DebugLog("邮件补发投资卡每日奖励! investType=%s, rewardDays=%s, updRewardTime=%s, mailItemList=%s"
+ % (investType, rewardDays, updRewardTime, mailItemList), playerID)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_InvestRewardTime % investType, updRewardTime)
+ PlayerControl.SendMailByKey("InvestDayReward_%s" % investType, [playerID], mailItemList, [rewardDays])
return
def __GetInvestPassDays(curPlayer, investType):
@@ -327,6 +367,10 @@
Sync_InvestInfo(curPlayer, investType)
GameWorld.DebugLog(" rewardValue=%s,updRewardValue=%s,rewardItemList=%s" % (rewardValue, updRewardValue, rewardItemList))
+ # 记录最后一次领奖时间
+ if investType == ChConfig.InvestType_Life:
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_InvestRewardTime % (investType), int(time.time()))
+
for itemID, itemCount, isAuctionItem in rewardItemList:
ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem],
event=["Invest", False, {}])
--
Gitblit v1.8.0