ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
@@ -21,6 +21,7 @@
import hashlib
import os
import gc
'''表结构定义字典
{
@@ -46,6 +47,16 @@
                        ("list", "LimitServerGroupIDList", 0),
                        ),
                "PlayerFace":(
                        ("DWORD", "FaceID", 1),
                        ("BYTE", "UnlockDefault", 0),
                        ),
                "PlayerFacePic":(
                        ("DWORD", "FacePicID", 1),
                        ("BYTE", "UnlockDefault", 0),
                        ),
                "WorldLV":(
                        ("WORD", "WorldLV", 1),
                        ("DWORD", "OpenServerSecond", 0),
@@ -59,6 +70,40 @@
                        ("DWORD", "NeedMoney", 0),
                        ("DWORD", "WeekMissionMoneyMax", 0),
                        ("BYTE", "BossFBCnt", 0),
                        ("DWORD", "ZhenbaogeWeights", 0),
                        ),
                "FamilyEmblem":(
                        ("BYTE", "EmblemID", 1),
                        ("BYTE", "UnlockFamilyLV", 0),
                        ("DWORD", "ExpireMinutes", 0),
                        ("DWORD", "CustomFamilyID", 0),
                        ),
                "FamilyZhenbaogeCut":(
                        ("BYTE", "CutNum", 1),
                        ("DWORD", "CutWeight", 0),
                        ("float", "MinRatio", 0),
                        ("float", "RandRatio", 0),
                        ),
                "FamilyZhenbaogeItem":(
                        ("BYTE", "ItemGroupNum", 1),
                        ("DWORD", "ItemWeight", 0),
                        ("list", "ItemList", 0),
                        ),
                "FamilyBossHurtAward":(
                        ("BYTE", "AwardType", 1),
                        ("BYTE", "RecordIndex", 1),
                        ("DWORD", "NeedHurtTotal", 0),
                        ("list", "AwardItemList", 0),
                        ),
                "FamilyZhenfa":(
                        ("BYTE", "ZhenfaType", 1),
                        ("WORD", "ZhenfaLV", 1),
                        ("DWORD", "LVUpNeedExp", 0),
                        ),
                "MarketQuery":(
@@ -96,6 +141,13 @@
                        ("list", "ItemCountWeightList", 0),
                        ("list", "AuctionItemWeightList", 0),
                        ("list", "RandMailKeyList", 0),
                        ),
                "CrossDailyAction":(
                        ("DWORD", "DailyID", 1),
                        ("dict", "OpenTimeDict", 0),
                        ("DWORD", "Duration", 0),
                        ("dict", "NotifyInfo", 0),
                        ),
                "DailyAction":(
@@ -184,6 +236,17 @@
                        ("list", "DayFreeHelpCount", 0),
                        ),
                "FuncTeamSet":(
                        ("DWORD", "FuncMapID", 1),
                        ("BYTE", "NeedName", 0),
                        ("BYTE", "MemberMax", 0),
                        ("BYTE", "ApplyMax", 0),
                        ("BYTE", "ReqApplyMax", 0),
                        ("BYTE", "SortType", 0),
                        ("BYTE", "SortReverse", 0),
                        ("BYTE", "OPLimitInAct", 0),
                        ),
                "ChinMap":(
                        ("DWORD", "MapID", 1),
                        ("char", "MapName", 0),
@@ -207,6 +270,13 @@
                "BOSSFirstKill":(
                        ("DWORD", "NPCID", 1),
                        ("list", "ServerFirstKillPlayerAward", 0),
                        ),
                "OSCBillRankAward":(
                        ("BYTE", "OSCBillType", 1),
                        ("BYTE", "RankA", 0),
                        ("BYTE", "RankB", 0),
                        ("dict", "RankAward", 0),
                        ),
                "QuestionBank":(
@@ -278,6 +348,7 @@
                        ("DWORD", "LimitLV", 0),
                        ("DWORD", "LimitMagicWeapon", 0),
                        ("WORD", "LimiRealmLV", 0),
                        ("BYTE", "LimitVIPLV", 0),
                        ),
                "ChinNPC":(
@@ -383,6 +454,29 @@
                        ("BYTE", "IsDayReset", 0),
                        ),
                "ActBuyOne":(
                        ("DWORD", "CfgID", 1),
                        ("list", "PlatformList", 0),
                        ("list", "ServerGroupIDList", 0),
                        ("BYTE", "ActNum", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("dict", "NotifyInfoStart", 0),
                        ("dict", "NotifyInfoEnd", 0),
                        ("list", "NotifyInfoLoop", 0),
                        ("BYTE", "IsDayReset", 0),
                        ),
                "ActFamilyCTGAssist":(
                        ("DWORD", "CfgID", 1),
                        ("list", "PlatformList", 0),
                        ("list", "ServerGroupIDList", 0),
                        ("BYTE", "ActNum", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("BYTE", "IsDayReset", 0),
                        ),
                "ActCollectWords":(
                        ("DWORD", "CfgID", 1),
                        ("list", "PlatformList", 0),
@@ -408,7 +502,223 @@
                        ("BYTE", "ResetType", 0),
                        ),
                "ActBossTrial":(
                        ("DWORD", "CfgID", 1),
                        ("list", "PlatformList", 0),
                        ("list", "ServerGroupIDList", 0),
                        ("BYTE", "ActNum", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("char", "JoinStartTime", 0),
                        ("char", "JoinEndTime", 0),
                        ("dict", "NotifyInfoStart", 0),
                        ("dict", "NotifyInfoEnd", 0),
                        ("list", "NotifyInfoLoop", 0),
                        ("BYTE", "IsDayReset", 0),
                        ("BYTE", "ResetType", 0),
                        ("list", "TemplateIDList", 0),
                        ("list", "FamilyTemplateIDList", 0),
                        ),
                "ActBossTrialTemplate":(
                        ("DWORD", "TemplateID", 1),
                        ("BYTE", "Rank", 0),
                        ("list", "AwardItemList", 0),
                        ("list", "MemAwardItemList", 0),
                        ("DWORD", "NeedScore", 0),
                        ("dict", "ScoreAwardEx", 0),
                        ("WORD", "XiangongID", 0),
                        ),
                "CrossActBossTrial":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActGroupName", 0),
                        ("BYTE", "ZoneID", 0),
                        ("list", "ServerIDRangeList", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("char", "JoinStartTime", 0),
                        ("char", "JoinEndTime", 0),
                        ("dict", "NotifyInfoStart", 0),
                        ("dict", "NotifyInfoEnd", 0),
                        ("list", "NotifyInfoLoop", 0),
                        ("BYTE", "IsDayReset", 0),
                        ("BYTE", "ResetType", 0),
                        ("WORD", "PersonalTemplateID", 0),
                        ("WORD", "FamilyTemplateID", 0),
                        ),
                "ActHorsePetTrain":(
                        ("DWORD", "CfgID", 1),
                        ("list", "PlatformList", 0),
                        ("list", "ServerGroupIDList", 0),
                        ("BYTE", "ActNum", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("char", "JoinStartTime", 0),
                        ("char", "JoinEndTime", 0),
                        ("WORD", "PersonalTemplateID", 0),
                        ),
                "CrossActHorsePetTrain":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActGroupName", 0),
                        ("BYTE", "ZoneID", 0),
                        ("list", "ServerIDRangeList", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("char", "JoinStartTime", 0),
                        ("char", "JoinEndTime", 0),
                        ("WORD", "PersonalTemplateID", 0),
                        ),
                "ActHorsePetTrainBillTemp":(
                        ("DWORD", "TemplateID", 1),
                        ("BYTE", "Rank", 0),
                        ("list", "AwardItemList", 0),
                        ("DWORD", "NeedScore", 0),
                        ("dict", "ScoreAwardEx", 0),
                        ("WORD", "XiangongID", 0),
                        ),
                "ActGubao":(
                        ("DWORD", "CfgID", 1),
                        ("list", "PlatformList", 0),
                        ("list", "ServerGroupIDList", 0),
                        ("BYTE", "ActNum", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("char", "JoinStartTime", 0),
                        ("char", "JoinEndTime", 0),
                        ("WORD", "PersonalTemplateID", 0),
                        ),
                "CrossActGubao":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActGroupName", 0),
                        ("BYTE", "ZoneID", 0),
                        ("list", "ServerIDRangeList", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("char", "JoinStartTime", 0),
                        ("char", "JoinEndTime", 0),
                        ("WORD", "PersonalTemplateID", 0),
                        ),
                "ActGubaoBillTemp":(
                        ("DWORD", "TemplateID", 1),
                        ("BYTE", "Rank", 0),
                        ("list", "AwardItemList", 0),
                        ("DWORD", "NeedScore", 0),
                        ("dict", "ScoreAwardEx", 0),
                        ("WORD", "XiangongID", 0),
                        ),
                "CrossActLianqi":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActGroupName", 0),
                        ("BYTE", "ZoneID", 0),
                        ("list", "ServerIDRangeList", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("char", "JoinStartTime", 0),
                        ("char", "JoinEndTime", 0),
                        ("WORD", "LVLimit", 0),
                        ("WORD", "PersonalTemplateID", 0),
                        ),
                "ActLianqiBillTemp":(
                        ("DWORD", "TemplateID", 1),
                        ("BYTE", "Rank", 0),
                        ("list", "AwardItemList", 0),
                        ("DWORD", "NeedScore", 0),
                        ("dict", "ScoreAwardEx", 0),
                        ),
                "ActTimeFlow":(
                        ("DWORD", "FlowID", 1),
                        ("BYTE", "StartDay", 0),
                        ("BYTE", "StartHour", 0),
                        ("BYTE", "StartMinute", 0),
                        ("BYTE", "EndDay", 0),
                        ("BYTE", "EndHour", 0),
                        ("BYTE", "EndMinute", 0),
                        ("WORD", "StateValue", 0),
                        ),
                "ActBillboardAwardTemp":(
                        ("DWORD", "TemplateID", 1),
                        ("BYTE", "Rank", 0),
                        ("DWORD", "NeedValue", 0),
                        ("dict", "ValueAwardEx", 0),
                        ("list", "AwardItemList", 0),
                        ("list", "LeaderAwardItemList", 0),
                        ("list", "EliteAwardItemList", 0),
                        ),
                "ActGuess":(
                        ("DWORD", "TemplateID", 1),
                        ("DWORD", "AwardID", 0),
                        ("list", "RightRankList", 0),
                        ("list", "AwardItemList", 0),
                        ),
                "CrossActFamilyGCZ":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActGroupName", 0),
                        ("BYTE", "ZoneID", 0),
                        ("list", "ServerIDRangeList", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("BYTE", "JoinFamilyCnt", 0),
                        ("WORD", "ActFlowID", 0),
                        ("WORD", "GuessTemplateID", 0),
                        ("WORD", "PersonalTemplateID", 0),
                        ("WORD", "FamilyTemplateID", 0),
                        ),
                "CrossActFamilyGCZCampLV":(
                        ("DWORD", "CampLV", 1),
                        ("DWORD", "LVUPNeedExp", 0),
                        ("DWORD", "AddHPPer", 0),
                        ),
                "ActXianXiaMJ":(
                        ("DWORD", "CfgID", 1),
                        ("list", "PlatformList", 0),
                        ("list", "ServerGroupIDList", 0),
                        ("BYTE", "ActNum", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("char", "JoinStartTime", 0),
                        ("char", "JoinEndTime", 0),
                        ("BYTE", "IsDayReset", 0),
                        ("WORD", "PersonalTemplateID", 0),
                        ),
                "CrossActXianXiaMJ":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActGroupName", 0),
                        ("BYTE", "ZoneID", 0),
                        ("list", "ServerIDRangeList", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("char", "JoinStartTime", 0),
                        ("char", "JoinEndTime", 0),
                        ("BYTE", "IsDayReset", 0),
                        ("WORD", "PersonalTemplateID", 0),
                        ),
                "ActXianXiaMJBillTemp":(
                        ("DWORD", "TemplateID", 1),
                        ("BYTE", "Rank", 0),
                        ("list", "AwardItemList", 0),
                        ("DWORD", "NeedScore", 0),
                        ("dict", "ScoreAwardEx", 0),
                        ("WORD", "XiangongID", 0),
                        ),
                "ActGodGift":(
                        ("DWORD", "CfgID", 1),
                        ("list", "PlatformList", 0),
                        ("list", "ServerGroupIDList", 0),
@@ -418,7 +728,7 @@
                        ("dict", "NotifyInfoStart", 0),
                        ("dict", "NotifyInfoEnd", 0),
                        ("list", "NotifyInfoLoop", 0),
                        ("BYTE", "ResetType", 0),
                        ("BYTE", "IsDayReset", 0),
                        ),
                "ActHorsePetFeast":(
@@ -497,7 +807,7 @@
                        ("list", "NotifyInfoLoop", 0),
                        ("WORD", "LVLimit", 0),
                        ("BYTE", "IsDayReset", 0),
                        ("list", "ShopTypeList", 0),
                        ("dict", "ShopTypeList", 0),
                        ),
                "Store":(
@@ -613,6 +923,12 @@
                        ("list", "ServerGroupIDList", 0),
                        ),
                "CrossZoneBattlefield":(
                        ("char", "CrossZoneName", 1),
                        ("BYTE", "ZoneID", 1),
                        ("list", "ServerGroupIDList", 0),
                        ),
                "CrossZonePK":(
                        ("char", "CrossZoneName", 1),
                        ("BYTE", "ZoneID", 1),
@@ -620,10 +936,36 @@
                        ("list", "ServerGroupIDList", 0),
                        ),
                "ChampionshipTime":(
                        ("DWORD", "ID", 1),
                        ("BYTE", "StartDay", 0),
                        ("BYTE", "StartHour", 0),
                        ("BYTE", "StartMinute", 0),
                        ("BYTE", "EndDay", 0),
                        ("BYTE", "EndHour", 0),
                        ("BYTE", "EndMinute", 0),
                        ("WORD", "StateValue", 0),
                        ("dict", "NotifyInfo", 0),
                        ),
                "ChampionshipRank":(
                        ("BYTE", "Rank", 1),
                        ("list", "RankAwardItemList", 0),
                        ("WORD", "MainOfficialID", 0),
                        ("WORD", "XiangongID", 0),
                        ),
                "ChampionshipOfficial":(
                        ("WORD", "OfficialID", 1),
                        ("list", "JuniorOfficialIDList", 0),
                        ("list", "DailyAwardItemList", 0),
                        ("BYTE", "CanBeReplace", 0),
                        ),
                "CrossRealmPKSeason":(
                        ("char", "CrossZoneName", 1),
                        ("BYTE", "ZoneID", 1),
                        ("BYTE", "SeasonID", 0),
                        ("WORD", "SeasonID", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("char", "EndTime", 0),
@@ -643,6 +985,20 @@
                        ("BYTE", "CopyMapID", 1),
                        ),
                "CrossDemonLandZoneMap":(
                        ("BYTE", "ZoneID", 0),
                        ("DWORD", "MapID", 1),
                        ("DWORD", "DataMapID", 1),
                        ("BYTE", "CopyMapID", 1),
                        ),
                "CrossFamilyFlagwarZoneMap":(
                        ("BYTE", "ZoneID", 0),
                        ("DWORD", "MapID", 1),
                        ("DWORD", "DataMapID", 1),
                        ("BYTE", "CopyMapID", 1),
                        ),
                "ActWeekParty":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActMark", 0),
@@ -656,6 +1012,57 @@
                        ("dict", "NotifyInfoStart", 0),
                        ("dict", "NotifyInfoEnd", 0),
                        ("WORD", "LVLimit", 0),
                        ),
                "ActYunshi":(
                        ("DWORD", "CfgID", 1),
                        ("list", "PlatformList", 0),
                        ("list", "ServerGroupIDList", 0),
                        ("BYTE", "ActNum", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("BYTE", "ResetType", 0),
                        ),
                "ActLunhuidian":(
                        ("DWORD", "CfgID", 1),
                        ("list", "PlatformList", 0),
                        ("list", "ServerGroupIDList", 0),
                        ("BYTE", "ActNum", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("BYTE", "ResetType", 0),
                        ),
                "ActBuyCountGift":(
                        ("DWORD", "CfgID", 1),
                        ("list", "PlatformList", 0),
                        ("list", "ServerGroupIDList", 0),
                        ("BYTE", "ActNum", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("BYTE", "IsDayReset", 0),
                        ("BYTE", "ResetType", 0),
                        ),
                "ActTask":(
                        ("DWORD", "CfgID", 1),
                        ("list", "PlatformList", 0),
                        ("list", "ServerGroupIDList", 0),
                        ("BYTE", "ActNum", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("BYTE", "IsDayReset", 0),
                        ("BYTE", "ResetType", 0),
                        ),
                "ActLoginNew":(
                        ("DWORD", "CfgID", 1),
                        ("list", "PlatformList", 0),
                        ("list", "ServerGroupIDList", 0),
                        ("BYTE", "ActNum", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ),
                "ActLoginAward":(
@@ -749,6 +1156,10 @@
                        ("list", "ServerIDRangeList", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("list", "StartTimeList", 0),
                        ("list", "EndTimeList", 0),
                        ("list", "RoundMaxList", 0),
                        ("WORD", "LVLimit", 0),
                        ("list", "TemplateIDList", 0),
                        ),
@@ -757,6 +1168,27 @@
                        ("list", "BaseAwardInfo", 0),
                        ("list", "RandAwardWeightInfo", 0),
                        ("list", "SuperItemWeightInfo", 0),
                        ),
                "CrossActAllRecharge":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActGroupName", 0),
                        ("BYTE", "ZoneID", 0),
                        ("list", "ServerIDRangeList", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("dict", "NotifyInfoStart", 0),
                        ("dict", "NotifyInfoEnd", 0),
                        ("list", "NotifyInfoLoop", 0),
                        ("list", "TemplateIDList", 0),
                        ),
                "CrossActAllRechargeTemplate":(
                        ("DWORD", "TemplateID", 1),
                        ("DWORD", "CTGNeed", 0),
                        ("WORD", "NeedPlayerCount", 0),
                        ("BYTE", "AwardIndex", 0),
                        ("list", "AwardItemList", 0),
                        ),
                "CrossActCTGBillboard":(
@@ -791,6 +1223,18 @@
                        ("BYTE", "UnSuitRate", 0),
                        ),
                "MineAreaItem":(
                        ("BYTE", "MineID", 1),
                        ("WORD", "LimitLV", 0),
                        ("DWORD", "ItemID", 0),
                        ("BYTE", "ItemLV", 0),
                        ("DWORD", "ItemCount", 0),
                        ("float", "ItemWeight", 0),
                        ("DWORD", "RefreshWeightSys", 0),
                        ("DWORD", "RefreshWeight", 0),
                        ("DWORD", "RefreshWeightSuper", 0),
                        ),
                "FamilyWarRankAward":(
                        ("WORD", "WarWorldLV", 1),
                        ("BYTE", "WarRank", 0),
@@ -800,6 +1244,24 @@
                "AssistThanksGift":(
                        ("DWORD", "GiftID", 1),
                        ("BYTE", "AssistAwardCount", 0),
                        ),
                "Worship":(
                        ("BYTE", "WorshipType", 1),
                        ("DWORD", "WorshipValue", 1),
                        ("BYTE", "WorshipDays", 0),
                        ("BYTE", "MoneyType", 0),
                        ("list", "MoneyRange", 0),
                        ),
                "Xiangong":(
                        ("WORD", "XiangongID", 1),
                        ("BYTE", "ShowDays", 0),
                        ("BYTE", "MoneyType", 0),
                        ("DWORD", "MoneyValue", 0),
                        ("DWORD", "TitleID", 0),
                        ("list", "AwardItemList", 0),
                        ("char", "MailKey", 0),
                        ),
                "FairyDomain":(
@@ -814,1626 +1276,1838 @@
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] # 标识 char
    def GetNumerical1(self): return self.attrTuple[1] # 数据1 char
    def GetNumerical2(self): return self.attrTuple[2] # 数据2 char
    def GetNumerical3(self): return self.attrTuple[3] # 数据3 char
    def GetNumerical4(self): return self.attrTuple[4] # 数据4 char
    def GetNumerical5(self): return self.attrTuple[5] # 数据5 char
# 创角限制服务器配置表
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范围列表 list
    def GetLimitServerGroupIDList(self): return self.attrTuple[1] # 限制创角的服务器组ID列表 list
# 头像表
class IPY_PlayerFace():
    def __init__(self):
        self.attrTuple = None
        return
    def GetFaceID(self): return self.attrTuple[0] # 头像ID DWORD
    def GetUnlockDefault(self): return self.attrTuple[1] # 是否默认激活 BYTE
# 头像框表
class IPY_PlayerFacePic():
    def __init__(self):
        self.attrTuple = None
        return
    def GetFacePicID(self): return self.attrTuple[0] # 头像框ID DWORD
    def GetUnlockDefault(self): return self.attrTuple[1] # 是否默认激活 BYTE
# 世界等级表格
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] # 世界等级 WORD
    def GetOpenServerSecond(self): return self.attrTuple[1] # 开服时间秒 DWORD
# 仙盟表格
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] # 仙盟等级 BYTE
    def GetMemberCnt(self): return self.attrTuple[1] # 成员数量 WORD
    def GetDeputyLeaderCnt(self): return self.attrTuple[2] # 副盟主数量 BYTE
    def GetEliteCnt(self): return self.attrTuple[3] # 精英数量 BYTE
    def GetNeedMoney(self): return self.attrTuple[4] # 升级需要资金 DWORD
    def GetWeekMissionMoneyMax(self): return self.attrTuple[5] # 每周任务最大可获得仙盟资金 DWORD
    def GetBossFBCnt(self): return self.attrTuple[6] # BOSS副本次数 BYTE
    def GetZhenbaogeWeights(self): return self.attrTuple[7] # 珍宝阁总权重 DWORD
# 仙盟徽章表
class IPY_FamilyEmblem():
    def __init__(self):
        self.attrTuple = None
        return
    def GetEmblemID(self): return self.attrTuple[0] # 徽章ID BYTE
    def GetUnlockFamilyLV(self): return self.attrTuple[1] # 解锁仙盟等级,为0时代表其他方式解锁 BYTE
    def GetExpireMinutes(self): return self.attrTuple[2] # 有效时长,分钟 DWORD
    def GetCustomFamilyID(self): return self.attrTuple[3] # 定制仙盟ID DWORD
# 仙盟珍宝阁砍价
class IPY_FamilyZhenbaogeCut():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCutNum(self): return self.attrTuple[0] # 砍价人次 BYTE
    def GetCutWeight(self): return self.attrTuple[1] # 砍价权重 DWORD
    def GetMinRatio(self): return self.attrTuple[2] # 保底比值 float
    def GetRandRatio(self): return self.attrTuple[3] # 随机比值 float
# 仙盟珍宝阁物品
class IPY_FamilyZhenbaogeItem():
    def __init__(self):
        self.attrTuple = None
        return
    def GetItemGroupNum(self): return self.attrTuple[0] # 物品组编号 BYTE
    def GetItemWeight(self): return self.attrTuple[1] # 随机权重 DWORD
    def GetItemList(self): return self.attrTuple[2] # 物品列表[[物品ID,个数,是否拍品], ...] list
# 仙盟试炼伤血奖励表
class IPY_FamilyBossHurtAward():
    def __init__(self):
        self.attrTuple = None
        return
    def GetAwardType(self): return self.attrTuple[0] # 奖励类型 1-个人;2-仙盟 BYTE
    def GetRecordIndex(self): return self.attrTuple[1] # 奖励记录索引,同奖励类型时记录索引不可重复 BYTE
    def GetNeedHurtTotal(self): return self.attrTuple[2] # 所需总伤血 DWORD
    def GetAwardItemList(self): return self.attrTuple[3] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
# 仙盟阵法表
class IPY_FamilyZhenfa():
    def __init__(self):
        self.attrTuple = None
        return
    def GetZhenfaType(self): return self.attrTuple[0] #  阵法类型 BYTE
    def GetZhenfaLV(self): return self.attrTuple[1] #  阵法等级 WORD
    def GetLVUpNeedExp(self): return self.attrTuple[2] # 升下一级所需经验 DWORD
# 集市查询表
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] # 查询类型 WORD
    def GetLimitInfo(self): return self.attrTuple[1] # 限制条件 dict
# 拍卖物品表
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] # DWORD
    def GetNoticeSaleMinutes(self): return self.attrTuple[1] # 预告拍卖分钟 BYTE
    def GetFamilySaleMinutes(self): return self.attrTuple[2] # 仙盟拍卖分钟 WORD
    def GetWorldSaleMinutes(self): return self.attrTuple[3] # 全服拍卖分钟 WORD
    def GetBasePrice(self): return self.attrTuple[4] # 起拍价 WORD
    def GetBuyoutPrice(self): return self.attrTuple[5] # 一口价 WORD
    def GetBiddingAdd(self): return self.attrTuple[6] # 竞价增加 WORD
    def GetNeedWorldNotify(self): return self.attrTuple[7] # 是否需要广播 BYTE
    def GetSortpriority(self): return self.attrTuple[8] # 排序优先级归组 BYTE
# 拍卖行系统拍品表
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] # DWORD
    def GetStartDate(self): return self.attrTuple[1] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
    def GetStartTime(self): return self.attrTuple[3] # 开启时间 char
    def GetEndTime(self): return self.attrTuple[4] # 结束时间 char
    def GetWorldLVRange(self): return self.attrTuple[5] # 世界等级范围限制 list
    def GetAddRandSecondRange(self): return self.attrTuple[6] # 每件拍品随机间隔上架秒数 上限|下限 list
    def GetReplenishCDMinutes(self): return self.attrTuple[7] # 动态补充拍品间隔分钟 WORD
    def GetReplenishAuctionCount(self): return self.attrTuple[8] # 动态补充拍品保底数 BYTE
    def GetReplenishItemID(self): return self.attrTuple[9] # 动态补充物品ID DWORD
    def GetReplenishEquipInfo(self): return self.attrTuple[10] # 动态补充装备信息 [阶,颜色,是否套装] list
    def GetReplenishEquipPlaces(self): return self.attrTuple[11] # 动态补充上架装备位列表 list
    def GetAuctionCount(self): return self.attrTuple[12] # 指定上架次数 BYTE
    def GetRandMinuteRange(self): return self.attrTuple[13] # 指定上架随机间隔分钟下限|上限 list
    def GetItemCountWeightList(self): return self.attrTuple[14] # 指定上架随机件数权重列表, [[权重, 件数], ...] list
    def GetAuctionItemWeightList(self): return self.attrTuple[15] # 指定上架物品随机权重, [[权重, 物品ID],[权重, [阶,颜色,部位集合,是否套装,星级]] ...] list
    def GetRandMailKeyList(self): return self.attrTuple[16] # 指定上架随机邮件列表,有配置时上架的时候在线玩家会收到一封上架邮件提醒 list
# 跨服日常活动表
class IPY_CrossDailyAction():
    def __init__(self):
        self.attrTuple = None
        return
    def GetDailyID(self): return self.attrTuple[0] # 活动ID DWORD
    def GetOpenTimeDict(self): return self.attrTuple[1] # 开启时间 dict
    def GetDuration(self): return self.attrTuple[2] # 持续时间, 0为不限制 DWORD
    def GetNotifyInfo(self): return self.attrTuple[3] # 广播提示信息 dict
# 日常活动表
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 DWORD
    def GetOpenTimeDict(self): return self.attrTuple[1] # 开启时间 dict
    def GetDuration(self): return self.attrTuple[2] # 持续时间, 0为不限制 DWORD
    def GetNotifyInfo(self): return self.attrTuple[3] # 广播提示信息 dict
# 日常活动表定制表
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 DWORD
    def GetOpenServerWeek(self): return self.attrTuple[1] # 开服是周几 BYTE
    def GetOpenServerDay(self): return self.attrTuple[2] # 开服第几天 DWORD
    def GetDailyID(self): return self.attrTuple[3] # 日常活动ID BYTE
    def GetOpenTimeList(self): return self.attrTuple[4] # 开启时间列表 list
    def GetDuration(self): return self.attrTuple[5] # 持续时间, 0为不限制 DWORD
    def GetNotifyInfo(self): return self.attrTuple[6] # 广播提示信息 dict
# 日常活动表定制表合服
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 DWORD
    def GetMixServerDay(self): return self.attrTuple[1] # 合服第几天 DWORD
    def GetDailyID(self): return self.attrTuple[2] # 日常活动ID BYTE
    def GetOpenTimeList(self): return self.attrTuple[3] # 开启时间列表 list
    def GetDuration(self): return self.attrTuple[4] # 持续时间, 0为不限制 DWORD
    def GetNotifyInfo(self): return self.attrTuple[5] # 广播提示信息 dict
# 副本状态时间表
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 DWORD
    def GetDataMapID(self): return self.attrTuple[1] # 所属的玩法数据地图ID DWORD
    def GetStartWeekday(self): return self.attrTuple[2] # 开始星期 BYTE
    def GetStartHour(self): return self.attrTuple[3] # 开始时 BYTE
    def GetStartMinute(self): return self.attrTuple[4] # 开始分 BYTE
    def GetEndHour(self): return self.attrTuple[5] # 结束时 BYTE
    def GetEndMinute(self): return self.attrTuple[6] # 结束分 BYTE
    def GetCanEnter(self): return self.attrTuple[7] # 是否可进入副本 BYTE
    def GetStateValue(self): return self.attrTuple[8] # ״ֵ̬ BYTE
    def GetNotifyInfoDict(self): return self.attrTuple[9] # 广播提示信息 dict
# 副本状态时间定制表
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 DWORD
    def GetOpenServerWeek(self): return self.attrTuple[1] # 开服是周几 BYTE
    def GetOpenServerDay(self): return self.attrTuple[2] # 开服第几天 DWORD
    def GetDataMapID(self): return self.attrTuple[3] # 所属的玩法数据地图ID DWORD
    def GetStartHour(self): return self.attrTuple[4] # 开始时 BYTE
    def GetStartMinute(self): return self.attrTuple[5] # 开始分 BYTE
    def GetEndHour(self): return self.attrTuple[6] # 结束时 BYTE
    def GetEndMinute(self): return self.attrTuple[7] # 结束分 BYTE
    def GetCanEnter(self): return self.attrTuple[8] # 是否可进入副本 BYTE
    def GetStateValue(self): return self.attrTuple[9] # ״ֵ̬ BYTE
    def GetNotifyInfoDict(self): return self.attrTuple[10] # 广播提示信息 dict
# 副本状态时间定制表合服
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 DWORD
    def GetMixServerDay(self): return self.attrTuple[1] # 合服第几天 DWORD
    def GetDataMapID(self): return self.attrTuple[2] # 所属的玩法数据地图ID DWORD
    def GetStartHour(self): return self.attrTuple[3] # 开始时 BYTE
    def GetStartMinute(self): return self.attrTuple[4] # 开始分 BYTE
    def GetEndHour(self): return self.attrTuple[5] # 结束时 BYTE
    def GetEndMinute(self): return self.attrTuple[6] # 结束分 BYTE
    def GetCanEnter(self): return self.attrTuple[7] # 是否可进入副本 BYTE
    def GetStateValue(self): return self.attrTuple[8] # ״ֵ̬ BYTE
    def GetNotifyInfoDict(self): return self.attrTuple[9] # 广播提示信息 dict
# 副本总表
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 DWORD
    def GetHelpPoint(self): return self.attrTuple[1] # 助战仙缘币(0代表不可助战) WORD
# 副本功能线路表
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 DWORD
    def GetLineID(self): return self.attrTuple[1] # 功能线路ID BYTE
    def GetMapID(self): return self.attrTuple[2] # 场景地图ID DWORD
# 副本助战表
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 DWORD
    def GetLineID(self): return self.attrTuple[1] # 功能线路ID BYTE
    def GetFightPowerMin(self): return self.attrTuple[2] # 助战最低战力,也是副本战力 DWORD
    def GetFightPowerMax(self): return self.attrTuple[3] # 助战最高战力,0为不限制 DWORD
    def GetLVLimit(self): return self.attrTuple[4] # 助战等级限制, 0为不限制 WORD
    def GetDayFreeHelpCount(self): return self.attrTuple[5] # 每日免费助战次数,[每日免费助战次数, 是否所有层通用] list
# 功能队伍设定表
class IPY_FuncTeamSet():
    def __init__(self):
        self.attrTuple = None
        return
    def GetFuncMapID(self): return self.attrTuple[0] # 功能地图ID DWORD
    def GetNeedName(self): return self.attrTuple[1] # 需要队伍名 BYTE
    def GetMemberMax(self): return self.attrTuple[2] # 最大人员数 BYTE
    def GetApplyMax(self): return self.attrTuple[3] # 最大接受申请数 BYTE
    def GetReqApplyMax(self): return self.attrTuple[4] # 最大申请数 BYTE
    def GetSortType(self): return self.attrTuple[5] # 队伍列表排序方案 BYTE
    def GetSortReverse(self): return self.attrTuple[6] # 是否倒序 BYTE
    def GetOPLimitInAct(self): return self.attrTuple[7] # 活动期间限制队伍操作 BYTE
# 地图表
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 DWORD
    def GetMapName(self): return self.attrTuple[1] # 地图名 char
    def GetMapFBType(self): return self.attrTuple[2] #  地图类型 BYTE
    def GetTeamLimit(self): return self.attrTuple[3] #  队伍限制类型;0不限,1-不可变更,2-不可存在队伍 BYTE
# 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 DWORD
    def GetMapID(self): return self.attrTuple[1] # 地图ID DWORD
    def GetRefreshTime(self): return self.attrTuple[2] # 刷新时间 参数 onlineCnt char
    def GetLVLimit(self): return self.attrTuple[3] # 在线人物等级范围 list
    def GetDiffPer(self): return self.attrTuple[4] # 百分比与之前的误差小于X%,则更新实时在线数量 BYTE
    def GetNoUpdataCnt(self): return self.attrTuple[5] # 多少次未更新实时在线数量字段时强制更新 BYTE
    def GetStoneNPCID(self): return self.attrTuple[6] # 墓碑NPCID DWORD
    def GetRebornPreNotifyTime(self): return self.attrTuple[7] # 复活前X秒通知 WORD
    def GetSourceName(self): return self.attrTuple[8] # BOSS来源 char
    def GetCanAssist(self): return self.attrTuple[9] # 是否可协助 BYTE
# 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 DWORD
    def GetServerFirstKillPlayerAward(self): return self.attrTuple[1] #  全服首杀玩家奖励 [[物品ID,个数,是否拍品], ...] list
# 全民冲榜排行奖励表
class IPY_OSCBillRankAward():
    def __init__(self):
        self.attrTuple = None
        return
    def GetOSCBillType(self): return self.attrTuple[0] # 冲榜类型 BYTE
    def GetRankA(self): return self.attrTuple[1] # 排名A BYTE
    def GetRankB(self): return self.attrTuple[2] # 至排名B BYTE
    def GetRankAward(self): return self.attrTuple[3] # 排名奖励 {"职业":[[物品ID,个数],...], ...} dict
# 宴会题库表
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 DWORD
    def GetAnswer(self): return self.attrTuple[1] # 答案 char
# 仙盟红包表
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 WORD
    def GetGetType(self): return self.attrTuple[1] # 获得途径 WORD
    def GetMoneyNum(self): return self.attrTuple[2] # 红包额度 WORD
    def GetMoneyType(self): return self.attrTuple[3] # 金钱类型 BYTE
    def GetPacketCnt(self): return self.attrTuple[4] # 红包个数 BYTE
    def GetLeaderOwn(self): return self.attrTuple[5] # 是否归属盟主 BYTE
    def GetPacketOpenTime(self): return self.attrTuple[6] # 发放红包时间yyyy-MM-dd hh:mm char
    def GetValidMinutes(self): return self.attrTuple[7] # 红包有效时长(分) BYTE
# 节日红包时间表
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 DWORD
    def GetActMark(self): return self.attrTuple[1] # 活动组标记 char
    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表 list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetIsDayReset(self): return self.attrTuple[6] # 是否每天重置 BYTE
    def GetResetType(self): return self.attrTuple[7] # 重置类型,0-0点重置;1-5点重置 BYTE
    def GetRedPacketIDList(self): return self.attrTuple[8] # 每日对应红包ID列表[[第一天红包ID列表], ...] list
    def GetLVLimit(self): return self.attrTuple[9] # 限制等级 WORD
# 节日登录奖励时间表
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 DWORD
    def GetActMark(self): return self.attrTuple[1] # 活动组标记 char
    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表 list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
# 节日祝福时间表
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 DWORD
    def GetActMark(self): return self.attrTuple[1] # 活动组标记 char
    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表 list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetResetType(self): return self.attrTuple[6] # 重置类型,0-0点重置;1-5点重置 BYTE
    def GetNotifyInfoStart(self): return self.attrTuple[7] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[8] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[9] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
# 节日游历时间表
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 DWORD
    def GetActMark(self): return self.attrTuple[1] # 活动组标记 char
    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表 list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetResetType(self): return self.attrTuple[6] # 重置类型,0-0点重置;1-5点重置 BYTE
    def GetNotifyInfoStart(self): return self.attrTuple[7] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[8] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[9] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
# 等级开启功能
class IPY_FuncOpenLV():
    
    def __init__(self):
        self.FuncId = 0
        self.LimitLV = 0
        self.LimitMagicWeapon = 0
        self.LimiRealmLV = 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 GetFuncId(self): return self.attrTuple[0] # 功能标识 DWORD
    def GetLimitLV(self): return self.attrTuple[1] # 开启等级 DWORD
    def GetLimitMagicWeapon(self): return self.attrTuple[2] # 需要解锁法宝ID DWORD
    def GetLimiRealmLV(self): return self.attrTuple[3] # 需要境界等级 WORD
    def GetLimitVIPLV(self): return self.attrTuple[4] # 需要VIP等级 BYTE
# 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] # DWORD
    def GetNPCName(self): return self.attrTuple[1] # char
    def GetLV(self): return self.attrTuple[2] # WORD
# 玩家等级表
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] # 玩家等级 WORD
    def GetReFightPower(self): return self.attrTuple[1] # 战斗力 DWORD
# 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 DWORD
    def GetVIP0(self): return self.attrTuple[1] # VIP0对应的特权值 DWORD
    def GetVIP1(self): return self.attrTuple[2] # VIP1对应的特权值 DWORD
    def GetVIP2(self): return self.attrTuple[3] # VIP2对应的特权值 DWORD
    def GetVIP3(self): return self.attrTuple[4] # VIP3对应的特权值 DWORD
    def GetVIP4(self): return self.attrTuple[5] # VIP4对应的特权值 DWORD
    def GetVIP5(self): return self.attrTuple[6] # VIP5对应的特权值 DWORD
    def GetVIP6(self): return self.attrTuple[7] # VIP6对应的特权值 DWORD
    def GetVIP7(self): return self.attrTuple[8] # VIP7对应的特权值 DWORD
    def GetVIP8(self): return self.attrTuple[9] # VIP8对应的特权值 DWORD
    def GetVIP9(self): return self.attrTuple[10] # VIP9对应的特权值 DWORD
    def GetVIP10(self): return self.attrTuple[11] # VIP10对应的特权值 DWORD
    def GetVIP11(self): return self.attrTuple[12] # VIP11对应的特权值 DWORD
    def GetVIP12(self): return self.attrTuple[13] # VIP12对应的特权值 DWORD
    def GetVIP13(self): return self.attrTuple[14] # VIP13对应的特权值 DWORD
    def GetVIP14(self): return self.attrTuple[15] # VIP14对应的特权值 DWORD
    def GetVIP15(self): return self.attrTuple[16] # VIP15对应的特权值 DWORD
# 限时特惠表
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 DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetStartTimeList(self): return self.attrTuple[6] # 开启时间列表, 支持多个时段 list
    def GetEndTimeList(self): return self.attrTuple[7] # 结束时间列表, 支持多个时段 list
    def GetAdvanceMinutes(self): return self.attrTuple[8] # 前端提前X分钟展示活动 WORD
    def GetNotifyInfoStart(self): return self.attrTuple[9] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[10] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[11] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
    def GetLVLimit(self): return self.attrTuple[12] # 限制等级 WORD
    def GetIsDayReset(self): return self.attrTuple[13] # 是否每天重置 BYTE
# 限时礼包表
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 DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetStartTimeList(self): return self.attrTuple[6] # 开启时间列表, 支持多个时段 list
    def GetEndTimeList(self): return self.attrTuple[7] # 结束时间列表, 支持多个时段 list
    def GetAdvanceMinutes(self): return self.attrTuple[8] # 前端提前X分钟展示活动 WORD
    def GetNotifyInfoStart(self): return self.attrTuple[9] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[10] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[11] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
    def GetLimitWorldLV(self): return self.attrTuple[12] # 限制开启的最低世界等级 WORD
    def GetLVLimit(self): return self.attrTuple[13] # 限制等级 WORD
    def GetIsDayReset(self): return self.attrTuple[14] # 是否每天重置 BYTE
# 每日礼包表
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 DWORD
    def GetActMark(self): return self.attrTuple[1] # 活动组标记 char
    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表 list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
# 双倍经验活动表
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 DWORD
    def GetServerGroupIDList(self): return self.attrTuple[1] # 服务器组ID列表 list
    def GetServerGroupIDListExcept(self): return self.attrTuple[2] # 排除的服务器组ID列表 list
    def GetStartDate(self): return self.attrTuple[3] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[4] # 结束日期 char
    def GetStartTimeList(self): return self.attrTuple[5] # 开启时间列表, 支持多个时段 list
    def GetEndTimeList(self): return self.attrTuple[6] # 结束时间列表, 支持多个时段 list
    def GetNotifyInfoStart(self): return self.attrTuple[7] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[8] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[9] # 全服提示信息 - 循环广播[间隔分钟, 广播key, [可选参数1, ...]] list
    def GetLVLimit(self): return self.attrTuple[10] # 限制等级 WORD
    def GetAddExpRate(self): return self.attrTuple[11] # 经验倍率加成,万分率 DWORD
# 消费返利活动表
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 DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置 BYTE
# 买一送多活动表
class IPY_ActBuyOne():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置 BYTE
# 仙盟充值协助活动表
class IPY_ActFamilyCTGAssist():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetIsDayReset(self): return self.attrTuple[6] # 是否每天重置 BYTE
# 集字活动时间表
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 DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
# 垃圾分类活动时间表
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 DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
    def GetResetType(self): return self.attrTuple[9] # 重置类型,0-0点重置;1-5点重置 BYTE
# Boss历练活动表
class IPY_ActBossTrial():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetJoinStartTime(self): return self.attrTuple[6] # 参与开始时间点 char
    def GetJoinEndTime(self): return self.attrTuple[7] # 参与结束时间点 char
    def GetNotifyInfoStart(self): return self.attrTuple[8] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[9] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[10] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
    def GetIsDayReset(self): return self.attrTuple[11] # 是否每天重置 BYTE
    def GetResetType(self): return self.attrTuple[12] # 重置类型,0-0点重置;1-5点重置 BYTE
    def GetTemplateIDList(self): return self.attrTuple[13] # 榜单模板编号列表 list
    def GetFamilyTemplateIDList(self): return self.attrTuple[14] # 仙盟榜单模板编号列表 list
# Boss历练榜单模版表
class IPY_ActBossTrialTemplate():
    def __init__(self):
        self.attrTuple = None
        return
    def GetTemplateID(self): return self.attrTuple[0] # 模板编号 DWORD
    def GetRank(self): return self.attrTuple[1] # 名次 BYTE
    def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] 仙盟榜时为盟主奖励,如果没有配置,则统一取成员奖励 list
    def GetMemAwardItemList(self): return self.attrTuple[3] # 仙盟榜成员奖励物品信息列表[[物品ID,个数,是否拍品], ...] list
    def GetNeedScore(self): return self.attrTuple[4] # 上榜所需积分 DWORD
    def GetScoreAwardEx(self): return self.attrTuple[5] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict
    def GetXiangongID(self): return self.attrTuple[6] # 晋升仙宫ID WORD
# Boss历练跨服活动表
class IPY_CrossActBossTrial():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetActGroupName(self): return self.attrTuple[1] # 活动组名(同组活动的名字需相同) char
    def GetZoneID(self): return self.attrTuple[2] # 组内分组编号 BYTE
    def GetServerIDRangeList(self): return self.attrTuple[3] # 活动的账号服务器ID范围列表 [[serverIDA, serverIDB], ...] list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetJoinStartTime(self): return self.attrTuple[6] # 参与开始时间点 char
    def GetJoinEndTime(self): return self.attrTuple[7] # 参与结束时间点 char
    def GetNotifyInfoStart(self): return self.attrTuple[8] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[9] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[10] # 全服提示信息 - 循环广播[循环分钟, 广播key, [广播参数列表可选]] list
    def GetIsDayReset(self): return self.attrTuple[11] # 是否每天重置 BYTE
    def GetResetType(self): return self.attrTuple[12] # 重置类型,0-0点重置;1-5点重置 BYTE
    def GetPersonalTemplateID(self): return self.attrTuple[13] # 个人排行模板编号 WORD
    def GetFamilyTemplateID(self): return self.attrTuple[14] # 仙盟排行模板编号 WORD
# 骑宠养成活动时间表
class IPY_ActHorsePetTrain():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetJoinStartTime(self): return self.attrTuple[6] # 参与开始时间点 char
    def GetJoinEndTime(self): return self.attrTuple[7] # 参与结束时间点 char
    def GetPersonalTemplateID(self): return self.attrTuple[8] # 个人排行模板编号 WORD
# 骑宠养成活动跨服表
class IPY_CrossActHorsePetTrain():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetActGroupName(self): return self.attrTuple[1] # 活动组名(同组活动的名字需相同) char
    def GetZoneID(self): return self.attrTuple[2] # 组内分组编号 BYTE
    def GetServerIDRangeList(self): return self.attrTuple[3] # 活动的账号服务器ID范围列表 [[serverIDA, serverIDB], ...] list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetJoinStartTime(self): return self.attrTuple[6] # 参与开始时间点 char
    def GetJoinEndTime(self): return self.attrTuple[7] # 参与结束时间点 char
    def GetPersonalTemplateID(self): return self.attrTuple[8] # 个人排行模板编号 WORD
# 骑宠养成榜单模版表
class IPY_ActHorsePetTrainBillTemp():
    def __init__(self):
        self.attrTuple = None
        return
    def GetTemplateID(self): return self.attrTuple[0] # 模板编号 DWORD
    def GetRank(self): return self.attrTuple[1] # 名次 BYTE
    def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
    def GetNeedScore(self): return self.attrTuple[3] # 上榜所需积分 DWORD
    def GetScoreAwardEx(self): return self.attrTuple[4] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict
    def GetXiangongID(self): return self.attrTuple[5] # 晋升仙宫ID WORD
# 古宝养成活动时间表
class IPY_ActGubao():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetJoinStartTime(self): return self.attrTuple[6] # 参与开始时间点 char
    def GetJoinEndTime(self): return self.attrTuple[7] # 参与结束时间点 char
    def GetPersonalTemplateID(self): return self.attrTuple[8] # 个人排行模板编号 WORD
# 古宝养成活动跨服表
class IPY_CrossActGubao():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetActGroupName(self): return self.attrTuple[1] # 活动组名(同组活动的名字需相同) char
    def GetZoneID(self): return self.attrTuple[2] # 组内分组编号 BYTE
    def GetServerIDRangeList(self): return self.attrTuple[3] # 活动的账号服务器ID范围列表 [[serverIDA, serverIDB], ...] list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetJoinStartTime(self): return self.attrTuple[6] # 参与开始时间点 char
    def GetJoinEndTime(self): return self.attrTuple[7] # 参与结束时间点 char
    def GetPersonalTemplateID(self): return self.attrTuple[8] # 个人排行模板编号 WORD
# 古宝养成榜单模版表
class IPY_ActGubaoBillTemp():
    def __init__(self):
        self.attrTuple = None
        return
    def GetTemplateID(self): return self.attrTuple[0] # 模板编号 DWORD
    def GetRank(self): return self.attrTuple[1] # 名次 BYTE
    def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
    def GetNeedScore(self): return self.attrTuple[3] # 上榜所需积分 DWORD
    def GetScoreAwardEx(self): return self.attrTuple[4] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict
    def GetXiangongID(self): return self.attrTuple[5] # 晋升仙宫ID WORD
# 炼器活动跨服表
class IPY_CrossActLianqi():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetActGroupName(self): return self.attrTuple[1] # 活动组名(同组活动的名字需相同) char
    def GetZoneID(self): return self.attrTuple[2] # 组内分组编号 BYTE
    def GetServerIDRangeList(self): return self.attrTuple[3] # 活动的账号服务器ID范围列表 [[serverIDA, serverIDB], ...] list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetJoinStartTime(self): return self.attrTuple[6] # 参与开始时间点 char
    def GetJoinEndTime(self): return self.attrTuple[7] # 参与结束时间点 char
    def GetLVLimit(self): return self.attrTuple[8] # 限制等级 WORD
    def GetPersonalTemplateID(self): return self.attrTuple[9] # 个人排行模板编号 WORD
# 炼器榜单模版表
class IPY_ActLianqiBillTemp():
    def __init__(self):
        self.attrTuple = None
        return
    def GetTemplateID(self): return self.attrTuple[0] # 模板编号 DWORD
    def GetRank(self): return self.attrTuple[1] # 名次 BYTE
    def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
    def GetNeedScore(self): return self.attrTuple[3] # 上榜所需积分 DWORD
    def GetScoreAwardEx(self): return self.attrTuple[4] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict
# 活动时间流程表
class IPY_ActTimeFlow():
    def __init__(self):
        self.attrTuple = None
        return
    def GetFlowID(self): return self.attrTuple[0] # DWORD
    def GetStartDay(self): return self.attrTuple[1] # 开始天 BYTE
    def GetStartHour(self): return self.attrTuple[2] # 开始时 BYTE
    def GetStartMinute(self): return self.attrTuple[3] # 开始分 BYTE
    def GetEndDay(self): return self.attrTuple[4] # 结束天 BYTE
    def GetEndHour(self): return self.attrTuple[5] # 结束时 BYTE
    def GetEndMinute(self): return self.attrTuple[6] # 结束分 BYTE
    def GetStateValue(self): return self.attrTuple[7] # ״ֵ̬ WORD
# 活动榜单奖励模版表
class IPY_ActBillboardAwardTemp():
    def __init__(self):
        self.attrTuple = None
        return
    def GetTemplateID(self): return self.attrTuple[0] # 模板编号 DWORD
    def GetRank(self): return self.attrTuple[1] # 名次 BYTE
    def GetNeedValue(self): return self.attrTuple[2] # 上榜所需值 DWORD
    def GetValueAwardEx(self): return self.attrTuple[3] # 达标值额外奖励 {值:[[物品ID,个数,是否拍品], ...], ...} dict
    def GetAwardItemList(self): return self.attrTuple[4] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
    def GetLeaderAwardItemList(self): return self.attrTuple[5] # 仙盟榜盟主奖励物品信息列表[[物品ID,个数,是否拍品], ...] list
    def GetEliteAwardItemList(self): return self.attrTuple[6] # 仙盟榜精英奖励物品信息列表[[物品ID,个数,是否拍品], ...] list
# 活动竞猜表
class IPY_ActGuess():
    def __init__(self):
        self.attrTuple = None
        return
    def GetTemplateID(self): return self.attrTuple[0] # 模板编号 DWORD
    def GetAwardID(self): return self.attrTuple[1] # 奖励ID DWORD
    def GetRightRankList(self): return self.attrTuple[2] # 猜对名次列表 list
    def GetAwardItemList(self): return self.attrTuple[3] # 对应奖励列表 [[物品ID,个数,是否拍品], ...] list
# 仙盟攻城战活动表
class IPY_CrossActFamilyGCZ():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetActGroupName(self): return self.attrTuple[1] # 活动组名(同组活动的名字需相同) char
    def GetZoneID(self): return self.attrTuple[2] # 组内分组编号 BYTE
    def GetServerIDRangeList(self): return self.attrTuple[3] # 活动的服务器ID范围列表 [[serverIDA, serverIDB], ...] list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetJoinFamilyCnt(self): return self.attrTuple[6] # 参与仙盟数 BYTE
    def GetActFlowID(self): return self.attrTuple[7] # 活动流程ID,对应H.活动时间流程表 WORD
    def GetGuessTemplateID(self): return self.attrTuple[8] # 竞猜奖励模版,对应H.活动竞猜表 WORD
    def GetPersonalTemplateID(self): return self.attrTuple[9] # 个人伤害排行奖励模版,对应H.活动榜单奖励模版表 WORD
    def GetFamilyTemplateID(self): return self.attrTuple[10] # 仙盟积分排行奖励模版,对应H.活动榜单奖励模版表 WORD
# 仙盟攻城战大本营等级表
class IPY_CrossActFamilyGCZCampLV():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCampLV(self): return self.attrTuple[0] # 大本营等级 DWORD
    def GetLVUPNeedExp(self): return self.attrTuple[1] # 升下一级所需经验 DWORD
    def GetAddHPPer(self): return self.attrTuple[2] # 生命累计总加成百分比 DWORD
# 仙匣秘境活动时间表
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 DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetJoinStartTime(self): return self.attrTuple[6] # 参与开始时间点 char
    def GetJoinEndTime(self): return self.attrTuple[7] # 参与结束时间点 char
    def GetIsDayReset(self): return self.attrTuple[8] # 是否每天重置 BYTE
    def GetPersonalTemplateID(self): return self.attrTuple[9] # 个人排行模板编号 WORD
# 仙匣秘境活动跨服表
class IPY_CrossActXianXiaMJ():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetActGroupName(self): return self.attrTuple[1] # 活动组名(同组活动的名字需相同) char
    def GetZoneID(self): return self.attrTuple[2] # 组内分组编号 BYTE
    def GetServerIDRangeList(self): return self.attrTuple[3] # 活动的账号服务器ID范围列表 [[serverIDA, serverIDB], ...] list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetJoinStartTime(self): return self.attrTuple[6] # 参与开始时间点 char
    def GetJoinEndTime(self): return self.attrTuple[7] # 参与结束时间点 char
    def GetIsDayReset(self): return self.attrTuple[8] # 是否每天重置 BYTE
    def GetPersonalTemplateID(self): return self.attrTuple[9] # 个人排行模板编号 WORD
# 仙匣秘境榜单模版表
class IPY_ActXianXiaMJBillTemp():
    def __init__(self):
        self.attrTuple = None
        return
    def GetTemplateID(self): return self.attrTuple[0] # 模板编号 DWORD
    def GetRank(self): return self.attrTuple[1] # 名次 BYTE
    def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
    def GetNeedScore(self): return self.attrTuple[3] # 上榜所需积分 DWORD
    def GetScoreAwardEx(self): return self.attrTuple[4] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict
    def GetXiangongID(self): return self.attrTuple[5] # 晋升仙宫ID WORD
# 天帝礼包活动时间表
class IPY_ActGodGift():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置 BYTE
# 骑宠盛宴活动
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 DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetStartTimeList(self): return self.attrTuple[6] # 开启时间列表, 支持多个时段 list
    def GetEndTimeList(self): return self.attrTuple[7] # 结束时间列表, 支持多个时段 list
    def GetNotifyInfoStart(self): return self.attrTuple[8] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[9] # 全服提示信息 - 相对结束时间 dict
    def GetIsDayReset(self): return self.attrTuple[10] # 是否每天重置 BYTE
# 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 DWORD
    def GetServerGroupIDList(self): return self.attrTuple[1] # 服务器组ID列表 list
    def GetServerGroupIDListExcept(self): return self.attrTuple[2] # 排除的服务器组ID列表 list
    def GetStartDate(self): return self.attrTuple[3] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[4] # 结束日期 char
    def GetResetType(self): return self.attrTuple[5] # 重置类型,0-0点重置;1-5点重置 BYTE
    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict
    def GetLVLimit(self): return self.attrTuple[8] # 限制等级 WORD
    def GetTemplateID(self): return self.attrTuple[9] # 模板编号 BYTE
# 仙界盛典活动时间表
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 DWORD
    def GetActMark(self): return self.attrTuple[1] # 活动组标记 char
    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表 list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetResetType(self): return self.attrTuple[6] # 重置类型,0-0点重置;1-5点重置;2-5点开始0点结束 BYTE
    def GetNotifyInfoStart(self): return self.attrTuple[7] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[8] # 全服提示信息 - 相对结束时间 dict
    def GetLVLimit(self): return self.attrTuple[9] # 限制等级 WORD
# 仙界盛典-绝版降临表
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] # 世界等级档 BYTE
    def GetRank(self): return self.attrTuple[1] # 排名 DWORD
    def GetAward(self): return self.attrTuple[2] # 奖励 {"职业":[[物品ID,个数,是否绑定],...], ...} dict
# 多倍修行点活动时间表
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 DWORD
    def GetActMark(self): return self.attrTuple[1] # 活动组标记 char
    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表 list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetResetType(self): return self.attrTuple[6] # 重置类型,0-0点重置;1-5点重置 BYTE
    def GetNotifyInfoStart(self): return self.attrTuple[7] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[8] # 全服提示信息 - 相对结束时间 dict
    def GetMultiple(self): return self.attrTuple[9] # 倍数 WORD
    def GetLVLimit(self): return self.attrTuple[10] # 限制等级 WORD
    def GetPointLimit(self): return self.attrTuple[11] # 限制额外修行点 DWORD
# 限时抢购表
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 DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetStartTimeList(self): return self.attrTuple[6] # 开启时间列表, 支持多个时段 list
    def GetEndTimeList(self): return self.attrTuple[7] # 结束时间列表, 支持多个时段 list
    def GetAdvanceMinutes(self): return self.attrTuple[8] # 前端提前X分钟展示活动 WORD
    def GetNotifyInfoStart(self): return self.attrTuple[9] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[10] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[11] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
    def GetLVLimit(self): return self.attrTuple[12] # 限制等级 WORD
    def GetIsDayReset(self): return self.attrTuple[13] # 是否每天重置 BYTE
    def GetShopTypeList(self): return self.attrTuple[14] # 商店类型列表 dict
# 商城表
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 DWORD
    def GetShopType(self): return self.attrTuple[1] # 商店类型 DWORD
    def GetRefreshType(self): return self.attrTuple[2] # 刷新类型 0-不重置,1-onWeek0点,2-onWeek5点,3-OnDay0点,4-OnDay5点 BYTE
    def GetServerLimitCnt(self): return self.attrTuple[3] # 全服限制数量 DWORD
# 许愿池活动时间表
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 DWORD
    def GetServerGroupIDList(self): return self.attrTuple[1] # 服务器组ID列表 list
    def GetServerGroupIDListExcept(self): return self.attrTuple[2] # 排除的服务器组ID列表 list
    def GetStartDate(self): return self.attrTuple[3] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[4] # 结束日期 char
    def GetIsDayReset(self): return self.attrTuple[5] # 是否每天重置 BYTE
    def GetResetType(self): return self.attrTuple[6] # 重置类型,0-0点重置;1-5点重置 BYTE
    def GetNotifyInfoStart(self): return self.attrTuple[7] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[8] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[9] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
    def GetLVLimit(self): return self.attrTuple[10] # 限制等级 WORD
# 充值返利活动表
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 DWORD
    def GetActMark(self): return self.attrTuple[1] # 活动组标记 char
    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表 list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置 BYTE
# 累计充值返利仙玉活动表
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 DWORD
    def GetActMark(self): return self.attrTuple[1] # 活动组标记 char
    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表 list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置 BYTE
# 成长必买活动表
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 DWORD
    def GetActMark(self): return self.attrTuple[1] # 活动组标记 char
    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表 list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
# 单笔累充活动表
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 DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置 BYTE
# 转盘活动表
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 DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetIsDayReset(self): return self.attrTuple[6] # 是否每天重置 BYTE
# 多日连充活动表
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 DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
# 累计充值活动表
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 DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置 BYTE
# 跨服分区表通用
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] # 跨服分区名 char
    def GetZoneID(self): return self.attrTuple[1] # 赛区ID BYTE
    def GetServerGroupIDList(self): return self.attrTuple[2] # 赛区服务器组ID列表 list
# 跨服分区表古神战场
class IPY_CrossZoneBattlefield():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCrossZoneName(self): return self.attrTuple[0] # 跨服分区名 char
    def GetZoneID(self): return self.attrTuple[1] # 赛区ID BYTE
    def GetServerGroupIDList(self): return self.attrTuple[2] # 赛区服务器组ID列表 list
# 跨服分区表竞技场
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] # 跨服分区名 char
    def GetZoneID(self): return self.attrTuple[1] # 赛区ID BYTE
    def GetZoneName(self): return self.attrTuple[2] # 赛区名字 char
    def GetServerGroupIDList(self): return self.attrTuple[3] # 赛区服务器组ID列表 list
# 跨服排位赛流程表
class IPY_ChampionshipTime():
    def __init__(self):
        self.attrTuple = None
        return
    def GetID(self): return self.attrTuple[0] # DWORD
    def GetStartDay(self): return self.attrTuple[1] # 开始天 BYTE
    def GetStartHour(self): return self.attrTuple[2] # 开始时 BYTE
    def GetStartMinute(self): return self.attrTuple[3] # 开始分 BYTE
    def GetEndDay(self): return self.attrTuple[4] # 结束天 BYTE
    def GetEndHour(self): return self.attrTuple[5] # 结束时 BYTE
    def GetEndMinute(self): return self.attrTuple[6] # 结束分 BYTE
    def GetStateValue(self): return self.attrTuple[7] # ״ֵ̬ WORD
    def GetNotifyInfo(self): return self.attrTuple[8] # 广播提示信息 dict
# 跨服排位奖励表
class IPY_ChampionshipRank():
    def __init__(self):
        self.attrTuple = None
        return
    def GetRank(self): return self.attrTuple[0] #  名次 BYTE
    def GetRankAwardItemList(self): return self.attrTuple[1] # 名次奖励物品列表 list
    def GetMainOfficialID(self): return self.attrTuple[2] # 主官职ID WORD
    def GetXiangongID(self): return self.attrTuple[3] # 晋升仙宫ID WORD
# 跨服排位官职表
class IPY_ChampionshipOfficial():
    def __init__(self):
        self.attrTuple = None
        return
    def GetOfficialID(self): return self.attrTuple[0] #  官职ID WORD
    def GetJuniorOfficialIDList(self): return self.attrTuple[1] # 下级官职ID列表 list
    def GetDailyAwardItemList(self): return self.attrTuple[2] # 官职每日邮件奖励物品列表 list
    def GetCanBeReplace(self): return self.attrTuple[3] # 是否可被挑战替换 BYTE
# 跨服竞技场赛季表
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] # 跨服分区名 char
    def GetZoneID(self): return self.attrTuple[1] # 赛区ID BYTE
    def GetSeasonID(self): return self.attrTuple[2] # 赛季ID WORD
    def GetStartDate(self): return self.attrTuple[3] # 开始日期   yyyy-MM-dd char
    def GetEndDate(self): return self.attrTuple[4] # 结束日期   yyyy-MM-dd char
    def GetEndTime(self): return self.attrTuple[5] # 结算时间   hh:mm char
# 跨服竞技场段位表
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] # 段位等级 BYTE
    def GetLVUpScore(self): return self.attrTuple[1] # 升段位所需积分 WORD
    def GetMatchRobotRate(self): return self.attrTuple[2] # 匹配机器人基础概率,百分率 BYTE
    def GetMatchRobotRateEx(self): return self.attrTuple[3] # 匹配机器人失败次数附加概率,百分率 BYTE
# 跨服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 BYTE
    def GetMapID(self): return self.attrTuple[1] # 场景地图ID DWORD
    def GetDataMapID(self): return self.attrTuple[2] # 数据地图ID DWORD
    def GetCopyMapID(self): return self.attrTuple[3] # 虚拟线路ID BYTE
# 跨服Boss魔化之地分区地图表
class IPY_CrossDemonLandZoneMap():
    def __init__(self):
        self.attrTuple = None
        return
    def GetZoneID(self): return self.attrTuple[0] # 分区ID BYTE
    def GetMapID(self): return self.attrTuple[1] # 场景地图ID DWORD
    def GetDataMapID(self): return self.attrTuple[2] # 数据地图ID DWORD
    def GetCopyMapID(self): return self.attrTuple[3] # 虚拟线路ID BYTE
# 跨服分区地图逐鹿万界
class IPY_CrossFamilyFlagwarZoneMap():
    def __init__(self):
        self.attrTuple = None
        return
    def GetZoneID(self): return self.attrTuple[0] # 分区ID BYTE
    def GetMapID(self): return self.attrTuple[1] # 场景地图ID DWORD
    def GetDataMapID(self): return self.attrTuple[2] # 数据地图ID DWORD
    def GetCopyMapID(self): return self.attrTuple[3] # 虚拟线路ID BYTE
# 周狂欢活动时间表
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 DWORD
    def GetActMark(self): return self.attrTuple[1] # 活动组标记 char
    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表 list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetAdvanceMinutes(self): return self.attrTuple[6] # 前端提前X分钟展示活动 WORD
    def GetIsDayReset(self): return self.attrTuple[7] # 是否每天重置 BYTE
    def GetResetType(self): return self.attrTuple[8] # 重置类型,0-0点重置;1-5点重置 BYTE
    def GetNotifyInfoStart(self): return self.attrTuple[9] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[10] # 全服提示信息 - 相对结束时间 dict
    def GetLVLimit(self): return self.attrTuple[11] # 限制等级 WORD
# 运势活动时间表
class IPY_ActYunshi():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetResetType(self): return self.attrTuple[6] # 重置类型,0-0点重置;1-5点重置 BYTE
# 轮回殿活动时间表
class IPY_ActLunhuidian():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetResetType(self): return self.attrTuple[6] # 重置类型,0-0点重置;1-5点重置 BYTE
# 购买次数礼包活动时间表
class IPY_ActBuyCountGift():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetIsDayReset(self): return self.attrTuple[6] # 是否每天重置 BYTE
    def GetResetType(self): return self.attrTuple[7] # 重置类型,0-0点重置;1-5点重置 BYTE
# 任务活动时间表
class IPY_ActTask():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetIsDayReset(self): return self.attrTuple[6] # 是否每天重置 BYTE
    def GetResetType(self): return self.attrTuple[7] # 重置类型,0-0点重置;1-5点重置 BYTE
# 登录活动奖励时间表新
class IPY_ActLoginNew():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetPlatformList(self): return self.attrTuple[1] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list
    def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
# 登录奖励时间表
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 DWORD
    def GetActMark(self): return self.attrTuple[1] # 活动组标记 char
    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表 list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetAdvanceMinutes(self): return self.attrTuple[6] # 前端提前X分钟展示活动 WORD
    def GetIsDayReset(self): return self.attrTuple[7] # 是否每天重置 BYTE
    def GetResetType(self): return self.attrTuple[8] # 重置类型,0-0点重置;1-5点重置 BYTE
    def GetNotifyInfoStart(self): return self.attrTuple[9] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[10] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[11] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
    def GetLVLimit(self): return self.attrTuple[12] # 限制等级 WORD
# 节日巡礼活动时间表
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 DWORD
    def GetActMark(self): return self.attrTuple[1] # 活动组标记 char
    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表 list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetAdvanceMinutes(self): return self.attrTuple[6] # 前端提前X分钟展示活动 WORD
    def GetIsDayReset(self): return self.attrTuple[7] # 是否每天重置 BYTE
    def GetResetType(self): return self.attrTuple[8] # 重置类型,0-0点重置;1-5点重置 BYTE
    def GetNotifyInfoStart(self): return self.attrTuple[9] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[10] # 全服提示信息 - 相对结束时间 dict
    def GetLVLimit(self): return self.attrTuple[11] # 限制等级 WORD
# 新仙界盛典活动时间表
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 DWORD
    def GetActMark(self): return self.attrTuple[1] # 活动组标记 char
    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表 list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetResetType(self): return self.attrTuple[6] # 重置类型,0-0点重置;1-5点重置;2-5点开始0点结束 BYTE
    def GetNotifyInfoStart(self): return self.attrTuple[7] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[8] # 全服提示信息 - 相对结束时间 dict
    def GetLVLimit(self): return self.attrTuple[9] # 限制等级 WORD
# 新仙界盛典-绝版降临表
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] # 世界等级档 BYTE
    def GetRank(self): return self.attrTuple[1] # 排名 DWORD
    def GetAward(self): return self.attrTuple[2] # 奖励 {"职业":[[物品ID,个数,是否绑定],...], ...} dict
# 情缘礼物表
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 BYTE
    def GetAddCharmSelf(self): return self.attrTuple[1] # 单个增加自身魅力 float
    def GetAddCharmTag(self): return self.attrTuple[2] # 单个增加对方魅力 float
    def GetAddIntimacy(self): return self.attrTuple[3] # 单个增加双方亲密度 DWORD
    def GetWorldNotifyKey(self): return self.attrTuple[4] # 广播key char
# 情缘提亲表
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 BYTE
    def GetCanBuyCount(self): return self.attrTuple[1] # 可购买次数 BYTE
    def GetIsDayReset(self): return self.attrTuple[2] # 是否每日重置 BYTE
    def GetProsperity(self): return self.attrTuple[3] # 初始繁荣度 DWORD
    def GetCandyTimes(self): return self.attrTuple[4] # 喜糖持续时间秒 WORD
    def GetCandyItemWeightInfo(self): return self.attrTuple[5] # 喜糖物品库权重列表[[权重, 物品ID,个数,是否拍品], ...] list
    def GetCandyNotifyItemInfo(self): return self.attrTuple[6] # 喜糖需要广播的物品ID列表 list
    def GetBrideGiftItemInfo(self): return self.attrTuple[7] # 聘礼物品列表[[物品ID,个数,是否拍品], ...] list
    def GetWorldNotifyKey(self): return self.attrTuple[8] # 广播key char
# 幸运鉴宝活动时间表
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 DWORD
    def GetActMark(self): return self.attrTuple[1] # 活动组标记 char
    def GetPlatformList(self): return self.attrTuple[2] # 活动平台列表["平台A", "平台A", ...],配[]代表所有 list
    def GetServerGroupIDList(self): return self.attrTuple[3] # 服务器ID列表 list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetResetType(self): return self.attrTuple[6] # 重置类型,0-0点重置;1-5点重置 BYTE
    def GetNotifyInfoStart(self): return self.attrTuple[7] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[8] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[9] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
    def GetLVLimit(self): return self.attrTuple[10] # 限制等级 WORD
# 跨服幸运云购表
class IPY_CrossActLuckyCloudBuy():
    
    def __init__(self):
        self.CfgID = 0
        self.ActGroupName = ""
        self.ZoneID = 0
        self.ServerIDRangeList = []
        self.StartDate = ""
        self.EndDate = ""
        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 GetTemplateIDList(self): return self.TemplateIDList # 模板ID列表
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetActGroupName(self): return self.attrTuple[1] # 活动组名(同组活动的名字需相同) char
    def GetZoneID(self): return self.attrTuple[2] # 组内分组编号 BYTE
    def GetServerIDRangeList(self): return self.attrTuple[3] # 活动的账号服务器ID范围列表 [[serverIDA, serverIDB], ...] list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetStartTimeList(self): return self.attrTuple[6] # 开启时间列表, 支持多个时段 list
    def GetEndTimeList(self): return self.attrTuple[7] # 结束时间列表, 支持多个时段 list
    def GetRoundMaxList(self): return self.attrTuple[8] # 开启轮次列表 list
    def GetLVLimit(self): return self.attrTuple[9] # 限制等级 WORD
    def GetTemplateIDList(self): return self.attrTuple[10] # 模板ID列表 list
# 跨服幸运云购模板表
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 DWORD
    def GetBaseAwardInfo(self): return self.attrTuple[1] # 每次购买固定奖励 [[物品ID,个数,是否拍品], ...] list
    def GetRandAwardWeightInfo(self): return self.attrTuple[2] # 每次购买随机奖励权重信息 [[权重,物品ID,个数,是否拍品], ...] list
    def GetSuperItemWeightInfo(self): return self.attrTuple[3] # 大奖随机权重信息  [[权重,物品ID,个数,是否拍品,价值货币类型,货币值], ...] list
# 跨服全民充值时间表
class IPY_CrossActAllRecharge():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
    def GetActGroupName(self): return self.attrTuple[1] # 活动组名(同组活动的名字需相同) char
    def GetZoneID(self): return self.attrTuple[2] # 组内分组编号 BYTE
    def GetServerIDRangeList(self): return self.attrTuple[3] # 活动的账号服务器ID范围列表 [[serverIDA, serverIDB], ...] list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[循环分钟, 广播key, [广播参数列表可选]] list
    def GetTemplateIDList(self): return self.attrTuple[9] # 模板ID列表 list
# 跨服全民充值模板表
class IPY_CrossActAllRechargeTemplate():
    def __init__(self):
        self.attrTuple = None
        return
    def GetTemplateID(self): return self.attrTuple[0] # 模板ID DWORD
    def GetCTGNeed(self): return self.attrTuple[1] # 全民充值RMB DWORD
    def GetNeedPlayerCount(self): return self.attrTuple[2] # 所需充值达到该档玩家数 WORD
    def GetAwardIndex(self): return self.attrTuple[3] # 奖励记录索引,从0开始,同个模板不可重复,不可变更 BYTE
    def GetAwardItemList(self): return self.attrTuple[4] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
# 跨服充值排行活动时间表
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 DWORD
    def GetActGroupName(self): return self.attrTuple[1] # 活动组名(同组活动的名字需相同) char
    def GetZoneID(self): return self.attrTuple[2] # 组内分组编号 BYTE
    def GetServerIDRangeList(self): return self.attrTuple[3] # 活动的账号服务器ID范围列表 [[serverIDA, serverIDB], ...] list
    def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
    def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict
    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict
    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[循环分钟, 广播key, [广播参数列表可选]] list
    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置 BYTE
    def GetTemplateIDList(self): return self.attrTuple[10] # 模板ID列表 list
# 跨服充值排行模板名次奖励表
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 DWORD
    def GetOrderA(self): return self.attrTuple[1] # 名次A WORD
    def GetOrderB(self): return self.attrTuple[2] # 至名次B WORD
    def GetCTGAtleast(self): return self.attrTuple[3] # 至少充值RMB float
    def GetAwardItemList(self): return self.attrTuple[4] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
# 装备升星表
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] # 阶级 BYTE
    def GetEquipPlace(self): return self.attrTuple[1] # 装备位 BYTE
    def GetStar(self): return self.attrTuple[2] # 星数 BYTE
    def GetCostEquipPlace(self): return self.attrTuple[3] # 可用装备部位 list
    def GetIsJobLimit(self): return self.attrTuple[4] # 是否只用本职业装备材料 BYTE
    def GetCostEquipColor(self): return self.attrTuple[5] # 可用装备品质 list
    def GetUnSuitRate(self): return self.attrTuple[6] # 单件非套装加成概率 BYTE
# 福地物品表
class IPY_MineAreaItem():
    def __init__(self):
        self.attrTuple = None
        return
    def GetMineID(self): return self.attrTuple[0] # 矿物ID BYTE
    def GetLimitLV(self): return self.attrTuple[1] # 解锁等级 WORD
    def GetItemID(self): return self.attrTuple[2] # 物品ID DWORD
    def GetItemLV(self): return self.attrTuple[3] # 物品等级 BYTE
    def GetItemCount(self): return self.attrTuple[4] # 物品个数 DWORD
    def GetItemWeight(self): return self.attrTuple[5] # 物品总重量 float
    def GetRefreshWeightSys(self): return self.attrTuple[6] # 系统刷新权重 DWORD
    def GetRefreshWeight(self): return self.attrTuple[7] # 常规刷新权重 DWORD
    def GetRefreshWeightSuper(self): return self.attrTuple[8] # 超级刷新权重 DWORD
# 仙盟联赛排名奖励表
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] # 联赛世界等级 WORD
    def GetWarRank(self): return self.attrTuple[1] # 联赛排名 BYTE
    def GetRankAuctionItem(self): return self.attrTuple[2] # 拍品奖励[[拍品ID,个数], ...] list
# 协助感谢礼盒表
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 DWORD
    def GetAssistAwardCount(self): return self.attrTuple[1] #  协助奖励每日次数 BYTE
# 膜拜表
class IPY_Worship():
    def __init__(self):
        self.attrTuple = None
        return
    def GetWorshipType(self): return self.attrTuple[0] # 膜拜类型 BYTE
    def GetWorshipValue(self): return self.attrTuple[1] # 膜拜值 DWORD
    def GetWorshipDays(self): return self.attrTuple[2] # 膜拜天数 BYTE
    def GetMoneyType(self): return self.attrTuple[3] # 膜拜货币类型 BYTE
    def GetMoneyRange(self): return self.attrTuple[4] # 货币值范围 list
# 仙宫表
class IPY_Xiangong():
    def __init__(self):
        self.attrTuple = None
        return
    def GetXiangongID(self): return self.attrTuple[0] # 仙宫ID WORD
    def GetShowDays(self): return self.attrTuple[1] # 展示天数 BYTE
    def GetMoneyType(self): return self.attrTuple[2] # 点赞货币类型 BYTE
    def GetMoneyValue(self): return self.attrTuple[3] # 货币值 DWORD
    def GetTitleID(self): return self.attrTuple[4] # 称号ID DWORD
    def GetAwardItemList(self): return self.attrTuple[5] # 晋级仙宫奖励物品列表 list
    def GetMailKey(self): return self.attrTuple[6] # 仙官通知邮件 char
# 缥缈仙域表
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] # 事件编号 WORD
    def GetHourCntPubLimit(self): return self.attrTuple[1] # 全服每小时次数限制 DWORD
    def GetDayCntPubLimit(self): return self.attrTuple[2] # 全服每天次数限制 DWORD
def Log(msg, playerID=0, par=0):
@@ -2448,200 +3122,221 @@
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.classSizeDict = {} # 数据表类对象占用内存大小 {dtName:size, ...}
        self.IpyDataClear(True)
        return
    def Recycle(self):
        Log("IPY_DataMgr Recycle")
        for tableName in Def_IpyTable.keys():
            if not hasattr(self, "ipy%sLen" % tableName):
                continue
            cacheList = getattr(self, "ipy%sCache" % tableName)
            del cacheList
            delattr(self, "ipy%sLen" % tableName)
            delattr(self, "ipy%sCache" % tableName)
            Log("Recycle IPY_%s" % tableName)
        del self.fileMD5Dict, self.ipyConfigEx, self.ipyDataIndexMap, self.ipyDataIndexMapEx, self.ipyFuncConfigDict, self.classSizeDict
        self.fileMD5Dict = {}
        self.ipyConfigEx = {}
        self.ipyDataIndexMap = {}
        self.ipyDataIndexMapEx = {}
        self.ipyFuncConfigDict = {}
        self.classSizeDict = {}
        gc.collect()
        return
    def LoadAll(self):
        ## 加载全部数据,测试内存用,实际应用中不调用
        for tableName in Def_IpyTable.keys():
            setattr(self, "ipy%sLen" % tableName, 0)
        self.IpyDataClear()
        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.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.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.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.ipyActCollectWordsCache = self.__LoadFileData("ActCollectWords", IPY_ActCollectWords)
        self.ipyActCollectWordsLen = len(self.ipyActCollectWordsCache)
        self.ipyActGarbageSortingCache = self.__LoadFileData("ActGarbageSorting", IPY_ActGarbageSorting)
        self.ipyActGarbageSortingLen = len(self.ipyActGarbageSortingCache)
        self.ipyActXianXiaMJCache = self.__LoadFileData("ActXianXiaMJ", IPY_ActXianXiaMJ)
        self.ipyActXianXiaMJLen = len(self.ipyActXianXiaMJCache)
        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.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.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.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("PlayerFace", onlyCheck)
        self.__LoadFileData("PlayerFacePic", onlyCheck)
        self.__LoadFileData("WorldLV", onlyCheck)
        self.__LoadFileData("Family", onlyCheck)
        self.__LoadFileData("FamilyEmblem", onlyCheck)
        self.__LoadFileData("FamilyZhenbaogeCut", onlyCheck)
        self.__LoadFileData("FamilyZhenbaogeItem", 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("FuncTeamSet", 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("ActFamilyCTGAssist", onlyCheck)
        self.__LoadFileData("ActCollectWords", onlyCheck)
        self.__LoadFileData("ActGarbageSorting", onlyCheck)
        self.__LoadFileData("ActBossTrial", onlyCheck)
        self.__LoadFileData("ActBossTrialTemplate", onlyCheck)
        self.__LoadFileData("CrossActBossTrial", onlyCheck)
        self.__LoadFileData("ActHorsePetTrain", onlyCheck)
        self.__LoadFileData("CrossActHorsePetTrain", onlyCheck)
        self.__LoadFileData("ActHorsePetTrainBillTemp", onlyCheck)
        self.__LoadFileData("ActGubao", onlyCheck)
        self.__LoadFileData("CrossActGubao", onlyCheck)
        self.__LoadFileData("ActGubaoBillTemp", onlyCheck)
        self.__LoadFileData("CrossActLianqi", onlyCheck)
        self.__LoadFileData("ActLianqiBillTemp", onlyCheck)
        self.__LoadFileData("ActTimeFlow", onlyCheck)
        self.__LoadFileData("ActBillboardAwardTemp", onlyCheck)
        self.__LoadFileData("ActGuess", onlyCheck)
        self.__LoadFileData("CrossActFamilyGCZ", onlyCheck)
        self.__LoadFileData("CrossActFamilyGCZCampLV", onlyCheck)
        self.__LoadFileData("ActXianXiaMJ", onlyCheck)
        self.__LoadFileData("CrossActXianXiaMJ", onlyCheck)
        self.__LoadFileData("ActXianXiaMJBillTemp", 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("CrossZoneBattlefield", 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("ActYunshi", onlyCheck)
        self.__LoadFileData("ActLunhuidian", onlyCheck)
        self.__LoadFileData("ActBuyCountGift", onlyCheck)
        self.__LoadFileData("ActTask", onlyCheck)
        self.__LoadFileData("ActLoginNew", 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("MineAreaItem", onlyCheck)
        self.__LoadFileData("FamilyWarRankAward", onlyCheck)
        self.__LoadFileData("AssistThanksGift", onlyCheck)
        self.__LoadFileData("Worship", onlyCheck)
        self.__LoadFileData("Xiangong", 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
@@ -2652,27 +3347,43 @@
            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":
                        attrValue = value
                    elif fieldType == "dict":
                        attrValue = self.__StrToDict(value)
                        if type(attrValue) != dict:
                            raise
                    elif fieldType == "list":
                        attrValue = self.__StrToList(value)
                        if type(attrValue) not in [list, tuple]:
                            raise
                    elif fieldType == "eval":
                        attrValue = self.__StrToEval(value)
                    elif fieldType == "float":
                        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, [])
@@ -2682,22 +3393,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)
@@ -2716,9 +3431,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:
@@ -2771,152 +3492,846 @@
                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 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 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 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 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 GetActXianXiaMJCount(self): return self.ipyActXianXiaMJLen
    def GetActXianXiaMJByIndex(self, index): return self.ipyActXianXiaMJCache[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 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 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 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 GetPlayerFaceCount(self):
        self.CheckLoadData("PlayerFace")
        return self.ipyPlayerFaceLen
    def GetPlayerFaceByIndex(self, index):
        self.CheckLoadData("PlayerFace")
        return self.ipyPlayerFaceCache[index]
    def GetPlayerFacePicCount(self):
        self.CheckLoadData("PlayerFacePic")
        return self.ipyPlayerFacePicLen
    def GetPlayerFacePicByIndex(self, index):
        self.CheckLoadData("PlayerFacePic")
        return self.ipyPlayerFacePicCache[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 GetFamilyEmblemCount(self):
        self.CheckLoadData("FamilyEmblem")
        return self.ipyFamilyEmblemLen
    def GetFamilyEmblemByIndex(self, index):
        self.CheckLoadData("FamilyEmblem")
        return self.ipyFamilyEmblemCache[index]
    def GetFamilyZhenbaogeCutCount(self):
        self.CheckLoadData("FamilyZhenbaogeCut")
        return self.ipyFamilyZhenbaogeCutLen
    def GetFamilyZhenbaogeCutByIndex(self, index):
        self.CheckLoadData("FamilyZhenbaogeCut")
        return self.ipyFamilyZhenbaogeCutCache[index]
    def GetFamilyZhenbaogeItemCount(self):
        self.CheckLoadData("FamilyZhenbaogeItem")
        return self.ipyFamilyZhenbaogeItemLen
    def GetFamilyZhenbaogeItemByIndex(self, index):
        self.CheckLoadData("FamilyZhenbaogeItem")
        return self.ipyFamilyZhenbaogeItemCache[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 GetFuncTeamSetCount(self):
        self.CheckLoadData("FuncTeamSet")
        return self.ipyFuncTeamSetLen
    def GetFuncTeamSetByIndex(self, index):
        self.CheckLoadData("FuncTeamSet")
        return self.ipyFuncTeamSetCache[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 GetActFamilyCTGAssistCount(self):
        self.CheckLoadData("ActFamilyCTGAssist")
        return self.ipyActFamilyCTGAssistLen
    def GetActFamilyCTGAssistByIndex(self, index):
        self.CheckLoadData("ActFamilyCTGAssist")
        return self.ipyActFamilyCTGAssistCache[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 GetCrossActBossTrialCount(self):
        self.CheckLoadData("CrossActBossTrial")
        return self.ipyCrossActBossTrialLen
    def GetCrossActBossTrialByIndex(self, index):
        self.CheckLoadData("CrossActBossTrial")
        return self.ipyCrossActBossTrialCache[index]
    def GetActHorsePetTrainCount(self):
        self.CheckLoadData("ActHorsePetTrain")
        return self.ipyActHorsePetTrainLen
    def GetActHorsePetTrainByIndex(self, index):
        self.CheckLoadData("ActHorsePetTrain")
        return self.ipyActHorsePetTrainCache[index]
    def GetCrossActHorsePetTrainCount(self):
        self.CheckLoadData("CrossActHorsePetTrain")
        return self.ipyCrossActHorsePetTrainLen
    def GetCrossActHorsePetTrainByIndex(self, index):
        self.CheckLoadData("CrossActHorsePetTrain")
        return self.ipyCrossActHorsePetTrainCache[index]
    def GetActHorsePetTrainBillTempCount(self):
        self.CheckLoadData("ActHorsePetTrainBillTemp")
        return self.ipyActHorsePetTrainBillTempLen
    def GetActHorsePetTrainBillTempByIndex(self, index):
        self.CheckLoadData("ActHorsePetTrainBillTemp")
        return self.ipyActHorsePetTrainBillTempCache[index]
    def GetActGubaoCount(self):
        self.CheckLoadData("ActGubao")
        return self.ipyActGubaoLen
    def GetActGubaoByIndex(self, index):
        self.CheckLoadData("ActGubao")
        return self.ipyActGubaoCache[index]
    def GetCrossActGubaoCount(self):
        self.CheckLoadData("CrossActGubao")
        return self.ipyCrossActGubaoLen
    def GetCrossActGubaoByIndex(self, index):
        self.CheckLoadData("CrossActGubao")
        return self.ipyCrossActGubaoCache[index]
    def GetActGubaoBillTempCount(self):
        self.CheckLoadData("ActGubaoBillTemp")
        return self.ipyActGubaoBillTempLen
    def GetActGubaoBillTempByIndex(self, index):
        self.CheckLoadData("ActGubaoBillTemp")
        return self.ipyActGubaoBillTempCache[index]
    def GetCrossActLianqiCount(self):
        self.CheckLoadData("CrossActLianqi")
        return self.ipyCrossActLianqiLen
    def GetCrossActLianqiByIndex(self, index):
        self.CheckLoadData("CrossActLianqi")
        return self.ipyCrossActLianqiCache[index]
    def GetActLianqiBillTempCount(self):
        self.CheckLoadData("ActLianqiBillTemp")
        return self.ipyActLianqiBillTempLen
    def GetActLianqiBillTempByIndex(self, index):
        self.CheckLoadData("ActLianqiBillTemp")
        return self.ipyActLianqiBillTempCache[index]
    def GetActTimeFlowCount(self):
        self.CheckLoadData("ActTimeFlow")
        return self.ipyActTimeFlowLen
    def GetActTimeFlowByIndex(self, index):
        self.CheckLoadData("ActTimeFlow")
        return self.ipyActTimeFlowCache[index]
    def GetActBillboardAwardTempCount(self):
        self.CheckLoadData("ActBillboardAwardTemp")
        return self.ipyActBillboardAwardTempLen
    def GetActBillboardAwardTempByIndex(self, index):
        self.CheckLoadData("ActBillboardAwardTemp")
        return self.ipyActBillboardAwardTempCache[index]
    def GetActGuessCount(self):
        self.CheckLoadData("ActGuess")
        return self.ipyActGuessLen
    def GetActGuessByIndex(self, index):
        self.CheckLoadData("ActGuess")
        return self.ipyActGuessCache[index]
    def GetCrossActFamilyGCZCount(self):
        self.CheckLoadData("CrossActFamilyGCZ")
        return self.ipyCrossActFamilyGCZLen
    def GetCrossActFamilyGCZByIndex(self, index):
        self.CheckLoadData("CrossActFamilyGCZ")
        return self.ipyCrossActFamilyGCZCache[index]
    def GetCrossActFamilyGCZCampLVCount(self):
        self.CheckLoadData("CrossActFamilyGCZCampLV")
        return self.ipyCrossActFamilyGCZCampLVLen
    def GetCrossActFamilyGCZCampLVByIndex(self, index):
        self.CheckLoadData("CrossActFamilyGCZCampLV")
        return self.ipyCrossActFamilyGCZCampLVCache[index]
    def GetActXianXiaMJCount(self):
        self.CheckLoadData("ActXianXiaMJ")
        return self.ipyActXianXiaMJLen
    def GetActXianXiaMJByIndex(self, index):
        self.CheckLoadData("ActXianXiaMJ")
        return self.ipyActXianXiaMJCache[index]
    def GetCrossActXianXiaMJCount(self):
        self.CheckLoadData("CrossActXianXiaMJ")
        return self.ipyCrossActXianXiaMJLen
    def GetCrossActXianXiaMJByIndex(self, index):
        self.CheckLoadData("CrossActXianXiaMJ")
        return self.ipyCrossActXianXiaMJCache[index]
    def GetActXianXiaMJBillTempCount(self):
        self.CheckLoadData("ActXianXiaMJBillTemp")
        return self.ipyActXianXiaMJBillTempLen
    def GetActXianXiaMJBillTempByIndex(self, index):
        self.CheckLoadData("ActXianXiaMJBillTemp")
        return self.ipyActXianXiaMJBillTempCache[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 GetCrossZoneBattlefieldCount(self):
        self.CheckLoadData("CrossZoneBattlefield")
        return self.ipyCrossZoneBattlefieldLen
    def GetCrossZoneBattlefieldByIndex(self, index):
        self.CheckLoadData("CrossZoneBattlefield")
        return self.ipyCrossZoneBattlefieldCache[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 GetActYunshiCount(self):
        self.CheckLoadData("ActYunshi")
        return self.ipyActYunshiLen
    def GetActYunshiByIndex(self, index):
        self.CheckLoadData("ActYunshi")
        return self.ipyActYunshiCache[index]
    def GetActLunhuidianCount(self):
        self.CheckLoadData("ActLunhuidian")
        return self.ipyActLunhuidianLen
    def GetActLunhuidianByIndex(self, index):
        self.CheckLoadData("ActLunhuidian")
        return self.ipyActLunhuidianCache[index]
    def GetActBuyCountGiftCount(self):
        self.CheckLoadData("ActBuyCountGift")
        return self.ipyActBuyCountGiftLen
    def GetActBuyCountGiftByIndex(self, index):
        self.CheckLoadData("ActBuyCountGift")
        return self.ipyActBuyCountGiftCache[index]
    def GetActTaskCount(self):
        self.CheckLoadData("ActTask")
        return self.ipyActTaskLen
    def GetActTaskByIndex(self, index):
        self.CheckLoadData("ActTask")
        return self.ipyActTaskCache[index]
    def GetActLoginNewCount(self):
        self.CheckLoadData("ActLoginNew")
        return self.ipyActLoginNewLen
    def GetActLoginNewByIndex(self, index):
        self.CheckLoadData("ActLoginNew")
        return self.ipyActLoginNewCache[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 GetMineAreaItemCount(self):
        self.CheckLoadData("MineAreaItem")
        return self.ipyMineAreaItemLen
    def GetMineAreaItemByIndex(self, index):
        self.CheckLoadData("MineAreaItem")
        return self.ipyMineAreaItemCache[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 GetWorshipCount(self):
        self.CheckLoadData("Worship")
        return self.ipyWorshipLen
    def GetWorshipByIndex(self, index):
        self.CheckLoadData("Worship")
        return self.ipyWorshipCache[index]
    def GetXiangongCount(self):
        self.CheckLoadData("Xiangong")
        return self.ipyXiangongLen
    def GetXiangongByIndex(self, index):
        self.CheckLoadData("Xiangong")
        return self.ipyXiangongCache[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
@@ -2943,6 +4358,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
@@ -2960,6 +4376,7 @@
    @return: 对应查询条件的 ipyData 数据实例列表
    @使用说明: 与 GetIpyGameData 函数相同
    '''
    IPYData.CheckLoadData(dtName)
    if dtName not in IPYData.ipyDataIndexMap:
        ErrLog("Can not found ipyDataList dtName=%s" % (dtName))
        return
