From 75c16c80bcacd22c5e0bc4c7a77ffca594ad4e2f Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期二, 25 九月 2018 21:16:21 +0800
Subject: [PATCH] 1834 装备分解-服务端防范不分解非装备道具

---
 ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py |  201 +++++++++++++++++++++++++++++++++++--------------
 1 files changed, 142 insertions(+), 59 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
index 6b3d761..4ae0037 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
@@ -53,6 +53,7 @@
                         ("BYTE", "EliteCnt", 0),
                         ("DWORD", "NeedMoney", 0),
                         ("DWORD", "WeekMissionMoneyMax", 0),
+                        ("BYTE", "BossFBCnt", 0),
                         ),
 
                 "MarketQuery":(
@@ -79,8 +80,17 @@
 
                 "DailyAction":(
                         ("DWORD", "DailyID", 1),
-                        ("BYTE", "OpenServerDay", 0),
-                        ("char", "OpenTime", 0),
+                        ("dict", "OpenTimeDict", 0),
+                        ("DWORD", "Duration", 0),
+                        ("dict", "NotifyInfo", 0),
+                        ),
+
+                "DailyActionCustom":(
+                        ("DWORD", "ID", 0),
+                        ("BYTE", "OpenServerWeek", 1),
+                        ("DWORD", "OpenServerDay", 0),
+                        ("BYTE", "DailyID", 0),
+                        ("list", "OpenTimeList", 0),
                         ("DWORD", "Duration", 0),
                         ("dict", "NotifyInfo", 0),
                         ),
@@ -88,12 +98,23 @@
                 "FBStateTime":(
                         ("DWORD", "ID", 1),
                         ("DWORD", "DataMapID", 0),
-                        ("BYTE", "OpenServerWeek", 0),
-                        ("BYTE", "OpenServerDay", 0),
                         ("BYTE", "StartWeekday", 0),
                         ("BYTE", "StartHour", 0),
                         ("BYTE", "StartMinute", 0),
-                        ("BYTE", "EndWeekday", 0),
+                        ("BYTE", "EndHour", 0),
+                        ("BYTE", "EndMinute", 0),
+                        ("BYTE", "CanEnter", 0),
+                        ("BYTE", "StateValue", 0),
+                        ("dict", "NotifyInfoDict", 0),
+                        ),
+
+                "FBStateTimeCustom":(
+                        ("DWORD", "ID", 0),
+                        ("BYTE", "OpenServerWeek", 1),
+                        ("DWORD", "OpenServerDay", 0),
+                        ("DWORD", "DataMapID", 0),
+                        ("BYTE", "StartHour", 0),
+                        ("BYTE", "StartMinute", 0),
                         ("BYTE", "EndHour", 0),
                         ("BYTE", "EndMinute", 0),
                         ("BYTE", "CanEnter", 0),
@@ -162,32 +183,32 @@
                         ("DWORD", "CfgID", 1),
                         ("char", "ActMark", 0),
                         ("list", "ServerIDList", 0),
-                        ("BYTE", "OpenServerDayLimit", 0),
                         ("char", "StartDate", 0),
                         ("char", "EndDate", 0),
                         ("list", "StartTimeList", 0),
                         ("list", "EndTimeList", 0),
+                        ("WORD", "AdvanceMinutes", 0),
                         ("dict", "NotifyInfoStart", 0),
                         ("dict", "NotifyInfoEnd", 0),
+                        ("list", "NotifyInfoLoop", 0),
                         ("WORD", "LVLimit", 0),
                         ("BYTE", "IsDayReset", 0),
-                        ("list", "ShopTypeList", 0),
                         ),
 
                 "ActFlashGiftbag":(
                         ("DWORD", "CfgID", 1),
                         ("char", "ActMark", 0),
                         ("list", "ServerIDList", 0),
-                        ("BYTE", "OpenServerDayLimit", 0),
                         ("char", "StartDate", 0),
                         ("char", "EndDate", 0),
                         ("list", "StartTimeList", 0),
                         ("list", "EndTimeList", 0),
+                        ("WORD", "AdvanceMinutes", 0),
                         ("dict", "NotifyInfoStart", 0),
                         ("dict", "NotifyInfoEnd", 0),
+                        ("list", "NotifyInfoLoop", 0),
                         ("WORD", "LVLimit", 0),
                         ("BYTE", "IsDayReset", 0),
-                        ("list", "GiftbagTypeList", 0),
                         ),
 
                 "ActExpRate":(
@@ -212,9 +233,8 @@
                         ("char", "EndDate", 0),
                         ("dict", "NotifyInfoStart", 0),
                         ("dict", "NotifyInfoEnd", 0),
-                        ("WORD", "LVLimit", 0),
+                        ("list", "NotifyInfoLoop", 0),
                         ("BYTE", "IsDayReset", 0),
-                        ("list", "TemplateIDList", 0),
                         ),
 
                 "ActBossReborn":(
@@ -223,9 +243,11 @@
                         ("list", "ServerIDList", 0),
                         ("char", "StartDate", 0),
                         ("char", "EndDate", 0),
+                        ("BYTE", "ResetType", 0),
                         ("dict", "NotifyInfoStart", 0),
                         ("dict", "NotifyInfoEnd", 0),
                         ("WORD", "LVLimit", 0),
+                        ("BYTE", "TemplateID", 0),
                         ),
 
                 "ActFairyCeremony":(
@@ -251,6 +273,7 @@
                         ("list", "ServerIDList", 0),
                         ("char", "StartDate", 0),
                         ("char", "EndDate", 0),
+                        ("BYTE", "ResetType", 0),
                         ("dict", "NotifyInfoStart", 0),
                         ("dict", "NotifyInfoEnd", 0),
                         ("WORD", "Multiple", 0),
@@ -298,7 +321,8 @@
         self.DeputyLeaderCnt = 0
         self.EliteCnt = 0
         self.NeedMoney = 0
-        self.WeekMissionMoneyMax = 0
+        self.WeekMissionMoneyMax = 0
+        self.BossFBCnt = 0
         return
         
     def GetFamilyLV(self): return self.FamilyLV # 仙盟等级
@@ -306,7 +330,8 @@
     def GetDeputyLeaderCnt(self): return self.DeputyLeaderCnt # 副盟主数量
     def GetEliteCnt(self): return self.EliteCnt # 精英数量
     def GetNeedMoney(self): return self.NeedMoney # 升级需要资金
-    def GetWeekMissionMoneyMax(self): return self.WeekMissionMoneyMax # 每周任务最大可获得仙盟资金
+    def GetWeekMissionMoneyMax(self): return self.WeekMissionMoneyMax # 每周任务最大可获得仙盟资金
+    def GetBossFBCnt(self): return self.BossFBCnt # BOSS副本次数
 
 # 集市查询表
 class IPY_MarketQuery():
@@ -359,15 +384,34 @@
     
     def __init__(self):
         self.DailyID = 0
-        self.OpenServerDay = 0
-        self.OpenTime = ""
+        self.OpenTimeDict = {}
         self.Duration = 0
         self.NotifyInfo = {}
         return
         
     def GetDailyID(self): return self.DailyID # 活动ID
-    def GetOpenServerDay(self): return self.OpenServerDay # 开服第几天开始开启,0为不限制
-    def GetOpenTime(self): return self.OpenTime # 开启时间
+    def GetOpenTimeDict(self): return self.OpenTimeDict # 开启时间
+    def GetDuration(self): return self.Duration # 持续时间, 0为不限制
+    def GetNotifyInfo(self): return self.NotifyInfo # 广播提示信息
+
+# 日常活动表定制表
+class IPY_DailyActionCustom():
+    
+    def __init__(self):
+        self.ID = 0
+        self.OpenServerWeek = 0
+        self.OpenServerDay = 0
+        self.DailyID = 0
+        self.OpenTimeList = []
+        self.Duration = 0
+        self.NotifyInfo = {}
+        return
+        
+    def GetID(self): return self.ID # ID
+    def GetOpenServerWeek(self): return self.OpenServerWeek # 开服是周几
+    def GetOpenServerDay(self): return self.OpenServerDay # 开服第几天
+    def GetDailyID(self): return self.DailyID # 日常活动ID
+    def GetOpenTimeList(self): return self.OpenTimeList # 开启时间列表
     def GetDuration(self): return self.Duration # 持续时间, 0为不限制
     def GetNotifyInfo(self): return self.NotifyInfo # 广播提示信息
 
@@ -377,12 +421,9 @@
     def __init__(self):
         self.ID = 0
         self.DataMapID = 0
-        self.OpenServerWeek = 0
-        self.OpenServerDay = 0
         self.StartWeekday = 0
         self.StartHour = 0
         self.StartMinute = 0
-        self.EndWeekday = 0
         self.EndHour = 0
         self.EndMinute = 0
         self.CanEnter = 0
@@ -392,12 +433,38 @@
         
     def GetID(self): return self.ID # ID
     def GetDataMapID(self): return self.DataMapID # 所属的玩法数据地图ID
-    def GetOpenServerWeek(self): return self.OpenServerWeek # 开服X周后开放
-    def GetOpenServerDay(self): return self.OpenServerDay # 开服X天后开放
     def GetStartWeekday(self): return self.StartWeekday # 开始星期
     def GetStartHour(self): return self.StartHour # 开始时
     def GetStartMinute(self): return self.StartMinute # 开始分
-    def GetEndWeekday(self): return self.EndWeekday # 结束星期
+    def GetEndHour(self): return self.EndHour # 结束时
+    def GetEndMinute(self): return self.EndMinute # 结束分
+    def GetCanEnter(self): return self.CanEnter # 是否可进入副本
+    def GetStateValue(self): return self.StateValue # 状态值
+    def GetNotifyInfoDict(self): return self.NotifyInfoDict # 广播提示信息
+
+# 副本状态时间定制表
+class IPY_FBStateTimeCustom():
+    
+    def __init__(self):
+        self.ID = 0
+        self.OpenServerWeek = 0
+        self.OpenServerDay = 0
+        self.DataMapID = 0
+        self.StartHour = 0
+        self.StartMinute = 0
+        self.EndHour = 0
+        self.EndMinute = 0
+        self.CanEnter = 0
+        self.StateValue = 0
+        self.NotifyInfoDict = {}
+        return
+        
+    def GetID(self): return self.ID # ID
+    def GetOpenServerWeek(self): return self.OpenServerWeek # 开服是周几
+    def GetOpenServerDay(self): return self.OpenServerDay # 开服第几天
+    def GetDataMapID(self): return self.DataMapID # 所属的玩法数据地图ID
+    def GetStartHour(self): return self.StartHour # 开始时
+    def GetStartMinute(self): return self.StartMinute # 开始分
     def GetEndHour(self): return self.EndHour # 结束时
     def GetEndMinute(self): return self.EndMinute # 结束分
     def GetCanEnter(self): return self.CanEnter # 是否可进入副本
@@ -533,31 +600,31 @@
         self.CfgID = 0
         self.ActMark = ""
         self.ServerIDList = []
-        self.OpenServerDayLimit = 0
         self.StartDate = ""
         self.EndDate = ""
         self.StartTimeList = []
         self.EndTimeList = []
+        self.AdvanceMinutes = 0
         self.NotifyInfoStart = {}
         self.NotifyInfoEnd = {}
+        self.NotifyInfoLoop = []
         self.LVLimit = 0
-        self.IsDayReset = 0
-        self.ShopTypeList = []
+        self.IsDayReset = 0
         return
         
     def GetCfgID(self): return self.CfgID # 配置ID
     def GetActMark(self): return self.ActMark # 活动组标记
     def GetServerIDList(self): return self.ServerIDList # 服务器ID列表
-    def GetOpenServerDayLimit(self): return self.OpenServerDayLimit # 开服X天后有效
     def GetStartDate(self): return self.StartDate # 开启日期
     def GetEndDate(self): return self.EndDate # 结束日期
     def GetStartTimeList(self): return self.StartTimeList # 开启时间列表, 支持多个时段
     def GetEndTimeList(self): return self.EndTimeList # 结束时间列表, 支持多个时段
+    def GetAdvanceMinutes(self): return self.AdvanceMinutes # 前端提前X分钟展示活动
     def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
     def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
     def GetLVLimit(self): return self.LVLimit # 限制等级
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
-    def GetShopTypeList(self): return self.ShopTypeList # 商店类型列表
+    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
 
 # 限时礼包表
 class IPY_ActFlashGiftbag():
@@ -566,31 +633,31 @@
         self.CfgID = 0
         self.ActMark = ""
         self.ServerIDList = []
-        self.OpenServerDayLimit = 0
         self.StartDate = ""
         self.EndDate = ""
         self.StartTimeList = []
         self.EndTimeList = []
+        self.AdvanceMinutes = 0
         self.NotifyInfoStart = {}
         self.NotifyInfoEnd = {}
+        self.NotifyInfoLoop = []
         self.LVLimit = 0
-        self.IsDayReset = 0
-        self.GiftbagTypeList = []
+        self.IsDayReset = 0
         return
         
     def GetCfgID(self): return self.CfgID # 配置ID
     def GetActMark(self): return self.ActMark # 活动组标记
     def GetServerIDList(self): return self.ServerIDList # 服务器ID列表
-    def GetOpenServerDayLimit(self): return self.OpenServerDayLimit # 开服X天后有效
     def GetStartDate(self): return self.StartDate # 开启日期
     def GetEndDate(self): return self.EndDate # 结束日期
     def GetStartTimeList(self): return self.StartTimeList # 开启时间列表, 支持多个时段
     def GetEndTimeList(self): return self.EndTimeList # 结束时间列表, 支持多个时段
+    def GetAdvanceMinutes(self): return self.AdvanceMinutes # 前端提前X分钟展示活动
     def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
     def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
     def GetLVLimit(self): return self.LVLimit # 限制等级
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
-    def GetGiftbagTypeList(self): return self.GiftbagTypeList # 礼包类型列表
+    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
 
 # 双倍经验活动表
 class IPY_ActExpRate():
@@ -632,9 +699,8 @@
         self.EndDate = ""
         self.NotifyInfoStart = {}
         self.NotifyInfoEnd = {}
-        self.LVLimit = 0
-        self.IsDayReset = 0
-        self.TemplateIDList = []
+        self.NotifyInfoLoop = []
+        self.IsDayReset = 0
         return
         
     def GetCfgID(self): return self.CfgID # 配置ID
@@ -644,9 +710,8 @@
     def GetEndDate(self): return self.EndDate # 结束日期
     def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
     def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetLVLimit(self): return self.LVLimit # 限制等级
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
-    def GetTemplateIDList(self): return self.TemplateIDList # 模板ID列表
+    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
 
 # BOSS复活活动时间表
 class IPY_ActBossReborn():
@@ -657,9 +722,11 @@
         self.ServerIDList = []
         self.StartDate = ""
         self.EndDate = ""
+        self.ResetType = 0
         self.NotifyInfoStart = {}
         self.NotifyInfoEnd = {}
-        self.LVLimit = 0
+        self.LVLimit = 0
+        self.TemplateID = 0
         return
         
     def GetCfgID(self): return self.CfgID # 配置ID
@@ -667,9 +734,11 @@
     def GetServerIDList(self): return self.ServerIDList # 服务器ID列表
     def GetStartDate(self): return self.StartDate # 开启日期
     def GetEndDate(self): return self.EndDate # 结束日期
+    def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
     def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
     def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetLVLimit(self): return self.LVLimit # 限制等级
+    def GetLVLimit(self): return self.LVLimit # 限制等级
+    def GetTemplateID(self): return self.TemplateID # 模板编号
 
 # 仙界盛典活动时间表
 class IPY_ActFairyCeremony():
@@ -716,6 +785,7 @@
         self.ServerIDList = []
         self.StartDate = ""
         self.EndDate = ""
+        self.ResetType = 0
         self.NotifyInfoStart = {}
         self.NotifyInfoEnd = {}
         self.Multiple = 0
@@ -727,6 +797,7 @@
     def GetServerIDList(self): return self.ServerIDList # 服务器ID列表
     def GetStartDate(self): return self.StartDate # 开启日期
     def GetEndDate(self): return self.EndDate # 结束日期
+    def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
     def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
     def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
     def GetMultiple(self): return self.Multiple # 倍数
@@ -768,8 +839,12 @@
         self.ipyActionControlLen = len(self.ipyActionControlCache)
         self.ipyDailyActionCache = self.__LoadFileData("DailyAction", IPY_DailyAction)
         self.ipyDailyActionLen = len(self.ipyDailyActionCache)
+        self.ipyDailyActionCustomCache = self.__LoadFileData("DailyActionCustom", IPY_DailyActionCustom)
+        self.ipyDailyActionCustomLen = len(self.ipyDailyActionCustomCache)
         self.ipyFBStateTimeCache = self.__LoadFileData("FBStateTime", IPY_FBStateTime)
         self.ipyFBStateTimeLen = len(self.ipyFBStateTimeCache)
+        self.ipyFBStateTimeCustomCache = self.__LoadFileData("FBStateTimeCustom", IPY_FBStateTimeCustom)
+        self.ipyFBStateTimeCustomLen = len(self.ipyFBStateTimeCustomCache)
         self.ipyFBLineCache = self.__LoadFileData("FBLine", IPY_FBLine)
         self.ipyFBLineLen = len(self.ipyFBLineCache)
         self.ipyChinMapCache = self.__LoadFileData("ChinMap", IPY_ChinMap)
@@ -893,22 +968,26 @@
         for i, strValue in enumerate(rowList):
             if i == 0:
                 continue
-            fieldName = fieldList[i][1]
-            strValue = strValue.lstrip().rstrip()
-            if strValue.isdigit():
-                configValue = int(strValue)
-            elif (strValue.startswith("{") and strValue.endswith("}")) \
-                or (strValue.startswith("[") and strValue.endswith("]")) \
-                or (strValue.startswith("(") and strValue.endswith(")")):
-                configValue = eval(strValue)
-            elif "_" in strValue and type(self.__StrToDict(strValue)) == dict:
-                configValue = self.__StrToDict(strValue)
-            elif ChConfig.Def_Str_Montant in strValue:
-                configValue = eval("(%s,)" % strValue.replace(ChConfig.Def_Str_Montant, ","))
-            elif strValue in ["-", ""]:
-                configValue = ""
-            else:
-                configValue = self.__ToFloat(strValue)
+            try:
+                fieldName = fieldList[i][1]
+                strValue = strValue.lstrip().rstrip()
+                if strValue.isdigit():
+                    configValue = int(strValue)
+                elif (strValue.startswith("{") and strValue.endswith("}")) \
+                    or (strValue.startswith("[") and strValue.endswith("]")) \
+                    or (strValue.startswith("(") and strValue.endswith(")")):
+                    configValue = eval(strValue)
+                elif "_" in strValue and type(self.__StrToDict(strValue)) == dict:
+                    configValue = self.__StrToDict(strValue)
+                elif ChConfig.Def_Str_Montant in strValue:
+                    configValue = eval("(%s,)" % strValue.replace(ChConfig.Def_Str_Montant, ","))
+                elif strValue in ["-", ""]:
+                    configValue = ""
+                else:
+                    configValue = self.__ToFloat(strValue)
+            except BaseException:
+                ErrLog("SetIpyDataError: tableName=%s,key=%s,i=%s,value=%s" % ("FuncConfig", key, i, strValue))
+                raise
             setattr(funcConfigObj, fieldName, configValue)
         self.ipyFuncConfigDict[key] = funcConfigObj
         return
@@ -976,8 +1055,12 @@
     def GetActionControlByIndex(self, index): return self.ipyActionControlCache[index]
     def GetDailyActionCount(self): return self.ipyDailyActionLen
     def GetDailyActionByIndex(self, index): return self.ipyDailyActionCache[index]
+    def GetDailyActionCustomCount(self): return self.ipyDailyActionCustomLen
+    def GetDailyActionCustomByIndex(self, index): return self.ipyDailyActionCustomCache[index]
     def GetFBStateTimeCount(self): return self.ipyFBStateTimeLen
     def GetFBStateTimeByIndex(self, index): return self.ipyFBStateTimeCache[index]
+    def GetFBStateTimeCustomCount(self): return self.ipyFBStateTimeCustomLen
+    def GetFBStateTimeCustomByIndex(self, index): return self.ipyFBStateTimeCustomCache[index]
     def GetFBLineCount(self): return self.ipyFBLineLen
     def GetFBLineByIndex(self, index): return self.ipyFBLineCache[index]
     def GetChinMapCount(self): return self.ipyChinMapLen

--
Gitblit v1.8.0