From a0d7967e913a22bfb43bc7b82c538dc47a3bc546 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 19 六月 2019 15:16:28 +0800
Subject: [PATCH] 7385 【2.0】【后端】超值礼包修改(充值表增加字段配置是否允许重置次数、总限购次数)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py     |    6 ++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py |   33 +++++++++++++++++++++++----------
 PySysDB/PySysDBPY.h                                                                      |    2 ++
 3 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 881af95..11d93c2 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1161,6 +1161,8 @@
 struct tagCTG
 {
 	BYTE		_RecordID;		//记录ID
+	BYTE		CanResetBuyCount;	//是否允许重置次数
+	BYTE		TotalBuyCount;	//总限购次数
 	BYTE		DailyBuyCount;	//每日限购次数
 	WORD		GainGold;	//获得仙玉数
 	WORD		GainGoldPrize;	//赠送仙玉数
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index df473b5..0bebfc8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -924,6 +924,8 @@
 
                 "CTG":(
                         ("BYTE", "RecordID", 1),
+                        ("BYTE", "CanResetBuyCount", 0),
+                        ("BYTE", "TotalBuyCount", 0),
                         ("BYTE", "DailyBuyCount", 0),
                         ("WORD", "GainGold", 0),
                         ("WORD", "GainGoldPrize", 0),
@@ -3346,6 +3348,8 @@
     
     def __init__(self):
         self.RecordID = 0
+        self.CanResetBuyCount = 0
+        self.TotalBuyCount = 0
         self.DailyBuyCount = 0
         self.GainGold = 0
         self.GainGoldPrize = 0
@@ -3355,6 +3359,8 @@
         return
         
     def GetRecordID(self): return self.RecordID # 记录ID
+    def GetCanResetBuyCount(self): return self.CanResetBuyCount # 是否允许重置次数
+    def GetTotalBuyCount(self): return self.TotalBuyCount # 总限购次数
     def GetDailyBuyCount(self): return self.DailyBuyCount # 每日限购次数
     def GetGainGold(self): return self.GainGold # 获得仙玉数
     def GetGainGoldPrize(self): return self.GainGoldPrize # 赠送仙玉数
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 ebec6cb..a8d46ac 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -97,6 +97,8 @@
     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:
@@ -234,26 +236,37 @@
         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

--
Gitblit v1.8.0