From cc38c24a14e758a173dccfd3d33f78bf42830666 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 19 三月 2024 19:40:33 +0800
Subject: [PATCH] 10138 内存分析(优化py自定配置表数据内存占用及加载方式)

---
 ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py | 3307 ++++++++++++++++++++++++++++------------------------------
 1 files changed, 1,600 insertions(+), 1,707 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
index fbf5d9e..fa3405c 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
@@ -953,1919 +953,1356 @@
 class IPY_FuncConfig():
     
     def __init__(self):
-        self.Key = ""
-        self.Numerical1 = ""
-        self.Numerical2 = ""
-        self.Numerical3 = ""
-        self.Numerical4 = ""
-        self.Numerical5 = ""
+        self.attrTuple = None
         return
         
-    def GetKey(self): return self.Key # 标识
-    def GetNumerical1(self): return self.Numerical1 # 数据1
-    def GetNumerical2(self): return self.Numerical2 # 数据2
-    def GetNumerical3(self): return self.Numerical3 # 数据3
-    def GetNumerical4(self): return self.Numerical4 # 数据4
-    def GetNumerical5(self): return self.Numerical5 # 数据5
+    def GetKey(self): return self.attrTuple[0] # 标识
+    def GetNumerical1(self): return self.attrTuple[1] # 数据1
+    def GetNumerical2(self): return self.attrTuple[2] # 数据2
+    def GetNumerical3(self): return self.attrTuple[3] # 数据3
+    def GetNumerical4(self): return self.attrTuple[4] # 数据4
+    def GetNumerical5(self): return self.attrTuple[5] # 数据5
 
 # 创角限制服务器配置表
 class IPY_CreateRoleLimitServer():
     
     def __init__(self):
-        self.LimitServerGroupIDRangeList = []
-        self.LimitServerGroupIDList = []
+        self.attrTuple = None
         return
         
-    def GetLimitServerGroupIDRangeList(self): return self.LimitServerGroupIDRangeList # 限制创角的服务器组ID范围列表
-    def GetLimitServerGroupIDList(self): return self.LimitServerGroupIDList # 限制创角的服务器组ID列表
+    def GetLimitServerGroupIDRangeList(self): return self.attrTuple[0] # 限制创角的服务器组ID范围列表
+    def GetLimitServerGroupIDList(self): return self.attrTuple[1] # 限制创角的服务器组ID列表
 
 # 世界等级表格
 class IPY_WorldLV():
     
     def __init__(self):
-        self.WorldLV = 0
-        self.OpenServerSecond = 0
+        self.attrTuple = None
         return
         
-    def GetWorldLV(self): return self.WorldLV # 世界等级
-    def GetOpenServerSecond(self): return self.OpenServerSecond # 开服时间秒
+    def GetWorldLV(self): return self.attrTuple[0] # 世界等级
+    def GetOpenServerSecond(self): return self.attrTuple[1] # 开服时间秒
 
 # 仙盟表格
 class IPY_Family():
     
     def __init__(self):
-        self.FamilyLV = 0
-        self.MemberCnt = 0
-        self.DeputyLeaderCnt = 0
-        self.EliteCnt = 0
-        self.NeedMoney = 0
-        self.WeekMissionMoneyMax = 0
-        self.BossFBCnt = 0
+        self.attrTuple = None
         return
         
-    def GetFamilyLV(self): return self.FamilyLV # 仙盟等级
-    def GetMemberCnt(self): return self.MemberCnt # 成员数量
-    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 GetBossFBCnt(self): return self.BossFBCnt # BOSS副本次数
+    def GetFamilyLV(self): return self.attrTuple[0] # 仙盟等级
+    def GetMemberCnt(self): return self.attrTuple[1] # 成员数量
+    def GetDeputyLeaderCnt(self): return self.attrTuple[2] # 副盟主数量
+    def GetEliteCnt(self): return self.attrTuple[3] # 精英数量
+    def GetNeedMoney(self): return self.attrTuple[4] # 升级需要资金
+    def GetWeekMissionMoneyMax(self): return self.attrTuple[5] # 每周任务最大可获得仙盟资金
+    def GetBossFBCnt(self): return self.attrTuple[6] # BOSS副本次数
 
 # 仙盟试炼伤血奖励表
 class IPY_FamilyBossHurtAward():
     
     def __init__(self):
-        self.AwardType = 0
-        self.RecordIndex = 0
-        self.NeedHurtTotal = 0
-        self.AwardItemList = []
+        self.attrTuple = None
         return
         
-    def GetAwardType(self): return self.AwardType # 奖励类型 1-个人;2-仙盟
-    def GetRecordIndex(self): return self.RecordIndex # 奖励记录索引,同奖励类型时记录索引不可重复
-    def GetNeedHurtTotal(self): return self.NeedHurtTotal # 所需总伤血
-    def GetAwardItemList(self): return self.AwardItemList # 奖励物品列表[[物品ID,个数,是否拍品], ...]
+    def GetAwardType(self): return self.attrTuple[0] # 奖励类型 1-个人;2-仙盟
+    def GetRecordIndex(self): return self.attrTuple[1] # 奖励记录索引,同奖励类型时记录索引不可重复
+    def GetNeedHurtTotal(self): return self.attrTuple[2] # 所需总伤血
+    def GetAwardItemList(self): return self.attrTuple[3] # 奖励物品列表[[物品ID,个数,是否拍品], ...]
 
 # 仙盟阵法表
 class IPY_FamilyZhenfa():
     
     def __init__(self):
-        self.ZhenfaType = 0
-        self.ZhenfaLV = 0
-        self.LVUpNeedExp = 0
+        self.attrTuple = None
         return
         
-    def GetZhenfaType(self): return self.ZhenfaType #  阵法类型
-    def GetZhenfaLV(self): return self.ZhenfaLV #  阵法等级
-    def GetLVUpNeedExp(self): return self.LVUpNeedExp # 升下一级所需经验
+    def GetZhenfaType(self): return self.attrTuple[0] #  阵法类型
+    def GetZhenfaLV(self): return self.attrTuple[1] #  阵法等级
+    def GetLVUpNeedExp(self): return self.attrTuple[2] # 升下一级所需经验
 
 # 集市查询表
 class IPY_MarketQuery():
     
     def __init__(self):
-        self.QueryType = 0
-        self.LimitInfo = {}
+        self.attrTuple = None
         return
         
-    def GetQueryType(self): return self.QueryType # 查询类型
-    def GetLimitInfo(self): return self.LimitInfo # 限制条件
+    def GetQueryType(self): return self.attrTuple[0] # 查询类型
+    def GetLimitInfo(self): return self.attrTuple[1] # 限制条件
 
 # 拍卖物品表
 class IPY_AuctionItem():
     
     def __init__(self):
-        self.AuctionItemID = 0
-        self.NoticeSaleMinutes = 0
-        self.FamilySaleMinutes = 0
-        self.WorldSaleMinutes = 0
-        self.BasePrice = 0
-        self.BuyoutPrice = 0
-        self.BiddingAdd = 0
-        self.NeedWorldNotify = 0
-        self.Sortpriority = 0
+        self.attrTuple = None
         return
         
-    def GetAuctionItemID(self): return self.AuctionItemID
-    def GetNoticeSaleMinutes(self): return self.NoticeSaleMinutes # 预告拍卖分钟
-    def GetFamilySaleMinutes(self): return self.FamilySaleMinutes # 仙盟拍卖分钟
-    def GetWorldSaleMinutes(self): return self.WorldSaleMinutes # 全服拍卖分钟
-    def GetBasePrice(self): return self.BasePrice # 起拍价
-    def GetBuyoutPrice(self): return self.BuyoutPrice # 一口价
-    def GetBiddingAdd(self): return self.BiddingAdd # 竞价增加
-    def GetNeedWorldNotify(self): return self.NeedWorldNotify # 是否需要广播
-    def GetSortpriority(self): return self.Sortpriority # 排序优先级归组
+    def GetAuctionItemID(self): return self.attrTuple[0]
+    def GetNoticeSaleMinutes(self): return self.attrTuple[1] # 预告拍卖分钟
+    def GetFamilySaleMinutes(self): return self.attrTuple[2] # 仙盟拍卖分钟
+    def GetWorldSaleMinutes(self): return self.attrTuple[3] # 全服拍卖分钟
+    def GetBasePrice(self): return self.attrTuple[4] # 起拍价
+    def GetBuyoutPrice(self): return self.attrTuple[5] # 一口价
+    def GetBiddingAdd(self): return self.attrTuple[6] # 竞价增加
+    def GetNeedWorldNotify(self): return self.attrTuple[7] # 是否需要广播
+    def GetSortpriority(self): return self.attrTuple[8] # 排序优先级归组
 
 # 拍卖行系统拍品表
 class IPY_AuctionSystemItem():
     
     def __init__(self):
-        self.CfgID = 0
-        self.StartDate = ""
-        self.EndDate = ""
-        self.StartTime = ""
-        self.EndTime = ""
-        self.WorldLVRange = []
-        self.AddRandSecondRange = []
-        self.ReplenishCDMinutes = 0
-        self.ReplenishAuctionCount = 0
-        self.ReplenishItemID = 0
-        self.ReplenishEquipInfo = []
-        self.ReplenishEquipPlaces = []
-        self.AuctionCount = 0
-        self.RandMinuteRange = []
-        self.ItemCountWeightList = []
-        self.AuctionItemWeightList = []
-        self.RandMailKeyList = []
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetStartTime(self): return self.StartTime # 开启时间
-    def GetEndTime(self): return self.EndTime # 结束时间
-    def GetWorldLVRange(self): return self.WorldLVRange # 世界等级范围限制
-    def GetAddRandSecondRange(self): return self.AddRandSecondRange # 每件拍品随机间隔上架秒数 上限|下限
-    def GetReplenishCDMinutes(self): return self.ReplenishCDMinutes # 动态补充拍品间隔分钟
-    def GetReplenishAuctionCount(self): return self.ReplenishAuctionCount # 动态补充拍品保底数
-    def GetReplenishItemID(self): return self.ReplenishItemID # 动态补充物品ID
-    def GetReplenishEquipInfo(self): return self.ReplenishEquipInfo # 动态补充装备信息 [阶,颜色,是否套装]
-    def GetReplenishEquipPlaces(self): return self.ReplenishEquipPlaces # 动态补充上架装备位列表
-    def GetAuctionCount(self): return self.AuctionCount # 指定上架次数
-    def GetRandMinuteRange(self): return self.RandMinuteRange # 指定上架随机间隔分钟下限|上限
-    def GetItemCountWeightList(self): return self.ItemCountWeightList # 指定上架随机件数权重列表, [[权重, 件数], ...]
-    def GetAuctionItemWeightList(self): return self.AuctionItemWeightList # 指定上架物品随机权重, [[权重, 物品ID],[权重, [阶,颜色,部位集合,是否套装,星级]] ...]
-    def GetRandMailKeyList(self): return self.RandMailKeyList # 指定上架随机邮件列表,有配置时上架的时候在线玩家会收到一封上架邮件提醒
+    def GetCfgID(self): return self.attrTuple[0]
+    def GetStartDate(self): return self.attrTuple[1] # 开启日期
+    def GetEndDate(self): return self.attrTuple[2] # 结束日期
+    def GetStartTime(self): return self.attrTuple[3] # 开启时间
+    def GetEndTime(self): return self.attrTuple[4] # 结束时间
+    def GetWorldLVRange(self): return self.attrTuple[5] # 世界等级范围限制
+    def GetAddRandSecondRange(self): return self.attrTuple[6] # 每件拍品随机间隔上架秒数 上限|下限
+    def GetReplenishCDMinutes(self): return self.attrTuple[7] # 动态补充拍品间隔分钟
+    def GetReplenishAuctionCount(self): return self.attrTuple[8] # 动态补充拍品保底数
+    def GetReplenishItemID(self): return self.attrTuple[9] # 动态补充物品ID
+    def GetReplenishEquipInfo(self): return self.attrTuple[10] # 动态补充装备信息 [阶,颜色,是否套装]
+    def GetReplenishEquipPlaces(self): return self.attrTuple[11] # 动态补充上架装备位列表
+    def GetAuctionCount(self): return self.attrTuple[12] # 指定上架次数
+    def GetRandMinuteRange(self): return self.attrTuple[13] # 指定上架随机间隔分钟下限|上限
+    def GetItemCountWeightList(self): return self.attrTuple[14] # 指定上架随机件数权重列表, [[权重, 件数], ...]
+    def GetAuctionItemWeightList(self): return self.attrTuple[15] # 指定上架物品随机权重, [[权重, 物品ID],[权重, [阶,颜色,部位集合,是否套装,星级]] ...]
+    def GetRandMailKeyList(self): return self.attrTuple[16] # 指定上架随机邮件列表,有配置时上架的时候在线玩家会收到一封上架邮件提醒
 
 # 跨服日常活动表
 class IPY_CrossDailyAction():
     
     def __init__(self):
-        self.DailyID = 0
-        self.OpenTimeDict = {}
-        self.Duration = 0
-        self.NotifyInfo = {}
+        self.attrTuple = None
         return
         
-    def GetDailyID(self): return self.DailyID # 活动ID
-    def GetOpenTimeDict(self): return self.OpenTimeDict # 开启时间
-    def GetDuration(self): return self.Duration # 持续时间, 0为不限制
-    def GetNotifyInfo(self): return self.NotifyInfo # 广播提示信息
+    def GetDailyID(self): return self.attrTuple[0] # 活动ID
+    def GetOpenTimeDict(self): return self.attrTuple[1] # 开启时间
+    def GetDuration(self): return self.attrTuple[2] # 持续时间, 0为不限制
+    def GetNotifyInfo(self): return self.attrTuple[3] # 广播提示信息
 
 # 日常活动表
 class IPY_DailyAction():
     
     def __init__(self):
-        self.DailyID = 0
-        self.OpenTimeDict = {}
-        self.Duration = 0
-        self.NotifyInfo = {}
+        self.attrTuple = None
         return
         
-    def GetDailyID(self): return self.DailyID # 活动ID
-    def GetOpenTimeDict(self): return self.OpenTimeDict # 开启时间
-    def GetDuration(self): return self.Duration # 持续时间, 0为不限制
-    def GetNotifyInfo(self): return self.NotifyInfo # 广播提示信息
+    def GetDailyID(self): return self.attrTuple[0] # 活动ID
+    def GetOpenTimeDict(self): return self.attrTuple[1] # 开启时间
+    def GetDuration(self): return self.attrTuple[2] # 持续时间, 0为不限制
+    def GetNotifyInfo(self): return self.attrTuple[3] # 广播提示信息
 
 # 日常活动表定制表
 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 = {}
+        self.attrTuple = None
         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 # 广播提示信息
+    def GetID(self): return self.attrTuple[0] # ID
+    def GetOpenServerWeek(self): return self.attrTuple[1] # 开服是周几
+    def GetOpenServerDay(self): return self.attrTuple[2] # 开服第几天
+    def GetDailyID(self): return self.attrTuple[3] # 日常活动ID
+    def GetOpenTimeList(self): return self.attrTuple[4] # 开启时间列表
+    def GetDuration(self): return self.attrTuple[5] # 持续时间, 0为不限制
+    def GetNotifyInfo(self): return self.attrTuple[6] # 广播提示信息
 
 # 日常活动表定制表合服
 class IPY_DailyActionCustomMix():
     
     def __init__(self):
-        self.ID = 0
-        self.MixServerDay = 0
-        self.DailyID = 0
-        self.OpenTimeList = []
-        self.Duration = 0
-        self.NotifyInfo = {}
+        self.attrTuple = None
         return
         
-    def GetID(self): return self.ID # ID
-    def GetMixServerDay(self): return self.MixServerDay # 合服第几天
-    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 # 广播提示信息
+    def GetID(self): return self.attrTuple[0] # ID
+    def GetMixServerDay(self): return self.attrTuple[1] # 合服第几天
+    def GetDailyID(self): return self.attrTuple[2] # 日常活动ID
+    def GetOpenTimeList(self): return self.attrTuple[3] # 开启时间列表
+    def GetDuration(self): return self.attrTuple[4] # 持续时间, 0为不限制
+    def GetNotifyInfo(self): return self.attrTuple[5] # 广播提示信息
 
 # 副本状态时间表
 class IPY_FBStateTime():
     
     def __init__(self):
-        self.ID = 0
-        self.DataMapID = 0
-        self.StartWeekday = 0
-        self.StartHour = 0
-        self.StartMinute = 0
-        self.EndHour = 0
-        self.EndMinute = 0
-        self.CanEnter = 0
-        self.StateValue = 0
-        self.NotifyInfoDict = {}
+        self.attrTuple = None
         return
         
-    def GetID(self): return self.ID # ID
-    def GetDataMapID(self): return self.DataMapID # 所属的玩法数据地图ID
-    def GetStartWeekday(self): return self.StartWeekday # 开始星期
-    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 # 是否可进入副本
-    def GetStateValue(self): return self.StateValue # 状态值
-    def GetNotifyInfoDict(self): return self.NotifyInfoDict # 广播提示信息
+    def GetID(self): return self.attrTuple[0] # ID
+    def GetDataMapID(self): return self.attrTuple[1] # 所属的玩法数据地图ID
+    def GetStartWeekday(self): return self.attrTuple[2] # 开始星期
+    def GetStartHour(self): return self.attrTuple[3] # 开始时
+    def GetStartMinute(self): return self.attrTuple[4] # 开始分
+    def GetEndHour(self): return self.attrTuple[5] # 结束时
+    def GetEndMinute(self): return self.attrTuple[6] # 结束分
+    def GetCanEnter(self): return self.attrTuple[7] # 是否可进入副本
+    def GetStateValue(self): return self.attrTuple[8] # 状态值
+    def GetNotifyInfoDict(self): return self.attrTuple[9] # 广播提示信息
 
 # 副本状态时间定制表
 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 = {}
+        self.attrTuple = None
         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 # 是否可进入副本
-    def GetStateValue(self): return self.StateValue # 状态值
-    def GetNotifyInfoDict(self): return self.NotifyInfoDict # 广播提示信息
+    def GetID(self): return self.attrTuple[0] # ID
+    def GetOpenServerWeek(self): return self.attrTuple[1] # 开服是周几
+    def GetOpenServerDay(self): return self.attrTuple[2] # 开服第几天
+    def GetDataMapID(self): return self.attrTuple[3] # 所属的玩法数据地图ID
+    def GetStartHour(self): return self.attrTuple[4] # 开始时
+    def GetStartMinute(self): return self.attrTuple[5] # 开始分
+    def GetEndHour(self): return self.attrTuple[6] # 结束时
+    def GetEndMinute(self): return self.attrTuple[7] # 结束分
+    def GetCanEnter(self): return self.attrTuple[8] # 是否可进入副本
+    def GetStateValue(self): return self.attrTuple[9] # 状态值
+    def GetNotifyInfoDict(self): return self.attrTuple[10] # 广播提示信息
 
 # 副本状态时间定制表合服
 class IPY_FBStateTimeCustomMix():
     
     def __init__(self):
-        self.ID = 0
-        self.MixServerDay = 0
-        self.DataMapID = 0
-        self.StartHour = 0
-        self.StartMinute = 0
-        self.EndHour = 0
-        self.EndMinute = 0
-        self.CanEnter = 0
-        self.StateValue = 0
-        self.NotifyInfoDict = {}
+        self.attrTuple = None
         return
         
-    def GetID(self): return self.ID # ID
-    def GetMixServerDay(self): return self.MixServerDay # 合服第几天
-    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 # 是否可进入副本
-    def GetStateValue(self): return self.StateValue # 状态值
-    def GetNotifyInfoDict(self): return self.NotifyInfoDict # 广播提示信息
+    def GetID(self): return self.attrTuple[0] # ID
+    def GetMixServerDay(self): return self.attrTuple[1] # 合服第几天
+    def GetDataMapID(self): return self.attrTuple[2] # 所属的玩法数据地图ID
+    def GetStartHour(self): return self.attrTuple[3] # 开始时
+    def GetStartMinute(self): return self.attrTuple[4] # 开始分
+    def GetEndHour(self): return self.attrTuple[5] # 结束时
+    def GetEndMinute(self): return self.attrTuple[6] # 结束分
+    def GetCanEnter(self): return self.attrTuple[7] # 是否可进入副本
+    def GetStateValue(self): return self.attrTuple[8] # 状态值
+    def GetNotifyInfoDict(self): return self.attrTuple[9] # 广播提示信息
 
 # 副本总表
 class IPY_FBFunc():
     
     def __init__(self):
-        self.DataMapID = 0
-        self.HelpPoint = 0
+        self.attrTuple = None
         return
         
-    def GetDataMapID(self): return self.DataMapID # 数据地图ID
-    def GetHelpPoint(self): return self.HelpPoint # 助战仙缘币(0代表不可助战)
+    def GetDataMapID(self): return self.attrTuple[0] # 数据地图ID
+    def GetHelpPoint(self): return self.attrTuple[1] # 助战仙缘币(0代表不可助战)
 
 # 副本功能线路表
 class IPY_FBLine():
     
     def __init__(self):
-        self.DataMapID = 0
-        self.LineID = 0
-        self.MapID = 0
+        self.attrTuple = None
         return
         
-    def GetDataMapID(self): return self.DataMapID # 数据地图ID
-    def GetLineID(self): return self.LineID # 功能线路ID
-    def GetMapID(self): return self.MapID # 场景地图ID
+    def GetDataMapID(self): return self.attrTuple[0] # 数据地图ID
+    def GetLineID(self): return self.attrTuple[1] # 功能线路ID
+    def GetMapID(self): return self.attrTuple[2] # 场景地图ID
 
 # 副本助战表
 class IPY_FBHelpBattle():
     
     def __init__(self):
