From fee42f94b6eed8592d24e24726d8b7cb058c0d1a Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期四, 04 七月 2019 15:25:40 +0800 Subject: [PATCH] 7788 【2.0.200】【后端】周卡月卡调整 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldInvest.py | 80 +++++++++++++++++++++++++++++++++++++++ 1 files changed, 79 insertions(+), 1 deletions(-) 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 ae2e1f0..cae352a 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldInvest.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldInvest.py @@ -55,6 +55,7 @@ # @param curPlayer 玩家 # @return def OnLogin(curPlayer): + CheckOldInvestMail(curPlayer) for iType in ChConfig.GoldInvestTypeList: Sync_GoldInvestInfo(curPlayer, iType) return @@ -64,6 +65,7 @@ # @param curPlayer 玩家 # @return def OnDay(curPlayer): + CheckOldInvestMail(curPlayer) #vip投资过了整个周期则重置 __CheckInvestReset(curPlayer) @@ -91,6 +93,82 @@ __SetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_GotRewardValue % (investType, i), 0) Sync_GoldInvestInfo(curPlayer, investType, isForce=True) return + +def CheckOldInvestMail(curPlayer): + ## 老号旧投资邮件补偿 + investMaxDayDict = IpyGameDataPY.GetFuncEvalCfg('InvestMaxDay') + + for oldInvestType in [ChConfig.GoldInvestType_Month, ChConfig.GoldInvestType_Week]: + investGoldRecord = __GetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_Gold % oldInvestType) + if not investGoldRecord: + continue + curDay = __GetInvestCurDay(curPlayer, oldInvestType) + maxDay = investMaxDayDict.get(str(oldInvestType), 0) + hasGotGold, lostGold, notGetGold, notGetDays = 0, 0, 0, 0 #已领取,错过领取,未领取,还有几天可领 + for day in xrange(1, maxDay+1): + ipyData = IpyGameDataPY.GetIpyGameData('Invest', oldInvestType*100+day) + if not ipyData: + continue + rewardDict = ipyData.GetReward() + awardData = __GetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_AwardData % oldInvestType, 1) + if str(awardData) not in rewardDict: + GameWorld.DebugLog(' 旧投资邮件补偿, rewardDict=%s, 没有key=%s'%(rewardDict, awardData)) + continue + rewardList = rewardDict[str(awardData)] + gold = rewardList[0][1] + rewardRecord = __GetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_GotRewardValue % (oldInvestType, day)) + if rewardRecord: + hasGotGold += gold + elif day < curDay: + lostGold += gold + else: + notGetGold += gold + notGetDays += 1 + GameWorld.DebugLog('旧投资邮件补偿 oldInvestType=%s,hasGotGold=%s, lostGold=%s, notGetGold=%s,notGetDays=%s'% + (oldInvestType, hasGotGold, lostGold, notGetGold, notGetDays)) + if not notGetGold: + continue + if oldInvestType == ChConfig.GoldInvestType_Week: + PlayerControl.SendMailByKey('WeekCardMail', [curPlayer.GetID()], [], [notGetDays, notGetGold], notGetGold) + elif oldInvestType == ChConfig.GoldInvestType_Month: + newInvestType = ChConfig.GoldInvestType_NewMonth + newMaxDay = investMaxDayDict.get(str(newInvestType), 0) + newTotalGold = 0 + for day in xrange(1, newMaxDay+1): + ipyData = IpyGameDataPY.GetIpyGameData('Invest', newInvestType*100+day) + if not ipyData: + continue + rewardDict = ipyData.GetReward() + awardData = __GetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_AwardData % newInvestType, 1) + if str(awardData) not in rewardDict: + GameWorld.DebugLog(' 旧投资邮件补偿, rewardDict=%s, 没有key=%s'%(rewardDict, awardData)) + continue + rewardList = rewardDict[str(awardData)] + gold = rewardList[0][1] + newTotalGold+=gold + oldTotalGold = hasGotGold+ lostGold+notGetGold + giveGold = newTotalGold-oldTotalGold + notGetGold + if not giveGold: + continue + if lostGold: + paramList = [newTotalGold, oldTotalGold, hasGotGold, lostGold, notGetGold, notGetGold, newTotalGold-oldTotalGold] + else: + paramList = [newTotalGold, oldTotalGold, hasGotGold, notGetGold, notGetGold, newTotalGold-oldTotalGold] + PlayerControl.SendMailByKey('MonthCardMail2' if lostGold else 'MonthCardMail1', [curPlayer.GetID()], [], paramList, giveGold) + #重置数据 + valueKey = ChConfig.Def_PDict_GoldInvest_Time % oldInvestType + PlayerControl.NomalDictSetProperty(curPlayer, valueKey, 0, ChConfig.Def_PDictType_GoldInvest) + + valueKey = ChConfig.Def_PDict_GoldInvest_Gold % oldInvestType + PlayerControl.NomalDictSetProperty(curPlayer, valueKey, 0, ChConfig.Def_PDictType_GoldInvest) + + valueKey = ChConfig.Def_PDict_GoldInvest_AwardData % oldInvestType + PlayerControl.NomalDictSetProperty(curPlayer, valueKey, 0, ChConfig.Def_PDictType_GoldInvest) + for i in xrange(1, maxDay+1): + valueKey = ChConfig.Def_PDict_GoldInvest_GotRewardValue % (oldInvestType, i) + PlayerControl.NomalDictSetProperty(curPlayer, valueKey, 0, ChConfig.Def_PDictType_GoldInvest) + return + #// A5 40 投资理财 #tagCMGoldInvest # @@ -219,7 +297,7 @@ PlayerControl.WorldNotify(0, 'VIPInvestmentRadio', [curPlayer.GetName()]) elif investType in ChConfig.InvestGoldTypeList: PlayerControl.WorldNotify(0, 'JadeInvestmentRadio', [curPlayer.GetName(), investGold]) - elif investType == ChConfig.GoldInvestType_Month: + elif investType == ChConfig.GoldInvestType_NewMonth: PlayerControl.WorldNotify(0, 'MonthInvestment', [curPlayer.GetName()]) elif investType == ChConfig.GoldInvestType_Week: PlayerControl.WorldNotify(0, 'WeekInPInvestment', [curPlayer.GetName()]) -- Gitblit v1.8.0