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