-        self.DataMapID = 0
-        self.LineID = 0
-        self.FightPowerMin = 0
-        self.FightPowerMax = 0
-        self.LVLimit = 0
-        self.DayFreeHelpCount = []
+        self.attrTuple = None
         return
         
-    def GetDataMapID(self): return self.DataMapID # 数据地图ID
-    def GetLineID(self): return self.LineID # 功能线路ID
-    def GetFightPowerMin(self): return self.FightPowerMin # 助战最低战力,也是副本战力
-    def GetFightPowerMax(self): return self.FightPowerMax # 助战最高战力,0为不限制
-    def GetLVLimit(self): return self.LVLimit # 助战等级限制, 0为不限制
-    def GetDayFreeHelpCount(self): return self.DayFreeHelpCount # 每日免费助战次数,[每日免费助战次数, 是否所有层通用]
+    def GetDataMapID(self): return self.attrTuple[0] # 数据地图ID
+    def GetLineID(self): return self.attrTuple[1] # 功能线路ID
+    def GetFightPowerMin(self): return self.attrTuple[2] # 助战最低战力,也是副本战力
+    def GetFightPowerMax(self): return self.attrTuple[3] # 助战最高战力,0为不限制
+    def GetLVLimit(self): return self.attrTuple[4] # 助战等级限制, 0为不限制
+    def GetDayFreeHelpCount(self): return self.attrTuple[5] # 每日免费助战次数,[每日免费助战次数, 是否所有层通用]
 
 # 地图表
 class IPY_ChinMap():
     
     def __init__(self):
-        self.MapID = 0
-        self.MapName = ""
-        self.MapFBType = 0
-        self.TeamLimit = 0
+        self.attrTuple = None
         return
         
-    def GetMapID(self): return self.MapID # 地图ID
-    def GetMapName(self): return self.MapName # 地图名
-    def GetMapFBType(self): return self.MapFBType #  地图类型
-    def GetTeamLimit(self): return self.TeamLimit #  队伍限制类型;0不限,1-不可变更,2-不可存在队伍
+    def GetMapID(self): return self.attrTuple[0] # 地图ID
+    def GetMapName(self): return self.attrTuple[1] # 地图名
+    def GetMapFBType(self): return self.attrTuple[2] #  地图类型
+    def GetTeamLimit(self): return self.attrTuple[3] #  队伍限制类型;0不限,1-不可变更,2-不可存在队伍
 
 # BOSS信息表
 class IPY_BOSSInfo():
     
     def __init__(self):
-        self.NPCID = 0
-        self.MapID = 0
-        self.RefreshTime = ""
-        self.LVLimit = []
-        self.DiffPer = 0
-        self.NoUpdataCnt = 0
-        self.StoneNPCID = 0
-        self.RebornPreNotifyTime = 0
-        self.SourceName = ""
-        self.CanAssist = 0
+        self.attrTuple = None
         return
         
-    def GetNPCID(self): return self.NPCID # ID
-    def GetMapID(self): return self.MapID # 地图ID
-    def GetRefreshTime(self): return self.RefreshTime # 刷新时间 参数 onlineCnt
-    def GetLVLimit(self): return self.LVLimit # 在线人物等级范围
-    def GetDiffPer(self): return self.DiffPer # 百分比与之前的误差小于X%,则更新实时在线数量
-    def GetNoUpdataCnt(self): return self.NoUpdataCnt # 多少次未更新实时在线数量字段时强制更新
-    def GetStoneNPCID(self): return self.StoneNPCID # 墓碑NPCID
-    def GetRebornPreNotifyTime(self): return self.RebornPreNotifyTime # 复活前X秒通知
-    def GetSourceName(self): return self.SourceName # BOSS来源
-    def GetCanAssist(self): return self.CanAssist # 是否可协助
+    def GetNPCID(self): return self.attrTuple[0] # ID
+    def GetMapID(self): return self.attrTuple[1] # 地图ID
+    def GetRefreshTime(self): return self.attrTuple[2] # 刷新时间 参数 onlineCnt
+    def GetLVLimit(self): return self.attrTuple[3] # 在线人物等级范围
+    def GetDiffPer(self): return self.attrTuple[4] # 百分比与之前的误差小于X%,则更新实时在线数量
+    def GetNoUpdataCnt(self): return self.attrTuple[5] # 多少次未更新实时在线数量字段时强制更新
+    def GetStoneNPCID(self): return self.attrTuple[6] # 墓碑NPCID
+    def GetRebornPreNotifyTime(self): return self.attrTuple[7] # 复活前X秒通知
+    def GetSourceName(self): return self.attrTuple[8] # BOSS来源
+    def GetCanAssist(self): return self.attrTuple[9] # 是否可协助
 
 # Boss首杀
 class IPY_BOSSFirstKill():
     
     def __init__(self):
-        self.NPCID = 0
-        self.ServerFirstKillPlayerAward = []
+        self.attrTuple = None
         return
         
-    def GetNPCID(self): return self.NPCID # ID
-    def GetServerFirstKillPlayerAward(self): return self.ServerFirstKillPlayerAward #  全服首杀玩家奖励 [[物品ID,个数,是否拍品], ...]
+    def GetNPCID(self): return self.attrTuple[0] # ID
+    def GetServerFirstKillPlayerAward(self): return self.attrTuple[1] #  全服首杀玩家奖励 [[物品ID,个数,是否拍品], ...]
 
 # 全民冲榜排行奖励表
 class IPY_OSCBillRankAward():
     
     def __init__(self):
-        self.OSCBillType = 0
-        self.RankA = 0
-        self.RankB = 0
-        self.RankAward = {}
+        self.attrTuple = None
         return
         
-    def GetOSCBillType(self): return self.OSCBillType # 冲榜类型
-    def GetRankA(self): return self.RankA # 排名A
-    def GetRankB(self): return self.RankB # 至排名B
-    def GetRankAward(self): return self.RankAward # 排名奖励 {"职业":[[物品ID,个数],...], ...}
+    def GetOSCBillType(self): return self.attrTuple[0] # 冲榜类型
+    def GetRankA(self): return self.attrTuple[1] # 排名A
+    def GetRankB(self): return self.attrTuple[2] # 至排名B
+    def GetRankAward(self): return self.attrTuple[3] # 排名奖励 {"职业":[[物品ID,个数],...], ...}
 
 # 宴会题库表
 class IPY_QuestionBank():
     
     def __init__(self):
-        self.ID = 0
-        self.Answer = ""
+        self.attrTuple = None
         return
         
-    def GetID(self): return self.ID # ID
-    def GetAnswer(self): return self.Answer # 答案
+    def GetID(self): return self.attrTuple[0] # ID
+    def GetAnswer(self): return self.attrTuple[1] # 答案
 
 # 仙盟红包表
 class IPY_FamilyRedPack():
     
     def __init__(self):
-        self.ID = 0
-        self.GetType = 0
-        self.MoneyNum = 0
-        self.MoneyType = 0
-        self.PacketCnt = 0
-        self.LeaderOwn = 0
-        self.PacketOpenTime = ""
-        self.ValidMinutes = 0
+        self.attrTuple = None
         return
         
-    def GetID(self): return self.ID # ID
-    def GetGetType(self): return self.GetType # 获得途径
-    def GetMoneyNum(self): return self.MoneyNum # 红包额度
-    def GetMoneyType(self): return self.MoneyType # 金钱类型
-    def GetPacketCnt(self): return self.PacketCnt # 红包个数
-    def GetLeaderOwn(self): return self.LeaderOwn # 是否归属盟主
-    def GetPacketOpenTime(self): return self.PacketOpenTime # 发放红包时间yyyy-MM-dd hh:mm
-    def GetValidMinutes(self): return self.ValidMinutes # 红包有效时长(分)
+    def GetID(self): return self.attrTuple[0] # ID
+    def GetGetType(self): return self.attrTuple[1] # 获得途径
+    def GetMoneyNum(self): return self.attrTuple[2] # 红包额度
+    def GetMoneyType(self): return self.attrTuple[3] # 金钱类型
+    def GetPacketCnt(self): return self.attrTuple[4] # 红包个数
+    def GetLeaderOwn(self): return self.attrTuple[5] # 是否归属盟主
+    def GetPacketOpenTime(self): return self.attrTuple[6] # 发放红包时间yyyy-MM-dd hh:mm
+    def GetValidMinutes(self): return self.attrTuple[7] # 红包有效时长(分)
 
 # 节日红包时间表
 class IPY_ActFeastRedPacket():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActMark = ""
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.IsDayReset = 0
-        self.ResetType = 0
-        self.RedPacketIDList = []
-        self.LVLimit = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActMark(self): return self.ActMark # 活动组标记
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
-    def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
-    def GetRedPacketIDList(self): return self.RedPacketIDList # 每日对应红包ID列表[[第一天红包ID列表], ...]
-    def GetLVLimit(self): return self.LVLimit # 限制等级
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActMark(self): return self.attrTuple[1] # 活动组标记
+    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetIsDayReset(self): return self.attrTuple[6] # 是否每天重置
+    def GetResetType(self): return self.attrTuple[7] # 重置类型,0-0点重置;1-5点重置
+    def GetRedPacketIDList(self): return self.attrTuple[8] # 每日对应红包ID列表[[第一天红包ID列表], ...]
+    def GetLVLimit(self): return self.attrTuple[9] # 限制等级
 
 # 节日登录奖励时间表
 class IPY_ActFeastLogin():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActMark = ""
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.StartDate = ""
-        self.EndDate = ""
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActMark(self): return self.ActMark # 活动组标记
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActMark(self): return self.attrTuple[1] # 活动组标记
+    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
 
 # 节日祝福时间表
 class IPY_ActFeastWish():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActMark = ""
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.ResetType = 0
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActMark(self): return self.ActMark # 活动组标记
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器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 GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActMark(self): return self.attrTuple[1] # 活动组标记
+    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetResetType(self): return self.attrTuple[6] # 重置类型,0-0点重置;1-5点重置
+    def GetNotifyInfoStart(self): return self.attrTuple[7] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[8] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[9] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
 
 # 节日游历时间表
 class IPY_ActFeastTravel():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActMark = ""
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.ResetType = 0
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActMark(self): return self.ActMark # 活动组标记
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器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 GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActMark(self): return self.attrTuple[1] # 活动组标记
+    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetResetType(self): return self.attrTuple[6] # 重置类型,0-0点重置;1-5点重置
+    def GetNotifyInfoStart(self): return self.attrTuple[7] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[8] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[9] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
 
 # 等级开启功能
 class IPY_FuncOpenLV():
     
     def __init__(self):
-        self.FuncId = 0
-        self.LimitLV = 0
-        self.LimitMagicWeapon = 0
-        self.LimiRealmLV = 0
-        self.LimitVIPLV = 0
+        self.attrTuple = None
         return
         
-    def GetFuncId(self): return self.FuncId # 功能标识
-    def GetLimitLV(self): return self.LimitLV # 开启等级
-    def GetLimitMagicWeapon(self): return self.LimitMagicWeapon # 需要解锁法宝ID
-    def GetLimiRealmLV(self): return self.LimiRealmLV # 需要境界等级
-    def GetLimitVIPLV(self): return self.LimitVIPLV # 需要VIP等级
+    def GetFuncId(self): return self.attrTuple[0] # 功能标识
+    def GetLimitLV(self): return self.attrTuple[1] # 开启等级
+    def GetLimitMagicWeapon(self): return self.attrTuple[2] # 需要解锁法宝ID
+    def GetLimiRealmLV(self): return self.attrTuple[3] # 需要境界等级
+    def GetLimitVIPLV(self): return self.attrTuple[4] # 需要VIP等级
 
 # NPC表
 class IPY_ChinNPC():
     
     def __init__(self):
-        self.NPCID = 0
-        self.NPCName = ""
-        self.LV = 0
+        self.attrTuple = None
         return
         
-    def GetNPCID(self): return self.NPCID
-    def GetNPCName(self): return self.NPCName
-    def GetLV(self): return self.LV
+    def GetNPCID(self): return self.attrTuple[0]
+    def GetNPCName(self): return self.attrTuple[1]
+    def GetLV(self): return self.attrTuple[2]
 
 # 玩家等级表
 class IPY_PlayerLV():
     
     def __init__(self):
-        self.LV = 0
-        self.ReFightPower = 0
+        self.attrTuple = None
         return
         
-    def GetLV(self): return self.LV # 玩家等级
-    def GetReFightPower(self): return self.ReFightPower # 战斗力
+    def GetLV(self): return self.attrTuple[0] # 玩家等级
+    def GetReFightPower(self): return self.attrTuple[1] # 战斗力
 
 # VIP特权表
 class IPY_VipPrivilege():
     
     def __init__(self):
-        self.VIPPriID = 0
-        self.VIP0 = 0
-        self.VIP1 = 0
-        self.VIP2 = 0
-        self.VIP3 = 0
-        self.VIP4 = 0
-        self.VIP5 = 0
-        self.VIP6 = 0
-        self.VIP7 = 0
-        self.VIP8 = 0
-        self.VIP9 = 0
-        self.VIP10 = 0
-        self.VIP11 = 0
-        self.VIP12 = 0
-        self.VIP13 = 0
-        self.VIP14 = 0
-        self.VIP15 = 0
+        self.attrTuple = None
         return
         
-    def GetVIPPriID(self): return self.VIPPriID # 特权ID
-    def GetVIP0(self): return self.VIP0 # VIP0对应的特权值
-    def GetVIP1(self): return self.VIP1 # VIP1对应的特权值
-    def GetVIP2(self): return self.VIP2 # VIP2对应的特权值
-    def GetVIP3(self): return self.VIP3 # VIP3对应的特权值
-    def GetVIP4(self): return self.VIP4 # VIP4对应的特权值
-    def GetVIP5(self): return self.VIP5 # VIP5对应的特权值
-    def GetVIP6(self): return self.VIP6 # VIP6对应的特权值
-    def GetVIP7(self): return self.VIP7 # VIP7对应的特权值
-    def GetVIP8(self): return self.VIP8 # VIP8对应的特权值
-    def GetVIP9(self): return self.VIP9 # VIP9对应的特权值
-    def GetVIP10(self): return self.VIP10 # VIP10对应的特权值
-    def GetVIP11(self): return self.VIP11 # VIP11对应的特权值
-    def GetVIP12(self): return self.VIP12 # VIP12对应的特权值
-    def GetVIP13(self): return self.VIP13 # VIP13对应的特权值
-    def GetVIP14(self): return self.VIP14 # VIP14对应的特权值
-    def GetVIP15(self): return self.VIP15 # VIP15对应的特权值
+    def GetVIPPriID(self): return self.attrTuple[0] # 特权ID
+    def GetVIP0(self): return self.attrTuple[1] # VIP0对应的特权值
+    def GetVIP1(self): return self.attrTuple[2] # VIP1对应的特权值
+    def GetVIP2(self): return self.attrTuple[3] # VIP2对应的特权值
+    def GetVIP3(self): return self.attrTuple[4] # VIP3对应的特权值
+    def GetVIP4(self): return self.attrTuple[5] # VIP4对应的特权值
+    def GetVIP5(self): return self.attrTuple[6] # VIP5对应的特权值
+    def GetVIP6(self): return self.attrTuple[7] # VIP6对应的特权值
+    def GetVIP7(self): return self.attrTuple[8] # VIP7对应的特权值
+    def GetVIP8(self): return self.attrTuple[9] # VIP8对应的特权值
+    def GetVIP9(self): return self.attrTuple[10] # VIP9对应的特权值
+    def GetVIP10(self): return self.attrTuple[11] # VIP10对应的特权值
+    def GetVIP11(self): return self.attrTuple[12] # VIP11对应的特权值
+    def GetVIP12(self): return self.attrTuple[13] # VIP12对应的特权值
+    def GetVIP13(self): return self.attrTuple[14] # VIP13对应的特权值
+    def GetVIP14(self): return self.attrTuple[15] # VIP14对应的特权值
+    def GetVIP15(self): return self.attrTuple[16] # VIP15对应的特权值
 
 # 限时特惠表
 class IPY_ActSpringSale():
     
     def __init__(self):
-        self.CfgID = 0
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.ActNum = 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.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetActNum(self): return self.ActNum # 活动分组编号, 活动类型 * 10 + 不同界面编号
-    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 GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表
+    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetStartTimeList(self): return self.attrTuple[6] # 开启时间列表, 支持多个时段
+    def GetEndTimeList(self): return self.attrTuple[7] # 结束时间列表, 支持多个时段
+    def GetAdvanceMinutes(self): return self.attrTuple[8] # 前端提前X分钟展示活动
+    def GetNotifyInfoStart(self): return self.attrTuple[9] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[10] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[11] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetLVLimit(self): return self.attrTuple[12] # 限制等级
+    def GetIsDayReset(self): return self.attrTuple[13] # 是否每天重置
 
 # 限时礼包表
 class IPY_ActFlashGiftbag():
     
     def __init__(self):
-        self.CfgID = 0
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndDate = ""
-        self.StartTimeList = []
-        self.EndTimeList = []
-        self.AdvanceMinutes = 0
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
-        self.LimitWorldLV = 0
-        self.LVLimit = 0
-        self.IsDayReset = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetActNum(self): return self.ActNum # 活动分组编号, 活动类型 * 10 + 不同界面编号
-    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 GetLimitWorldLV(self): return self.LimitWorldLV # 限制开启的最低世界等级
-    def GetLVLimit(self): return self.LVLimit # 限制等级
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表
+    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetStartTimeList(self): return self.attrTuple[6] # 开启时间列表, 支持多个时段
+    def GetEndTimeList(self): return self.attrTuple[7] # 结束时间列表, 支持多个时段
+    def GetAdvanceMinutes(self): return self.attrTuple[8] # 前端提前X分钟展示活动
+    def GetNotifyInfoStart(self): return self.attrTuple[9] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[10] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[11] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetLimitWorldLV(self): return self.attrTuple[12] # 限制开启的最低世界等级
+    def GetLVLimit(self): return self.attrTuple[13] # 限制等级
+    def GetIsDayReset(self): return self.attrTuple[14] # 是否每天重置
 
 # 每日礼包表
 class IPY_ActDailyGiftbag():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActMark = ""
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.StartDate = ""
-        self.EndDate = ""
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActMark(self): return self.ActMark # 活动组标记
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActMark(self): return self.attrTuple[1] # 活动组标记
+    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
 
 # 双倍经验活动表
 class IPY_ActExpRate():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ServerGroupIDList = []
-        self.ServerGroupIDListExcept = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.StartTimeList = []
-        self.EndTimeList = []
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
-        self.LVLimit = 0
-        self.AddExpRate = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器组ID列表
-    def GetServerGroupIDListExcept(self): return self.ServerGroupIDListExcept # 排除的服务器组ID列表
-    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 GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key, [可选参数1, ...]]
-    def GetLVLimit(self): return self.LVLimit # 限制等级
-    def GetAddExpRate(self): return self.AddExpRate # 经验倍率加成,万分率
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetServerGroupIDList(self): return self.attrTuple[1] # 服务器组ID列表
+    def GetServerGroupIDListExcept(self): return self.attrTuple[2] # 排除的服务器组ID列表
+    def GetStartDate(self): return self.attrTuple[3] # 开启日期
+    def GetEndDate(self): return self.attrTuple[4] # 结束日期
+    def GetStartTimeList(self): return self.attrTuple[5] # 开启时间列表, 支持多个时段
+    def GetEndTimeList(self): return self.attrTuple[6] # 结束时间列表, 支持多个时段
+    def GetNotifyInfoStart(self): return self.attrTuple[7] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[8] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[9] # 全服提示信息 - 循环广播[间隔分钟, 广播key, [可选参数1, ...]]
+    def GetLVLimit(self): return self.attrTuple[10] # 限制等级
+    def GetAddExpRate(self): return self.attrTuple[11] # 经验倍率加成,万分率
 
 # 消费返利活动表
 class IPY_ActCostRebate():
     
     def __init__(self):
-        self.CfgID = 0
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndDate = ""
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
-        self.IsDayReset = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetActNum(self): return self.ActNum # 活动分组编号, 活动类型 * 10 + 不同界面编号
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表
+    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置
 
 # 买一送多活动表
 class IPY_ActBuyOne():
     
     def __init__(self):
-        self.CfgID = 0
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndDate = ""
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
-        self.IsDayReset = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetActNum(self): return self.ActNum # 活动分组编号, 活动类型 * 10 + 不同界面编号
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表
+    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置
 
 # 集字活动时间表
 class IPY_ActCollectWords():
     
     def __init__(self):
-        self.CfgID = 0
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndDate = ""
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetActNum(self): return self.ActNum # 活动分组编号, 活动类型 * 10 + 不同界面编号
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表
+    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
 
 # 垃圾分类活动时间表
 class IPY_ActGarbageSorting():
     
     def __init__(self):
-        self.CfgID = 0
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndDate = ""
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
-        self.ResetType = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetActNum(self): return self.ActNum # 活动分组编号, 活动类型 * 10 + 不同界面编号
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
-    def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表
+    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetResetType(self): return self.attrTuple[9] # 重置类型,0-0点重置;1-5点重置
 
 # Boss历练活动表
 class IPY_ActBossTrial():
     
     def __init__(self):
