From 6ed7fdf75d8bfcdbde5e8eaf0f5698a45e359076 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 13 十二月 2021 14:16:58 +0800
Subject: [PATCH] 9293 【BT5】【后端】新增绝版礼包

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py             |    3 +++
 PySysDB/PySysDBPY.h                                                                              |    1 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py |   20 +++++++++++++++++---
 3 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 3e0eb5c..70bebc7 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1402,6 +1402,7 @@
 	WORD		AdvanceMinutes;	//前端提前X分钟展示活动
 	WORD		LVLimit;	//限制等级
 	BYTE		IsDayReset;	//是否每天重置
+	BYTE		IsJueban;	//是否绝版礼包
 	dict		GiftbagTypeList;	//礼包类型列表
 	char		MailKey;		//活动更新时发送邮件key
 	list		MailItemPrize;		//活动更新时发送邮件奖励物品
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 64cdfe4..c463af9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1123,6 +1123,7 @@
                         ("WORD", "AdvanceMinutes", 0),
                         ("WORD", "LVLimit", 0),
                         ("BYTE", "IsDayReset", 0),
+                        ("BYTE", "IsJueban", 0),
                         ("dict", "GiftbagTypeList", 0),
                         ("char", "MailKey", 0),
                         ("list", "MailItemPrize", 0),
@@ -4218,6 +4219,7 @@
         self.AdvanceMinutes = 0
         self.LVLimit = 0
         self.IsDayReset = 0
+        self.IsJueban = 0
         self.GiftbagTypeList = {}
         self.MailKey = ""
         self.MailItemPrize = []
@@ -4231,6 +4233,7 @@
     def GetAdvanceMinutes(self): return self.AdvanceMinutes # 前端提前X分钟展示活动
     def GetLVLimit(self): return self.LVLimit # 限制等级
     def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
+    def GetIsJueban(self): return self.IsJueban # 是否绝版礼包
     def GetGiftbagTypeList(self): return self.GiftbagTypeList # 礼包类型列表
     def GetMailKey(self): return self.MailKey # 活动更新时发送邮件key
     def GetMailItemPrize(self): return self.MailItemPrize # 活动更新时发送邮件奖励物品
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py
index 31c25c8..2e22b00 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py
@@ -127,7 +127,9 @@
         if not state:
             continue
         
-        giftbagTypeList = GetGiftbagTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0), actInfo.get(ShareDefine.ActKey_WorldLV, 0))
+        cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
+        giftbagTypeList = GetGiftbagTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0), actInfo.get(ShareDefine.ActKey_WorldLV, 0))
+        
         if not giftbagTypeList:
             continue
         actGiftbagType = giftbagTypeList[-1] if state > len(giftbagTypeList) else giftbagTypeList[state - 1]
@@ -143,6 +145,18 @@
         if not giftbagIpyData:
             continue
         
+        flashGiftbagIpyData = IpyGameDataPY.GetIpyGameData("ActFlashGiftbag", cfgID)
+        if not flashGiftbagIpyData:
+            continue
+        isJueban = flashGiftbagIpyData.GetIsJueban()
+        if isJueban:
+            for ipyData in giftbagIpyDataList:
+                juebanGiftbagID = ipyData.GetGiftbagID()
+                juebanBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagBuyCount % (actNum, juebanGiftbagID))
+                if juebanGiftbagID not in giftbagIDList and juebanBuyCount > 0:
+                    DataRecordPack.DR_CTGError(curPlayer, "FlashGiftbag JueBan pay limit! have already bought other giftbagID=%s" % juebanGiftbagID, addDRDict)
+                    return
+                
         giftbagID = giftbagIpyData.GetGiftbagID()
         giftItemList = __GetJobItemList(giftbagIpyData.GetGiftItemList(), curPlayer.GetJob()) 
         addDRDict.update({"giftbagID":giftbagID, "giftItemList":giftItemList})
@@ -171,8 +185,8 @@
         PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_GiftBag, actGiftbagType, False)
         
         canBuy = True
-        GameWorld.DebugLog("    购买限时礼包: actNum=%s,actGiftbagType=%s,giftbagID=%s,buyCount=%s" 
-                           % (actNum, actGiftbagType, giftbagID, buyCount + 1))
+        GameWorld.DebugLog("    购买限时礼包: actNum=%s,actGiftbagType=%s,giftbagID=%s,buyCount=%s,isJueban=%s" 
+                           % (actNum, actGiftbagType, giftbagID, buyCount + 1, isJueban))
         break
     
     if not canBuy:

--
Gitblit v1.8.0