@@ -2974,6 +4391,7 @@
def GetIpyGameDataNotLog(dtName, *args):
    '''与 GetIpyGameData 函数相同, 只是找不到数据时不会输出日志
    '''
    IPYData.CheckLoadData(dtName)
    if dtName not in IPYData.ipyDataIndexMap:
        #ErrLog("Can not found ipyData dtName=%s" % (dtName))
        return
@@ -2987,6 +4405,7 @@
def GetIpyGameDataListNotLog(dtName, *args):
    '''与 GetIpyGameDataList 函数相同, 只是找不到数据时不会输出日志
    '''
    IPYData.CheckLoadData(dtName)
    if dtName not in IPYData.ipyDataIndexMap:
        #ErrLog("Can not found ipyDataList dtName=%s" % (dtName))
        return
@@ -3006,6 +4425,7 @@
    @param isLogNone: 找不到数据时是否数据日志,默认是
    @return: 找不到数据时返回 None,有数据时根据参数是否返回列表返回对应的数据实例或数据实例列表
    '''
    IPYData.CheckLoadData(dtName)
    fieldList = keyDict.keys()
    valueList = keyDict.values()
    findFieldKey = "%s_%s" % (dtName, fieldList)
@@ -3015,7 +4435,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        
@@ -3036,6 +4456,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 ""
@@ -3047,20 +4468,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 ""
@@ -3075,20 +4497,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
@@ -3115,6 +4538,7 @@
    @param conditionDict: 查询条件,{查询字段名:字段值, ...}
    @return: 找不到数据返回 None , 否则返回对应的 ipyData 数据实例
    '''
    IPYData.CheckLoadData(dtName)
    if not conditionDict:
        dataList = getattr(IPYData, "ipy%sCache" % dtName)
    else:
@@ -3124,34 +4548,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"