| | |
| | | import PlayerFlashGiftbag
|
| | | import PlayerFairyCeremony
|
| | | import PlayerGoldGift
|
| | | import PlayerActTotalRecharge
|
| | | import OpenServerCampaign
|
| | | import ItemCommon
|
| | |
|
| | | import time
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | #注意: GetChangeCoinPointTotal 充值点和赠送点总和
|
| | |
| | | def GetCoinRate(): return IpyGameDataPY.GetFuncCfg("PayRMB")
|
| | |
|
| | | def OnLogin(curPlayer):
|
| | | DoResetCTGCount(curPlayer) |
| | | Sync_CoinToGoldCountInfo(curPlayer)
|
| | | return
|
| | |
|
| | | def DoResetCTGCount(curPlayer):
|
| | | # 重置充值次数
|
| | | ctgResetTimeYMD = IpyGameDataPY.GetFuncCfg("CTG", 1)
|
| | | if not ctgResetTimeYMD:
|
| | | return
|
| | | if not isinstance(ctgResetTimeYMD, int):
|
| | | GameWorld.ErrLog("充值重置时间配置必须是数值格式,不能包含符号!")
|
| | | return
|
| | | curTime = int(time.time())
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | resetTime = GameWorld.ChangeTimeStrToNum(str(ctgResetTimeYMD), "%Y%m%d")
|
| | | if curTime < resetTime:
|
| | | #GameWorld.DebugLog("还未到达充值充值次数时间!curTime=%s < resetTime=%s" % (curTime, resetTime), playerID)
|
| | | return
|
| | | playerResetTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGCountResetTime)
|
| | | if playerResetTime == resetTime:
|
| | | #GameWorld.DebugLog("已经重置过充值次数!resetTime=%s" % resetTime, playerID)
|
| | | return
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGCountResetTime, resetTime)
|
| | | |
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for i in xrange(ipyDataMgr.GetCTGCount()):
|
| | | ipyData = ipyDataMgr.GetCTGByIndex(i)
|
| | | recordID = ipyData.GetRecordID()
|
| | | totalBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGGoodsBuyCount % recordID)
|
| | | todayBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TodayCTGCount % recordID)
|
| | | if not totalBuyCount and not todayBuyCount:
|
| | | continue
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGGoodsBuyCount % recordID, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TodayCTGCount % recordID, 0)
|
| | | drDict = {"PlayerID":curPlayer.GetPlayerID(),"AccID":curPlayer.GetAccID(), "ResetTimeYMD":ctgResetTimeYMD,
|
| | | "totalBuyCount":totalBuyCount, "todayBuyCount":todayBuyCount, "recordID":recordID}
|
| | | DataRecordPack.SendEventPack("ResetCTGCount", drDict, curPlayer)
|
| | | GameWorld.Log("重置充值次数: ResetTimeYMD=%s,recordID=%s,totalBuyCount=%s,todayBuyCount=%s" |
| | | % (ctgResetTimeYMD, recordID, totalBuyCount, todayBuyCount), playerID)
|
| | | return
|
| | |
|
| | |
|
| | | def OnDay(curPlayer):
|
| | | syncRecordIDList = []
|
| | |
| | | isAddBourseMoney = chargeInfo.GetIsAddBourseMoney()
|
| | | appID = chargeInfo.GetAppID()
|
| | | if not appID:
|
| | | appID = GameWorld.GetPlayerPlatform(curPlayer.GetAccID())
|
| | | appID = GameWorld.GetPlayerPlatform(curPlayer)
|
| | | addDRDict = {"orderCoin":orderCoin, "orderInfo":orderInfo, "orderID":orderID,
|
| | | "isAddBourseMoney":isAddBourseMoney, "eventName":eventName, "appID":appID}
|
| | |
|
| | |
| | | DataRecordPack.DR_CTGError(curPlayer, "The orderCoin is not equal to the ipyData's RMB(%s)!" % payRMBNum, addDRDict)
|
| | | return
|
| | |
|
| | | addGold, prizeGold, giveItemList = 0, 0, []
|
| | | addGold, prizeGold, giveItemList, notifyMark = 0, 0, [], ''
|
| | |
|
| | | if ipyData.GetCTGID():
|
| | | ctgResultInfo = __GetCTGInfoByID(curPlayer, chargeInfo, ipyData.GetCTGID(), eventName, addDRDict, isAddBourseMoney)
|
| | | if not ctgResultInfo:
|
| | | return
|
| | | addGold, prizeGold, giveItemList = ctgResultInfo
|
| | | addGold, prizeGold, giveItemList, notifyMark = ctgResultInfo
|
| | |
|
| | | elif ipyData.GetGiftbagID():
|
| | | if not PlayerFlashGiftbag.OnPlayerOrderGiftbag(curPlayer, [ipyData.GetGiftbagID()], addDRDict):
|
| | |
| | | DataRecordPack.DR_CTGError(curPlayer, "The orderInfo is useless!", addDRDict)
|
| | | return
|
| | |
|
| | | DoCTGLogic(curPlayer, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict)
|
| | | DoCTGLogic(curPlayer, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict, notifyMark)
|
| | |
|
| | | #充值成功主动查询一次,无充值数量就不会继续查询
|
| | | if orderID:
|
| | |
| | | addGold = ipyData.GetGainGold() # 获得仙玉数
|
| | | gainGoldPrize = ipyData.GetGainGoldPrize() # 赠送仙玉数,首次充值赠送仙玉时,此仙玉不给
|
| | | firstGoldPrize = ipyData.GetFirstGoldPrize() # 首次充值赠送的仙玉
|
| | | notifyMark = ipyData.GetNotifyMark()
|
| | | totalBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGGoodsBuyCount % recordID)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGGoodsBuyCount % recordID, totalBuyCount + 1)
|
| | | prizeGold = firstGoldPrize if (not totalBuyCount and firstGoldPrize) else gainGoldPrize
|
| | |
| | | addDRDict.update({"totalBuyCount":(totalBuyCount + 1)})
|
| | |
|
| | | Sync_CoinToGoldCountInfo(curPlayer, [recordID])
|
| | | return addGold, prizeGold, giveItemList
|
| | | return addGold, prizeGold, giveItemList, notifyMark
|
| | |
|
| | | def DoCTGLogic(curPlayer, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict):
|
| | | def DoCTGLogic(curPlayer, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict, notifyMark=''):
|
| | | goldBefore = curPlayer.GetGold()
|
| | | bourseMoneyBefore = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney)
|
| | |
|
| | |
| | | for itemID, itemCount, isBind in giveItemList:
|
| | | ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem],
|
| | | event=[ChConfig.ItemGive_CTG, True, addDRDict])
|
| | | if notifyMark:
|
| | | mainItemID = giveItemList[0][0]
|
| | | PlayerControl.WorldNotify(0, notifyMark, [curPlayer.GetName(), mainItemID, ''])
|
| | |
|
| | | addVIPExp = int(orderCoin / 100 * GetCoinRate())
|
| | | PlayerVip.AddVIPExp(curPlayer, addVIPExp)
|
| | |
| | | #仙界盛典-充值大礼
|
| | | PlayerFairyCeremony.OnFCRecharge(curPlayer)
|
| | | PlayerGoldGift.DayChargeRedPackAward(curPlayer)
|
| | | #累积充值X元
|
| | | PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin/100)
|
| | | #开服活动
|
| | | OpenServerCampaign.AddOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_Recharge, orderCoin)
|
| | | GameWorld.Log("Billing: eventName=%s, %s" % (eventName, addDRDict), curPlayer.GetPlayerID())
|
| | | return
|
| | |
|