| | |
| | | # @param curPlayer 玩家
|
| | | # @return
|
| | | def OnLogin(curPlayer):
|
| | | __CheckOldInvest(curPlayer)
|
| | | for iType in ChConfig.GoldInvestTypeList:
|
| | | Sync_GoldInvestInfo(curPlayer, iType)
|
| | | return
|
| | |
| | | # @param curPlayer 玩家
|
| | | # @return
|
| | | def OnDay(curPlayer):
|
| | | __CheckOldInvest(curPlayer)
|
| | | #vip投资过了整个周期则重置
|
| | | __CheckInvestReset(curPlayer)
|
| | |
|
| | |
| | | __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
|
| | |
| | |
|
| | |
|
| | | # 不可循环投资,但可追加投资
|
| | | elif investType in [ChConfig.GoldInvestType_Gold]:
|
| | | elif investType in ChConfig.InvestGoldTypeList:
|
| | | if investGoldRecord >= investGold:
|
| | | GameWorld.DebugLog(" 已投资档次=%s >= 追加投资档次=%s ,不可追加投资!"
|
| | | % (investGoldRecord, investGold))
|
| | |
| | | else:
|
| | | GameWorld.DebugLog(" investType = %s 已投资过,不可重复投资" % investType)
|
| | | return
|
| | | elif investType == ChConfig.GoldInvestType_Gold:
|
| | | goldInvestLVLimit = IpyGameDataPY.GetFuncCfg('GoldInvestLVLimit')
|
| | | if 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
|
| | |
| | | PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, redPacketID)
|
| | | if investType == ChConfig.GoldInvestType_VIP:
|
| | | PlayerControl.WorldNotify(0, 'VIPInvestmentRadio', [curPlayer.GetName()])
|
| | | elif investType == ChConfig.GoldInvestType_Gold:
|
| | | elif investType in ChConfig.InvestGoldTypeList:
|
| | | PlayerControl.WorldNotify(0, 'JadeInvestmentRadio', [curPlayer.GetName(), investGold])
|
| | |
|
| | | # 更新投资时时间,投资金额,重置回报记录
|
| | |
| | | lastDayGotData = __GetPDictValue(curPlayer, rewardValueKey) # 已领取数据
|
| | |
|
| | | if lastDayGotData:
|
| | | if investType == ChConfig.GoldInvestType_Gold:
|
| | | if investType in ChConfig.InvestGoldTypeList:
|
| | | if awardData > lastDayGotData:
|
| | | lastGotAwardList = rewardDict[str(lastDayGotData)]
|
| | | rewardItemList = []
|
| | |
| | | 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)
|
| | | # 记录领取事件
|