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