From 7712ee7c2ae0a55610a18d962e9d51faf0372609 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 17 七月 2019 11:15:44 +0800
Subject: [PATCH] 8101 【主干】【后端】全民冲榜的神兵排行榜改成升星排行榜(榜单GM命令说明增加升星榜25)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py | 76 +++++++++++++++++++++++++++-----------
1 files changed, 54 insertions(+), 22 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 711919b..f6e8aba 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -44,10 +44,12 @@
import ShareDefine
import PlayerFlashGiftbag
import PlayerFairyCeremony
+import PlayerNewFairyCeremony
import PlayerGoldGift
import PlayerActTotalRecharge
import OpenServerCampaign
import PlayerWeekParty
+import PlayerGoldInvest
import ItemCommon
import time
@@ -60,11 +62,11 @@
def GetCoinRate(): return IpyGameDataPY.GetFuncCfg("PayRMB")
def OnLogin(curPlayer):
- DoResetCTGCount(curPlayer)
- Sync_CoinToGoldCountInfo(curPlayer)
+ if not DoResetCTGCountByTime(curPlayer):
+ Sync_CoinToGoldCountInfo(curPlayer)
return
-def DoResetCTGCount(curPlayer):
+def DoResetCTGCountByTime(curPlayer):
# 重置充值次数
ctgResetTimeYMD = IpyGameDataPY.GetFuncCfg("CTG", 1)
if not ctgResetTimeYMD:
@@ -73,7 +75,7 @@
GameWorld.ErrLog("充值重置时间配置必须是数值格式,不能包含符号!")
return
curTime = int(time.time())
- playerID = curPlayer.GetPlayerID()
+ #playerID = curPlayer.GetPlayerID()
resetTime = GameWorld.ChangeTimeStrToNum(str(ctgResetTimeYMD), "%Y%m%d")
if curTime < resetTime:
#GameWorld.DebugLog("还未到达充值充值次数时间!curTime=%s < resetTime=%s" % (curTime, resetTime), playerID)
@@ -84,21 +86,31 @@
return
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGCountResetTime, resetTime)
+ DoResetCTGCount(curPlayer, ctgResetTimeYMD)
+ return True
+
+def DoResetCTGCount(curPlayer, resetEvent):
+ # 重置充值次数
+
+ playerID = curPlayer.GetPlayerID()
ipyDataMgr = IpyGameDataPY.IPY_Data()
for i in xrange(ipyDataMgr.GetCTGCount()):
ipyData = ipyDataMgr.GetCTGByIndex(i)
recordID = ipyData.GetRecordID()
+ if not ipyData.GetCanResetBuyCount():
+ continue
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,
+ drDict = {"PlayerID":curPlayer.GetPlayerID(),"AccID":curPlayer.GetAccID(), "ResetEvent":resetEvent,
"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)
+ GameWorld.Log("重置充值次数: resetEvent=%s,recordID=%s,totalBuyCount=%s,todayBuyCount=%s"
+ % (resetEvent, recordID, totalBuyCount, todayBuyCount), playerID)
+ Sync_CoinToGoldCountInfo(curPlayer)
return
@@ -166,6 +178,9 @@
orderInfo = chargeInfo.GetOrderInfo() # 商品编号
orderID = chargeInfo.GetOrderID() #订单号,兑换成功后清除
isAddBourseMoney = chargeInfo.GetIsAddBourseMoney()
+ if orderID:
+ curPlayer.SendDBFinishRecharge(orderID)
+
appID = chargeInfo.GetAppID()
if not appID:
appID = GameWorld.GetPlayerPlatform(curPlayer)
@@ -202,11 +217,11 @@
DataRecordPack.DR_CTGError(curPlayer, "The orderInfo is useless!", addDRDict)
return
- DoCTGLogic(curPlayer, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict, notifyMark)
+ DoCTGLogic(curPlayer, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict, notifyMark, ipyData)
#充值成功主动查询一次,无充值数量就不会继续查询
if orderID:
- curPlayer.SendDBFinishRecharge(orderID)
+ #curPlayer.SendDBFinishRecharge(orderID)
# 充值成功回报客户端,SDK等会用到
Sync_CoinToGoldReport(curPlayer, orderID, orderCoin)
@@ -221,31 +236,42 @@
DataRecordPack.DR_CTGError(curPlayer, "Can not find CTG ipyData!", addDRDict)
return
- dailyBuyCount = ipyData.GetDailyBuyCount()
addDRDict.update({"recordID":recordID})
+
+ totalBuyCountLimit = ipyData.GetTotalBuyCount()
+ totalBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGGoodsBuyCount % recordID)
+ if totalBuyCountLimit:
+ addDRDict.update({"totalBuyCountLimit":totalBuyCountLimit, "totalBuyCount":totalBuyCount})
+ if totalBuyCount >= totalBuyCountLimit:
+ DataRecordPack.DR_CTGError(curPlayer, "Pay count limit total!totalBuyCount=%s" % totalBuyCount, addDRDict)
+ return
+
+ dailyBuyCountLimit = ipyData.GetDailyBuyCount()
todayBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TodayCTGCount % recordID)
- if dailyBuyCount:
- addDRDict.update({"dailyCanBuyCount":dailyBuyCount, "todayBuyCount":todayBuyCount})
- if todayBuyCount >= dailyBuyCount:
+ if dailyBuyCountLimit:
+ addDRDict.update({"dailyBuyCountLimit":dailyBuyCountLimit, "todayBuyCount":todayBuyCount})
+ if todayBuyCount >= dailyBuyCountLimit:
DataRecordPack.DR_CTGError(curPlayer, "Pay count limit today!todayBuyCount=%s" % todayBuyCount, addDRDict)
return
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TodayCTGCount % recordID, todayBuyCount + 1)
-
+
+ if totalBuyCountLimit:
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGGoodsBuyCount % recordID, totalBuyCount + 1)
+ addDRDict.update({"totalBuyCountUpd":(totalBuyCount + 1)})
+ if dailyBuyCountLimit:
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TodayCTGCount % recordID, todayBuyCount + 1)
+ addDRDict.update({"todayBuyCountUpd":(todayBuyCount + 1)})
+
giveItemList = ipyData.GetGainItemList()
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, notifyMark
-def DoCTGLogic(curPlayer, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict, notifyMark=''):
+def DoCTGLogic(curPlayer, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict, notifyMark='', ipyData=None):
goldBefore = curPlayer.GetGold()
bourseMoneyBefore = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney)
@@ -262,7 +288,7 @@
PlayerControl.SendMailByKey("", [curPlayer.GetPlayerID()], giveItemList)
else:
for itemID, itemCount, isBind in giveItemList:
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem],
+ ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem],
event=[ChConfig.ItemGive_CTG, True, addDRDict])
if notifyMark:
mainItemID = giveItemList[0][0]
@@ -286,12 +312,18 @@
#---充值成功后逻辑---
#仙界盛典-充值大礼
PlayerFairyCeremony.OnFCRecharge(curPlayer)
+ PlayerNewFairyCeremony.OnFCRecharge(curPlayer)
PlayerGoldGift.DayChargeRedPackAward(curPlayer)
#累积充值X元
PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin/100)
+ PlayerFairyCeremony.AddFCCostGold(curPlayer, orderCoin/100)
+ PlayerNewFairyCeremony.AddFCCostGold(curPlayer, orderCoin/100)
#开服活动
- OpenServerCampaign.AddOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_Recharge, orderCoin)
+ #OpenServerCampaign.AddOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_Recharge, orderCoin)
PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Recharge, addVIPExp)
+ #投资
+ if ipyData:
+ PlayerGoldInvest.InvestByCTG(curPlayer, ipyData.GetCTGID())
GameWorld.Log("Billing: eventName=%s, %s" % (eventName, addDRDict), curPlayer.GetPlayerID())
return
--
Gitblit v1.8.0