-        self.CfgID = 0
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndDate = ""
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
-        self.IsDayReset = 0
-        self.ResetType = 0
-        self.TemplateIDList = []
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetActNum(self): return self.ActNum # 活动分组编号, 活动类型 * 10 + 不同界面编号
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
-    def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
-    def GetTemplateIDList(self): return self.TemplateIDList # 榜单模板编号列表
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表
+    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置
+    def GetResetType(self): return self.attrTuple[10] # 重置类型,0-0点重置;1-5点重置
+    def GetTemplateIDList(self): return self.attrTuple[11] # 榜单模板编号列表
 
 # Boss历练榜单模版表
 class IPY_ActBossTrialTemplate():
     
     def __init__(self):
-        self.TemplateID = 0
-        self.Rank = 0
-        self.AwardItemList = []
+        self.attrTuple = None
         return
         
-    def GetTemplateID(self): return self.TemplateID # 模板编号
-    def GetRank(self): return self.Rank # 名次
-    def GetAwardItemList(self): return self.AwardItemList # 奖励物品信息列表 [[物品ID,个数,是否拍品], ...]
+    def GetTemplateID(self): return self.attrTuple[0] # 模板编号
+    def GetRank(self): return self.attrTuple[1] # 名次
+    def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品信息列表 [[物品ID,个数,是否拍品], ...]
 
 # 仙匣秘境活动时间表
 class IPY_ActXianXiaMJ():
     
     def __init__(self):
-        self.CfgID = 0
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndDate = ""
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
-        self.ResetType = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetActNum(self): return self.ActNum # 活动分组编号, 活动类型 * 10 + 不同界面编号
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
-    def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表
+    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetResetType(self): return self.attrTuple[9] # 重置类型,0-0点重置;1-5点重置
 
 # 天帝礼包活动时间表
 class IPY_ActGodGift():
     
     def __init__(self):
-        self.CfgID = 0
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndDate = ""
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
-        self.IsDayReset = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetActNum(self): return self.ActNum # 活动分组编号, 活动类型 * 10 + 不同界面编号
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表
+    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置
 
 # 骑宠盛宴活动
 class IPY_ActHorsePetFeast():
     
     def __init__(self):
-        self.CfgID = 0
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndDate = ""
-        self.StartTimeList = []
-        self.EndTimeList = []
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.IsDayReset = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetActNum(self): return self.ActNum # 活动分组编号, 活动类型 * 10 + 不同界面编号
-    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 GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表
+    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetStartTimeList(self): return self.attrTuple[6] # 开启时间列表, 支持多个时段
+    def GetEndTimeList(self): return self.attrTuple[7] # 结束时间列表, 支持多个时段
+    def GetNotifyInfoStart(self): return self.attrTuple[8] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[9] # 全服提示信息 - 相对结束时间
+    def GetIsDayReset(self): return self.attrTuple[10] # 是否每天重置
 
 # BOSS复活活动时间表
 class IPY_ActBossReborn():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ServerGroupIDList = []
-        self.ServerGroupIDListExcept = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.ResetType = 0
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.LVLimit = 0
-        self.TemplateID = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器组ID列表
-    def GetServerGroupIDListExcept(self): return self.ServerGroupIDListExcept # 排除的服务器组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 GetTemplateID(self): return self.TemplateID # 模板编号
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetServerGroupIDList(self): return self.attrTuple[1] # 服务器组ID列表
+    def GetServerGroupIDListExcept(self): return self.attrTuple[2] # 排除的服务器组ID列表
+    def GetStartDate(self): return self.attrTuple[3] # 开启日期
+    def GetEndDate(self): return self.attrTuple[4] # 结束日期
+    def GetResetType(self): return self.attrTuple[5] # 重置类型,0-0点重置;1-5点重置
+    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间
+    def GetLVLimit(self): return self.attrTuple[8] # 限制等级
+    def GetTemplateID(self): return self.attrTuple[9] # 模板编号
 
 # 仙界盛典活动时间表
 class IPY_ActFairyCeremony():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActMark = ""
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.ResetType = 0
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.LVLimit = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActMark(self): return self.ActMark # 活动组标记
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置;2-5点开始0点结束
-    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetLVLimit(self): return self.LVLimit # 限制等级
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActMark(self): return self.attrTuple[1] # 活动组标记
+    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetResetType(self): return self.attrTuple[6] # 重置类型,0-0点重置;1-5点重置;2-5点开始0点结束
+    def GetNotifyInfoStart(self): return self.attrTuple[7] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[8] # 全服提示信息 - 相对结束时间
+    def GetLVLimit(self): return self.attrTuple[9] # 限制等级
 
 # 仙界盛典-绝版降临表
 class IPY_UniquenessArrive():
     
     def __init__(self):
-        self.WorldLvNum = 0
-        self.Rank = 0
-        self.Award = {}
+        self.attrTuple = None
         return
         
-    def GetWorldLvNum(self): return self.WorldLvNum # 世界等级档
-    def GetRank(self): return self.Rank # 排名
-    def GetAward(self): return self.Award # 奖励 {"职业":[[物品ID,个数,是否绑定],...], ...}
+    def GetWorldLvNum(self): return self.attrTuple[0] # 世界等级档
+    def GetRank(self): return self.attrTuple[1] # 排名
+    def GetAward(self): return self.attrTuple[2] # 奖励 {"职业":[[物品ID,个数,是否绑定],...], ...}
 
 # 多倍修行点活动时间表
 class IPY_ActRealmPoint():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActMark = ""
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.ResetType = 0
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.Multiple = 0
-        self.LVLimit = 0
-        self.PointLimit = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActMark(self): return self.ActMark # 活动组标记
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器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 # 倍数
-    def GetLVLimit(self): return self.LVLimit # 限制等级
-    def GetPointLimit(self): return self.PointLimit # 限制额外修行点
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActMark(self): return self.attrTuple[1] # 活动组标记
+    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetResetType(self): return self.attrTuple[6] # 重置类型,0-0点重置;1-5点重置
+    def GetNotifyInfoStart(self): return self.attrTuple[7] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[8] # 全服提示信息 - 相对结束时间
+    def GetMultiple(self): return self.attrTuple[9] # 倍数
+    def GetLVLimit(self): return self.attrTuple[10] # 限制等级
+    def GetPointLimit(self): return self.attrTuple[11] # 限制额外修行点
 
 # 限时抢购表
 class IPY_ActFlashSale():
     
     def __init__(self):
-        self.CfgID = 0
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.ActNum = 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.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetActNum(self): return self.ActNum # 活动分组编号, 活动类型 * 10 + 不同界面编号
-    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 GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表
+    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetStartTimeList(self): return self.attrTuple[6] # 开启时间列表, 支持多个时段
+    def GetEndTimeList(self): return self.attrTuple[7] # 结束时间列表, 支持多个时段
+    def GetAdvanceMinutes(self): return self.attrTuple[8] # 前端提前X分钟展示活动
+    def GetNotifyInfoStart(self): return self.attrTuple[9] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[10] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[11] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetLVLimit(self): return self.attrTuple[12] # 限制等级
+    def GetIsDayReset(self): return self.attrTuple[13] # 是否每天重置
+    def GetShopTypeList(self): return self.attrTuple[14] # 商店类型列表
 
 # 商城表
 class IPY_Store():
     
     def __init__(self):
-        self.ID = 0
-        self.ShopType = 0
-        self.RefreshType = 0
-        self.ServerLimitCnt = 0
+        self.attrTuple = None
         return
         
-    def GetID(self): return self.ID # ID
-    def GetShopType(self): return self.ShopType # 商店类型
-    def GetRefreshType(self): return self.RefreshType # 刷新类型 0-不重置,1-onWeek0点,2-onWeek5点,3-OnDay0点,4-OnDay5点
-    def GetServerLimitCnt(self): return self.ServerLimitCnt # 全服限制数量
+    def GetID(self): return self.attrTuple[0] # ID
+    def GetShopType(self): return self.attrTuple[1] # 商店类型
+    def GetRefreshType(self): return self.attrTuple[2] # 刷新类型 0-不重置,1-onWeek0点,2-onWeek5点,3-OnDay0点,4-OnDay5点
+    def GetServerLimitCnt(self): return self.attrTuple[3] # 全服限制数量
 
 # 许愿池活动时间表
 class IPY_ActWishingWell():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ServerGroupIDList = []
-        self.ServerGroupIDListExcept = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.IsDayReset = 0
-        self.ResetType = 0
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
-        self.LVLimit = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器组ID列表
-    def GetServerGroupIDListExcept(self): return self.ServerGroupIDListExcept # 排除的服务器组ID列表
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
-    def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
-    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 GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetServerGroupIDList(self): return self.attrTuple[1] # 服务器组ID列表
+    def GetServerGroupIDListExcept(self): return self.attrTuple[2] # 排除的服务器组ID列表
+    def GetStartDate(self): return self.attrTuple[3] # 开启日期
+    def GetEndDate(self): return self.attrTuple[4] # 结束日期
+    def GetIsDayReset(self): return self.attrTuple[5] # 是否每天重置
+    def GetResetType(self): return self.attrTuple[6] # 重置类型,0-0点重置;1-5点重置
+    def GetNotifyInfoStart(self): return self.attrTuple[7] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[8] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[9] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetLVLimit(self): return self.attrTuple[10] # 限制等级
 
 # 充值返利活动表
 class IPY_ActRechargePrize():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActMark = ""
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
-        self.IsDayReset = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActMark(self): return self.ActMark # 活动组标记
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActMark(self): return self.attrTuple[1] # 活动组标记
+    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置
 
 # 累计充值返利仙玉活动表
 class IPY_ActRechargeRebateGold():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActMark = ""
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
-        self.IsDayReset = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActMark(self): return self.ActMark # 活动组标记
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActMark(self): return self.attrTuple[1] # 活动组标记
+    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置
 
 # 成长必买活动表
 class IPY_ActGrowupBuy():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActMark = ""
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActMark(self): return self.ActMark # 活动组标记
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActMark(self): return self.attrTuple[1] # 活动组标记
+    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
 
 # 单笔累充活动表
 class IPY_ActSingleRecharge():
     
     def __init__(self):
-        self.CfgID = 0
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndDate = ""
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
-        self.IsDayReset = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetActNum(self): return self.ActNum # 活动分组编号, 活动类型 * 10 + 不同界面编号
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表
+    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置
 
 # 转盘活动表
 class IPY_ActTurntable():
     
     def __init__(self):
-        self.CfgID = 0
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndDate = ""
-        self.IsDayReset = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetActNum(self): return self.ActNum # 活动分组编号, 活动类型 * 10 + 不同界面编号
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表
+    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetIsDayReset(self): return self.attrTuple[6] # 是否每天重置
 
 # 多日连充活动表
 class IPY_ActManyDayRecharge():
     
     def __init__(self):
-        self.CfgID = 0
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndDate = ""
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetActNum(self): return self.ActNum # 活动分组编号, 活动类型 * 10 + 不同界面编号
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表
+    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
 
 # 累计充值活动表
 class IPY_ActTotalRecharge():
     
     def __init__(self):
-        self.CfgID = 0
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndDate = ""
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
-        self.IsDayReset = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetActNum(self): return self.ActNum # 活动分组编号, 活动类型 * 10 + 不同界面编号
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表
+    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置
 
 # 跨服分区表通用
 class IPY_CrossZoneComm():
     
     def __init__(self):
-        self.CrossZoneName = ""
-        self.ZoneID = 0
-        self.ServerGroupIDList = []
+        self.attrTuple = None
         return
         
-    def GetCrossZoneName(self): return self.CrossZoneName # 跨服分区名
-    def GetZoneID(self): return self.ZoneID # 赛区ID
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 赛区服务器组ID列表
+    def GetCrossZoneName(self): return self.attrTuple[0] # 跨服分区名
+    def GetZoneID(self): return self.attrTuple[1] # 赛区ID
+    def GetServerGroupIDList(self): return self.attrTuple[2] # 赛区服务器组ID列表
 
 # 跨服分区表竞技场
 class IPY_CrossZonePK():
     
     def __init__(self):
-        self.CrossZoneName = ""
-        self.ZoneID = 0
-        self.ZoneName = ""
-        self.ServerGroupIDList = []
+        self.attrTuple = None
         return
         
-    def GetCrossZoneName(self): return self.CrossZoneName # 跨服分区名
-    def GetZoneID(self): return self.ZoneID # 赛区ID
-    def GetZoneName(self): return self.ZoneName # 赛区名字
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 赛区服务器组ID列表
+    def GetCrossZoneName(self): return self.attrTuple[0] # 跨服分区名
+    def GetZoneID(self): return self.attrTuple[1] # 赛区ID
+    def GetZoneName(self): return self.attrTuple[2] # 赛区名字
+    def GetServerGroupIDList(self): return self.attrTuple[3] # 赛区服务器组ID列表
 
 # 跨服排位赛流程表
 class IPY_ChampionshipTime():
     
     def __init__(self):
-        self.ID = 0
-        self.StartDay = 0
-        self.StartHour = 0
-        self.StartMinute = 0
-        self.EndDay = 0
-        self.EndHour = 0
-        self.EndMinute = 0
-        self.StateValue = 0
-        self.NotifyInfo = {}
+        self.attrTuple = None
         return
         
-    def GetID(self): return self.ID
-    def GetStartDay(self): return self.StartDay # 开始天
-    def GetStartHour(self): return self.StartHour # 开始时
-    def GetStartMinute(self): return self.StartMinute # 开始分
-    def GetEndDay(self): return self.EndDay # 结束天
-    def GetEndHour(self): return self.EndHour # 结束时
-    def GetEndMinute(self): return self.EndMinute # 结束分
-    def GetStateValue(self): return self.StateValue # 状态值
-    def GetNotifyInfo(self): return self.NotifyInfo # 广播提示信息
+    def GetID(self): return self.attrTuple[0]
+    def GetStartDay(self): return self.attrTuple[1] # 开始天
+    def GetStartHour(self): return self.attrTuple[2] # 开始时
+    def GetStartMinute(self): return self.attrTuple[3] # 开始分
+    def GetEndDay(self): return self.attrTuple[4] # 结束天
+    def GetEndHour(self): return self.attrTuple[5] # 结束时
+    def GetEndMinute(self): return self.attrTuple[6] # 结束分
+    def GetStateValue(self): return self.attrTuple[7] # 状态值
+    def GetNotifyInfo(self): return self.attrTuple[8] # 广播提示信息
 
 # 跨服排位奖励表
 class IPY_ChampionshipRank():
     
     def __init__(self):
-        self.Rank = 0
-        self.RankAwardItemList = []
-        self.MainOfficialID = 0
+        self.attrTuple = None
         return
         
-    def GetRank(self): return self.Rank #  名次
-    def GetRankAwardItemList(self): return self.RankAwardItemList # 名次奖励物品列表
-    def GetMainOfficialID(self): return self.MainOfficialID # 主官职ID
+    def GetRank(self): return self.attrTuple[0] #  名次
+    def GetRankAwardItemList(self): return self.attrTuple[1] # 名次奖励物品列表
+    def GetMainOfficialID(self): return self.attrTuple[2] # 主官职ID
 
 # 跨服排位官职表
 class IPY_ChampionshipOfficial():
     
     def __init__(self):
-        self.OfficialID = 0
-        self.JuniorOfficialIDList = []
-        self.DailyAwardItemList = []
-        self.CanBeReplace = 0
+        self.attrTuple = None
         return
         
-    def GetOfficialID(self): return self.OfficialID #  官职ID
-    def GetJuniorOfficialIDList(self): return self.JuniorOfficialIDList # 下级官职ID列表
-    def GetDailyAwardItemList(self): return self.DailyAwardItemList # 官职每日邮件奖励物品列表
-    def GetCanBeReplace(self): return self.CanBeReplace # 是否可被挑战替换
+    def GetOfficialID(self): return self.attrTuple[0] #  官职ID
+    def GetJuniorOfficialIDList(self): return self.attrTuple[1] # 下级官职ID列表
+    def GetDailyAwardItemList(self): return self.attrTuple[2] # 官职每日邮件奖励物品列表
+    def GetCanBeReplace(self): return self.attrTuple[3] # 是否可被挑战替换
 
 # 跨服竞技场赛季表
 class IPY_CrossRealmPKSeason():
     
     def __init__(self):
-        self.CrossZoneName = ""
-        self.ZoneID = 0
-        self.SeasonID = 0
-        self.StartDate = ""
-        self.EndDate = ""
-        self.EndTime = ""
+        self.attrTuple = None
         return
         
-    def GetCrossZoneName(self): return self.CrossZoneName # 跨服分区名
-    def GetZoneID(self): return self.ZoneID # 赛区ID
-    def GetSeasonID(self): return self.SeasonID # 赛季ID
-    def GetStartDate(self): return self.StartDate # 开始日期	yyyy-MM-dd
-    def GetEndDate(self): return self.EndDate # 结束日期	yyyy-MM-dd
-    def GetEndTime(self): return self.EndTime # 结算时间	hh:mm
+    def GetCrossZoneName(self): return self.attrTuple[0] # 跨服分区名
+    def GetZoneID(self): return self.attrTuple[1] # 赛区ID
+    def GetSeasonID(self): return self.attrTuple[2] # 赛季ID
+    def GetStartDate(self): return self.attrTuple[3] # 开始日期	yyyy-MM-dd
+    def GetEndDate(self): return self.attrTuple[4] # 结束日期	yyyy-MM-dd
+    def GetEndTime(self): return self.attrTuple[5] # 结算时间	hh:mm
 
 # 跨服竞技场段位表
 class IPY_CrossRealmPKDan():
     
     def __init__(self):
-        self.DanLV = 0
-        self.LVUpScore = 0
-        self.MatchRobotRate = 0
-        self.MatchRobotRateEx = 0
+        self.attrTuple = None
         return
         
-    def GetDanLV(self): return self.DanLV # 段位等级
-    def GetLVUpScore(self): return self.LVUpScore # 升段位所需积分
-    def GetMatchRobotRate(self): return self.MatchRobotRate # 匹配机器人基础概率,百分率
-    def GetMatchRobotRateEx(self): return self.MatchRobotRateEx # 匹配机器人失败次数附加概率,百分率
+    def GetDanLV(self): return self.attrTuple[0] # 段位等级
+    def GetLVUpScore(self): return self.attrTuple[1] # 升段位所需积分
+    def GetMatchRobotRate(self): return self.attrTuple[2] # 匹配机器人基础概率,百分率
+    def GetMatchRobotRateEx(self): return self.attrTuple[3] # 匹配机器人失败次数附加概率,百分率
 
 # 跨服Boss蓬莱仙境分区地图表
 class IPY_CrossPenglaiZoneMap():
     
     def __init__(self):
-        self.ZoneID = 0
-        self.MapID = 0
-        self.DataMapID = 0
-        self.CopyMapID = 0
+        self.attrTuple = None
         return
         
-    def GetZoneID(self): return self.ZoneID # 分区ID
-    def GetMapID(self): return self.MapID # 场景地图ID
-    def GetDataMapID(self): return self.DataMapID # 数据地图ID
-    def GetCopyMapID(self): return self.CopyMapID # 虚拟线路ID
+    def GetZoneID(self): return self.attrTuple[0] # 分区ID
+    def GetMapID(self): return self.attrTuple[1] # 场景地图ID
+    def GetDataMapID(self): return self.attrTuple[2] # 数据地图ID
+    def GetCopyMapID(self): return self.attrTuple[3] # 虚拟线路ID
 
 # 跨服Boss魔化之地分区地图表
 class IPY_CrossDemonLandZoneMap():
     
     def __init__(self):
-        self.ZoneID = 0
-        self.MapID = 0
-        self.DataMapID = 0
-        self.CopyMapID = 0
+        self.attrTuple = None
         return
         
-    def GetZoneID(self): return self.ZoneID # 分区ID
-    def GetMapID(self): return self.MapID # 场景地图ID
-    def GetDataMapID(self): return self.DataMapID # 数据地图ID
-    def GetCopyMapID(self): return self.CopyMapID # 虚拟线路ID
+    def GetZoneID(self): return self.attrTuple[0] # 分区ID
+    def GetMapID(self): return self.attrTuple[1] # 场景地图ID
+    def GetDataMapID(self): return self.attrTuple[2] # 数据地图ID
+    def GetCopyMapID(self): return self.attrTuple[3] # 虚拟线路ID
 
 # 跨服分区地图逐鹿万界
 class IPY_CrossFamilyFlagwarZoneMap():
     
     def __init__(self):
-        self.ZoneID = 0
-        self.MapID = 0
-        self.DataMapID = 0
-        self.CopyMapID = 0
+        self.attrTuple = None
         return
         
