| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| ##@package   | 
| #  | 
| # @todo:¶ÁÈ¡PY±í  | 
| # @author hxp  | 
| # @date 2018-05-10  | 
| # @version 1.0  | 
| #  | 
| # ÏêϸÃèÊö: ¶ÁÈ¡PY±í  | 
| #  | 
| #-------------------------------------------------------------------------------  | 
| #"""Version = 2018-05-10 12:00"""  | 
| #-------------------------------------------------------------------------------  | 
|   | 
| import FormulaControl  | 
| import ChConfig  | 
| import LogUI  | 
|   | 
| import hashlib  | 
| import os  | 
| import gc  | 
|   | 
| '''±í½á¹¹¶¨Òå×Öµä  | 
| {  | 
|     ±íÃû:(  | 
|         (×Ö¶ÎÀàÐÍ, ×Ö¶ÎÃû, ÊÇ·ñ²éѯË÷Òý),   | 
|         ...  | 
|         ),  | 
|     ...  | 
| }  | 
| '''  | 
| Def_IpyTable = {  | 
|                 "FuncConfig":(  | 
|                         ("char", "Key", 1),  | 
|                         ("char", "Numerical1", 0),  | 
|                         ("char", "Numerical2", 0),  | 
|                         ("char", "Numerical3", 0),  | 
|                         ("char", "Numerical4", 0),  | 
|                         ("char", "Numerical5", 0),  | 
|                         ),  | 
|   | 
|                 "CreateRole":(  | 
|                         ("BYTE", "RoleType", 1),  | 
|                         ("BYTE", "Job", 0),  | 
|                         ("DWORD", "Face", 0),  | 
|                         ("DWORD", "ModelMark", 0),  | 
|                         ("list", "CreateRoleMap", 0),  | 
|                         ),  | 
|   | 
|                 "CreateRoleLimitServer":(  | 
|                         ("list", "LimitServerGroupIDRangeList", 0),  | 
|                         ("list", "LimitServerGroupIDList", 0),  | 
|                         ),  | 
|   | 
|                 "WorldLV":(  | 
|                         ("WORD", "WorldLV", 1),  | 
|                         ("DWORD", "OpenServerSecond", 0),  | 
|                         ),  | 
|   | 
|                 "Family":(  | 
|                         ("BYTE", "FamilyLV", 1),  | 
|                         ("WORD", "MemberCnt", 0),  | 
|                         ("BYTE", "DeputyLeaderCnt", 0),  | 
|                         ("BYTE", "EliteCnt", 0),  | 
|                         ("DWORD", "NeedMoney", 0),  | 
|                         ("DWORD", "WeekMissionMoneyMax", 0),  | 
|                         ("BYTE", "BossFBCnt", 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":(  | 
|                         ("WORD", "QueryType", 1),  | 
|                         ("dict", "LimitInfo", 0),  | 
|                         ),  | 
|   | 
|                 "AuctionItem":(  | 
|                         ("DWORD", "AuctionItemID", 1),  | 
|                         ("BYTE", "NoticeSaleMinutes", 0),  | 
|                         ("WORD", "FamilySaleMinutes", 0),  | 
|                         ("WORD", "WorldSaleMinutes", 0),  | 
|                         ("WORD", "BasePrice", 0),  | 
|                         ("WORD", "BuyoutPrice", 0),  | 
|                         ("WORD", "BiddingAdd", 0),  | 
|                         ("BYTE", "NeedWorldNotify", 0),  | 
|                         ("BYTE", "Sortpriority", 0),  | 
|                         ),  | 
|   | 
|                 "AuctionSystemItem":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("char", "StartTime", 0),  | 
|                         ("char", "EndTime", 0),  | 
|                         ("list", "WorldLVRange", 0),  | 
|                         ("list", "AddRandSecondRange", 0),  | 
|                         ("WORD", "ReplenishCDMinutes", 0),  | 
|                         ("BYTE", "ReplenishAuctionCount", 0),  | 
|                         ("DWORD", "ReplenishItemID", 0),  | 
|                         ("list", "ReplenishEquipInfo", 0),  | 
|                         ("list", "ReplenishEquipPlaces", 0),  | 
|                         ("BYTE", "AuctionCount", 0),  | 
|                         ("list", "RandMinuteRange", 0),  | 
|                         ("list", "ItemCountWeightList", 0),  | 
|                         ("list", "AuctionItemWeightList", 0),  | 
|                         ("list", "RandMailKeyList", 0),  | 
|                         ),  | 
|   | 
|                 "CrossDailyAction":(  | 
|                         ("DWORD", "DailyID", 1),  | 
|                         ("dict", "OpenTimeDict", 0),  | 
|                         ("DWORD", "Duration", 0),  | 
|                         ("dict", "NotifyInfo", 0),  | 
|                         ),  | 
|   | 
|                 "DailyAction":(  | 
|                         ("DWORD", "DailyID", 1),  | 
|                         ("dict", "OpenTimeDict", 0),  | 
|                         ("DWORD", "Duration", 0),  | 
|                         ("dict", "NotifyInfo", 0),  | 
|                         ),  | 
|   | 
|                 "DailyActionCustom":(  | 
|                         ("DWORD", "ID", 0),  | 
|                         ("BYTE", "OpenServerWeek", 1),  | 
|                         ("DWORD", "OpenServerDay", 0),  | 
|                         ("BYTE", "DailyID", 0),  | 
|                         ("list", "OpenTimeList", 0),  | 
|                         ("DWORD", "Duration", 0),  | 
|                         ("dict", "NotifyInfo", 0),  | 
|                         ),  | 
|   | 
|                 "DailyActionCustomMix":(  | 
|                         ("DWORD", "ID", 0),  | 
|                         ("DWORD", "MixServerDay", 1),  | 
|                         ("BYTE", "DailyID", 0),  | 
|                         ("list", "OpenTimeList", 0),  | 
|                         ("DWORD", "Duration", 0),  | 
|                         ("dict", "NotifyInfo", 0),  | 
|                         ),  | 
|   | 
|                 "FBStateTime":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("DWORD", "DataMapID", 0),  | 
|                         ("BYTE", "StartWeekday", 0),  | 
|                         ("BYTE", "StartHour", 0),  | 
|                         ("BYTE", "StartMinute", 0),  | 
|                         ("BYTE", "EndHour", 0),  | 
|                         ("BYTE", "EndMinute", 0),  | 
|                         ("BYTE", "CanEnter", 0),  | 
|                         ("BYTE", "StateValue", 0),  | 
|                         ("dict", "NotifyInfoDict", 0),  | 
|                         ),  | 
|   | 
|                 "FBStateTimeCustom":(  | 
|                         ("DWORD", "ID", 0),  | 
|                         ("BYTE", "OpenServerWeek", 1),  | 
|                         ("DWORD", "OpenServerDay", 0),  | 
|                         ("DWORD", "DataMapID", 0),  | 
|                         ("BYTE", "StartHour", 0),  | 
|                         ("BYTE", "StartMinute", 0),  | 
|                         ("BYTE", "EndHour", 0),  | 
|                         ("BYTE", "EndMinute", 0),  | 
|                         ("BYTE", "CanEnter", 0),  | 
|                         ("BYTE", "StateValue", 0),  | 
|                         ("dict", "NotifyInfoDict", 0),  | 
|                         ),  | 
|   | 
|                 "FBStateTimeCustomMix":(  | 
|                         ("DWORD", "ID", 0),  | 
|                         ("DWORD", "MixServerDay", 1),  | 
|                         ("DWORD", "DataMapID", 0),  | 
|                         ("BYTE", "StartHour", 0),  | 
|                         ("BYTE", "StartMinute", 0),  | 
|                         ("BYTE", "EndHour", 0),  | 
|                         ("BYTE", "EndMinute", 0),  | 
|                         ("BYTE", "CanEnter", 0),  | 
|                         ("BYTE", "StateValue", 0),  | 
|                         ("dict", "NotifyInfoDict", 0),  | 
|                         ),  | 
|   | 
|                 "FBFunc":(  | 
|                         ("DWORD", "DataMapID", 1),  | 
|                         ("WORD", "HelpPoint", 0),  | 
|                         ),  | 
|   | 
|                 "FBLine":(  | 
|                         ("DWORD", "DataMapID", 1),  | 
|                         ("BYTE", "LineID", 1),  | 
|                         ("DWORD", "MapID", 0),  | 
|                         ),  | 
|   | 
|                 "FBHelpBattle":(  | 
|                         ("DWORD", "DataMapID", 1),  | 
|                         ("BYTE", "LineID", 1),  | 
|                         ("DWORD", "FightPowerMin", 0),  | 
|                         ("DWORD", "FightPowerMax", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("list", "DayFreeHelpCount", 0),  | 
|                         ),  | 
|   | 
|                 "ChinMap":(  | 
|                         ("DWORD", "MapID", 1),  | 
|                         ("char", "MapName", 0),  | 
|                         ("BYTE", "MapFBType", 0),  | 
|                         ("BYTE", "TeamLimit", 0),  | 
|                         ),  | 
|   | 
|                 "BOSSInfo":(  | 
|                         ("DWORD", "NPCID", 1),  | 
|                         ("DWORD", "MapID", 0),  | 
|                         ("char", "RefreshTime", 0),  | 
|                         ("list", "LVLimit", 0),  | 
|                         ("BYTE", "DiffPer", 0),  | 
|                         ("BYTE", "NoUpdataCnt", 0),  | 
|                         ("DWORD", "StoneNPCID", 0),  | 
|                         ("WORD", "RebornPreNotifyTime", 0),  | 
|                         ("char", "SourceName", 0),  | 
|                         ("BYTE", "CanAssist", 0),  | 
|                         ),  | 
|   | 
|                 "BOSSFirstKill":(  | 
|                         ("DWORD", "NPCID", 1),  | 
|                         ("list", "ServerFirstKillPlayerAward", 0),  | 
|                         ),  | 
|   | 
|                 "OSCBillRankAward":(  | 
|                         ("BYTE", "OSCBillType", 1),  | 
|                         ("BYTE", "RankA", 0),  | 
|                         ("BYTE", "RankB", 0),  | 
|                         ("dict", "RankAward", 0),  | 
|                         ),  | 
|   | 
|                 "QuestionBank":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("char", "Answer", 0),  | 
|                         ),  | 
|   | 
|                 "FamilyRedPack":(  | 
|                         ("WORD", "ID", 1),  | 
|                         ("WORD", "GetType", 0),  | 
|                         ("WORD", "MoneyNum", 0),  | 
|                         ("BYTE", "MoneyType", 0),  | 
|                         ("BYTE", "PacketCnt", 0),  | 
|                         ("BYTE", "LeaderOwn", 0),  | 
|                         ("char", "PacketOpenTime", 0),  | 
|                         ("BYTE", "ValidMinutes", 0),  | 
|                         ),  | 
|   | 
|                 "ActFeastRedPacket":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "ActMark", 0),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("list", "RedPacketIDList", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ),  | 
|   | 
|                 "ActFeastLogin":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "ActMark", 0),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ),  | 
|   | 
|                 "ActFeastWish":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "ActMark", 0),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("list", "NotifyInfoLoop", 0),  | 
|                         ),  | 
|   | 
|                 "ActFeastTravel":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "ActMark", 0),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("list", "NotifyInfoLoop", 0),  | 
|                         ),  | 
|   | 
|                 "FuncOpenLV":(  | 
|                         ("DWORD", "FuncId", 1),  | 
|                         ("DWORD", "LimitLV", 0),  | 
|                         ("DWORD", "LimitMagicWeapon", 0),  | 
|                         ("WORD", "LimiRealmLV", 0),  | 
|                         ("BYTE", "LimitVIPLV", 0),  | 
|                         ),  | 
|   | 
|                 "ChinNPC":(  | 
|                         ("DWORD", "NPCID", 1),  | 
|                         ("char", "NPCName", 0),  | 
|                         ("WORD", "LV", 0),  | 
|                         ),  | 
|   | 
|                 "PlayerLV":(  | 
|                         ("WORD", "LV", 1),  | 
|                         ("DWORD", "ReFightPower", 0),  | 
|                         ),  | 
|   | 
|                 "VipPrivilege":(  | 
|                         ("DWORD", "VIPPriID", 1),  | 
|                         ("DWORD", "VIP0", 0),  | 
|                         ("DWORD", "VIP1", 0),  | 
|                         ("DWORD", "VIP2", 0),  | 
|                         ("DWORD", "VIP3", 0),  | 
|                         ("DWORD", "VIP4", 0),  | 
|                         ("DWORD", "VIP5", 0),  | 
|                         ("DWORD", "VIP6", 0),  | 
|                         ("DWORD", "VIP7", 0),  | 
|                         ("DWORD", "VIP8", 0),  | 
|                         ("DWORD", "VIP9", 0),  | 
|                         ("DWORD", "VIP10", 0),  | 
|                         ("DWORD", "VIP11", 0),  | 
|                         ("DWORD", "VIP12", 0),  | 
|                         ("DWORD", "VIP13", 0),  | 
|                         ("DWORD", "VIP14", 0),  | 
|                         ("DWORD", "VIP15", 0),  | 
|                         ),  | 
|   | 
|                 "ActSpringSale":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("BYTE", "ActNum", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("list", "StartTimeList", 0),  | 
|                         ("list", "EndTimeList", 0),  | 
|                         ("WORD", "AdvanceMinutes", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("list", "NotifyInfoLoop", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ),  | 
|   | 
|                 "ActFlashGiftbag":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("BYTE", "ActNum", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("list", "StartTimeList", 0),  | 
|                         ("list", "EndTimeList", 0),  | 
|                         ("WORD", "AdvanceMinutes", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("list", "NotifyInfoLoop", 0),  | 
|                         ("WORD", "LimitWorldLV", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ),  | 
|   | 
|                 "ActDailyGiftbag":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "ActMark", 0),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ),  | 
|   | 
|                 "ActExpRate":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("list", "ServerGroupIDListExcept", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("list", "StartTimeList", 0),  | 
|                         ("list", "EndTimeList", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("list", "NotifyInfoLoop", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("DWORD", "AddExpRate", 0),  | 
|                         ),  | 
|   | 
|                 "ActCostRebate":(  | 
|                         ("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),  | 
|                         ),  | 
|   | 
|                 "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),  | 
|                         ),  | 
|   | 
|                 "ActCollectWords":(  | 
|                         ("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),  | 
|                         ),  | 
|   | 
|                 "ActGarbageSorting":(  | 
|                         ("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", "ResetType", 0),  | 
|                         ),  | 
|   | 
|                 "ActBossTrial":(  | 
|                         ("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),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("list", "TemplateIDList", 0),  | 
|                         ("char", "MailKey", 0),  | 
|                         ),  | 
|   | 
|                 "ActBossTrialTemplate":(  | 
|                         ("DWORD", "TemplateID", 1),  | 
|                         ("BYTE", "Rank", 0),  | 
|                         ("list", "AwardItemList", 0),  | 
|                         ),  | 
|   | 
|                 "ActXianXiaMJ":(  | 
|                         ("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", "ResetType", 0),  | 
|                         ),  | 
|   | 
|                 "ActGodGift":(  | 
|                         ("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),  | 
|                         ),  | 
|   | 
|                 "ActHorsePetFeast":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("BYTE", "ActNum", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("list", "StartTimeList", 0),  | 
|                         ("list", "EndTimeList", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ),  | 
|   | 
|                 "ActBossReborn":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("list", "ServerGroupIDListExcept", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("BYTE", "TemplateID", 0),  | 
|                         ),  | 
|   | 
|                 "ActFairyCeremony":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "ActMark", 0),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ),  | 
|   | 
|                 "UniquenessArrive":(  | 
|                         ("BYTE", "WorldLvNum", 1),  | 
|                         ("DWORD", "Rank", 1),  | 
|                         ("dict", "Award", 0),  | 
|                         ),  | 
|   | 
|                 "ActRealmPoint":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "ActMark", 0),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("WORD", "Multiple", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("DWORD", "PointLimit", 0),  | 
|                         ),  | 
|   | 
|                 "ActFlashSale":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("BYTE", "ActNum", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("list", "StartTimeList", 0),  | 
|                         ("list", "EndTimeList", 0),  | 
|                         ("WORD", "AdvanceMinutes", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("list", "NotifyInfoLoop", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ("list", "ShopTypeList", 0),  | 
|                         ),  | 
|   | 
|                 "Store":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("DWORD", "ShopType", 0),  | 
|                         ("BYTE", "RefreshType", 0),  | 
|                         ("DWORD", "ServerLimitCnt", 0),  | 
|                         ),  | 
|   | 
|                 "ActWishingWell":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("list", "ServerGroupIDListExcept", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("list", "NotifyInfoLoop", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ),  | 
|   | 
|                 "ActRechargePrize":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "ActMark", 0),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("list", "NotifyInfoLoop", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ),  | 
|   | 
|                 "ActRechargeRebateGold":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "ActMark", 0),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("list", "NotifyInfoLoop", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ),  | 
|   | 
|                 "ActGrowupBuy":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "ActMark", 0),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("list", "NotifyInfoLoop", 0),  | 
|                         ),  | 
|   | 
|                 "ActSingleRecharge":(  | 
|                         ("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),  | 
|                         ),  | 
|   | 
|                 "ActTurntable":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("BYTE", "ActNum", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ),  | 
|   | 
|                 "ActManyDayRecharge":(  | 
|                         ("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),  | 
|                         ),  | 
|   | 
|                 "ActTotalRecharge":(  | 
|                         ("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),  | 
|                         ),  | 
|   | 
|                 "CrossZoneComm":(  | 
|                         ("char", "CrossZoneName", 1),  | 
|                         ("BYTE", "ZoneID", 1),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ),  | 
|   | 
|                 "CrossZonePK":(  | 
|                         ("char", "CrossZoneName", 1),  | 
|                         ("BYTE", "ZoneID", 1),  | 
|                         ("char", "ZoneName", 0),  | 
|                         ("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),  | 
|                         ),  | 
|   | 
|                 "ChampionshipOfficial":(  | 
|                         ("WORD", "OfficialID", 1),  | 
|                         ("list", "JuniorOfficialIDList", 0),  | 
|                         ("list", "DailyAwardItemList", 0),  | 
|                         ("BYTE", "CanBeReplace", 0),  | 
|                         ),  | 
|   | 
|                 "CrossRealmPKSeason":(  | 
|                         ("char", "CrossZoneName", 1),  | 
|                         ("BYTE", "ZoneID", 1),  | 
|                         ("WORD", "SeasonID", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("char", "EndTime", 0),  | 
|                         ),  | 
|   | 
|                 "CrossRealmPKDan":(  | 
|                         ("BYTE", "DanLV", 1),  | 
|                         ("WORD", "LVUpScore", 0),  | 
|                         ("BYTE", "MatchRobotRate", 0),  | 
|                         ("BYTE", "MatchRobotRateEx", 0),  | 
|                         ),  | 
|   | 
|                 "CrossPenglaiZoneMap":(  | 
|                         ("BYTE", "ZoneID", 0),  | 
|                         ("DWORD", "MapID", 1),  | 
|                         ("DWORD", "DataMapID", 1),  | 
|                         ("BYTE", "CopyMapID", 1),  | 
|                         ),  | 
|   | 
|                 "CrossDemonLandZoneMap":(  | 
|                         ("BYTE", "ZoneID", 0),  | 
|                         ("DWORD", "MapID", 1),  | 
|                         ("DWORD", "DataMapID", 1),  | 
|                         ("BYTE", "CopyMapID", 1),  | 
|                         ),  | 
|   | 
|                 "ActWeekParty":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "ActMark", 0),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("WORD", "AdvanceMinutes", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ),  | 
|   | 
|                 "ActBuyCountGift":(  | 
|                         ("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),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ),  | 
|   | 
|                 "ActTask":(  | 
|                         ("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),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ),  | 
|   | 
|                 "ActLoginNew":(  | 
|                         ("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),  | 
|                         ),  | 
|   | 
|                 "ActLoginAward":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "ActMark", 0),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("WORD", "AdvanceMinutes", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("list", "NotifyInfoLoop", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ),  | 
|   | 
|                 "ActFeastWeekParty":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "ActMark", 0),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("WORD", "AdvanceMinutes", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ),  | 
|   | 
|                 "ActNewFairyCeremony":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "ActMark", 0),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ),  | 
|   | 
|                 "NewUniquenessArrive":(  | 
|                         ("BYTE", "WorldLvNum", 1),  | 
|                         ("DWORD", "Rank", 1),  | 
|                         ("dict", "Award", 0),  | 
|                         ),  | 
|   | 
|                 "LoveGift":(  | 
|                         ("BYTE", "GiftNum", 1),  | 
|                         ("float", "AddCharmSelf", 0),  | 
|                         ("float", "AddCharmTag", 0),  | 
|                         ("DWORD", "AddIntimacy", 0),  | 
|                         ("char", "WorldNotifyKey", 0),  | 
|                         ),  | 
|   | 
|                 "Marry":(  | 
|                         ("BYTE", "BridePriceID", 1),  | 
|                         ("BYTE", "CanBuyCount", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ("DWORD", "Prosperity", 0),  | 
|                         ("WORD", "CandyTimes", 0),  | 
|                         ("list", "CandyItemWeightInfo", 0),  | 
|                         ("list", "CandyNotifyItemInfo", 0),  | 
|                         ("list", "BrideGiftItemInfo", 0),  | 
|                         ("char", "WorldNotifyKey", 0),  | 
|                         ),  | 
|   | 
|                 "ActLuckyTreasure":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "ActMark", 0),  | 
|                         ("list", "PlatformList", 0),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("dict", "NotifyInfoStart", 0),  | 
|                         ("dict", "NotifyInfoEnd", 0),  | 
|                         ("list", "NotifyInfoLoop", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ),  | 
|   | 
|                 "CrossActLuckyCloudBuy":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "ActGroupName", 0),  | 
|                         ("BYTE", "ZoneID", 0),  | 
|                         ("list", "ServerIDRangeList", 0),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("list", "StartTimeList", 0),  | 
|                         ("list", "EndTimeList", 0),  | 
|                         ("list", "RoundMaxList", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("list", "TemplateIDList", 0),  | 
|                         ),  | 
|   | 
|                 "CrossActLuckyCloudBuyTemplate":(  | 
|                         ("DWORD", "TemplateID", 1),  | 
|                         ("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":(  | 
|                         ("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),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ("list", "TemplateIDList", 0),  | 
|                         ),  | 
|   | 
|                 "CrossActCTGBillboardOrder":(  | 
|                         ("DWORD", "TemplateID", 1),  | 
|                         ("WORD", "OrderA", 0),  | 
|                         ("WORD", "OrderB", 0),  | 
|                         ("float", "CTGAtleast", 0),  | 
|                         ("list", "AwardItemList", 0),  | 
|                         ),  | 
|   | 
|                 "EquipStarUp":(  | 
|                         ("BYTE", "ClassLV", 1),  | 
|                         ("BYTE", "EquipPlace", 1),  | 
|                         ("BYTE", "Star", 1),  | 
|                         ("list", "CostEquipPlace", 0),  | 
|                         ("BYTE", "IsJobLimit", 0),  | 
|                         ("list", "CostEquipColor", 0),  | 
|                         ("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),  | 
|                         ("list", "RankAuctionItem", 0),  | 
|                         ),  | 
|   | 
|                 "AssistThanksGift":(  | 
|                         ("DWORD", "GiftID", 1),  | 
|                         ("BYTE", "AssistAwardCount", 0),  | 
|                         ),  | 
|   | 
|                 "FairyDomain":(  | 
|                         ("WORD", "ID", 1),  | 
|                         ("DWORD", "HourCntPubLimit", 0),  | 
|                         ("DWORD", "DayCntPubLimit", 0),  | 
|                         ),  | 
|                 }  | 
|   | 
|   | 
| # ¹¦ÄÜÅäÖñí¸ñ | 
| class IPY_FuncConfig(): | 
|      | 
|     def __init__(self): | 
|         self.attrTuple = None | 
|         return | 
|          | 
|     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_CreateRole(): | 
|      | 
|     def __init__(self): | 
|         self.attrTuple = None | 
|         return | 
|          | 
|     def GetRoleType(self): return self.attrTuple[0] #  ½ÇÉ« BYTE  | 
|     def GetJob(self): return self.attrTuple[1] #  Ö°Òµ BYTE  | 
|     def GetFace(self): return self.attrTuple[2] #  Ä¬ÈÏÍ·Ïñ DWORD  | 
|     def GetModelMark(self): return self.attrTuple[3] #  Ä¬ÈÏÍâÐΠDWORD  | 
|     def GetCreateRoleMap(self): return self.attrTuple[4] #  ´´½ÇµØÍ¼×ø±êÐÅÏ¢ [dataMapID,posX,posY] list | 
|   | 
| # ´´½ÇÏÞÖÆ·þÎñÆ÷ÅäÖñí | 
| class IPY_CreateRoleLimitServer(): | 
|      | 
|     def __init__(self): | 
|         self.attrTuple = None | 
|         return | 
|          | 
|     def GetLimitServerGroupIDRangeList(self): return self.attrTuple[0] # ÏÞÖÆ´´½ÇµÄ·þÎñÆ÷×éID·¶Î§Áбí list  | 
|     def GetLimitServerGroupIDList(self): return self.attrTuple[1] # ÏÞÖÆ´´½ÇµÄ·þÎñÆ÷×éIDÁбí list | 
|   | 
| # ÊÀ½çµÈ¼¶±í¸ñ | 
| class IPY_WorldLV(): | 
|      | 
|     def __init__(self): | 
|         self.attrTuple = None | 
|         return | 
|          | 
|     def GetWorldLV(self): return self.attrTuple[0] # ÊÀ½çµÈ¼¶ WORD  | 
|     def GetOpenServerSecond(self): return self.attrTuple[1] # ¿ª·þʱ¼äÃë DWORD | 
|   | 
| # ÏÉÃ˱í¸ñ | 
| class IPY_Family(): | 
|      | 
|     def __init__(self): | 
|         self.attrTuple = None | 
|         return | 
|          | 
|     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 | 
|   | 
| # ÏÉÃËÊÔÁ¶ÉËѪ½±Àø±í | 
| 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.attrTuple = None | 
|         return | 
|          | 
|     def GetQueryType(self): return self.attrTuple[0] # ²éѯÀàÐÍ WORD  | 
|     def GetLimitInfo(self): return self.attrTuple[1] # ÏÞÖÆÌõ¼þ dict | 
|   | 
| # ÅÄÂôÎïÆ·±í | 
| class IPY_AuctionItem(): | 
|      | 
|     def __init__(self): | 
|         self.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.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_DailyActionCustom(): | 
|      | 
|     def __init__(self): | 
|         self.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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_ChinMap(): | 
|      | 
|     def __init__(self): | 
|         self.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     def GetID(self): return self.attrTuple[0] # ID DWORD  | 
|     def GetAnswer(self): return self.attrTuple[1] # ´ð°¸ char | 
|   | 
| # ÏÉÃ˺ì°ü±í | 
| class IPY_FamilyRedPack(): | 
|      | 
|     def __init__(self): | 
|         self.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     def GetLV(self): return self.attrTuple[0] # Íæ¼ÒµÈ¼¶ WORD  | 
|     def GetReFightPower(self): return self.attrTuple[1] # Õ½¶·Á¦ DWORD | 
|   | 
| # VIPÌØÈ¨±í | 
| class IPY_VipPrivilege(): | 
|      | 
|     def __init__(self): | 
|         self.attrTuple = None | 
|         return | 
|          | 
|     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.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 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.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 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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.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_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_ActCollectWords(): | 
|      | 
|     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 | 
|   | 
| # À¬»ø·ÖÀà»î¶¯Ê±¼ä±í | 
| class IPY_ActGarbageSorting(): | 
|      | 
|     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 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 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 GetResetType(self): return self.attrTuple[10] # ÖØÖÃÀàÐÍ£¬0-0µãÖØÖã»1-5µãÖØÖàBYTE  | 
|     def GetTemplateIDList(self): return self.attrTuple[11] # °ñµ¥Ä£°å±àºÅÁбí list  | 
|     def GetMailKey(self): return self.attrTuple[12] # ½±ÀøÓʼþÄ£°å char | 
|   | 
| # 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 | 
|   | 
| # ÏÉÏ»ÃØ¾³»î¶¯Ê±¼ä±í | 
| class IPY_ActXianXiaMJ(): | 
|      | 
|     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 GetResetType(self): return self.attrTuple[9] # ÖØÖÃÀàÐÍ£¬0-0µãÖØÖã»1-5µãÖØÖàBYTE | 
|   | 
| # ÌìµÛÀñ°ü»î¶¯Ê±¼ä±í | 
| 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.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 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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.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 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] # É̵êÀàÐÍÁбí list | 
|   | 
| # É̳DZí | 
| class IPY_Store(): | 
|      | 
|     def __init__(self): | 
|         self.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.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_ActTurntable(): | 
|      | 
|     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_ActManyDayRecharge(): | 
|      | 
|     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 | 
|   | 
| # ÀۼƳäÖµ»î¶¯±í | 
| class IPY_ActTotalRecharge(): | 
|      | 
|     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_CrossZoneComm(): | 
|      | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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 | 
|   | 
| # ¿ç·þÅÅλ¹ÙÖ°±í | 
| 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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.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 | 
|   | 
| # ¿ç·þ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_ActWeekParty(): | 
|      | 
|     def __init__(self): | 
|         self.attrTuple = None | 
|         return | 
|          | 
|     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_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 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 GetResetType(self): return self.attrTuple[10] # ÖØÖÃÀàÐÍ£¬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 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 GetResetType(self): return self.attrTuple[10] # ÖØÖÃÀàÐÍ£¬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  | 
|     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_ActLoginAward(): | 
|      | 
|     def __init__(self): | 
|         self.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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] # Ï²ÌdzÖÐøÊ±¼äÃë 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.attrTuple = None | 
|         return | 
|          | 
|     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.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 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.attrTuple = None | 
|         return | 
|          | 
|     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.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 GetIsDayReset(self): return self.attrTuple[9] # ÊÇ·ñÿÌìÖØÖàBYTE  | 
|     def GetTemplateIDList(self): return self.attrTuple[10] # Ä£°åIDÁбí list | 
|   | 
| # ¿ç·þ³äÖµÅÅÐÐÄ£°åÃû´Î½±Àø±í | 
| class IPY_CrossActCTGBillboardOrder(): | 
|      | 
|     def __init__(self): | 
|         self.attrTuple = None | 
|         return | 
|          | 
|     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 | 
|   | 
| # ×°±¸ÉýÐDZí | 
| class IPY_EquipStarUp(): | 
|      | 
|     def __init__(self): | 
|         self.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     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.attrTuple = None | 
|         return | 
|          | 
|     def GetGiftID(self): return self.attrTuple[0] # ÀñºÐÎïÆ·ID DWORD  | 
|     def GetAssistAwardCount(self): return self.attrTuple[1] #  ÐÖú½±ÀøÃ¿ÈÕ´ÎÊý BYTE | 
|   | 
| # çÎç¿ÏÉÓò±í | 
| class IPY_FairyDomain(): | 
|      | 
|     def __init__(self): | 
|         self.attrTuple = None | 
|         return | 
|          | 
|     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):  | 
|     LogUI.Msg("%s\t%s\t%s" % (par, playerID, msg))  | 
|     return  | 
|       | 
| def ErrLog(msg, playerID=0, par=0):  | 
|     LogUI.Msg("%s\t%s\t###Error:%s" % (par, playerID, msg))  | 
|     return  | 
|       | 
| ## PY±íÊý¾Ý¹ÜÀíÀà  | 
| 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, onlyCheck=False):  | 
|         Log("IPY_DataMgr Reload... onlyCheck=%s" % onlyCheck)  | 
|         if not onlyCheck:  | 
|             self.ipyConfigEx = {}  | 
|         self.__LoadFileData("FuncConfig", onlyCheck)  | 
|         self.__LoadFileData("CreateRole", onlyCheck)  | 
|         self.__LoadFileData("CreateRoleLimitServer", onlyCheck)  | 
|         self.__LoadFileData("WorldLV", onlyCheck)  | 
|         self.__LoadFileData("Family", onlyCheck)  | 
|         self.__LoadFileData("FamilyBossHurtAward", onlyCheck)  | 
|         self.__LoadFileData("FamilyZhenfa", onlyCheck)  | 
|         self.__LoadFileData("MarketQuery", onlyCheck)  | 
|         self.__LoadFileData("AuctionItem", onlyCheck)  | 
|         self.__LoadFileData("AuctionSystemItem", onlyCheck)  | 
|         self.__LoadFileData("CrossDailyAction", onlyCheck)  | 
|         self.__LoadFileData("DailyAction", onlyCheck)  | 
|         self.__LoadFileData("DailyActionCustom", onlyCheck)  | 
|         self.__LoadFileData("DailyActionCustomMix", onlyCheck)  | 
|         self.__LoadFileData("FBStateTime", onlyCheck)  | 
|         self.__LoadFileData("FBStateTimeCustom", onlyCheck)  | 
|         self.__LoadFileData("FBStateTimeCustomMix", onlyCheck)  | 
|         self.__LoadFileData("FBFunc", onlyCheck)  | 
|         self.__LoadFileData("FBLine", onlyCheck)  | 
|         self.__LoadFileData("FBHelpBattle", onlyCheck)  | 
|         self.__LoadFileData("ChinMap", onlyCheck)  | 
|         self.__LoadFileData("BOSSInfo", onlyCheck)  | 
|         self.__LoadFileData("BOSSFirstKill", onlyCheck)  | 
|         self.__LoadFileData("OSCBillRankAward", onlyCheck)  | 
|         self.__LoadFileData("QuestionBank", onlyCheck)  | 
|         self.__LoadFileData("FamilyRedPack", onlyCheck)  | 
|         self.__LoadFileData("ActFeastRedPacket", onlyCheck)  | 
|         self.__LoadFileData("ActFeastLogin", onlyCheck)  | 
|         self.__LoadFileData("ActFeastWish", onlyCheck)  | 
|         self.__LoadFileData("ActFeastTravel", onlyCheck)  | 
|         self.__LoadFileData("FuncOpenLV", onlyCheck)  | 
|         self.__LoadFileData("ChinNPC", onlyCheck)  | 
|         self.__LoadFileData("PlayerLV", onlyCheck)  | 
|         self.__LoadFileData("VipPrivilege", onlyCheck)  | 
|         self.__LoadFileData("ActSpringSale", onlyCheck)  | 
|         self.__LoadFileData("ActFlashGiftbag", onlyCheck)  | 
|         self.__LoadFileData("ActDailyGiftbag", onlyCheck)  | 
|         self.__LoadFileData("ActExpRate", onlyCheck)  | 
|         self.__LoadFileData("ActCostRebate", onlyCheck)  | 
|         self.__LoadFileData("ActBuyOne", onlyCheck)  | 
|         self.__LoadFileData("ActCollectWords", onlyCheck)  | 
|         self.__LoadFileData("ActGarbageSorting", onlyCheck)  | 
|         self.__LoadFileData("ActBossTrial", onlyCheck)  | 
|         self.__LoadFileData("ActBossTrialTemplate", onlyCheck)  | 
|         self.__LoadFileData("ActXianXiaMJ", onlyCheck)  | 
|         self.__LoadFileData("ActGodGift", onlyCheck)  | 
|         self.__LoadFileData("ActHorsePetFeast", onlyCheck)  | 
|         self.__LoadFileData("ActBossReborn", onlyCheck)  | 
|         self.__LoadFileData("ActFairyCeremony", onlyCheck)  | 
|         self.__LoadFileData("UniquenessArrive", onlyCheck)  | 
|         self.__LoadFileData("ActRealmPoint", onlyCheck)  | 
|         self.__LoadFileData("ActFlashSale", onlyCheck)  | 
|         self.__LoadFileData("Store", onlyCheck)  | 
|         self.__LoadFileData("ActWishingWell", onlyCheck)  | 
|         self.__LoadFileData("ActRechargePrize", onlyCheck)  | 
|         self.__LoadFileData("ActRechargeRebateGold", onlyCheck)  | 
|         self.__LoadFileData("ActGrowupBuy", onlyCheck)  | 
|         self.__LoadFileData("ActSingleRecharge", onlyCheck)  | 
|         self.__LoadFileData("ActTurntable", onlyCheck)  | 
|         self.__LoadFileData("ActManyDayRecharge", onlyCheck)  | 
|         self.__LoadFileData("ActTotalRecharge", onlyCheck)  | 
|         self.__LoadFileData("CrossZoneComm", onlyCheck)  | 
|         self.__LoadFileData("CrossZonePK", onlyCheck)  | 
|         self.__LoadFileData("ChampionshipTime", onlyCheck)  | 
|         self.__LoadFileData("ChampionshipRank", onlyCheck)  | 
|         self.__LoadFileData("ChampionshipOfficial", onlyCheck)  | 
|         self.__LoadFileData("CrossRealmPKSeason", onlyCheck)  | 
|         self.__LoadFileData("CrossRealmPKDan", onlyCheck)  | 
|         self.__LoadFileData("CrossPenglaiZoneMap", onlyCheck)  | 
|         self.__LoadFileData("CrossDemonLandZoneMap", onlyCheck)  | 
|         self.__LoadFileData("ActWeekParty", 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("FairyDomain", onlyCheck)  | 
|         Log("IPY_DataMgr ReloadOK! onlyCheck=%s" % onlyCheck)  | 
|         return  | 
|       | 
|     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):  | 
|                 # Ã»ÓиÃÊôÐԵIJ»¼ÓÔØ  | 
|                 return  | 
|           | 
|         fileObj = open(curPath, 'rb')  | 
|         content = fileObj.read()  | 
|         fileObj.close()  | 
|           | 
|         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  | 
|               | 
|         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  | 
|             if not infoList[line]:  | 
|                 #ErrLog("line not content! %s, line=%s" % (tableName, line))  | 
|                 continue  | 
|             rowList = infoList[line].split('\t')  | 
|             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 = []  | 
|                 valueList = []  | 
|                 for j, value in enumerate(rowList):  | 
|                     fieldType, fieldName, isIndex = fieldList[j]  | 
|                     if fieldType == "char":  | 
|                         attrValue = value  | 
|                     elif fieldType == "dict":  | 
|                         attrValue = self.__StrToDict(value)  | 
|                     elif fieldType == "list":  | 
|                         attrValue = self.__StrToList(value)  | 
|                     elif fieldType == "eval":  | 
|                         attrValue = self.__StrToEval(value)  | 
|                     elif fieldType == "float":  | 
|                         attrValue = float(value)  | 
|                     else:  | 
|                         attrValue = 0 if not value.isdigit() else int(value)  | 
|                     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, [])  | 
|                 indexList.append(dataIndex)  | 
|                 indexDict[indexKey] = indexList  | 
|                 dataIndex += 1  | 
|             except BaseException:  | 
|                 ErrLog("SetIpyDataError: tableName=%s,line=%s,fieldName=%s,fieldType=%s,value=%s" % (tableName, line, fieldName, fieldType, value))  | 
|                 raise  | 
|         if onlyCheck:  | 
|             Log("CheckIpydata: %s, dataCount=%s OK" % (tableName, dataCount))  | 
|             return  | 
|         if tableName != "FuncConfig":  | 
|             self.ipyDataIndexMap[tableName] = indexDict  | 
|         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, onlyCheck):  | 
|         key = rowList[0]  | 
|         valueList = [key]  | 
|         for i, strValue in enumerate(rowList):  | 
|             if i == 0:  | 
|                 continue  | 
|             try:  | 
|                 strValue = strValue.lstrip().rstrip()  | 
|                 if strValue.isdigit():  | 
|                     configValue = int(strValue)  | 
|                 elif (strValue.startswith("{") and strValue.endswith("}")) \  | 
|                     or (strValue.startswith("[") and strValue.endswith("]")) \  | 
|                     or (strValue.startswith("(") and strValue.endswith(")")):  | 
|                     configValue = eval(strValue)  | 
|                 elif "_" in strValue and type(self.__StrToDict(strValue)) == dict:  | 
|                     configValue = self.__StrToDict(strValue)  | 
|                 elif ChConfig.Def_Str_Montant in strValue:  | 
|                     configValue = eval("(%s,)" % strValue.replace(ChConfig.Def_Str_Montant, ","))  | 
|                 elif strValue in ["-", ""]:  | 
|                     configValue = ""  | 
|                 else:  | 
|                     configValue = self.__ToFloat(strValue)  | 
|             except BaseException:  | 
|                 ErrLog("SetIpyDataError: tableName=%s,key=%s,i=%s,value=%s" % ("FuncConfig", key, i, strValue))  | 
|                 raise  | 
|             if onlyCheck:  | 
|                 continue  | 
|             valueList.append(configValue)  | 
|         if onlyCheck:  | 
|             return  | 
|         funcConfigObj = IPY_FuncConfig()  | 
|         setattr(funcConfigObj, "attrTuple", tuple(valueList))  | 
|         self.ipyFuncConfigDict[key] = funcConfigObj  | 
|         return funcConfigObj  | 
|       | 
|     def __ToFloat(self, strValue):  | 
|         try:  | 
|             value = float(strValue)  | 
|         except:  | 
|             return strValue  | 
|         return value  | 
|       | 
|     def __StrToEval(self, strValue):  | 
|         if not strValue or strValue in ["0", "-", ""]:  | 
|             return  | 
|         return eval(strValue)  | 
|       | 
|     def __StrToDict(self, strValue):  | 
|         setDict = {}  | 
|         if "{" in strValue and "}" in strValue:  | 
|             setDict = eval(strValue)  | 
|         elif strValue in ["0", "-", ""]:  | 
|             pass  | 
|         else:  | 
|             keyValueList = strValue.split(ChConfig.Def_Str_Montant)  | 
|             for keyValue in keyValueList:  | 
|                 if "_" not in keyValue:  | 
|                     continue  | 
|                 kv = keyValue.split("_")  | 
|                 if len(kv) != 2:  | 
|                     return  | 
|                 key, value = kv  | 
|                 if key.isdigit():  | 
|                     key = int(key)  | 
|                 if value.isdigit():  | 
|                     value = int(value)  | 
|                 setDict[key] = value  | 
|         return setDict  | 
|       | 
|     def __StrToList(self, strValue):  | 
|         setList = []  | 
|         if ("[" in strValue and "]" in strValue) or ("(" in strValue and ")" in strValue):  | 
|             setList = eval(strValue)  | 
|         elif strValue in ["0", "-", ""]:  | 
|             pass  | 
|         elif strValue.isdigit():  | 
|             setList = (int(strValue),)  | 
|         else:  | 
|             for value in strValue.split(ChConfig.Def_Str_Montant):  | 
|                 if value.isdigit():  | 
|                     value = int(value)  | 
|                 setList.append(value)  | 
|             if setList:  | 
|                 setList = tuple(setList)  | 
|         return setList  | 
|       | 
|   | 
|     def GetFuncConfigCount(self): | 
|         self.CheckLoadData("FuncConfig") | 
|         return self.ipyFuncConfigLen  | 
|     def GetFuncConfigByIndex(self, index): | 
|         self.CheckLoadData("FuncConfig") | 
|         return self.ipyFuncConfigCache[index]  | 
|   | 
|     def GetCreateRoleCount(self): | 
|         self.CheckLoadData("CreateRole") | 
|         return self.ipyCreateRoleLen  | 
|     def GetCreateRoleByIndex(self, index): | 
|         self.CheckLoadData("CreateRole") | 
|         return self.ipyCreateRoleCache[index]  | 
|   | 
|     def GetCreateRoleLimitServerCount(self): | 
|         self.CheckLoadData("CreateRoleLimitServer") | 
|         return self.ipyCreateRoleLimitServerLen  | 
|     def GetCreateRoleLimitServerByIndex(self, index): | 
|         self.CheckLoadData("CreateRoleLimitServer") | 
|         return self.ipyCreateRoleLimitServerCache[index]  | 
|   | 
|     def GetWorldLVCount(self): | 
|         self.CheckLoadData("WorldLV") | 
|         return self.ipyWorldLVLen  | 
|     def GetWorldLVByIndex(self, index): | 
|         self.CheckLoadData("WorldLV") | 
|         return self.ipyWorldLVCache[index]  | 
|   | 
|     def GetFamilyCount(self): | 
|         self.CheckLoadData("Family") | 
|         return self.ipyFamilyLen  | 
|     def GetFamilyByIndex(self, index): | 
|         self.CheckLoadData("Family") | 
|         return self.ipyFamilyCache[index]  | 
|   | 
|     def GetFamilyBossHurtAwardCount(self): | 
|         self.CheckLoadData("FamilyBossHurtAward") | 
|         return self.ipyFamilyBossHurtAwardLen  | 
|     def GetFamilyBossHurtAwardByIndex(self, index): | 
|         self.CheckLoadData("FamilyBossHurtAward") | 
|         return self.ipyFamilyBossHurtAwardCache[index]  | 
|   | 
|     def GetFamilyZhenfaCount(self): | 
|         self.CheckLoadData("FamilyZhenfa") | 
|         return self.ipyFamilyZhenfaLen  | 
|     def GetFamilyZhenfaByIndex(self, index): | 
|         self.CheckLoadData("FamilyZhenfa") | 
|         return self.ipyFamilyZhenfaCache[index]  | 
|   | 
|     def GetMarketQueryCount(self): | 
|         self.CheckLoadData("MarketQuery") | 
|         return self.ipyMarketQueryLen  | 
|     def GetMarketQueryByIndex(self, index): | 
|         self.CheckLoadData("MarketQuery") | 
|         return self.ipyMarketQueryCache[index]  | 
|   | 
|     def GetAuctionItemCount(self): | 
|         self.CheckLoadData("AuctionItem") | 
|         return self.ipyAuctionItemLen  | 
|     def GetAuctionItemByIndex(self, index): | 
|         self.CheckLoadData("AuctionItem") | 
|         return self.ipyAuctionItemCache[index]  | 
|   | 
|     def GetAuctionSystemItemCount(self): | 
|         self.CheckLoadData("AuctionSystemItem") | 
|         return self.ipyAuctionSystemItemLen  | 
|     def GetAuctionSystemItemByIndex(self, index): | 
|         self.CheckLoadData("AuctionSystemItem") | 
|         return self.ipyAuctionSystemItemCache[index]  | 
|   | 
|     def GetCrossDailyActionCount(self): | 
|         self.CheckLoadData("CrossDailyAction") | 
|         return self.ipyCrossDailyActionLen  | 
|     def GetCrossDailyActionByIndex(self, index): | 
|         self.CheckLoadData("CrossDailyAction") | 
|         return self.ipyCrossDailyActionCache[index]  | 
|   | 
|     def GetDailyActionCount(self): | 
|         self.CheckLoadData("DailyAction") | 
|         return self.ipyDailyActionLen  | 
|     def GetDailyActionByIndex(self, index): | 
|         self.CheckLoadData("DailyAction") | 
|         return self.ipyDailyActionCache[index]  | 
|   | 
|     def GetDailyActionCustomCount(self): | 
|         self.CheckLoadData("DailyActionCustom") | 
|         return self.ipyDailyActionCustomLen  | 
|     def GetDailyActionCustomByIndex(self, index): | 
|         self.CheckLoadData("DailyActionCustom") | 
|         return self.ipyDailyActionCustomCache[index]  | 
|   | 
|     def GetDailyActionCustomMixCount(self): | 
|         self.CheckLoadData("DailyActionCustomMix") | 
|         return self.ipyDailyActionCustomMixLen  | 
|     def GetDailyActionCustomMixByIndex(self, index): | 
|         self.CheckLoadData("DailyActionCustomMix") | 
|         return self.ipyDailyActionCustomMixCache[index]  | 
|   | 
|     def GetFBStateTimeCount(self): | 
|         self.CheckLoadData("FBStateTime") | 
|         return self.ipyFBStateTimeLen  | 
|     def GetFBStateTimeByIndex(self, index): | 
|         self.CheckLoadData("FBStateTime") | 
|         return self.ipyFBStateTimeCache[index]  | 
|   | 
|     def GetFBStateTimeCustomCount(self): | 
|         self.CheckLoadData("FBStateTimeCustom") | 
|         return self.ipyFBStateTimeCustomLen  | 
|     def GetFBStateTimeCustomByIndex(self, index): | 
|         self.CheckLoadData("FBStateTimeCustom") | 
|         return self.ipyFBStateTimeCustomCache[index]  | 
|   | 
|     def GetFBStateTimeCustomMixCount(self): | 
|         self.CheckLoadData("FBStateTimeCustomMix") | 
|         return self.ipyFBStateTimeCustomMixLen  | 
|     def GetFBStateTimeCustomMixByIndex(self, index): | 
|         self.CheckLoadData("FBStateTimeCustomMix") | 
|         return self.ipyFBStateTimeCustomMixCache[index]  | 
|   | 
|     def GetFBFuncCount(self): | 
|         self.CheckLoadData("FBFunc") | 
|         return self.ipyFBFuncLen  | 
|     def GetFBFuncByIndex(self, index): | 
|         self.CheckLoadData("FBFunc") | 
|         return self.ipyFBFuncCache[index]  | 
|   | 
|     def GetFBLineCount(self): | 
|         self.CheckLoadData("FBLine") | 
|         return self.ipyFBLineLen  | 
|     def GetFBLineByIndex(self, index): | 
|         self.CheckLoadData("FBLine") | 
|         return self.ipyFBLineCache[index]  | 
|   | 
|     def GetFBHelpBattleCount(self): | 
|         self.CheckLoadData("FBHelpBattle") | 
|         return self.ipyFBHelpBattleLen  | 
|     def GetFBHelpBattleByIndex(self, index): | 
|         self.CheckLoadData("FBHelpBattle") | 
|         return self.ipyFBHelpBattleCache[index]  | 
|   | 
|     def GetChinMapCount(self): | 
|         self.CheckLoadData("ChinMap") | 
|         return self.ipyChinMapLen  | 
|     def GetChinMapByIndex(self, index): | 
|         self.CheckLoadData("ChinMap") | 
|         return self.ipyChinMapCache[index]  | 
|   | 
|     def GetBOSSInfoCount(self): | 
|         self.CheckLoadData("BOSSInfo") | 
|         return self.ipyBOSSInfoLen  | 
|     def GetBOSSInfoByIndex(self, index): | 
|         self.CheckLoadData("BOSSInfo") | 
|         return self.ipyBOSSInfoCache[index]  | 
|   | 
|     def GetBOSSFirstKillCount(self): | 
|         self.CheckLoadData("BOSSFirstKill") | 
|         return self.ipyBOSSFirstKillLen  | 
|     def GetBOSSFirstKillByIndex(self, index): | 
|         self.CheckLoadData("BOSSFirstKill") | 
|         return self.ipyBOSSFirstKillCache[index]  | 
|   | 
|     def GetOSCBillRankAwardCount(self): | 
|         self.CheckLoadData("OSCBillRankAward") | 
|         return self.ipyOSCBillRankAwardLen  | 
|     def GetOSCBillRankAwardByIndex(self, index): | 
|         self.CheckLoadData("OSCBillRankAward") | 
|         return self.ipyOSCBillRankAwardCache[index]  | 
|   | 
|     def GetQuestionBankCount(self): | 
|         self.CheckLoadData("QuestionBank") | 
|         return self.ipyQuestionBankLen  | 
|     def GetQuestionBankByIndex(self, index): | 
|         self.CheckLoadData("QuestionBank") | 
|         return self.ipyQuestionBankCache[index]  | 
|   | 
|     def GetFamilyRedPackCount(self): | 
|         self.CheckLoadData("FamilyRedPack") | 
|         return self.ipyFamilyRedPackLen  | 
|     def GetFamilyRedPackByIndex(self, index): | 
|         self.CheckLoadData("FamilyRedPack") | 
|         return self.ipyFamilyRedPackCache[index]  | 
|   | 
|     def GetActFeastRedPacketCount(self): | 
|         self.CheckLoadData("ActFeastRedPacket") | 
|         return self.ipyActFeastRedPacketLen  | 
|     def GetActFeastRedPacketByIndex(self, index): | 
|         self.CheckLoadData("ActFeastRedPacket") | 
|         return self.ipyActFeastRedPacketCache[index]  | 
|   | 
|     def GetActFeastLoginCount(self): | 
|         self.CheckLoadData("ActFeastLogin") | 
|         return self.ipyActFeastLoginLen  | 
|     def GetActFeastLoginByIndex(self, index): | 
|         self.CheckLoadData("ActFeastLogin") | 
|         return self.ipyActFeastLoginCache[index]  | 
|   | 
|     def GetActFeastWishCount(self): | 
|         self.CheckLoadData("ActFeastWish") | 
|         return self.ipyActFeastWishLen  | 
|     def GetActFeastWishByIndex(self, index): | 
|         self.CheckLoadData("ActFeastWish") | 
|         return self.ipyActFeastWishCache[index]  | 
|   | 
|     def GetActFeastTravelCount(self): | 
|         self.CheckLoadData("ActFeastTravel") | 
|         return self.ipyActFeastTravelLen  | 
|     def GetActFeastTravelByIndex(self, index): | 
|         self.CheckLoadData("ActFeastTravel") | 
|         return self.ipyActFeastTravelCache[index]  | 
|   | 
|     def GetFuncOpenLVCount(self): | 
|         self.CheckLoadData("FuncOpenLV") | 
|         return self.ipyFuncOpenLVLen  | 
|     def GetFuncOpenLVByIndex(self, index): | 
|         self.CheckLoadData("FuncOpenLV") | 
|         return self.ipyFuncOpenLVCache[index]  | 
|   | 
|     def GetChinNPCCount(self): | 
|         self.CheckLoadData("ChinNPC") | 
|         return self.ipyChinNPCLen  | 
|     def GetChinNPCByIndex(self, index): | 
|         self.CheckLoadData("ChinNPC") | 
|         return self.ipyChinNPCCache[index]  | 
|   | 
|     def GetPlayerLVCount(self): | 
|         self.CheckLoadData("PlayerLV") | 
|         return self.ipyPlayerLVLen  | 
|     def GetPlayerLVByIndex(self, index): | 
|         self.CheckLoadData("PlayerLV") | 
|         return self.ipyPlayerLVCache[index]  | 
|   | 
|     def GetVipPrivilegeCount(self): | 
|         self.CheckLoadData("VipPrivilege") | 
|         return self.ipyVipPrivilegeLen  | 
|     def GetVipPrivilegeByIndex(self, index): | 
|         self.CheckLoadData("VipPrivilege") | 
|         return self.ipyVipPrivilegeCache[index]  | 
|   | 
|     def GetActSpringSaleCount(self): | 
|         self.CheckLoadData("ActSpringSale") | 
|         return self.ipyActSpringSaleLen  | 
|     def GetActSpringSaleByIndex(self, index): | 
|         self.CheckLoadData("ActSpringSale") | 
|         return self.ipyActSpringSaleCache[index]  | 
|   | 
|     def GetActFlashGiftbagCount(self): | 
|         self.CheckLoadData("ActFlashGiftbag") | 
|         return self.ipyActFlashGiftbagLen  | 
|     def GetActFlashGiftbagByIndex(self, index): | 
|         self.CheckLoadData("ActFlashGiftbag") | 
|         return self.ipyActFlashGiftbagCache[index]  | 
|   | 
|     def GetActDailyGiftbagCount(self): | 
|         self.CheckLoadData("ActDailyGiftbag") | 
|         return self.ipyActDailyGiftbagLen  | 
|     def GetActDailyGiftbagByIndex(self, index): | 
|         self.CheckLoadData("ActDailyGiftbag") | 
|         return self.ipyActDailyGiftbagCache[index]  | 
|   | 
|     def GetActExpRateCount(self): | 
|         self.CheckLoadData("ActExpRate") | 
|         return self.ipyActExpRateLen  | 
|     def GetActExpRateByIndex(self, index): | 
|         self.CheckLoadData("ActExpRate") | 
|         return self.ipyActExpRateCache[index]  | 
|   | 
|     def GetActCostRebateCount(self): | 
|         self.CheckLoadData("ActCostRebate") | 
|         return self.ipyActCostRebateLen  | 
|     def GetActCostRebateByIndex(self, index): | 
|         self.CheckLoadData("ActCostRebate") | 
|         return self.ipyActCostRebateCache[index]  | 
|   | 
|     def GetActBuyOneCount(self): | 
|         self.CheckLoadData("ActBuyOne") | 
|         return self.ipyActBuyOneLen  | 
|     def GetActBuyOneByIndex(self, index): | 
|         self.CheckLoadData("ActBuyOne") | 
|         return self.ipyActBuyOneCache[index]  | 
|   | 
|     def GetActCollectWordsCount(self): | 
|         self.CheckLoadData("ActCollectWords") | 
|         return self.ipyActCollectWordsLen  | 
|     def GetActCollectWordsByIndex(self, index): | 
|         self.CheckLoadData("ActCollectWords") | 
|         return self.ipyActCollectWordsCache[index]  | 
|   | 
|     def GetActGarbageSortingCount(self): | 
|         self.CheckLoadData("ActGarbageSorting") | 
|         return self.ipyActGarbageSortingLen  | 
|     def GetActGarbageSortingByIndex(self, index): | 
|         self.CheckLoadData("ActGarbageSorting") | 
|         return self.ipyActGarbageSortingCache[index]  | 
|   | 
|     def GetActBossTrialCount(self): | 
|         self.CheckLoadData("ActBossTrial") | 
|         return self.ipyActBossTrialLen  | 
|     def GetActBossTrialByIndex(self, index): | 
|         self.CheckLoadData("ActBossTrial") | 
|         return self.ipyActBossTrialCache[index]  | 
|   | 
|     def GetActBossTrialTemplateCount(self): | 
|         self.CheckLoadData("ActBossTrialTemplate") | 
|         return self.ipyActBossTrialTemplateLen  | 
|     def GetActBossTrialTemplateByIndex(self, index): | 
|         self.CheckLoadData("ActBossTrialTemplate") | 
|         return self.ipyActBossTrialTemplateCache[index]  | 
|   | 
|     def GetActXianXiaMJCount(self): | 
|         self.CheckLoadData("ActXianXiaMJ") | 
|         return self.ipyActXianXiaMJLen  | 
|     def GetActXianXiaMJByIndex(self, index): | 
|         self.CheckLoadData("ActXianXiaMJ") | 
|         return self.ipyActXianXiaMJCache[index]  | 
|   | 
|     def GetActGodGiftCount(self): | 
|         self.CheckLoadData("ActGodGift") | 
|         return self.ipyActGodGiftLen  | 
|     def GetActGodGiftByIndex(self, index): | 
|         self.CheckLoadData("ActGodGift") | 
|         return self.ipyActGodGiftCache[index]  | 
|   | 
|     def GetActHorsePetFeastCount(self): | 
|         self.CheckLoadData("ActHorsePetFeast") | 
|         return self.ipyActHorsePetFeastLen  | 
|     def GetActHorsePetFeastByIndex(self, index): | 
|         self.CheckLoadData("ActHorsePetFeast") | 
|         return self.ipyActHorsePetFeastCache[index]  | 
|   | 
|     def GetActBossRebornCount(self): | 
|         self.CheckLoadData("ActBossReborn") | 
|         return self.ipyActBossRebornLen  | 
|     def GetActBossRebornByIndex(self, index): | 
|         self.CheckLoadData("ActBossReborn") | 
|         return self.ipyActBossRebornCache[index]  | 
|   | 
|     def GetActFairyCeremonyCount(self): | 
|         self.CheckLoadData("ActFairyCeremony") | 
|         return self.ipyActFairyCeremonyLen  | 
|     def GetActFairyCeremonyByIndex(self, index): | 
|         self.CheckLoadData("ActFairyCeremony") | 
|         return self.ipyActFairyCeremonyCache[index]  | 
|   | 
|     def GetUniquenessArriveCount(self): | 
|         self.CheckLoadData("UniquenessArrive") | 
|         return self.ipyUniquenessArriveLen  | 
|     def GetUniquenessArriveByIndex(self, index): | 
|         self.CheckLoadData("UniquenessArrive") | 
|         return self.ipyUniquenessArriveCache[index]  | 
|   | 
|     def GetActRealmPointCount(self): | 
|         self.CheckLoadData("ActRealmPoint") | 
|         return self.ipyActRealmPointLen  | 
|     def GetActRealmPointByIndex(self, index): | 
|         self.CheckLoadData("ActRealmPoint") | 
|         return self.ipyActRealmPointCache[index]  | 
|   | 
|     def GetActFlashSaleCount(self): | 
|         self.CheckLoadData("ActFlashSale") | 
|         return self.ipyActFlashSaleLen  | 
|     def GetActFlashSaleByIndex(self, index): | 
|         self.CheckLoadData("ActFlashSale") | 
|         return self.ipyActFlashSaleCache[index]  | 
|   | 
|     def GetStoreCount(self): | 
|         self.CheckLoadData("Store") | 
|         return self.ipyStoreLen  | 
|     def GetStoreByIndex(self, index): | 
|         self.CheckLoadData("Store") | 
|         return self.ipyStoreCache[index]  | 
|   | 
|     def GetActWishingWellCount(self): | 
|         self.CheckLoadData("ActWishingWell") | 
|         return self.ipyActWishingWellLen  | 
|     def GetActWishingWellByIndex(self, index): | 
|         self.CheckLoadData("ActWishingWell") | 
|         return self.ipyActWishingWellCache[index]  | 
|   | 
|     def GetActRechargePrizeCount(self): | 
|         self.CheckLoadData("ActRechargePrize") | 
|         return self.ipyActRechargePrizeLen  | 
|     def GetActRechargePrizeByIndex(self, index): | 
|         self.CheckLoadData("ActRechargePrize") | 
|         return self.ipyActRechargePrizeCache[index]  | 
|   | 
|     def GetActRechargeRebateGoldCount(self): | 
|         self.CheckLoadData("ActRechargeRebateGold") | 
|         return self.ipyActRechargeRebateGoldLen  | 
|     def GetActRechargeRebateGoldByIndex(self, index): | 
|         self.CheckLoadData("ActRechargeRebateGold") | 
|         return self.ipyActRechargeRebateGoldCache[index]  | 
|   | 
|     def GetActGrowupBuyCount(self): | 
|         self.CheckLoadData("ActGrowupBuy") | 
|         return self.ipyActGrowupBuyLen  | 
|     def GetActGrowupBuyByIndex(self, index): | 
|         self.CheckLoadData("ActGrowupBuy") | 
|         return self.ipyActGrowupBuyCache[index]  | 
|   | 
|     def GetActSingleRechargeCount(self): | 
|         self.CheckLoadData("ActSingleRecharge") | 
|         return self.ipyActSingleRechargeLen  | 
|     def GetActSingleRechargeByIndex(self, index): | 
|         self.CheckLoadData("ActSingleRecharge") | 
|         return self.ipyActSingleRechargeCache[index]  | 
|   | 
|     def GetActTurntableCount(self): | 
|         self.CheckLoadData("ActTurntable") | 
|         return self.ipyActTurntableLen  | 
|     def GetActTurntableByIndex(self, index): | 
|         self.CheckLoadData("ActTurntable") | 
|         return self.ipyActTurntableCache[index]  | 
|   | 
|     def GetActManyDayRechargeCount(self): | 
|         self.CheckLoadData("ActManyDayRecharge") | 
|         return self.ipyActManyDayRechargeLen  | 
|     def GetActManyDayRechargeByIndex(self, index): | 
|         self.CheckLoadData("ActManyDayRecharge") | 
|         return self.ipyActManyDayRechargeCache[index]  | 
|   | 
|     def GetActTotalRechargeCount(self): | 
|         self.CheckLoadData("ActTotalRecharge") | 
|         return self.ipyActTotalRechargeLen  | 
|     def GetActTotalRechargeByIndex(self, index): | 
|         self.CheckLoadData("ActTotalRecharge") | 
|         return self.ipyActTotalRechargeCache[index]  | 
|   | 
|     def GetCrossZoneCommCount(self): | 
|         self.CheckLoadData("CrossZoneComm") | 
|         return self.ipyCrossZoneCommLen  | 
|     def GetCrossZoneCommByIndex(self, index): | 
|         self.CheckLoadData("CrossZoneComm") | 
|         return self.ipyCrossZoneCommCache[index]  | 
|   | 
|     def GetCrossZonePKCount(self): | 
|         self.CheckLoadData("CrossZonePK") | 
|         return self.ipyCrossZonePKLen  | 
|     def GetCrossZonePKByIndex(self, index): | 
|         self.CheckLoadData("CrossZonePK") | 
|         return self.ipyCrossZonePKCache[index]  | 
|   | 
|     def GetChampionshipTimeCount(self): | 
|         self.CheckLoadData("ChampionshipTime") | 
|         return self.ipyChampionshipTimeLen  | 
|     def GetChampionshipTimeByIndex(self, index): | 
|         self.CheckLoadData("ChampionshipTime") | 
|         return self.ipyChampionshipTimeCache[index]  | 
|   | 
|     def GetChampionshipRankCount(self): | 
|         self.CheckLoadData("ChampionshipRank") | 
|         return self.ipyChampionshipRankLen  | 
|     def GetChampionshipRankByIndex(self, index): | 
|         self.CheckLoadData("ChampionshipRank") | 
|         return self.ipyChampionshipRankCache[index]  | 
|   | 
|     def GetChampionshipOfficialCount(self): | 
|         self.CheckLoadData("ChampionshipOfficial") | 
|         return self.ipyChampionshipOfficialLen  | 
|     def GetChampionshipOfficialByIndex(self, index): | 
|         self.CheckLoadData("ChampionshipOfficial") | 
|         return self.ipyChampionshipOfficialCache[index]  | 
|   | 
|     def GetCrossRealmPKSeasonCount(self): | 
|         self.CheckLoadData("CrossRealmPKSeason") | 
|         return self.ipyCrossRealmPKSeasonLen  | 
|     def GetCrossRealmPKSeasonByIndex(self, index): | 
|         self.CheckLoadData("CrossRealmPKSeason") | 
|         return self.ipyCrossRealmPKSeasonCache[index]  | 
|   | 
|     def GetCrossRealmPKDanCount(self): | 
|         self.CheckLoadData("CrossRealmPKDan") | 
|         return self.ipyCrossRealmPKDanLen  | 
|     def GetCrossRealmPKDanByIndex(self, index): | 
|         self.CheckLoadData("CrossRealmPKDan") | 
|         return self.ipyCrossRealmPKDanCache[index]  | 
|   | 
|     def GetCrossPenglaiZoneMapCount(self): | 
|         self.CheckLoadData("CrossPenglaiZoneMap") | 
|         return self.ipyCrossPenglaiZoneMapLen  | 
|     def GetCrossPenglaiZoneMapByIndex(self, index): | 
|         self.CheckLoadData("CrossPenglaiZoneMap") | 
|         return self.ipyCrossPenglaiZoneMapCache[index]  | 
|   | 
|     def GetCrossDemonLandZoneMapCount(self): | 
|         self.CheckLoadData("CrossDemonLandZoneMap") | 
|         return self.ipyCrossDemonLandZoneMapLen  | 
|     def GetCrossDemonLandZoneMapByIndex(self, index): | 
|         self.CheckLoadData("CrossDemonLandZoneMap") | 
|         return self.ipyCrossDemonLandZoneMapCache[index]  | 
|   | 
|     def GetActWeekPartyCount(self): | 
|         self.CheckLoadData("ActWeekParty") | 
|         return self.ipyActWeekPartyLen  | 
|     def GetActWeekPartyByIndex(self, index): | 
|         self.CheckLoadData("ActWeekParty") | 
|         return self.ipyActWeekPartyCache[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 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  | 
|   | 
| def GetConfigEx(key):  | 
|     '''»ñÈ¡×Ô¶¨Òåkey»º´æÊý¾Ý  | 
|     '''  | 
|     if key in IPYData.ipyConfigEx:  | 
|         return IPYData.ipyConfigEx[key]  | 
|     return  | 
| def SetConfigEx(key, configData):  | 
|     '''ÉèÖÃ×Ô¶¨Òåkey»º´æÊý¾Ý  | 
|     ÓÐЩ±íµÄÅäÖÃÄÚÈÝ¿ÉÄÜÔÚʵ¼Ê¹¦ÄÜʹÓÃÖÐÖ±½ÓʹÓñíÊý¾ÝµÄ»°»á±È½ÏÂé·³£¬±ÈÈçÿ´Î¶¼Òª±éÀú»ñȡһЩ±íÊý¾Ý  | 
|     Èç¹û¾¹ýÒ»²ãÊý¾Ýת»»ºóÔÙÀ´Ê¹ÓøÃÊý¾ÝµÄ»°»á¼ò»¯¹¦ÄÜÂß¼»òÌá¸ßЧÂÊ£¬Ôò¿ÉÒÔͨ¹ýº¯Êý±£´æÒ»Ð©×Ô¶¨ÒåµÄ»º´æÄÚÈÝ£¬·½±ã¹¦ÄÜʹÓà  | 
|     Ò²¿ÉÒÔÊÊÓÃÓÚÆäËû×Ô¶¨Ò建´æ´æ´¢  | 
|     '''  | 
|     IPYData.ipyConfigEx[key] = configData  | 
|     return configData  | 
|   | 
| def GetIpyGameData(dtName, *args):  | 
|     '''»ñÈ¡±íÊý¾Ý£¬ÊÊÓÃÓÚÊý¾ÝΨһµÄ£¬·µ»Øµ¥ÌõÊý¾ÝʵÀý  | 
|     @param dtName: ±íÃû£¬²»º¬tag  | 
|     @param args: ½¨±íʱÉèÖõÄË÷Òý×Ö¶Î˳Ðò¶ÔÓ¦µÄ²éѯֵ  | 
|     @return: ¶ÔÓ¦²éѯÌõ¼þµÄ ipyData Êý¾ÝʵÀý£¬Ö»·µ»Øµ¥¸öʵÀý  | 
|     @ʹÓÃ˵Ã÷: IpyGameDataPY.GetIpyGameData(±íÃû, Ë÷Òý1²éѯֵ, Ë÷Òý2²éѯֵ, ¡ )  | 
|     '''  | 
|     IPYData.CheckLoadData(dtName)  | 
|     if dtName not in IPYData.ipyDataIndexMap:  | 
|         ErrLog("Can not found ipyData dtName=%s" % (dtName))  | 
|         return  | 
|     indexDict = IPYData.ipyDataIndexMap[dtName]  | 
|     if args not in indexDict:  | 
|         ErrLog("Can not found ipyData dtName=%s,indexValue=%s" % (dtName, args))  | 
|         return  | 
|     indexList = indexDict[args]  | 
|     return getattr(IPYData, "ipy%sCache" % dtName)[indexList[0]]  | 
|   | 
| def GetIpyGameDataList(dtName, *args):  | 
|     '''»ñÈ¡±íÊý¾Ý£¬ÊÊÓÃÓÚ²éѯ½á¹ûÓжàÌõÊý¾ÝµÄ  | 
|     @param dtName: ±íÃû£¬²»º¬tag  | 
|     @param args: ½¨±íʱÉèÖõÄË÷Òý×Ö¶Î˳Ðò¶ÔÓ¦µÄ²éѯֵ  | 
|     @return: ¶ÔÓ¦²éѯÌõ¼þµÄ ipyData Êý¾ÝʵÀýÁÐ±í  | 
|     @ʹÓÃ˵Ã÷: Óë GetIpyGameData º¯ÊýÏàͬ  | 
|     '''  | 
|     IPYData.CheckLoadData(dtName)  | 
|     if dtName not in IPYData.ipyDataIndexMap:  | 
|         ErrLog("Can not found ipyDataList dtName=%s" % (dtName))  | 
|         return  | 
|     indexDict = IPYData.ipyDataIndexMap[dtName]  | 
|     if args not in indexDict:  | 
|         ErrLog("Can not found ipyDataList dtName=%s,indexValue=%s" % (dtName, args))  | 
|         return  | 
|     indexList = indexDict[args]  | 
|     dataCache = getattr(IPYData, "ipy%sCache" % dtName)  | 
|     return [dataCache[i] for i in indexList]  | 
|   | 
| def GetIpyGameDataNotLog(dtName, *args):  | 
|     '''Óë GetIpyGameData º¯ÊýÏàͬ, Ö»ÊÇÕÒ²»µ½Êý¾Ýʱ²»»áÊä³öÈÕÖ¾  | 
|     '''  | 
|     IPYData.CheckLoadData(dtName)  | 
|     if dtName not in IPYData.ipyDataIndexMap:  | 
|         #ErrLog("Can not found ipyData dtName=%s" % (dtName))  | 
|         return  | 
|     indexDict = IPYData.ipyDataIndexMap[dtName]  | 
|     if args not in indexDict:  | 
|         #ErrLog("Can not found ipyData dtName=%s,indexValue=%s" % (dtName, args))  | 
|         return  | 
|     indexList = indexDict[args]  | 
|     return getattr(IPYData, "ipy%sCache" % dtName)[indexList[0]]  | 
|   | 
| def GetIpyGameDataListNotLog(dtName, *args):  | 
|     '''Óë GetIpyGameDataList º¯ÊýÏàͬ, Ö»ÊÇÕÒ²»µ½Êý¾Ýʱ²»»áÊä³öÈÕÖ¾  | 
|     '''  | 
|     IPYData.CheckLoadData(dtName)  | 
|     if dtName not in IPYData.ipyDataIndexMap:  | 
|         #ErrLog("Can not found ipyDataList dtName=%s" % (dtName))  | 
|         return  | 
|     indexDict = IPYData.ipyDataIndexMap[dtName]  | 
|     if args not in indexDict:  | 
|         #ErrLog("Can not found ipyDataList dtName=%s,indexValue=%s" % (dtName, args))  | 
|         return  | 
|     indexList = indexDict[args]  | 
|     dataCache = getattr(IPYData, "ipy%sCache" % dtName)  | 
|     return [dataCache[i] for i in indexList]  | 
|   | 
| def GetIpyGameDataByCondition(dtName, keyDict={}, returnList=False, isLogNone=True):  | 
|     '''¸ù¾Ý×Ô¶¨Òå²éѯÌõ¼þ²éѯ±íÊý¾Ý£¬ÓÉÓÚĿǰֻ֧³Ö½¨Á¢Ò»×é²éѯË÷Òý£¬ËùÒÔʹÓÃÆäËû²éѯÌõ¼þ²é±íʱֻÄÜͨ¹ý¸Ãº¯Êý²éÕÒ  | 
|     @param dtName: ±íÃû£¬²»º¬tag  | 
|     @param keyDict: ²éѯÌõ¼þ×Öµä {²éѯ×Ö¶ÎÃû:²éѯֵ, ...}  | 
|     @param returnList: ÊÇ·ñÒÔÁбíµÄÐÎʽ·µ»Ø²éѯÊý¾Ý£¬Ä¬ÈÏ·ñ  | 
|     @param isLogNone: ÕÒ²»µ½Êý¾ÝʱÊÇ·ñÊý¾ÝÈÕÖ¾£¬Ä¬ÈÏÊÇ  | 
|     @return: ÕÒ²»µ½Êý¾Ýʱ·µ»Ø None£¬ÓÐÊý¾Ýʱ¸ù¾Ý²ÎÊýÊÇ·ñ·µ»ØÁÐ±í·µ»Ø¶ÔÓ¦µÄÊý¾ÝʵÀý»òÊý¾ÝʵÀýÁÐ±í  | 
|     '''  | 
|     IPYData.CheckLoadData(dtName)  | 
|     fieldList = keyDict.keys()  | 
|     valueList = keyDict.values()  | 
|     findFieldKey = "%s_%s" % (dtName, fieldList)  | 
|     findValueKey = tuple(valueList)  | 
|       | 
|     cacheList = getattr(IPYData, "ipy%sCache" % dtName)  | 
|     if findFieldKey not in IPYData.ipyDataIndexMapEx:  | 
|         indexMapDict = {}  | 
|         for index, iData in enumerate(cacheList):  | 
|             valuekey = tuple([getattr(iData, "Get%s" % field)() for field in fieldList])  | 
|             indexList = indexMapDict.get(valuekey, [])  | 
|             indexList.append(index)  | 
|             indexMapDict[valuekey] = indexList          | 
|         IPYData.ipyDataIndexMapEx[findFieldKey] = indexMapDict  | 
|           | 
|     indexMapDict = IPYData.ipyDataIndexMapEx[findFieldKey]  | 
|     if findValueKey not in indexMapDict:  | 
|         if isLogNone:  | 
|             ErrLog("GetIpyGameDataByCondition can not found data! %s %s" % (dtName, keyDict))  | 
|         return  | 
|     indexList = indexMapDict[findValueKey]  | 
|     if not returnList:  | 
|         return cacheList[indexList[0]]  | 
|     return [cacheList[index] for index in indexList]  | 
|   | 
| def GetFuncCfgIpyData(key):  | 
|     '''¶Á¹¦ÄÜÅäÖñíÅäÖÃʵÀý  | 
|     @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 ""  | 
|     return IPYData.ipyFuncConfigDict[key]  | 
|   | 
| def GetFuncCfg(key, index=1):  | 
|     '''¶Á¹¦ÄÜÅäÖñíÅäÖÃרÓú¯Êý  | 
|     @param key: ÅäÖÃkey  | 
|     @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.attrTuple[1]  | 
|     if index == 2:  | 
|         return cfgObj.attrTuple[2]  | 
|     if index == 3:  | 
|         return cfgObj.attrTuple[3]  | 
|     if index == 4:  | 
|         return cfgObj.attrTuple[4]  | 
|     if index == 5:  | 
|         return cfgObj.attrTuple[5]  | 
|     ErrLog("Can not found ipyData FuncConfig key=%s,index=%s!" % (key, index))  | 
|     return ""  | 
|   | 
| def GetFuncEvalCfg(key, index=1, defaultValue=[]):  | 
|     '''¶ÁÈ¡¹¦ÄÜÅäÖñíÅäÖÃÁÐ±í¡¢×Öµä¸ñʽרÓú¯Êý  | 
|     @param key: ÅäÖÃkey  | 
|     @param index: µÚ¼¸¸öÅäÖÃÖµ£¬Ö§³Ö1~5  | 
|     @return: Ö±½Ó·µ»Ø¶ÔÓ¦µÄÊý¾ÝÀàÐÍ list¡¢dict¡¢tuple£¬²»ÓÃÔÙeval  | 
|       | 
|     ÓÉÓڲ߻®ÓÐ×Ô¶¨ÒåµÄÁбí½á¹¹ obj|¡ , µ±¸ÃÁбíÅäÖÃÖ»ÓÐÒ»¸öÔªËØÊ±£¬´ËʱÅäÖõÄÄÚÈÝΪµ¥¸öÊýÖµ£¬¼ÓÔØµÄÅäÖõÄʱºò´ËÌõÊý¾Ý»á±»×ªÎªintÐÍ  | 
|     ¹ÊʹÓøÃרÓú¯Êý·µ»ØÁбí½á¹¹£¬·½±ã¹¦ÄÜ¿ª·¢Ê±²»ÓÃÔÙ¿¼ÂÇÁбíΪintʱµÄÇé¿ö£»  | 
|     µ±È»Èç¹ûÅäÖõÄÄÚÈݱ¾Éí¾ÍΪ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.attrTuple[1]  | 
|     elif index == 2:  | 
|         curConfig = cfgObj.attrTuple[2]  | 
|     elif index == 3:  | 
|         curConfig = cfgObj.attrTuple[3]  | 
|     elif index == 4:  | 
|         curConfig = cfgObj.attrTuple[4]  | 
|     elif index == 5:  | 
|         curConfig = cfgObj.attrTuple[5]  | 
|     else:  | 
|         ErrLog("Can not found ipyData FuncConfig key=%s,index=%s!" % (key, index))  | 
|         return defaultValue  | 
|     curType = type(curConfig)  | 
|     if curType in [list, tuple, dict]:  | 
|         return curConfig  | 
|     if curType == int:  | 
|         return [curConfig]  | 
|     return defaultValue  | 
|   | 
| def GetFuncCompileCfg(key, index=1):  | 
|     '''»ñÈ¡¹¦ÄÜÅäÖñíÒѱàÒë¹ýµÄ¹«Ê½  | 
|     @param key: ÅäÖÃkey  | 
|     @param index: µÚ¼¸¸öÅäÖÃÖµ£¬Ö§³Ö1~5  | 
|     @return: ·µ»ØÒѱàÒë¹ýµÄ¹«Ê½  | 
|     '''  | 
|     return FormulaControl.GetCompileFormula(key + str(index), str(GetFuncCfg(key, index)))  | 
|   | 
| def InterpolationSearch(dtName, keyName, keyValue, conditionDict={}):  | 
|     '''²éѯÌõ¼þÏÂÓë¶ÔÓ¦²éѯ×ֶβο¼ÖµÏà½üµÄÊý¾ÝʵÀý£»²Î¿¼ÖµÐ¡ÓÚÅäÖñí×îСֵʱ·µ»Ønone£¬´óÓÚ×î´óֵʱ·µ»Ø×î´óÖµ¶ÔÓ¦µÄʵÀý  | 
|     @param dtName: ±íÃû£¬²»º¬tag  | 
|     @param keyName: ²Î¿¼×Ö¶ÎÃû  | 
|     @param keyValue: ²Î¿¼×Ö¶ÎÖµ£¬´óÓÚµÈÓÚ×Ö¶Îֵʱ·µ»Ø¶ÔÓ¦Êý¾Ý  | 
|     @param conditionDict: ²éѯÌõ¼þ£¬{²éѯ×Ö¶ÎÃû:×Ö¶ÎÖµ, ...}  | 
|     @return: ÕÒ²»µ½Êý¾Ý·µ»Ø None £¬ ·ñÔò·µ»Ø¶ÔÓ¦µÄ ipyData Êý¾ÝʵÀý  | 
|     '''  | 
|     IPYData.CheckLoadData(dtName)  | 
|     if not conditionDict:  | 
|         dataList = getattr(IPYData, "ipy%sCache" % dtName)  | 
|     else:  | 
|         dataList = GetIpyGameDataByCondition(dtName, conditionDict, True)  | 
|     if not dataList:  | 
|         return  | 
|       | 
|     low = 0  | 
|     lowData = dataList[0]  | 
|     lowValue = getattr(lowData, "Get%s" % keyName)()  | 
|     if keyValue < lowValue:  | 
|         return  | 
|       | 
|     high = len(dataList) - 1  | 
|     highData = dataList[high]  | 
|     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, "Get%s" % keyName)()  | 
|       | 
|     if keyValue < nearValue:  | 
|         for i in xrange(near - 1, low - 1, -1):  | 
|             nearData = dataList[i]  | 
|             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, "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"  | 
|              |