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