-    def GetZoneID(self): return self.ZoneID # 分区ID
-    def GetMapID(self): return self.MapID # 场景地图ID
-    def GetDataMapID(self): return self.DataMapID # 数据地图ID
-    def GetCopyMapID(self): return self.CopyMapID # 虚拟线路ID
+    def GetZoneID(self): return self.attrTuple[0] # 分区ID
+    def GetMapID(self): return self.attrTuple[1] # 场景地图ID
+    def GetDataMapID(self): return self.attrTuple[2] # 数据地图ID
+    def GetCopyMapID(self): return self.attrTuple[3] # 虚拟线路ID
 
 # 周狂欢活动时间表
 class IPY_ActWeekParty():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActMark = ""
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.AdvanceMinutes = 0
-        self.IsDayReset = 0
-        self.ResetType = 0
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.LVLimit = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActMark(self): return self.ActMark # 活动组标记
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetAdvanceMinutes(self): return self.AdvanceMinutes # 前端提前X分钟展示活动
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
-    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 GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActMark(self): return self.attrTuple[1] # 活动组标记
+    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetAdvanceMinutes(self): return self.attrTuple[6] # 前端提前X分钟展示活动
+    def GetIsDayReset(self): return self.attrTuple[7] # 是否每天重置
+    def GetResetType(self): return self.attrTuple[8] # 重置类型,0-0点重置;1-5点重置
+    def GetNotifyInfoStart(self): return self.attrTuple[9] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[10] # 全服提示信息 - 相对结束时间
+    def GetLVLimit(self): return self.attrTuple[11] # 限制等级
 
 # 登录奖励时间表
 class IPY_ActLoginAward():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActMark = ""
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.AdvanceMinutes = 0
-        self.IsDayReset = 0
-        self.ResetType = 0
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
-        self.LVLimit = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActMark(self): return self.ActMark # 活动组标记
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetAdvanceMinutes(self): return self.AdvanceMinutes # 前端提前X分钟展示活动
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
-    def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
-    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 GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActMark(self): return self.attrTuple[1] # 活动组标记
+    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetAdvanceMinutes(self): return self.attrTuple[6] # 前端提前X分钟展示活动
+    def GetIsDayReset(self): return self.attrTuple[7] # 是否每天重置
+    def GetResetType(self): return self.attrTuple[8] # 重置类型,0-0点重置;1-5点重置
+    def GetNotifyInfoStart(self): return self.attrTuple[9] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[10] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[11] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetLVLimit(self): return self.attrTuple[12] # 限制等级
 
 # 节日巡礼活动时间表
 class IPY_ActFeastWeekParty():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActMark = ""
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.AdvanceMinutes = 0
-        self.IsDayReset = 0
-        self.ResetType = 0
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.LVLimit = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActMark(self): return self.ActMark # 活动组标记
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetAdvanceMinutes(self): return self.AdvanceMinutes # 前端提前X分钟展示活动
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
-    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 GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActMark(self): return self.attrTuple[1] # 活动组标记
+    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetAdvanceMinutes(self): return self.attrTuple[6] # 前端提前X分钟展示活动
+    def GetIsDayReset(self): return self.attrTuple[7] # 是否每天重置
+    def GetResetType(self): return self.attrTuple[8] # 重置类型,0-0点重置;1-5点重置
+    def GetNotifyInfoStart(self): return self.attrTuple[9] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[10] # 全服提示信息 - 相对结束时间
+    def GetLVLimit(self): return self.attrTuple[11] # 限制等级
 
 # 新仙界盛典活动时间表
 class IPY_ActNewFairyCeremony():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActMark = ""
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.ResetType = 0
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.LVLimit = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActMark(self): return self.ActMark # 活动组标记
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置;2-5点开始0点结束
-    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetLVLimit(self): return self.LVLimit # 限制等级
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActMark(self): return self.attrTuple[1] # 活动组标记
+    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetResetType(self): return self.attrTuple[6] # 重置类型,0-0点重置;1-5点重置;2-5点开始0点结束
+    def GetNotifyInfoStart(self): return self.attrTuple[7] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[8] # 全服提示信息 - 相对结束时间
+    def GetLVLimit(self): return self.attrTuple[9] # 限制等级
 
 # 新仙界盛典-绝版降临表
 class IPY_NewUniquenessArrive():
     
     def __init__(self):
-        self.WorldLvNum = 0
-        self.Rank = 0
-        self.Award = {}
+        self.attrTuple = None
         return
         
-    def GetWorldLvNum(self): return self.WorldLvNum # 世界等级档
-    def GetRank(self): return self.Rank # 排名
-    def GetAward(self): return self.Award # 奖励 {"职业":[[物品ID,个数,是否绑定],...], ...}
+    def GetWorldLvNum(self): return self.attrTuple[0] # 世界等级档
+    def GetRank(self): return self.attrTuple[1] # 排名
+    def GetAward(self): return self.attrTuple[2] # 奖励 {"职业":[[物品ID,个数,是否绑定],...], ...}
 
 # 情缘礼物表
 class IPY_LoveGift():
     
     def __init__(self):
-        self.GiftNum = 0
-        self.AddCharmSelf = 0.0
-        self.AddCharmTag = 0.0
-        self.AddIntimacy = 0
-        self.WorldNotifyKey = ""
+        self.attrTuple = None
         return
         
-    def GetGiftNum(self): return self.GiftNum # 聘礼ID
-    def GetAddCharmSelf(self): return self.AddCharmSelf # 单个增加自身魅力
-    def GetAddCharmTag(self): return self.AddCharmTag # 单个增加对方魅力
-    def GetAddIntimacy(self): return self.AddIntimacy # 单个增加双方亲密度
-    def GetWorldNotifyKey(self): return self.WorldNotifyKey # 广播key
+    def GetGiftNum(self): return self.attrTuple[0] # 聘礼ID
+    def GetAddCharmSelf(self): return self.attrTuple[1] # 单个增加自身魅力
+    def GetAddCharmTag(self): return self.attrTuple[2] # 单个增加对方魅力
+    def GetAddIntimacy(self): return self.attrTuple[3] # 单个增加双方亲密度
+    def GetWorldNotifyKey(self): return self.attrTuple[4] # 广播key
 
 # 情缘提亲表
 class IPY_Marry():
     
     def __init__(self):
-        self.BridePriceID = 0
-        self.CanBuyCount = 0
-        self.IsDayReset = 0
-        self.Prosperity = 0
-        self.CandyTimes = 0
-        self.CandyItemWeightInfo = []
-        self.CandyNotifyItemInfo = []
-        self.BrideGiftItemInfo = []
-        self.WorldNotifyKey = ""
+        self.attrTuple = None
         return
         
-    def GetBridePriceID(self): return self.BridePriceID # 聘礼ID
-    def GetCanBuyCount(self): return self.CanBuyCount # 可购买次数
-    def GetIsDayReset(self): return self.IsDayReset # 是否每日重置
-    def GetProsperity(self): return self.Prosperity # 初始繁荣度
-    def GetCandyTimes(self): return self.CandyTimes # 喜糖持续时间秒
-    def GetCandyItemWeightInfo(self): return self.CandyItemWeightInfo # 喜糖物品库权重列表[[权重, 物品ID,个数,是否拍品], ...]
-    def GetCandyNotifyItemInfo(self): return self.CandyNotifyItemInfo # 喜糖需要广播的物品ID列表
-    def GetBrideGiftItemInfo(self): return self.BrideGiftItemInfo # 聘礼物品列表[[物品ID,个数,是否拍品], ...]
-    def GetWorldNotifyKey(self): return self.WorldNotifyKey # 广播key
+    def GetBridePriceID(self): return self.attrTuple[0] # 聘礼ID
+    def GetCanBuyCount(self): return self.attrTuple[1] # 可购买次数
+    def GetIsDayReset(self): return self.attrTuple[2] # 是否每日重置
+    def GetProsperity(self): return self.attrTuple[3] # 初始繁荣度
+    def GetCandyTimes(self): return self.attrTuple[4] # 喜糖持续时间秒
+    def GetCandyItemWeightInfo(self): return self.attrTuple[5] # 喜糖物品库权重列表[[权重, 物品ID,个数,是否拍品], ...]
+    def GetCandyNotifyItemInfo(self): return self.attrTuple[6] # 喜糖需要广播的物品ID列表
+    def GetBrideGiftItemInfo(self): return self.attrTuple[7] # 聘礼物品列表[[物品ID,个数,是否拍品], ...]
+    def GetWorldNotifyKey(self): return self.attrTuple[8] # 广播key
 
 # 幸运鉴宝活动时间表
 class IPY_ActLuckyTreasure():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActMark = ""
-        self.PlatformList = []
-        self.ServerGroupIDList = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.ResetType = 0
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
-        self.LVLimit = 0
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActMark(self): return self.ActMark # 活动组标记
-    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
-    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器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 GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
-    def GetLVLimit(self): return self.LVLimit # 限制等级
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActMark(self): return self.attrTuple[1] # 活动组标记
+    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetResetType(self): return self.attrTuple[6] # 重置类型,0-0点重置;1-5点重置
+    def GetNotifyInfoStart(self): return self.attrTuple[7] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[8] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[9] # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetLVLimit(self): return self.attrTuple[10] # 限制等级
 
 # 跨服幸运云购表
 class IPY_CrossActLuckyCloudBuy():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActGroupName = ""
-        self.ZoneID = 0
-        self.ServerIDRangeList = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.StartTimeList = []
-        self.EndTimeList = []
-        self.RoundMaxList = []
-        self.LVLimit = 0
-        self.TemplateIDList = []
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActGroupName(self): return self.ActGroupName # 活动组名(同组活动的名字需相同)
-    def GetZoneID(self): return self.ZoneID # 组内分组编号
-    def GetServerIDRangeList(self): return self.ServerIDRangeList # 活动的账号服务器ID范围列表 [[serverIDA, serverIDB], ...]
-    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 GetRoundMaxList(self): return self.RoundMaxList # 开启轮次列表
-    def GetLVLimit(self): return self.LVLimit # 限制等级
-    def GetTemplateIDList(self): return self.TemplateIDList # 模板ID列表
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActGroupName(self): return self.attrTuple[1] # 活动组名(同组活动的名字需相同)
+    def GetZoneID(self): return self.attrTuple[2] # 组内分组编号
+    def GetServerIDRangeList(self): return self.attrTuple[3] # 活动的账号服务器ID范围列表 [[serverIDA, serverIDB], ...]
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetStartTimeList(self): return self.attrTuple[6] # 开启时间列表, 支持多个时段
+    def GetEndTimeList(self): return self.attrTuple[7] # 结束时间列表, 支持多个时段
+    def GetRoundMaxList(self): return self.attrTuple[8] # 开启轮次列表
+    def GetLVLimit(self): return self.attrTuple[9] # 限制等级
+    def GetTemplateIDList(self): return self.attrTuple[10] # 模板ID列表
 
 # 跨服幸运云购模板表
 class IPY_CrossActLuckyCloudBuyTemplate():
     
     def __init__(self):
-        self.TemplateID = 0
-        self.BaseAwardInfo = []
-        self.RandAwardWeightInfo = []
-        self.SuperItemWeightInfo = []
+        self.attrTuple = None
         return
         
-    def GetTemplateID(self): return self.TemplateID # 模板ID
-    def GetBaseAwardInfo(self): return self.BaseAwardInfo # 每次购买固定奖励 [[物品ID,个数,是否拍品], ...]
-    def GetRandAwardWeightInfo(self): return self.RandAwardWeightInfo # 每次购买随机奖励权重信息 [[权重,物品ID,个数,是否拍品], ...]
-    def GetSuperItemWeightInfo(self): return self.SuperItemWeightInfo # 大奖随机权重信息  [[权重,物品ID,个数,是否拍品,价值货币类型,货币值], ...]
+    def GetTemplateID(self): return self.attrTuple[0] # 模板ID
+    def GetBaseAwardInfo(self): return self.attrTuple[1] # 每次购买固定奖励 [[物品ID,个数,是否拍品], ...]
+    def GetRandAwardWeightInfo(self): return self.attrTuple[2] # 每次购买随机奖励权重信息 [[权重,物品ID,个数,是否拍品], ...]
+    def GetSuperItemWeightInfo(self): return self.attrTuple[3] # 大奖随机权重信息  [[权重,物品ID,个数,是否拍品,价值货币类型,货币值], ...]
 
 # 跨服全民充值时间表
 class IPY_CrossActAllRecharge():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActGroupName = ""
-        self.ZoneID = 0
-        self.ServerIDRangeList = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
-        self.TemplateIDList = []
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActGroupName(self): return self.ActGroupName # 活动组名(同组活动的名字需相同)
-    def GetZoneID(self): return self.ZoneID # 组内分组编号
-    def GetServerIDRangeList(self): return self.ServerIDRangeList # 活动的账号服务器ID范围列表 [[serverIDA, serverIDB], ...]
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[循环分钟, 广播key, [广播参数列表可选]]
-    def GetTemplateIDList(self): return self.TemplateIDList # 模板ID列表
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActGroupName(self): return self.attrTuple[1] # 活动组名(同组活动的名字需相同)
+    def GetZoneID(self): return self.attrTuple[2] # 组内分组编号
+    def GetServerIDRangeList(self): return self.attrTuple[3] # 活动的账号服务器ID范围列表 [[serverIDA, serverIDB], ...]
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[循环分钟, 广播key, [广播参数列表可选]]
+    def GetTemplateIDList(self): return self.attrTuple[9] # 模板ID列表
 
 # 跨服全民充值模板表
 class IPY_CrossActAllRechargeTemplate():
     
     def __init__(self):
-        self.TemplateID = 0
-        self.CTGNeed = 0
-        self.NeedPlayerCount = 0
-        self.AwardIndex = 0
-        self.AwardItemList = []
+        self.attrTuple = None
         return
         
-    def GetTemplateID(self): return self.TemplateID # 模板ID
-    def GetCTGNeed(self): return self.CTGNeed # 全民充值RMB
-    def GetNeedPlayerCount(self): return self.NeedPlayerCount # 所需充值达到该档玩家数
-    def GetAwardIndex(self): return self.AwardIndex # 奖励记录索引,从0开始,同个模板不可重复,不可变更
-    def GetAwardItemList(self): return self.AwardItemList # 奖励物品列表[[物品ID,个数,是否拍品], ...]
+    def GetTemplateID(self): return self.attrTuple[0] # 模板ID
+    def GetCTGNeed(self): return self.attrTuple[1] # 全民充值RMB
+    def GetNeedPlayerCount(self): return self.attrTuple[2] # 所需充值达到该档玩家数
+    def GetAwardIndex(self): return self.attrTuple[3] # 奖励记录索引,从0开始,同个模板不可重复,不可变更
+    def GetAwardItemList(self): return self.attrTuple[4] # 奖励物品列表[[物品ID,个数,是否拍品], ...]
 
 # 跨服充值排行活动时间表
 class IPY_CrossActCTGBillboard():
     
     def __init__(self):
-        self.CfgID = 0
-        self.ActGroupName = ""
-        self.ZoneID = 0
-        self.ServerIDRangeList = []
-        self.StartDate = ""
-        self.EndDate = ""
-        self.NotifyInfoStart = {}
-        self.NotifyInfoEnd = {}
-        self.NotifyInfoLoop = []
-        self.IsDayReset = 0
-        self.TemplateIDList = []
+        self.attrTuple = None
         return
         
-    def GetCfgID(self): return self.CfgID # 配置ID
-    def GetActGroupName(self): return self.ActGroupName # 活动组名(同组活动的名字需相同)
-    def GetZoneID(self): return self.ZoneID # 组内分组编号
-    def GetServerIDRangeList(self): return self.ServerIDRangeList # 活动的账号服务器ID范围列表 [[serverIDA, serverIDB], ...]
-    def GetStartDate(self): return self.StartDate # 开启日期
-    def GetEndDate(self): return self.EndDate # 结束日期
-    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
-    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
-    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[循环分钟, 广播key, [广播参数列表可选]]
-    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
-    def GetTemplateIDList(self): return self.TemplateIDList # 模板ID列表
+    def GetCfgID(self): return self.attrTuple[0] # 配置ID
+    def GetActGroupName(self): return self.attrTuple[1] # 活动组名(同组活动的名字需相同)
+    def GetZoneID(self): return self.attrTuple[2] # 组内分组编号
+    def GetServerIDRangeList(self): return self.attrTuple[3] # 活动的账号服务器ID范围列表 [[serverIDA, serverIDB], ...]
+    def GetStartDate(self): return self.attrTuple[4] # 开启日期
+    def GetEndDate(self): return self.attrTuple[5] # 结束日期
+    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[循环分钟, 广播key, [广播参数列表可选]]
+    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置
+    def GetTemplateIDList(self): return self.attrTuple[10] # 模板ID列表
 
 # 跨服充值排行模板名次奖励表
 class IPY_CrossActCTGBillboardOrder():
     
     def __init__(self):
-        self.TemplateID = 0
-        self.OrderA = 0
-        self.OrderB = 0
-        self.CTGAtleast = 0.0
-        self.AwardItemList = []
+        self.attrTuple = None
         return
         
-    def GetTemplateID(self): return self.TemplateID # 模板ID
-    def GetOrderA(self): return self.OrderA # 名次A
-    def GetOrderB(self): return self.OrderB # 至名次B
-    def GetCTGAtleast(self): return self.CTGAtleast # 至少充值RMB
-    def GetAwardItemList(self): return self.AwardItemList # 奖励物品列表[[物品ID,个数,是否拍品], ...]
+    def GetTemplateID(self): return self.attrTuple[0] # 模板ID
+    def GetOrderA(self): return self.attrTuple[1] # 名次A
+    def GetOrderB(self): return self.attrTuple[2] # 至名次B
+    def GetCTGAtleast(self): return self.attrTuple[3] # 至少充值RMB
+    def GetAwardItemList(self): return self.attrTuple[4] # 奖励物品列表[[物品ID,个数,是否拍品], ...]
 
 # 装备升星表
 class IPY_EquipStarUp():
     
     def __init__(self):
-        self.ClassLV = 0
-        self.EquipPlace = 0
-        self.Star = 0
-        self.CostEquipPlace = []
-        self.IsJobLimit = 0
-        self.CostEquipColor = []
-        self.UnSuitRate = 0
+        self.attrTuple = None
         return
         
-    def GetClassLV(self): return self.ClassLV # 阶级
-    def GetEquipPlace(self): return self.EquipPlace # 装备位
-    def GetStar(self): return self.Star # 星数
-    def GetCostEquipPlace(self): return self.CostEquipPlace # 可用装备部位
-    def GetIsJobLimit(self): return self.IsJobLimit # 是否只用本职业装备材料
-    def GetCostEquipColor(self): return self.CostEquipColor # 可用装备品质
-    def GetUnSuitRate(self): return self.UnSuitRate # 单件非套装加成概率
+    def GetClassLV(self): return self.attrTuple[0] # 阶级
+    def GetEquipPlace(self): return self.attrTuple[1] # 装备位
+    def GetStar(self): return self.attrTuple[2] # 星数
+    def GetCostEquipPlace(self): return self.attrTuple[3] # 可用装备部位
+    def GetIsJobLimit(self): return self.attrTuple[4] # 是否只用本职业装备材料
+    def GetCostEquipColor(self): return self.attrTuple[5] # 可用装备品质
+    def GetUnSuitRate(self): return self.attrTuple[6] # 单件非套装加成概率
 
 # 仙盟联赛排名奖励表
 class IPY_FamilyWarRankAward():
     
     def __init__(self):
-        self.WarWorldLV = 0
-        self.WarRank = 0
-        self.RankAuctionItem = []
+        self.attrTuple = None
         return
         
-    def GetWarWorldLV(self): return self.WarWorldLV # 联赛世界等级
-    def GetWarRank(self): return self.WarRank # 联赛排名
-    def GetRankAuctionItem(self): return self.RankAuctionItem # 拍品奖励[[拍品ID,个数], ...]
+    def GetWarWorldLV(self): return self.attrTuple[0] # 联赛世界等级
+    def GetWarRank(self): return self.attrTuple[1] # 联赛排名
+    def GetRankAuctionItem(self): return self.attrTuple[2] # 拍品奖励[[拍品ID,个数], ...]
 
 # 协助感谢礼盒表
 class IPY_AssistThanksGift():
     
     def __init__(self):
-        self.GiftID = 0
-        self.AssistAwardCount = 0
+        self.attrTuple = None
         return
         
-    def GetGiftID(self): return self.GiftID # 礼盒物品ID
-    def GetAssistAwardCount(self): return self.AssistAwardCount #  协助奖励每日次数
+    def GetGiftID(self): return self.attrTuple[0] # 礼盒物品ID
+    def GetAssistAwardCount(self): return self.attrTuple[1] #  协助奖励每日次数
 
 # 缥缈仙域表
 class IPY_FairyDomain():
     
     def __init__(self):
-        self.ID = 0
-        self.HourCntPubLimit = 0
-        self.DayCntPubLimit = 0
+        self.attrTuple = None
         return
         
-    def GetID(self): return self.ID # 事件编号
-    def GetHourCntPubLimit(self): return self.HourCntPubLimit # 全服每小时次数限制
-    def GetDayCntPubLimit(self): return self.DayCntPubLimit # 全服每天次数限制
+    def GetID(self): return self.attrTuple[0] # 事件编号
+    def GetHourCntPubLimit(self): return self.attrTuple[1] # 全服每小时次数限制
+    def GetDayCntPubLimit(self): return self.attrTuple[2] # 全服每天次数限制
 
 
 def Log(msg, playerID=0, par=0):
@@ -2880,230 +2317,161 @@
 class IPY_DataMgr():
     
     def __init__(self):
+        Log("IPY_DataMgr Init...")
         self.fileMD5Dict = {} # 数据表文件md5字典, 用于对比文件差异判断是否重读 {dtName:md5, ...}
         self.ipyConfigEx = {} # 自定义数据缓存 {key:configData, ...}
         self.ipyDataIndexMap = {} # 数据表索引查询缓存 {dtName:{args:[index, ...], ...}, ...}
         self.ipyDataIndexMapEx = {} # 数据表自定义查询条件查询缓存 {dtName_(findKey,...):{(findKeyValue, ...):[index, ...], ...}, ...}
         self.ipyFuncConfigDict = {} # 功能配置表缓存 {key:IPY_FuncConfig, ...}
-        self.IpyDataClear()
+        self.classSizeDict = {} # 数据表类对象占用内存大小 {dtName:size, ...}
+        self.IpyDataClear(True)
         return
     
