10170 【越南】【主干】【港台】终身卡(过天补发每日奖励未领取累计天数奖励;)
2个文件已修改
45 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldInvest.py 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
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, {}])