From 44474c06a087e0940536fea6806786315d1114b3 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期五, 18 一月 2019 10:57:02 +0800
Subject: [PATCH] 5315 子 【1.5.100】登录奖励活动(初版)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py | 65 +++++++++++++++++++++++++++++---
1 files changed, 59 insertions(+), 6 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
index 36395d7..711919b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -45,7 +45,12 @@
import PlayerFlashGiftbag
import PlayerFairyCeremony
import PlayerGoldGift
+import PlayerActTotalRecharge
+import OpenServerCampaign
+import PlayerWeekParty
import ItemCommon
+
+import time
#---------------------------------------------------------------------
#注意: GetChangeCoinPointTotal 充值点和赠送点总和
@@ -55,8 +60,47 @@
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 = []
@@ -124,7 +168,7 @@
isAddBourseMoney = chargeInfo.GetIsAddBourseMoney()
appID = chargeInfo.GetAppID()
if not appID:
- appID = GameWorld.GetPlatform()
+ appID = GameWorld.GetPlayerPlatform(curPlayer)
addDRDict = {"orderCoin":orderCoin, "orderInfo":orderInfo, "orderID":orderID,
"isAddBourseMoney":isAddBourseMoney, "eventName":eventName, "appID":appID}
@@ -142,13 +186,13 @@
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):
@@ -158,7 +202,7 @@
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:
@@ -191,6 +235,7 @@
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
@@ -198,9 +243,9 @@
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)
@@ -219,6 +264,9 @@
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)
@@ -239,6 +287,11 @@
#仙界盛典-充值大礼
PlayerFairyCeremony.OnFCRecharge(curPlayer)
PlayerGoldGift.DayChargeRedPackAward(curPlayer)
+ #累积充值X元
+ PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin/100)
+ #开服活动
+ OpenServerCampaign.AddOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_Recharge, orderCoin)
+ PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Recharge, addVIPExp)
GameWorld.Log("Billing: eventName=%s, %s" % (eventName, addDRDict), curPlayer.GetPlayerID())
return
--
Gitblit v1.8.0