-    def IpyDataClear(self):
-        Log("IPY_DataMgr Init...")
-        self.ipyConfigEx = {}
-        self.ipyFuncConfigCache = self.__LoadFileData("FuncConfig", IPY_FuncConfig)
-        self.ipyFuncConfigLen = len(self.ipyFuncConfigCache)
-        self.ipyCreateRoleLimitServerCache = self.__LoadFileData("CreateRoleLimitServer", IPY_CreateRoleLimitServer)
-        self.ipyCreateRoleLimitServerLen = len(self.ipyCreateRoleLimitServerCache)
-        self.ipyWorldLVCache = self.__LoadFileData("WorldLV", IPY_WorldLV)
-        self.ipyWorldLVLen = len(self.ipyWorldLVCache)
-        self.ipyFamilyCache = self.__LoadFileData("Family", IPY_Family)
-        self.ipyFamilyLen = len(self.ipyFamilyCache)
-        self.ipyFamilyBossHurtAwardCache = self.__LoadFileData("FamilyBossHurtAward", IPY_FamilyBossHurtAward)
-        self.ipyFamilyBossHurtAwardLen = len(self.ipyFamilyBossHurtAwardCache)
-        self.ipyFamilyZhenfaCache = self.__LoadFileData("FamilyZhenfa", IPY_FamilyZhenfa)
-        self.ipyFamilyZhenfaLen = len(self.ipyFamilyZhenfaCache)
-        self.ipyMarketQueryCache = self.__LoadFileData("MarketQuery", IPY_MarketQuery)
-        self.ipyMarketQueryLen = len(self.ipyMarketQueryCache)
-        self.ipyAuctionItemCache = self.__LoadFileData("AuctionItem", IPY_AuctionItem)
-        self.ipyAuctionItemLen = len(self.ipyAuctionItemCache)
-        self.ipyAuctionSystemItemCache = self.__LoadFileData("AuctionSystemItem", IPY_AuctionSystemItem)
-        self.ipyAuctionSystemItemLen = len(self.ipyAuctionSystemItemCache)
-        self.ipyCrossDailyActionCache = self.__LoadFileData("CrossDailyAction", IPY_CrossDailyAction)
-        self.ipyCrossDailyActionLen = len(self.ipyCrossDailyActionCache)
-        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.ipyDailyActionCustomMixCache = self.__LoadFileData("DailyActionCustomMix", IPY_DailyActionCustomMix)
-        self.ipyDailyActionCustomMixLen = len(self.ipyDailyActionCustomMixCache)
-        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.ipyFBStateTimeCustomMixCache = self.__LoadFileData("FBStateTimeCustomMix", IPY_FBStateTimeCustomMix)
-        self.ipyFBStateTimeCustomMixLen = len(self.ipyFBStateTimeCustomMixCache)
-        self.ipyFBFuncCache = self.__LoadFileData("FBFunc", IPY_FBFunc)
-        self.ipyFBFuncLen = len(self.ipyFBFuncCache)
-        self.ipyFBLineCache = self.__LoadFileData("FBLine", IPY_FBLine)
-        self.ipyFBLineLen = len(self.ipyFBLineCache)
-        self.ipyFBHelpBattleCache = self.__LoadFileData("FBHelpBattle", IPY_FBHelpBattle)
-        self.ipyFBHelpBattleLen = len(self.ipyFBHelpBattleCache)
-        self.ipyChinMapCache = self.__LoadFileData("ChinMap", IPY_ChinMap)
-        self.ipyChinMapLen = len(self.ipyChinMapCache)
-        self.ipyBOSSInfoCache = self.__LoadFileData("BOSSInfo", IPY_BOSSInfo)
-        self.ipyBOSSInfoLen = len(self.ipyBOSSInfoCache)
-        self.ipyBOSSFirstKillCache = self.__LoadFileData("BOSSFirstKill", IPY_BOSSFirstKill)
-        self.ipyBOSSFirstKillLen = len(self.ipyBOSSFirstKillCache)
-        self.ipyOSCBillRankAwardCache = self.__LoadFileData("OSCBillRankAward", IPY_OSCBillRankAward)
-        self.ipyOSCBillRankAwardLen = len(self.ipyOSCBillRankAwardCache)
-        self.ipyQuestionBankCache = self.__LoadFileData("QuestionBank", IPY_QuestionBank)
-        self.ipyQuestionBankLen = len(self.ipyQuestionBankCache)
-        self.ipyFamilyRedPackCache = self.__LoadFileData("FamilyRedPack", IPY_FamilyRedPack)
-        self.ipyFamilyRedPackLen = len(self.ipyFamilyRedPackCache)
-        self.ipyActFeastRedPacketCache = self.__LoadFileData("ActFeastRedPacket", IPY_ActFeastRedPacket)
-        self.ipyActFeastRedPacketLen = len(self.ipyActFeastRedPacketCache)
-        self.ipyActFeastLoginCache = self.__LoadFileData("ActFeastLogin", IPY_ActFeastLogin)
-        self.ipyActFeastLoginLen = len(self.ipyActFeastLoginCache)
-        self.ipyActFeastWishCache = self.__LoadFileData("ActFeastWish", IPY_ActFeastWish)
-        self.ipyActFeastWishLen = len(self.ipyActFeastWishCache)
-        self.ipyActFeastTravelCache = self.__LoadFileData("ActFeastTravel", IPY_ActFeastTravel)
-        self.ipyActFeastTravelLen = len(self.ipyActFeastTravelCache)
-        self.ipyFuncOpenLVCache = self.__LoadFileData("FuncOpenLV", IPY_FuncOpenLV)
-        self.ipyFuncOpenLVLen = len(self.ipyFuncOpenLVCache)
-        self.ipyChinNPCCache = self.__LoadFileData("ChinNPC", IPY_ChinNPC)
-        self.ipyChinNPCLen = len(self.ipyChinNPCCache)
-        self.ipyPlayerLVCache = self.__LoadFileData("PlayerLV", IPY_PlayerLV)
-        self.ipyPlayerLVLen = len(self.ipyPlayerLVCache)
-        self.ipyVipPrivilegeCache = self.__LoadFileData("VipPrivilege", IPY_VipPrivilege)
-        self.ipyVipPrivilegeLen = len(self.ipyVipPrivilegeCache)
-        self.ipyActSpringSaleCache = self.__LoadFileData("ActSpringSale", IPY_ActSpringSale)
-        self.ipyActSpringSaleLen = len(self.ipyActSpringSaleCache)
-        self.ipyActFlashGiftbagCache = self.__LoadFileData("ActFlashGiftbag", IPY_ActFlashGiftbag)
-        self.ipyActFlashGiftbagLen = len(self.ipyActFlashGiftbagCache)
-        self.ipyActDailyGiftbagCache = self.__LoadFileData("ActDailyGiftbag", IPY_ActDailyGiftbag)
-        self.ipyActDailyGiftbagLen = len(self.ipyActDailyGiftbagCache)
-        self.ipyActExpRateCache = self.__LoadFileData("ActExpRate", IPY_ActExpRate)
-        self.ipyActExpRateLen = len(self.ipyActExpRateCache)
-        self.ipyActCostRebateCache = self.__LoadFileData("ActCostRebate", IPY_ActCostRebate)
-        self.ipyActCostRebateLen = len(self.ipyActCostRebateCache)
-        self.ipyActBuyOneCache = self.__LoadFileData("ActBuyOne", IPY_ActBuyOne)
-        self.ipyActBuyOneLen = len(self.ipyActBuyOneCache)
-        self.ipyActCollectWordsCache = self.__LoadFileData("ActCollectWords", IPY_ActCollectWords)
-        self.ipyActCollectWordsLen = len(self.ipyActCollectWordsCache)
-        self.ipyActGarbageSortingCache = self.__LoadFileData("ActGarbageSorting", IPY_ActGarbageSorting)
-        self.ipyActGarbageSortingLen = len(self.ipyActGarbageSortingCache)
-        self.ipyActBossTrialCache = self.__LoadFileData("ActBossTrial", IPY_ActBossTrial)
-        self.ipyActBossTrialLen = len(self.ipyActBossTrialCache)
-        self.ipyActBossTrialTemplateCache = self.__LoadFileData("ActBossTrialTemplate", IPY_ActBossTrialTemplate)
-        self.ipyActBossTrialTemplateLen = len(self.ipyActBossTrialTemplateCache)
-        self.ipyActXianXiaMJCache = self.__LoadFileData("ActXianXiaMJ", IPY_ActXianXiaMJ)
-        self.ipyActXianXiaMJLen = len(self.ipyActXianXiaMJCache)
-        self.ipyActGodGiftCache = self.__LoadFileData("ActGodGift", IPY_ActGodGift)
-        self.ipyActGodGiftLen = len(self.ipyActGodGiftCache)
-        self.ipyActHorsePetFeastCache = self.__LoadFileData("ActHorsePetFeast", IPY_ActHorsePetFeast)
-        self.ipyActHorsePetFeastLen = len(self.ipyActHorsePetFeastCache)
-        self.ipyActBossRebornCache = self.__LoadFileData("ActBossReborn", IPY_ActBossReborn)
-        self.ipyActBossRebornLen = len(self.ipyActBossRebornCache)
-        self.ipyActFairyCeremonyCache = self.__LoadFileData("ActFairyCeremony", IPY_ActFairyCeremony)
-        self.ipyActFairyCeremonyLen = len(self.ipyActFairyCeremonyCache)
-        self.ipyUniquenessArriveCache = self.__LoadFileData("UniquenessArrive", IPY_UniquenessArrive)
-        self.ipyUniquenessArriveLen = len(self.ipyUniquenessArriveCache)
-        self.ipyActRealmPointCache = self.__LoadFileData("ActRealmPoint", IPY_ActRealmPoint)
-        self.ipyActRealmPointLen = len(self.ipyActRealmPointCache)
-        self.ipyActFlashSaleCache = self.__LoadFileData("ActFlashSale", IPY_ActFlashSale)
-        self.ipyActFlashSaleLen = len(self.ipyActFlashSaleCache)
-        self.ipyStoreCache = self.__LoadFileData("Store", IPY_Store)
-        self.ipyStoreLen = len(self.ipyStoreCache)
-        self.ipyActWishingWellCache = self.__LoadFileData("ActWishingWell", IPY_ActWishingWell)
-        self.ipyActWishingWellLen = len(self.ipyActWishingWellCache)
-        self.ipyActRechargePrizeCache = self.__LoadFileData("ActRechargePrize", IPY_ActRechargePrize)
-        self.ipyActRechargePrizeLen = len(self.ipyActRechargePrizeCache)
-        self.ipyActRechargeRebateGoldCache = self.__LoadFileData("ActRechargeRebateGold", IPY_ActRechargeRebateGold)
-        self.ipyActRechargeRebateGoldLen = len(self.ipyActRechargeRebateGoldCache)
-        self.ipyActGrowupBuyCache = self.__LoadFileData("ActGrowupBuy", IPY_ActGrowupBuy)
-        self.ipyActGrowupBuyLen = len(self.ipyActGrowupBuyCache)
-        self.ipyActSingleRechargeCache = self.__LoadFileData("ActSingleRecharge", IPY_ActSingleRecharge)
-        self.ipyActSingleRechargeLen = len(self.ipyActSingleRechargeCache)
-        self.ipyActTurntableCache = self.__LoadFileData("ActTurntable", IPY_ActTurntable)
-        self.ipyActTurntableLen = len(self.ipyActTurntableCache)
-        self.ipyActManyDayRechargeCache = self.__LoadFileData("ActManyDayRecharge", IPY_ActManyDayRecharge)
-        self.ipyActManyDayRechargeLen = len(self.ipyActManyDayRechargeCache)
-        self.ipyActTotalRechargeCache = self.__LoadFileData("ActTotalRecharge", IPY_ActTotalRecharge)
-        self.ipyActTotalRechargeLen = len(self.ipyActTotalRechargeCache)
-        self.ipyCrossZoneCommCache = self.__LoadFileData("CrossZoneComm", IPY_CrossZoneComm)
-        self.ipyCrossZoneCommLen = len(self.ipyCrossZoneCommCache)
-        self.ipyCrossZonePKCache = self.__LoadFileData("CrossZonePK", IPY_CrossZonePK)
-        self.ipyCrossZonePKLen = len(self.ipyCrossZonePKCache)
-        self.ipyChampionshipTimeCache = self.__LoadFileData("ChampionshipTime", IPY_ChampionshipTime)
-        self.ipyChampionshipTimeLen = len(self.ipyChampionshipTimeCache)
-        self.ipyChampionshipRankCache = self.__LoadFileData("ChampionshipRank", IPY_ChampionshipRank)
-        self.ipyChampionshipRankLen = len(self.ipyChampionshipRankCache)
-        self.ipyChampionshipOfficialCache = self.__LoadFileData("ChampionshipOfficial", IPY_ChampionshipOfficial)
-        self.ipyChampionshipOfficialLen = len(self.ipyChampionshipOfficialCache)
-        self.ipyCrossRealmPKSeasonCache = self.__LoadFileData("CrossRealmPKSeason", IPY_CrossRealmPKSeason)
-        self.ipyCrossRealmPKSeasonLen = len(self.ipyCrossRealmPKSeasonCache)
-        self.ipyCrossRealmPKDanCache = self.__LoadFileData("CrossRealmPKDan", IPY_CrossRealmPKDan)
-        self.ipyCrossRealmPKDanLen = len(self.ipyCrossRealmPKDanCache)
-        self.ipyCrossPenglaiZoneMapCache = self.__LoadFileData("CrossPenglaiZoneMap", IPY_CrossPenglaiZoneMap)
-        self.ipyCrossPenglaiZoneMapLen = len(self.ipyCrossPenglaiZoneMapCache)
-        self.ipyCrossDemonLandZoneMapCache = self.__LoadFileData("CrossDemonLandZoneMap", IPY_CrossDemonLandZoneMap)
-        self.ipyCrossDemonLandZoneMapLen = len(self.ipyCrossDemonLandZoneMapCache)
-        self.ipyCrossFamilyFlagwarZoneMapCache = self.__LoadFileData("CrossFamilyFlagwarZoneMap", IPY_CrossFamilyFlagwarZoneMap)
-        self.ipyCrossFamilyFlagwarZoneMapLen = len(self.ipyCrossFamilyFlagwarZoneMapCache)
-        self.ipyActWeekPartyCache = self.__LoadFileData("ActWeekParty", IPY_ActWeekParty)
-        self.ipyActWeekPartyLen = len(self.ipyActWeekPartyCache)
-        self.ipyActLoginAwardCache = self.__LoadFileData("ActLoginAward", IPY_ActLoginAward)
-        self.ipyActLoginAwardLen = len(self.ipyActLoginAwardCache)
-        self.ipyActFeastWeekPartyCache = self.__LoadFileData("ActFeastWeekParty", IPY_ActFeastWeekParty)
-        self.ipyActFeastWeekPartyLen = len(self.ipyActFeastWeekPartyCache)
-        self.ipyActNewFairyCeremonyCache = self.__LoadFileData("ActNewFairyCeremony", IPY_ActNewFairyCeremony)
-        self.ipyActNewFairyCeremonyLen = len(self.ipyActNewFairyCeremonyCache)
-        self.ipyNewUniquenessArriveCache = self.__LoadFileData("NewUniquenessArrive", IPY_NewUniquenessArrive)
-        self.ipyNewUniquenessArriveLen = len(self.ipyNewUniquenessArriveCache)
-        self.ipyLoveGiftCache = self.__LoadFileData("LoveGift", IPY_LoveGift)
-        self.ipyLoveGiftLen = len(self.ipyLoveGiftCache)
-        self.ipyMarryCache = self.__LoadFileData("Marry", IPY_Marry)
-        self.ipyMarryLen = len(self.ipyMarryCache)
-        self.ipyActLuckyTreasureCache = self.__LoadFileData("ActLuckyTreasure", IPY_ActLuckyTreasure)
-        self.ipyActLuckyTreasureLen = len(self.ipyActLuckyTreasureCache)
-        self.ipyCrossActLuckyCloudBuyCache = self.__LoadFileData("CrossActLuckyCloudBuy", IPY_CrossActLuckyCloudBuy)
-        self.ipyCrossActLuckyCloudBuyLen = len(self.ipyCrossActLuckyCloudBuyCache)
-        self.ipyCrossActLuckyCloudBuyTemplateCache = self.__LoadFileData("CrossActLuckyCloudBuyTemplate", IPY_CrossActLuckyCloudBuyTemplate)
-        self.ipyCrossActLuckyCloudBuyTemplateLen = len(self.ipyCrossActLuckyCloudBuyTemplateCache)
-        self.ipyCrossActAllRechargeCache = self.__LoadFileData("CrossActAllRecharge", IPY_CrossActAllRecharge)
-        self.ipyCrossActAllRechargeLen = len(self.ipyCrossActAllRechargeCache)
-        self.ipyCrossActAllRechargeTemplateCache = self.__LoadFileData("CrossActAllRechargeTemplate", IPY_CrossActAllRechargeTemplate)
-        self.ipyCrossActAllRechargeTemplateLen = len(self.ipyCrossActAllRechargeTemplateCache)
-        self.ipyCrossActCTGBillboardCache = self.__LoadFileData("CrossActCTGBillboard", IPY_CrossActCTGBillboard)
-        self.ipyCrossActCTGBillboardLen = len(self.ipyCrossActCTGBillboardCache)
-        self.ipyCrossActCTGBillboardOrderCache = self.__LoadFileData("CrossActCTGBillboardOrder", IPY_CrossActCTGBillboardOrder)
-        self.ipyCrossActCTGBillboardOrderLen = len(self.ipyCrossActCTGBillboardOrderCache)
-        self.ipyEquipStarUpCache = self.__LoadFileData("EquipStarUp", IPY_EquipStarUp)
-        self.ipyEquipStarUpLen = len(self.ipyEquipStarUpCache)
-        self.ipyFamilyWarRankAwardCache = self.__LoadFileData("FamilyWarRankAward", IPY_FamilyWarRankAward)
-        self.ipyFamilyWarRankAwardLen = len(self.ipyFamilyWarRankAwardCache)
-        self.ipyAssistThanksGiftCache = self.__LoadFileData("AssistThanksGift", IPY_AssistThanksGift)
-        self.ipyAssistThanksGiftLen = len(self.ipyAssistThanksGiftCache)
-        self.ipyFairyDomainCache = self.__LoadFileData("FairyDomain", IPY_FairyDomain)
-        self.ipyFairyDomainLen = len(self.ipyFairyDomainCache)
-        Log("IPY_FuncConfig count=%s" % len(self.ipyFuncConfigDict))
-        Log("IPY_DataMgr InitOK!")
+    def IpyDataClear(self, onlyCheck=False):
+        Log("IPY_DataMgr Reload... onlyCheck=%s" % onlyCheck)
+        if not onlyCheck:
+            self.ipyConfigEx = {}
+        self.__LoadFileData("FuncConfig", onlyCheck)
+        self.__LoadFileData("CreateRoleLimitServer", onlyCheck)
+        self.__LoadFileData("WorldLV", onlyCheck)
+        self.__LoadFileData("Family", onlyCheck)
+        self.__LoadFileData("FamilyBossHurtAward", onlyCheck)
+        self.__LoadFileData("FamilyZhenfa", onlyCheck)
+        self.__LoadFileData("MarketQuery", onlyCheck)
+        self.__LoadFileData("AuctionItem", onlyCheck)
+        self.__LoadFileData("AuctionSystemItem", onlyCheck)
+        self.__LoadFileData("CrossDailyAction", onlyCheck)
+        self.__LoadFileData("DailyAction", onlyCheck)
+        self.__LoadFileData("DailyActionCustom", onlyCheck)
+        self.__LoadFileData("DailyActionCustomMix", onlyCheck)
+        self.__LoadFileData("FBStateTime", onlyCheck)
+        self.__LoadFileData("FBStateTimeCustom", onlyCheck)
+        self.__LoadFileData("FBStateTimeCustomMix", onlyCheck)
+        self.__LoadFileData("FBFunc", onlyCheck)
+        self.__LoadFileData("FBLine", onlyCheck)
+        self.__LoadFileData("FBHelpBattle", onlyCheck)
+        self.__LoadFileData("ChinMap", onlyCheck)
+        self.__LoadFileData("BOSSInfo", onlyCheck)
+        self.__LoadFileData("BOSSFirstKill", onlyCheck)
+        self.__LoadFileData("OSCBillRankAward", onlyCheck)
+        self.__LoadFileData("QuestionBank", onlyCheck)
+        self.__LoadFileData("FamilyRedPack", onlyCheck)
+        self.__LoadFileData("ActFeastRedPacket", onlyCheck)
+        self.__LoadFileData("ActFeastLogin", onlyCheck)
+        self.__LoadFileData("ActFeastWish", onlyCheck)
+        self.__LoadFileData("ActFeastTravel", onlyCheck)
+        self.__LoadFileData("FuncOpenLV", onlyCheck)
+        self.__LoadFileData("ChinNPC", onlyCheck)
+        self.__LoadFileData("PlayerLV", onlyCheck)
+        self.__LoadFileData("VipPrivilege", onlyCheck)
+        self.__LoadFileData("ActSpringSale", onlyCheck)
+        self.__LoadFileData("ActFlashGiftbag", onlyCheck)
+        self.__LoadFileData("ActDailyGiftbag", onlyCheck)
+        self.__LoadFileData("ActExpRate", onlyCheck)
+        self.__LoadFileData("ActCostRebate", onlyCheck)
+        self.__LoadFileData("ActBuyOne", onlyCheck)
+        self.__LoadFileData("ActCollectWords", onlyCheck)
+        self.__LoadFileData("ActGarbageSorting", onlyCheck)
+        self.__LoadFileData("ActBossTrial", onlyCheck)
+        self.__LoadFileData("ActBossTrialTemplate", onlyCheck)
+        self.__LoadFileData("ActXianXiaMJ", onlyCheck)
+        self.__LoadFileData("ActGodGift", onlyCheck)
+        self.__LoadFileData("ActHorsePetFeast", onlyCheck)
+        self.__LoadFileData("ActBossReborn", onlyCheck)
+        self.__LoadFileData("ActFairyCeremony", onlyCheck)
+        self.__LoadFileData("UniquenessArrive", onlyCheck)
+        self.__LoadFileData("ActRealmPoint", onlyCheck)
+        self.__LoadFileData("ActFlashSale", onlyCheck)
+        self.__LoadFileData("Store", onlyCheck)
+        self.__LoadFileData("ActWishingWell", onlyCheck)
+        self.__LoadFileData("ActRechargePrize", onlyCheck)
+        self.__LoadFileData("ActRechargeRebateGold", onlyCheck)
+        self.__LoadFileData("ActGrowupBuy", onlyCheck)
+        self.__LoadFileData("ActSingleRecharge", onlyCheck)
+        self.__LoadFileData("ActTurntable", onlyCheck)
+        self.__LoadFileData("ActManyDayRecharge", onlyCheck)
+        self.__LoadFileData("ActTotalRecharge", onlyCheck)
+        self.__LoadFileData("CrossZoneComm", onlyCheck)
+        self.__LoadFileData("CrossZonePK", onlyCheck)
+        self.__LoadFileData("ChampionshipTime", onlyCheck)
+        self.__LoadFileData("ChampionshipRank", onlyCheck)
+        self.__LoadFileData("ChampionshipOfficial", onlyCheck)
+        self.__LoadFileData("CrossRealmPKSeason", onlyCheck)
+        self.__LoadFileData("CrossRealmPKDan", onlyCheck)
+        self.__LoadFileData("CrossPenglaiZoneMap", onlyCheck)
+        self.__LoadFileData("CrossDemonLandZoneMap", onlyCheck)
+        self.__LoadFileData("CrossFamilyFlagwarZoneMap", onlyCheck)
+        self.__LoadFileData("ActWeekParty", onlyCheck)
+        self.__LoadFileData("ActLoginAward", onlyCheck)
+        self.__LoadFileData("ActFeastWeekParty", onlyCheck)
+        self.__LoadFileData("ActNewFairyCeremony", onlyCheck)
+        self.__LoadFileData("NewUniquenessArrive", onlyCheck)
+        self.__LoadFileData("LoveGift", onlyCheck)
+        self.__LoadFileData("Marry", onlyCheck)
+        self.__LoadFileData("ActLuckyTreasure", onlyCheck)
+        self.__LoadFileData("CrossActLuckyCloudBuy", onlyCheck)
+        self.__LoadFileData("CrossActLuckyCloudBuyTemplate", onlyCheck)
+        self.__LoadFileData("CrossActAllRecharge", onlyCheck)
+        self.__LoadFileData("CrossActAllRechargeTemplate", onlyCheck)
+        self.__LoadFileData("CrossActCTGBillboard", onlyCheck)
+        self.__LoadFileData("CrossActCTGBillboardOrder", onlyCheck)
+        self.__LoadFileData("EquipStarUp", onlyCheck)
+        self.__LoadFileData("FamilyWarRankAward", onlyCheck)
+        self.__LoadFileData("AssistThanksGift", onlyCheck)
+        self.__LoadFileData("FairyDomain", onlyCheck)
+        Log("IPY_DataMgr ReloadOK! onlyCheck=%s" % onlyCheck)
         return
     
