From 47f6627083fb64b82fb238b384ce23f29228e7f1 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期六, 15 六月 2019 15:16:50 +0800
Subject: [PATCH] 7292 【2.0】【后端】前2次升星成功率定制

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldInvest.py |  115 ++++++++++++++++++++++++---------------------------------
 1 files changed, 49 insertions(+), 66 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 a726441..ae2e1f0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldInvest.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldInvest.py
@@ -55,7 +55,6 @@
 #  @param curPlayer 玩家
 #  @return
 def OnLogin(curPlayer):
-    __CheckOldInvest(curPlayer)
     for iType in ChConfig.GoldInvestTypeList:
         Sync_GoldInvestInfo(curPlayer, iType)
     return
@@ -65,7 +64,6 @@
 #  @param curPlayer 玩家
 #  @return
 def OnDay(curPlayer):
-    __CheckOldInvest(curPlayer)
     #vip投资过了整个周期则重置
     __CheckInvestReset(curPlayer)
     
@@ -79,57 +77,21 @@
 
 def __CheckInvestReset(curPlayer):
     ##检查vip投资重置 超过28天或28天奖励已领取可重置
-    investType = ChConfig.GoldInvestType_VIP
-    investGoldRecord = __GetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_Gold % investType)
-    if not investGoldRecord:
-        return
-    curDay = __GetInvestCurDay(curPlayer, investType)
-    investMaxDayDict = IpyGameDataPY.GetFuncEvalCfg('InvestMaxDay')
-    maxDay = investMaxDayDict.get(str(investType), 0)
-    if curDay > maxDay or __GetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_GotRewardValue % (investType, maxDay)):
-        __SetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_Time % investType, 0)
-        __SetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_Gold % investType, 0)
-        for i in xrange(1, maxDay+1):
-            __SetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_GotRewardValue % (investType, i), 0)
-    Sync_GoldInvestInfo(curPlayer, investType, isForce=True)
+    for investType in ChConfig.CanRepeatInvestType:
+        investGoldRecord = __GetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_Gold % investType)
+        if not investGoldRecord:
+            return
+        curDay = __GetInvestCurDay(curPlayer, investType)
+        investMaxDayDict = IpyGameDataPY.GetFuncEvalCfg('InvestMaxDay')
+        maxDay = investMaxDayDict.get(str(investType), 0)
+        if curDay > maxDay or __GetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_GotRewardValue % (investType, maxDay)):
+            __SetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_Time % investType, 0)
+            __SetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_Gold % investType, 0)
+            for i in xrange(1, maxDay+1):
+                __SetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_GotRewardValue % (investType, i), 0)
+        Sync_GoldInvestInfo(curPlayer, investType, isForce=True)
     return
 
-def __CheckOldInvest(curPlayer):
-    #旧版本投资补偿
-    investType = ChConfig.GoldInvestType_VIP
-    investGoldRecord = __GetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_Gold % investType)
-    if investGoldRecord != 300:
-        return
-    maxDay = 28
-    curDay = __GetInvestCurDay(curPlayer, investType)
-    if curDay > maxDay:
-        return
-    if __GetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_GotRewardValue % (investType, curDay)):
-        sendDayList = range(curDay+1,maxDay+1)
-    else:
-        sendDayList = range(curDay, maxDay+1)
-    if sendDayList:
-        sendItemDict = {}
-        for day in sendDayList:
-            index = day%7
-            if index == 0:
-                index = 7
-            ipyData = IpyGameDataPY.GetIpyGameData('Invest', investType*100+index)
-            if not ipyData:
-                continue
-            itemList = ipyData.GetReward()['1']
-            for itemID, itemCnt, isBind in itemList:
-                sendItemDict[itemID] = sendItemDict.get(itemID, 0) + itemCnt
-    
-        sendItemList = [(itemID, itemCnt, 1) for itemID, itemCnt in sendItemDict.items()]
-        PlayerControl.SendMailByKey('VIPInvest', [curPlayer.GetID()], sendItemList, [len(sendDayList)])
-        GameWorld.Log('    旧版本投资补偿 sendDay=%s, sendItemList=%s'%(len(sendDayList), sendItemList), curPlayer.GetID())
-        
-    __SetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_Time % investType, 0)
-    __SetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_Gold % investType, 0)
-    for i in xrange(1, maxDay+1):
-        __SetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_GotRewardValue % (investType, i), 0)
-    return
 #// A5 40 投资理财 #tagCMGoldInvest
 #
 #struct    tagCMGoldInvest
@@ -145,8 +107,6 @@
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
     investType = clientData.InvestType
     investGold = clientData.InvestGold
-    
-    GameWorld.DebugLog("投资理财:investType=%s,investGold=%s" % (investType, investGold))
     investCostDict = IpyGameDataPY.GetFuncEvalCfg('InvestCost')
     if str(investType) not in investCostDict:
         return
@@ -154,17 +114,36 @@
     if investGold not in costList:
         GameWorld.DebugLog('    投资理财 投资额度不存在 investGold=%s, investType=%s'%(investGold, investType))
         return
