#!/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), ), "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), ), "ActFamilyCTGAssist":( ("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), ("char", "JoinStartTime", 0), ("char", "JoinEndTime", 0), ("dict", "NotifyInfoStart", 0), ("dict", "NotifyInfoEnd", 0), ("list", "NotifyInfoLoop", 0), ("BYTE", "IsDayReset", 0), ("BYTE", "ResetType", 0), ("list", "TemplateIDList", 0), ("list", "FamilyTemplateIDList", 0), ), "ActBossTrialTemplate":( ("DWORD", "TemplateID", 1), ("BYTE", "Rank", 0), ("list", "AwardItemList", 0), ("list", "MemAwardItemList", 0), ), "CrossActBossTrial":( ("DWORD", "CfgID", 1), ("char", "ActGroupName", 0), ("BYTE", "ZoneID", 0), ("list", "ServerIDRangeList", 0), ("char", "StartDate", 0), ("char", "EndDate", 0), ("char", "JoinStartTime", 0), ("char", "JoinEndTime", 0), ("dict", "NotifyInfoStart", 0), ("dict", "NotifyInfoEnd", 0), ("list", "NotifyInfoLoop", 0), ("BYTE", "IsDayReset", 0), ("BYTE", "ResetType", 0), ("list", "RankLimitList", 0), ("WORD", "PersonalTemplateID", 0), ("WORD", "FamilyTemplateID", 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), ), "CrossFamilyFlagwarZoneMap":( ("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), ), "Worship":( ("BYTE", "WorshipType", 1), ("DWORD", "WorshipValue", 1), ("BYTE", "WorshipDays", 0), ("BYTE", "MoneyType", 0), ("list", "MoneyRange", 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_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_ActFamilyCTGAssist(): def __init__(self): self.attrTuple = None return def GetCfgID(self): return self.attrTuple[0] # ÅäÖÃID DWORD def GetPlatformList(self): return self.attrTuple[1] # »î¶¯Æ½Ì¨Áбí["ƽ̨A", "ƽ̨A", ...],Åä[]´ú±íËùÓÐ list def GetServerGroupIDList(self): return self.attrTuple[2] # ·þÎñÆ÷IDÁбí list def GetActNum(self): return self.attrTuple[3] # »î¶¯·Ö×é±àºÅ, »î¶¯ÀàÐÍ * 10 + ²»Í¬½çÃæ±àºÅ BYTE def GetStartDate(self): return self.attrTuple[4] # ¿ªÆôÈÕÆÚ char def GetEndDate(self): return self.attrTuple[5] # ½áÊøÈÕÆÚ char def 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 GetJoinStartTime(self): return self.attrTuple[6] # ²ÎÓ뿪ʼʱ¼äµã char def GetJoinEndTime(self): return self.attrTuple[7] # ²ÎÓë½áÊøÊ±¼äµã char def GetNotifyInfoStart(self): return self.attrTuple[8] # È«·þÌáʾÐÅÏ¢ - Ïà¶Ô¿ªÊ¼Ê±¼ä dict def GetNotifyInfoEnd(self): return self.attrTuple[9] # È«·þÌáʾÐÅÏ¢ - Ïà¶Ô½áÊøÊ±¼ä dict def GetNotifyInfoLoop(self): return self.attrTuple[10] # È«·þÌáʾÐÅÏ¢ - Ñ­»·¹ã²¥[¼ä¸ô·ÖÖÓ, ¹ã²¥key] list def GetIsDayReset(self): return self.attrTuple[11] # ÊÇ·ñÿÌìÖØÖà BYTE def GetResetType(self): return self.attrTuple[12] # ÖØÖÃÀàÐÍ£¬0-0µãÖØÖã»1-5µãÖØÖà BYTE def GetTemplateIDList(self): return self.attrTuple[13] # °ñµ¥Ä£°å±àºÅÁбí list def GetFamilyTemplateIDList(self): return self.attrTuple[14] # ÏÉÃ˰ñµ¥Ä£°å±àºÅÁбí list # BossÀúÁ·°ñµ¥Ä£°æ±í class IPY_ActBossTrialTemplate(): def __init__(self): self.attrTuple = None return def GetTemplateID(self): return self.attrTuple[0] # Ä£°å±àºÅ DWORD def GetRank(self): return self.attrTuple[1] # Ãû´Î BYTE def GetAwardItemList(self): return self.attrTuple[2] # ½±ÀøÎïÆ·Áбí[[ÎïÆ·ID,¸öÊý,ÊÇ·ñÅÄÆ·], ...] ÏÉÃ˰ñʱΪÃËÖ÷½±Àø£¬Èç¹ûûÓÐÅäÖã¬Ôòͳһȡ³ÉÔ±½±Àø list def GetMemAwardItemList(self): return self.attrTuple[3] # ÏÉÃ˰ñ³ÉÔ±½±ÀøÎïÆ·ÐÅÏ¢Áбí[[ÎïÆ·ID,¸öÊý,ÊÇ·ñÅÄÆ·], ...] list # BossÀúÁ·¿ç·þ»î¶¯±í class IPY_CrossActBossTrial(): def __init__(self): self.attrTuple = None return def GetCfgID(self): return self.attrTuple[0] # ÅäÖÃID DWORD def GetActGroupName(self): return self.attrTuple[1] # »î¶¯×éÃû£¨Í¬×é»î¶¯µÄÃû×ÖÐèÏàͬ£© char def GetZoneID(self): return self.attrTuple[2] # ×éÄÚ·Ö×é±àºÅ BYTE def GetServerIDRangeList(self): return self.attrTuple[3] # »î¶¯µÄÕ˺ŷþÎñÆ÷ID·¶Î§Áбí [[serverIDA, serverIDB], ...] list def GetStartDate(self): return self.attrTuple[4] # ¿ªÆôÈÕÆÚ char def GetEndDate(self): return self.attrTuple[5] # ½áÊøÈÕÆÚ char def GetJoinStartTime(self): return self.attrTuple[6] # ²ÎÓ뿪ʼʱ¼äµã char def GetJoinEndTime(self): return self.attrTuple[7] # ²ÎÓë½áÊøÊ±¼äµã char def GetNotifyInfoStart(self): return self.attrTuple[8] # È«·þÌáʾÐÅÏ¢ - Ïà¶Ô¿ªÊ¼Ê±¼ä dict def GetNotifyInfoEnd(self): return self.attrTuple[9] # È«·þÌáʾÐÅÏ¢ - Ïà¶Ô½áÊøÊ±¼ä dict def GetNotifyInfoLoop(self): return self.attrTuple[10] # È«·þÌáʾÐÅÏ¢ - Ñ­»·¹ã²¥[Ñ­»··ÖÖÓ, ¹ã²¥key, [¹ã²¥²ÎÊýÁбí¿ÉÑ¡]] list def GetIsDayReset(self): return self.attrTuple[11] # ÊÇ·ñÿÌìÖØÖà BYTE def GetResetType(self): return self.attrTuple[12] # ÖØÖÃÀàÐÍ£¬0-0µãÖØÖã»1-5µãÖØÖà BYTE def GetRankLimitList(self): return self.attrTuple[13] # Éϰñ¸öÊýÏÞÖÆ ¸öÈË|ÏÉÃË list def GetPersonalTemplateID(self): return self.attrTuple[14] # ¸öÈËÅÅÐÐÄ£°å±àºÅ WORD def GetFamilyTemplateID(self): return self.attrTuple[15] # ÏÉÃËÅÅÐÐÄ£°å±àºÅ WORD # ÏÉÏ»ÃØ¾³»î¶¯Ê±¼ä±í 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_CrossFamilyFlagwarZoneMap(): def __init__(self): self.attrTuple = None return def GetZoneID(self): return self.attrTuple[0] # ·ÖÇøID BYTE def GetMapID(self): return self.attrTuple[1] # ³¡¾°µØÍ¼ID DWORD def GetDataMapID(self): return self.attrTuple[2] # Êý¾ÝµØÍ¼ID DWORD def GetCopyMapID(self): return self.attrTuple[3] # ÐéÄâÏß·ID BYTE # ÖÜ¿ñ»¶»î¶¯Ê±¼ä±í class IPY_ActWeekParty(): def __init__(self): self.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_Worship(): def __init__(self): self.attrTuple = None return def GetWorshipType(self): return self.attrTuple[0] # Ĥ°ÝÀàÐÍ BYTE def GetWorshipValue(self): return self.attrTuple[1] # Ĥ°ÝÖµ DWORD def GetWorshipDays(self): return self.attrTuple[2] # Ĥ°ÝÌìÊý BYTE def GetMoneyType(self): return self.attrTuple[3] # Ĥ°Ý»õ±ÒÀàÐÍ BYTE def GetMoneyRange(self): return self.attrTuple[4] # »õ±ÒÖµ·¶Î§ list # çÎç¿ÏÉÓò±í class IPY_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("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("ActFamilyCTGAssist", onlyCheck) self.__LoadFileData("ActCollectWords", onlyCheck) self.__LoadFileData("ActGarbageSorting", onlyCheck) self.__LoadFileData("ActBossTrial", onlyCheck) self.__LoadFileData("ActBossTrialTemplate", onlyCheck) self.__LoadFileData("CrossActBossTrial", onlyCheck) self.__LoadFileData("ActXianXiaMJ", onlyCheck) self.__LoadFileData("ActGodGift", onlyCheck) self.__LoadFileData("ActHorsePetFeast", onlyCheck) self.__LoadFileData("ActBossReborn", onlyCheck) self.__LoadFileData("ActFairyCeremony", onlyCheck) self.__LoadFileData("UniquenessArrive", onlyCheck) self.__LoadFileData("ActRealmPoint", onlyCheck) self.__LoadFileData("ActFlashSale", onlyCheck) self.__LoadFileData("Store", onlyCheck) self.__LoadFileData("ActWishingWell", onlyCheck) self.__LoadFileData("ActRechargePrize", onlyCheck) self.__LoadFileData("ActRechargeRebateGold", onlyCheck) self.__LoadFileData("ActGrowupBuy", onlyCheck) self.__LoadFileData("ActSingleRecharge", onlyCheck) self.__LoadFileData("ActTurntable", onlyCheck) self.__LoadFileData("ActManyDayRecharge", onlyCheck) self.__LoadFileData("ActTotalRecharge", onlyCheck) self.__LoadFileData("CrossZoneComm", onlyCheck) self.__LoadFileData("CrossZonePK", onlyCheck) self.__LoadFileData("ChampionshipTime", onlyCheck) self.__LoadFileData("ChampionshipRank", onlyCheck) self.__LoadFileData("ChampionshipOfficial", onlyCheck) self.__LoadFileData("CrossRealmPKSeason", onlyCheck) self.__LoadFileData("CrossRealmPKDan", onlyCheck) self.__LoadFileData("CrossPenglaiZoneMap", onlyCheck) self.__LoadFileData("CrossDemonLandZoneMap", onlyCheck) self.__LoadFileData("CrossFamilyFlagwarZoneMap", onlyCheck) self.__LoadFileData("ActWeekParty", onlyCheck) self.__LoadFileData("ActBuyCountGift", onlyCheck) self.__LoadFileData("ActTask", onlyCheck) self.__LoadFileData("ActLoginNew", onlyCheck) self.__LoadFileData("ActLoginAward", onlyCheck) self.__LoadFileData("ActFeastWeekParty", onlyCheck) self.__LoadFileData("ActNewFairyCeremony", onlyCheck) self.__LoadFileData("NewUniquenessArrive", onlyCheck) self.__LoadFileData("LoveGift", onlyCheck) self.__LoadFileData("Marry", onlyCheck) self.__LoadFileData("ActLuckyTreasure", onlyCheck) self.__LoadFileData("CrossActLuckyCloudBuy", onlyCheck) self.__LoadFileData("CrossActLuckyCloudBuyTemplate", onlyCheck) self.__LoadFileData("CrossActAllRecharge", onlyCheck) self.__LoadFileData("CrossActAllRechargeTemplate", onlyCheck) self.__LoadFileData("CrossActCTGBillboard", onlyCheck) self.__LoadFileData("CrossActCTGBillboardOrder", onlyCheck) self.__LoadFileData("EquipStarUp", onlyCheck) self.__LoadFileData("MineAreaItem", onlyCheck) self.__LoadFileData("FamilyWarRankAward", onlyCheck) self.__LoadFileData("AssistThanksGift", onlyCheck) self.__LoadFileData("Worship", onlyCheck) self.__LoadFileData("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 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 GetActFamilyCTGAssistCount(self): self.CheckLoadData("ActFamilyCTGAssist") return self.ipyActFamilyCTGAssistLen def GetActFamilyCTGAssistByIndex(self, index): self.CheckLoadData("ActFamilyCTGAssist") return self.ipyActFamilyCTGAssistCache[index] def GetActCollectWordsCount(self): self.CheckLoadData("ActCollectWords") return self.ipyActCollectWordsLen def GetActCollectWordsByIndex(self, index): self.CheckLoadData("ActCollectWords") return self.ipyActCollectWordsCache[index] def GetActGarbageSortingCount(self): self.CheckLoadData("ActGarbageSorting") return self.ipyActGarbageSortingLen def GetActGarbageSortingByIndex(self, index): self.CheckLoadData("ActGarbageSorting") return self.ipyActGarbageSortingCache[index] def GetActBossTrialCount(self): self.CheckLoadData("ActBossTrial") return self.ipyActBossTrialLen def GetActBossTrialByIndex(self, index): self.CheckLoadData("ActBossTrial") return self.ipyActBossTrialCache[index] def GetActBossTrialTemplateCount(self): self.CheckLoadData("ActBossTrialTemplate") return self.ipyActBossTrialTemplateLen def GetActBossTrialTemplateByIndex(self, index): self.CheckLoadData("ActBossTrialTemplate") return self.ipyActBossTrialTemplateCache[index] def GetCrossActBossTrialCount(self): self.CheckLoadData("CrossActBossTrial") return self.ipyCrossActBossTrialLen def GetCrossActBossTrialByIndex(self, index): self.CheckLoadData("CrossActBossTrial") return self.ipyCrossActBossTrialCache[index] def GetActXianXiaMJCount(self): self.CheckLoadData("ActXianXiaMJ") return self.ipyActXianXiaMJLen def GetActXianXiaMJByIndex(self, index): self.CheckLoadData("ActXianXiaMJ") return self.ipyActXianXiaMJCache[index] def GetActGodGiftCount(self): self.CheckLoadData("ActGodGift") return self.ipyActGodGiftLen def GetActGodGiftByIndex(self, index): self.CheckLoadData("ActGodGift") return self.ipyActGodGiftCache[index] def GetActHorsePetFeastCount(self): self.CheckLoadData("ActHorsePetFeast") return self.ipyActHorsePetFeastLen def GetActHorsePetFeastByIndex(self, index): self.CheckLoadData("ActHorsePetFeast") return self.ipyActHorsePetFeastCache[index] def GetActBossRebornCount(self): self.CheckLoadData("ActBossReborn") return self.ipyActBossRebornLen def GetActBossRebornByIndex(self, index): self.CheckLoadData("ActBossReborn") return self.ipyActBossRebornCache[index] def GetActFairyCeremonyCount(self): self.CheckLoadData("ActFairyCeremony") return self.ipyActFairyCeremonyLen def GetActFairyCeremonyByIndex(self, index): self.CheckLoadData("ActFairyCeremony") return self.ipyActFairyCeremonyCache[index] def GetUniquenessArriveCount(self): self.CheckLoadData("UniquenessArrive") return self.ipyUniquenessArriveLen def GetUniquenessArriveByIndex(self, index): self.CheckLoadData("UniquenessArrive") return self.ipyUniquenessArriveCache[index] def GetActRealmPointCount(self): self.CheckLoadData("ActRealmPoint") return self.ipyActRealmPointLen def GetActRealmPointByIndex(self, index): self.CheckLoadData("ActRealmPoint") return self.ipyActRealmPointCache[index] def GetActFlashSaleCount(self): self.CheckLoadData("ActFlashSale") return self.ipyActFlashSaleLen def GetActFlashSaleByIndex(self, index): self.CheckLoadData("ActFlashSale") return self.ipyActFlashSaleCache[index] def GetStoreCount(self): self.CheckLoadData("Store") return self.ipyStoreLen def GetStoreByIndex(self, index): self.CheckLoadData("Store") return self.ipyStoreCache[index] def GetActWishingWellCount(self): self.CheckLoadData("ActWishingWell") return self.ipyActWishingWellLen def GetActWishingWellByIndex(self, index): self.CheckLoadData("ActWishingWell") return self.ipyActWishingWellCache[index] def GetActRechargePrizeCount(self): self.CheckLoadData("ActRechargePrize") return self.ipyActRechargePrizeLen def GetActRechargePrizeByIndex(self, index): self.CheckLoadData("ActRechargePrize") return self.ipyActRechargePrizeCache[index] def GetActRechargeRebateGoldCount(self): self.CheckLoadData("ActRechargeRebateGold") return self.ipyActRechargeRebateGoldLen def GetActRechargeRebateGoldByIndex(self, index): self.CheckLoadData("ActRechargeRebateGold") return self.ipyActRechargeRebateGoldCache[index] def GetActGrowupBuyCount(self): self.CheckLoadData("ActGrowupBuy") return self.ipyActGrowupBuyLen def GetActGrowupBuyByIndex(self, index): self.CheckLoadData("ActGrowupBuy") return self.ipyActGrowupBuyCache[index] def GetActSingleRechargeCount(self): self.CheckLoadData("ActSingleRecharge") return self.ipyActSingleRechargeLen def GetActSingleRechargeByIndex(self, index): self.CheckLoadData("ActSingleRecharge") return self.ipyActSingleRechargeCache[index] def GetActTurntableCount(self): self.CheckLoadData("ActTurntable") return self.ipyActTurntableLen def GetActTurntableByIndex(self, index): self.CheckLoadData("ActTurntable") return self.ipyActTurntableCache[index] def GetActManyDayRechargeCount(self): self.CheckLoadData("ActManyDayRecharge") return self.ipyActManyDayRechargeLen def GetActManyDayRechargeByIndex(self, index): self.CheckLoadData("ActManyDayRecharge") return self.ipyActManyDayRechargeCache[index] def GetActTotalRechargeCount(self): self.CheckLoadData("ActTotalRecharge") return self.ipyActTotalRechargeLen def GetActTotalRechargeByIndex(self, index): self.CheckLoadData("ActTotalRecharge") return self.ipyActTotalRechargeCache[index] def GetCrossZoneCommCount(self): self.CheckLoadData("CrossZoneComm") return self.ipyCrossZoneCommLen def GetCrossZoneCommByIndex(self, index): self.CheckLoadData("CrossZoneComm") return self.ipyCrossZoneCommCache[index] def GetCrossZonePKCount(self): self.CheckLoadData("CrossZonePK") return self.ipyCrossZonePKLen def GetCrossZonePKByIndex(self, index): self.CheckLoadData("CrossZonePK") return self.ipyCrossZonePKCache[index] def GetChampionshipTimeCount(self): self.CheckLoadData("ChampionshipTime") return self.ipyChampionshipTimeLen def GetChampionshipTimeByIndex(self, index): self.CheckLoadData("ChampionshipTime") return self.ipyChampionshipTimeCache[index] def GetChampionshipRankCount(self): self.CheckLoadData("ChampionshipRank") return self.ipyChampionshipRankLen def GetChampionshipRankByIndex(self, index): self.CheckLoadData("ChampionshipRank") return self.ipyChampionshipRankCache[index] def GetChampionshipOfficialCount(self): self.CheckLoadData("ChampionshipOfficial") return self.ipyChampionshipOfficialLen def GetChampionshipOfficialByIndex(self, index): self.CheckLoadData("ChampionshipOfficial") return self.ipyChampionshipOfficialCache[index] def GetCrossRealmPKSeasonCount(self): self.CheckLoadData("CrossRealmPKSeason") return self.ipyCrossRealmPKSeasonLen def GetCrossRealmPKSeasonByIndex(self, index): self.CheckLoadData("CrossRealmPKSeason") return self.ipyCrossRealmPKSeasonCache[index] def GetCrossRealmPKDanCount(self): self.CheckLoadData("CrossRealmPKDan") return self.ipyCrossRealmPKDanLen def GetCrossRealmPKDanByIndex(self, index): self.CheckLoadData("CrossRealmPKDan") return self.ipyCrossRealmPKDanCache[index] def GetCrossPenglaiZoneMapCount(self): self.CheckLoadData("CrossPenglaiZoneMap") return self.ipyCrossPenglaiZoneMapLen def GetCrossPenglaiZoneMapByIndex(self, index): self.CheckLoadData("CrossPenglaiZoneMap") return self.ipyCrossPenglaiZoneMapCache[index] def GetCrossDemonLandZoneMapCount(self): self.CheckLoadData("CrossDemonLandZoneMap") return self.ipyCrossDemonLandZoneMapLen def GetCrossDemonLandZoneMapByIndex(self, index): self.CheckLoadData("CrossDemonLandZoneMap") return self.ipyCrossDemonLandZoneMapCache[index] def GetCrossFamilyFlagwarZoneMapCount(self): self.CheckLoadData("CrossFamilyFlagwarZoneMap") return self.ipyCrossFamilyFlagwarZoneMapLen def GetCrossFamilyFlagwarZoneMapByIndex(self, index): self.CheckLoadData("CrossFamilyFlagwarZoneMap") return self.ipyCrossFamilyFlagwarZoneMapCache[index] def GetActWeekPartyCount(self): self.CheckLoadData("ActWeekParty") return self.ipyActWeekPartyLen def GetActWeekPartyByIndex(self, index): self.CheckLoadData("ActWeekParty") return self.ipyActWeekPartyCache[index] def GetActBuyCountGiftCount(self): self.CheckLoadData("ActBuyCountGift") return self.ipyActBuyCountGiftLen def GetActBuyCountGiftByIndex(self, index): self.CheckLoadData("ActBuyCountGift") return self.ipyActBuyCountGiftCache[index] def GetActTaskCount(self): self.CheckLoadData("ActTask") return self.ipyActTaskLen def GetActTaskByIndex(self, index): self.CheckLoadData("ActTask") return self.ipyActTaskCache[index] def GetActLoginNewCount(self): self.CheckLoadData("ActLoginNew") return self.ipyActLoginNewLen def GetActLoginNewByIndex(self, index): self.CheckLoadData("ActLoginNew") return self.ipyActLoginNewCache[index] def GetActLoginAwardCount(self): self.CheckLoadData("ActLoginAward") return self.ipyActLoginAwardLen def GetActLoginAwardByIndex(self, index): self.CheckLoadData("ActLoginAward") return self.ipyActLoginAwardCache[index] def GetActFeastWeekPartyCount(self): self.CheckLoadData("ActFeastWeekParty") return self.ipyActFeastWeekPartyLen def GetActFeastWeekPartyByIndex(self, index): self.CheckLoadData("ActFeastWeekParty") return self.ipyActFeastWeekPartyCache[index] def GetActNewFairyCeremonyCount(self): self.CheckLoadData("ActNewFairyCeremony") return self.ipyActNewFairyCeremonyLen def GetActNewFairyCeremonyByIndex(self, index): self.CheckLoadData("ActNewFairyCeremony") return self.ipyActNewFairyCeremonyCache[index] def GetNewUniquenessArriveCount(self): self.CheckLoadData("NewUniquenessArrive") return self.ipyNewUniquenessArriveLen def GetNewUniquenessArriveByIndex(self, index): self.CheckLoadData("NewUniquenessArrive") return self.ipyNewUniquenessArriveCache[index] def GetLoveGiftCount(self): self.CheckLoadData("LoveGift") return self.ipyLoveGiftLen def GetLoveGiftByIndex(self, index): self.CheckLoadData("LoveGift") return self.ipyLoveGiftCache[index] def GetMarryCount(self): self.CheckLoadData("Marry") return self.ipyMarryLen def GetMarryByIndex(self, index): self.CheckLoadData("Marry") return self.ipyMarryCache[index] def GetActLuckyTreasureCount(self): self.CheckLoadData("ActLuckyTreasure") return self.ipyActLuckyTreasureLen def GetActLuckyTreasureByIndex(self, index): self.CheckLoadData("ActLuckyTreasure") return self.ipyActLuckyTreasureCache[index] def GetCrossActLuckyCloudBuyCount(self): self.CheckLoadData("CrossActLuckyCloudBuy") return self.ipyCrossActLuckyCloudBuyLen def GetCrossActLuckyCloudBuyByIndex(self, index): self.CheckLoadData("CrossActLuckyCloudBuy") return self.ipyCrossActLuckyCloudBuyCache[index] def GetCrossActLuckyCloudBuyTemplateCount(self): self.CheckLoadData("CrossActLuckyCloudBuyTemplate") return self.ipyCrossActLuckyCloudBuyTemplateLen def GetCrossActLuckyCloudBuyTemplateByIndex(self, index): self.CheckLoadData("CrossActLuckyCloudBuyTemplate") return self.ipyCrossActLuckyCloudBuyTemplateCache[index] def GetCrossActAllRechargeCount(self): self.CheckLoadData("CrossActAllRecharge") return self.ipyCrossActAllRechargeLen def GetCrossActAllRechargeByIndex(self, index): self.CheckLoadData("CrossActAllRecharge") return self.ipyCrossActAllRechargeCache[index] def GetCrossActAllRechargeTemplateCount(self): self.CheckLoadData("CrossActAllRechargeTemplate") return self.ipyCrossActAllRechargeTemplateLen def GetCrossActAllRechargeTemplateByIndex(self, index): self.CheckLoadData("CrossActAllRechargeTemplate") return self.ipyCrossActAllRechargeTemplateCache[index] def GetCrossActCTGBillboardCount(self): self.CheckLoadData("CrossActCTGBillboard") return self.ipyCrossActCTGBillboardLen def GetCrossActCTGBillboardByIndex(self, index): self.CheckLoadData("CrossActCTGBillboard") return self.ipyCrossActCTGBillboardCache[index] def GetCrossActCTGBillboardOrderCount(self): self.CheckLoadData("CrossActCTGBillboardOrder") return self.ipyCrossActCTGBillboardOrderLen def GetCrossActCTGBillboardOrderByIndex(self, index): self.CheckLoadData("CrossActCTGBillboardOrder") return self.ipyCrossActCTGBillboardOrderCache[index] def GetEquipStarUpCount(self): self.CheckLoadData("EquipStarUp") return self.ipyEquipStarUpLen def GetEquipStarUpByIndex(self, index): self.CheckLoadData("EquipStarUp") return self.ipyEquipStarUpCache[index] def GetMineAreaItemCount(self): self.CheckLoadData("MineAreaItem") return self.ipyMineAreaItemLen def GetMineAreaItemByIndex(self, index): self.CheckLoadData("MineAreaItem") return self.ipyMineAreaItemCache[index] def GetFamilyWarRankAwardCount(self): self.CheckLoadData("FamilyWarRankAward") return self.ipyFamilyWarRankAwardLen def GetFamilyWarRankAwardByIndex(self, index): self.CheckLoadData("FamilyWarRankAward") return self.ipyFamilyWarRankAwardCache[index] def GetAssistThanksGiftCount(self): self.CheckLoadData("AssistThanksGift") return self.ipyAssistThanksGiftLen def GetAssistThanksGiftByIndex(self, index): self.CheckLoadData("AssistThanksGift") return self.ipyAssistThanksGiftCache[index] def GetWorshipCount(self): self.CheckLoadData("Worship") return self.ipyWorshipLen def GetWorshipByIndex(self, index): self.CheckLoadData("Worship") return self.ipyWorshipCache[index] def 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"