-    def __LoadFileData(self, tableName, Class):
+    def CheckLoadData(self, dtName):
+        if hasattr(self, "ipy%sLen" % dtName):
+            return
+        setattr(self, "ipy%sLen" % dtName, 0) # 设置该属性,通过判断是否有该属性决定是否加载
+        self.__LoadFileData(dtName)
+        return
+    
+    def __LoadFileData(self, tableName, onlyCheck=False):
+        # @param onlyCheck: 是否仅检查格式,一般启动时用
         curPath = ChConfig.GetAppPath() + "\\PySysDB\\tag" + tableName + ".txt"
         if not os.path.isfile(curPath):
             ErrLog("can not find file = %s,%s" % (tableName, curPath))
             raise Exception("can not find file = %s,%s" % (tableName, curPath))
         
+        if not onlyCheck:
+            if not hasattr(self, "ipy%sLen" % tableName):
+                # 没有该属性的不加载
+                return
+        
         fileObj = open(curPath, 'rb')
         content = fileObj.read()
         fileObj.close()
         
-        md5_obj = hashlib.md5()
-        md5_obj.update(content)
-        newMD5Code = md5_obj.hexdigest()
-        if tableName in self.fileMD5Dict:
-            oldMD5Code = self.fileMD5Dict[tableName]
-            if newMD5Code == oldMD5Code:
-                return getattr(self, "ipy%sCache" % tableName)
+        if not onlyCheck:
+            md5_obj = hashlib.md5()
+            md5_obj.update(content)
+            newMD5Code = md5_obj.hexdigest()
+            if tableName in self.fileMD5Dict:
+                oldMD5Code = self.fileMD5Dict[tableName]
+                if newMD5Code == oldMD5Code:
+                    return getattr(self, "ipy%sCache" % tableName)
+                
+                if tableName in self.ipyDataIndexMap:
+                    self.ipyDataIndexMap.pop(tableName)
+                for dtName_Findkey in self.ipyDataIndexMapEx.keys():
+                    findStr = "%s_" % tableName
+                    if findStr in dtName_Findkey:
+                        self.ipyDataIndexMapEx.pop(dtName_Findkey)
+                if tableName == "FuncConfig":
+                    self.ipyFuncConfigDict = {}
+            self.fileMD5Dict[tableName] = newMD5Code
             
-            if tableName in self.ipyDataIndexMap:
-                self.ipyDataIndexMap.pop(tableName)
-            for dtName_Findkey in self.ipyDataIndexMapEx.keys():
-                findStr = "%s_" % tableName
-                if findStr in dtName_Findkey:
-                    self.ipyDataIndexMapEx.pop(dtName_Findkey)
-            if tableName == "FuncConfig":
-                self.ipyFuncConfigDict = {}
-        self.fileMD5Dict[tableName] = newMD5Code
-        
         dataIndex = 0
         indexDict = {}
         cacheList = []
         fieldList = Def_IpyTable[tableName]
         infoList = content.split('\r\n')
+        curClassSizeTotal = 0
+        dataCount = 0
+        Class = eval("IPY_%s" % tableName)
         for line in xrange(len(infoList)):
             if line == 0:
                 continue
@@ -3114,10 +2482,16 @@
             if len(fieldList) != len(rowList):
                 ErrLog("field count error!, %s, line=%s, len=%s,rowCount=%s" % (tableName, line, len(fieldList), len(rowList)))
                 raise Exception("field count error!, %s, line=%s, len=%s,rowCount=%s" % (tableName, line,len(fieldList), len(rowList)))
-            
+            if tableName == "FuncConfig":
+                classObj = self.__LoadFuncConfigData(fieldList, rowList, onlyCheck)
+                dataCount += 1
+                if onlyCheck:
+                    continue
+                curClassSizeTotal += ChConfig.GetSizeof(classObj)
+                continue
             try:
                 indexKey = []
-                classObj = Class()
+                valueList = []
                 for j, value in enumerate(rowList):
                     fieldType, fieldName, isIndex = fieldList[j]
                     if fieldType == "char":
@@ -3132,9 +2506,15 @@
                         attrValue = float(value)
                     else:
                         attrValue = 0 if not value.isdigit() else int(value)
-                    setattr(classObj, "%s" % fieldName, attrValue)
+                    valueList.append(attrValue)
                     if isIndex:
                         indexKey.append(attrValue)
+                dataCount += 1
+                if onlyCheck:
+                    continue
+                classObj = Class()
+                setattr(classObj, "attrTuple", tuple(valueList))
+                curClassSizeTotal += ChConfig.GetSizeof(classObj)
                 cacheList.append(classObj)
                 indexKey = tuple(indexKey)
                 indexList = indexDict.get(indexKey, [])
@@ -3144,22 +2524,26 @@
             except BaseException:
                 ErrLog("SetIpyDataError: tableName=%s,line=%s,fieldName=%s,fieldType=%s,value=%s" % (tableName, line, fieldName, fieldType, value))
                 raise
-            if tableName == "FuncConfig":
-                self.__LoadFuncConfigData(fieldList, rowList)
+        if onlyCheck:
+            Log("CheckIpydata: %s, dataCount=%s OK" % (tableName, dataCount))
+            return
         if tableName != "FuncConfig":
             self.ipyDataIndexMap[tableName] = indexDict
-        Log("LoadIpydata: %s, content count=%s" % (tableName, len(cacheList)))
-        return cacheList
+        self.classSizeDict[tableName] = curClassSizeTotal
+        classSizeTotal = sum(self.classSizeDict.values())
+        alreadyLoad = len(self.classSizeDict)
+        setattr(self, "ipy%sCache" % tableName, cacheList)
+        setattr(self, "ipy%sLen" % tableName, len(cacheList))
+        Log("LoadIpydata: %s, dataCount=%s, alreadyLoad=%s" % (tableName, dataCount, alreadyLoad), curClassSizeTotal, classSizeTotal)
+        return
     
-    def __LoadFuncConfigData(self, fieldList, rowList):
-        funcConfigObj = IPY_FuncConfig()
+    def __LoadFuncConfigData(self, fieldList, rowList, onlyCheck):
         key = rowList[0]
-        funcConfigObj.Key = key
+        valueList = [key]
         for i, strValue in enumerate(rowList):
             if i == 0:
                 continue
             try:
-                fieldName = fieldList[i][1]
                 strValue = strValue.lstrip().rstrip()
                 if strValue.isdigit():
                     configValue = int(strValue)
@@ -3178,9 +2562,15 @@
             except BaseException:
                 ErrLog("SetIpyDataError: tableName=%s,key=%s,i=%s,value=%s" % ("FuncConfig", key, i, strValue))
                 raise
-            setattr(funcConfigObj, fieldName, configValue)
+            if onlyCheck:
+                continue
+            valueList.append(configValue)
+        if onlyCheck:
+            return
+        funcConfigObj = IPY_FuncConfig()
+        setattr(funcConfigObj, "attrTuple", tuple(valueList))
         self.ipyFuncConfigDict[key] = funcConfigObj
-        return
+        return funcConfigObj
     
     def __ToFloat(self, strValue):
         try:
@@ -3233,182 +2623,622 @@
                 setList = tuple(setList)
         return setList
     