-    
     awardData = costList.index(investGold) + 1
     if investType == ChConfig.GoldInvestType_VIP:
         awardData = __GetInvestLVData(curPlayer)
-        needVIPLV = IpyGameDataPY.GetFuncCfg('VIPInvest', 2)
-        if curPlayer.GetVIPLv() < needVIPLV:
-            GameWorld.DebugLog('    投资理财 需要VIP%s'%(needVIPLV))
-            return
+    __DoLogicInvest(curPlayer, investType, investGold, awardData)
+    return
+
+def InvestByCTG(curPlayer, ctgID):
+    ## 充值投资
+    ctgInvestDict = IpyGameDataPY.GetFuncEvalCfg('InvestCost', 3, {})
+    for investType, ctgIDList in ctgInvestDict.items():
+        if ctgID in ctgIDList:
+            __DoLogicInvest(curPlayer, int(investType), ctgID, 1)
+            GameWorld.Log('投资理财 investType=%s,ctgID=%s'%(investType, ctgID), curPlayer.GetID())
+            break
+    return
+
+
+def __DoLogicInvest(curPlayer, investType, investGold, awardData):
+    GameWorld.DebugLog("投资理财:investType=%s,investGold=%s, awardData=%s" % (investType, investGold, awardData))
+    
+    needVIPLVDict = IpyGameDataPY.GetFuncEvalCfg('InvestCost', 2, {})
+    needVIPLV = needVIPLVDict.get(str(investType), 0)
+    if curPlayer.GetVIPLv() < needVIPLV:
+        GameWorld.DebugLog('    投资理财 需要VIP%s'%(needVIPLV))
+        return
     
         
     deductGold = investGold
+    if str(investType) in IpyGameDataPY.GetFuncEvalCfg('InvestCost', 3, {}):
+        deductGold = 0 #充钱的不用扣仙玉
     investGoldRecord = __GetPDictValue(curPlayer, ChConfig.Def_PDict_GoldInvest_Gold % investType)
     if investGoldRecord:
         curDay = __GetInvestCurDay(curPlayer, investType)
@@ -196,11 +175,11 @@
         else:
             GameWorld.DebugLog("    investType = %s 已投资过,不可重复投资" % investType)
             return
-    elif investType in ChConfig.InvestGoldTypeList:
-        goldInvestLVLimit = IpyGameDataPY.GetFuncEvalCfg('GoldInvestLVLimit', 1, {}).get(investType, 0)
-        if goldInvestLVLimit and curPlayer.GetLV() > goldInvestLVLimit:
-            GameWorld.DebugLog('    仙玉投资理财 等级不能高于%s'%(goldInvestLVLimit))
-            return
+#    elif investType in ChConfig.InvestGoldTypeList:
+#        goldInvestLVLimit = IpyGameDataPY.GetFuncEvalCfg('GoldInvestLVLimit', 1, {}).get(investType, 0)
+#        if goldInvestLVLimit and curPlayer.GetLV() > goldInvestLVLimit:
+#            GameWorld.DebugLog('    仙玉投资理财 等级不能高于%s'%(goldInvestLVLimit))
+#            return
         
     __DoGoldInvest(curPlayer, investType, investGold, deductGold, awardData)
     return
@@ -232,7 +211,7 @@
                                   ChConfig.Def_Cost_GoldInvest, infoDict):
         return
     #红包奖励
-    if investGold == deductGold:
+    if not (investType in ChConfig.InvestGoldTypeList and investGold != deductGold):
         redPacketID = IpyGameDataPY.GetFuncEvalCfg('InvestRedPackAward', 1, {}).get(investType, 0)
         if redPacketID:
             PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, redPacketID)
@@ -240,7 +219,11 @@
         PlayerControl.WorldNotify(0, 'VIPInvestmentRadio', [curPlayer.GetName()])
     elif investType in ChConfig.InvestGoldTypeList:
         PlayerControl.WorldNotify(0, 'JadeInvestmentRadio', [curPlayer.GetName(), investGold])
-
+    elif investType == ChConfig.GoldInvestType_Month:
+        PlayerControl.WorldNotify(0, 'MonthInvestment', [curPlayer.GetName()])
+    elif investType == ChConfig.GoldInvestType_Week:
+        PlayerControl.WorldNotify(0, 'WeekInPInvestment', [curPlayer.GetName()])
+        
     # 更新投资时时间,投资金额,重置回报记录
     curTime = GameWorld.GetCurrentTime()
     curTimeNum = GameWorld.ChangeTimeStrToNum(str(curTime)[:10], ChConfig.TYPE_Time_Format_Day)
@@ -341,7 +324,7 @@
     GameWorld.DebugLog("    领取投资理财回报 rewardItemList=%s" % (rewardItemList))
     if rewardItemList:
         for itemID, itemCnt, isBind in rewardItemList:
-            ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem, IPY_GameWorld.rptAnyWhere], True, showSysInfo=True)
+            ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem, IPY_GameWorld.rptAnyWhere])
     
     __CheckInvestReset(curPlayer)
     # 记录领取事件

--
Gitblit v1.8.0