-    def GetFuncConfigCount(self): return self.ipyFuncConfigLen
-    def GetFuncConfigByIndex(self, index): return self.ipyFuncConfigCache[index]
-    def GetCreateRoleLimitServerCount(self): return self.ipyCreateRoleLimitServerLen
-    def GetCreateRoleLimitServerByIndex(self, index): return self.ipyCreateRoleLimitServerCache[index]
-    def GetWorldLVCount(self): return self.ipyWorldLVLen
-    def GetWorldLVByIndex(self, index): return self.ipyWorldLVCache[index]
-    def GetFamilyCount(self): return self.ipyFamilyLen
-    def GetFamilyByIndex(self, index): return self.ipyFamilyCache[index]
-    def GetFamilyBossHurtAwardCount(self): return self.ipyFamilyBossHurtAwardLen
-    def GetFamilyBossHurtAwardByIndex(self, index): return self.ipyFamilyBossHurtAwardCache[index]
-    def GetFamilyZhenfaCount(self): return self.ipyFamilyZhenfaLen
-    def GetFamilyZhenfaByIndex(self, index): return self.ipyFamilyZhenfaCache[index]
-    def GetMarketQueryCount(self): return self.ipyMarketQueryLen
-    def GetMarketQueryByIndex(self, index): return self.ipyMarketQueryCache[index]
-    def GetAuctionItemCount(self): return self.ipyAuctionItemLen
-    def GetAuctionItemByIndex(self, index): return self.ipyAuctionItemCache[index]
-    def GetAuctionSystemItemCount(self): return self.ipyAuctionSystemItemLen
-    def GetAuctionSystemItemByIndex(self, index): return self.ipyAuctionSystemItemCache[index]
-    def GetCrossDailyActionCount(self): return self.ipyCrossDailyActionLen
-    def GetCrossDailyActionByIndex(self, index): return self.ipyCrossDailyActionCache[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 GetDailyActionCustomMixCount(self): return self.ipyDailyActionCustomMixLen
-    def GetDailyActionCustomMixByIndex(self, index): return self.ipyDailyActionCustomMixCache[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 GetFBStateTimeCustomMixCount(self): return self.ipyFBStateTimeCustomMixLen
-    def GetFBStateTimeCustomMixByIndex(self, index): return self.ipyFBStateTimeCustomMixCache[index]
-    def GetFBFuncCount(self): return self.ipyFBFuncLen
-    def GetFBFuncByIndex(self, index): return self.ipyFBFuncCache[index]
-    def GetFBLineCount(self): return self.ipyFBLineLen
-    def GetFBLineByIndex(self, index): return self.ipyFBLineCache[index]
-    def GetFBHelpBattleCount(self): return self.ipyFBHelpBattleLen
-    def GetFBHelpBattleByIndex(self, index): return self.ipyFBHelpBattleCache[index]
-    def GetChinMapCount(self): return self.ipyChinMapLen
-    def GetChinMapByIndex(self, index): return self.ipyChinMapCache[index]
-    def GetBOSSInfoCount(self): return self.ipyBOSSInfoLen
-    def GetBOSSInfoByIndex(self, index): return self.ipyBOSSInfoCache[index]
-    def GetBOSSFirstKillCount(self): return self.ipyBOSSFirstKillLen
-    def GetBOSSFirstKillByIndex(self, index): return self.ipyBOSSFirstKillCache[index]
-    def GetOSCBillRankAwardCount(self): return self.ipyOSCBillRankAwardLen
-    def GetOSCBillRankAwardByIndex(self, index): return self.ipyOSCBillRankAwardCache[index]
-    def GetQuestionBankCount(self): return self.ipyQuestionBankLen
-    def GetQuestionBankByIndex(self, index): return self.ipyQuestionBankCache[index]
-    def GetFamilyRedPackCount(self): return self.ipyFamilyRedPackLen
-    def GetFamilyRedPackByIndex(self, index): return self.ipyFamilyRedPackCache[index]
-    def GetActFeastRedPacketCount(self): return self.ipyActFeastRedPacketLen
-    def GetActFeastRedPacketByIndex(self, index): return self.ipyActFeastRedPacketCache[index]
-    def GetActFeastLoginCount(self): return self.ipyActFeastLoginLen
-    def GetActFeastLoginByIndex(self, index): return self.ipyActFeastLoginCache[index]
-    def GetActFeastWishCount(self): return self.ipyActFeastWishLen
-    def GetActFeastWishByIndex(self, index): return self.ipyActFeastWishCache[index]
-    def GetActFeastTravelCount(self): return self.ipyActFeastTravelLen
-    def GetActFeastTravelByIndex(self, index): return self.ipyActFeastTravelCache[index]
-    def GetFuncOpenLVCount(self): return self.ipyFuncOpenLVLen
-    def GetFuncOpenLVByIndex(self, index): return self.ipyFuncOpenLVCache[index]
-    def GetChinNPCCount(self): return self.ipyChinNPCLen
-    def GetChinNPCByIndex(self, index): return self.ipyChinNPCCache[index]
-    def GetPlayerLVCount(self): return self.ipyPlayerLVLen
-    def GetPlayerLVByIndex(self, index): return self.ipyPlayerLVCache[index]
-    def GetVipPrivilegeCount(self): return self.ipyVipPrivilegeLen
-    def GetVipPrivilegeByIndex(self, index): return self.ipyVipPrivilegeCache[index]
-    def GetActSpringSaleCount(self): return self.ipyActSpringSaleLen
-    def GetActSpringSaleByIndex(self, index): return self.ipyActSpringSaleCache[index]
-    def GetActFlashGiftbagCount(self): return self.ipyActFlashGiftbagLen
-    def GetActFlashGiftbagByIndex(self, index): return self.ipyActFlashGiftbagCache[index]
-    def GetActDailyGiftbagCount(self): return self.ipyActDailyGiftbagLen
-    def GetActDailyGiftbagByIndex(self, index): return self.ipyActDailyGiftbagCache[index]
-    def GetActExpRateCount(self): return self.ipyActExpRateLen
-    def GetActExpRateByIndex(self, index): return self.ipyActExpRateCache[index]
-    def GetActCostRebateCount(self): return self.ipyActCostRebateLen
-    def GetActCostRebateByIndex(self, index): return self.ipyActCostRebateCache[index]
-    def GetActBuyOneCount(self): return self.ipyActBuyOneLen
-    def GetActBuyOneByIndex(self, index): return self.ipyActBuyOneCache[index]
-    def GetActCollectWordsCount(self): return self.ipyActCollectWordsLen
-    def GetActCollectWordsByIndex(self, index): return self.ipyActCollectWordsCache[index]
-    def GetActGarbageSortingCount(self): return self.ipyActGarbageSortingLen
-    def GetActGarbageSortingByIndex(self, index): return self.ipyActGarbageSortingCache[index]
-    def GetActBossTrialCount(self): return self.ipyActBossTrialLen
-    def GetActBossTrialByIndex(self, index): return self.ipyActBossTrialCache[index]
-    def GetActBossTrialTemplateCount(self): return self.ipyActBossTrialTemplateLen
-    def GetActBossTrialTemplateByIndex(self, index): return self.ipyActBossTrialTemplateCache[index]
-    def GetActXianXiaMJCount(self): return self.ipyActXianXiaMJLen
-    def GetActXianXiaMJByIndex(self, index): return self.ipyActXianXiaMJCache[index]
-    def GetActGodGiftCount(self): return self.ipyActGodGiftLen
-    def GetActGodGiftByIndex(self, index): return self.ipyActGodGiftCache[index]
-    def GetActHorsePetFeastCount(self): return self.ipyActHorsePetFeastLen
-    def GetActHorsePetFeastByIndex(self, index): return self.ipyActHorsePetFeastCache[index]
-    def GetActBossRebornCount(self): return self.ipyActBossRebornLen
-    def GetActBossRebornByIndex(self, index): return self.ipyActBossRebornCache[index]
-    def GetActFairyCeremonyCount(self): return self.ipyActFairyCeremonyLen
-    def GetActFairyCeremonyByIndex(self, index): return self.ipyActFairyCeremonyCache[index]
-    def GetUniquenessArriveCount(self): return self.ipyUniquenessArriveLen
-    def GetUniquenessArriveByIndex(self, index): return self.ipyUniquenessArriveCache[index]
-    def GetActRealmPointCount(self): return self.ipyActRealmPointLen
-    def GetActRealmPointByIndex(self, index): return self.ipyActRealmPointCache[index]
-    def GetActFlashSaleCount(self): return self.ipyActFlashSaleLen
-    def GetActFlashSaleByIndex(self, index): return self.ipyActFlashSaleCache[index]
-    def GetStoreCount(self): return self.ipyStoreLen
-    def GetStoreByIndex(self, index): return self.ipyStoreCache[index]
-    def GetActWishingWellCount(self): return self.ipyActWishingWellLen
-    def GetActWishingWellByIndex(self, index): return self.ipyActWishingWellCache[index]
-    def GetActRechargePrizeCount(self): return self.ipyActRechargePrizeLen
-    def GetActRechargePrizeByIndex(self, index): return self.ipyActRechargePrizeCache[index]
-    def GetActRechargeRebateGoldCount(self): return self.ipyActRechargeRebateGoldLen
-    def GetActRechargeRebateGoldByIndex(self, index): return self.ipyActRechargeRebateGoldCache[index]
-    def GetActGrowupBuyCount(self): return self.ipyActGrowupBuyLen
-    def GetActGrowupBuyByIndex(self, index): return self.ipyActGrowupBuyCache[index]
-    def GetActSingleRechargeCount(self): return self.ipyActSingleRechargeLen
-    def GetActSingleRechargeByIndex(self, index): return self.ipyActSingleRechargeCache[index]
-    def GetActTurntableCount(self): return self.ipyActTurntableLen
-    def GetActTurntableByIndex(self, index): return self.ipyActTurntableCache[index]
-    def GetActManyDayRechargeCount(self): return self.ipyActManyDayRechargeLen
-    def GetActManyDayRechargeByIndex(self, index): return self.ipyActManyDayRechargeCache[index]
-    def GetActTotalRechargeCount(self): return self.ipyActTotalRechargeLen
-    def GetActTotalRechargeByIndex(self, index): return self.ipyActTotalRechargeCache[index]
-    def GetCrossZoneCommCount(self): return self.ipyCrossZoneCommLen
-    def GetCrossZoneCommByIndex(self, index): return self.ipyCrossZoneCommCache[index]
-    def GetCrossZonePKCount(self): return self.ipyCrossZonePKLen
-    def GetCrossZonePKByIndex(self, index): return self.ipyCrossZonePKCache[index]
-    def GetChampionshipTimeCount(self): return self.ipyChampionshipTimeLen
-    def GetChampionshipTimeByIndex(self, index): return self.ipyChampionshipTimeCache[index]
-    def GetChampionshipRankCount(self): return self.ipyChampionshipRankLen
-    def GetChampionshipRankByIndex(self, index): return self.ipyChampionshipRankCache[index]
-    def GetChampionshipOfficialCount(self): return self.ipyChampionshipOfficialLen
-    def GetChampionshipOfficialByIndex(self, index): return self.ipyChampionshipOfficialCache[index]
-    def GetCrossRealmPKSeasonCount(self): return self.ipyCrossRealmPKSeasonLen
-    def GetCrossRealmPKSeasonByIndex(self, index): return self.ipyCrossRealmPKSeasonCache[index]
-    def GetCrossRealmPKDanCount(self): return self.ipyCrossRealmPKDanLen
-    def GetCrossRealmPKDanByIndex(self, index): return self.ipyCrossRealmPKDanCache[index]
-    def GetCrossPenglaiZoneMapCount(self): return self.ipyCrossPenglaiZoneMapLen
-    def GetCrossPenglaiZoneMapByIndex(self, index): return self.ipyCrossPenglaiZoneMapCache[index]
-    def GetCrossDemonLandZoneMapCount(self): return self.ipyCrossDemonLandZoneMapLen
-    def GetCrossDemonLandZoneMapByIndex(self, index): return self.ipyCrossDemonLandZoneMapCache[index]
-    def GetCrossFamilyFlagwarZoneMapCount(self): return self.ipyCrossFamilyFlagwarZoneMapLen
-    def GetCrossFamilyFlagwarZoneMapByIndex(self, index): return self.ipyCrossFamilyFlagwarZoneMapCache[index]
-    def GetActWeekPartyCount(self): return self.ipyActWeekPartyLen
-    def GetActWeekPartyByIndex(self, index): return self.ipyActWeekPartyCache[index]
-    def GetActLoginAwardCount(self): return self.ipyActLoginAwardLen
-    def GetActLoginAwardByIndex(self, index): return self.ipyActLoginAwardCache[index]
-    def GetActFeastWeekPartyCount(self): return self.ipyActFeastWeekPartyLen
-    def GetActFeastWeekPartyByIndex(self, index): return self.ipyActFeastWeekPartyCache[index]
-    def GetActNewFairyCeremonyCount(self): return self.ipyActNewFairyCeremonyLen
-    def GetActNewFairyCeremonyByIndex(self, index): return self.ipyActNewFairyCeremonyCache[index]
-    def GetNewUniquenessArriveCount(self): return self.ipyNewUniquenessArriveLen
-    def GetNewUniquenessArriveByIndex(self, index): return self.ipyNewUniquenessArriveCache[index]
-    def GetLoveGiftCount(self): return self.ipyLoveGiftLen
-    def GetLoveGiftByIndex(self, index): return self.ipyLoveGiftCache[index]
-    def GetMarryCount(self): return self.ipyMarryLen
-    def GetMarryByIndex(self, index): return self.ipyMarryCache[index]
-    def GetActLuckyTreasureCount(self): return self.ipyActLuckyTreasureLen
-    def GetActLuckyTreasureByIndex(self, index): return self.ipyActLuckyTreasureCache[index]
-    def GetCrossActLuckyCloudBuyCount(self): return self.ipyCrossActLuckyCloudBuyLen
-    def GetCrossActLuckyCloudBuyByIndex(self, index): return self.ipyCrossActLuckyCloudBuyCache[index]
-    def GetCrossActLuckyCloudBuyTemplateCount(self): return self.ipyCrossActLuckyCloudBuyTemplateLen
-    def GetCrossActLuckyCloudBuyTemplateByIndex(self, index): return self.ipyCrossActLuckyCloudBuyTemplateCache[index]
-    def GetCrossActAllRechargeCount(self): return self.ipyCrossActAllRechargeLen
-    def GetCrossActAllRechargeByIndex(self, index): return self.ipyCrossActAllRechargeCache[index]
-    def GetCrossActAllRechargeTemplateCount(self): return self.ipyCrossActAllRechargeTemplateLen
-    def GetCrossActAllRechargeTemplateByIndex(self, index): return self.ipyCrossActAllRechargeTemplateCache[index]
-    def GetCrossActCTGBillboardCount(self): return self.ipyCrossActCTGBillboardLen
-    def GetCrossActCTGBillboardByIndex(self, index): return self.ipyCrossActCTGBillboardCache[index]
-    def GetCrossActCTGBillboardOrderCount(self): return self.ipyCrossActCTGBillboardOrderLen
-    def GetCrossActCTGBillboardOrderByIndex(self, index): return self.ipyCrossActCTGBillboardOrderCache[index]
-    def GetEquipStarUpCount(self): return self.ipyEquipStarUpLen
-    def GetEquipStarUpByIndex(self, index): return self.ipyEquipStarUpCache[index]
-    def GetFamilyWarRankAwardCount(self): return self.ipyFamilyWarRankAwardLen
-    def GetFamilyWarRankAwardByIndex(self, index): return self.ipyFamilyWarRankAwardCache[index]
-    def GetAssistThanksGiftCount(self): return self.ipyAssistThanksGiftLen
-    def GetAssistThanksGiftByIndex(self, index): return self.ipyAssistThanksGiftCache[index]
-    def GetFairyDomainCount(self): return self.ipyFairyDomainLen
-    def GetFairyDomainByIndex(self, index): return self.ipyFairyDomainCache[index]
+
+    def GetFuncConfigCount(self):
+        self.CheckLoadData("FuncConfig")
+        return self.ipyFuncConfigLen
+    def GetFuncConfigByIndex(self, index):
+        self.CheckLoadData("FuncConfig")
+        return self.ipyFuncConfigCache[index]
+
+    def GetCreateRoleLimitServerCount(self):
+        self.CheckLoadData("CreateRoleLimitServer")
+        return self.ipyCreateRoleLimitServerLen
+    def GetCreateRoleLimitServerByIndex(self, index):
+        self.CheckLoadData("CreateRoleLimitServer")
+        return self.ipyCreateRoleLimitServerCache[index]
+
+    def GetWorldLVCount(self):
+        self.CheckLoadData("WorldLV")
+        return self.ipyWorldLVLen
+    def GetWorldLVByIndex(self, index):
+        self.CheckLoadData("WorldLV")
+        return self.ipyWorldLVCache[index]
+
+    def GetFamilyCount(self):
+        self.CheckLoadData("Family")
+        return self.ipyFamilyLen
+    def GetFamilyByIndex(self, index):
+        self.CheckLoadData("Family")
+        return self.ipyFamilyCache[index]
+
+    def GetFamilyBossHurtAwardCount(self):
+        self.CheckLoadData("FamilyBossHurtAward")
+        return self.ipyFamilyBossHurtAwardLen
+    def GetFamilyBossHurtAwardByIndex(self, index):
+        self.CheckLoadData("FamilyBossHurtAward")
+        return self.ipyFamilyBossHurtAwardCache[index]
+
+    def GetFamilyZhenfaCount(self):
+        self.CheckLoadData("FamilyZhenfa")
+        return self.ipyFamilyZhenfaLen
+    def GetFamilyZhenfaByIndex(self, index):
+        self.CheckLoadData("FamilyZhenfa")
+        return self.ipyFamilyZhenfaCache[index]
+
+    def GetMarketQueryCount(self):
+        self.CheckLoadData("MarketQuery")
+        return self.ipyMarketQueryLen
+    def GetMarketQueryByIndex(self, index):
+        self.CheckLoadData("MarketQuery")
+        return self.ipyMarketQueryCache[index]
+
+    def GetAuctionItemCount(self):
+        self.CheckLoadData("AuctionItem")
+        return self.ipyAuctionItemLen
+    def GetAuctionItemByIndex(self, index):
+        self.CheckLoadData("AuctionItem")
+        return self.ipyAuctionItemCache[index]
+
+    def GetAuctionSystemItemCount(self):
+        self.CheckLoadData("AuctionSystemItem")
+        return self.ipyAuctionSystemItemLen
+    def GetAuctionSystemItemByIndex(self, index):
+        self.CheckLoadData("AuctionSystemItem")
+        return self.ipyAuctionSystemItemCache[index]
+
+    def GetCrossDailyActionCount(self):
+        self.CheckLoadData("CrossDailyAction")
+        return self.ipyCrossDailyActionLen
+    def GetCrossDailyActionByIndex(self, index):
+        self.CheckLoadData("CrossDailyAction")
+        return self.ipyCrossDailyActionCache[index]
+
+    def GetDailyActionCount(self):
+        self.CheckLoadData("DailyAction")
+        return self.ipyDailyActionLen
+    def GetDailyActionByIndex(self, index):
+        self.CheckLoadData("DailyAction")
+        return self.ipyDailyActionCache[index]
+
+    def GetDailyActionCustomCount(self):
+        self.CheckLoadData("DailyActionCustom")
+        return self.ipyDailyActionCustomLen
+    def GetDailyActionCustomByIndex(self, index):
+        self.CheckLoadData("DailyActionCustom")
+        return self.ipyDailyActionCustomCache[index]
+
+    def GetDailyActionCustomMixCount(self):
+        self.CheckLoadData("DailyActionCustomMix")
+        return self.ipyDailyActionCustomMixLen
+    def GetDailyActionCustomMixByIndex(self, index):
+        self.CheckLoadData("DailyActionCustomMix")
+        return self.ipyDailyActionCustomMixCache[index]
+
+    def GetFBStateTimeCount(self):
+        self.CheckLoadData("FBStateTime")
+        return self.ipyFBStateTimeLen
+    def GetFBStateTimeByIndex(self, index):
+        self.CheckLoadData("FBStateTime")
+        return self.ipyFBStateTimeCache[index]
+
+    def GetFBStateTimeCustomCount(self):
+        self.CheckLoadData("FBStateTimeCustom")
+        return self.ipyFBStateTimeCustomLen
+    def GetFBStateTimeCustomByIndex(self, index):
+        self.CheckLoadData("FBStateTimeCustom")
+        return self.ipyFBStateTimeCustomCache[index]
+
+    def GetFBStateTimeCustomMixCount(self):
+        self.CheckLoadData("FBStateTimeCustomMix")
+        return self.ipyFBStateTimeCustomMixLen
+    def GetFBStateTimeCustomMixByIndex(self, index):
+        self.CheckLoadData("FBStateTimeCustomMix")
+        return self.ipyFBStateTimeCustomMixCache[index]
+
+    def GetFBFuncCount(self):
+        self.CheckLoadData("FBFunc")
+        return self.ipyFBFuncLen
+    def GetFBFuncByIndex(self, index):
+        self.CheckLoadData("FBFunc")
+        return self.ipyFBFuncCache[index]
+
+    def GetFBLineCount(self):
+        self.CheckLoadData("FBLine")
+        return self.ipyFBLineLen
+    def GetFBLineByIndex(self, index):
+        self.CheckLoadData("FBLine")
+        return self.ipyFBLineCache[index]
+
+    def GetFBHelpBattleCount(self):
+        self.CheckLoadData("FBHelpBattle")
+        return self.ipyFBHelpBattleLen
+    def GetFBHelpBattleByIndex(self, index):
+        self.CheckLoadData("FBHelpBattle")
+        return self.ipyFBHelpBattleCache[index]
+
+    def GetChinMapCount(self):
+        self.CheckLoadData("ChinMap")
+        return self.ipyChinMapLen
+    def GetChinMapByIndex(self, index):
+        self.CheckLoadData("ChinMap")
+        return self.ipyChinMapCache[index]
+
+    def GetBOSSInfoCount(self):
+        self.CheckLoadData("BOSSInfo")
+        return self.ipyBOSSInfoLen
+    def GetBOSSInfoByIndex(self, index):
+        self.CheckLoadData("BOSSInfo")
+        return self.ipyBOSSInfoCache[index]
+
+    def GetBOSSFirstKillCount(self):
+        self.CheckLoadData("BOSSFirstKill")
+        return self.ipyBOSSFirstKillLen
+    def GetBOSSFirstKillByIndex(self, index):
+        self.CheckLoadData("BOSSFirstKill")
+        return self.ipyBOSSFirstKillCache[index]
+
+    def GetOSCBillRankAwardCount(self):
+        self.CheckLoadData("OSCBillRankAward")
+        return self.ipyOSCBillRankAwardLen
+    def GetOSCBillRankAwardByIndex(self, index):
+        self.CheckLoadData("OSCBillRankAward")
+        return self.ipyOSCBillRankAwardCache[index]
+
+    def GetQuestionBankCount(self):
+        self.CheckLoadData("QuestionBank")
+        return self.ipyQuestionBankLen
+    def GetQuestionBankByIndex(self, index):
+        self.CheckLoadData("QuestionBank")
+        return self.ipyQuestionBankCache[index]
+
+    def GetFamilyRedPackCount(self):
+        self.CheckLoadData("FamilyRedPack")
+        return self.ipyFamilyRedPackLen
+    def GetFamilyRedPackByIndex(self, index):
+        self.CheckLoadData("FamilyRedPack")
+        return self.ipyFamilyRedPackCache[index]
+
+    def GetActFeastRedPacketCount(self):
+        self.CheckLoadData("ActFeastRedPacket")
+        return self.ipyActFeastRedPacketLen
+    def GetActFeastRedPacketByIndex(self, index):
+        self.CheckLoadData("ActFeastRedPacket")
+        return self.ipyActFeastRedPacketCache[index]
+
+    def GetActFeastLoginCount(self):
+        self.CheckLoadData("ActFeastLogin")
+        return self.ipyActFeastLoginLen
+    def GetActFeastLoginByIndex(self, index):
+        self.CheckLoadData("ActFeastLogin")
+        return self.ipyActFeastLoginCache[index]
+
+    def GetActFeastWishCount(self):
+        self.CheckLoadData("ActFeastWish")
+        return self.ipyActFeastWishLen
+    def GetActFeastWishByIndex(self, index):
+        self.CheckLoadData("ActFeastWish")
+        return self.ipyActFeastWishCache[index]
+
+    def GetActFeastTravelCount(self):
+        self.CheckLoadData("ActFeastTravel")
+        return self.ipyActFeastTravelLen
+    def GetActFeastTravelByIndex(self, index):
+        self.CheckLoadData("ActFeastTravel")
+        return self.ipyActFeastTravelCache[index]
+
+    def GetFuncOpenLVCount(self):
+        self.CheckLoadData("FuncOpenLV")
+        return self.ipyFuncOpenLVLen
+    def GetFuncOpenLVByIndex(self, index):
+        self.CheckLoadData("FuncOpenLV")
+        return self.ipyFuncOpenLVCache[index]
+
+    def GetChinNPCCount(self):
+        self.CheckLoadData("ChinNPC")
+        return self.ipyChinNPCLen
+    def GetChinNPCByIndex(self, index):
+        self.CheckLoadData("ChinNPC")
+        return self.ipyChinNPCCache[index]
+
+    def GetPlayerLVCount(self):
+        self.CheckLoadData("PlayerLV")
+        return self.ipyPlayerLVLen
+    def GetPlayerLVByIndex(self, index):
+        self.CheckLoadData("PlayerLV")
+        return self.ipyPlayerLVCache[index]
+
+    def GetVipPrivilegeCount(self):
+        self.CheckLoadData("VipPrivilege")
+        return self.ipyVipPrivilegeLen
+    def GetVipPrivilegeByIndex(self, index):
+        self.CheckLoadData("VipPrivilege")
+        return self.ipyVipPrivilegeCache[index]
+
+    def GetActSpringSaleCount(self):
+        self.CheckLoadData("ActSpringSale")
+        return self.ipyActSpringSaleLen
+    def GetActSpringSaleByIndex(self, index):
+        self.CheckLoadData("ActSpringSale")
+        return self.ipyActSpringSaleCache[index]
+
+    def GetActFlashGiftbagCount(self):
+        self.CheckLoadData("ActFlashGiftbag")
+        return self.ipyActFlashGiftbagLen
+    def GetActFlashGiftbagByIndex(self, index):
+        self.CheckLoadData("ActFlashGiftbag")
+        return self.ipyActFlashGiftbagCache[index]
+
+    def GetActDailyGiftbagCount(self):
+        self.CheckLoadData("ActDailyGiftbag")
+        return self.ipyActDailyGiftbagLen
+    def GetActDailyGiftbagByIndex(self, index):
+        self.CheckLoadData("ActDailyGiftbag")
+        return self.ipyActDailyGiftbagCache[index]
+
+    def GetActExpRateCount(self):
+        self.CheckLoadData("ActExpRate")
+        return self.ipyActExpRateLen
+    def GetActExpRateByIndex(self, index):
+        self.CheckLoadData("ActExpRate")
+        return self.ipyActExpRateCache[index]
+
+    def GetActCostRebateCount(self):
+        self.CheckLoadData("ActCostRebate")
+        return self.ipyActCostRebateLen
+    def GetActCostRebateByIndex(self, index):
+        self.CheckLoadData("ActCostRebate")
+        return self.ipyActCostRebateCache[index]
+
+    def GetActBuyOneCount(self):
+        self.CheckLoadData("ActBuyOne")
+        return self.ipyActBuyOneLen
+    def GetActBuyOneByIndex(self, index):
+        self.CheckLoadData("ActBuyOne")
+        return self.ipyActBuyOneCache[index]
+
+    def GetActCollectWordsCount(self):
+        self.CheckLoadData("ActCollectWords")
+        return self.ipyActCollectWordsLen
+    def GetActCollectWordsByIndex(self, index):
+        self.CheckLoadData("ActCollectWords")
+        return self.ipyActCollectWordsCache[index]
+
+    def GetActGarbageSortingCount(self):
+        self.CheckLoadData("ActGarbageSorting")
+        return self.ipyActGarbageSortingLen
+    def GetActGarbageSortingByIndex(self, index):
+        self.CheckLoadData("ActGarbageSorting")
+        return self.ipyActGarbageSortingCache[index]
+
+    def GetActBossTrialCount(self):
+        self.CheckLoadData("ActBossTrial")
+        return self.ipyActBossTrialLen
+    def GetActBossTrialByIndex(self, index):
+        self.CheckLoadData("ActBossTrial")
+        return self.ipyActBossTrialCache[index]
+
+    def GetActBossTrialTemplateCount(self):
+        self.CheckLoadData("ActBossTrialTemplate")
+        return self.ipyActBossTrialTemplateLen
+    def GetActBossTrialTemplateByIndex(self, index):
+        self.CheckLoadData("ActBossTrialTemplate")
+        return self.ipyActBossTrialTemplateCache[index]
+
+    def GetActXianXiaMJCount(self):
+        self.CheckLoadData("ActXianXiaMJ")
+        return self.ipyActXianXiaMJLen
+    def GetActXianXiaMJByIndex(self, index):
+        self.CheckLoadData("ActXianXiaMJ")
+        return self.ipyActXianXiaMJCache[index]
+
+    def GetActGodGiftCount(self):
+        self.CheckLoadData("ActGodGift")
+        return self.ipyActGodGiftLen
+    def GetActGodGiftByIndex(self, index):
+        self.CheckLoadData("ActGodGift")
+        return self.ipyActGodGiftCache[index]
+
+    def GetActHorsePetFeastCount(self):
+        self.CheckLoadData("ActHorsePetFeast")
+        return self.ipyActHorsePetFeastLen
+    def GetActHorsePetFeastByIndex(self, index):
+        self.CheckLoadData("ActHorsePetFeast")
+        return self.ipyActHorsePetFeastCache[index]
+
+    def GetActBossRebornCount(self):
+        self.CheckLoadData("ActBossReborn")
+        return self.ipyActBossRebornLen
+    def GetActBossRebornByIndex(self, index):
+        self.CheckLoadData("ActBossReborn")
+        return self.ipyActBossRebornCache[index]
+
+    def GetActFairyCeremonyCount(self):
+        self.CheckLoadData("ActFairyCeremony")
+        return self.ipyActFairyCeremonyLen
+    def GetActFairyCeremonyByIndex(self, index):
+        self.CheckLoadData("ActFairyCeremony")
+        return self.ipyActFairyCeremonyCache[index]
+
+    def GetUniquenessArriveCount(self):
+        self.CheckLoadData("UniquenessArrive")
+        return self.ipyUniquenessArriveLen
+    def GetUniquenessArriveByIndex(self, index):
+        self.CheckLoadData("UniquenessArrive")
+        return self.ipyUniquenessArriveCache[index]
+
+    def GetActRealmPointCount(self):
+        self.CheckLoadData("ActRealmPoint")
+        return self.ipyActRealmPointLen
+    def GetActRealmPointByIndex(self, index):
+        self.CheckLoadData("ActRealmPoint")
+        return self.ipyActRealmPointCache[index]
+
+    def GetActFlashSaleCount(self):
+        self.CheckLoadData("ActFlashSale")
+        return self.ipyActFlashSaleLen
+    def GetActFlashSaleByIndex(self, index):
+        self.CheckLoadData("ActFlashSale")
+        return self.ipyActFlashSaleCache[index]
+
+    def GetStoreCount(self):
+        self.CheckLoadData("Store")
+        return self.ipyStoreLen
+    def GetStoreByIndex(self, index):
+        self.CheckLoadData("Store")
+        return self.ipyStoreCache[index]
+
+    def GetActWishingWellCount(self):
+        self.CheckLoadData("ActWishingWell")
+        return self.ipyActWishingWellLen
+    def GetActWishingWellByIndex(self, index):
+        self.CheckLoadData("ActWishingWell")
+        return self.ipyActWishingWellCache[index]
+
+    def GetActRechargePrizeCount(self):
+        self.CheckLoadData("ActRechargePrize")
+        return self.ipyActRechargePrizeLen
+    def GetActRechargePrizeByIndex(self, index):
+        self.CheckLoadData("ActRechargePrize")
+        return self.ipyActRechargePrizeCache[index]
+
+    def GetActRechargeRebateGoldCount(self):
+        self.CheckLoadData("ActRechargeRebateGold")
+        return self.ipyActRechargeRebateGoldLen
+    def GetActRechargeRebateGoldByIndex(self, index):
+        self.CheckLoadData("ActRechargeRebateGold")
+        return self.ipyActRechargeRebateGoldCache[index]
+
+    def GetActGrowupBuyCount(self):
+        self.CheckLoadData("ActGrowupBuy")
+        return self.ipyActGrowupBuyLen
+    def GetActGrowupBuyByIndex(self, index):
+        self.CheckLoadData("ActGrowupBuy")
+        return self.ipyActGrowupBuyCache[index]
+
+    def GetActSingleRechargeCount(self):
+        self.CheckLoadData("ActSingleRecharge")
+        return self.ipyActSingleRechargeLen
+    def GetActSingleRechargeByIndex(self, index):
+        self.CheckLoadData("ActSingleRecharge")
+        return self.ipyActSingleRechargeCache[index]
+
+    def GetActTurntableCount(self):
+        self.CheckLoadData("ActTurntable")
+        return self.ipyActTurntableLen
+    def GetActTurntableByIndex(self, index):
+        self.CheckLoadData("ActTurntable")
+        return self.ipyActTurntableCache[index]
+
+    def GetActManyDayRechargeCount(self):
+        self.CheckLoadData("ActManyDayRecharge")
+        return self.ipyActManyDayRechargeLen
+    def GetActManyDayRechargeByIndex(self, index):
+        self.CheckLoadData("ActManyDayRecharge")
+        return self.ipyActManyDayRechargeCache[index]
+
+    def GetActTotalRechargeCount(self):
+        self.CheckLoadData("ActTotalRecharge")
+        return self.ipyActTotalRechargeLen
+    def GetActTotalRechargeByIndex(self, index):
+        self.CheckLoadData("ActTotalRecharge")
+        return self.ipyActTotalRechargeCache[index]
+
+    def GetCrossZoneCommCount(self):
+        self.CheckLoadData("CrossZoneComm")
+        return self.ipyCrossZoneCommLen
+    def GetCrossZoneCommByIndex(self, index):
+        self.CheckLoadData("CrossZoneComm")
+        return self.ipyCrossZoneCommCache[index]
+
+    def GetCrossZonePKCount(self):
+        self.CheckLoadData("CrossZonePK")
+        return self.ipyCrossZonePKLen
+    def GetCrossZonePKByIndex(self, index):
+        self.CheckLoadData("CrossZonePK")
+        return self.ipyCrossZonePKCache[index]
+
+    def GetChampionshipTimeCount(self):
+        self.CheckLoadData("ChampionshipTime")
+        return self.ipyChampionshipTimeLen
+    def GetChampionshipTimeByIndex(self, index):
+        self.CheckLoadData("ChampionshipTime")
+        return self.ipyChampionshipTimeCache[index]
+
+    def GetChampionshipRankCount(self):
+        self.CheckLoadData("ChampionshipRank")
+        return self.ipyChampionshipRankLen
+    def GetChampionshipRankByIndex(self, index):
+        self.CheckLoadData("ChampionshipRank")
+        return self.ipyChampionshipRankCache[index]
+
+    def GetChampionshipOfficialCount(self):
+        self.CheckLoadData("ChampionshipOfficial")
+        return self.ipyChampionshipOfficialLen
+    def GetChampionshipOfficialByIndex(self, index):
+        self.CheckLoadData("ChampionshipOfficial")
+        return self.ipyChampionshipOfficialCache[index]
+
+    def GetCrossRealmPKSeasonCount(self):
+        self.CheckLoadData("CrossRealmPKSeason")
+        return self.ipyCrossRealmPKSeasonLen
+    def GetCrossRealmPKSeasonByIndex(self, index):
+        self.CheckLoadData("CrossRealmPKSeason")
+        return self.ipyCrossRealmPKSeasonCache[index]
+
+    def GetCrossRealmPKDanCount(self):
+        self.CheckLoadData("CrossRealmPKDan")
+        return self.ipyCrossRealmPKDanLen
+    def GetCrossRealmPKDanByIndex(self, index):
+        self.CheckLoadData("CrossRealmPKDan")
+        return self.ipyCrossRealmPKDanCache[index]
+
+    def GetCrossPenglaiZoneMapCount(self):
+        self.CheckLoadData("CrossPenglaiZoneMap")
+        return self.ipyCrossPenglaiZoneMapLen
+    def GetCrossPenglaiZoneMapByIndex(self, index):
+        self.CheckLoadData("CrossPenglaiZoneMap")
+        return self.ipyCrossPenglaiZoneMapCache[index]
+
+    def GetCrossDemonLandZoneMapCount(self):
+        self.CheckLoadData("CrossDemonLandZoneMap")
+        return self.ipyCrossDemonLandZoneMapLen
+    def GetCrossDemonLandZoneMapByIndex(self, index):
+        self.CheckLoadData("CrossDemonLandZoneMap")
+        return self.ipyCrossDemonLandZoneMapCache[index]
+
+    def GetCrossFamilyFlagwarZoneMapCount(self):
+        self.CheckLoadData("CrossFamilyFlagwarZoneMap")
+        return self.ipyCrossFamilyFlagwarZoneMapLen
+    def GetCrossFamilyFlagwarZoneMapByIndex(self, index):
+        self.CheckLoadData("CrossFamilyFlagwarZoneMap")
+        return self.ipyCrossFamilyFlagwarZoneMapCache[index]
+
+    def GetActWeekPartyCount(self):
+        self.CheckLoadData("ActWeekParty")
+        return self.ipyActWeekPartyLen
+    def GetActWeekPartyByIndex(self, index):
+        self.CheckLoadData("ActWeekParty")
+        return self.ipyActWeekPartyCache[index]
+
+    def GetActLoginAwardCount(self):
+        self.CheckLoadData("ActLoginAward")
+        return self.ipyActLoginAwardLen
+    def GetActLoginAwardByIndex(self, index):
+        self.CheckLoadData("ActLoginAward")
+        return self.ipyActLoginAwardCache[index]
+
+    def GetActFeastWeekPartyCount(self):
+        self.CheckLoadData("ActFeastWeekParty")
+        return self.ipyActFeastWeekPartyLen
+    def GetActFeastWeekPartyByIndex(self, index):
+        self.CheckLoadData("ActFeastWeekParty")
+        return self.ipyActFeastWeekPartyCache[index]
+
+    def GetActNewFairyCeremonyCount(self):
+        self.CheckLoadData("ActNewFairyCeremony")
+        return self.ipyActNewFairyCeremonyLen
+    def GetActNewFairyCeremonyByIndex(self, index):
+        self.CheckLoadData("ActNewFairyCeremony")
+        return self.ipyActNewFairyCeremonyCache[index]
+
+    def GetNewUniquenessArriveCount(self):
+        self.CheckLoadData("NewUniquenessArrive")
+        return self.ipyNewUniquenessArriveLen
+    def GetNewUniquenessArriveByIndex(self, index):
+        self.CheckLoadData("NewUniquenessArrive")
+        return self.ipyNewUniquenessArriveCache[index]
+
+    def GetLoveGiftCount(self):
+        self.CheckLoadData("LoveGift")
+        return self.ipyLoveGiftLen
+    def GetLoveGiftByIndex(self, index):
+        self.CheckLoadData("LoveGift")
+        return self.ipyLoveGiftCache[index]
+
+    def GetMarryCount(self):
+        self.CheckLoadData("Marry")
+        return self.ipyMarryLen
+    def GetMarryByIndex(self, index):
+        self.CheckLoadData("Marry")
+        return self.ipyMarryCache[index]
+
+    def GetActLuckyTreasureCount(self):
+        self.CheckLoadData("ActLuckyTreasure")
+        return self.ipyActLuckyTreasureLen
+    def GetActLuckyTreasureByIndex(self, index):
+        self.CheckLoadData("ActLuckyTreasure")
+        return self.ipyActLuckyTreasureCache[index]
+
+    def GetCrossActLuckyCloudBuyCount(self):
+        self.CheckLoadData("CrossActLuckyCloudBuy")
+        return self.ipyCrossActLuckyCloudBuyLen
+    def GetCrossActLuckyCloudBuyByIndex(self, index):
+        self.CheckLoadData("CrossActLuckyCloudBuy")
+        return self.ipyCrossActLuckyCloudBuyCache[index]
+
+    def GetCrossActLuckyCloudBuyTemplateCount(self):
+        self.CheckLoadData("CrossActLuckyCloudBuyTemplate")
+        return self.ipyCrossActLuckyCloudBuyTemplateLen
+    def GetCrossActLuckyCloudBuyTemplateByIndex(self, index):
+        self.CheckLoadData("CrossActLuckyCloudBuyTemplate")
+        return self.ipyCrossActLuckyCloudBuyTemplateCache[index]
+
+    def GetCrossActAllRechargeCount(self):
+        self.CheckLoadData("CrossActAllRecharge")
+        return self.ipyCrossActAllRechargeLen
+    def GetCrossActAllRechargeByIndex(self, index):
+        self.CheckLoadData("CrossActAllRecharge")
+        return self.ipyCrossActAllRechargeCache[index]
+
+    def GetCrossActAllRechargeTemplateCount(self):
+        self.CheckLoadData("CrossActAllRechargeTemplate")
+        return self.ipyCrossActAllRechargeTemplateLen
+    def GetCrossActAllRechargeTemplateByIndex(self, index):
+        self.CheckLoadData("CrossActAllRechargeTemplate")
+        return self.ipyCrossActAllRechargeTemplateCache[index]
+
+    def GetCrossActCTGBillboardCount(self):
+        self.CheckLoadData("CrossActCTGBillboard")
+        return self.ipyCrossActCTGBillboardLen
+    def GetCrossActCTGBillboardByIndex(self, index):
+        self.CheckLoadData("CrossActCTGBillboard")
+        return self.ipyCrossActCTGBillboardCache[index]
+
+    def GetCrossActCTGBillboardOrderCount(self):
+        self.CheckLoadData("CrossActCTGBillboardOrder")
+        return self.ipyCrossActCTGBillboardOrderLen
+    def GetCrossActCTGBillboardOrderByIndex(self, index):
+        self.CheckLoadData("CrossActCTGBillboardOrder")
+        return self.ipyCrossActCTGBillboardOrderCache[index]
+
+    def GetEquipStarUpCount(self):
+        self.CheckLoadData("EquipStarUp")
+        return self.ipyEquipStarUpLen
+    def GetEquipStarUpByIndex(self, index):
+        self.CheckLoadData("EquipStarUp")
+        return self.ipyEquipStarUpCache[index]
+
+    def GetFamilyWarRankAwardCount(self):
+        self.CheckLoadData("FamilyWarRankAward")
+        return self.ipyFamilyWarRankAwardLen
+    def GetFamilyWarRankAwardByIndex(self, index):
+        self.CheckLoadData("FamilyWarRankAward")
+        return self.ipyFamilyWarRankAwardCache[index]
+
+    def GetAssistThanksGiftCount(self):
+        self.CheckLoadData("AssistThanksGift")
+        return self.ipyAssistThanksGiftLen
+    def GetAssistThanksGiftByIndex(self, index):
+        self.CheckLoadData("AssistThanksGift")
+        return self.ipyAssistThanksGiftCache[index]
+
+    def GetFairyDomainCount(self):
+        self.CheckLoadData("FairyDomain")
+        return self.ipyFairyDomainLen
+    def GetFairyDomainByIndex(self, index):
+        self.CheckLoadData("FairyDomain")
+        return self.ipyFairyDomainCache[index]
 
 IPYData = IPY_DataMgr()
 def IPY_Data(): return IPYData
@@ -3435,6 +3265,7 @@
     @return: 对应查询条件的 ipyData 数据实例,只返回单个实例
     @使用说明: IpyGameDataPY.GetIpyGameData(表名, 索引1查询值, 索引2查询值, … )
     '''
+    IPYData.CheckLoadData(dtName)
     if dtName not in IPYData.ipyDataIndexMap:
         ErrLog("Can not found ipyData dtName=%s" % (dtName))
         return
@@ -3452,6 +3283,7 @@
     @return: 对应查询条件的 ipyData 数据实例列表
     @使用说明: 与 GetIpyGameData 函数相同
     '''
+    IPYData.CheckLoadData(dtName)
     if dtName not in IPYData.ipyDataIndexMap:
         ErrLog("Can not found ipyDataList dtName=%s" % (dtName))
         return
@@ -3466,6 +3298,7 @@
 def GetIpyGameDataNotLog(dtName, *args):
     '''与 GetIpyGameData 函数相同, 只是找不到数据时不会输出日志
     '''
+    IPYData.CheckLoadData(dtName)
     if dtName not in IPYData.ipyDataIndexMap:
         #ErrLog("Can not found ipyData dtName=%s" % (dtName))
         return
@@ -3479,6 +3312,7 @@
 def GetIpyGameDataListNotLog(dtName, *args):
     '''与 GetIpyGameDataList 函数相同, 只是找不到数据时不会输出日志
     '''
+    IPYData.CheckLoadData(dtName)
     if dtName not in IPYData.ipyDataIndexMap:
         #ErrLog("Can not found ipyDataList dtName=%s" % (dtName))
         return
@@ -3498,6 +3332,7 @@
     @param isLogNone: 找不到数据时是否数据日志,默认是
     @return: 找不到数据时返回 None,有数据时根据参数是否返回列表返回对应的数据实例或数据实例列表
     '''
+    IPYData.CheckLoadData(dtName)
     fieldList = keyDict.keys()
     valueList = keyDict.values()
     findFieldKey = "%s_%s" % (dtName, fieldList)
@@ -3507,7 +3342,7 @@
     if findFieldKey not in IPYData.ipyDataIndexMapEx:
         indexMapDict = {}
         for index, iData in enumerate(cacheList):
-            valuekey = tuple([getattr(iData, "%s" % field) for field in fieldList])
+            valuekey = tuple([getattr(iData, "Get%s" % field)() for field in fieldList])
             indexList = indexMapDict.get(valuekey, [])
             indexList.append(index)
             indexMapDict[valuekey] = indexList        
@@ -3528,6 +3363,7 @@
     @param key: 配置key
     @return: 直接返回该配置key对应的配置ipyData实例
     '''
+    IPYData.CheckLoadData("FuncConfig")
     if key not in IPYData.ipyFuncConfigDict:
         ErrLog("Can not found ipyData FuncConfig key=%s!" % key)
         return ""
@@ -3539,20 +3375,21 @@
     @param index: 第几个配置值,支持1~5
     @return: 直接返回对应的数据类型 int、str,不用再手动转int
     '''
+    IPYData.CheckLoadData("FuncConfig")
     if key not in IPYData.ipyFuncConfigDict:
         ErrLog("Can not found ipyData FuncConfig key=%s!" % key)
         return ""
     cfgObj = IPYData.ipyFuncConfigDict[key]
     if index == 1:
-        return cfgObj.Numerical1
+        return cfgObj.attrTuple[1]
     if index == 2:
-        return cfgObj.Numerical2
+        return cfgObj.attrTuple[2]
     if index == 3:
-        return cfgObj.Numerical3
+        return cfgObj.attrTuple[3]
     if index == 4:
-        return cfgObj.Numerical4
+        return cfgObj.attrTuple[4]
     if index == 5:
-        return cfgObj.Numerical5
+        return cfgObj.attrTuple[5]
     ErrLog("Can not found ipyData FuncConfig key=%s,index=%s!" % (key, index))
     return ""
 
@@ -3567,20 +3404,21 @@
     当然如果配置的内容本身就为python的列表、字典结构的话可使用上面的函数
     不过为了统一,建议功能配置表读列表、字典时都使用该函数
     '''
+    IPYData.CheckLoadData("FuncConfig")
     if key not in IPYData.ipyFuncConfigDict:
         ErrLog("Can not found ipyData FuncConfig key=%s!" % key)
         return defaultValue
     cfgObj = IPYData.ipyFuncConfigDict[key]
     if index == 1:
-        curConfig = cfgObj.Numerical1
+        curConfig = cfgObj.attrTuple[1]
     elif index == 2:
-        curConfig = cfgObj.Numerical2
+        curConfig = cfgObj.attrTuple[2]
     elif index == 3:
-        curConfig = cfgObj.Numerical3
+        curConfig = cfgObj.attrTuple[3]
     elif index == 4:
-        curConfig = cfgObj.Numerical4
+        curConfig = cfgObj.attrTuple[4]
     elif index == 5:
-        curConfig = cfgObj.Numerical5
+        curConfig = cfgObj.attrTuple[5]
     else:
         ErrLog("Can not found ipyData FuncConfig key=%s,index=%s!" % (key, index))
         return defaultValue
@@ -3607,6 +3445,7 @@
     @param conditionDict: 查询条件,{查询字段名:字段值, ...}
     @return: 找不到数据返回 None , 否则返回对应的 ipyData 数据实例
     '''
+    IPYData.CheckLoadData(dtName)
     if not conditionDict:
         dataList = getattr(IPYData, "ipy%sCache" % dtName)
     else:
@@ -3616,34 +3455,88 @@
     
     low = 0
     lowData = dataList[0]
-    lowValue = getattr(lowData, "%s" % keyName)
+    lowValue = getattr(lowData, "Get%s" % keyName)()
     if keyValue < lowValue:
         return
     
     high = len(dataList) - 1
     highData = dataList[high]
-    highValue = getattr(highData, "%s" % keyName)
+    highValue = getattr(highData, "Get%s" % keyName)()
     if keyValue >= highValue:
         return highData
     
     near = low + int((high - low) * (keyValue - lowValue)/(highValue - lowValue))
     
     nearData = dataList[near]
-    nearValue = getattr(nearData, "%s" % keyName)
+    nearValue = getattr(nearData, "Get%s" % keyName)()
     
     if keyValue < nearValue:
         for i in xrange(near - 1, low - 1, -1):
             nearData = dataList[i]
-            nearValue = getattr(nearData, "%s" % keyName)
+            nearValue = getattr(nearData, "Get%s" % keyName)()
             if nearValue <= keyValue:
                 return nearData
             
     elif keyValue > nearValue:
         for i in xrange(near + 1, high + 1):
             nearData = dataList[i]
-            nearValue = getattr(nearData, "%s" % keyName)
+            nearValue = getattr(nearData, "Get%s" % keyName)()
             if nearValue > keyValue:
                 return dataList[i - 1]
             
     return nearData
 
+#if __name__ == "__main__":
+#    IPYDataTotalSize = ChConfig.GetSizeof(IPYData)
+#    classSizeSum = sum(IPYData.classSizeDict.values())
+#    Log("数据类内存: %s b = %s M" % (classSizeSum, str(classSizeSum/float(1024*1024))))
+#    Log("总占用内存: %s b = %s M" % (IPYDataTotalSize, str(IPYDataTotalSize/float(1024*1024))))
+#    for key in ["OpenBagItem", "RuneUnlock", "IceLodeNeedPoint", "RealmDifficulty", "TongTianLing", "TongTianLingaaa"]:
+#        for i in range(1, 6):
+#            v = GetFuncCfg(key, i)
+#            Log("key:%s,i=%s,value=%s\t%s" % (key, i, type(v), str(v)))
+#            
+#    ipyData = GetIpyGameData("FlashGiftbag", 303)
+#    giftbagIpyDataList = GetIpyGameDataByCondition("FlashGiftbag", {"GiftbagType":1002}, True, True)
+#    for ipyData in giftbagIpyDataList:
+#        print 
+#        print type(ipyData.GetGiftbagID()), ipyData.GetGiftbagID()
+#        print type(ipyData.GetGiftbagType()), ipyData.GetGiftbagType()
+#        print type(ipyData.GetOriginalRMB()), ipyData.GetOriginalRMB()
+#        print type(ipyData.GetBuyCountLimit()), ipyData.GetBuyCountLimit()
+#        print type(ipyData.GetGiftItemList()), ipyData.GetGiftItemList()
+#        print type(ipyData.GetMainItemID()), ipyData.GetMainItemID()
+#        print type(ipyData.GetNotifyKey()), ipyData.GetNotifyKey()
+#        
+#    collNPCIpyDataList = GetIpyGameDataListNotLog("MapRefreshNPC", 32050)
+#    if collNPCIpyDataList:
+#        npcIDList = []
+#        for ipyData in collNPCIpyDataList:
+#            print 
+#            print type(ipyData.GetMapID()), ipyData.GetMapID()
+#            print type(ipyData.GetNPCIDList()), ipyData.GetNPCIDList()
+#            print type(ipyData.GetRefreshMarkList()), ipyData.GetRefreshMarkList()
+#            npcIDList += ipyData.GetNPCIDList()
+#        print "npcIDList", npcIDList
+#    else:
+#        print "None"
+#        
+#    ipyData = GetIpyGameData("RuneCompound", 4415)
+#    if ipyData:
+#        print 
+#        print type(ipyData.GetTagItemID()), ipyData.GetTagItemID()
+#        print type(ipyData.GetNeedItem()), ipyData.GetNeedItem()
+#        print type(ipyData.GetNeedMJ()), ipyData.GetNeedMJ()
+#    else:
+#        print "None"
+#        
+#    ipyData = GetIpyGameData("DailyGiftbag", 703, 105)
+#    if ipyData:
+#        print 
+#        print type(ipyData.GetGiftbagType()), ipyData.GetGiftbagType()
+#        print type(ipyData.GetGiftbagID()), ipyData.GetGiftbagID()
+#        print type(ipyData.GetBuyCountLimit()), ipyData.GetBuyCountLimit()
+#        print type(ipyData.GetGiftItemList()), ipyData.GetGiftItemList()
+#    else:
+#        print "None"
+            
\ No newline at end of file

--
Gitblit v1.8.0