| #!/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  | 
|   | 
| '''±í½á¹¹¶¨Òå×Öµä  | 
| {  | 
|     ±íÃû:(  | 
|         (×Ö¶ÎÀàÐÍ, ×Ö¶ÎÃû, ÊÇ·ñ²éѯË÷Òý),   | 
|         ...  | 
|         ),  | 
|     ...  | 
| }  | 
| '''  | 
| Def_IpyTable = {  | 
|                 "Dienstgrad":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("WORD", "Type", 0),  | 
|                         ("DWORD", "ExpireTime", 0),  | 
|                         ("list", "LightType", 0),  | 
|                         ("list", "LightAttribute", 0),  | 
|                         ("list", "Skills", 0),  | 
|                         ),  | 
|   | 
|                 "RolePoint":(  | 
|                         ("BYTE", "AttrID", 1),  | 
|                         ("dict", "AddAttrInfoPerPoint", 0),  | 
|                         ("BYTE", "FightPowerPerPoint", 0),  | 
|                         ("dict", "PointQualityAttrDict", 0),  | 
|                         ("list", "PointQualityIntervalList", 0),  | 
|                         ),  | 
|   | 
|                 "LingQiAttr":(  | 
|                         ("BYTE", "ItemID", 1),  | 
|                         ("list", "LingQiAttrID", 0),  | 
|                         ("list", "LingQiAttrValue", 0),  | 
|                         ("DWORD", "LingQiAttrScore", 0),  | 
|                         ("dict", "UpCostItem", 0),  | 
|                         ("DWORD", "NextItemID", 0),  | 
|                         ),  | 
|   | 
|                 "Realm":(  | 
|                         ("WORD", "Lv", 1),  | 
|                         ("DWORD", "NeedLV", 0),  | 
|                         ("DWORD", "NeedItemID", 0),  | 
|                         ("WORD", "NeedItemCnt", 0),  | 
|                         ("list", "NeedEquip", 0),  | 
|                         ("list", "AddAttrType", 0),  | 
|                         ("list", "AddAttrNum", 0),  | 
|                         ("DWORD", "BossID", 0),  | 
|                         ("DWORD", "BuffID", 0),  | 
|                         ("DWORD", "ExpRate", 0),  | 
|                         ("DWORD", "ExpLimit", 0),  | 
|                         ),  | 
|   | 
|                 "GodWeapon":(  | 
|                         ("WORD", "Type", 1),  | 
|                         ("WORD", "LV", 1),  | 
|                         ("DWORD", "Exp", 0),  | 
|                         ("list", "AttrType", 0),  | 
|                         ("list", "AttrNum", 0),  | 
|                         ("DWORD", "SkillID", 0),  | 
|                         ("char", "SysMark", 0),  | 
|                         ),  | 
|   | 
|                 "FuncConfig":(  | 
|                         ("char", "Key", 1),  | 
|                         ("char", "Numerical1", 0),  | 
|                         ("char", "Numerical2", 0),  | 
|                         ("char", "Numerical3", 0),  | 
|                         ("char", "Numerical4", 0),  | 
|                         ("char", "Numerical5", 0),  | 
|                         ),  | 
|   | 
|                 "FuncOpenLV":(  | 
|                         ("DWORD", "FuncId", 1),  | 
|                         ("DWORD", "LimitLV", 0),  | 
|                         ("DWORD", "LimitMagicWeapon", 0),  | 
|                         ("WORD", "LimiRealmLV", 0),  | 
|                         ("DWORD", "LimitMissionID", 0),  | 
|                         ("BYTE", "LimitVIPLV", 0),  | 
|                         ("char", "MailKey", 0),  | 
|                         ),  | 
|   | 
|                 "ItemCompound":(  | 
|                         ("WORD", "ID", 1),  | 
|                         ("BYTE", "ComposeGroup", 0),  | 
|                         ("list", "MakeID", 0),  | 
|                         ("BYTE", "IsFirstSuccMakeJobItem", 0),  | 
|                         ("list", "UnfixedItemID", 0),  | 
|                         ("BYTE", "UnfixedItemCount", 0),  | 
|                         ("list", "FixedItemID", 0),  | 
|                         ("list", "FixedItemCount", 0),  | 
|                         ("DWORD", "NeedMoney", 0),  | 
|                         ("WORD", "SuccessRate", 0),  | 
|                         ("WORD", "SuccessRateMax", 0),  | 
|                         ("list", "SuccessRateIncrease", 0),  | 
|                         ("BYTE", "AddonsCountMax", 0),  | 
|                         ("char", "SysMark", 0),  | 
|                         ("BYTE", "SysMarkParamType", 0),  | 
|                         ),  | 
|   | 
|                 "ItemPlus":(  | 
|                         ("BYTE", "Type", 1),  | 
|                         ("WORD", "LV", 1),  | 
|                         ("list", "AttrType", 0),  | 
|                         ("list", "AttrValue", 0),  | 
|                         ("DWORD", "CostCount", 0),  | 
|                         ("list", "CostItemInfo", 0),  | 
|                         ("DWORD", "AddExp", 0),  | 
|                         ("DWORD", "TotalExp", 0),  | 
|                         ),  | 
|   | 
|                 "ItemPlusMaster":(  | 
|                         ("BYTE", "ClassLV", 1),  | 
|                         ("WORD", "MasterPlusLV", 0),  | 
|                         ("list", "MasterPlusAttrIDList", 0),  | 
|                         ("list", "MasterPlusAttrValueList", 0),  | 
|                         ),  | 
|   | 
|                 "ItemPlusMax":(  | 
|                         ("BYTE", "Type", 1),  | 
|                         ("BYTE", "ClassLV", 1),  | 
|                         ("WORD", "PlusLVMax", 0),  | 
|                         ),  | 
|   | 
|                 "RoleEquipStars":(  | 
|                         ("BYTE", "StarsNeed", 1),  | 
|                         ("list", "AttrType", 0),  | 
|                         ("list", "AttrValue", 0),  | 
|                         ),  | 
|   | 
|                 "EquipLegendAttrCount":(  | 
|                         ("BYTE", "ItemType", 1),  | 
|                         ("BYTE", "ItemColor", 1),  | 
|                         ("BYTE", "IsSuit", 1),  | 
|                         ("BYTE", "ItemQuality", 1),  | 
|                         ("list", "LegendAttrCountInfo", 0),  | 
|                         ),  | 
|   | 
|                 "EquipLegendAttrType":(  | 
|                         ("BYTE", "ItemType", 1),  | 
|                         ("dict", "LegendAttrTypeLib", 0),  | 
|                         ),  | 
|   | 
|                 "EquipLegendAttrLib":(  | 
|                         ("BYTE", "LegendAttrID", 1),  | 
|                         ("dict", "LegendAttrLib", 0),  | 
|                         ),  | 
|   | 
|                 "EquipLegendAttrValue":(  | 
|                         ("BYTE", "ItemType", 1),  | 
|                         ("BYTE", "ItemClassLV", 1),  | 
|                         ("BYTE", "ItemColor", 1),  | 
|                         ("BYTE", "IsSuit", 1),  | 
|                         ("BYTE", "ItemQuality", 1),  | 
|                         ("dict", "LVLegendAttrLibNumInfo", 0),  | 
|                         ),  | 
|   | 
|                 "Dogz":(  | 
|                         ("BYTE", "DogzID", 1),  | 
|                         ("list", "BaseAttrTypes", 0),  | 
|                         ("list", "BaseAttrValues", 0),  | 
|                         ("list", "HelpBattleSkills", 0),  | 
|                         ("DWORD", "FightPowerEx", 0),  | 
|                         ("list", "EquipPlaceColorList", 0),  | 
|                         ("list", "HelpBattleNotify", 0),  | 
|                         ),  | 
|   | 
|                 "DogzEquipPlus":(  | 
|                         ("BYTE", "EquipPlace", 1),  | 
|                         ("BYTE", "PlusLV", 1),  | 
|                         ("list", "PlusAttrTypes", 0),  | 
|                         ("list", "PlusAttrValues", 0),  | 
|                         ("DWORD", "PlusLVUPTotalExp", 0),  | 
|                         ),  | 
|   | 
|                 "Rune":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("list", "AttrType", 0),  | 
|                         ("DWORD", "TowerID", 0),  | 
|                         ),  | 
|   | 
|                 "EquipWash":(  | 
|                         ("BYTE", "WashType", 1),  | 
|                         ("BYTE", "WashLV", 1),  | 
|                         ("BYTE", "AttrType1", 0),  | 
|                         ("DWORD", "AttrMax1", 0),  | 
|                         ("dict", "AttrRandDict1", 0),  | 
|                         ("DWORD", "AttrCostGoldMin1", 0),  | 
|                         ("DWORD", "AttrCostGoldMax1", 0),  | 
|                         ("BYTE", "AttrType2", 0),  | 
|                         ("DWORD", "AttrMax2", 0),  | 
|                         ("dict", "AttrRandDict2", 0),  | 
|                         ("DWORD", "AttrCostGoldMin2", 0),  | 
|                         ("DWORD", "AttrCostGoldMax2", 0),  | 
|                         ("BYTE", "AttrType3", 0),  | 
|                         ("DWORD", "AttrMax3", 0),  | 
|                         ("dict", "AttrRandDict3", 0),  | 
|                         ("DWORD", "AttrCostGoldMin3", 0),  | 
|                         ("DWORD", "AttrCostGoldMax3", 0),  | 
|                         ("DWORD", "CostItemID", 0),  | 
|                         ("BYTE", "CostItemCount", 0),  | 
|                         ("list", "GoldWashCostList", 0),  | 
|                         ),  | 
|   | 
|                 "AttrFruit":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("BYTE", "FuncID", 0),  | 
|                         ("dict", "MaxUseCnt", 0),  | 
|                         ("list", "AddItemInfo", 0),  | 
|                         ("WORD", "RecycleMoney", 0),  | 
|                         ("DWORD", "FightPowerEx", 0),  | 
|                         ),  | 
|   | 
|                 "PetInfo":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("BYTE", "Quality", 0),  | 
|                         ("char", "UnlockSys", 0),  | 
|                         ("DWORD", "UnLockNeedItemID", 0),  | 
|                         ("BYTE", "UnLockNeedItemCnt", 0),  | 
|                         ("DWORD", "DecomposeExp", 0),  | 
|                         ("BYTE", "InitRank", 0),  | 
|                         ("WORD", "MaxRank", 0),  | 
|                         ("WORD", "UseNeedRank", 0),  | 
|                         ("list", "SkillID", 0),  | 
|                         ("list", "SkillUnLock", 0),  | 
|                         ("list", "SkillUnLockSys", 0),  | 
|                         ("DWORD", "InitFightPower", 0),  | 
|                         ),  | 
|   | 
|                 "EquipDecompose":(  | 
|                         ("WORD", "LV", 1),  | 
|                         ("DWORD", "UpNeedExp", 0),  | 
|                         ("dict", "Attr", 0),  | 
|                         ),  | 
|   | 
|                 "PetClassCost":(  | 
|                         ("DWORD", "PetID", 1),  | 
|                         ("DWORD", "Class", 1),  | 
|                         ("DWORD", "UpNeedExp", 0),  | 
|                         ("DWORD", "AtkAdd", 0),  | 
|                         ),  | 
|   | 
|                 "PetEatEquip":(  | 
|                         ("BYTE", "EquipColor", 1),  | 
|                         ("BYTE", "EquipClass", 1),  | 
|                         ("DWORD", "Exp", 0),  | 
|                         ("DWORD", "FamilyStoreItemScore", 0),  | 
|                         ),  | 
|   | 
|                 "HorseLVUp":(  | 
|                         ("BYTE", "HorseLV", 1),  | 
|                         ("DWORD", "HorseSkinID", 0),  | 
|                         ("WORD", "NeedEatCount", 0),  | 
|                         ("list", "LVAttrType", 0),  | 
|                         ("list", "LVAttrValue", 0),  | 
|                         ),  | 
|   | 
|                 "HorseSkinPlus":(  | 
|                         ("BYTE", "ID", 1),  | 
|                         ("DWORD", "HorseSkinPlusID", 0),  | 
|                         ("DWORD", "UnlockItemID", 0),  | 
|                         ("BYTE", "UnlockItemCnt", 0),  | 
|                         ("list", "AttrType", 0),  | 
|                         ("list", "AttrValue", 0),  | 
|                         ("DWORD", "InitFightPower", 0),  | 
|                         ),  | 
|   | 
|                 "PlayerLV":(  | 
|                         ("WORD", "LV", 1),  | 
|                         ("DWORD", "ExpPoint", 0),  | 
|                         ("DWORD", "Exp", 0),  | 
|                         ("BYTE", "TalentPoint", 0),  | 
|                         ("DWORD", "ReExp", 0),  | 
|                         ("DWORD", "ReMaxHP", 0),  | 
|                         ("DWORD", "ReAtk", 0),  | 
|                         ("DWORD", "ReDef", 0),  | 
|                         ("DWORD", "ReHit", 0),  | 
|                         ("DWORD", "ReMiss", 0),  | 
|                         ("DWORD", "ReAtkSpeed", 0),  | 
|                         ("DWORD", "ReSkillAtkRate", 0),  | 
|                         ("DWORD", "ReDamagePer", 0),  | 
|                         ("DWORD", "ReDamReduce", 0),  | 
|                         ("DWORD", "ReIgnoreDefRate", 0),  | 
|                         ("DWORD", "ReLuckyHitRate", 0),  | 
|                         ("DWORD", "ReLuckyHit", 0),  | 
|                         ("DWORD", "ReBleedDamage", 0),  | 
|                         ("DWORD", "ReIceAtk", 0),  | 
|                         ("DWORD", "ReIceDef", 0),  | 
|                         ("DWORD", "RePetAtk", 0),  | 
|                         ("DWORD", "RePetSkillAtkRate", 0),  | 
|                         ("DWORD", "RePetDamPer", 0),  | 
|                         ("DWORD", "ReFinalHurt", 0),  | 
|                         ("DWORD", "ReFinalHurtReduce", 0),  | 
|                         ("DWORD", "RePotionReply", 0),  | 
|                         ("DWORD", "RePotionCD", 0),  | 
|                         ("DWORD", "AttackEff", 0),  | 
|                         ("DWORD", "ReFightPower", 0),  | 
|                         ("DWORD", "IceLodeFightPower", 0),  | 
|                         ),  | 
|   | 
|                 "GMAttr":(  | 
|                         ("DWORD", "GMAttrID", 1),  | 
|                         ("BYTE", "IsValid", 0),  | 
|                         ("char", "GMAccID", 0),  | 
|                         ("WORD", "GMMaxLV", 0),  | 
|                         ("WORD", "AttrLV", 0),  | 
|                         ("float", "AttrPer", 0),  | 
|                         ("dict", "AttrSpecDict", 0),  | 
|                         ("dict", "AttrExDict", 0),  | 
|                         ),  | 
|   | 
|                 "NPCStrengthen":(  | 
|                         ("DWORD", "NPCID", 1),  | 
|                         ("BYTE", "IsStrengthenByPlayerCount", 0),  | 
|                         ("BYTE", "LVStrengthenMark", 0),  | 
|                         ("BYTE", "LVStrengthenType", 0),  | 
|                         ("BYTE", "CmpNPCBaseLV", 0),  | 
|                         ("DWORD", "HitTime", 0),  | 
|                         ("DWORD", "DefCoefficient", 0),  | 
|                         ("DWORD", "AtkCoefficient", 0),  | 
|                         ("DWORD", "AdjustCoefficient", 0),  | 
|                         ("DWORD", "AtkInterval", 0),  | 
|                         ("DWORD", "HitRate", 0),  | 
|                         ("DWORD", "MissRate", 0),  | 
|                         ("DWORD", "MonterNum", 0),  | 
|                         ("DWORD", "IceAtkCoefficient", 0),  | 
|                         ("DWORD", "IceDefCoefficient", 0),  | 
|                         ("DWORD", "MaxEnduranceTime", 0),  | 
|                         ("DWORD", "FightPowerCoefficient", 0),  | 
|                         ),  | 
|   | 
|                 "NPCTimeLostHP":(  | 
|                         ("DWORD", "NPCID", 1),  | 
|                         ("DWORD", "LostHPPerSecond", 0),  | 
|                         ("BYTE", "MaxPlayerCount", 0),  | 
|                         ("DWORD", "LostHPPerSecondEx", 0),  | 
|                         ("BYTE", "FightPowerMinByLV", 0),  | 
|                         ("DWORD", "FightPowerMin", 0),  | 
|                         ("DWORD", "FightPowerMax", 0),  | 
|                         ("DWORD", "EveryFightPower", 0),  | 
|                         ("DWORD", "EveryFightPowerLostHPEx", 0),  | 
|                         ),  | 
|   | 
|                 "EquipSuitAttr":(  | 
|                         ("WORD", "SuiteID", 1),  | 
|                         ("BYTE", "SuiteCnt", 0),  | 
|                         ("BYTE", "Star", 0),  | 
|                         ("dict", "AttrInfo", 0),  | 
|                         ("DWORD", "SkillID", 0),  | 
|                         ("BYTE", "IsNotify", 0),  | 
|                         ("WORD", "ActivateIndex", 0),  | 
|                         ),  | 
|   | 
|                 "WingRefineAttr":(  | 
|                         ("BYTE", "WingClassLV", 1),  | 
|                         ("dict", "AttrInfo", 0),  | 
|                         ("dict", "ItemColorInfo", 0),  | 
|                         ("DWORD", "MaxRefineExp", 0),  | 
|                         ),  | 
|   | 
|                 "WingRefineExp":(  | 
|                         ("DWORD", "ItemID", 1),  | 
|                         ("DWORD", "RandExpMin", 0),  | 
|                         ("DWORD", "RandExpMax", 0),  | 
|                         ("dict", "ExpMaterial", 0),  | 
|                         ),  | 
|   | 
|                 "FamilyTech":(  | 
|                         ("DWORD", "TechID", 1),  | 
|                         ("BYTE", "AttrType", 0),  | 
|                         ("DWORD", "AttrValue", 0),  | 
|                         ("DWORD", "Contribution", 0),  | 
|                         ("DWORD", "PowerEx", 0),  | 
|                         ),  | 
|   | 
|                 "FightPowerParam":(  | 
|                         ("WORD", "LV", 1),  | 
|                         ("DWORD", "CftHit", 0),  | 
|                         ("DWORD", "CftMiss", 0),  | 
|                         ("DWORD", "CftIgnoreDefRate", 0),  | 
|                         ("DWORD", "CftDamChanceDef", 0),  | 
|                         ("DWORD", "CftFaintRate", 0),  | 
|                         ("DWORD", "CftSuperHitRateReduce", 0),  | 
|                         ("DWORD", "CftSuperHitRate", 0),  | 
|                         ("DWORD", "CftLuckyHitRate", 0),  | 
|                         ("DWORD", "CftLuckyHitRateReduce", 0),  | 
|                         ("DWORD", "CftSkillAtkRate", 0),  | 
|                         ("DWORD", "CftSkillAtkRateReduce", 0),  | 
|                         ("DWORD", "CftFinalHurtPer", 0),  | 
|                         ("DWORD", "CftFinalHurtReducePer", 0),  | 
|                         ("DWORD", "CftDamagePerPVP", 0),  | 
|                         ("DWORD", "CftDamagePerPVPReduce", 0),  | 
|                         ("DWORD", "CftNPCHurtAddPer", 0),  | 
|                         ("DWORD", "CftNormalHurtPer", 0),  | 
|                         ("DWORD", "CftFabaoHurtPer", 0),  | 
|                         ("DWORD", "CftDamBackPer", 0),  | 
|                         ("DWORD", "CftIgnoreDefRateReduce", 0),  | 
|                         ("DWORD", "CftFaintDefRate", 0),  | 
|                         ("DWORD", "CftAtkSpeed", 0),  | 
|                         ("DWORD", "CftJobAHurtAddPer", 0),  | 
|                         ("DWORD", "CftJobBHurtAddPer", 0),  | 
|                         ("DWORD", "CftJobCHurtAddPer", 0),  | 
|                         ("DWORD", "CftJobAAtkReducePer", 0),  | 
|                         ("DWORD", "CftJobBAtkReducePer", 0),  | 
|                         ("DWORD", "CftJobCAtkReducePer", 0),  | 
|                         ),  | 
|   | 
|                 "NPCDropItem":(  | 
|                         ("DWORD", "NPCID", 1),  | 
|                         ("WORD", "MaxWorldLV", 0),  | 
|                         ("WORD", "MaxDropLV", 0),  | 
|                         ("BYTE", "CanDropRatePlus", 0),  | 
|                         ("BYTE", "IsDropJobSelf", 0),  | 
|                         ("list", "PieRateDrop", 0),  | 
|                         ("BYTE", "PieRateDoCnt", 0),  | 
|                         ("dict", "IndepRateDrop", 0),  | 
|                         ("BYTE", "IndepRateDoCnt", 0),  | 
|                         ("dict", "EquipColorMaxDropCount", 0),  | 
|                         ("dict", "EquipColorSuitInfo", 0),  | 
|                         ("dict", "EquipPartKeyRateInfo", 0),  | 
|                         ("BYTE", "ColorSuitPartOptimization", 0),  | 
|                         ("dict", "KillCountDropEquipPub", 0),  | 
|                         ("dict", "ItemIDDropRate", 0),  | 
|                         ("dict", "ItemIDMaxDropCount", 0),  | 
|                         ("dict", "ItemKeyDropRate", 0),  | 
|                         ("dict", "ItemKeyDropRateJob", 0),  | 
|                         ("dict", "ItemKeyMaxDropCount", 0),  | 
|                         ("BYTE", "DropMoneyDoCnt", 0),  | 
|                         ("WORD", "DropMoneyRate", 0),  | 
|                         ("WORD", "DropMoneyMin", 0),  | 
|                         ("WORD", "DropMoneyMax", 0),  | 
|                         ("dict", "KillCountDropPub", 0),  | 
|                         ("list", "KillCountDropPri", 0),  | 
|                         ("list", "PriItemIDDrop", 0),  | 
|                         ("BYTE", "AucionItemCanSell", 0),  | 
|                         ),  | 
|   | 
|                 "RuneTower":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("DWORD", "RunePoint", 0),  | 
|                         ("DWORD", "Ysog", 0),  | 
|                         ("DWORD", "NPCID", 0),  | 
|                         ("BYTE", "IsNotify", 0),  | 
|                         ("list", "FixEndAward", 0),  | 
|                         ("dict", "GoodDrop", 0),  | 
|                         ("DWORD", "SweepRunePoint", 0),  | 
|                         ("DWORD", "SweepYsog", 0),  | 
|                         ("dict", "SweepGoodDrop", 0),  | 
|                         ),  | 
|   | 
|                 "ChinMap":(  | 
|                         ("DWORD", "MapID", 1),  | 
|                         ("BYTE", "CanRide", 0),  | 
|                         ("BYTE", "CanOutPet", 0),  | 
|                         ),  | 
|   | 
|                 "FBFunc":(  | 
|                         ("DWORD", "DataMapID", 1),  | 
|                         ("BYTE", "DayTimes", 0),  | 
|                         ("BYTE", "DayResetType", 0),  | 
|                         ("BYTE", "WeekTimes", 0),  | 
|                         ("BYTE", "WeekResetType", 0),  | 
|                         ("list", "RewardRate", 0),  | 
|                         ("DWORD", "BuyTimesVIPPriID", 0),  | 
|                         ("DWORD", "ExtraTimesVIPPriID", 0),  | 
|                         ("DWORD", "ExtraTimesMWPriID", 0),  | 
|                         ("BYTE", "GuardPick", 0),  | 
|                         ("WORD", "OfflineTime", 0),  | 
|                         ("WORD", "FBPoint", 0),  | 
|                         ("WORD", "HelpPoint", 0),  | 
|                         ("BYTE", "DayHelpCountMax", 0),  | 
|                         ),  | 
|   | 
|                 "FBLine":(  | 
|                         ("DWORD", "DataMapID", 1),  | 
|                         ("BYTE", "LineID", 1),  | 
|                         ("DWORD", "MapID", 0),  | 
|                         ("WORD", "LVLimitMin", 0),  | 
|                         ("WORD", "LVLimitMax", 0),  | 
|                         ("DWORD", "TicketID", 0),  | 
|                         ("list", "TicketCostCnt", 0),  | 
|                         ("WORD", "TicketPrice", 0),  | 
|                         ("WORD", "SweepLVLimit", 0),  | 
|                         ("DWORD", "SweepItemID", 0),  | 
|                         ("BYTE", "SweepCostCnt", 0),  | 
|                         ("eval", "EnterPosInfo", 0),  | 
|                         ("eval", "StepTime", 0),  | 
|                         ("eval", "RefreshNPC", 0),  | 
|                         ("eval", "GradeInfo", 0),  | 
|                         ("eval", "RewardInfo", 0),  | 
|                         ),  | 
|   | 
|                 "FBHelpBattle":(  | 
|                         ("DWORD", "DataMapID", 1),  | 
|                         ("BYTE", "LineID", 1),  | 
|                         ("DWORD", "FightPowerMin", 0),  | 
|                         ("DWORD", "RobotFightPower", 0),  | 
|                         ("WORD", "RobotLV", 0),  | 
|                         ("DWORD", "RobotBaseHurt", 0),  | 
|                         ("WORD", "RobotHPCoefficient", 0),  | 
|                         ("dict", "RobotSkillsDict", 0),  | 
|                         ),  | 
|   | 
|                 "NPCCustomRefresh":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("list", "RefreshMarkInfo", 0),  | 
|                         ("DWORD", "RefreshNPCID", 0),  | 
|                         ("list", "RandNPCIDList", 0),  | 
|                         ("list", "NPCIDCountList", 0),  | 
|                         ("WORD", "MaxCount", 0),  | 
|                         ("WORD", "TotalMaxCount", 0),  | 
|                         ("BYTE", "IsLineOneOnly", 0),  | 
|                         ("DWORD", "RefreshTick", 0),  | 
|                         ("BYTE", "IsRepeat", 0),  | 
|                         ),  | 
|   | 
|                 "DailyAction":(  | 
|                         ("DWORD", "DailyID", 1),  | 
|                         ("dict", "OpenTimeDict", 0),  | 
|                         ("DWORD", "Duration", 0),  | 
|                         ("DWORD", "DayTimes", 0),  | 
|                         ("DWORD", "DayBuyTimes", 0),  | 
|                         ("DWORD", "BuyNeedMoney", 0),  | 
|                         ("DWORD", "DayItemAddTimes", 0),  | 
|                         ("DWORD", "DayItemID", 0),  | 
|                         ("BYTE", "DayResetType", 0),  | 
|                         ("DWORD", "WeekTimes", 0),  | 
|                         ("BYTE", "WeekResetType", 0),  | 
|                         ),  | 
|   | 
|                 "EquipGSParam":(  | 
|                         ("BYTE", "ClassLV", 1),  | 
|                         ("BYTE", "EquipColor", 1),  | 
|                         ("BYTE", "IsSuit", 1),  | 
|                         ("BYTE", "ItemQuality", 1),  | 
|                         ("DWORD", "BaseEquipMaxHPAddPerC", 0),  | 
|                         ("DWORD", "BaseEquipAtkAddPerC", 0),  | 
|                         ("DWORD", "SuperHitC", 0),  | 
|                         ("DWORD", "SuperHitPerC", 0),  | 
|                         ("DWORD", "LuckyHitRateC", 0),  | 
|                         ("DWORD", "LuckyHitRateReduceC", 0),  | 
|                         ("DWORD", "LuckPerC", 0),  | 
|                         ("DWORD", "PerLVAtkC", 0),  | 
|                         ("DWORD", "PerLVMaxHPC", 0),  | 
|                         ("DWORD", "DropMoneyPerC", 0),  | 
|                         ("DWORD", "SuperHitReduceC", 0),  | 
|                         ("DWORD", "SuperHitRateReduceC", 0),  | 
|                         ("DWORD", "HitC", 0),  | 
|                         ("DWORD", "MissC", 0),  | 
|                         ("DWORD", "PetDamPerC", 0),  | 
|                         ("DWORD", "MaxHPPerC", 0),  | 
|                         ("DWORD", "AtkPerC", 0),  | 
|                         ("DWORD", "SkillAtkRateC", 0),  | 
|                         ("DWORD", "SkillAtkRateReduceC", 0),  | 
|                         ("DWORD", "SkillAddPer1C", 0),  | 
|                         ("DWORD", "SkillAddPer2C", 0),  | 
|                         ("DWORD", "SkillAddPer3C", 0),  | 
|                         ("DWORD", "SkillAddPer4C", 0),  | 
|                         ("DWORD", "SkillAddPer5C", 0),  | 
|                         ("DWORD", "SkillAddPer6C", 0),  | 
|                         ("DWORD", "SkillAddPer7C", 0),  | 
|                         ("DWORD", "SkillReducePer1C", 0),  | 
|                         ("DWORD", "SkillReducePer2C", 0),  | 
|                         ("DWORD", "SkillReducePer3C", 0),  | 
|                         ("DWORD", "SkillReducePer4C", 0),  | 
|                         ("DWORD", "SkillReducePer5C", 0),  | 
|                         ("DWORD", "SkillReducePer6C", 0),  | 
|                         ("DWORD", "SkillReducePer7C", 0),  | 
|                         ("DWORD", "ReduceSkillCDPerC", 0),  | 
|                         ("DWORD", "LuckyHitPerC", 0),  | 
|                         ("DWORD", "FaintDefRateC", 0),  | 
|                         ("DWORD", "SuperHitRateC", 0),  | 
|                         ),  | 
|   | 
|                 "Success":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("WORD", "Type", 0),  | 
|                         ("DWORD", "NeedCnt", 0),  | 
|                         ("list", "Condition", 0),  | 
|                         ("list", "PreSuccess", 0),  | 
|                         ("dict", "AwardItem", 0),  | 
|                         ("dict", "Money", 0),  | 
|                         ("DWORD", "Exp", 0),  | 
|                         ("dict", "AwardAttr", 0),  | 
|                         ("DWORD", "RedPacketID", 0),  | 
|                         ("DWORD", "MagicWeaponID", 0),  | 
|                         ("DWORD", "MagicWeaponExp", 0),  | 
|                         ),  | 
|   | 
|                 "Treasure":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("BYTE", "TreasureType", 0),  | 
|                         ("DWORD", "PreTreasure", 0),  | 
|                         ("DWORD", "FBMapID", 0),  | 
|                         ("DWORD", "FBLineID", 0),  | 
|                         ("DWORD", "NeedLV", 0),  | 
|                         ("dict", "NeedItem", 0),  | 
|                         ),  | 
|   | 
|                 "TreasureUp":(  | 
|                         ("DWORD", "MWID", 1),  | 
|                         ("BYTE", "LV", 1),  | 
|                         ("DWORD", "NeedExp", 0),  | 
|                         ("dict", "AddAttr", 0),  | 
|                         ("list", "UnLockSkill", 0),  | 
|                         ("DWORD", "PowerEx", 0),  | 
|                         ),  | 
|   | 
|                 "ContineSignAward":(  | 
|                         ("BYTE", "ContineDay", 1),  | 
|                         ("list", "ItemID", 0),  | 
|                         ("BYTE", "IsBind", 0),  | 
|                         ("list", "ItemNum", 0),  | 
|                         ("list", "JobItemList", 0),  | 
|                         ),  | 
|   | 
|                 "SignAward":(  | 
|                         ("BYTE", "RewardID", 1),  | 
|                         ("list", "ItemID", 0),  | 
|                         ("BYTE", "IsBind", 0),  | 
|                         ("BYTE", "VipLv", 0),  | 
|                         ("list", "OrdinaryNum", 0),  | 
|                         ("BYTE", "VipMultiple", 0),  | 
|                         ),  | 
|   | 
|                 "VIPAward":(  | 
|                         ("BYTE", "VIPLV", 1),  | 
|                         ("dict", "ItemID", 0),  | 
|                         ("WORD", "Price", 0),  | 
|                         ("WORD", "OldPrice", 0),  | 
|                         ),  | 
|   | 
|                 "AppointItem":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("BYTE", "CancelUseLimit", 0),  | 
|                         ("list", "LegendAttrID", 0),  | 
|                         ("list", "LegendAttrValue", 0),  | 
|                         ),  | 
|   | 
|                 "AuctionItem":(  | 
|                         ("DWORD", "AuctionItemID", 1),  | 
|                         ),  | 
|   | 
|                 "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),  | 
|                         ),  | 
|   | 
|                 "Store":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("DWORD", "ShopType", 0),  | 
|                         ("BYTE", "OperationActionShop", 0),  | 
|                         ("DWORD", "ItemID", 0),  | 
|                         ("WORD", "ItemCnt", 0),  | 
|                         ("BYTE", "IsBind", 0),  | 
|                         ("list", "ItemListEx", 0),  | 
|                         ("DWORD", "MainItemID", 0),  | 
|                         ("list", "JobItem", 0),  | 
|                         ("BYTE", "RefreshType", 0),  | 
|                         ("list", "LimitVIPLV", 0),  | 
|                         ("DWORD", "LimitLV", 0),  | 
|                         ("list", "LimitCnt", 0),  | 
|                         ("DWORD", "ServerLimitCnt", 0),  | 
|                         ("BYTE", "MoneyType", 0),  | 
|                         ("DWORD", "MoneyNum", 0),  | 
|                         ("DWORD", "MoneyOriginal", 0),  | 
|                         ("DWORD", "LimitValue", 0),  | 
|                         ("char", "NotifyMark", 0),  | 
|                         ("char", "MailKey", 0),  | 
|                         ),  | 
|   | 
|                 "ActSpringSale":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("list", "StartTimeList", 0),  | 
|                         ("list", "EndTimeList", 0),  | 
|                         ("WORD", "AdvanceMinutes", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ("dict", "ShopTypeList", 0),  | 
|                         ("char", "MailKey", 0),  | 
|                         ("list", "MailItemPrize", 0),  | 
|                         ),  | 
|   | 
|                 "DailyQuest":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("BYTE", "RelatedType", 0),  | 
|                         ("DWORD", "RelatedID", 0),  | 
|                         ("WORD", "UnLockFuncID", 0),  | 
|                         ("BYTE", "OnceActivityTime", 0),  | 
|                         ("BYTE", "OnceActivity", 0),  | 
|                         ("WORD", "TotalActiveValue", 0),  | 
|                         ),  | 
|   | 
|                 "DailyLivenessReward":(  | 
|                         ("BYTE", "ID", 1),  | 
|                         ("WORD", "Liveness", 0),  | 
|                         ("list", "StageLV", 0),  | 
|                         ("list", "ItemID", 0),  | 
|                         ("list", "ItemCount", 0),  | 
|                         ("list", "ItemBind", 0),  | 
|                         ),  | 
|   | 
|                 "ActivityPlaceReward":(  | 
|                         ("BYTE", "ID", 1),  | 
|                         ("BYTE", "PlaceCount", 0),  | 
|                         ("WORD", "PlaceMaxLV", 0),  | 
|                         ("list", "FixedItemRewardList", 0),  | 
|                         ("BYTE", "RandItemCountA", 0),  | 
|                         ("list", "RandItemRewardListA", 0),  | 
|                         ("BYTE", "RandItemCountB", 0),  | 
|                         ("list", "RandItemRewardListB", 0),  | 
|                         ),  | 
|   | 
|                 "RefineStove":(  | 
|                         ("BYTE", "StoveLV", 1),  | 
|                         ("DWORD", "UpNeedExp", 0),  | 
|                         ),  | 
|   | 
|                 "Alchemy":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("DWORD", "AlchemItemID", 0),  | 
|                         ("BYTE", "AlchemType", 0),  | 
|                         ("BYTE", "AlchemyQuality", 0),  | 
|                         ("DWORD", "LearnNeedItemID", 0),  | 
|                         ("BYTE", "LearnNeedAlchemLV", 0),  | 
|                         ("WORD", "LearnNeedLingGenPoint", 0),  | 
|                         ("WORD", "NeedTime", 0),  | 
|                         ("WORD", "AlchemyExp", 0),  | 
|                         ("dict", "Material", 0),  | 
|                         ),  | 
|   | 
|                 "AlchemyResult":(  | 
|                         ("BYTE", "AlchemyQuality", 1),  | 
|                         ("DWORD", "LuckValue", 0),  | 
|                         ("list", "CntRateList", 0),  | 
|                         ),  | 
|   | 
|                 "BOSSInfo":(  | 
|                         ("DWORD", "NPCID", 1),  | 
|                         ("DWORD", "MapID", 0),  | 
|                         ("BYTE", "RefreshMark", 0),  | 
|                         ("BYTE", "IsNeedShunt", 0),  | 
|                         ("BYTE", "RelatedType", 0),  | 
|                         ("WORD", "RelatedID", 0),  | 
|                         ("DWORD", "StoneNPCID", 0),  | 
|                         ("BYTE", "CanAssist", 0),  | 
|                         ),  | 
|   | 
|                 "BOSSFirstKill":(  | 
|                         ("DWORD", "NPCID", 1),  | 
|                         ("WORD", "PerPlayerMoneyAward", 0),  | 
|                         ("list", "PersonFirstKillAward", 0),  | 
|                         ),  | 
|   | 
|                 "ElderGodArea":(  | 
|                         ("DWORD", "NPCID", 1),  | 
|                         ("BYTE", "MonsterAnger", 0),  | 
|                         ),  | 
|   | 
|                 "PersonalBoss":(  | 
|                         ("DWORD", "NPCID", 0),  | 
|                         ("DWORD", "FuncLineID", 1),  | 
|                         ),  | 
|   | 
|                 "FamilyActivity":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("WORD", "UnLockFuncID", 0),  | 
|                         ("BYTE", "TotalActivityTime", 0),  | 
|                         ("WORD", "SingleTimes", 0),  | 
|                         ("WORD", "SingleActiveValue", 0),  | 
|                         ),  | 
|   | 
|                 "FamilyRedPack":(  | 
|                         ("WORD", "ID", 1),  | 
|                         ("WORD", "GetType", 0),  | 
|                         ("WORD", "MoneyNum", 0),  | 
|                         ("BYTE", "MoneyType", 0),  | 
|                         ("BYTE", "PacketCnt", 0),  | 
|                         ),  | 
|   | 
|                 "ActFeastRedPacketSucc":(  | 
|                         ("BYTE", "FeastDay", 1),  | 
|                         ("list", "FeastSuccIDList", 0),  | 
|                         ),  | 
|   | 
|                 "NPCShow":(  | 
|                         ("DWORD", "NPCID", 1),  | 
|                         ("DWORD", "MapID", 1),  | 
|                         ("BYTE", "LineID", 0),  | 
|                         ("DWORD", "ProtectTime", 0),  | 
|                         ("DWORD", "BindMissionID", 0),  | 
|                         ("BYTE", "ShowType", 0),  | 
|                         ),  | 
|   | 
|                 "SealDemon":(  | 
|                         ("DWORD", "NPCID", 1),  | 
|                         ("BYTE", "LineID", 0),  | 
|                         ("list", "OwnerAwardItemEx", 0),  | 
|                         ),  | 
|   | 
|                 "FbEncourage":(  | 
|                         ("DWORD", "DataMapID", 1),  | 
|                         ("BYTE", "InspireType", 1),  | 
|                         ("WORD", "InspireMaxLV", 0),  | 
|                         ("char", "MoneyCount", 0),  | 
|                         ),  | 
|   | 
|                 "MapRefreshNPC":(  | 
|                         ("DWORD", "MapID", 1),  | 
|                         ("BYTE", "RefreshNum", 0),  | 
|                         ("list", "NPCIDList", 0),  | 
|                         ("list", "RefreshMarkList", 0),  | 
|                         ("BYTE", "PointMaxCount", 0),  | 
|                         ("BYTE", "TotalMaxCount", 0),  | 
|                         ("BYTE", "RefreshSeconds", 0),  | 
|                         ("BYTE", "RefreshPerMinutes", 0),  | 
|                         ),  | 
|   | 
|                 "RuneCompound":(  | 
|                         ("DWORD", "TagItemID", 1),  | 
|                         ("list", "NeedItem", 0),  | 
|                         ("WORD", "NeedMJ", 0),  | 
|                         ),  | 
|   | 
|                 "ResourcesBack":(  | 
|                         ("BYTE", "ID", 1),  | 
|                         ("DWORD", "RelatedID", 0),  | 
|                         ("BYTE", "CanBackTimes", 0),  | 
|                         ("BYTE", "NormalCostJade", 0),  | 
|                         ("WORD", "VipCostJade", 0),  | 
|                         ("dict", "JadeReward", 0),  | 
|                         ("DWORD", "CostCopper", 0),  | 
|                         ("dict", "CopperReward", 0),  | 
|                         ("list", "JobItemList", 0),  | 
|                         ),  | 
|   | 
|                 "CollectNPC":(  | 
|                         ("DWORD", "NPCID", 1),  | 
|                         ("BYTE", "IsMissionCollectNPC", 0),  | 
|                         ("BYTE", "PrepareTime", 0),  | 
|                         ("list", "LostHPPer", 0),  | 
|                         ("BYTE", "MaxCollectCount", 0),  | 
|                         ("BYTE", "CollectResetType", 0),  | 
|                         ("char", "CollectCountLimitNotify", 0),  | 
|                         ("list", "CollectAward", 0),  | 
|                         ("dict", "CollectAppointAward", 0),  | 
|                         ("BYTE", "AlchemyDiffLV", 0),  | 
|                         ("BYTE", "NotifyCollectResult", 0),  | 
|                         ("BYTE", "CanBreakCollect", 0),  | 
|                         ),  | 
|   | 
|                 "TreasureNPC":(  | 
|                         ("DWORD", "NPCID", 1),  | 
|                         ("dict", "AttackCountDropWeightInfo", 0),  | 
|                         ("list", "AttackDropWeightList", 0),  | 
|                         ("list", "AttackDropWeightListEx", 0),  | 
|                         ("BYTE", "DropCountEx", 0),  | 
|                         ("BYTE", "AlchemyDiffLV", 0),  | 
|                         ("char", "NotDropNotify", 0),  | 
|                         ),  | 
|   | 
|                 "Chests":(  | 
|                         ("DWORD", "ChestsItemID", 1),  | 
|                         ("DWORD", "CostItemID", 0),  | 
|                         ("BYTE", "CostItemCount", 0),  | 
|                         ("WORD", "CostGold", 0),  | 
|                         ("BYTE", "ShowType", 0),  | 
|                         ("BYTE", "IsBind", 0),  | 
|                         ("BYTE", "AucionItemCanSell", 0),  | 
|                         ),  | 
|   | 
|                 "ChestsAward":(  | 
|                         ("DWORD", "ChestsItemID", 1),  | 
|                         ("WORD", "AwardLV", 0),  | 
|                         ("dict", "SelectItemDict", 0),  | 
|                         ("dict", "FixedItemDict", 0),  | 
|                         ("list", "RandItemList1", 0),  | 
|                         ("list", "RandTimeList1", 0),  | 
|                         ("list", "RandItemList2", 0),  | 
|                         ("list", "RandTimeList2", 0),  | 
|                         ("dict", "RandItemByUseCount", 0),  | 
|                         ("list", "JobItemList", 0),  | 
|                         ("BYTE", "MoneyType", 0),  | 
|                         ("DWORD", "MoneyCount", 0),  | 
|                         ("list", "NeedNotifyItemList", 0),  | 
|                         ("BYTE", "IsDropJobSelf", 0),  | 
|                         ("list", "PieRateDrop", 0),  | 
|                         ("BYTE", "PieRateDoCnt", 0),  | 
|                         ("dict", "IndepRateDrop", 0),  | 
|                         ("dict", "EquipColorSuitInfo", 0),  | 
|                         ("dict", "EquipPartKeyRateInfo", 0),  | 
|                         ),  | 
|   | 
|                 "VIPKillNPC":(  | 
|                         ("WORD", "KillLV", 1),  | 
|                         ("DWORD", "LVExpPoint", 0),  | 
|                         ("DWORD", "LVExp", 0),  | 
|                         ("DWORD", "AddMinAtk", 0),  | 
|                         ("DWORD", "AddMaxAtk", 0),  | 
|                         ),  | 
|   | 
|                 "OSCBillRankAward":(  | 
|                         ("BYTE", "OSCBillType", 1),  | 
|                         ("BYTE", "RankA", 0),  | 
|                         ("BYTE", "RankB", 0),  | 
|                         ("dict", "RankAward", 0),  | 
|                         ),  | 
|   | 
|                 "OSCBillTagAward":(  | 
|                         ("BYTE", "OSCBillType", 1),  | 
|                         ("WORD", "TagCondition", 0),  | 
|                         ("dict", "TagAward", 0),  | 
|                         ),  | 
|   | 
|                 "LoginDayAward":(  | 
|                         ("BYTE", "DayID", 1),  | 
|                         ("dict", "Reward", 0),  | 
|                         ),  | 
|   | 
|                 "OnlineAward":(  | 
|                         ("BYTE", "DayID", 1),  | 
|                         ("list", "StageTime", 0),  | 
|                         ("dict", "Reward", 0),  | 
|                         ),  | 
|   | 
|                 "SpringSale":(  | 
|                         ("BYTE", "GiftID", 1),  | 
|                         ("BYTE", "SellDay", 0),  | 
|                         ("BYTE", "BuyNumLimit", 0),  | 
|                         ("WORD", "GiftPrice", 0),  | 
|                         ("list", "GiftItemList", 0),  | 
|                         ),  | 
|   | 
|                 "OrderInfo":(  | 
|                         ("char", "OrderInfo", 1),  | 
|                         ("char", "AppID", 1),  | 
|                         ("float", "PayRMBNum", 0),  | 
|                         ("DWORD", "CTGID", 0),  | 
|                         ("DWORD", "GiftbagID", 0),  | 
|                         ),  | 
|   | 
|                 "CTG":(  | 
|                         ("BYTE", "RecordID", 1),  | 
|                         ("BYTE", "CanResetBuyCount", 0),  | 
|                         ("BYTE", "TotalBuyCount", 0),  | 
|                         ("BYTE", "DailyBuyCount", 0),  | 
|                         ("WORD", "GainGold", 0),  | 
|                         ("WORD", "GainGoldPrize", 0),  | 
|                         ("WORD", "FirstGoldPrize", 0),  | 
|                         ("list", "GainItemList", 0),  | 
|                         ("char", "NotifyMark", 0),  | 
|                         ),  | 
|   | 
|                 "FirstGold":(  | 
|                         ("BYTE", "Day", 1),  | 
|                         ("dict", "JobItemInfo", 0),  | 
|                         ("list", "CommItemList", 0),  | 
|                         ),  | 
|   | 
|                 "LVAward":(  | 
|                         ("BYTE", "AwardID", 1),  | 
|                         ("WORD", "LV", 0),  | 
|                         ("WORD", "LimitCnt", 0),  | 
|                         ("dict", "Reward", 0),  | 
|                         ("BYTE", "VIPLimit", 0),  | 
|                         ("list", "VIPAward", 0),  | 
|                         ),  | 
|   | 
|                 "Invest":(  | 
|                         ("WORD", "ID", 1),  | 
|                         ("BYTE", "Type", 0),  | 
|                         ("BYTE", "NeedDay", 0),  | 
|                         ("WORD", "NeedLV", 0),  | 
|                         ("dict", "Reward", 0),  | 
|                         ),  | 
|   | 
|                 "XBXZ":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("BYTE", "Type", 0),  | 
|                         ("DWORD", "NeedCnt", 0),  | 
|                         ("list", "Condition", 0),  | 
|                         ("WORD", "MWID", 0),  | 
|                         ("list", "AwardItem", 0),  | 
|                         ("list", "Money", 0),  | 
|                         ),  | 
|   | 
|                 "TreasureHouse":(  | 
|                         ("BYTE", "TreasureType", 1),  | 
|                         ("WORD", "MinLV", 0),  | 
|                         ("dict", "GridItemInfo", 0),  | 
|                         ("list", "JobItemList", 0),  | 
|                         ("list", "GridItemRateListFree", 0),  | 
|                         ("list", "FreeGridItemRateList2", 0),  | 
|                         ("dict", "FreeGridItemRateList3", 0),  | 
|                         ("list", "GridItemRateList1", 0),  | 
|                         ("list", "GridItemRateList2", 0),  | 
|                         ("dict", "GridItemRateList3", 0),  | 
|                         ("BYTE", "LuckyGridNum", 0),  | 
|                         ),  | 
|   | 
|                 "FreeGoods":(  | 
|                         ("BYTE", "ID", 1),  | 
|                         ("dict", "AwardItem", 0),  | 
|                         ("WORD", "NeedMoney", 0),  | 
|                         ("DWORD", "ReturnTime", 0),  | 
|                         ),  | 
|   | 
|                 "ActFlashGiftbag":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("list", "StartTimeList", 0),  | 
|                         ("list", "EndTimeList", 0),  | 
|                         ("WORD", "AdvanceMinutes", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ("dict", "GiftbagTypeList", 0),  | 
|                         ("char", "MailKey", 0),  | 
|                         ("list", "MailItemPrize", 0),  | 
|                         ),  | 
|   | 
|                 "FlashGiftbag":(  | 
|                         ("DWORD", "GiftbagID", 1),  | 
|                         ("WORD", "GiftbagType", 0),  | 
|                         ("DWORD", "OriginalRMB", 0),  | 
|                         ("WORD", "BuyCountLimit", 0),  | 
|                         ("list", "GiftItemList", 0),  | 
|                         ("DWORD", "MainItemID", 0),  | 
|                         ("char", "NotifyKey", 0),  | 
|                         ),  | 
|   | 
|                 "ActExpRate":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("DWORD", "AddExpRate", 0),  | 
|                         ),  | 
|   | 
|                 "ActCostRebate":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ("list", "TemplateIDList", 0),  | 
|                         ),  | 
|   | 
|                 "CostRebateTemplate":(  | 
|                         ("DWORD", "TemplateID", 1),  | 
|                         ("DWORD", "NeedCostGold", 0),  | 
|                         ("BYTE", "AwardIndex", 0),  | 
|                         ("dict", "AwardItemList", 0),  | 
|                         ("char", "NotifyKey", 0),  | 
|                         ),  | 
|   | 
|                 "ActBossReborn":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("BYTE", "TemplateID", 0),  | 
|                         ),  | 
|   | 
|                 "BossReborn":(  | 
|                         ("BYTE", "TemplateID", 1),  | 
|                         ("BYTE", "ID", 1),  | 
|                         ("DWORD", "TotalTimes", 0),  | 
|                         ("WORD", "SingleTimes", 0),  | 
|                         ("dict", "Reward", 0),  | 
|                         ),  | 
|   | 
|                 "ActRealmPoint":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("WORD", "Multiple", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("DWORD", "PointLimit", 0),  | 
|                         ),  | 
|   | 
|                 "TrialExchange":(  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("list", "ExchangeItemIDList", 0),  | 
|                         ("DWORD", "ExchangeItemCount", 0),  | 
|                         ("DWORD", "ExchangeItemIsBind", 0),  | 
|                         ("DWORD", "CostItemID", 0),  | 
|                         ("DWORD", "CostItemCount", 0),  | 
|                         ),  | 
|   | 
|                 "AllPeopleParty":(  | 
|                         ("BYTE", "ID", 1),  | 
|                         ("WORD", "TotalTimes", 0),  | 
|                         ("WORD", "AddPoint", 0),  | 
|                         ),  | 
|   | 
|                 "AllPeoplePartyAward":(  | 
|                         ("BYTE", "WorldLvNum", 1),  | 
|                         ("DWORD", "Index", 1),  | 
|                         ("DWORD", "NeedPoint", 0),  | 
|                         ("dict", "Award", 0),  | 
|                         ),  | 
|   | 
|                 "MapEventPoint":(  | 
|                         ("DWORD", "MapID", 1),  | 
|                         ("DWORD", "NPCID", 1),  | 
|                         ("WORD", "LowLV", 0),  | 
|                         ("WORD", "HighestLV", 0),  | 
|                         ("DWORD", "Defense", 0),  | 
|                         ),  | 
|   | 
|                 "TalentSkill":(  | 
|                         ("DWORD", "SkillID", 1),  | 
|                         ("BYTE", "TalentType", 0),  | 
|                         ("BYTE", "Series", 0),  | 
|                         ),  | 
|   | 
|                 "ActFlashSale":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("list", "StartTimeList", 0),  | 
|                         ("list", "EndTimeList", 0),  | 
|                         ("WORD", "AdvanceMinutes", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ("list", "ShopTypeList", 0),  | 
|                         ("char", "MailKey", 0),  | 
|                         ("list", "MailItemPrize", 0),  | 
|                         ),  | 
|   | 
|                 "ActWishingWell":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("BYTE", "TemplateID", 0),  | 
|                         ),  | 
|   | 
|                 "WishingWell":(  | 
|                         ("BYTE", "TemplateID", 1),  | 
|                         ("BYTE", "IsFree", 0),  | 
|                         ("list", "WorldLVLimit", 0),  | 
|                         ("DWORD", "ItemID", 0),  | 
|                         ("WORD", "ItemCnt", 0),  | 
|                         ("BYTE", "IsBind", 0),  | 
|                         ("DWORD", "Weight", 0),  | 
|                         ("DWORD", "Mark", 0),  | 
|                         ("BYTE", "Rare", 0),  | 
|                         ),  | 
|   | 
|                 "FunctionForecast":(  | 
|                         ("DWORD", "FuncID", 1),  | 
|                         ("dict", "Award", 0),  | 
|                         ),  | 
|   | 
|                 "ChatBubbleBox":(  | 
|                         ("BYTE", "BoxID", 1),  | 
|                         ("WORD", "NeedLV", 0),  | 
|                         ("BYTE", "NeedVIPLVGift", 0),  | 
|                         ),  | 
|   | 
|                 "ActTotalRecharge":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ("list", "TemplateIDList", 0),  | 
|                         ),  | 
|   | 
|                 "TotalRechargeTemplate":(  | 
|                         ("DWORD", "TemplateID", 1),  | 
|                         ("DWORD", "NeedGold", 0),  | 
|                         ("BYTE", "AwardIndex", 0),  | 
|                         ("dict", "AwardItem", 0),  | 
|                         ("char", "NotifyKey", 0),  | 
|                         ),  | 
|   | 
|                 "MagicWeaponFB":(  | 
|                         ("DWORD", "MWID", 1),  | 
|                         ("BYTE", "LineID", 0),  | 
|                         ("BYTE", "Level", 1),  | 
|                         ("list", "RefreshNPC", 0),  | 
|                         ("dict", "AttrDict", 0),  | 
|                         ),  | 
|   | 
|                 "IceLodeStarAward":(  | 
|                         ("BYTE", "Index", 1),  | 
|                         ("BYTE", "Star", 0),  | 
|                         ("list", "LVLimit", 0),  | 
|                         ("list", "ItemList", 0),  | 
|                         ),  | 
|   | 
|                 "CrossRealmPKDan":(  | 
|                         ("BYTE", "DanLV", 1),  | 
|                         ("WORD", "LVUpScore", 0),  | 
|                         ),  | 
|   | 
|                 "CrossRealmPKDanAward":(  | 
|                         ("char", "CrossZoneName", 1),  | 
|                         ("BYTE", "SeasonID", 1),  | 
|                         ("BYTE", "DanLV", 1),  | 
|                         ("list", "DanLVAwardList", 0),  | 
|                         ("list", "SeasonDanLVAwardList", 0),  | 
|                         ),  | 
|   | 
|                 "CrossRealmPKOrderAward":(  | 
|                         ("char", "CrossZoneName", 1),  | 
|                         ("BYTE", "SeasonID", 1),  | 
|                         ("dict", "OrderAwardInfo", 0),  | 
|                         ),  | 
|   | 
|                 "CrossZoneComm":(  | 
|                         ("char", "CrossZoneName", 1),  | 
|                         ("BYTE", "ZoneID", 1),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ),  | 
|   | 
|                 "CrossZonePK":(  | 
|                         ("char", "CrossZoneName", 1),  | 
|                         ("BYTE", "ZoneID", 1),  | 
|                         ("list", "ServerGroupIDList", 0),  | 
|                         ),  | 
|   | 
|                 "CrossPenglaiZoneMap":(  | 
|                         ("BYTE", "ZoneID", 0),  | 
|                         ("DWORD", "MapID", 1),  | 
|                         ("DWORD", "DataMapID", 1),  | 
|                         ("BYTE", "CopyMapID", 1),  | 
|                         ("WORD", "PosX", 0),  | 
|                         ("WORD", "PosY", 0),  | 
|                         ),  | 
|   | 
|                 "GatherSoul":(  | 
|                         ("DWORD", "ItemID", 1),  | 
|                         ("list", "AttrType", 0),  | 
|                         ("BYTE", "SoulGrade", 0),  | 
|                         ),  | 
|   | 
|                 "GatherSoulCompound":(  | 
|                         ("DWORD", "TagItemID", 1),  | 
|                         ("WORD", "NeedLV", 0),  | 
|                         ("list", "NeedItem", 0),  | 
|                         ("WORD", "NeedSoulSplinters", 0),  | 
|                         ("WORD", "NeedSoulCore", 0),  | 
|                         ),  | 
|   | 
|                 "GatherSoulAttr":(  | 
|                         ("WORD", "AttrType", 1),  | 
|                         ("char", "AttrInfo1", 0),  | 
|                         ("dict", "AttrInfo2", 0),  | 
|                         ("dict", "AttrInfo3", 0),  | 
|                         ("dict", "AttrInfo4", 0),  | 
|                         ("dict", "AttrInfo5", 0),  | 
|                         ),  | 
|   | 
|                 "MagicWeaponOfKing":(  | 
|                         ("DWORD", "MWID", 1),  | 
|                         ("BYTE", "AwardMark", 1),  | 
|                         ("dict", "AddAttr", 0),  | 
|                         ),  | 
|   | 
|                 "Coat":(  | 
|                         ("DWORD", "CoatID", 1),  | 
|                         ("list", "EquipItemID", 0),  | 
|                         ("DWORD", "UnlockItemID", 0),  | 
|                         ("DWORD", "MaxLV", 0),  | 
|                         ("list", "CostItemCnt", 0),  | 
|                         ("dict", "StarAttr", 0),  | 
|                         ),  | 
|   | 
|                 "CoatChestUp":(  | 
|                         ("DWORD", "LV", 1),  | 
|                         ("BYTE", "NeedExp", 0),  | 
|                         ("dict", "AddAttr", 0),  | 
|                         ),  | 
|   | 
|                 "ActWeekParty":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("WORD", "AdvanceMinutes", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("list", "TemplateID", 0),  | 
|                         ("dict", "PointAward", 0),  | 
|                         ),  | 
|   | 
|                 "WeekParty":(  | 
|                         ("BYTE", "TemplateID", 1),  | 
|                         ("BYTE", "ActionType", 0),  | 
|                         ("DWORD", "TotalTimes", 0),  | 
|                         ("WORD", "SingleTimes", 0),  | 
|                         ("list", "Reward", 0),  | 
|                         ("WORD", "Point", 0),  | 
|                         ),  | 
|   | 
|                 "ActLoginAward":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("WORD", "AdvanceMinutes", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("list", "TemplateID", 0),  | 
|                         ),  | 
|   | 
|                 "LoginAward":(  | 
|                         ("BYTE", "TemplateID", 1),  | 
|                         ("BYTE", "ActionType", 0),  | 
|                         ("DWORD", "TotalTimes", 0),  | 
|                         ("WORD", "SingleTimes", 0),  | 
|                         ("char", "Reward", 0),  | 
|                         ),  | 
|   | 
|                 "ZhuXianBoss":(  | 
|                         ("DWORD", "NPCID", 0),  | 
|                         ("BYTE", "LineID", 1),  | 
|                         ("WORD", "RealmLV", 0),  | 
|                         ("DWORD", "ZhuXianScore", 0),  | 
|                         ),  | 
|   | 
|                 "ActFeastWeekParty":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("WORD", "AdvanceMinutes", 0),  | 
|                         ("BYTE", "IsDayReset", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("list", "TemplateID", 0),  | 
|                         ("dict", "PointAward", 0),  | 
|                         ),  | 
|   | 
|                 "FeastWeekParty":(  | 
|                         ("BYTE", "TemplateID", 1),  | 
|                         ("BYTE", "ActionType", 0),  | 
|                         ("DWORD", "TotalTimes", 0),  | 
|                         ("WORD", "SingleTimes", 0),  | 
|                         ("list", "Reward", 0),  | 
|                         ("WORD", "Point", 0),  | 
|                         ),  | 
|   | 
|                 "NewAllPeopleParty":(  | 
|                         ("BYTE", "ID", 1),  | 
|                         ("WORD", "TotalTimes", 0),  | 
|                         ("WORD", "AddPoint", 0),  | 
|                         ),  | 
|   | 
|                 "NewAllPeoplePartyAward":(  | 
|                         ("BYTE", "WorldLvNum", 1),  | 
|                         ("DWORD", "Index", 1),  | 
|                         ("DWORD", "NeedPoint", 0),  | 
|                         ("dict", "Award", 0),  | 
|                         ),  | 
|   | 
|                 "ActLuckyTreasure":(  | 
|                         ("DWORD", "CfgID", 1),  | 
|                         ("char", "StartDate", 0),  | 
|                         ("char", "EndDate", 0),  | 
|                         ("BYTE", "ResetType", 0),  | 
|                         ("WORD", "LVLimit", 0),  | 
|                         ("BYTE", "TemplateID", 0),  | 
|                         ("WORD", "LuckyPoint", 0),  | 
|                         ),  | 
|   | 
|                 "LuckyTreasureTemplate":(  | 
|                         ("BYTE", "TemplateID", 1),  | 
|                         ("list", "WorldLVLimit", 0),  | 
|                         ("DWORD", "ItemID", 0),  | 
|                         ("WORD", "ItemCnt", 0),  | 
|                         ("BYTE", "IsBind", 0),  | 
|                         ("DWORD", "Weight", 0),  | 
|                         ),  | 
|   | 
|                 "MysteryShop":(  | 
|                         ("list", "LVRange", 0),  | 
|                         ("DWORD", "GoodsID", 0),  | 
|                         ),  | 
|   | 
|                 "EquipPlaceIndexMap":(  | 
|                         ("DWORD", "GridIndex", 0),  | 
|                         ("DWORD", "ClassLV", 1),  | 
|                         ("DWORD", "EquipPlace", 1),  | 
|                         ),  | 
|   | 
|                 "EquipShenAttr":(  | 
|                         ("DWORD", "EquipItemID", 1),  | 
|                         ("list", "ShenAttrIDList", 0),  | 
|                         ("list", "ShenAttrValueList", 0),  | 
|                         ("list", "XianAttrIDList", 0),  | 
|                         ("list", "XianAttrValueList", 0),  | 
|                         ("list", "JiAttrIDList", 0),  | 
|                         ("list", "JiAttrValueList", 0),  | 
|                         ("list", "LegendAttrIDList", 0),  | 
|                         ("list", "LegendAttrValueList", 0),  | 
|                         ),  | 
|   | 
|                 "EquipShenEvolve":(  | 
|                         ("DWORD", "EquipItemID", 1),  | 
|                         ("DWORD", "EvolveEquipID", 0),  | 
|                         ("list", "EvolveNeedItemIDInfo", 0),  | 
|                         ("BYTE", "EvolveNeedSuitCount", 0),  | 
|                         ("BYTE", "EvolveNeedEquipID", 0),  | 
|                         ),  | 
|   | 
|                 "EquipStarUp":(  | 
|                         ("BYTE", "ClassLV", 1),  | 
|                         ("BYTE", "EquipPlace", 1),  | 
|                         ("BYTE", "Star", 1),  | 
|                         ("list", "CostEquipPlace", 0),  | 
|                         ("BYTE", "IsJobLimit", 0),  | 
|                         ("list", "CostEquipColor", 0),  | 
|                         ("BYTE", "CostEquipCnt", 0),  | 
|                         ("BYTE", "UnSuitRate", 0),  | 
|                         ("BYTE", "SuitRate", 0),  | 
|                         ("dict", "CostItemDict", 0),  | 
|                         ("dict", "StarAttrInfo", 0),  | 
|                         ("dict", "BaseAttrInfo", 0),  | 
|                         ),  | 
|   | 
|                 "EquipPlusEvolve":(  | 
|                         ("BYTE", "EquipPlace", 1),  | 
|                         ("BYTE", "EvolveLV", 1),  | 
|                         ("WORD", "NeedPlusLV", 0),  | 
|                         ("dict", "CostItem", 0),  | 
|                         ("dict", "Attr", 0),  | 
|                         ),  | 
|   | 
|                 "FamilyBossAward":(  | 
|                         ("DWORD", "BossID", 1),  | 
|                         ("list", "WorldLV", 0),  | 
|                         ("list", "Rank", 0),  | 
|                         ("list", "Award1", 0),  | 
|                         ("dict", "Award2", 0),  | 
|                         ),  | 
|   | 
|                 "ItemWashMax":(  | 
|                         ("BYTE", "Type", 1),  | 
|                         ("BYTE", "Star", 1),  | 
|                         ("WORD", "LevelMax", 0),  | 
|                         ),  | 
|   | 
|                 "HorsePetBossAward":(  | 
|                         ("BYTE", "LineID", 1),  | 
|                         ("list", "WorldLV", 0),  | 
|                         ("list", "Rank", 0),  | 
|                         ("list", "Award1", 0),  | 
|                         ("list", "Award2", 0),  | 
|                         ),  | 
|   | 
|                 "FairyDomain":(  | 
|                         ("WORD", "ID", 1),  | 
|                         ("BYTE", "EventType", 0),  | 
|                         ("DWORD", "MapID", 0),  | 
|                         ("BYTE", "LineID", 0),  | 
|                         ("DWORD", "BossID", 0),  | 
|                         ("BYTE", "EventFBType", 0),  | 
|                         ("BYTE", "CostEnergy", 0),  | 
|                         ("BYTE", "NeedAlchemyLV", 0),  | 
|                         ("list", "NeedLV", 0),  | 
|                         ("DWORD", "Weight", 0),  | 
|                         ("DWORD", "HourCntPriLimit", 0),  | 
|                         ("DWORD", "DayCntPriLimit", 0),  | 
|                         ),  | 
|   | 
|                 "FairyAdventures":(  | 
|                         ("WORD", "ID", 1),  | 
|                         ("DWORD", "OpenServerDay", 0),  | 
|                         ("BYTE", "EventID", 0),  | 
|                         ("list", "Condition", 0),  | 
|                         ("list", "GearAward", 0),  | 
|                         ("list", "BasicAward", 0),  | 
|                         ),  | 
|   | 
|                 "FairyDomainAppoint":(  | 
|                         ("WORD", "Cnt", 1),  | 
|                         ("DWORD", "EventID", 0),  | 
|                         ("list", "Award", 0),  | 
|                         ("list", "RandomAward", 0),  | 
|                         ),  | 
|   | 
|                 "FBBuyBuff":(  | 
|                         ("DWORD", "MapId", 1),  | 
|                         ("WORD", "MoneyCnt", 1),  | 
|                         ("DWORD", "BuffID", 0),  | 
|                         ("WORD", "BuffCD", 0),  | 
|                         ),  | 
|   | 
|                 "SkillElement":(  | 
|                         ("DWORD", "ElementSkillID", 1),  | 
|                         ("DWORD", "MainSkillID", 0),  | 
|                         ("DWORD", "NeedLV", 0),  | 
|                         ),  | 
|   | 
|                 "SkyTower":(  | 
|                         ("DWORD", "FloorID", 1),  | 
|                         ("DWORD", "BossID", 0),  | 
|                         ("dict", "Reward", 0),  | 
|                         ("WORD", "NeedLV", 0),  | 
|                         ("DWORD", "FightPower", 0),  | 
|                         ("BYTE", "IsNotify", 0),  | 
|                         ),  | 
|   | 
|                 "LingGenEffect":(  | 
|                         ("DWORD", "ID", 0),  | 
|                         ("DWORD", "PointID", 1),  | 
|                         ("BYTE", "QualityLV", 1),  | 
|                         ),  | 
|   | 
|                 "HorsePetSkin":(  | 
|                         ("BYTE", "Type", 1),  | 
|                         ("DWORD", "ID", 1),  | 
|                         ("BYTE", "SkinLV", 1),  | 
|                         ("DWORD", "NeedExp", 0),  | 
|                         ("dict", "AttrInfo", 0),  | 
|                         ("BYTE", "SkinIndex", 0),  | 
|                         ),  | 
|   | 
|                 "AssistThanksGift":(  | 
|                         ("DWORD", "GiftID", 1),  | 
|                         ("list", "RequestPlayerAward", 0),  | 
|                         ("list", "AssistPlayerAward", 0),  | 
|                         ),  | 
|   | 
|                 "HistoryRechargeAward":(  | 
|                         ("BYTE", "ID", 1),  | 
|                         ("DWORD", "Recharge", 0),  | 
|                         ("dict", "Reward", 0),  | 
|                         ),  | 
|                 }  | 
|   | 
|   | 
| # ³ÆºÅ±í | 
| class IPY_Dienstgrad(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.Type = 0  | 
|         self.ExpireTime = 0  | 
|         self.LightType = []  | 
|         self.LightAttribute = []  | 
|         self.Skills = [] | 
|         return | 
|          | 
|     def GetID(self): return self.ID # Í·ÏÎid  | 
|     def GetType(self): return self.Type # Í·ÏÎÀàÐÍ  | 
|     def GetExpireTime(self): return self.ExpireTime # ÓÐЧʱ¼ä  | 
|     def GetLightType(self): return self.LightType # µãÁÁÊôÐÔÀàÐÍ  | 
|     def GetLightAttribute(self): return self.LightAttribute # µãÁÁÊôÐÔÖµ  | 
|     def GetSkills(self): return self.Skills # ±»¶¯¼¼ÄÜ | 
|   | 
| # Áé¸ù±í | 
| class IPY_RolePoint(): | 
|      | 
|     def __init__(self): | 
|         self.AttrID = 0  | 
|         self.AddAttrInfoPerPoint = {}  | 
|         self.FightPowerPerPoint = 0  | 
|         self.PointQualityAttrDict = {}  | 
|         self.PointQualityIntervalList = [] | 
|         return | 
|          | 
|     def GetAttrID(self): return self.AttrID # ÊôÐÔID  | 
|     def GetAddAttrInfoPerPoint(self): return self.AddAttrInfoPerPoint # Ã¿µãÔö¼ÓÊôÐÔÐÅÏ¢ {"Ö°Òµ":[[ÿXµã,ÊôÐÔID,Öµ], ...], ..}  | 
|     def GetFightPowerPerPoint(self): return self.FightPowerPerPoint # Ã¿µã¸½¼ÓÕ½¶·Á¦  | 
|     def GetPointQualityAttrDict(self): return self.PointQualityAttrDict # µãÊýÆ·Öʽø½×Ôö¼ÓÊôÐÔ,  {Ö°Òµ:{ÊôÐÔID:[½×¶ÎÊôÐÔ,..],..},..}  | 
|     def GetPointQualityIntervalList(self): return self.PointQualityIntervalList # µãÊýÆ·Öʽø½×ÊôÐÔµãÇø¼äÁбí | 
|   | 
| # ÁéÆ÷ÊôÐÔ±í | 
| class IPY_LingQiAttr(): | 
|      | 
|     def __init__(self): | 
|         self.ItemID = 0  | 
|         self.LingQiAttrID = []  | 
|         self.LingQiAttrValue = []  | 
|         self.LingQiAttrScore = 0  | 
|         self.UpCostItem = {}  | 
|         self.NextItemID = 0 | 
|         return | 
|          | 
|     def GetItemID(self): return self.ItemID # ÊôÐÔID  | 
|     def GetLingQiAttrID(self): return self.LingQiAttrID # ÁéÆ÷ÊôÐÔID  | 
|     def GetLingQiAttrValue(self): return self.LingQiAttrValue # ÁéÆ÷ÊôÐÔÊýÖµ  | 
|     def GetLingQiAttrScore(self): return self.LingQiAttrScore # ÁéÆ÷ÊôÐÔÆÀ·Ö  | 
|     def GetUpCostItem(self): return self.UpCostItem # Í»ÆÆÐèÒª²ÄÁÏ  | 
|     def GetNextItemID(self): return self.NextItemID # Í»ÆÆºóÎïÆ·ID | 
|   | 
| # ¾³½ç±í | 
| class IPY_Realm(): | 
|      | 
|     def __init__(self): | 
|         self.Lv = 0  | 
|         self.NeedLV = 0  | 
|         self.NeedItemID = 0  | 
|         self.NeedItemCnt = 0  | 
|         self.NeedEquip = []  | 
|         self.AddAttrType = []  | 
|         self.AddAttrNum = []  | 
|         self.BossID = 0  | 
|         self.BuffID = 0  | 
|         self.ExpRate = 0  | 
|         self.ExpLimit = 0 | 
|         return | 
|          | 
|     def GetLv(self): return self.Lv # ¾³½çµÈ¼¶  | 
|     def GetNeedLV(self): return self.NeedLV # ÐèÒªµÈ¼¶  | 
|     def GetNeedItemID(self): return self.NeedItemID # ÐèÒªµÀ¾ßID  | 
|     def GetNeedItemCnt(self): return self.NeedItemCnt # ÏûºÄµÄµÀ¾ßÊýÁ¿  | 
|     def GetNeedEquip(self): return self.NeedEquip # ÐèÒª8²¿Î»×°±¸Ìõ¼þ½×¼¶|Æ·ÖÊ|ÊÇ·ñÌ××°  | 
|     def GetAddAttrType(self): return self.AddAttrType # ¾³½ç¼Ó³ÉÊôÐÔÀàÐÍ  | 
|     def GetAddAttrNum(self): return self.AddAttrNum # ¾³½ç¼Ó³ÉÊôÐÔÖµ  | 
|     def GetBossID(self): return self.BossID # ¶É½Ùbossid  | 
|     def GetBuffID(self): return self.BuffID # ¸øÈ«·þÔÚÏßÍæ¼ÒÔö¼Óbuff  | 
|     def GetExpRate(self): return self.ExpRate # ÐÞΪ³Ø¾ÑéËÙÂÊ  | 
|     def GetExpLimit(self): return self.ExpLimit # ÐÞΪ³Ø¾ÑéÉÏÏÞ | 
|   | 
| # Éñ±ø±í | 
| class IPY_GodWeapon(): | 
|      | 
|     def __init__(self): | 
|         self.Type = 0  | 
|         self.LV = 0  | 
|         self.Exp = 0  | 
|         self.AttrType = []  | 
|         self.AttrNum = []  | 
|         self.SkillID = 0  | 
|         self.SysMark = "" | 
|         return | 
|          | 
|     def GetType(self): return self.Type # Éñ±øÀàÐÍ  | 
|     def GetLV(self): return self.LV # µÈ¼¶  | 
|     def GetExp(self): return self.Exp  | 
|     def GetAttrType(self): return self.AttrType # ÊôÐÔÀàÐÍ  | 
|     def GetAttrNum(self): return self.AttrNum # ÊôÐÔÖµ  | 
|     def GetSkillID(self): return self.SkillID # ¼¤»î¼¼ÄÜID  | 
|     def GetSysMark(self): return self.SysMark # ÏµÍ³Ìáʾ | 
|   | 
| # ¹¦ÄÜÅäÖñí¸ñ | 
| class IPY_FuncConfig(): | 
|      | 
|     def __init__(self): | 
|         self.Key = ""  | 
|         self.Numerical1 = ""  | 
|         self.Numerical2 = ""  | 
|         self.Numerical3 = ""  | 
|         self.Numerical4 = ""  | 
|         self.Numerical5 = "" | 
|         return | 
|          | 
|     def GetKey(self): return self.Key # ±êʶ  | 
|     def GetNumerical1(self): return self.Numerical1 # Êý¾Ý1  | 
|     def GetNumerical2(self): return self.Numerical2 # Êý¾Ý2  | 
|     def GetNumerical3(self): return self.Numerical3 # Êý¾Ý3  | 
|     def GetNumerical4(self): return self.Numerical4 # Êý¾Ý4  | 
|     def GetNumerical5(self): return self.Numerical5 # Êý¾Ý5 | 
|   | 
| # µÈ¼¶¿ªÆô¹¦ÄÜ | 
| class IPY_FuncOpenLV(): | 
|      | 
|     def __init__(self): | 
|         self.FuncId = 0  | 
|         self.LimitLV = 0  | 
|         self.LimitMagicWeapon = 0  | 
|         self.LimiRealmLV = 0  | 
|         self.LimitMissionID = 0  | 
|         self.LimitVIPLV = 0  | 
|         self.MailKey = "" | 
|         return | 
|          | 
|     def GetFuncId(self): return self.FuncId # ¹¦Äܱêʶ  | 
|     def GetLimitLV(self): return self.LimitLV # ¿ªÆôµÈ¼¶  | 
|     def GetLimitMagicWeapon(self): return self.LimitMagicWeapon # ÐèÒª½âËø·¨±¦ID  | 
|     def GetLimiRealmLV(self): return self.LimiRealmLV # ÐèÒª¾³½çµÈ¼¶  | 
|     def GetLimitMissionID(self): return self.LimitMissionID # ÐèÒªÍê³ÉµÄÈÎÎñID  | 
|     def GetLimitVIPLV(self): return self.LimitVIPLV # ÐèÒªVIPµÈ¼¶  | 
|     def GetMailKey(self): return self.MailKey # Óʼþ | 
|   | 
| # ºÏ³É±í | 
| class IPY_ItemCompound(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.ComposeGroup = 0  | 
|         self.MakeID = []  | 
|         self.IsFirstSuccMakeJobItem = 0  | 
|         self.UnfixedItemID = []  | 
|         self.UnfixedItemCount = 0  | 
|         self.FixedItemID = []  | 
|         self.FixedItemCount = []  | 
|         self.NeedMoney = 0  | 
|         self.SuccessRate = 0  | 
|         self.SuccessRateMax = 0  | 
|         self.SuccessRateIncrease = []  | 
|         self.AddonsCountMax = 0  | 
|         self.SysMark = ""  | 
|         self.SysMarkParamType = 0 | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ºÏ³ÉÅäÖñàºÅID  | 
|     def GetComposeGroup(self): return self.ComposeGroup # ºÏ³É¹é×éÀàÐÍ  | 
|     def GetMakeID(self): return self.MakeID # ¿ÉºÏ³ÉµÄµÀ¾ßID£¬¶à¸öÔòËæ»úÒ»¸ö  | 
|     def GetIsFirstSuccMakeJobItem(self): return self.IsFirstSuccMakeJobItem # Ê״γɹ¦ÊÇ·ñ±Ø³ö±¾Ö°Òµ  | 
|     def GetUnfixedItemID(self): return self.UnfixedItemID # ²»¹Ì¶¨µÀ¾ßID, ¶à¸öIDʱÔòÈÎÒâÒ»ÖÖ¾ù¿É  | 
|     def GetUnfixedItemCount(self): return self.UnfixedItemCount # ²»¹Ì¶¨µÀ¾ßÏûºÄÊýÁ¿  | 
|     def GetFixedItemID(self): return self.FixedItemID # ÏûºÄ¹Ì¶¨µÀ¾ßID, ¶à¸öIDʱ´ú±íÿ¸öID¾ùÐèÏûºÄ  | 
|     def GetFixedItemCount(self): return self.FixedItemCount # ÏûºÄ¹Ì¶¨µÀ¾ßÊýÁ¿£¬Ã¿¸öID¶ÔÓ¦ÊýÁ¿  | 
|     def GetNeedMoney(self): return self.NeedMoney #  ÏûºÄÍÇ®  | 
|     def GetSuccessRate(self): return self.SuccessRate #  ³É¹¦ÂÊÍò·ÖÂÊ  | 
|     def GetSuccessRateMax(self): return self.SuccessRateMax #  ×î´ó³É¹¦ÂÊÍò·ÖÂÊ  | 
|     def GetSuccessRateIncrease(self): return self.SuccessRateIncrease # Ìá¸ß³É¹¦ÂʵÀ¾ß, µÀ¾ßID|¸öÊý|Ìá¸ßµÄ¸ÅÂÊ  | 
|     def GetAddonsCountMax(self): return self.AddonsCountMax # ×î´ó¿É¸½¼Ó²ÄÁÏÊý, Ôö¼Ó¸ÅÂÊÓÃ, ·Ç±ØÐë, 0´ú±í²»¿É¸½¼Ó²ÄÁÏ  | 
|     def GetSysMark(self): return self.SysMark # Ìáʾmark  | 
|     def GetSysMarkParamType(self): return self.SysMarkParamType # ÏµÍ³Ìáʾ²ÎÊý×éºÏÀàÐÍ | 
|   | 
| # ÎïÆ·Ç¿»¯Ð§¹û±í | 
| class IPY_ItemPlus(): | 
|      | 
|     def __init__(self): | 
|         self.Type = 0  | 
|         self.LV = 0  | 
|         self.AttrType = []  | 
|         self.AttrValue = []  | 
|         self.CostCount = 0  | 
|         self.CostItemInfo = []  | 
|         self.AddExp = 0  | 
|         self.TotalExp = 0 | 
|         return | 
|          | 
|     def GetType(self): return self.Type # Ç¿»¯ÀàÐÍ  | 
|     def GetLV(self): return self.LV # Ç¿»¯µÈ¼¶  | 
|     def GetAttrType(self): return self.AttrType # ÊôÐÔÀàÐÍ  | 
|     def GetAttrValue(self): return self.AttrValue # ÊôÐÔÖµ  | 
|     def GetCostCount(self): return self.CostCount # ÏûºÄÍÇ®  | 
|     def GetCostItemInfo(self): return self.CostItemInfo # ÏûºÄÎïÆ·²ÄÁϼ°¸öÊý [itemID, itemCount]  | 
|     def GetAddExp(self): return self.AddExp # ÌáÉýÊìÁ·¶ÈÖµ  | 
|     def GetTotalExp(self): return self.TotalExp # Éý¼¶ËùÐèÊìÁ·¶È×ÜÖµ | 
|   | 
| # ×°±¸Ç¿»¯´óʦ±í | 
| class IPY_ItemPlusMaster(): | 
|      | 
|     def __init__(self): | 
|         self.ClassLV = 0  | 
|         self.MasterPlusLV = 0  | 
|         self.MasterPlusAttrIDList = []  | 
|         self.MasterPlusAttrValueList = [] | 
|         return | 
|          | 
|     def GetClassLV(self): return self.ClassLV # ½×  | 
|     def GetMasterPlusLV(self): return self.MasterPlusLV # ´óʦǿ»¯µÈ¼¶  | 
|     def GetMasterPlusAttrIDList(self): return self.MasterPlusAttrIDList # ¼¤»îÊôÐÔÀàÐÍÁÐ±í  | 
|     def GetMasterPlusAttrValueList(self): return self.MasterPlusAttrValueList # ¼¤»îÊôÐÔÖµÁбí | 
|   | 
| # ×°±¸Ç¿»¯µÈ¼¶ÉÏÏÞ | 
| class IPY_ItemPlusMax(): | 
|      | 
|     def __init__(self): | 
|         self.Type = 0  | 
|         self.ClassLV = 0  | 
|         self.PlusLVMax = 0 | 
|         return | 
|          | 
|     def GetType(self): return self.Type # Ç¿»¯ÀàÐÍ  | 
|     def GetClassLV(self): return self.ClassLV # ½×  | 
|     def GetPlusLVMax(self): return self.PlusLVMax # ×î´óÇ¿»¯µÈ¼¶ | 
|   | 
| # ×°±¸È«ÉíÐÇÊýÊôÐÔ | 
| class IPY_RoleEquipStars(): | 
|      | 
|     def __init__(self): | 
|         self.StarsNeed = 0  | 
|         self.AttrType = []  | 
|         self.AttrValue = [] | 
|         return | 
|          | 
|     def GetStarsNeed(self): return self.StarsNeed # È«ÉíÐÇÊý  | 
|     def GetAttrType(self): return self.AttrType # ÊôÐÔÀàÐÍ  | 
|     def GetAttrValue(self): return self.AttrValue # ÊôÐÔÖµ | 
|   | 
| # ×°±¸´«ÆæÊôÐÔÌõÊý±í | 
| class IPY_EquipLegendAttrCount(): | 
|      | 
|     def __init__(self): | 
|         self.ItemType = 0  | 
|         self.ItemColor = 0  | 
|         self.IsSuit = 0  | 
|         self.ItemQuality = 0  | 
|         self.LegendAttrCountInfo = [] | 
|         return | 
|          | 
|     def GetItemType(self): return self.ItemType # ÎïÆ·ÀàÐÍ  | 
|     def GetItemColor(self): return self.ItemColor # ÎïÆ·ÑÕÉ«  | 
|     def GetIsSuit(self): return self.IsSuit # ÊÇ·ñÌ××°  | 
|     def GetItemQuality(self): return self.ItemQuality # ÎïÆ·ÐǼ¶  | 
|     def GetLegendAttrCountInfo(self): return self.LegendAttrCountInfo # ´«ÆæÊôÐÔÌõÊýÐÅÏ¢ [[ÌõÊý, [ÊôÐÔÀàÐÍ¿â±àºÅ, ...]], ...] | 
|   | 
| # ×°±¸´«ÆæÊôÐÔÀàÐͱí | 
| class IPY_EquipLegendAttrType(): | 
|      | 
|     def __init__(self): | 
|         self.ItemType = 0  | 
|         self.LegendAttrTypeLib = {} | 
|         return | 
|          | 
|     def GetItemType(self): return self.ItemType # ÎïÆ·ÀàÐÍ  | 
|     def GetLegendAttrTypeLib(self): return self.LegendAttrTypeLib # ´«ÆæÊôÐÔÀàÐÍ¿â {ÊôÐÔÀàÐÍ¿â±àºÅ:[ÊôÐÔID,...], ...} | 
|   | 
| # ×°±¸´«ÆæÊôÐÔÖµ¿â±í | 
| class IPY_EquipLegendAttrLib(): | 
|      | 
|     def __init__(self): | 
|         self.LegendAttrID = 0  | 
|         self.LegendAttrLib = {} | 
|         return | 
|          | 
|     def GetLegendAttrID(self): return self.LegendAttrID # ´«ÆæÊôÐÔID  | 
|     def GetLegendAttrLib(self): return self.LegendAttrLib # ÊôÐÔ¿âÐÅÏ¢ {¿â±àºÅ:[Ëæ»úÊýÖµ, ...], ...} | 
|   | 
| # ×°±¸´«ÆæÊôÐԵȼ¶ÊýÖµ±í | 
| class IPY_EquipLegendAttrValue(): | 
|      | 
|     def __init__(self): | 
|         self.ItemType = 0  | 
|         self.ItemClassLV = 0  | 
|         self.ItemColor = 0  | 
|         self.IsSuit = 0  | 
|         self.ItemQuality = 0  | 
|         self.LVLegendAttrLibNumInfo = {} | 
|         return | 
|          | 
|     def GetItemType(self): return self.ItemType # ÎïÆ·ÀàÐÍ  | 
|     def GetItemClassLV(self): return self.ItemClassLV # ÎïÆ·½×¼¶  | 
|     def GetItemColor(self): return self.ItemColor # ÎïÆ·ÑÕÉ«  | 
|     def GetIsSuit(self): return self.IsSuit # ÊÇ·ñÌ××°  | 
|     def GetItemQuality(self): return self.ItemQuality # ÎïÆ·ÐǼ¶  | 
|     def GetLVLegendAttrLibNumInfo(self): return self.LVLegendAttrLibNumInfo # ÊôÐÔIDµÈ¼¶¶Î¶ÔÓ¦ÊýÖµ¿â±àºÅ {ÊôÐÔID:{µÈ¼¶:¿â±àºÅ, ...}} | 
|   | 
| # ÉñÊÞ±í | 
| class IPY_Dogz(): | 
|      | 
|     def __init__(self): | 
|         self.DogzID = 0  | 
|         self.BaseAttrTypes = []  | 
|         self.BaseAttrValues = []  | 
|         self.HelpBattleSkills = []  | 
|         self.FightPowerEx = 0  | 
|         self.EquipPlaceColorList = []  | 
|         self.HelpBattleNotify = [] | 
|         return | 
|          | 
|     def GetDogzID(self): return self.DogzID # ÉñÊÞID  | 
|     def GetBaseAttrTypes(self): return self.BaseAttrTypes # »ù´¡ÊôÐÔÀàÐÍÁÐ±í  | 
|     def GetBaseAttrValues(self): return self.BaseAttrValues # »ù´¡ÊôÐÔÖµÁÐ±í  | 
|     def GetHelpBattleSkills(self): return self.HelpBattleSkills # ÖúÕ½¼¼ÄÜIDÁÐ±í  | 
|     def GetFightPowerEx(self): return self.FightPowerEx # ÖúÕ½¸½¼ÓÕ½Á¦  | 
|     def GetEquipPlaceColorList(self): return self.EquipPlaceColorList # ´©´÷×°±¸ÑÕÉ«ÏÞÖÆ  | 
|     def GetHelpBattleNotify(self): return self.HelpBattleNotify # ÖúÕ½¹ã²¥ ["¹ã²¥key",[²ÎÊý1,²ÎÊý2,...],¹ã²¥CD·ÖÖÓ] | 
|   | 
| # ÉñÊÞÇ¿»¯±í | 
| class IPY_DogzEquipPlus(): | 
|      | 
|     def __init__(self): | 
|         self.EquipPlace = 0  | 
|         self.PlusLV = 0  | 
|         self.PlusAttrTypes = []  | 
|         self.PlusAttrValues = []  | 
|         self.PlusLVUPTotalExp = 0 | 
|         return | 
|          | 
|     def GetEquipPlace(self): return self.EquipPlace # ×°±¸Î»  | 
|     def GetPlusLV(self): return self.PlusLV # Ç¿»¯µÈ¼¶  | 
|     def GetPlusAttrTypes(self): return self.PlusAttrTypes # Ç¿»¯ÊôÐÔÀàÐÍÁÐ±í  | 
|     def GetPlusAttrValues(self): return self.PlusAttrValues # Ç¿»¯ÊôÐÔÖµÁÐ±í  | 
|     def GetPlusLVUPTotalExp(self): return self.PlusLVUPTotalExp # Éý¼¶ËùÐèÀÛ¼ÆÊìÁ·¶È×ÜÖµ | 
|   | 
| # ·ûÓ¡±í | 
| class IPY_Rune(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.AttrType = []  | 
|         self.TowerID = 0 | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ±àºÅID  | 
|     def GetAttrType(self): return self.AttrType # ÊôÐÔÀàÐÍ  | 
|     def GetTowerID(self): return self.TowerID # ½âËø·ûÓ¡Ëþ±àºÅ | 
|   | 
| # Ï´Á·±í | 
| class IPY_EquipWash(): | 
|      | 
|     def __init__(self): | 
|         self.WashType = 0  | 
|         self.WashLV = 0  | 
|         self.AttrType1 = 0  | 
|         self.AttrMax1 = 0  | 
|         self.AttrRandDict1 = {}  | 
|         self.AttrCostGoldMin1 = 0  | 
|         self.AttrCostGoldMax1 = 0  | 
|         self.AttrType2 = 0  | 
|         self.AttrMax2 = 0  | 
|         self.AttrRandDict2 = {}  | 
|         self.AttrCostGoldMin2 = 0  | 
|         self.AttrCostGoldMax2 = 0  | 
|         self.AttrType3 = 0  | 
|         self.AttrMax3 = 0  | 
|         self.AttrRandDict3 = {}  | 
|         self.AttrCostGoldMin3 = 0  | 
|         self.AttrCostGoldMax3 = 0  | 
|         self.CostItemID = 0  | 
|         self.CostItemCount = 0  | 
|         self.GoldWashCostList = [] | 
|         return | 
|          | 
|     def GetWashType(self): return self.WashType #  ×°±¸¹é×éÀàÐÍ  | 
|     def GetWashLV(self): return self.WashLV #  Ï´Á·µÈ¼¶  | 
|     def GetAttrType1(self): return self.AttrType1 #  ÊôÐÔ1ÀàÐÍ  | 
|     def GetAttrMax1(self): return self.AttrMax1 #  ÊôÐÔ1µ±Ç°µÈ¼¶Ï´Á·ÉÏÏÞ  | 
|     def GetAttrRandDict1(self): return self.AttrRandDict1 #  ÊôÐÔ1Ëæ»ú·¶Î§  | 
|     def GetAttrCostGoldMin1(self): return self.AttrCostGoldMin1 #  ÊôÐÔ1ÏÉÓñÏ´Á·ÏÂÏÞÖµ  | 
|     def GetAttrCostGoldMax1(self): return self.AttrCostGoldMax1 #  ÊôÐÔ1ÏÉÓñÏ´Á·ÉÏÏÞÖµ  | 
|     def GetAttrType2(self): return self.AttrType2 #  ÊôÐÔ2ÀàÐÍ  | 
|     def GetAttrMax2(self): return self.AttrMax2 #  ÊôÐÔ2µ±Ç°µÈ¼¶Ï´Á·ÉÏÏÞ  | 
|     def GetAttrRandDict2(self): return self.AttrRandDict2 #  ÊôÐÔ2Ëæ»ú·¶Î§  | 
|     def GetAttrCostGoldMin2(self): return self.AttrCostGoldMin2 #  ÊôÐÔ2ÏÉÓñÏ´Á·ÏÂÏÞÖµ  | 
|     def GetAttrCostGoldMax2(self): return self.AttrCostGoldMax2 #  ÊôÐÔ2ÏÉÓñÏ´Á·ÉÏÏÞÖµ  | 
|     def GetAttrType3(self): return self.AttrType3 #  ÊôÐÔ3ÀàÐÍ  | 
|     def GetAttrMax3(self): return self.AttrMax3 #  ÊôÐÔ3µ±Ç°µÈ¼¶Ï´Á·ÉÏÏÞ  | 
|     def GetAttrRandDict3(self): return self.AttrRandDict3 #  ÊôÐÔ3Ëæ»ú·¶Î§  | 
|     def GetAttrCostGoldMin3(self): return self.AttrCostGoldMin3 #  ÊôÐÔ3ÏÉÓñÏ´Á·ÏÂÏÞÖµ  | 
|     def GetAttrCostGoldMax3(self): return self.AttrCostGoldMax3 #  ÊôÐÔ3ÏÉÓñÏ´Á·ÉÏÏÞÖµ  | 
|     def GetCostItemID(self): return self.CostItemID #  ¹Ì¶¨ÏûºÄÎïÆ·ID  | 
|     def GetCostItemCount(self): return self.CostItemCount #  ¹Ì¶¨ÏûºÄÎïÆ·¸öÊý  | 
|     def GetGoldWashCostList(self): return self.GoldWashCostList #  ÏÉÓñÏ´Á·ÌõÊý¶ÔÓ¦ÏûºÄ | 
|   | 
| # ÊôÐÔ¹ûʵ±í | 
| class IPY_AttrFruit(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.FuncID = 0  | 
|         self.MaxUseCnt = {}  | 
|         self.AddItemInfo = []  | 
|         self.RecycleMoney = 0  | 
|         self.FightPowerEx = 0 | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ÎïÆ·ID  | 
|     def GetFuncID(self): return self.FuncID # ËùÊô¹¦ÄÜID  | 
|     def GetMaxUseCnt(self): return self.MaxUseCnt # ¾³½ç¶ÔÓ¦×î´ó¿ÉʹÓÃÊýÁ¿  | 
|     def GetAddItemInfo(self): return self.AddItemInfo # [Ôö·ùµ¤ID,µ¥´ÎÎïÆ·ÊýÁ¿,µ¥´ÎÔö¼ÓÉÏÏÞ]  | 
|     def GetRecycleMoney(self): return self.RecycleMoney # »ØÊÕ»õ±ÒÖµ  | 
|     def GetFightPowerEx(self): return self.FightPowerEx # ¸½¼ÓÕ½¶·Á¦ | 
|   | 
| # ÁéÊÞ±í | 
| class IPY_PetInfo(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.Quality = 0  | 
|         self.UnlockSys = ""  | 
|         self.UnLockNeedItemID = 0  | 
|         self.UnLockNeedItemCnt = 0  | 
|         self.DecomposeExp = 0  | 
|         self.InitRank = 0  | 
|         self.MaxRank = 0  | 
|         self.UseNeedRank = 0  | 
|         self.SkillID = []  | 
|         self.SkillUnLock = []  | 
|         self.SkillUnLockSys = []  | 
|         self.InitFightPower = 0 | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ÁéÊÞNPCID  | 
|     def GetQuality(self): return self.Quality # Æ·ÖÊ  | 
|     def GetUnlockSys(self): return self.UnlockSys # ½âËø¹ã²¥Ìáʾ  | 
|     def GetUnLockNeedItemID(self): return self.UnLockNeedItemID # ½âËøÁéÊÞÎïÆ·ID  | 
|     def GetUnLockNeedItemCnt(self): return self.UnLockNeedItemCnt # ½âËøËùÐèÎïÆ·ÊýÁ¿  | 
|     def GetDecomposeExp(self): return self.DecomposeExp # ·Ö½âµ¥¸ö½âËøÎïÆ·¿É»ñµÃÉý½×¾Ñé  | 
|     def GetInitRank(self): return self.InitRank # ÁéÊÞ³õʼ½×Êý  | 
|     def GetMaxRank(self): return self.MaxRank # ÁéÊÞ×î¸ß½×Êý  | 
|     def GetUseNeedRank(self): return self.UseNeedRank # ¶àÉٽ׿ÉÇл»Íâ¹Û  | 
|     def GetSkillID(self): return self.SkillID # ÁéÊÞ¼¼ÄÜID  | 
|     def GetSkillUnLock(self): return self.SkillUnLock # ÁéÊÞ¼¼ÄܽâËøÐèÒª½×Êý  | 
|     def GetSkillUnLockSys(self): return self.SkillUnLockSys # ÁéÊÞ¼¼ÄܽâËøÌáʾ  | 
|     def GetInitFightPower(self): return self.InitFightPower # ³õʼսÁ¦ | 
|   | 
| # ×°±¸·Ö½âÊôÐÔ±í | 
| class IPY_EquipDecompose(): | 
|      | 
|     def __init__(self): | 
|         self.LV = 0  | 
|         self.UpNeedExp = 0  | 
|         self.Attr = {} | 
|         return | 
|          | 
|     def GetLV(self): return self.LV # µÈ¼¶  | 
|     def GetUpNeedExp(self): return self.UpNeedExp # Éý¼¶ËùÐè¾ÑéÊý  | 
|     def GetAttr(self): return self.Attr # ÊôÐÔ¼Ó³É | 
|   | 
| # ÁéÊÞÉý½×ÏûºÄ±í | 
| class IPY_PetClassCost(): | 
|      | 
|     def __init__(self): | 
|         self.PetID = 0  | 
|         self.Class = 0  | 
|         self.UpNeedExp = 0  | 
|         self.AtkAdd = 0 | 
|         return | 
|          | 
|     def GetPetID(self): return self.PetID # ÁéÊÞNPCID  | 
|     def GetClass(self): return self.Class # ÁéÊÞ½×Êý  | 
|     def GetUpNeedExp(self): return self.UpNeedExp # ÁéÊÞÉý½×ËùÐè¾ÑéÊý  | 
|     def GetAtkAdd(self): return self.AtkAdd # Ã¿½×¹¥»÷Á¦¼Ó³É | 
|   | 
| # ÁéÊÞÎüÊÕ×°±¸±í | 
| class IPY_PetEatEquip(): | 
|      | 
|     def __init__(self): | 
|         self.EquipColor = 0  | 
|         self.EquipClass = 0  | 
|         self.Exp = 0  | 
|         self.FamilyStoreItemScore = 0 | 
|         return | 
|          | 
|     def GetEquipColor(self): return self.EquipColor # ×°±¸Æ·ÖÊ  | 
|     def GetEquipClass(self): return self.EquipClass # ×°±¸½×Êý  | 
|     def GetExp(self): return self.Exp # »ñµÃÁéÊÞÉý¼¶¾Ñé  | 
|     def GetFamilyStoreItemScore(self): return self.FamilyStoreItemScore # ÏÉÃ˱¦¿â»ý·Ö | 
|   | 
| # ×øÆïÉý¼¶±í | 
| class IPY_HorseLVUp(): | 
|      | 
|     def __init__(self): | 
|         self.HorseLV = 0  | 
|         self.HorseSkinID = 0  | 
|         self.NeedEatCount = 0  | 
|         self.LVAttrType = []  | 
|         self.LVAttrValue = [] | 
|         return | 
|          | 
|     def GetHorseLV(self): return self.HorseLV # ×øÆïµÈ¼¶  | 
|     def GetHorseSkinID(self): return self.HorseSkinID # Íâ¹ÛÎïÆ·ID  | 
|     def GetNeedEatCount(self): return self.NeedEatCount # Éý¼¶ËùÐè¸öÊý£¨·ÇÀۼƣ©  | 
|     def GetLVAttrType(self): return self.LVAttrType # Ã¿¼¶¶îÍâÊôÐÔÀàÐÍ£¨·ÇÀÛ»ý£©  | 
|     def GetLVAttrValue(self): return self.LVAttrValue # Ã¿¼¶¶îÍâÊôÐÔÖµ£¨·ÇÀÛ»ý£© | 
|   | 
| # ×øÆï»Ã»¯±í | 
| class IPY_HorseSkinPlus(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.HorseSkinPlusID = 0  | 
|         self.UnlockItemID = 0  | 
|         self.UnlockItemCnt = 0  | 
|         self.AttrType = []  | 
|         self.AttrValue = []  | 
|         self.InitFightPower = 0 | 
|         return | 
|          | 
|     def GetID(self): return self.ID # »Ã»¯±àºÅID  | 
|     def GetHorseSkinPlusID(self): return self.HorseSkinPlusID # Íâ¹ÛÎïÆ·ID  | 
|     def GetUnlockItemID(self): return self.UnlockItemID # ½âËø×øÆïÎïÆ·±àºÅ  | 
|     def GetUnlockItemCnt(self): return self.UnlockItemCnt # ½âËøËùÐèÎïÆ·ÊýÁ¿  | 
|     def GetAttrType(self): return self.AttrType # ¼¤»î¼Ó³ÉÊôÐÔÀàÐÍ  | 
|     def GetAttrValue(self): return self.AttrValue # ¼¤»î¼Ó³ÉÊôÐÔÖµ  | 
|     def GetInitFightPower(self): return self.InitFightPower # Æ¤·ô¶îÍâÕ½Á¦ | 
|   | 
| # Íæ¼ÒµÈ¼¶±í | 
| class IPY_PlayerLV(): | 
|      | 
|     def __init__(self): | 
|         self.LV = 0  | 
|         self.ExpPoint = 0  | 
|         self.Exp = 0  | 
|         self.TalentPoint = 0  | 
|         self.ReExp = 0  | 
|         self.ReMaxHP = 0  | 
|         self.ReAtk = 0  | 
|         self.ReDef = 0  | 
|         self.ReHit = 0  | 
|         self.ReMiss = 0  | 
|         self.ReAtkSpeed = 0  | 
|         self.ReSkillAtkRate = 0  | 
|         self.ReDamagePer = 0  | 
|         self.ReDamReduce = 0  | 
|         self.ReIgnoreDefRate = 0  | 
|         self.ReLuckyHitRate = 0  | 
|         self.ReLuckyHit = 0  | 
|         self.ReBleedDamage = 0  | 
|         self.ReIceAtk = 0  | 
|         self.ReIceDef = 0  | 
|         self.RePetAtk = 0  | 
|         self.RePetSkillAtkRate = 0  | 
|         self.RePetDamPer = 0  | 
|         self.ReFinalHurt = 0  | 
|         self.ReFinalHurtReduce = 0  | 
|         self.RePotionReply = 0  | 
|         self.RePotionCD = 0  | 
|         self.AttackEff = 0  | 
|         self.ReFightPower = 0  | 
|         self.IceLodeFightPower = 0 | 
|         return | 
|          | 
|     def GetLV(self): return self.LV # Íæ¼ÒµÈ¼¶  | 
|     def GetExpPoint(self): return self.ExpPoint # Éý¼¶ËùÐè¾Ñéµã,ÿ¸ö¾Ñéµã´ú±íµÄ¾ÑéÓÉÏîÄ¿¾ö¶¨  | 
|     def GetExp(self): return self.Exp # ³ý¾Ñéµã×ܾÑéÍâÉý¼¶»¹ÐèµÄ¾Ñé  | 
|     def GetTalentPoint(self): return self.TalentPoint # µÈ¼¶»ñµÃµÄÌ츳µã  | 
|     def GetReExp(self): return self.ReExp # µÈ¼¶¾ÑéЧÂÊ(second)  | 
|     def GetReMaxHP(self): return self.ReMaxHP # ÉúÃü  | 
|     def GetReAtk(self): return self.ReAtk # ¹¥»÷  | 
|     def GetReDef(self): return self.ReDef # ·ÀÓù  | 
|     def GetReHit(self): return self.ReHit # ÃüÖÐ  | 
|     def GetReMiss(self): return self.ReMiss # ÉÁ±Ü  | 
|     def GetReAtkSpeed(self): return self.ReAtkSpeed # ¹¥ËÙ  | 
|     def GetReSkillAtkRate(self): return self.ReSkillAtkRate # ¼¼ÄÜÉ˺¦±ÈÀý  | 
|     def GetReDamagePer(self): return self.ReDamagePer # Ôö¼ÓÉ˺¦  | 
|     def GetReDamReduce(self): return self.ReDamReduce # ¼õÉÙÉ˺¦  | 
|     def GetReIgnoreDefRate(self): return self.ReIgnoreDefRate # ÎÞÊÓ·ÀÓù±ÈÀý  | 
|     def GetReLuckyHitRate(self): return self.ReLuckyHitRate # »áÐÄÒ»»÷ÂÊ  | 
|     def GetReLuckyHit(self): return self.ReLuckyHit # »áÐÄÒ»»÷É˺¦  | 
|     def GetReBleedDamage(self): return self.ReBleedDamage # Á÷ѪÉ˺¦Ôö¼Ó  | 
|     def GetReIceAtk(self): return self.ReIceAtk # ÕæÊµÉ˺¦  | 
|     def GetReIceDef(self): return self.ReIceDef # ÕæÊµµÖÓù  | 
|     def GetRePetAtk(self): return self.RePetAtk # Áé³è¹¥»÷  | 
|     def GetRePetSkillAtkRate(self): return self.RePetSkillAtkRate # Áé³è¼¼ÄÜ  | 
|     def GetRePetDamPer(self): return self.RePetDamPer # Áé³èÉ˺¦Ôö¼Ó  | 
|     def GetReFinalHurt(self): return self.ReFinalHurt # ¹Ì¶¨É˺¦Ôö¼Ó  | 
|     def GetReFinalHurtReduce(self): return self.ReFinalHurtReduce # ¹Ì¶¨É˺¦¼õÉÙ  | 
|     def GetRePotionReply(self): return self.RePotionReply # ÑªÆ¿»Ö¸´Á¿  | 
|     def GetRePotionCD(self): return self.RePotionCD # ÑªÆ¿CD  | 
|     def GetAttackEff(self): return self.AttackEff # ¹Ò»úЧÂÊ  | 
|     def GetReFightPower(self): return self.ReFightPower # Õ½¶·Á¦  | 
|     def GetIceLodeFightPower(self): return self.IceLodeFightPower # ±ù¾§¿óÂöɨµ´Õ½¶·Á¦ | 
|   | 
| # GM²âÊÔÊôÐÔ±í | 
| class IPY_GMAttr(): | 
|      | 
|     def __init__(self): | 
|         self.GMAttrID = 0  | 
|         self.IsValid = 0  | 
|         self.GMAccID = ""  | 
|         self.GMMaxLV = 0  | 
|         self.AttrLV = 0  | 
|         self.AttrPer = 0.0  | 
|         self.AttrSpecDict = {}  | 
|         self.AttrExDict = {} | 
|         return | 
|          | 
|     def GetGMAttrID(self): return self.GMAttrID # Êý¾ÝID  | 
|     def GetIsValid(self): return self.IsValid # ÊÇ·ñÓÐЧµÄ  | 
|     def GetGMAccID(self): return self.GMAccID # GMÍæ¼ÒÕ˺Š | 
|     def GetGMMaxLV(self): return self.GMMaxLV # ÓÐЧµÄ×î´óµÈ¼¶  | 
|     def GetAttrLV(self): return self.AttrLV # ¶ÔÓ¦µÈ¼¶±íÖеÄÊôÐÔ  | 
|     def GetAttrPer(self): return self.AttrPer # ¶ÔÓ¦µÈ¼¶±íÖеıÈÀý  | 
|     def GetAttrSpecDict(self): return self.AttrSpecDict # ÌØÊâÊôÐÔÖµ×Öµä {attrKey:value, ...}  | 
|     def GetAttrExDict(self): return self.AttrExDict # ÌØÊâÊôÐÔÖµ×Öµä {attrKey:value, ...} | 
|   | 
| # ³É³¤Ð͹ÖÎï²ÎÊý¹«Ê½±í | 
| class IPY_NPCStrengthen(): | 
|      | 
|     def __init__(self): | 
|         self.NPCID = 0  | 
|         self.IsStrengthenByPlayerCount = 0  | 
|         self.LVStrengthenMark = 0  | 
|         self.LVStrengthenType = 0  | 
|         self.CmpNPCBaseLV = 0  | 
|         self.HitTime = 0  | 
|         self.DefCoefficient = 0  | 
|         self.AtkCoefficient = 0  | 
|         self.AdjustCoefficient = 0  | 
|         self.AtkInterval = 0  | 
|         self.HitRate = 0  | 
|         self.MissRate = 0  | 
|         self.MonterNum = 0  | 
|         self.IceAtkCoefficient = 0  | 
|         self.IceDefCoefficient = 0  | 
|         self.MaxEnduranceTime = 0  | 
|         self.FightPowerCoefficient = 0 | 
|         return | 
|          | 
|     def GetNPCID(self): return self.NPCID # NPCID  | 
|     def GetIsStrengthenByPlayerCount(self): return self.IsStrengthenByPlayerCount # ÊÇ·ñ¸ù¾ÝÈËÊý³É³¤  | 
|     def GetLVStrengthenMark(self): return self.LVStrengthenMark # µÈ¼¶³É³¤ÊôÐÔ¹«Ê½±ê¼Ç  | 
|     def GetLVStrengthenType(self): return self.LVStrengthenType # µÈ¼¶³É³¤ÀàÐÍ, 0-²»°´µÈ¼¶³É³¤£»1-°´Íæ¼Òƽ¾ùµÈ¼¶£»2-°´Íæ¼Ò×î´óµÈ¼¶£»3-°´ÊÀ½çµÈ¼¶£»  | 
|     def GetCmpNPCBaseLV(self): return self.CmpNPCBaseLV # ÊÇ·ñ±È½ÏNPC±íµÈ¼¶, ÊǵĻ°È¡NPC±íÅäÖõȼ¶Óë³É³¤µÈ¼¶ÖнϴóµÈ¼¶  | 
|     def GetHitTime(self): return self.HitTime # ÊÜ»÷´ÎÊý  | 
|     def GetDefCoefficient(self): return self.DefCoefficient # ÈËÎï·ÀÓùϵÊý  | 
|     def GetAtkCoefficient(self): return self.AtkCoefficient # ÈËÎï¹¥»÷ϵÊý  | 
|     def GetAdjustCoefficient(self): return self.AdjustCoefficient # µ÷ÕûϵÊý±ÈÀý  | 
|     def GetAtkInterval(self): return self.AtkInterval # ¹ÖÎï¹¥»÷¼ä¸ô  | 
|     def GetHitRate(self): return self.HitRate # ¶ÔÈËÎïµÄÃüÖÐÂÊ  | 
|     def GetMissRate(self): return self.MissRate # ¶ÔÈËÎïµÄÉÁ±ÜÂÊ  | 
|     def GetMonterNum(self): return self.MonterNum # ¹ÖÎïÊý  | 
|     def GetIceAtkCoefficient(self): return self.IceAtkCoefficient # ÔªËع¥»÷±ÈÀý  | 
|     def GetIceDefCoefficient(self): return self.IceDefCoefficient # ÔªËØ¿¹ÐÔ±ÈÀý  | 
|     def GetMaxEnduranceTime(self): return self.MaxEnduranceTime # Íæ¼Ò×î´ó³ÐÊÜÉ˺¦Ê±¼ä  | 
|     def GetFightPowerCoefficient(self): return self.FightPowerCoefficient # Ñ¹ÖÆÕ½¶·Á¦ÏµÊý | 
|   | 
| # NPCʱ¼äµôѪ±í | 
| class IPY_NPCTimeLostHP(): | 
|      | 
|     def __init__(self): | 
|         self.NPCID = 0  | 
|         self.LostHPPerSecond = 0  | 
|         self.MaxPlayerCount = 0  | 
|         self.LostHPPerSecondEx = 0  | 
|         self.FightPowerMinByLV = 0  | 
|         self.FightPowerMin = 0  | 
|         self.FightPowerMax = 0  | 
|         self.EveryFightPower = 0  | 
|         self.EveryFightPowerLostHPEx = 0 | 
|         return | 
|          | 
|     def GetNPCID(self): return self.NPCID # NPCID  | 
|     def GetLostHPPerSecond(self): return self.LostHPPerSecond # µ¥ÈËÿÃëµôѪÁ¿  | 
|     def GetMaxPlayerCount(self): return self.MaxPlayerCount # ×î´óÈËÊý  | 
|     def GetLostHPPerSecondEx(self): return self.LostHPPerSecondEx # Ã¿Ôö¼ÓÒ»È˸½¼ÓµôѪÁ¿  | 
|     def GetFightPowerMinByLV(self): return self.FightPowerMinByLV # ±ê×¼Õ½Á¦ÊÇ·ñÈ¡µÈ¼¶±í  | 
|     def GetFightPowerMin(self): return self.FightPowerMin # ±ê×¼Õ½Á¦  | 
|     def GetFightPowerMax(self): return self.FightPowerMax # ÉÏÏÞÕ½Á¦  | 
|     def GetEveryFightPower(self): return self.EveryFightPower # Ã¿xµãÕ½Á¦  | 
|     def GetEveryFightPowerLostHPEx(self): return self.EveryFightPowerLostHPEx # Ã¿xµãÕ½Á¦¸½¼ÓÉ˺¦ | 
|   | 
| # ×°±¸Ì××°ÊôÐÔ±í | 
| class IPY_EquipSuitAttr(): | 
|      | 
|     def __init__(self): | 
|         self.SuiteID = 0  | 
|         self.SuiteCnt = 0  | 
|         self.Star = 0  | 
|         self.AttrInfo = {}  | 
|         self.SkillID = 0  | 
|         self.IsNotify = 0  | 
|         self.ActivateIndex = 0 | 
|         return | 
|          | 
|     def GetSuiteID(self): return self.SuiteID # Ì××°ID  | 
|     def GetSuiteCnt(self): return self.SuiteCnt # Ì××°¼þÊý  | 
|     def GetStar(self): return self.Star # ÐÇÊý  | 
|     def GetAttrInfo(self): return self.AttrInfo # ÊôÐÔ  | 
|     def GetSkillID(self): return self.SkillID # ¼¼ÄÜID  | 
|     def GetIsNotify(self): return self.IsNotify # ÊÇ·ñ¹ã²¥  | 
|     def GetActivateIndex(self): return self.ActivateIndex # ¼¤»îË÷Òý | 
|   | 
| # ÓðÒí¾«Á¶ÊôÐÔ±í | 
| class IPY_WingRefineAttr(): | 
|      | 
|     def __init__(self): | 
|         self.WingClassLV = 0  | 
|         self.AttrInfo = {}  | 
|         self.ItemColorInfo = {}  | 
|         self.MaxRefineExp = 0 | 
|         return | 
|          | 
|     def GetWingClassLV(self): return self.WingClassLV # ³á°ò½×¼¶  | 
|     def GetAttrInfo(self): return self.AttrInfo # ¾«Á¶ÊôÐÔÐÅÏ¢  | 
|     def GetItemColorInfo(self): return self.ItemColorInfo # ¾«Á¶¾Ñé¶ÔÓ¦ÑÕÉ«ÐÅÏ¢  | 
|     def GetMaxRefineExp(self): return self.MaxRefineExp # ±¾½××î´ó¾«Á¶Öµ | 
|   | 
| # ÓðÒí¾«Á¶¾Ñé±í | 
| class IPY_WingRefineExp(): | 
|      | 
|     def __init__(self): | 
|         self.ItemID = 0  | 
|         self.RandExpMin = 0  | 
|         self.RandExpMax = 0  | 
|         self.ExpMaterial = {} | 
|         return | 
|          | 
|     def GetItemID(self): return self.ItemID # ¾«Á¶ÎïÆ·ID  | 
|     def GetRandExpMin(self): return self.RandExpMin # ×îÐ¡Ëæ»ú¾«Á¶Öµ  | 
|     def GetRandExpMax(self): return self.RandExpMax # ×î´óËæ»ú¾«Á¶Öµ  | 
|     def GetExpMaterial(self): return self.ExpMaterial # ³á°ò´úÊý¶ÔÓ¦¾«Á¶Öµ | 
|   | 
| # ÏÉÃ˿Ƽ¼±í | 
| class IPY_FamilyTech(): | 
|      | 
|     def __init__(self): | 
|         self.TechID = 0  | 
|         self.AttrType = 0  | 
|         self.AttrValue = 0  | 
|         self.Contribution = 0  | 
|         self.PowerEx = 0 | 
|         return | 
|          | 
|     def GetTechID(self): return self.TechID # ¿Æ¼¼ID*1000+µÈ¼¶  | 
|     def GetAttrType(self): return self.AttrType # ÊôÐÔÀàÐÍ  | 
|     def GetAttrValue(self): return self.AttrValue # ÊôÐÔÖµ  | 
|     def GetContribution(self): return self.Contribution # ÐèÒª¹±Ï×¶È  | 
|     def GetPowerEx(self): return self.PowerEx # ¶îÍâÕ½Á¦ | 
|   | 
| # Õ½¶·Á¦²ÎÊýµÈ¼¶ÏµÊý±í | 
| class IPY_FightPowerParam(): | 
|      | 
|     def __init__(self): | 
|         self.LV = 0  | 
|         self.CftHit = 0  | 
|         self.CftMiss = 0  | 
|         self.CftIgnoreDefRate = 0  | 
|         self.CftDamChanceDef = 0  | 
|         self.CftFaintRate = 0  | 
|         self.CftSuperHitRateReduce = 0  | 
|         self.CftSuperHitRate = 0  | 
|         self.CftLuckyHitRate = 0  | 
|         self.CftLuckyHitRateReduce = 0  | 
|         self.CftSkillAtkRate = 0  | 
|         self.CftSkillAtkRateReduce = 0  | 
|         self.CftFinalHurtPer = 0  | 
|         self.CftFinalHurtReducePer = 0  | 
|         self.CftDamagePerPVP = 0  | 
|         self.CftDamagePerPVPReduce = 0  | 
|         self.CftNPCHurtAddPer = 0  | 
|         self.CftNormalHurtPer = 0  | 
|         self.CftFabaoHurtPer = 0  | 
|         self.CftDamBackPer = 0  | 
|         self.CftIgnoreDefRateReduce = 0  | 
|         self.CftFaintDefRate = 0  | 
|         self.CftAtkSpeed = 0  | 
|         self.CftJobAHurtAddPer = 0  | 
|         self.CftJobBHurtAddPer = 0  | 
|         self.CftJobCHurtAddPer = 0  | 
|         self.CftJobAAtkReducePer = 0  | 
|         self.CftJobBAtkReducePer = 0  | 
|         self.CftJobCAtkReducePer = 0 | 
|         return | 
|          | 
|     def GetLV(self): return self.LV # µÈ¼¶  | 
|     def GetCftHit(self): return self.CftHit # ÃüÖÐϵÊý  | 
|     def GetCftMiss(self): return self.CftMiss # ÉÁ±ÜϵÊý  | 
|     def GetCftIgnoreDefRate(self): return self.CftIgnoreDefRate # ÎÞÊÓ·ÀÓùϵÊý  | 
|     def GetCftDamChanceDef(self): return self.CftDamChanceDef # µÖÓùϵÊý  | 
|     def GetCftFaintRate(self): return self.CftFaintRate # »÷ÔÎϵÊý  | 
|     def GetCftSuperHitRateReduce(self): return self.CftSuperHitRateReduce # ±©»÷ÂÊ¿¹ÐÔϵÊý  | 
|     def GetCftSuperHitRate(self): return self.CftSuperHitRate # ±©»÷ÂÊϵÊý  | 
|     def GetCftLuckyHitRate(self): return self.CftLuckyHitRate # »áÐÄÒ»»÷ÂÊϵÊý  | 
|     def GetCftLuckyHitRateReduce(self): return self.CftLuckyHitRateReduce # »áÐÄÒ»»÷¿¹ÐÔϵÊý  | 
|     def GetCftSkillAtkRate(self): return self.CftSkillAtkRate # ¼¼ÄÜÉ˺¦ÏµÊý  | 
|     def GetCftSkillAtkRateReduce(self): return self.CftSkillAtkRateReduce # ¼¼ÄܼõÉËϵÊý  | 
|     def GetCftFinalHurtPer(self): return self.CftFinalHurtPer # ×îÖÕÉ˺¦¼Ó³ÉϵÊý  | 
|     def GetCftFinalHurtReducePer(self): return self.CftFinalHurtReducePer # ×îÖÕÉ˺¦¼õÃâϵÊý  | 
|     def GetCftDamagePerPVP(self): return self.CftDamagePerPVP # PVPÉ˺¦Ôö¼ÓϵÊý  | 
|     def GetCftDamagePerPVPReduce(self): return self.CftDamagePerPVPReduce # PVPÉ˺¦¼õÉÙϵÊý  | 
|     def GetCftNPCHurtAddPer(self): return self.CftNPCHurtAddPer # PVE¼¼ÄܼӳÉϵÊý  | 
|     def GetCftNormalHurtPer(self): return self.CftNormalHurtPer # ÆÕͨ¸½¼ÓÉ˺¦¼Ó³ÉϵÊý  | 
|     def GetCftFabaoHurtPer(self): return self.CftFabaoHurtPer # ·¨±¦¸½¼ÓÉ˺¦¼Ó³ÉϵÊý  | 
|     def GetCftDamBackPer(self): return self.CftDamBackPer # É˺¦·´ÉäϵÊý  | 
|     def GetCftIgnoreDefRateReduce(self): return self.CftIgnoreDefRateReduce # ÎÞÊÓ·ÀÓù¿¹ÐÔϵÊý  | 
|     def GetCftFaintDefRate(self): return self.CftFaintDefRate # ¿ØÖƵֿ¹ÏµÊý  | 
|     def GetCftAtkSpeed(self): return self.CftAtkSpeed # ¹¥ËÙϵÊý  | 
|     def GetCftJobAHurtAddPer(self): return self.CftJobAHurtAddPer # ¶ÔÄ¿±êսʿÉ˺¦¼Ó³É  | 
|     def GetCftJobBHurtAddPer(self): return self.CftJobBHurtAddPer # ¶ÔÄ¿±ê·¨Ê¦É˺¦¼Ó³É  | 
|     def GetCftJobCHurtAddPer(self): return self.CftJobCHurtAddPer # ¶ÔÄ¿±ê¹¼ýÉ˺¦¼Ó³É  | 
|     def GetCftJobAAtkReducePer(self): return self.CftJobAAtkReducePer # Õ½Ê¿¹¥»÷É˺¦¼õÃâ  | 
|     def GetCftJobBAtkReducePer(self): return self.CftJobBAtkReducePer # ·¨Ê¦¹¥»÷É˺¦¼õÃâ  | 
|     def GetCftJobCAtkReducePer(self): return self.CftJobCAtkReducePer # ¹¼ý¹¥»÷É˺¦¼õÃâ | 
|   | 
| # NPCµôÂä±í | 
| class IPY_NPCDropItem(): | 
|      | 
|     def __init__(self): | 
|         self.NPCID = 0  | 
|         self.MaxWorldLV = 0  | 
|         self.MaxDropLV = 0  | 
|         self.CanDropRatePlus = 0  | 
|         self.IsDropJobSelf = 0  | 
|         self.PieRateDrop = []  | 
|         self.PieRateDoCnt = 0  | 
|         self.IndepRateDrop = {}  | 
|         self.IndepRateDoCnt = 0  | 
|         self.EquipColorMaxDropCount = {}  | 
|         self.EquipColorSuitInfo = {}  | 
|         self.EquipPartKeyRateInfo = {}  | 
|         self.ColorSuitPartOptimization = 0  | 
|         self.KillCountDropEquipPub = {}  | 
|         self.ItemIDDropRate = {}  | 
|         self.ItemIDMaxDropCount = {}  | 
|         self.ItemKeyDropRate = {}  | 
|         self.ItemKeyDropRateJob = {}  | 
|         self.ItemKeyMaxDropCount = {}  | 
|         self.DropMoneyDoCnt = 0  | 
|         self.DropMoneyRate = 0  | 
|         self.DropMoneyMin = 0  | 
|         self.DropMoneyMax = 0  | 
|         self.KillCountDropPub = {}  | 
|         self.KillCountDropPri = []  | 
|         self.PriItemIDDrop = []  | 
|         self.AucionItemCanSell = 0 | 
|         return | 
|          | 
|     def GetNPCID(self): return self.NPCID # NPCID  | 
|     def GetMaxWorldLV(self): return self.MaxWorldLV # ×î´óÊÀ½çµÈ¼¶£¬0Ϊ²»ÏÞÖÆ£¬²»ÊÜ×î´óµôÂäµÈ¼¶Ó°Ïì  | 
|     def GetMaxDropLV(self): return self.MaxDropLV # ×î´ó¿ÉµôÂäµÄÍæ¼ÒµÈ¼¶, ²»Ó°ÏìÊÀ½çµÈ¼¶  | 
|     def GetCanDropRatePlus(self): return self.CanDropRatePlus # ¶îÍâÌáÉýµôÂʵÄÊÇ·ñÓÐЧ  | 
|     def GetIsDropJobSelf(self): return self.IsDropJobSelf # ÊÇ·ñÖ»µôÂä±¾Ö°Òµ  | 
|     def GetPieRateDrop(self): return self.PieRateDrop # ±ýͼ¸ÅÂʵôÂäÐÅÏ¢ [(¸ÅÂÊ,0),(¸ÅÂÊ,(½×,ÑÕÉ«)),...]  | 
|     def GetPieRateDoCnt(self): return self.PieRateDoCnt # ±ýͼ¸ÅÂÊÖ´ÐдÎÊý  | 
|     def GetIndepRateDrop(self): return self.IndepRateDrop # ¶ÀÁ¢¸ÅÂʵôÂäÐÅÏ¢ {(½×,ÑÕÉ«):¸ÅÂÊ,...}  | 
|     def GetIndepRateDoCnt(self): return self.IndepRateDoCnt # ¶ÀÁ¢¸ÅÂÊÖ´ÐдÎÊý  | 
|     def GetEquipColorMaxDropCount(self): return self.EquipColorMaxDropCount # ×°±¸ÑÕÉ«×î´óµôÂäÎïÆ·Êý {ÑÕÉ«:ÉÏÏÞÊýÁ¿,...}  | 
|     def GetEquipColorSuitInfo(self): return self.EquipColorSuitInfo # ×°±¸ÑÕÉ«¶ÔÓ¦Ì××°¸ÅÂÊ {ÑÕÉ«:Ì××°¸ÅÂÊ, ...}  | 
|     def GetEquipPartKeyRateInfo(self): return self.EquipPartKeyRateInfo # ×°±¸²¿Î»¼¯ºÏÐÅÏ¢ {(ÑÕÉ«,ÊÇ·ñÌ××°):²¿Î»¼¯ºÏkey, ...}  | 
|     def GetColorSuitPartOptimization(self): return self.ColorSuitPartOptimization # ²¿Î»ÑÕÉ«ÌׯÀ·ÖÓÅÑ¡µôÂ䣬ʮλ´ú±íÑÕÉ«£¬¸öλ´ú±íÌ××°  | 
|     def GetKillCountDropEquipPub(self): return self.KillCountDropEquipPub # µÚx´Î»÷ɱ¸½¼Ó±Øµô×°±¸ {´ÎÊý:[½×,ÑÕÉ«,ÊÇ·ñÌ××°,²¿Î»¼¯ºÏkey], ...}  | 
|     def GetItemIDDropRate(self): return self.ItemIDDropRate # Ö¸¶¨ÎïÆ·IDµôÂÊÐÅÏ¢ {ÎïÆ·ID:¸ÅÂÊ, ...}  | 
|     def GetItemIDMaxDropCount(self): return self.ItemIDMaxDropCount # Ö¸¶¨ÎïÆ·ID×î´óµôÂä¸öÊý,ûÅäĬÈÏ1´Î {ÎïÆ·ID:Ëæ»ú´ÎÊý,...}  | 
|     def GetItemKeyDropRate(self): return self.ItemKeyDropRate # ÎïÆ·ID¼¯ºÏKey¸ÅÂÊ, Ëæ»úÒ»¸ö, ÓÅÏȼ¶µÍ {ÎïÆ·ID¼¯ºÏkey:¸ÅÂÊ, ...}  | 
|     def GetItemKeyDropRateJob(self): return self.ItemKeyDropRateJob # ÎïÆ·ID¼¯ºÏKey¸ÅÂÊ, ×ÔÉíÖ°Òµ, ÓÅÏȼ¶¸ß {ÎïÆ·ID¼¯ºÏkey:¸ÅÂÊ, ...}  | 
|     def GetItemKeyMaxDropCount(self): return self.ItemKeyMaxDropCount # ÎïÆ·ID¼¯ºÏKeyËæ»ú´ÎÊý,ûÅäĬÈÏ1´Î {ÎïÆ·ID¼¯ºÏkey:Ëæ»ú´ÎÊý,...}  | 
|     def GetDropMoneyDoCnt(self): return self.DropMoneyDoCnt # µôÂä½ð±ÒÖ´ÐдÎÊý  | 
|     def GetDropMoneyRate(self): return self.DropMoneyRate # µôÂä½ð±Ò¸ÅÂÊ  | 
|     def GetDropMoneyMin(self): return self.DropMoneyMin # µôÂä½ð±Ò×îСֵ  | 
|     def GetDropMoneyMax(self): return self.DropMoneyMax # µôÂä½ð±Ò×î´óÖµ  | 
|     def GetKillCountDropPub(self): return self.KillCountDropPub # »÷ɱ´ÎÊý±Øµô£¨¹«¹²£©{»÷ɱ´ÎÊý:[[ÎïÆ·ID, ...], [Ëæ»úÎïÆ·ID, ...]], ...}  | 
|     def GetKillCountDropPri(self): return self.KillCountDropPri # »÷ɱ´ÎÊý±Øµô£¨Ë½ÓУ©[»÷ɱ´ÎÊý,[ÎïÆ·ID,...],ÊÇ·ñÖ±½Ó·ÅÈë±³°ü]  | 
|     def GetPriItemIDDrop(self): return self.PriItemIDDrop # ËùÓйéÊôÕß˽ÓеôÂäÎïÆ·IDÁбí,ÿÈËÒ»·Ý,ĬÈϰó¶¨,ûÓÐÖ°ÒµÇø·Ö[ÎïÆ·ID, ...]  | 
|     def GetAucionItemCanSell(self): return self.AucionItemCanSell # µôÂäÅÄÆ·¿É·ñÉϼܼ¯ÊÐ | 
|   | 
| # ·ûÓ¡Ëþ±í | 
| class IPY_RuneTower(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.RunePoint = 0  | 
|         self.Ysog = 0  | 
|         self.NPCID = 0  | 
|         self.IsNotify = 0  | 
|         self.FixEndAward = []  | 
|         self.GoodDrop = {}  | 
|         self.SweepRunePoint = 0  | 
|         self.SweepYsog = 0  | 
|         self.SweepGoodDrop = {} | 
|         return | 
|          | 
|     def GetID(self): return self.ID # Ëþ±àºÅ  | 
|     def GetRunePoint(self): return self.RunePoint # ¹ý¹Ø¸ø·ûÓ¡¾«»ª  | 
|     def GetYsog(self): return self.Ysog # ¹ý¹Ø¸øÄ§¾«  | 
|     def GetNPCID(self): return self.NPCID # npcid  | 
|     def GetIsNotify(self): return self.IsNotify # ÊÇ·ñ¹ã²¥  | 
|     def GetFixEndAward(self): return self.FixEndAward # ¹Ì¶¨½áËã½±Àø  | 
|     def GetGoodDrop(self): return self.GoodDrop # ÕäÏ¡·ûӡͨ¹ØµôÂä¸ÅÂÊ  | 
|     def GetSweepRunePoint(self): return self.SweepRunePoint # É¨µ´·ûÓ¡¾«»ª  | 
|     def GetSweepYsog(self): return self.SweepYsog # É¨µ´Ä§¾«  | 
|     def GetSweepGoodDrop(self): return self.SweepGoodDrop # É¨µ´ÕäÏ¡·ûÓ¡ | 
|   | 
| # µØÍ¼±í¸ñ | 
| class IPY_ChinMap(): | 
|      | 
|     def __init__(self): | 
|         self.MapID = 0  | 
|         self.CanRide = 0  | 
|         self.CanOutPet = 0 | 
|         return | 
|          | 
|     def GetMapID(self): return self.MapID # µØÍ¼ID  | 
|     def GetCanRide(self): return self.CanRide # ¿É·ñÆï³Ë  | 
|     def GetCanOutPet(self): return self.CanOutPet # ¿É·ñÕÙ»½³èÎï | 
|   | 
| # ¸±±¾×ܱí | 
| class IPY_FBFunc(): | 
|      | 
|     def __init__(self): | 
|         self.DataMapID = 0  | 
|         self.DayTimes = 0  | 
|         self.DayResetType = 0  | 
|         self.WeekTimes = 0  | 
|         self.WeekResetType = 0  | 
|         self.RewardRate = []  | 
|         self.BuyTimesVIPPriID = 0  | 
|         self.ExtraTimesVIPPriID = 0  | 
|         self.ExtraTimesMWPriID = 0  | 
|         self.GuardPick = 0  | 
|         self.OfflineTime = 0  | 
|         self.FBPoint = 0  | 
|         self.HelpPoint = 0  | 
|         self.DayHelpCountMax = 0 | 
|         return | 
|          | 
|     def GetDataMapID(self): return self.DataMapID # Êý¾ÝµØÍ¼ID  | 
|     def GetDayTimes(self): return self.DayTimes # Ã¿ÈÕ¿ÉÌôÕ½´ÎÊý, 0Ϊ²»ÏÞÖÆ  | 
|     def GetDayResetType(self): return self.DayResetType # Ã¿ÈÕ´ÎÊýÖØÖÃÀàÐÍ; 0-²»ÖØÖÃ,1-0µã,2-5µã  | 
|     def GetWeekTimes(self): return self.WeekTimes # Ã¿ÖÜ¿ÉÌôÕ½´ÎÊý, 0Ϊ²»ÏÞÖÆ  | 
|     def GetWeekResetType(self): return self.WeekResetType # Ã¿ÖÜ´ÎÊýÖØÖÃÀàÐÍ; 0-²»ÖØÖÃ,1-0µã,2-5µã  | 
|     def GetRewardRate(self): return self.RewardRate # ÆÀ¼¶½±Àø±ÈÀý  | 
|     def GetBuyTimesVIPPriID(self): return self.BuyTimesVIPPriID # ¹ºÂò´ÎÊýVIPȨÏÞID  | 
|     def GetExtraTimesVIPPriID(self): return self.ExtraTimesVIPPriID # ¶îÍâ´ÎÊýVIPȨÏÞID  | 
|     def GetExtraTimesMWPriID(self): return self.ExtraTimesMWPriID # ¶îÍâ´ÎÊý·¨±¦È¨ÏÞID  | 
|     def GetGuardPick(self): return self.GuardPick # ¸ÃµØÍ¼ÊØ»¤ÊÇ·ñÄÜʰȡ  | 
|     def GetOfflineTime(self): return self.OfflineTime # ÀëÏß¶à¾ÃÍ˳ö¸±±¾(Ãë)  | 
|     def GetFBPoint(self): return self.FBPoint # ¸±±¾¹ý¹ØÏÉÔµ±Ò  | 
|     def GetHelpPoint(self): return self.HelpPoint # ÖúÕ½ÏÉÔµ±Ò(0´ú±í²»¿ÉÖúÕ½)  | 
|     def GetDayHelpCountMax(self): return self.DayHelpCountMax # Ã¿ÈÕÊÖ¶¯ÖúÕ½»ñµÃÏÉÔµ±Ò´ÎÊý£¨·Ç¾µÏñ£© | 
|   | 
| # ¸±±¾¹¦ÄÜÏß·±í | 
| class IPY_FBLine(): | 
|      | 
|     def __init__(self): | 
|         self.DataMapID = 0  | 
|         self.LineID = 0  | 
|         self.MapID = 0  | 
|         self.LVLimitMin = 0  | 
|         self.LVLimitMax = 0  | 
|         self.TicketID = 0  | 
|         self.TicketCostCnt = []  | 
|         self.TicketPrice = 0  | 
|         self.SweepLVLimit = 0  | 
|         self.SweepItemID = 0  | 
|         self.SweepCostCnt = 0  | 
|         self.EnterPosInfo = 0  | 
|         self.StepTime = 0  | 
|         self.RefreshNPC = 0  | 
|         self.GradeInfo = 0  | 
|         self.RewardInfo = 0 | 
|         return | 
|          | 
|     def GetDataMapID(self): return self.DataMapID # Êý¾ÝµØÍ¼ID  | 
|     def GetLineID(self): return self.LineID # ¹¦ÄÜÏß·ID  | 
|     def GetMapID(self): return self.MapID # ³¡¾°µØÍ¼ID  | 
|     def GetLVLimitMin(self): return self.LVLimitMin # ×îµÍµÈ¼¶ÏÞÖÆ, 0Ϊ²»ÏÞÖÆ  | 
|     def GetLVLimitMax(self): return self.LVLimitMax # ×î¸ßµÈ¼¶ÏÞÖÆ, 0Ϊ²»ÏÞÖÆ  | 
|     def GetTicketID(self): return self.TicketID # ÃÅÆ±ID  | 
|     def GetTicketCostCnt(self): return self.TicketCostCnt # ÃÅÆ±ÏûºÄÊýÐÅÏ¢  | 
|     def GetTicketPrice(self): return self.TicketPrice # ÃÅÆ±µ¥¼Û(²»ÄÜÓÃÇ®µÖµÄÅä0)  | 
|     def GetSweepLVLimit(self): return self.SweepLVLimit # É¨µ´µÈ¼¶ÏÞÖÆ, 0Ϊ²»ÏÞÖÆ  | 
|     def GetSweepItemID(self): return self.SweepItemID # É¨µ´ËùÐèµÀ¾ßID  | 
|     def GetSweepCostCnt(self): return self.SweepCostCnt # É¨µ´ËùÐèµÀ¾ß¸öÊý  | 
|     def GetEnterPosInfo(self): return self.EnterPosInfo # ½øÈë×ø±êÐÅÏ¢  | 
|     def GetStepTime(self): return self.StepTime # ½×¶Îʱ¼ä  | 
|     def GetRefreshNPC(self): return self.RefreshNPC # ±êÊÔµãË¢¹ÖÅäÖà  | 
|     def GetGradeInfo(self): return self.GradeInfo # ÆÀ¼¶¹æÔò  | 
|     def GetRewardInfo(self): return self.RewardInfo # ½±ÀøÐÅÏ¢ | 
|   | 
| # ¸±±¾ÖúÕ½±í | 
| class IPY_FBHelpBattle(): | 
|      | 
|     def __init__(self): | 
|         self.DataMapID = 0  | 
|         self.LineID = 0  | 
|         self.FightPowerMin = 0  | 
|         self.RobotFightPower = 0  | 
|         self.RobotLV = 0  | 
|         self.RobotBaseHurt = 0  | 
|         self.RobotHPCoefficient = 0  | 
|         self.RobotSkillsDict = {} | 
|         return | 
|          | 
|     def GetDataMapID(self): return self.DataMapID # Êý¾ÝµØÍ¼ID  | 
|     def GetLineID(self): return self.LineID # ¹¦ÄÜÏß·ID  | 
|     def GetFightPowerMin(self): return self.FightPowerMin # ÖúÕ½×îµÍÕ½Á¦£¬Ò²ÊǸ±±¾±£µ×Õ½Á¦  | 
|     def GetRobotFightPower(self): return self.RobotFightPower # ÖúÕ½NPCÕ½Á¦  | 
|     def GetRobotLV(self): return self.RobotLV # ÖúÕ½NPCµÈ¼¶  | 
|     def GetRobotBaseHurt(self): return self.RobotBaseHurt # ÖúÕ½NPC±£µ×É˺¦  | 
|     def GetRobotHPCoefficient(self): return self.RobotHPCoefficient # ÖúÕ½NPCÉúÃüϵÊý  | 
|     def GetRobotSkillsDict(self): return self.RobotSkillsDict # ÖúÕ½NPC¼¼ÄÜ, {"Ö°Òµ":[¼¼ÄÜÁбí], ...} | 
|   | 
| # ¸±±¾Ë¢¹Ö±êʶµã±í | 
| class IPY_NPCCustomRefresh(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.RefreshMarkInfo = []  | 
|         self.RefreshNPCID = 0  | 
|         self.RandNPCIDList = []  | 
|         self.NPCIDCountList = []  | 
|         self.MaxCount = 0  | 
|         self.TotalMaxCount = 0  | 
|         self.IsLineOneOnly = 0  | 
|         self.RefreshTick = 0  | 
|         self.IsRepeat = 0 | 
|         return | 
|          | 
|     def GetID(self): return self.ID # Ë¢¹Ö¹æÔòID  | 
|     def GetRefreshMarkInfo(self): return self.RefreshMarkInfo # ±êÊÔµã, µ±ÅäÖöà¸öÊ±ÎªËæ»ú±êÊÔµã, ²»Öظ´  | 
|     def GetRefreshNPCID(self): return self.RefreshNPCID # Ö¸¶¨NPCID  | 
|     def GetRandNPCIDList(self): return self.RandNPCIDList # µ¥´ÎËæ»úË¢¹ÖNPCID  | 
|     def GetNPCIDCountList(self): return self.NPCIDCountList # µ¥´ÎÖ¸¶¨Ë¢¹ÖNPC  | 
|     def GetMaxCount(self): return self.MaxCount # µ¥¸öµã×î´ó´æÔÚ¹ÖÎïÊý  | 
|     def GetTotalMaxCount(self): return self.TotalMaxCount # Ïàͬ±êÊÔµã×ÜË¢¹ÖÎïÊý  | 
|     def GetIsLineOneOnly(self): return self.IsLineOneOnly # ÊÇ·ñ½öÔÚ1ÏßË¢¹Ö  | 
|     def GetRefreshTick(self): return self.RefreshTick # Ë¢¹Ö¼ä¸ôÃë  | 
|     def GetIsRepeat(self): return self.IsRepeat # ÊÇ·ñÑ»·Ë¢¹Ö | 
|   | 
| # ÈÕ³£»î¶¯±í | 
| class IPY_DailyAction(): | 
|      | 
|     def __init__(self): | 
|         self.DailyID = 0  | 
|         self.OpenTimeDict = {}  | 
|         self.Duration = 0  | 
|         self.DayTimes = 0  | 
|         self.DayBuyTimes = 0  | 
|         self.BuyNeedMoney = 0  | 
|         self.DayItemAddTimes = 0  | 
|         self.DayItemID = 0  | 
|         self.DayResetType = 0  | 
|         self.WeekTimes = 0  | 
|         self.WeekResetType = 0 | 
|         return | 
|          | 
|     def GetDailyID(self): return self.DailyID # »î¶¯ID  | 
|     def GetOpenTimeDict(self): return self.OpenTimeDict # ¿ªÆôʱ¼ä  | 
|     def GetDuration(self): return self.Duration # ³ÖÐøÊ±¼ä, 0Ϊ²»ÏÞÖÆ  | 
|     def GetDayTimes(self): return self.DayTimes # Ã¿ÈÕ´ÎÊý, 0Ϊ²»ÏÞÖÆ  | 
|     def GetDayBuyTimes(self): return self.DayBuyTimes # Ã¿ÈտɹºÂò´ÎÊý  | 
|     def GetBuyNeedMoney(self): return self.BuyNeedMoney # ¹ºÂò´ÎÊýÐèÒªÏÉÓñ  | 
|     def GetDayItemAddTimes(self): return self.DayItemAddTimes # Ã¿ÈÕ¿ÉÓÃÎïÆ·Ôö¼Ó´ÎÊý  | 
|     def GetDayItemID(self): return self.DayItemID # Ôö¼Ó´ÎÊýµÄÎïÆ·ID  | 
|     def GetDayResetType(self): return self.DayResetType # Ã¿ÈÕ´ÎÊýÖØÖÃÀàÐÍ; 0-²»ÖØÖÃ,1-0µã,2-5µã  | 
|     def GetWeekTimes(self): return self.WeekTimes # Ã¿ÖÜ´ÎÊý, 0Ϊ²»ÏÞÖÆ  | 
|     def GetWeekResetType(self): return self.WeekResetType # Ã¿ÖÜ´ÎÊýÖØÖÃÀàÐÍ; 0-²»ÖØÖÃ,1-0µã,2-5µã | 
|   | 
| # ×°±¸ÆÀ·ÖÊôÐÔϵÊý±í | 
| class IPY_EquipGSParam(): | 
|      | 
|     def __init__(self): | 
|         self.ClassLV = 0  | 
|         self.EquipColor = 0  | 
|         self.IsSuit = 0  | 
|         self.ItemQuality = 0  | 
|         self.BaseEquipMaxHPAddPerC = 0  | 
|         self.BaseEquipAtkAddPerC = 0  | 
|         self.SuperHitC = 0  | 
|         self.SuperHitPerC = 0  | 
|         self.LuckyHitRateC = 0  | 
|         self.LuckyHitRateReduceC = 0  | 
|         self.LuckPerC = 0  | 
|         self.PerLVAtkC = 0  | 
|         self.PerLVMaxHPC = 0  | 
|         self.DropMoneyPerC = 0  | 
|         self.SuperHitReduceC = 0  | 
|         self.SuperHitRateReduceC = 0  | 
|         self.HitC = 0  | 
|         self.MissC = 0  | 
|         self.PetDamPerC = 0  | 
|         self.MaxHPPerC = 0  | 
|         self.AtkPerC = 0  | 
|         self.SkillAtkRateC = 0  | 
|         self.SkillAtkRateReduceC = 0  | 
|         self.SkillAddPer1C = 0  | 
|         self.SkillAddPer2C = 0  | 
|         self.SkillAddPer3C = 0  | 
|         self.SkillAddPer4C = 0  | 
|         self.SkillAddPer5C = 0  | 
|         self.SkillAddPer6C = 0  | 
|         self.SkillAddPer7C = 0  | 
|         self.SkillReducePer1C = 0  | 
|         self.SkillReducePer2C = 0  | 
|         self.SkillReducePer3C = 0  | 
|         self.SkillReducePer4C = 0  | 
|         self.SkillReducePer5C = 0  | 
|         self.SkillReducePer6C = 0  | 
|         self.SkillReducePer7C = 0  | 
|         self.ReduceSkillCDPerC = 0  | 
|         self.LuckyHitPerC = 0  | 
|         self.FaintDefRateC = 0  | 
|         self.SuperHitRateC = 0 | 
|         return | 
|          | 
|     def GetClassLV(self): return self.ClassLV #  ×°±¸½×¼¶  | 
|     def GetEquipColor(self): return self.EquipColor #  ×°±¸ÑÕÉ«  | 
|     def GetIsSuit(self): return self.IsSuit #  ÊÇ·ñÌ××°  | 
|     def GetItemQuality(self): return self.ItemQuality # ÎïÆ·ÐǼ¶  | 
|     def GetBaseEquipMaxHPAddPerC(self): return self.BaseEquipMaxHPAddPerC #  »ù´¡·À¾ßÉúÃü°Ù·Ö±ÈϵÊý  | 
|     def GetBaseEquipAtkAddPerC(self): return self.BaseEquipAtkAddPerC #  »ù´¡ÎäÆ÷¹¥»÷°Ù·Ö±ÈϵÊý  | 
|     def GetSuperHitC(self): return self.SuperHitC #  ±©»÷ֵϵÊý  | 
|     def GetSuperHitPerC(self): return self.SuperHitPerC #  ±©»÷Öµ°Ù·Ö±ÈϵÊý  | 
|     def GetLuckyHitRateC(self): return self.LuckyHitRateC #  »áÐÄÒ»»÷ÂÊϵÊý  | 
|     def GetLuckyHitRateReduceC(self): return self.LuckyHitRateReduceC #  »áÐÄÒ»»÷¿¹ÐÔϵÊý  | 
|     def GetLuckPerC(self): return self.LuckPerC #  ÆøÔ˰ٷֱÈϵÊý  | 
|     def GetPerLVAtkC(self): return self.PerLVAtkC #  Ã¿¼¶Ôö¼Ó¹¥»÷Á¦ÏµÊý  | 
|     def GetPerLVMaxHPC(self): return self.PerLVMaxHPC #  Ã¿¼¶Ôö¼ÓÉúÃüֵϵÊý  | 
|     def GetDropMoneyPerC(self): return self.DropMoneyPerC #  Ôö¼ÓµôÂä½ð±ÒÁ¿°Ù·Ö±ÈϵÊý  | 
|     def GetSuperHitReduceC(self): return self.SuperHitReduceC #  ±©»÷¼õÉ˰ٷֱÈϵÊý  | 
|     def GetSuperHitRateReduceC(self): return self.SuperHitRateReduceC #  ±©»÷¿¹ÐÔϵÊý  | 
|     def GetHitC(self): return self.HitC #  ÃüÖÐϵÊý  | 
|     def GetMissC(self): return self.MissC #  ÉÁ±ÜϵÊý  | 
|     def GetPetDamPerC(self): return self.PetDamPerC #  Áé³èÔöÉ˰ٷֱÈϵÊý  | 
|     def GetMaxHPPerC(self): return self.MaxHPPerC #  ÉúÃü¼Ó³ÉϵÊý  | 
|     def GetAtkPerC(self): return self.AtkPerC #  ¹¥»÷¼Ó³ÉϵÊý  | 
|     def GetSkillAtkRateC(self): return self.SkillAtkRateC #  ¼¼ÄܼӳÉϵÊý  | 
|     def GetSkillAtkRateReduceC(self): return self.SkillAtkRateReduceC #  ¼¼ÄܼõÃâϵÊý  | 
|     def GetSkillAddPer1C(self): return self.SkillAddPer1C #  ¼¼ÄÜÉ˺¦ÔöÇ¿1ϵÊý  | 
|     def GetSkillAddPer2C(self): return self.SkillAddPer2C #  ¼¼ÄÜÉ˺¦ÔöÇ¿2ϵÊý  | 
|     def GetSkillAddPer3C(self): return self.SkillAddPer3C #  ¼¼ÄÜÉ˺¦ÔöÇ¿3ϵÊý  | 
|     def GetSkillAddPer4C(self): return self.SkillAddPer4C #  ¼¼ÄÜÉ˺¦ÔöÇ¿4ϵÊý  | 
|     def GetSkillAddPer5C(self): return self.SkillAddPer5C #  ¼¼ÄÜÉ˺¦ÔöÇ¿5ϵÊý  | 
|     def GetSkillAddPer6C(self): return self.SkillAddPer6C #  ¼¼ÄÜÉ˺¦ÔöÇ¿6ϵÊý  | 
|     def GetSkillAddPer7C(self): return self.SkillAddPer7C #  ¼¼ÄÜÉ˺¦ÔöÇ¿7ϵÊý  | 
|     def GetSkillReducePer1C(self): return self.SkillReducePer1C #  Êܵ½¼¼ÄÜÉ˺¦¼õÉÙ1ϵÊý  | 
|     def GetSkillReducePer2C(self): return self.SkillReducePer2C #  Êܵ½¼¼ÄÜÉ˺¦¼õÉÙ2ϵÊý  | 
|     def GetSkillReducePer3C(self): return self.SkillReducePer3C #  Êܵ½¼¼ÄÜÉ˺¦¼õÉÙ3ϵÊý  | 
|     def GetSkillReducePer4C(self): return self.SkillReducePer4C #  Êܵ½¼¼ÄÜÉ˺¦¼õÉÙ4ϵÊý  | 
|     def GetSkillReducePer5C(self): return self.SkillReducePer5C #  Êܵ½¼¼ÄÜÉ˺¦¼õÉÙ5ϵÊý  | 
|     def GetSkillReducePer6C(self): return self.SkillReducePer6C #  Êܵ½¼¼ÄÜÉ˺¦¼õÉÙ6ϵÊý  | 
|     def GetSkillReducePer7C(self): return self.SkillReducePer7C #  Êܵ½¼¼ÄÜÉ˺¦¼õÉÙ7ϵÊý  | 
|     def GetReduceSkillCDPerC(self): return self.ReduceSkillCDPerC #  ¼õÉÙËùÓм¼ÄÜCDϵÊý  | 
|     def GetLuckyHitPerC(self): return self.LuckyHitPerC #  »áÐÄÉ˺¦¼Ó³ÉϵÊý  | 
|     def GetFaintDefRateC(self): return self.FaintDefRateC #  ¿ØÖƵֿ¹ÏµÊý  | 
|     def GetSuperHitRateC(self): return self.SuperHitRateC #  ±©»÷ÂʼӳÉϵÊý | 
|   | 
| # ³É¾Í±í | 
| class IPY_Success(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.Type = 0  | 
|         self.NeedCnt = 0  | 
|         self.Condition = []  | 
|         self.PreSuccess = []  | 
|         self.AwardItem = {}  | 
|         self.Money = {}  | 
|         self.Exp = 0  | 
|         self.AwardAttr = {}  | 
|         self.RedPacketID = 0  | 
|         self.MagicWeaponID = 0  | 
|         self.MagicWeaponExp = 0 | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ³É¾ÍID  | 
|     def GetType(self): return self.Type # ³É¾ÍÀàÐÍ  | 
|     def GetNeedCnt(self): return self.NeedCnt # ÐèÒªÊýÁ¿  | 
|     def GetCondition(self): return self.Condition # ¸¨ÖúÌõ¼þ  | 
|     def GetPreSuccess(self): return self.PreSuccess # ÐèÒª´ï³ÉǰÖÃ³É¾Í  | 
|     def GetAwardItem(self): return self.AwardItem # ½±ÀøÎïÆ·ÁÐ±í  | 
|     def GetMoney(self): return self.Money # ½ðÇ®  | 
|     def GetExp(self): return self.Exp # ¾Ñé  | 
|     def GetAwardAttr(self): return self.AwardAttr # ½±ÀøÊôÐÔ  | 
|     def GetRedPacketID(self): return self.RedPacketID # ºì°üID  | 
|     def GetMagicWeaponID(self): return self.MagicWeaponID # ·¨±¦ID  | 
|     def GetMagicWeaponExp(self): return self.MagicWeaponExp # ·¨±¦Éý¼¶¾Ñé | 
|   | 
| # ·¨±¦±í | 
| class IPY_Treasure(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.TreasureType = 0  | 
|         self.PreTreasure = 0  | 
|         self.FBMapID = 0  | 
|         self.FBLineID = 0  | 
|         self.NeedLV = 0  | 
|         self.NeedItem = {} | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ID  | 
|     def GetTreasureType(self): return self.TreasureType # ·¨±¦ÀàÐÍ  | 
|     def GetPreTreasure(self): return self.PreTreasure # Ç°Ö÷¨±¦  | 
|     def GetFBMapID(self): return self.FBMapID # ¸±±¾ID  | 
|     def GetFBLineID(self): return self.FBLineID # ¸±±¾Ïß·ID  | 
|     def GetNeedLV(self): return self.NeedLV # ÐèÒªµÈ¼¶  | 
|     def GetNeedItem(self): return self.NeedItem # ÐèÒªÏûºÄÎïÆ· | 
|   | 
| # ·¨±¦Éý¼¶±í | 
| class IPY_TreasureUp(): | 
|      | 
|     def __init__(self): | 
|         self.MWID = 0  | 
|         self.LV = 0  | 
|         self.NeedExp = 0  | 
|         self.AddAttr = {}  | 
|         self.UnLockSkill = []  | 
|         self.PowerEx = 0 | 
|         return | 
|          | 
|     def GetMWID(self): return self.MWID # ·¨±¦ID  | 
|     def GetLV(self): return self.LV # ·¨±¦µÈ¼¶  | 
|     def GetNeedExp(self): return self.NeedExp # ÐèÒª¾Ñé  | 
|     def GetAddAttr(self): return self.AddAttr # ÊôÐÔ  | 
|     def GetUnLockSkill(self): return self.UnLockSkill # ½âËøµÄ¼¼ÄÜ  | 
|     def GetPowerEx(self): return self.PowerEx # ¶îÍâ¹Ì¶¨Õ½Á¦ | 
|   | 
| # Á¬ÐøÇ©µ½½±Àø±í | 
| class IPY_ContineSignAward(): | 
|      | 
|     def __init__(self): | 
|         self.ContineDay = 0  | 
|         self.ItemID = []  | 
|         self.IsBind = 0  | 
|         self.ItemNum = []  | 
|         self.JobItemList = [] | 
|         return | 
|          | 
|     def GetContineDay(self): return self.ContineDay # Á¬ÐøÇ©µ½ÌìÊý  | 
|     def GetItemID(self): return self.ItemID # ½±ÀøÎïÆ·ID  | 
|     def GetIsBind(self): return self.IsBind # ÎïÆ·ÊÇ·ñ°ó¶¨  | 
|     def GetItemNum(self): return self.ItemNum # ÎïÆ·½±Àø×îСֵ  | 
|     def GetJobItemList(self): return self.JobItemList # Ö°ÒµÎïÆ·Áбí | 
|   | 
| # Ç©µ½½±Àø±í | 
| class IPY_SignAward(): | 
|      | 
|     def __init__(self): | 
|         self.RewardID = 0  | 
|         self.ItemID = []  | 
|         self.IsBind = 0  | 
|         self.VipLv = 0  | 
|         self.OrdinaryNum = []  | 
|         self.VipMultiple = 0 | 
|         return | 
|          | 
|     def GetRewardID(self): return self.RewardID # ½±ÀøID  | 
|     def GetItemID(self): return self.ItemID # ½±ÀøÎïÆ·ID  | 
|     def GetIsBind(self): return self.IsBind # ÎïÆ·ÊÇ·ñ°ó¶¨  | 
|     def GetVipLv(self): return self.VipLv # vipµÈ¼¶  | 
|     def GetOrdinaryNum(self): return self.OrdinaryNum # ½±ÀøÎïÆ·ÊýÁ¿  | 
|     def GetVipMultiple(self): return self.VipMultiple # ½±Àø±¶ÂÊ | 
|   | 
| # VIPÀñ°ü±í | 
| class IPY_VIPAward(): | 
|      | 
|     def __init__(self): | 
|         self.VIPLV = 0  | 
|         self.ItemID = {}  | 
|         self.Price = 0  | 
|         self.OldPrice = 0 | 
|         return | 
|          | 
|     def GetVIPLV(self): return self.VIPLV # VIPµÈ¼¶  | 
|     def GetItemID(self): return self.ItemID # ½±ÀøÎïÆ·ÐÅÏ¢  | 
|     def GetPrice(self): return self.Price # Àñ°üÏÖ¼Û  | 
|     def GetOldPrice(self): return self.OldPrice # Àñ°üÔ¼Û | 
|   | 
| # ¶¨ÖÆÎïÆ·±í | 
| class IPY_AppointItem(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.CancelUseLimit = 0  | 
|         self.LegendAttrID = []  | 
|         self.LegendAttrValue = [] | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ¶¨ÖÆÎïÆ·ID  | 
|     def GetCancelUseLimit(self): return self.CancelUseLimit # ´©´÷ÏÞÖÆ(³ýÖ°Òµ)  | 
|     def GetLegendAttrID(self): return self.LegendAttrID # ´«ÆæÊôÐÔID  | 
|     def GetLegendAttrValue(self): return self.LegendAttrValue # ´«ÆæÊôÐÔÖµ | 
|   | 
| # ÅÄÂôÎïÆ·±í | 
| class IPY_AuctionItem(): | 
|      | 
|     def __init__(self): | 
|         self.AuctionItemID = 0 | 
|         return | 
|          | 
|     def GetAuctionItemID(self): return self.AuctionItemID | 
|   | 
| # VIPÌØÈ¨±í | 
| class IPY_VipPrivilege(): | 
|      | 
|     def __init__(self): | 
|         self.VIPPriID = 0  | 
|         self.VIP0 = 0  | 
|         self.VIP1 = 0  | 
|         self.VIP2 = 0  | 
|         self.VIP3 = 0  | 
|         self.VIP4 = 0  | 
|         self.VIP5 = 0  | 
|         self.VIP6 = 0  | 
|         self.VIP7 = 0  | 
|         self.VIP8 = 0  | 
|         self.VIP9 = 0  | 
|         self.VIP10 = 0  | 
|         self.VIP11 = 0  | 
|         self.VIP12 = 0  | 
|         self.VIP13 = 0  | 
|         self.VIP14 = 0  | 
|         self.VIP15 = 0 | 
|         return | 
|          | 
|     def GetVIPPriID(self): return self.VIPPriID # ÌØÈ¨ID  | 
|     def GetVIP0(self): return self.VIP0 # VIP0¶ÔÓ¦µÄÌØÈ¨Öµ  | 
|     def GetVIP1(self): return self.VIP1 # VIP1¶ÔÓ¦µÄÌØÈ¨Öµ  | 
|     def GetVIP2(self): return self.VIP2 # VIP2¶ÔÓ¦µÄÌØÈ¨Öµ  | 
|     def GetVIP3(self): return self.VIP3 # VIP3¶ÔÓ¦µÄÌØÈ¨Öµ  | 
|     def GetVIP4(self): return self.VIP4 # VIP4¶ÔÓ¦µÄÌØÈ¨Öµ  | 
|     def GetVIP5(self): return self.VIP5 # VIP5¶ÔÓ¦µÄÌØÈ¨Öµ  | 
|     def GetVIP6(self): return self.VIP6 # VIP6¶ÔÓ¦µÄÌØÈ¨Öµ  | 
|     def GetVIP7(self): return self.VIP7 # VIP7¶ÔÓ¦µÄÌØÈ¨Öµ  | 
|     def GetVIP8(self): return self.VIP8 # VIP8¶ÔÓ¦µÄÌØÈ¨Öµ  | 
|     def GetVIP9(self): return self.VIP9 # VIP9¶ÔÓ¦µÄÌØÈ¨Öµ  | 
|     def GetVIP10(self): return self.VIP10 # VIP10¶ÔÓ¦µÄÌØÈ¨Öµ  | 
|     def GetVIP11(self): return self.VIP11 # VIP11¶ÔÓ¦µÄÌØÈ¨Öµ  | 
|     def GetVIP12(self): return self.VIP12 # VIP12¶ÔÓ¦µÄÌØÈ¨Öµ  | 
|     def GetVIP13(self): return self.VIP13 # VIP13¶ÔÓ¦µÄÌØÈ¨Öµ  | 
|     def GetVIP14(self): return self.VIP14 # VIP14¶ÔÓ¦µÄÌØÈ¨Öµ  | 
|     def GetVIP15(self): return self.VIP15 # VIP15¶ÔÓ¦µÄÌØÈ¨Öµ | 
|   | 
| # É̳DZí | 
| class IPY_Store(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.ShopType = 0  | 
|         self.OperationActionShop = 0  | 
|         self.ItemID = 0  | 
|         self.ItemCnt = 0  | 
|         self.IsBind = 0  | 
|         self.ItemListEx = []  | 
|         self.MainItemID = 0  | 
|         self.JobItem = []  | 
|         self.RefreshType = 0  | 
|         self.LimitVIPLV = []  | 
|         self.LimitLV = 0  | 
|         self.LimitCnt = []  | 
|         self.ServerLimitCnt = 0  | 
|         self.MoneyType = 0  | 
|         self.MoneyNum = 0  | 
|         self.MoneyOriginal = 0  | 
|         self.LimitValue = 0  | 
|         self.NotifyMark = ""  | 
|         self.MailKey = "" | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ID  | 
|     def GetShopType(self): return self.ShopType # É̵êÀàÐÍ  | 
|     def GetOperationActionShop(self): return self.OperationActionShop # ÊÇ·ñÔËÓª»î¶¯ÉÌµê  | 
|     def GetItemID(self): return self.ItemID # ÎïÆ·ID  | 
|     def GetItemCnt(self): return self.ItemCnt # ÎïÆ·ÊýÁ¿  | 
|     def GetIsBind(self): return self.IsBind # ÊÇ·ñ°ó¶¨  | 
|     def GetItemListEx(self): return self.ItemListEx # À©Õ¹ÎïÆ·Áбí[[ÎïÆ·ID,¸öÊý,ÊÇ·ñ°ó¶¨],...]  | 
|     def GetMainItemID(self): return self.MainItemID # ±êµÄÎïÆ·ID  | 
|     def GetJobItem(self): return self.JobItem # Ö°ÒµÌæ»»ÎïÆ·  | 
|     def GetRefreshType(self): return self.RefreshType # Ë¢ÐÂÀàÐÍ 0-²»ÖØÖÃ,1-onWeek0µã,2-onWeek5µã,3-OnDay0µã,4-OnDay5µã  | 
|     def GetLimitVIPLV(self): return self.LimitVIPLV # VIPÏÞÖÆ  | 
|     def GetLimitLV(self): return self.LimitLV # µÈ¼¶ÏÞÖÆ  | 
|     def GetLimitCnt(self): return self.LimitCnt # ¸öÈËÏÞÖÆÊýÁ¿  | 
|     def GetServerLimitCnt(self): return self.ServerLimitCnt # È«·þÏÞÖÆÊýÁ¿  | 
|     def GetMoneyType(self): return self.MoneyType # ½ðÇ®ÀàÐÍ  | 
|     def GetMoneyNum(self): return self.MoneyNum # ½ðÇ®ÊýÁ¿  | 
|     def GetMoneyOriginal(self): return self.MoneyOriginal # Ô¼Û  | 
|     def GetLimitValue(self): return self.LimitValue # ÏÞÖÆÌõ¼þ  | 
|     def GetNotifyMark(self): return self.NotifyMark # ¹ã²¥Ìáʾ  | 
|     def GetMailKey(self): return self.MailKey # ±³°ü²»×ãʱÓʼþKEY | 
|   | 
| # ÏÞÊ±ÌØ»Ý±í | 
| class IPY_ActSpringSale(): | 
|      | 
|     def __init__(self): | 
|         self.CfgID = 0  | 
|         self.StartDate = ""  | 
|         self.EndDate = ""  | 
|         self.StartTimeList = []  | 
|         self.EndTimeList = []  | 
|         self.AdvanceMinutes = 0  | 
|         self.LVLimit = 0  | 
|         self.IsDayReset = 0  | 
|         self.ShopTypeList = {}  | 
|         self.MailKey = ""  | 
|         self.MailItemPrize = [] | 
|         return | 
|          | 
|     def GetCfgID(self): return self.CfgID # ÅäÖÃID  | 
|     def GetStartDate(self): return self.StartDate # ¿ªÆôÈÕÆÚ  | 
|     def GetEndDate(self): return self.EndDate # ½áÊøÈÕÆÚ  | 
|     def GetStartTimeList(self): return self.StartTimeList # ¿ªÆôʱ¼äÁбí, Ö§³Ö¶à¸öʱ¶Î  | 
|     def GetEndTimeList(self): return self.EndTimeList # ½áÊøÊ±¼äÁбí, Ö§³Ö¶à¸öʱ¶Î  | 
|     def GetAdvanceMinutes(self): return self.AdvanceMinutes # Ç°¶ËÌáǰX·ÖÖÓչʾ»î¶¯  | 
|     def GetLVLimit(self): return self.LVLimit # ÏÞÖÆµÈ¼¶  | 
|     def GetIsDayReset(self): return self.IsDayReset # ÊÇ·ñÿÌìÖØÖà  | 
|     def GetShopTypeList(self): return self.ShopTypeList # É̵êÀàÐÍÁÐ±í  | 
|     def GetMailKey(self): return self.MailKey # »î¶¯¸üÐÂʱ·¢ËÍÓʼþkey  | 
|     def GetMailItemPrize(self): return self.MailItemPrize # »î¶¯¸üÐÂʱ·¢ËÍÓʼþ½±ÀøÎïÆ· | 
|   | 
| # ÈÕ³£ÈÎÎñ±í | 
| class IPY_DailyQuest(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.RelatedType = 0  | 
|         self.RelatedID = 0  | 
|         self.UnLockFuncID = 0  | 
|         self.OnceActivityTime = 0  | 
|         self.OnceActivity = 0  | 
|         self.TotalActiveValue = 0 | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ID  | 
|     def GetRelatedType(self): return self.RelatedType # ¹ØÁªÀàÐÍ  | 
|     def GetRelatedID(self): return self.RelatedID # ¹ØÁªID  | 
|     def GetUnLockFuncID(self): return self.UnLockFuncID # ½âËø¹¦ÄÜID  | 
|     def GetOnceActivityTime(self): return self.OnceActivityTime # Ôö¼Ó»îÔ¾ËùÐè´ÎÊý  | 
|     def GetOnceActivity(self): return self.OnceActivity # µ¥´Î»îÔ¾Öµ  | 
|     def GetTotalActiveValue(self): return self.TotalActiveValue # ×Ü»îÔ¾ | 
|   | 
| # ÈÕ³£»îÔ¾½±Àø±í | 
| class IPY_DailyLivenessReward(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.Liveness = 0  | 
|         self.StageLV = []  | 
|         self.ItemID = []  | 
|         self.ItemCount = []  | 
|         self.ItemBind = [] | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ID  | 
|     def GetLiveness(self): return self.Liveness # ËùÐè»îÔ¾¶È  | 
|     def GetStageLV(self): return self.StageLV # ½×¶ÎµÈ¼¶  | 
|     def GetItemID(self): return self.ItemID # ÎïÆ·ID  | 
|     def GetItemCount(self): return self.ItemCount # ÎïÆ·ÊýÁ¿  | 
|     def GetItemBind(self): return self.ItemBind # ÊÇ·ñ°ó¶¨ | 
|   | 
| # ÈÕ³£»îÔ¾·ÅÖñí | 
| class IPY_ActivityPlaceReward(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.PlaceCount = 0  | 
|         self.PlaceMaxLV = 0  | 
|         self.FixedItemRewardList = []  | 
|         self.RandItemCountA = 0  | 
|         self.RandItemRewardListA = []  | 
|         self.RandItemCountB = 0  | 
|         self.RandItemRewardListB = [] | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ID  | 
|     def GetPlaceCount(self): return self.PlaceCount # ·ÅÖö¨ÖÆ´ÎÊý  | 
|     def GetPlaceMaxLV(self): return self.PlaceMaxLV # ×î´óµÈ¼¶  | 
|     def GetFixedItemRewardList(self): return self.FixedItemRewardList # ¹Ì¶¨½±Àø [[ÎïÆ·ID, ¸öÊý], ...]  | 
|     def GetRandItemCountA(self): return self.RandItemCountA # ±ýͼ½±Àø´ÎÊýA  | 
|     def GetRandItemRewardListA(self): return self.RandItemRewardListA # ±ýͼ½±Àø¿âA [[±ýͼ¸ÅÂÊ,ÎïÆ·ID], ...]  ÎïÆ·IDÖ§³Ö0  | 
|     def GetRandItemCountB(self): return self.RandItemCountB # ±ýͼ½±Àø´ÎÊýB  | 
|     def GetRandItemRewardListB(self): return self.RandItemRewardListB # ±ýͼ½±Àø¿âB [[±ýͼ¸ÅÂÊ,ÎïÆ·ID], ...]  ÎïÆ·IDÖ§³Ö0 | 
|   | 
| # Á¶µ¤Â¯µÈ¼¶±í | 
| class IPY_RefineStove(): | 
|      | 
|     def __init__(self): | 
|         self.StoveLV = 0  | 
|         self.UpNeedExp = 0 | 
|         return | 
|          | 
|     def GetStoveLV(self): return self.StoveLV # Á¶µ¤Â¯µÈ¼¶  | 
|     def GetUpNeedExp(self): return self.UpNeedExp # ÉýÏÂÒ»¼¶ËùÐè¾Ñé | 
|   | 
| # Á¶µ¤±í | 
| class IPY_Alchemy(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.AlchemItemID = 0  | 
|         self.AlchemType = 0  | 
|         self.AlchemyQuality = 0  | 
|         self.LearnNeedItemID = 0  | 
|         self.LearnNeedAlchemLV = 0  | 
|         self.LearnNeedLingGenPoint = 0  | 
|         self.NeedTime = 0  | 
|         self.AlchemyExp = 0  | 
|         self.Material = {} | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ÃØ·½Î¨Ò»ID²»¿É±ä¸ü  | 
|     def GetAlchemItemID(self): return self.AlchemItemID # µ¤Ò©ÎïÆ·ID  | 
|     def GetAlchemType(self): return self.AlchemType # ÃØ·½ÀàÐÍ1-Á鵤 2-Ïɵ¤  | 
|     def GetAlchemyQuality(self): return self.AlchemyQuality # ÃØ·½Æ·¼¶  | 
|     def GetLearnNeedItemID(self): return self.LearnNeedItemID # µ¤·½ÎïÆ·ID  | 
|     def GetLearnNeedAlchemLV(self): return self.LearnNeedAlchemLV # µ¤·½ÐèÒªÁ¶µ¤µÈ¼¶  | 
|     def GetLearnNeedLingGenPoint(self): return self.LearnNeedLingGenPoint # µ¤·½ÐèÒª×ÜÁé¸ùµãÊý  | 
|     def GetNeedTime(self): return self.NeedTime # Á¶µ¤Ê±¼ä(Ãë)  | 
|     def GetAlchemyExp(self): return self.AlchemyExp # Á¶µ¤»ñµÃ¾ÑéÖµ  | 
|     def GetMaterial(self): return self.Material # Á¶µ¤²ÄÁÏ | 
|   | 
| # Á¶µ¤ÊýÁ¿±í | 
| class IPY_AlchemyResult(): | 
|      | 
|     def __init__(self): | 
|         self.AlchemyQuality = 0  | 
|         self.LuckValue = 0  | 
|         self.CntRateList = [] | 
|         return | 
|          | 
|     def GetAlchemyQuality(self): return self.AlchemyQuality # µ¤·½µÈ¼¶  | 
|     def GetLuckValue(self): return self.LuckValue # »Û¸ù  | 
|     def GetCntRateList(self): return self.CntRateList # ÊýÁ¿±ýͼ | 
|   | 
| # BOSSÐÅÏ¢±í | 
| class IPY_BOSSInfo(): | 
|      | 
|     def __init__(self): | 
|         self.NPCID = 0  | 
|         self.MapID = 0  | 
|         self.RefreshMark = 0  | 
|         self.IsNeedShunt = 0  | 
|         self.RelatedType = 0  | 
|         self.RelatedID = 0  | 
|         self.StoneNPCID = 0  | 
|         self.CanAssist = 0 | 
|         return | 
|          | 
|     def GetNPCID(self): return self.NPCID # ID  | 
|     def GetMapID(self): return self.MapID # µØÍ¼ID  | 
|     def GetRefreshMark(self): return self.RefreshMark # Ë¢Ð±êʶµã  | 
|     def GetIsNeedShunt(self): return self.IsNeedShunt # ÊÇ·ñÐèÒª·ÖÁ÷  | 
|     def GetRelatedType(self): return self.RelatedType # Ë¢¹Ö¹ØÁªÀàÐÍ  | 
|     def GetRelatedID(self): return self.RelatedID # ¹ØÁªID  | 
|     def GetStoneNPCID(self): return self.StoneNPCID # Ä¹±®NPCID  | 
|     def GetCanAssist(self): return self.CanAssist # ÊÇ·ñ¿ÉÐÖú | 
|   | 
| # BossÊ×ɱ | 
| class IPY_BOSSFirstKill(): | 
|      | 
|     def __init__(self): | 
|         self.NPCID = 0  | 
|         self.PerPlayerMoneyAward = 0  | 
|         self.PersonFirstKillAward = [] | 
|         return | 
|          | 
|     def GetNPCID(self): return self.NPCID # ID  | 
|     def GetPerPlayerMoneyAward(self): return self.PerPlayerMoneyAward #  Ê×ɱȫ·þÍæ¼Ò½±ÀøÁéʯ¶î¶È/ÈË  | 
|     def GetPersonFirstKillAward(self): return self.PersonFirstKillAward #  ¸öÈËÊ״λ÷ɱ½±Àø [[ÎïÆ·ID,¸öÊý,ÊÇ·ñÅÄÆ·], ...] | 
|   | 
| # ¹ÅÉñ½ûµØ±í | 
| class IPY_ElderGodArea(): | 
|      | 
|     def __init__(self): | 
|         self.NPCID = 0  | 
|         self.MonsterAnger = 0 | 
|         return | 
|          | 
|     def GetNPCID(self): return self.NPCID # ID  | 
|     def GetMonsterAnger(self): return self.MonsterAnger # ¹ÖÎïÅÆøÖµ | 
|   | 
| # ¸öÈËBOSS±í | 
| class IPY_PersonalBoss(): | 
|      | 
|     def __init__(self): | 
|         self.NPCID = 0  | 
|         self.FuncLineID = 0 | 
|         return | 
|          | 
|     def GetNPCID(self): return self.NPCID # ID  | 
|     def GetFuncLineID(self): return self.FuncLineID # ¿ÉÌôÕ½µÈ¼¶ | 
|   | 
| # ÏÉÃË»îÔ¾±í | 
| class IPY_FamilyActivity(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.UnLockFuncID = 0  | 
|         self.TotalActivityTime = 0  | 
|         self.SingleTimes = 0  | 
|         self.SingleActiveValue = 0 | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ID  | 
|     def GetUnLockFuncID(self): return self.UnLockFuncID # ½âËø¹¦ÄÜID  | 
|     def GetTotalActivityTime(self): return self.TotalActivityTime # ×Ü´ÎÊý  | 
|     def GetSingleTimes(self): return self.SingleTimes # Ôö¼Ó»îÔ¾ÐèÒª´ÎÊý  | 
|     def GetSingleActiveValue(self): return self.SingleActiveValue # Ã¿ÂÖÔö¼Ó»îÔ¾»ý·Ö | 
|   | 
| # ÏÉÃ˺ì°ü±í | 
| class IPY_FamilyRedPack(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.GetType = 0  | 
|         self.MoneyNum = 0  | 
|         self.MoneyType = 0  | 
|         self.PacketCnt = 0 | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ID  | 
|     def GetGetType(self): return self.GetType # »ñµÃ;¾¶  | 
|     def GetMoneyNum(self): return self.MoneyNum # ºì°ü¶î¶È  | 
|     def GetMoneyType(self): return self.MoneyType # ½ðÇ®ÀàÐÍ  | 
|     def GetPacketCnt(self): return self.PacketCnt # ºì°ü¸öÊý | 
|   | 
| # ½ÚÈÕºì°üÿÈճɾͱí | 
| class IPY_ActFeastRedPacketSucc(): | 
|      | 
|     def __init__(self): | 
|         self.FeastDay = 0  | 
|         self.FeastSuccIDList = [] | 
|         return | 
|          | 
|     def GetFeastDay(self): return self.FeastDay # ½ÚÈÕµÚ¼¸Ìì  | 
|     def GetFeastSuccIDList(self): return self.FeastSuccIDList # ½ÚÈճɾÍIDÁбí | 
|   | 
| # NPCÐã±í | 
| class IPY_NPCShow(): | 
|      | 
|     def __init__(self): | 
|         self.NPCID = 0  | 
|         self.MapID = 0  | 
|         self.LineID = 0  | 
|         self.ProtectTime = 0  | 
|         self.BindMissionID = 0  | 
|         self.ShowType = 0 | 
|         return | 
|          | 
|     def GetNPCID(self): return self.NPCID  | 
|     def GetMapID(self): return self.MapID  | 
|     def GetLineID(self): return self.LineID  | 
|     def GetProtectTime(self): return self.ProtectTime # ±£»¤Ê±¼ä, ºÁÃë  | 
|     def GetBindMissionID(self): return self.BindMissionID # °ó¶¨µÄÈÎÎñID  | 
|     def GetShowType(self): return self.ShowType # 0-·þÎñ¶Ë֪ͨ,>0ǰ¶Ë´¦Àí | 
|   | 
| # ·âħ̳BOSS±í | 
| class IPY_SealDemon(): | 
|      | 
|     def __init__(self): | 
|         self.NPCID = 0  | 
|         self.LineID = 0  | 
|         self.OwnerAwardItemEx = [] | 
|         return | 
|          | 
|     def GetNPCID(self): return self.NPCID # ID  | 
|     def GetLineID(self): return self.LineID  | 
|     def GetOwnerAwardItemEx(self): return self.OwnerAwardItemEx # µÚÒ»Ãû¶îÍâ½±ÀøÎïÆ·[[itemID,¸öÊý,ÊÇ·ñÅÄÆ·], ...] | 
|   | 
| # ¸±±¾¹ÄÎè±í | 
| class IPY_FbEncourage(): | 
|      | 
|     def __init__(self): | 
|         self.DataMapID = 0  | 
|         self.InspireType = 0  | 
|         self.InspireMaxLV = 0  | 
|         self.MoneyCount = "" | 
|         return | 
|          | 
|     def GetDataMapID(self): return self.DataMapID # µØÍ¼ID  | 
|     def GetInspireType(self): return self.InspireType # ¹ÄÎèÀàÐÍ  | 
|     def GetInspireMaxLV(self): return self.InspireMaxLV # ¹ÄÎèµÈ¼¶ÏÞÖÆ  | 
|     def GetMoneyCount(self): return self.MoneyCount # µ¥´ÎÏûºÄ½ðÇ®ÊýÁ¿ | 
|   | 
| # µØÍ¼±êÊÔµãNPCˢР| 
| class IPY_MapRefreshNPC(): | 
|      | 
|     def __init__(self): | 
|         self.MapID = 0  | 
|         self.RefreshNum = 0  | 
|         self.NPCIDList = []  | 
|         self.RefreshMarkList = []  | 
|         self.PointMaxCount = 0  | 
|         self.TotalMaxCount = 0  | 
|         self.RefreshSeconds = 0  | 
|         self.RefreshPerMinutes = 0 | 
|         return | 
|          | 
|     def GetMapID(self): return self.MapID # µØÍ¼ID  | 
|     def GetRefreshNum(self): return self.RefreshNum # Ë¢¹Ö¹æÔò±àºÅ  | 
|     def GetNPCIDList(self): return self.NPCIDList # NPCIDÁÐ±í  | 
|     def GetRefreshMarkList(self): return self.RefreshMarkList # ±êÊÔµãÁÐ±í  | 
|     def GetPointMaxCount(self): return self.PointMaxCount # µ¥¸öµã×î´ó´æÔÚ¹ÖÎïÊý  | 
|     def GetTotalMaxCount(self): return self.TotalMaxCount # ËùÓеã×ܹÖÎïÊý  | 
|     def GetRefreshSeconds(self): return self.RefreshSeconds # Ë¢¹Ö¼ä¸ôÃë  | 
|     def GetRefreshPerMinutes(self): return self.RefreshPerMinutes # Ã¿ÕûX·ÖË¢¹Ö | 
|   | 
| # ·ûÓ¡ºÏ³É±í | 
| class IPY_RuneCompound(): | 
|      | 
|     def __init__(self): | 
|         self.TagItemID = 0  | 
|         self.NeedItem = []  | 
|         self.NeedMJ = 0 | 
|         return | 
|          | 
|     def GetTagItemID(self): return self.TagItemID # ºÏ³ÉµÄ·ûÓ¡ÎïÆ·ID  | 
|     def GetNeedItem(self): return self.NeedItem # ÐèÒªµÄÎïÆ·ID  | 
|     def GetNeedMJ(self): return self.NeedMJ # ÐèÒªµÄħ¾«ÊýÁ¿ | 
|   | 
| # ×ÊÔ´Õһرí | 
| class IPY_ResourcesBack(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.RelatedID = 0  | 
|         self.CanBackTimes = 0  | 
|         self.NormalCostJade = 0  | 
|         self.VipCostJade = 0  | 
|         self.JadeReward = {}  | 
|         self.CostCopper = 0  | 
|         self.CopperReward = {}  | 
|         self.JobItemList = [] | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ID  | 
|     def GetRelatedID(self): return self.RelatedID # ¹ØÁªÈÕ³£ÈÎÎñ±íID  | 
|     def GetCanBackTimes(self): return self.CanBackTimes # ÄÜ·ñÕһشÎÊý  | 
|     def GetNormalCostJade(self): return self.NormalCostJade # °óÓñÕÒ»ØÆÕͨ´ÎÊý¼Û¸ñ  | 
|     def GetVipCostJade(self): return self.VipCostJade # °óÓñÕÒ»ØVIP´ÎÊýÕһؼ۸ñ  | 
|     def GetJadeReward(self): return self.JadeReward # °óÓñÕһؽ±Àø  | 
|     def GetCostCopper(self): return self.CostCopper # ÍÇ®ÕÒ»ØÍÇ®ÏûºÄ  | 
|     def GetCopperReward(self): return self.CopperReward # ÍÇ®Õһؽ±Àø  | 
|     def GetJobItemList(self): return self.JobItemList # Ö°ÒµÎïÆ·Áбí | 
|   | 
| # ²É¼¯Îï±í | 
| class IPY_CollectNPC(): | 
|      | 
|     def __init__(self): | 
|         self.NPCID = 0  | 
|         self.IsMissionCollectNPC = 0  | 
|         self.PrepareTime = 0  | 
|         self.LostHPPer = []  | 
|         self.MaxCollectCount = 0  | 
|         self.CollectResetType = 0  | 
|         self.CollectCountLimitNotify = ""  | 
|         self.CollectAward = []  | 
|         self.CollectAppointAward = {}  | 
|         self.AlchemyDiffLV = 0  | 
|         self.NotifyCollectResult = 0  | 
|         self.CanBreakCollect = 0 | 
|         return | 
|          | 
|     def GetNPCID(self): return self.NPCID # ID  | 
|     def GetIsMissionCollectNPC(self): return self.IsMissionCollectNPC # ÊÇ·ñÈÎÎñ²É¼¯Îï  | 
|     def GetPrepareTime(self): return self.PrepareTime # ²É¼¯ºÄʱ£¬Ãë  | 
|     def GetLostHPPer(self): return self.LostHPPer # ²É¼¯µôѪ£¬[ÿXÃë,µôѪ°Ù·Ö±È]  | 
|     def GetMaxCollectCount(self): return self.MaxCollectCount # ¿É²É¼¯´ÎÊý£¬0ÎÞÏÞÖÆ  | 
|     def GetCollectResetType(self): return self.CollectResetType # ²É¼¯´ÎÊýÖØÖÃÀàÐÍ£¬0-²»ÖØÖã¬1-ÿÈÕ5µãÖØÖà  | 
|     def GetCollectCountLimitNotify(self): return self.CollectCountLimitNotify # Î޲ɼ¯´ÎÊý²É¼¯Ìáʾ  | 
|     def GetCollectAward(self): return self.CollectAward # ²É¼¯½±ÀøÎïÆ·£¬È¨ÖØÁбí [[È¨ÖØ, [ÎïÆ·ID,¸öÊý,ÊÇ·ñÅÄÆ·]], ...]  | 
|     def GetCollectAppointAward(self): return self.CollectAppointAward # ²É¼¯´ÎÊý¶¨ÖƲú³ö {´ÎÊý:[ÎïÆ·ID,¸öÊý,ÊÇ·ñÅÄÆ·], ...}  | 
|     def GetAlchemyDiffLV(self): return self.AlchemyDiffLV # ¹ýÂËÁ¶µ¤µÈ¼¶²î£¬0-²»¹ýÂË£¬>0¹ýÂË´óÓÚ×ÔÉíÁ¶µ¤µÈ¼¶X¼¶µÄÎïÆ·  | 
|     def GetNotifyCollectResult(self): return self.NotifyCollectResult # ÊÇ·ñ֪ͨ²É¼¯½á¹û  | 
|     def GetCanBreakCollect(self): return self.CanBreakCollect # ±»¹¥»÷ÊÇ·ñ´ò¶Ï²É¼¯ | 
|   | 
| # ±¦Ïä¹Ö±í | 
| class IPY_TreasureNPC(): | 
|      | 
|     def __init__(self): | 
|         self.NPCID = 0  | 
|         self.AttackCountDropWeightInfo = {}  | 
|         self.AttackDropWeightList = []  | 
|         self.AttackDropWeightListEx = []  | 
|         self.DropCountEx = 0  | 
|         self.AlchemyDiffLV = 0  | 
|         self.NotDropNotify = "" | 
|         return | 
|          | 
|     def GetNPCID(self): return self.NPCID # ±¦Ïä¹ÖNPCID  | 
|     def GetAttackCountDropWeightInfo(self): return self.AttackCountDropWeightInfo # ¹¥»÷´ÎÊý¶ÔÓ¦µôÂäÈ¨ÖØ±ýͼ {´ÎÊý:[[È¨ÖØ, [ÎïÆ·ID,¸öÊý,ÊÇ·ñÅÄÆ·]], ...], ...}  | 
|     def GetAttackDropWeightList(self): return self.AttackDropWeightList # ³£¹æ¹¥»÷È¨ÖØ±ýͼ [[È¨ÖØ, [ÎïÆ·ID,¸öÊý,ÊÇ·ñÅÄÆ·]], ...]  | 
|     def GetAttackDropWeightListEx(self): return self.AttackDropWeightListEx # ¶îÍâµôÂäÈ¨ÖØ±ýͼ¿â£¬Ã¿´Î¹¥»÷¶¼»áµôÂä  [[È¨ÖØ, [ÎïÆ·ID,¸öÊý,ÊÇ·ñÅÄÆ·]], ...]  | 
|     def GetDropCountEx(self): return self.DropCountEx # ¶îÍâ¿âÖ´ÐдÎÊý  | 
|     def GetAlchemyDiffLV(self): return self.AlchemyDiffLV # ¹ýÂËÁ¶µ¤µÈ¼¶²î£¬0-²»¹ýÂË£¬>0¹ýÂË´óÓÚ×ÔÉíÁ¶µ¤µÈ¼¶X¼¶µÄÎïÆ·  | 
|     def GetNotDropNotify(self): return self.NotDropNotify # Ã»ÓеôÂäʱÌáʾÐÅÏ¢ | 
|   | 
| # ±¦Ïä±í¿ªÆô | 
| class IPY_Chests(): | 
|      | 
|     def __init__(self): | 
|         self.ChestsItemID = 0  | 
|         self.CostItemID = 0  | 
|         self.CostItemCount = 0  | 
|         self.CostGold = 0  | 
|         self.ShowType = 0  | 
|         self.IsBind = 0  | 
|         self.AucionItemCanSell = 0 | 
|         return | 
|          | 
|     def GetChestsItemID(self): return self.ChestsItemID # ±¦ÏäÎïÆ·ID  | 
|     def GetCostItemID(self): return self.CostItemID # ÏûºÄÎïÆ·ID  | 
|     def GetCostItemCount(self): return self.CostItemCount # ÏûºÄÎïÆ·¸öÊý  | 
|     def GetCostGold(self): return self.CostGold # ÏûºÄÏÉÓñ  | 
|     def GetShowType(self): return self.ShowType # Ç°¶Ë±íÏÖÀàÐÍ0-ÎÞ±íÏÖ, >0ÓбíÏÖÐèͬ²½½á¹û£¬¾ßÌåÀàÐÍǰ¶Ë×Ô¶¨Òå  | 
|     def GetIsBind(self): return self.IsBind # ¿ª³öÎïÆ·ÊÇ·ñ°ó¶¨  | 
|     def GetAucionItemCanSell(self): return self.AucionItemCanSell # ¿ª³öÅÄÆ·¿É·ñÉϼܼ¯ÊÐ | 
|   | 
| # ±¦Ïä±í²ú³ö±í | 
| class IPY_ChestsAward(): | 
|      | 
|     def __init__(self): | 
|         self.ChestsItemID = 0  | 
|         self.AwardLV = 0  | 
|         self.SelectItemDict = {}  | 
|         self.FixedItemDict = {}  | 
|         self.RandItemList1 = []  | 
|         self.RandTimeList1 = []  | 
|         self.RandItemList2 = []  | 
|         self.RandTimeList2 = []  | 
|         self.RandItemByUseCount = {}  | 
|         self.JobItemList = []  | 
|         self.MoneyType = 0  | 
|         self.MoneyCount = 0  | 
|         self.NeedNotifyItemList = []  | 
|         self.IsDropJobSelf = 0  | 
|         self.PieRateDrop = []  | 
|         self.PieRateDoCnt = 0  | 
|         self.IndepRateDrop = {}  | 
|         self.EquipColorSuitInfo = {}  | 
|         self.EquipPartKeyRateInfo = {} | 
|         return | 
|          | 
|     def GetChestsItemID(self): return self.ChestsItemID # ±¦ÏäÎïÆ·ID  | 
|     def GetAwardLV(self): return self.AwardLV # ±¦Ïä½±ÀøµÈ¼¶  | 
|     def GetSelectItemDict(self): return self.SelectItemDict # Ñ¡ÔñÎïÆ·ID¶ÔÓ¦¸öÊý×ֵ䣬¹æ¶¨Ö»ÄÜѡһ¸ö  | 
|     def GetFixedItemDict(self): return self.FixedItemDict # ¹Ì¶¨²ú³öÎïÆ·ID¶ÔÓ¦¸öÊý×Öµä  | 
|     def GetRandItemList1(self): return self.RandItemList1 # Ëæ»úÎïÆ·±ýͼÁбí1  | 
|     def GetRandTimeList1(self): return self.RandTimeList1 # Ëæ»ú´ÎÊý±ýͼÁбí1  | 
|     def GetRandItemList2(self): return self.RandItemList2 # Ëæ»úÎïÆ·±ýͼÁбí2  | 
|     def GetRandTimeList2(self): return self.RandTimeList2 # Ëæ»ú´ÎÊý±ýͼÁбí2  | 
|     def GetRandItemByUseCount(self): return self.RandItemByUseCount # ±¦Ï俪ÆôX´Î¶ÔÓ¦ÌØÊâ²ú³ö£¬Óë±ýͼÁбí2»¥³â  | 
|     def GetJobItemList(self): return self.JobItemList # Ö°ÒµÎïÆ·ÁÐ±í  | 
|     def GetMoneyType(self): return self.MoneyType # »õ±ÒÀàÐÍ  | 
|     def GetMoneyCount(self): return self.MoneyCount # »õ±ÒÊýÁ¿  | 
|     def GetNeedNotifyItemList(self): return self.NeedNotifyItemList # ÐèÒª¹ã²¥µÄÎïÆ·IDÁÐ±í  | 
|     def GetIsDropJobSelf(self): return self.IsDropJobSelf # ÊÇ·ñÖ»µôÂä±¾Ö°Òµ  | 
|     def GetPieRateDrop(self): return self.PieRateDrop # ±ýͼ¸ÅÂʵôÂäÐÅÏ¢ [(¸ÅÂÊ,0),(¸ÅÂÊ,(½×,ÑÕÉ«)),...]  | 
|     def GetPieRateDoCnt(self): return self.PieRateDoCnt # ±ýͼ¸ÅÂÊÖ´ÐдÎÊý  | 
|     def GetIndepRateDrop(self): return self.IndepRateDrop # ¶ÀÁ¢¸ÅÂʵôÂäÐÅÏ¢ {(½×,ÑÕÉ«):¸ÅÂÊ,...}  | 
|     def GetEquipColorSuitInfo(self): return self.EquipColorSuitInfo # ×°±¸ÑÕÉ«¶ÔÓ¦Ì××°¸ÅÂÊ {ÑÕÉ«:Ì××°¸ÅÂÊ, ...}  | 
|     def GetEquipPartKeyRateInfo(self): return self.EquipPartKeyRateInfo # ×°±¸²¿Î»¼¯ºÏÐÅÏ¢ {(ÑÕÉ«,ÊÇ·ñÌ××°):²¿Î»¼¯ºÏkey, ...} | 
|   | 
| # VIPɱ¹Ö¼Ó¹¥»÷±í | 
| class IPY_VIPKillNPC(): | 
|      | 
|     def __init__(self): | 
|         self.KillLV = 0  | 
|         self.LVExpPoint = 0  | 
|         self.LVExp = 0  | 
|         self.AddMinAtk = 0  | 
|         self.AddMaxAtk = 0 | 
|         return | 
|          | 
|     def GetKillLV(self): return self.KillLV # É±¹Ö³É³¤µÈ¼¶  | 
|     def GetLVExpPoint(self): return self.LVExpPoint # Éý¼¶ËùÐè¾Ñéµã,ÿ¸ö¾Ñéµã´ú±íµÄ¾ÑéÓÉÏîÄ¿¾ö¶¨  | 
|     def GetLVExp(self): return self.LVExp # ³ý¾Ñéµã×ܾÑéÍâÉý¼¶»¹ÐèµÄ¾Ñé  | 
|     def GetAddMinAtk(self): return self.AddMinAtk # Ôö¼Ó×îС¹¥»÷  | 
|     def GetAddMaxAtk(self): return self.AddMaxAtk # Ôö¼Ó×î´ó¹¥»÷ | 
|   | 
| # È«Ãñ³å°ñÅÅÐн±Àø±í | 
| class IPY_OSCBillRankAward(): | 
|      | 
|     def __init__(self): | 
|         self.OSCBillType = 0  | 
|         self.RankA = 0  | 
|         self.RankB = 0  | 
|         self.RankAward = {} | 
|         return | 
|          | 
|     def GetOSCBillType(self): return self.OSCBillType # ³å°ñÀàÐÍ  | 
|     def GetRankA(self): return self.RankA # ÅÅÃûA  | 
|     def GetRankB(self): return self.RankB # ÖÁÅÅÃûB  | 
|     def GetRankAward(self): return self.RankAward # ÅÅÃû½±Àø {"Ö°Òµ":[[ÎïÆ·ID,¸öÊý],...], ...} | 
|   | 
| # È«Ãñ³å°ñ´ï³É½±Àø±í | 
| class IPY_OSCBillTagAward(): | 
|      | 
|     def __init__(self): | 
|         self.OSCBillType = 0  | 
|         self.TagCondition = 0  | 
|         self.TagAward = {} | 
|         return | 
|          | 
|     def GetOSCBillType(self): return self.OSCBillType # ³å°ñÀàÐÍ  | 
|     def GetTagCondition(self): return self.TagCondition # Ä¿±êÌõ¼þÖµ  | 
|     def GetTagAward(self): return self.TagAward # Ä¿±ê½±Àø {"Ö°Òµ":[[ÎïÆ·ID,¸öÊý],...], ...} | 
|   | 
| # ÆßÌìµÇ¼½±Àø±í | 
| class IPY_LoginDayAward(): | 
|      | 
|     def __init__(self): | 
|         self.DayID = 0  | 
|         self.Reward = {} | 
|         return | 
|          | 
|     def GetDayID(self): return self.DayID # ÌìÊý  | 
|     def GetReward(self): return self.Reward # ½±Àø {"Ö°Òµ":[[ÎïÆ·ID,¸öÊý],...], ...} | 
|   | 
| # ÆßÌìÔÚÏß½±Àø±í | 
| class IPY_OnlineAward(): | 
|      | 
|     def __init__(self): | 
|         self.DayID = 0  | 
|         self.StageTime = []  | 
|         self.Reward = {} | 
|         return | 
|          | 
|     def GetDayID(self): return self.DayID # ÌìÊý  | 
|     def GetStageTime(self): return self.StageTime # ½×¶ÎËùÐèʱ¼ä(·ÖÖÓ)  | 
|     def GetReward(self): return self.Reward # ½±Àø {"Ë÷Òý":[[ÎïÆ·ID,¸öÊý],...], ...} | 
|   | 
| # ÆßÌìÏÞÊ±ÌØ»Ý±í | 
| class IPY_SpringSale(): | 
|      | 
|     def __init__(self): | 
|         self.GiftID = 0  | 
|         self.SellDay = 0  | 
|         self.BuyNumLimit = 0  | 
|         self.GiftPrice = 0  | 
|         self.GiftItemList = [] | 
|         return | 
|          | 
|     def GetGiftID(self): return self.GiftID # Àñ°üID  | 
|     def GetSellDay(self): return self.SellDay # ´´½ÇµÚ¼¸ÌìÉÏ¼Ü  | 
|     def GetBuyNumLimit(self): return self.BuyNumLimit # Ã¿ÈËÏÞ¹ºÊýÁ¿  | 
|     def GetGiftPrice(self): return self.GiftPrice # Àñ°ü¼Û¸ñ£¬ÏÉÓñ  | 
|     def GetGiftItemList(self): return self.GiftItemList # Àñ°üÎïÆ·ÐÅÏ¢Áбí[[ÎïÆ·ID,¸öÊý,ÊÇ·ñ°ó¶¨], ...] | 
|   | 
| # ³äÖµÉÌÆ·±àºÅ±í | 
| class IPY_OrderInfo(): | 
|      | 
|     def __init__(self): | 
|         self.OrderInfo = ""  | 
|         self.AppID = ""  | 
|         self.PayRMBNum = 0.0  | 
|         self.CTGID = 0  | 
|         self.GiftbagID = 0 | 
|         return | 
|          | 
|     def GetOrderInfo(self): return self.OrderInfo # ÉÌÆ·±àºÅ  | 
|     def GetAppID(self): return self.AppID # appID  | 
|     def GetPayRMBNum(self): return self.PayRMBNum # ¸¶·Ñ¶î¶È£¬Ôª  | 
|     def GetCTGID(self): return self.CTGID # ¶ÔÓ¦³äÖµID  | 
|     def GetGiftbagID(self): return self.GiftbagID # ¶ÔÓ¦ÏÞʱÀñ°ü±àºÅ | 
|   | 
| # ³äÖµ±í | 
| class IPY_CTG(): | 
|      | 
|     def __init__(self): | 
|         self.RecordID = 0  | 
|         self.CanResetBuyCount = 0  | 
|         self.TotalBuyCount = 0  | 
|         self.DailyBuyCount = 0  | 
|         self.GainGold = 0  | 
|         self.GainGoldPrize = 0  | 
|         self.FirstGoldPrize = 0  | 
|         self.GainItemList = []  | 
|         self.NotifyMark = "" | 
|         return | 
|          | 
|     def GetRecordID(self): return self.RecordID # ¼Ç¼ID  | 
|     def GetCanResetBuyCount(self): return self.CanResetBuyCount # ÊÇ·ñÔÊÐíÖØÖôÎÊý  | 
|     def GetTotalBuyCount(self): return self.TotalBuyCount # ×ÜÏÞ¹º´ÎÊý  | 
|     def GetDailyBuyCount(self): return self.DailyBuyCount # Ã¿ÈÕÏÞ¹º´ÎÊý  | 
|     def GetGainGold(self): return self.GainGold # »ñµÃÏÉÓñÊý  | 
|     def GetGainGoldPrize(self): return self.GainGoldPrize # ÔùËÍÏÉÓñÊý  | 
|     def GetFirstGoldPrize(self): return self.FirstGoldPrize # Ê״γäÖµ¸ÃµµÎ»ÔùËÍÏÉÓñ  | 
|     def GetGainItemList(self): return self.GainItemList # »ñµÃÎïÆ·Áбí[[ÎïÆ·ID,¸öÊý,ÊÇ·ñ°ó¶¨], ...]  | 
|     def GetNotifyMark(self): return self.NotifyMark # ¹ã²¥Ìáʾ | 
|   | 
| # Ê׳ä±í | 
| class IPY_FirstGold(): | 
|      | 
|     def __init__(self): | 
|         self.Day = 0  | 
|         self.JobItemInfo = {}  | 
|         self.CommItemList = [] | 
|         return | 
|          | 
|     def GetDay(self): return self.Day # Ê׳äµÚ¼¸Ìì  | 
|     def GetJobItemInfo(self): return self.JobItemInfo # Ö°ÒµÎïÆ·½±Àø {"Ö°Òµ":[[ÎïÆ·ID,¸öÊý], ...], ...}  | 
|     def GetCommItemList(self): return self.CommItemList # Í¨ÓÃÎïÆ·½±Àø [[ÎïÆ·ID,¸öÊý], ...] | 
|   | 
| # µÈ¼¶½±Àø±í | 
| class IPY_LVAward(): | 
|      | 
|     def __init__(self): | 
|         self.AwardID = 0  | 
|         self.LV = 0  | 
|         self.LimitCnt = 0  | 
|         self.Reward = {}  | 
|         self.VIPLimit = 0  | 
|         self.VIPAward = [] | 
|         return | 
|          | 
|     def GetAwardID(self): return self.AwardID # ½±ÀøID  | 
|     def GetLV(self): return self.LV # µÈ¼¶  | 
|     def GetLimitCnt(self): return self.LimitCnt # È«·þÏÞÖÆÊýÁ¿  | 
|     def GetReward(self): return self.Reward # ½±Àø {"Ö°Òµ":[[ÎïÆ·ID,¸öÊý],...], ...}  | 
|     def GetVIPLimit(self): return self.VIPLimit # ÐèÒªVIP¼¸  | 
|     def GetVIPAward(self): return self.VIPAward # vip½±Àø[[ÎïÆ·ID,¸öÊý],...] | 
|   | 
| # Í¶×ʱí | 
| class IPY_Invest(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.Type = 0  | 
|         self.NeedDay = 0  | 
|         self.NeedLV = 0  | 
|         self.Reward = {} | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ID  | 
|     def GetType(self): return self.Type # Í¶×ÊÀàÐÍ  | 
|     def GetNeedDay(self): return self.NeedDay # ÐèÒªÌìÊý  | 
|     def GetNeedLV(self): return self.NeedLV # ÐèÒªµÈ¼¶  | 
|     def GetReward(self): return self.Reward # ½±Àø {"key":[[ÎïÆ·ID,¸öÊý,ÊÇ·ñ°ó¶¨],...], ...} | 
|   | 
| # Ïɱ¦Ñ°Ö÷±í | 
| class IPY_XBXZ(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.Type = 0  | 
|         self.NeedCnt = 0  | 
|         self.Condition = []  | 
|         self.MWID = 0  | 
|         self.AwardItem = []  | 
|         self.Money = [] | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ID  | 
|     def GetType(self): return self.Type # ÀàÐÍ  | 
|     def GetNeedCnt(self): return self.NeedCnt # ÐèÒªÊýÁ¿  | 
|     def GetCondition(self): return self.Condition # Ìõ¼þ  | 
|     def GetMWID(self): return self.MWID # ·¨±¦ID  | 
|     def GetAwardItem(self): return self.AwardItem # ½±ÀøÎïÆ·ÁÐ±í  | 
|     def GetMoney(self): return self.Money # ½ðÇ® | 
|   | 
| # Ñ°±¦²ú³ö¿â±í | 
| class IPY_TreasureHouse(): | 
|      | 
|     def __init__(self): | 
|         self.TreasureType = 0  | 
|         self.MinLV = 0  | 
|         self.GridItemInfo = {}  | 
|         self.JobItemList = []  | 
|         self.GridItemRateListFree = []  | 
|         self.FreeGridItemRateList2 = []  | 
|         self.FreeGridItemRateList3 = {}  | 
|         self.GridItemRateList1 = []  | 
|         self.GridItemRateList2 = []  | 
|         self.GridItemRateList3 = {}  | 
|         self.LuckyGridNum = 0 | 
|         return | 
|          | 
|     def GetTreasureType(self): return self.TreasureType # Ñ°±¦ÀàÐÍ  | 
|     def GetMinLV(self): return self.MinLV # ×îСµÈ¼¶  | 
|     def GetGridItemInfo(self): return self.GridItemInfo # ¸ñ×Ó±àºÅ¶ÔÓ¦ÎïÆ·ÐÅÏ¢ {"±àºÅ":[ÎïÆ·ID, ¸öÊý], ...}  | 
|     def GetJobItemList(self): return self.JobItemList # Ö°ÒµÎïÆ·×éÁбí [[Ö°Òµ1ÎïÆ·, Ö°Òµ2ÎïÆ·, ...], ...]  | 
|     def GetGridItemRateListFree(self): return self.GridItemRateListFree # Ãâ·Ñ²ú³ö¸ñ×Ó±àºÅ±ýͼ [[¸ÅÂÊ, ¸ñ×Ó±àºÅ], ...]  | 
|     def GetFreeGridItemRateList2(self): return self.FreeGridItemRateList2 # Ãâ·ÑÿÂúx´Î±£µ×²ú³ö¸ñ×Ó±àºÅ±ýͼ [[¸ÅÂÊ, ¸ñ×Ó±àºÅ], ...]  | 
|     def GetFreeGridItemRateList3(self): return self.FreeGridItemRateList3 # Ãâ·ÑµÚx´Î±Ø³ö²ú³ö¸ñ×Ó±àºÅ±ýͼ {´ÎÊý:[[¸ÅÂÊ, ¸ñ×Ó±àºÅ], ...], ...}  | 
|     def GetGridItemRateList1(self): return self.GridItemRateList1 # ³£¹æ²ú³ö¸ñ×Ó±àºÅ±ýͼ [[¸ÅÂÊ, ¸ñ×Ó±àºÅ], ...]  | 
|     def GetGridItemRateList2(self): return self.GridItemRateList2 # Ã¿Âúx´Î±£µ×²ú³ö¸ñ×Ó±àºÅ±ýͼ [[¸ÅÂÊ, ¸ñ×Ó±àºÅ], ...]  | 
|     def GetGridItemRateList3(self): return self.GridItemRateList3 # µÚx´Î±Ø³ö²ú³ö¸ñ×Ó±àºÅ±ýͼ {´ÎÊý:[[¸ÅÂÊ, ¸ñ×Ó±àºÅ], ...], ...}  | 
|     def GetLuckyGridNum(self): return self.LuckyGridNum # ÐÒÔ˼ӳɸñ×Ó±àºÅ | 
|   | 
| # ¼«Æ·°×Äñí | 
| class IPY_FreeGoods(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.AwardItem = {}  | 
|         self.NeedMoney = 0  | 
|         self.ReturnTime = 0 | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ID  | 
|     def GetAwardItem(self): return self.AwardItem # ½±Àø {"Ö°Òµ":[[ÎïÆ·ID,¸öÊý],...], ...}  | 
|     def GetNeedMoney(self): return self.NeedMoney # ÐèÒªÏÉÓñ  | 
|     def GetReturnTime(self): return self.ReturnTime # ·µ»¹Ê±¼ä(s) | 
|   | 
| # ÏÞʱÀñ°ü»î¶¯±í | 
| class IPY_ActFlashGiftbag(): | 
|      | 
|     def __init__(self): | 
|         self.CfgID = 0  | 
|         self.StartDate = ""  | 
|         self.EndDate = ""  | 
|         self.StartTimeList = []  | 
|         self.EndTimeList = []  | 
|         self.AdvanceMinutes = 0  | 
|         self.LVLimit = 0  | 
|         self.IsDayReset = 0  | 
|         self.GiftbagTypeList = {}  | 
|         self.MailKey = ""  | 
|         self.MailItemPrize = [] | 
|         return | 
|          | 
|     def GetCfgID(self): return self.CfgID # ÅäÖÃID  | 
|     def GetStartDate(self): return self.StartDate # ¿ªÆôÈÕÆÚ  | 
|     def GetEndDate(self): return self.EndDate # ½áÊøÈÕÆÚ  | 
|     def GetStartTimeList(self): return self.StartTimeList # ¿ªÆôʱ¼äÁбí, Ö§³Ö¶à¸öʱ¶Î  | 
|     def GetEndTimeList(self): return self.EndTimeList # ½áÊøÊ±¼äÁбí, Ö§³Ö¶à¸öʱ¶Î  | 
|     def GetAdvanceMinutes(self): return self.AdvanceMinutes # Ç°¶ËÌáǰX·ÖÖÓչʾ»î¶¯  | 
|     def GetLVLimit(self): return self.LVLimit # ÏÞÖÆµÈ¼¶  | 
|     def GetIsDayReset(self): return self.IsDayReset # ÊÇ·ñÿÌìÖØÖà  | 
|     def GetGiftbagTypeList(self): return self.GiftbagTypeList # Àñ°üÀàÐÍÁÐ±í  | 
|     def GetMailKey(self): return self.MailKey # »î¶¯¸üÐÂʱ·¢ËÍÓʼþkey  | 
|     def GetMailItemPrize(self): return self.MailItemPrize # »î¶¯¸üÐÂʱ·¢ËÍÓʼþ½±ÀøÎïÆ· | 
|   | 
| # ÏÞʱÀñ°üÄ£°å±í | 
| class IPY_FlashGiftbag(): | 
|      | 
|     def __init__(self): | 
|         self.GiftbagID = 0  | 
|         self.GiftbagType = 0  | 
|         self.OriginalRMB = 0  | 
|         self.BuyCountLimit = 0  | 
|         self.GiftItemList = []  | 
|         self.MainItemID = 0  | 
|         self.NotifyKey = "" | 
|         return | 
|          | 
|     def GetGiftbagID(self): return self.GiftbagID # Àñ°ü±àºÅ  | 
|     def GetGiftbagType(self): return self.GiftbagType # Àñ°üÀàÐÍ  | 
|     def GetOriginalRMB(self): return self.OriginalRMB # Ô¼Û£¨RMB£©  | 
|     def GetBuyCountLimit(self): return self.BuyCountLimit # ÏÞ¹º´ÎÊý,0²»ÏÞ¹º  | 
|     def GetGiftItemList(self): return self.GiftItemList # Àñ°üÎïÆ·ÐÅÏ¢Áбí [(ÎïÆ·ID,¸öÊý,ÊÇ·ñ°ó¶¨),...]  | 
|     def GetMainItemID(self): return self.MainItemID # ±êµÄÎïÆ·ID  | 
|     def GetNotifyKey(self): return self.NotifyKey # È«·þ¹ã²¥key£¬Ä¬ÈÏÁ½¸ö²ÎÊý(Íæ¼ÒÃû, µµÎ»¶î¶È) | 
|   | 
| # Ë«±¶¾Ñé»î¶¯±í | 
| class IPY_ActExpRate(): | 
|      | 
|     def __init__(self): | 
|         self.CfgID = 0  | 
|         self.LVLimit = 0  | 
|         self.AddExpRate = 0 | 
|         return | 
|          | 
|     def GetCfgID(self): return self.CfgID # ÅäÖÃID  | 
|     def GetLVLimit(self): return self.LVLimit # ÏÞÖÆµÈ¼¶  | 
|     def GetAddExpRate(self): return self.AddExpRate # ¾Ñé±¶Âʼӳɣ¬Íò·ÖÂÊ | 
|   | 
| # Ïû·Ñ·µÀû»î¶¯±í | 
| class IPY_ActCostRebate(): | 
|      | 
|     def __init__(self): | 
|         self.CfgID = 0  | 
|         self.StartDate = ""  | 
|         self.EndDate = ""  | 
|         self.LVLimit = 0  | 
|         self.IsDayReset = 0  | 
|         self.TemplateIDList = [] | 
|         return | 
|          | 
|     def GetCfgID(self): return self.CfgID # ÅäÖÃID  | 
|     def GetStartDate(self): return self.StartDate # ¿ªÆôÈÕÆÚ  | 
|     def GetEndDate(self): return self.EndDate # ½áÊøÈÕÆÚ  | 
|     def GetLVLimit(self): return self.LVLimit # ÏÞÖÆµÈ¼¶  | 
|     def GetIsDayReset(self): return self.IsDayReset # ÊÇ·ñÿÌìÖØÖà  | 
|     def GetTemplateIDList(self): return self.TemplateIDList # Ä£°åIDÁбí | 
|   | 
| # Ïû·Ñ·µÀûÄ£°å±í | 
| class IPY_CostRebateTemplate(): | 
|      | 
|     def __init__(self): | 
|         self.TemplateID = 0  | 
|         self.NeedCostGold = 0  | 
|         self.AwardIndex = 0  | 
|         self.AwardItemList = {}  | 
|         self.NotifyKey = "" | 
|         return | 
|          | 
|     def GetTemplateID(self): return self.TemplateID # Ä£°åID  | 
|     def GetNeedCostGold(self): return self.NeedCostGold # ÐèÒªÏû·ÑÏÉÓñÊý  | 
|     def GetAwardIndex(self): return self.AwardIndex # ·µÀû½±ÀøË÷Òý0~31,ͬ¸öÄ£°åÖв»Öظ´  | 
|     def GetAwardItemList(self): return self.AwardItemList # ·µÀûÎïÆ·ÐÅÏ¢Áбí {ÊÀ½çµÈ¼¶·¶Î§:[({Ö°Òµ:ÎïÆ·ID,..},¸öÊý,ÊÇ·ñ°ó¶¨), ...]}  | 
|     def GetNotifyKey(self): return self.NotifyKey # È«·þ¹ã²¥key£¬Ä¬ÈÏÁ½¸ö²ÎÊý(Íæ¼ÒÃû, µµÎ»¶î¶È) | 
|   | 
| # BOSS¸´»î»î¶¯Ê±¼ä±í | 
| class IPY_ActBossReborn(): | 
|      | 
|     def __init__(self): | 
|         self.CfgID = 0  | 
|         self.StartDate = ""  | 
|         self.EndDate = ""  | 
|         self.ResetType = 0  | 
|         self.LVLimit = 0  | 
|         self.TemplateID = 0 | 
|         return | 
|          | 
|     def GetCfgID(self): return self.CfgID # ÅäÖÃID  | 
|     def GetStartDate(self): return self.StartDate # ¿ªÆôÈÕÆÚ  | 
|     def GetEndDate(self): return self.EndDate # ½áÊøÈÕÆÚ  | 
|     def GetResetType(self): return self.ResetType # ÖØÖÃÀàÐÍ£¬0-0µãÖØÖã»1-5µãÖØÖà  | 
|     def GetLVLimit(self): return self.LVLimit # ÏÞÖÆµÈ¼¶  | 
|     def GetTemplateID(self): return self.TemplateID # Ä£°å±àºÅ | 
|   | 
| # BOSS¸´»î±í | 
| class IPY_BossReborn(): | 
|      | 
|     def __init__(self): | 
|         self.TemplateID = 0  | 
|         self.ID = 0  | 
|         self.TotalTimes = 0  | 
|         self.SingleTimes = 0  | 
|         self.Reward = {} | 
|         return | 
|          | 
|     def GetTemplateID(self): return self.TemplateID # Ä£°åID  | 
|     def GetID(self): return self.ID # »î¶¯ÌõÄ¿ID  | 
|     def GetTotalTimes(self): return self.TotalTimes # ¿ÉÍê³ÉµÄ×Ü´ÎÊý£¬0±íʾ²»ÏÞ´ÎÊý  | 
|     def GetSingleTimes(self): return self.SingleTimes # µ¥´ÎÁì½±ÐèÒªµÄ´ÎÊý  | 
|     def GetReward(self): return self.Reward # ½±ÀøÎïÆ·ID1 | 
|   | 
| # ¶à±¶ÐÞÐеã»î¶¯Ê±¼ä±í | 
| class IPY_ActRealmPoint(): | 
|      | 
|     def __init__(self): | 
|         self.CfgID = 0  | 
|         self.Multiple = 0  | 
|         self.LVLimit = 0  | 
|         self.PointLimit = 0 | 
|         return | 
|          | 
|     def GetCfgID(self): return self.CfgID # ÅäÖÃID  | 
|     def GetMultiple(self): return self.Multiple # ±¶Êý  | 
|     def GetLVLimit(self): return self.LVLimit # ÏÞÖÆµÈ¼¶  | 
|     def GetPointLimit(self): return self.PointLimit # ÏÞÖÆ¶îÍâÐÞÐеã | 
|   | 
| # ×ÚÃÅÊÔÁ¶¶Ò»»±í | 
| class IPY_TrialExchange(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.ExchangeItemIDList = []  | 
|         self.ExchangeItemCount = 0  | 
|         self.ExchangeItemIsBind = 0  | 
|         self.CostItemID = 0  | 
|         self.CostItemCount = 0 | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ¶Ò»»ID  | 
|     def GetExchangeItemIDList(self): return self.ExchangeItemIDList # ¶Ò»»ÎïÆ·ID  | 
|     def GetExchangeItemCount(self): return self.ExchangeItemCount # ¶Ò»»ÎïÆ·¸öÊý  | 
|     def GetExchangeItemIsBind(self): return self.ExchangeItemIsBind # ¶Ò»»ÎïÆ·ÊÇ·ñ°ó¶¨  | 
|     def GetCostItemID(self): return self.CostItemID # ÏûºÄÎïÆ·ID  | 
|     def GetCostItemCount(self): return self.CostItemCount # ÏûºÄÎïÆ·¸öÊý | 
|   | 
| # ÏɽçÊ¢µä-È«ÃñÀ´à˱í | 
| class IPY_AllPeopleParty(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.TotalTimes = 0  | 
|         self.AddPoint = 0 | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ID  | 
|     def GetTotalTimes(self): return self.TotalTimes # ×Ü´ÎÊý  | 
|     def GetAddPoint(self): return self.AddPoint # Ã¿Íê³É´ÎÊý»ñµÃà˵ã | 
|   | 
| # ÏɽçÊ¢µä-È«ÃñÀ´à˽±Àø±í | 
| class IPY_AllPeoplePartyAward(): | 
|      | 
|     def __init__(self): | 
|         self.WorldLvNum = 0  | 
|         self.Index = 0  | 
|         self.NeedPoint = 0  | 
|         self.Award = {} | 
|         return | 
|          | 
|     def GetWorldLvNum(self): return self.WorldLvNum # ÊÀ½çµÈ¼¶µµ  | 
|     def GetIndex(self): return self.Index # Ë÷Òý  | 
|     def GetNeedPoint(self): return self.NeedPoint # ÐèÒªµãÊý  | 
|     def GetAward(self): return self.Award # ½±Àø {"Ö°Òµ":[[ÎïÆ·ID,¸öÊý,ÊÇ·ñ°ó¶¨],...], ...} | 
|   | 
| # µØÍ¼NPCÅäÖñí-¹Ò»úµã | 
| class IPY_MapEventPoint(): | 
|      | 
|     def __init__(self): | 
|         self.MapID = 0  | 
|         self.NPCID = 0  | 
|         self.LowLV = 0  | 
|         self.HighestLV = 0  | 
|         self.Defense = 0 | 
|         return | 
|          | 
|     def GetMapID(self): return self.MapID  | 
|     def GetNPCID(self): return self.NPCID  | 
|     def GetLowLV(self): return self.LowLV #  ÍƼö×îµÍµÈ¼¶  | 
|     def GetHighestLV(self): return self.HighestLV #  ÍƼö×î¸ßµÈ¼¶  | 
|     def GetDefense(self): return self.Defense #  ÍƼö·ÀÓù | 
|   | 
| # Ì츳¼¼Äܱí | 
| class IPY_TalentSkill(): | 
|      | 
|     def __init__(self): | 
|         self.SkillID = 0  | 
|         self.TalentType = 0  | 
|         self.Series = 0 | 
|         return | 
|          | 
|     def GetSkillID(self): return self.SkillID # ¼¼ÄÜID  | 
|     def GetTalentType(self): return self.TalentType # Ì츳ÀàÐÍ  | 
|     def GetSeries(self): return self.Series # Ì츳ϵ±ð | 
|   | 
| # ÏÞʱÇÀ¹º±í | 
| class IPY_ActFlashSale(): | 
|      | 
|     def __init__(self): | 
|         self.CfgID = 0  | 
|         self.StartDate = ""  | 
|         self.EndDate = ""  | 
|         self.StartTimeList = []  | 
|         self.EndTimeList = []  | 
|         self.AdvanceMinutes = 0  | 
|         self.LVLimit = 0  | 
|         self.IsDayReset = 0  | 
|         self.ShopTypeList = []  | 
|         self.MailKey = ""  | 
|         self.MailItemPrize = [] | 
|         return | 
|          | 
|     def GetCfgID(self): return self.CfgID # ÅäÖÃID  | 
|     def GetStartDate(self): return self.StartDate # ¿ªÆôÈÕÆÚ  | 
|     def GetEndDate(self): return self.EndDate # ½áÊøÈÕÆÚ  | 
|     def GetStartTimeList(self): return self.StartTimeList # ¿ªÆôʱ¼äÁбí, Ö§³Ö¶à¸öʱ¶Î  | 
|     def GetEndTimeList(self): return self.EndTimeList # ½áÊøÊ±¼äÁбí, Ö§³Ö¶à¸öʱ¶Î  | 
|     def GetAdvanceMinutes(self): return self.AdvanceMinutes # Ç°¶ËÌáǰX·ÖÖÓչʾ»î¶¯  | 
|     def GetLVLimit(self): return self.LVLimit # ÏÞÖÆµÈ¼¶  | 
|     def GetIsDayReset(self): return self.IsDayReset # ÊÇ·ñÿÌìÖØÖà  | 
|     def GetShopTypeList(self): return self.ShopTypeList # É̵êÀàÐÍÁÐ±í  | 
|     def GetMailKey(self): return self.MailKey # »î¶¯¸üÐÂʱ·¢ËÍÓʼþkey  | 
|     def GetMailItemPrize(self): return self.MailItemPrize # »î¶¯¸üÐÂʱ·¢ËÍÓʼþ½±ÀøÎïÆ· | 
|   | 
| # ÐíÔ¸³Ø»î¶¯Ê±¼ä±í | 
| class IPY_ActWishingWell(): | 
|      | 
|     def __init__(self): | 
|         self.CfgID = 0  | 
|         self.StartDate = ""  | 
|         self.EndDate = ""  | 
|         self.IsDayReset = 0  | 
|         self.ResetType = 0  | 
|         self.LVLimit = 0  | 
|         self.TemplateID = 0 | 
|         return | 
|          | 
|     def GetCfgID(self): return self.CfgID # ÅäÖÃID  | 
|     def GetStartDate(self): return self.StartDate # ¿ªÆôÈÕÆÚ  | 
|     def GetEndDate(self): return self.EndDate # ½áÊøÈÕÆÚ  | 
|     def GetIsDayReset(self): return self.IsDayReset # ÊÇ·ñÿÌìÖØÖà  | 
|     def GetResetType(self): return self.ResetType # ÖØÖÃÀàÐÍ£¬0-0µãÖØÖã»1-5µãÖØÖà  | 
|     def GetLVLimit(self): return self.LVLimit # ÏÞÖÆµÈ¼¶  | 
|     def GetTemplateID(self): return self.TemplateID # Ä£°å±àºÅ | 
|   | 
| # ÐíÔ¸³Ø¿âÄ£°å±í | 
| class IPY_WishingWell(): | 
|      | 
|     def __init__(self): | 
|         self.TemplateID = 0  | 
|         self.IsFree = 0  | 
|         self.WorldLVLimit = []  | 
|         self.ItemID = 0  | 
|         self.ItemCnt = 0  | 
|         self.IsBind = 0  | 
|         self.Weight = 0  | 
|         self.Mark = 0  | 
|         self.Rare = 0 | 
|         return | 
|          | 
|     def GetTemplateID(self): return self.TemplateID # Ä£°åID  | 
|     def GetIsFree(self): return self.IsFree # ÊÇ·ñÃâ·Ñ¿â  | 
|     def GetWorldLVLimit(self): return self.WorldLVLimit # ÊÀ½çµÈ¼¶·¶Î§  | 
|     def GetItemID(self): return self.ItemID # ÎïÆ·ID  | 
|     def GetItemCnt(self): return self.ItemCnt # ÎïÆ·ÊýÁ¿  | 
|     def GetIsBind(self): return self.IsBind # ÊÇ·ñ°ó¶¨  | 
|     def GetWeight(self): return self.Weight # È¨ÖØ  | 
|     def GetMark(self): return self.Mark # ÅÅÐòÓñêʶ  | 
|     def GetRare(self): return self.Rare # Õäϡֵ | 
|   | 
| # ¹¦ÄÜÔ¤¸æ±í | 
| class IPY_FunctionForecast(): | 
|      | 
|     def __init__(self): | 
|         self.FuncID = 0  | 
|         self.Award = {} | 
|         return | 
|          | 
|     def GetFuncID(self): return self.FuncID # ¹¦ÄÜID  | 
|     def GetAward(self): return self.Award # ÊôÐÔÀàÐÍ | 
|   | 
| # ÁÄÌìÆøÅݱí | 
| class IPY_ChatBubbleBox(): | 
|      | 
|     def __init__(self): | 
|         self.BoxID = 0  | 
|         self.NeedLV = 0  | 
|         self.NeedVIPLVGift = 0 | 
|         return | 
|          | 
|     def GetBoxID(self): return self.BoxID # ÆøÅÝ¿òID  | 
|     def GetNeedLV(self): return self.NeedLV # ËùÐèµÈ¼¶  | 
|     def GetNeedVIPLVGift(self): return self.NeedVIPLVGift # ËùÐ蹺ÂòVIPµÈ¼¶Àñ°ü | 
|   | 
| # ÀۼƳäÖµ»î¶¯±í | 
| class IPY_ActTotalRecharge(): | 
|      | 
|     def __init__(self): | 
|         self.CfgID = 0  | 
|         self.StartDate = ""  | 
|         self.EndDate = ""  | 
|         self.LVLimit = 0  | 
|         self.IsDayReset = 0  | 
|         self.TemplateIDList = [] | 
|         return | 
|          | 
|     def GetCfgID(self): return self.CfgID # ÅäÖÃID  | 
|     def GetStartDate(self): return self.StartDate # ¿ªÆôÈÕÆÚ  | 
|     def GetEndDate(self): return self.EndDate # ½áÊøÈÕÆÚ  | 
|     def GetLVLimit(self): return self.LVLimit # ÏÞÖÆµÈ¼¶  | 
|     def GetIsDayReset(self): return self.IsDayReset # ÊÇ·ñÿÌìÖØÖà  | 
|     def GetTemplateIDList(self): return self.TemplateIDList # Ä£°åIDÁбí | 
|   | 
| # ÀۼƳäֵģ°å±í | 
| class IPY_TotalRechargeTemplate(): | 
|      | 
|     def __init__(self): | 
|         self.TemplateID = 0  | 
|         self.NeedGold = 0  | 
|         self.AwardIndex = 0  | 
|         self.AwardItem = {}  | 
|         self.NotifyKey = "" | 
|         return | 
|          | 
|     def GetTemplateID(self): return self.TemplateID # Ä£°åID  | 
|     def GetNeedGold(self): return self.NeedGold # ÐèÒª³äÖµÏÉÓñÊý  | 
|     def GetAwardIndex(self): return self.AwardIndex # ·µÀû½±ÀøË÷Òý0~31,ͬ¸öÄ£°åÖв»Öظ´  | 
|     def GetAwardItem(self): return self.AwardItem # ·µÀûÎïÆ·ÐÅÏ¢Áбí {Ö°Òµ:[(ÎïÆ·ID,¸öÊý,ÊÇ·ñ°ó¶¨),...]}  | 
|     def GetNotifyKey(self): return self.NotifyKey # È«·þ¹ã²¥key£¬Ä¬ÈÏÁ½¸ö²ÎÊý(Íæ¼ÒÃû, µµÎ»¶î¶È) | 
|   | 
| # ·¨±¦¸±±¾±í | 
| class IPY_MagicWeaponFB(): | 
|      | 
|     def __init__(self): | 
|         self.MWID = 0  | 
|         self.LineID = 0  | 
|         self.Level = 0  | 
|         self.RefreshNPC = []  | 
|         self.AttrDict = {} | 
|         return | 
|          | 
|     def GetMWID(self): return self.MWID # ·¨±¦ID  | 
|     def GetLineID(self): return self.LineID # ¸±±¾¹¦ÄÜÏß·ID  | 
|     def GetLevel(self): return self.Level # ¹Ø¿¨  | 
|     def GetRefreshNPC(self): return self.RefreshNPC # Ë¢¹ÖÅäÖà  | 
|     def GetAttrDict(self): return self.AttrDict # ÊôÐÔ | 
|   | 
| # ±ù¾§¿óÂöÐǼ¶½±Àø±í | 
| class IPY_IceLodeStarAward(): | 
|      | 
|     def __init__(self): | 
|         self.Index = 0  | 
|         self.Star = 0  | 
|         self.LVLimit = []  | 
|         self.ItemList = [] | 
|         return | 
|          | 
|     def GetIndex(self): return self.Index # ½±ÀøË÷Òý  | 
|     def GetStar(self): return self.Star # ÐÇÊý  | 
|     def GetLVLimit(self): return self.LVLimit # µÈ¼¶·¶Î§  | 
|     def GetItemList(self): return self.ItemList # ½±Àø | 
|   | 
| # ¿ç·þ¾º¼¼³¡¶Îλ±í | 
| class IPY_CrossRealmPKDan(): | 
|      | 
|     def __init__(self): | 
|         self.DanLV = 0  | 
|         self.LVUpScore = 0 | 
|         return | 
|          | 
|     def GetDanLV(self): return self.DanLV # ¶ÎλµÈ¼¶  | 
|     def GetLVUpScore(self): return self.LVUpScore # Éý¶ÎλËùÐè»ý·Ö | 
|   | 
| # ¿ç·þ¾º¼¼³¡¶Îλ½±Àø±í | 
| class IPY_CrossRealmPKDanAward(): | 
|      | 
|     def __init__(self): | 
|         self.CrossZoneName = ""  | 
|         self.SeasonID = 0  | 
|         self.DanLV = 0  | 
|         self.DanLVAwardList = []  | 
|         self.SeasonDanLVAwardList = [] | 
|         return | 
|          | 
|     def GetCrossZoneName(self): return self.CrossZoneName # ¿ç·þ·ÖÇøÃû  | 
|     def GetSeasonID(self): return self.SeasonID # Èü¼¾ID  | 
|     def GetDanLV(self): return self.DanLV # ¶ÎλµÈ¼¶  | 
|     def GetDanLVAwardList(self): return self.DanLVAwardList # ¶Îλ´ï±ê½±ÀøÎïÆ·Áбí [[½±ÀøÎïÆ·ID,¸öÊý,ÊÇ·ñ°ó¶¨], ...]  | 
|     def GetSeasonDanLVAwardList(self): return self.SeasonDanLVAwardList # Èü¼¾¶Îλ½±ÀøÎïÆ·Áбí [[½±ÀøÎïÆ·ID,¸öÊý,ÊÇ·ñ°ó¶¨], ...] | 
|   | 
| # ¿ç·þ¾º¼¼³¡ÅÅÃû½±Àø±í | 
| class IPY_CrossRealmPKOrderAward(): | 
|      | 
|     def __init__(self): | 
|         self.CrossZoneName = ""  | 
|         self.SeasonID = 0  | 
|         self.OrderAwardInfo = {} | 
|         return | 
|          | 
|     def GetCrossZoneName(self): return self.CrossZoneName # ¿ç·þ·ÖÇøÃû  | 
|     def GetSeasonID(self): return self.SeasonID # Èü¼¾ID  | 
|     def GetOrderAwardInfo(self): return self.OrderAwardInfo # Èü¼¾ÅÅÃû½±ÀøÐÅÏ¢ {"ÅÅÃû":[[½±ÀøÎïÆ·ID,¸öÊý,ÊÇ·ñ°ó¶¨], ...], ...} | 
|   | 
| # ¿ç·þ·ÖÇø±íͨÓà | 
| class IPY_CrossZoneComm(): | 
|      | 
|     def __init__(self): | 
|         self.CrossZoneName = ""  | 
|         self.ZoneID = 0  | 
|         self.ServerGroupIDList = [] | 
|         return | 
|          | 
|     def GetCrossZoneName(self): return self.CrossZoneName # ¿ç·þ·ÖÇøÃû  | 
|     def GetZoneID(self): return self.ZoneID # ÈüÇøID  | 
|     def GetServerGroupIDList(self): return self.ServerGroupIDList # ÈüÇø·þÎñÆ÷×éIDÁбí | 
|   | 
| # ¿ç·þ·ÖÇø±í¾º¼¼³¡ | 
| class IPY_CrossZonePK(): | 
|      | 
|     def __init__(self): | 
|         self.CrossZoneName = ""  | 
|         self.ZoneID = 0  | 
|         self.ServerGroupIDList = [] | 
|         return | 
|          | 
|     def GetCrossZoneName(self): return self.CrossZoneName # ¿ç·þ·ÖÇøÃû  | 
|     def GetZoneID(self): return self.ZoneID # ÈüÇøID  | 
|     def GetServerGroupIDList(self): return self.ServerGroupIDList # ÈüÇø·þÎñÆ÷×éIDÁбí | 
|   | 
| # ¿ç·þBossÅîÀ³Ïɾ³·ÖÇøµØÍ¼±í | 
| class IPY_CrossPenglaiZoneMap(): | 
|      | 
|     def __init__(self): | 
|         self.ZoneID = 0  | 
|         self.MapID = 0  | 
|         self.DataMapID = 0  | 
|         self.CopyMapID = 0  | 
|         self.PosX = 0  | 
|         self.PosY = 0 | 
|         return | 
|          | 
|     def GetZoneID(self): return self.ZoneID # ·ÖÇøID  | 
|     def GetMapID(self): return self.MapID # ³¡¾°µØÍ¼ID  | 
|     def GetDataMapID(self): return self.DataMapID # Êý¾ÝµØÍ¼ID  | 
|     def GetCopyMapID(self): return self.CopyMapID # ÐéÄâÏß·ID  | 
|     def GetPosX(self): return self.PosX # ×ø±êX  | 
|     def GetPosY(self): return self.PosY # ×ø±êY | 
|   | 
| # ¾Û»ê±í | 
| class IPY_GatherSoul(): | 
|      | 
|     def __init__(self): | 
|         self.ItemID = 0  | 
|         self.AttrType = []  | 
|         self.SoulGrade = 0 | 
|         return | 
|          | 
|     def GetItemID(self): return self.ItemID # ÎïÆ·ID  | 
|     def GetAttrType(self): return self.AttrType # ÊôÐÔÀàÐÍ  | 
|     def GetSoulGrade(self): return self.SoulGrade # »ê½×¶Î | 
|   | 
| # ¾Û»êºÏ³É±í | 
| class IPY_GatherSoulCompound(): | 
|      | 
|     def __init__(self): | 
|         self.TagItemID = 0  | 
|         self.NeedLV = 0  | 
|         self.NeedItem = []  | 
|         self.NeedSoulSplinters = 0  | 
|         self.NeedSoulCore = 0 | 
|         return | 
|          | 
|     def GetTagItemID(self): return self.TagItemID # ºÏ³ÉµÄÎïÆ·ID  | 
|     def GetNeedLV(self): return self.NeedLV # ÐèÒªµÄÍæ¼ÒµÈ¼¶  | 
|     def GetNeedItem(self): return self.NeedItem # ÐèÒªµÄÎïÆ·ID  | 
|     def GetNeedSoulSplinters(self): return self.NeedSoulSplinters # ÐèÒªµÄ¾Û»êË鯬  | 
|     def GetNeedSoulCore(self): return self.NeedSoulCore # ÐèÒªµÄºËÐÄ»· | 
|   | 
| # ¾Û»êÊôÐÔ±í | 
| class IPY_GatherSoulAttr(): | 
|      | 
|     def __init__(self): | 
|         self.AttrType = 0  | 
|         self.AttrInfo1 = ""  | 
|         self.AttrInfo2 = {}  | 
|         self.AttrInfo3 = {}  | 
|         self.AttrInfo4 = {}  | 
|         self.AttrInfo5 = {} | 
|         return | 
|          | 
|     def GetAttrType(self): return self.AttrType # ÊôÐÔÀàÐÍ  | 
|     def GetAttrInfo1(self): return self.AttrInfo1 # »ù´¡ÊôÐÔ-²ÎÊý¾Û»êµÈ¼¶level  | 
|     def GetAttrInfo2(self): return self.AttrInfo2 # Æ·ÖÊϵÊý(Æ·ÖÊ_ϵÊý|¡)  | 
|     def GetAttrInfo3(self): return self.AttrInfo3 # ¶àÊôÐÔϵÊý  | 
|     def GetAttrInfo4(self): return self.AttrInfo4 # ³õʼÊôÐÔ(Æ·ÖÊ_ÊôÐÔÖµ|¡)  | 
|     def GetAttrInfo5(self): return self.AttrInfo5 # ½×¶ÎϵÊý | 
|   | 
| # ÍõÕß·¨±¦±í | 
| class IPY_MagicWeaponOfKing(): | 
|      | 
|     def __init__(self): | 
|         self.MWID = 0  | 
|         self.AwardMark = 0  | 
|         self.AddAttr = {} | 
|         return | 
|          | 
|     def GetMWID(self): return self.MWID # ·¨±¦ID  | 
|     def GetAwardMark(self): return self.AwardMark # Èü¼¾½±ÀøµÈ¼¶  | 
|     def GetAddAttr(self): return self.AddAttr # ÊôÐÔ | 
|   | 
| # Ê±×°±í | 
| class IPY_Coat(): | 
|      | 
|     def __init__(self): | 
|         self.CoatID = 0  | 
|         self.EquipItemID = []  | 
|         self.UnlockItemID = 0  | 
|         self.MaxLV = 0  | 
|         self.CostItemCnt = []  | 
|         self.StarAttr = {} | 
|         return | 
|          | 
|     def GetCoatID(self): return self.CoatID # Ê±×°±àºÅ  | 
|     def GetEquipItemID(self): return self.EquipItemID # ×°±¸ÎïÆ·ID(°´Ö°ÒµË³Ðò)  | 
|     def GetUnlockItemID(self): return self.UnlockItemID # ²ÄÁÏÎïÆ·ID  | 
|     def GetMaxLV(self): return self.MaxLV # ×î´óÐǼ¶  | 
|     def GetCostItemCnt(self): return self.CostItemCnt # ²ÄÁÏÊýÁ¿  | 
|     def GetStarAttr(self): return self.StarAttr # ÊôÐÔ | 
|   | 
| # Ê±×°¹ñÉý¼¶±í | 
| class IPY_CoatChestUp(): | 
|      | 
|     def __init__(self): | 
|         self.LV = 0  | 
|         self.NeedExp = 0  | 
|         self.AddAttr = {} | 
|         return | 
|          | 
|     def GetLV(self): return self.LV # µÈ¼¶  | 
|     def GetNeedExp(self): return self.NeedExp # Éý¼¶ËùÐè¾Ñé  | 
|     def GetAddAttr(self): return self.AddAttr # ÊôÐÔ | 
|   | 
| # ÖÜ¿ñ»¶»î¶¯Ê±¼ä±í | 
| class IPY_ActWeekParty(): | 
|      | 
|     def __init__(self): | 
|         self.CfgID = 0  | 
|         self.StartDate = ""  | 
|         self.EndDate = ""  | 
|         self.AdvanceMinutes = 0  | 
|         self.IsDayReset = 0  | 
|         self.ResetType = 0  | 
|         self.LVLimit = 0  | 
|         self.TemplateID = []  | 
|         self.PointAward = {} | 
|         return | 
|          | 
|     def GetCfgID(self): return self.CfgID # ÅäÖÃID  | 
|     def GetStartDate(self): return self.StartDate # ¿ªÆôÈÕÆÚ  | 
|     def GetEndDate(self): return self.EndDate # ½áÊøÈÕÆÚ  | 
|     def GetAdvanceMinutes(self): return self.AdvanceMinutes # Ç°¶ËÌáǰX·ÖÖÓչʾ»î¶¯  | 
|     def GetIsDayReset(self): return self.IsDayReset # ÊÇ·ñÿÌìÖØÖà  | 
|     def GetResetType(self): return self.ResetType # ÖØÖÃÀàÐÍ£¬0-0µãÖØÖã»1-5µãÖØÖà  | 
|     def GetLVLimit(self): return self.LVLimit # ÏÞÖÆµÈ¼¶  | 
|     def GetTemplateID(self): return self.TemplateID # Ä£°å±àºÅ  | 
|     def GetPointAward(self): return self.PointAward # ×Ü»ý·Ö½±Àø | 
|   | 
| # ÖÜ¿ñ»¶±í | 
| class IPY_WeekParty(): | 
|      | 
|     def __init__(self): | 
|         self.TemplateID = 0  | 
|         self.ActionType = 0  | 
|         self.TotalTimes = 0  | 
|         self.SingleTimes = 0  | 
|         self.Reward = []  | 
|         self.Point = 0 | 
|         return | 
|          | 
|     def GetTemplateID(self): return self.TemplateID # Ä£°åID  | 
|     def GetActionType(self): return self.ActionType # »î¶¯ÌõÄ¿ID  | 
|     def GetTotalTimes(self): return self.TotalTimes # ¿ÉÍê³ÉµÄ×Ü´ÎÊý£¬0±íʾ²»ÏÞ´ÎÊý  | 
|     def GetSingleTimes(self): return self.SingleTimes # µ¥´ÎÁì½±ÐèÒªµÄ´ÎÊý  | 
|     def GetReward(self): return self.Reward # ½±ÀøÎïÆ·  | 
|     def GetPoint(self): return self.Point # »ý·Ö | 
|   | 
| # µÇ¼½±ÀøÊ±¼ä±í | 
| class IPY_ActLoginAward(): | 
|      | 
|     def __init__(self): | 
|         self.CfgID = 0  | 
|         self.StartDate = ""  | 
|         self.EndDate = ""  | 
|         self.AdvanceMinutes = 0  | 
|         self.IsDayReset = 0  | 
|         self.ResetType = 0  | 
|         self.LVLimit = 0  | 
|         self.TemplateID = [] | 
|         return | 
|          | 
|     def GetCfgID(self): return self.CfgID # ÅäÖÃID  | 
|     def GetStartDate(self): return self.StartDate # ¿ªÆôÈÕÆÚ  | 
|     def GetEndDate(self): return self.EndDate # ½áÊøÈÕÆÚ  | 
|     def GetAdvanceMinutes(self): return self.AdvanceMinutes # Ç°¶ËÌáǰX·ÖÖÓչʾ»î¶¯  | 
|     def GetIsDayReset(self): return self.IsDayReset # ÊÇ·ñÿÌìÖØÖà  | 
|     def GetResetType(self): return self.ResetType # ÖØÖÃÀàÐÍ£¬0-0µãÖØÖã»1-5µãÖØÖà  | 
|     def GetLVLimit(self): return self.LVLimit # ÏÞÖÆµÈ¼¶  | 
|     def GetTemplateID(self): return self.TemplateID # Ä£°å±àºÅ | 
|   | 
| # µÇ¼½±ÀøÄ£°å±í | 
| class IPY_LoginAward(): | 
|      | 
|     def __init__(self): | 
|         self.TemplateID = 0  | 
|         self.ActionType = 0  | 
|         self.TotalTimes = 0  | 
|         self.SingleTimes = 0  | 
|         self.Reward = "" | 
|         return | 
|          | 
|     def GetTemplateID(self): return self.TemplateID # Ä£°åID  | 
|     def GetActionType(self): return self.ActionType # »î¶¯ÌõÄ¿ID  | 
|     def GetTotalTimes(self): return self.TotalTimes # ¿ÉÍê³ÉµÄ×Ü´ÎÊý£¬0±íʾ²»ÏÞ´ÎÊý  | 
|     def GetSingleTimes(self): return self.SingleTimes # µ¥´ÎÁì½±ÐèÒªµÄ´ÎÊý  | 
|     def GetReward(self): return self.Reward # ½±ÀøÎïÆ· | 
|   | 
| # ÖïÏÉBOSS±í | 
| class IPY_ZhuXianBoss(): | 
|      | 
|     def __init__(self): | 
|         self.NPCID = 0  | 
|         self.LineID = 0  | 
|         self.RealmLV = 0  | 
|         self.ZhuXianScore = 0 | 
|         return | 
|          | 
|     def GetNPCID(self): return self.NPCID # ID  | 
|     def GetLineID(self): return self.LineID  | 
|     def GetRealmLV(self): return self.RealmLV # ÐèÒª¾³½ç  | 
|     def GetZhuXianScore(self): return self.ZhuXianScore # ÐèÒªÖïÏÉ×ÜÆÀ·Ö | 
|   | 
| # ½ÚÈÕѲÀñ»î¶¯Ê±¼ä±í | 
| class IPY_ActFeastWeekParty(): | 
|      | 
|     def __init__(self): | 
|         self.CfgID = 0  | 
|         self.StartDate = ""  | 
|         self.EndDate = ""  | 
|         self.AdvanceMinutes = 0  | 
|         self.IsDayReset = 0  | 
|         self.ResetType = 0  | 
|         self.LVLimit = 0  | 
|         self.TemplateID = []  | 
|         self.PointAward = {} | 
|         return | 
|          | 
|     def GetCfgID(self): return self.CfgID # ÅäÖÃID  | 
|     def GetStartDate(self): return self.StartDate # ¿ªÆôÈÕÆÚ  | 
|     def GetEndDate(self): return self.EndDate # ½áÊøÈÕÆÚ  | 
|     def GetAdvanceMinutes(self): return self.AdvanceMinutes # Ç°¶ËÌáǰX·ÖÖÓչʾ»î¶¯  | 
|     def GetIsDayReset(self): return self.IsDayReset # ÊÇ·ñÿÌìÖØÖà  | 
|     def GetResetType(self): return self.ResetType # ÖØÖÃÀàÐÍ£¬0-0µãÖØÖã»1-5µãÖØÖà  | 
|     def GetLVLimit(self): return self.LVLimit # ÏÞÖÆµÈ¼¶  | 
|     def GetTemplateID(self): return self.TemplateID # Ä£°å±àºÅ  | 
|     def GetPointAward(self): return self.PointAward # ×Ü»ý·Ö½±Àø | 
|   | 
| # ½ÚÈÕѲÀñÄ£°å±í | 
| class IPY_FeastWeekParty(): | 
|      | 
|     def __init__(self): | 
|         self.TemplateID = 0  | 
|         self.ActionType = 0  | 
|         self.TotalTimes = 0  | 
|         self.SingleTimes = 0  | 
|         self.Reward = []  | 
|         self.Point = 0 | 
|         return | 
|          | 
|     def GetTemplateID(self): return self.TemplateID # Ä£°åID  | 
|     def GetActionType(self): return self.ActionType # »î¶¯ÌõÄ¿ID  | 
|     def GetTotalTimes(self): return self.TotalTimes # ¿ÉÍê³ÉµÄ×Ü´ÎÊý£¬0±íʾ²»ÏÞ´ÎÊý  | 
|     def GetSingleTimes(self): return self.SingleTimes # µ¥´ÎÁì½±ÐèÒªµÄ´ÎÊý  | 
|     def GetReward(self): return self.Reward # ½±ÀøÎïÆ·  | 
|     def GetPoint(self): return self.Point # »ý·Ö | 
|   | 
| # ÐÂÏɽçÊ¢µä-È«ÃñÀ´à˱í | 
| class IPY_NewAllPeopleParty(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.TotalTimes = 0  | 
|         self.AddPoint = 0 | 
|         return | 
|          | 
|     def GetID(self): return self.ID # ID  | 
|     def GetTotalTimes(self): return self.TotalTimes # ×Ü´ÎÊý  | 
|     def GetAddPoint(self): return self.AddPoint # Ã¿Íê³É´ÎÊý»ñµÃà˵ã | 
|   | 
| # ÐÂÏɽçÊ¢µä-È«ÃñÀ´à˽±Àø±í | 
| class IPY_NewAllPeoplePartyAward(): | 
|      | 
|     def __init__(self): | 
|         self.WorldLvNum = 0  | 
|         self.Index = 0  | 
|         self.NeedPoint = 0  | 
|         self.Award = {} | 
|         return | 
|          | 
|     def GetWorldLvNum(self): return self.WorldLvNum # ÊÀ½çµÈ¼¶µµ  | 
|     def GetIndex(self): return self.Index # Ë÷Òý  | 
|     def GetNeedPoint(self): return self.NeedPoint # ÐèÒªµãÊý  | 
|     def GetAward(self): return self.Award # ½±Àø {"Ö°Òµ":[[ÎïÆ·ID,¸öÊý,ÊÇ·ñ°ó¶¨],...], ...} | 
|   | 
| # ÐÒÔ˼ø±¦»î¶¯Ê±¼ä±í | 
| class IPY_ActLuckyTreasure(): | 
|      | 
|     def __init__(self): | 
|         self.CfgID = 0  | 
|         self.StartDate = ""  | 
|         self.EndDate = ""  | 
|         self.ResetType = 0  | 
|         self.LVLimit = 0  | 
|         self.TemplateID = 0  | 
|         self.LuckyPoint = 0 | 
|         return | 
|          | 
|     def GetCfgID(self): return self.CfgID # ÅäÖÃID  | 
|     def GetStartDate(self): return self.StartDate # ¿ªÆôÈÕÆÚ  | 
|     def GetEndDate(self): return self.EndDate # ½áÊøÈÕÆÚ  | 
|     def GetResetType(self): return self.ResetType # ÖØÖÃÀàÐÍ£¬0-0µãÖØÖã»1-5µãÖØÖà  | 
|     def GetLVLimit(self): return self.LVLimit # ÏÞÖÆµÈ¼¶  | 
|     def GetTemplateID(self): return self.TemplateID # Ä£°å±àºÅ  | 
|     def GetLuckyPoint(self): return self.LuckyPoint # ×ÜÐÒÔËÖµ | 
|   | 
| # ÐÒÔ˼ø±¦¿âÄ£°å±í | 
| class IPY_LuckyTreasureTemplate(): | 
|      | 
|     def __init__(self): | 
|         self.TemplateID = 0  | 
|         self.WorldLVLimit = []  | 
|         self.ItemID = 0  | 
|         self.ItemCnt = 0  | 
|         self.IsBind = 0  | 
|         self.Weight = 0 | 
|         return | 
|          | 
|     def GetTemplateID(self): return self.TemplateID # Ä£°åID  | 
|     def GetWorldLVLimit(self): return self.WorldLVLimit # ÊÀ½çµÈ¼¶·¶Î§  | 
|     def GetItemID(self): return self.ItemID # ÎïÆ·ID  | 
|     def GetItemCnt(self): return self.ItemCnt # ÎïÆ·ÊýÁ¿  | 
|     def GetIsBind(self): return self.IsBind # ÊÇ·ñ°ó¶¨  | 
|     def GetWeight(self): return self.Weight # È¨ÖØ | 
|   | 
| # ÉñÃØÉ̵ê±í | 
| class IPY_MysteryShop(): | 
|      | 
|     def __init__(self): | 
|         self.LVRange = []  | 
|         self.GoodsID = 0 | 
|         return | 
|          | 
|     def GetLVRange(self): return self.LVRange # µÈ¼¶·¶Î§  | 
|     def GetGoodsID(self): return self.GoodsID # É̳DZíID | 
|   | 
| # ×°±¸Î»±³°üË÷ÒýÓ³Éä±í | 
| class IPY_EquipPlaceIndexMap(): | 
|      | 
|     def __init__(self): | 
|         self.GridIndex = 0  | 
|         self.ClassLV = 0  | 
|         self.EquipPlace = 0 | 
|         return | 
|          | 
|     def GetGridIndex(self): return self.GridIndex # ±³°ü¸ñ×ÓË÷Òý  | 
|     def GetClassLV(self): return self.ClassLV # ½×¼¶(ÎïÆ·±íLV×Ö¶Î)  | 
|     def GetEquipPlace(self): return self.EquipPlace # ×°±¸Î»(ÎïÆ·±íEquipPlace×Ö¶Î) | 
|   | 
| # ×°±¸Éñ×°±í | 
| class IPY_EquipShenAttr(): | 
|      | 
|     def __init__(self): | 
|         self.EquipItemID = 0  | 
|         self.ShenAttrIDList = []  | 
|         self.ShenAttrValueList = []  | 
|         self.XianAttrIDList = []  | 
|         self.XianAttrValueList = []  | 
|         self.JiAttrIDList = []  | 
|         self.JiAttrValueList = []  | 
|         self.LegendAttrIDList = []  | 
|         self.LegendAttrValueList = [] | 
|         return | 
|          | 
|     def GetEquipItemID(self): return self.EquipItemID # ×°±¸ID  | 
|     def GetShenAttrIDList(self): return self.ShenAttrIDList # ÉñÆ·´«ÆæÊôÐÔIDÁÐ±í  | 
|     def GetShenAttrValueList(self): return self.ShenAttrValueList # ÉñÆ·´«ÆæÊôÐÔÖµÁÐ±í  | 
|     def GetXianAttrIDList(self): return self.XianAttrIDList # ÏÉÆ·´«ÆæÊôÐÔIDÁÐ±í  | 
|     def GetXianAttrValueList(self): return self.XianAttrValueList # ÏÉÆ·´«ÆæÊôÐÔÖµÁÐ±í  | 
|     def GetJiAttrIDList(self): return self.JiAttrIDList # ¼«Æ·´«ÆæÊôÐÔIDÁÐ±í  | 
|     def GetJiAttrValueList(self): return self.JiAttrValueList # ¼«Æ·´«ÆæÊôÐÔÖµÁÐ±í  | 
|     def GetLegendAttrIDList(self): return self.LegendAttrIDList # ÆÕͨ´«ÆæÊôÐÔIDÁÐ±í  | 
|     def GetLegendAttrValueList(self): return self.LegendAttrValueList # ÆÕͨ´«ÆæÊôÐÔÖµÁбí | 
|   | 
| # ×°±¸Éñ×°½ø½×±í | 
| class IPY_EquipShenEvolve(): | 
|      | 
|     def __init__(self): | 
|         self.EquipItemID = 0  | 
|         self.EvolveEquipID = 0  | 
|         self.EvolveNeedItemIDInfo = []  | 
|         self.EvolveNeedSuitCount = 0  | 
|         self.EvolveNeedEquipID = 0 | 
|         return | 
|          | 
|     def GetEquipItemID(self): return self.EquipItemID # ×°±¸ID  | 
|     def GetEvolveEquipID(self): return self.EvolveEquipID # ¿É½ø½×Ä¿±ê×°±¸ID  | 
|     def GetEvolveNeedItemIDInfo(self): return self.EvolveNeedItemIDInfo # ½ø½×ËùÐ踽¼Ó²ÄÁϼ°¸öÊý  | 
|     def GetEvolveNeedSuitCount(self): return self.EvolveNeedSuitCount # ½ø½×ËùÐè±¾½×Ì××°¼þÊý  | 
|     def GetEvolveNeedEquipID(self): return self.EvolveNeedEquipID # ½ø½×ËùÐè¹Ì¶¨×°±¸ID | 
|   | 
| # ×°±¸ÉýÐDZí | 
| class IPY_EquipStarUp(): | 
|      | 
|     def __init__(self): | 
|         self.ClassLV = 0  | 
|         self.EquipPlace = 0  | 
|         self.Star = 0  | 
|         self.CostEquipPlace = []  | 
|         self.IsJobLimit = 0  | 
|         self.CostEquipColor = []  | 
|         self.CostEquipCnt = 0  | 
|         self.UnSuitRate = 0  | 
|         self.SuitRate = 0  | 
|         self.CostItemDict = {}  | 
|         self.StarAttrInfo = {}  | 
|         self.BaseAttrInfo = {} | 
|         return | 
|          | 
|     def GetClassLV(self): return self.ClassLV # ½×¼¶  | 
|     def GetEquipPlace(self): return self.EquipPlace # ×°±¸Î»  | 
|     def GetStar(self): return self.Star # ÐÇÊý  | 
|     def GetCostEquipPlace(self): return self.CostEquipPlace # ¿ÉÓÃ×°±¸²¿Î»  | 
|     def GetIsJobLimit(self): return self.IsJobLimit # ÊÇ·ñÖ»Óñ¾Ö°Òµ×°±¸²ÄÁÏ  | 
|     def GetCostEquipColor(self): return self.CostEquipColor # ¿ÉÓÃ×°±¸Æ·ÖÊ  | 
|     def GetCostEquipCnt(self): return self.CostEquipCnt # ×°±¸ÊýÁ¿  | 
|     def GetUnSuitRate(self): return self.UnSuitRate # µ¥¼þ·ÇÌ××°¼Ó³É¸ÅÂÊ  | 
|     def GetSuitRate(self): return self.SuitRate # µ¥¼þÌ××°¼Ó³É¸ÅÂÊ  | 
|     def GetCostItemDict(self): return self.CostItemDict # ÌØÊâ²ÄÁÏ  | 
|     def GetStarAttrInfo(self): return self.StarAttrInfo # ÐǼ¶ÊôÐÔ  | 
|     def GetBaseAttrInfo(self): return self.BaseAttrInfo # »ù´¡ÊôÐÔÔö¼Ó | 
|   | 
| # ×°±¸Ç¿»¯½ø»¯±í | 
| class IPY_EquipPlusEvolve(): | 
|      | 
|     def __init__(self): | 
|         self.EquipPlace = 0  | 
|         self.EvolveLV = 0  | 
|         self.NeedPlusLV = 0  | 
|         self.CostItem = {}  | 
|         self.Attr = {} | 
|         return | 
|          | 
|     def GetEquipPlace(self): return self.EquipPlace # ×°±¸Î»  | 
|     def GetEvolveLV(self): return self.EvolveLV # ½ø»¯µÈ¼¶  | 
|     def GetNeedPlusLV(self): return self.NeedPlusLV # ÐèҪǿ»¯µÈ¼¶  | 
|     def GetCostItem(self): return self.CostItem # ÏûºÄ²ÄÁÏ  | 
|     def GetAttr(self): return self.Attr # ÊôÐÔ | 
|   | 
| # ÏÉÃËBoss½±Àø±í | 
| class IPY_FamilyBossAward(): | 
|      | 
|     def __init__(self): | 
|         self.BossID = 0  | 
|         self.WorldLV = []  | 
|         self.Rank = []  | 
|         self.Award1 = []  | 
|         self.Award2 = {} | 
|         return | 
|          | 
|     def GetBossID(self): return self.BossID # BossID  | 
|     def GetWorldLV(self): return self.WorldLV # ÊÀ½çµÈ¼¶  | 
|     def GetRank(self): return self.Rank # ÅÅÃû  | 
|     def GetAward1(self): return self.Award1 # ½±Àø [[¶ÀÁ¢¸ÅÂÊÍò·ÖÂÊ,[ÎïÆ·ID,ÊýÁ¿,ÊÇ·ñÅÄÆ·]],..]  | 
|     def GetAward2(self): return self.Award2 # ±ýͼ½±Àø{Ëæ»ú´ÎÊý:[(¸ÅÂÊ,[ÎïÆ·ID,ÊýÁ¿,ÊÇ·ñÅÄÆ·]),..]} | 
|   | 
| # ×°±¸Ï´Á·µÈ¼¶ÉÏÏÞ | 
| class IPY_ItemWashMax(): | 
|      | 
|     def __init__(self): | 
|         self.Type = 0  | 
|         self.Star = 0  | 
|         self.LevelMax = 0 | 
|         return | 
|          | 
|     def GetType(self): return self.Type # °´×°±¸Î»¶ÔÓ¦ÀàÐͲéÕÒ  | 
|     def GetStar(self): return self.Star #  ×°±¸ÐÇÊý  | 
|     def GetLevelMax(self): return self.LevelMax # Ï´Á·µÈ¼¶ÉÏÏÞ | 
|   | 
| # Æï³èBoss½±Àø±í | 
| class IPY_HorsePetBossAward(): | 
|      | 
|     def __init__(self): | 
|         self.LineID = 0  | 
|         self.WorldLV = []  | 
|         self.Rank = []  | 
|         self.Award1 = []  | 
|         self.Award2 = [] | 
|         return | 
|          | 
|     def GetLineID(self): return self.LineID #  Ïß·ID  | 
|     def GetWorldLV(self): return self.WorldLV # ÊÀ½çµÈ¼¶  | 
|     def GetRank(self): return self.Rank # ÅÅÃû  | 
|     def GetAward1(self): return self.Award1 # ½±Àø [[¶ÀÁ¢¸ÅÂÊÍò·ÖÂÊ,[ÎïÆ·ID,ÊýÁ¿,ÊÇ·ñÅÄÆ·]],..]  | 
|     def GetAward2(self): return self.Award2 # ±ýͼ½±Àø  [[(¸ÅÂÊ,[ÎïÆ·ID,ÊýÁ¿,ÊÇ·ñÅÄÆ·]),..]] | 
|   | 
| # çÎç¿ÏÉÓò±í | 
| class IPY_FairyDomain(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.EventType = 0  | 
|         self.MapID = 0  | 
|         self.LineID = 0  | 
|         self.BossID = 0  | 
|         self.EventFBType = 0  | 
|         self.CostEnergy = 0  | 
|         self.NeedAlchemyLV = 0  | 
|         self.NeedLV = []  | 
|         self.Weight = 0  | 
|         self.HourCntPriLimit = 0  | 
|         self.DayCntPriLimit = 0 | 
|         return | 
|          | 
|     def GetID(self): return self.ID # Ê¼þ±àºÅ  | 
|     def GetEventType(self): return self.EventType # Ê¼þÀàÐÍ  | 
|     def GetMapID(self): return self.MapID # ¸±±¾id  | 
|     def GetLineID(self): return self.LineID # ¸±±¾Ïß·id  | 
|     def GetBossID(self): return self.BossID # ¸±±¾BossID  | 
|     def GetEventFBType(self): return self.EventFBType # Ê¼þ¸±±¾ÀàÐÍ£¬0-ǰ¶Ë£¬1-±¾·þ£¬2-¿ç·þ  | 
|     def GetCostEnergy(self): return self.CostEnergy # ÏûºÄÌåÁ¦  | 
|     def GetNeedAlchemyLV(self): return self.NeedAlchemyLV # ³öÏÖµÄÁ¶µ¤µÈ¼¶ÒªÇó  | 
|     def GetNeedLV(self): return self.NeedLV # ³öÏÖµÄÍæ¼ÒµÈ¼¶ÒªÇó  | 
|     def GetWeight(self): return self.Weight # È¨ÖØ  | 
|     def GetHourCntPriLimit(self): return self.HourCntPriLimit # ¸öÈËÿСʱ´ÎÊýÏÞÖÆ  | 
|     def GetDayCntPriLimit(self): return self.DayCntPriLimit # ¸öÈËÿÌì´ÎÊýÏÞÖÆ | 
|   | 
| # çÎç¿ÆæÓö±í | 
| class IPY_FairyAdventures(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.OpenServerDay = 0  | 
|         self.EventID = 0  | 
|         self.Condition = []  | 
|         self.GearAward = []  | 
|         self.BasicAward = [] | 
|         return | 
|          | 
|     def GetID(self): return self.ID # Î¨Ò»ID  | 
|     def GetOpenServerDay(self): return self.OpenServerDay # ¿ª·þÌì  | 
|     def GetEventID(self): return self.EventID # Ê¼þ±àºÅ  | 
|     def GetCondition(self): return self.Condition # Ìõ¼þ  | 
|     def GetGearAward(self): return self.GearAward # µµÎ»½±Àø  | 
|     def GetBasicAward(self): return self.BasicAward # ±£µ×½±Àø | 
|   | 
| # çÎç¿ÏÉÓò¶¨ÖƱí | 
| class IPY_FairyDomainAppoint(): | 
|      | 
|     def __init__(self): | 
|         self.Cnt = 0  | 
|         self.EventID = 0  | 
|         self.Award = []  | 
|         self.RandomAward = [] | 
|         return | 
|          | 
|     def GetCnt(self): return self.Cnt # ´ÎÊý  | 
|     def GetEventID(self): return self.EventID # Ê¼þ±àºÅ  | 
|     def GetAward(self): return self.Award # ¶¨Öƽ±Àø£¨Ã»Åä×ßÕý³£½±Àø¹æÔò£©[[ÎïÆ·ID,ÊýÁ¿,ÊÇ·ñÅÄÆ·],..]  | 
|     def GetRandomAward(self): return self.RandomAward # Ëæ»ú½±Àø [[(È¨ÖØ,[ÎïÆ·ID,ÊýÁ¿,ÊÇ·ñÅÄÆ·]),..],..] | 
|   | 
| # ¸±±¾Buff±í | 
| class IPY_FBBuyBuff(): | 
|      | 
|     def __init__(self): | 
|         self.MapId = 0  | 
|         self.MoneyCnt = 0  | 
|         self.BuffID = 0  | 
|         self.BuffCD = 0 | 
|         return | 
|          | 
|     def GetMapId(self): return self.MapId #   | 
|     def GetMoneyCnt(self): return self.MoneyCnt # ÏÉÓñÊýÁ¿  | 
|     def GetBuffID(self): return self.BuffID # BuffID  | 
|     def GetBuffCD(self): return self.BuffCD # ¼ä¸ôʱ¼äs | 
|   | 
| # ¼¼ÄÜÉý¼¶±í | 
| class IPY_SkillElement(): | 
|      | 
|     def __init__(self): | 
|         self.ElementSkillID = 0  | 
|         self.MainSkillID = 0  | 
|         self.NeedLV = 0 | 
|         return | 
|          | 
|     def GetElementSkillID(self): return self.ElementSkillID # ×¨¾«¼¼ÄÜID  | 
|     def GetMainSkillID(self): return self.MainSkillID # Ö÷¼¼ÄÜID  | 
|     def GetNeedLV(self): return self.NeedLV # Ñ¡ÔñÐèÒªµÈ¼¶ | 
|   | 
| # ÌìÐÇËþ±í | 
| class IPY_SkyTower(): | 
|      | 
|     def __init__(self): | 
|         self.FloorID = 0  | 
|         self.BossID = 0  | 
|         self.Reward = {}  | 
|         self.NeedLV = 0  | 
|         self.FightPower = 0  | 
|         self.IsNotify = 0 | 
|         return | 
|          | 
|     def GetFloorID(self): return self.FloorID # ²ã  | 
|     def GetBossID(self): return self.BossID # bossID  | 
|     def GetReward(self): return self.Reward # ½±Àø  | 
|     def GetNeedLV(self): return self.NeedLV # ÒªÇóµÈ¼¶  | 
|     def GetFightPower(self): return self.FightPower # ÍƼöÕ½Á¦  | 
|     def GetIsNotify(self): return self.IsNotify # ÊÇ·ñ¹ã²¥ | 
|   | 
| # Áé¸ùÌØÐ§±í | 
| class IPY_LingGenEffect(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.PointID = 0  | 
|         self.QualityLV = 0 | 
|         return | 
|          | 
|     def GetID(self): return self.ID # Î¨Ò»ID  | 
|     def GetPointID(self): return self.PointID # Áé¸ùID  | 
|     def GetQualityLV(self): return self.QualityLV # Æ·¼¶ | 
|   | 
| # Æï³è»Ã»¯±í | 
| class IPY_HorsePetSkin(): | 
|      | 
|     def __init__(self): | 
|         self.Type = 0  | 
|         self.ID = 0  | 
|         self.SkinLV = 0  | 
|         self.NeedExp = 0  | 
|         self.AttrInfo = {}  | 
|         self.SkinIndex = 0 | 
|         return | 
|          | 
|     def GetType(self): return self.Type # 1×øÆï2Áé³è  | 
|     def GetID(self): return self.ID # ¹ØÁªID(×øÆï±íºÍÁé³è±íID)  | 
|     def GetSkinLV(self): return self.SkinLV # »Ã»¯µÈ¼¶  | 
|     def GetNeedExp(self): return self.NeedExp # Éý¼¶ÐèÒª¾Ñé  | 
|     def GetAttrInfo(self): return self.AttrInfo # ÊôÐÔ  | 
|     def GetSkinIndex(self): return self.SkinIndex # Íâ¹Û | 
|   | 
| # ÐÖú¸ÐлÀñºÐ±í | 
| class IPY_AssistThanksGift(): | 
|      | 
|     def __init__(self): | 
|         self.GiftID = 0  | 
|         self.RequestPlayerAward = []  | 
|         self.AssistPlayerAward = [] | 
|         return | 
|          | 
|     def GetGiftID(self): return self.GiftID # ÀñºÐÎïÆ·ID  | 
|     def GetRequestPlayerAward(self): return self.RequestPlayerAward #  ·¢²¼½±ÀøÎïÆ· ÎïÆ·ID|¸öÊý  | 
|     def GetAssistPlayerAward(self): return self.AssistPlayerAward #  ÐÖú½±ÀøÎïÆ· ÎïÆ·ID|¸öÊý | 
|   | 
| # ÀۼƳäÖµ½±Àø±í | 
| class IPY_HistoryRechargeAward(): | 
|      | 
|     def __init__(self): | 
|         self.ID = 0  | 
|         self.Recharge = 0  | 
|         self.Reward = {} | 
|         return | 
|          | 
|     def GetID(self): return self.ID # id  | 
|     def GetRecharge(self): return self.Recharge # ËùÐè³äÖµÔª  | 
|     def GetReward(self): return self.Reward # Ö°Òµ¶ÔÓ¦µÄ½±ÀøÄÚÈÝ,ÿ¸öÖ°Òµ4×éÊý¾Ý£¬ÎïÆ·IDºÍÎïÆ·ÊýÁ¿(1.ǹºÀ2.µÀʦ3.½£ÐÞ) | 
|   | 
|   | 
| 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):  | 
|         self.fileMD5Dict = {} # Êý¾Ý±íÎļþmd5×Öµä, ÓÃÓÚ¶Ô±ÈÎļþ²îÒìÅжÏÊÇ·ñÖØ¶Á {dtName:md5, ...}  | 
|         self.ipyConfigEx = {} # ×Ô¶¨ÒåÊý¾Ý»º´æ {key:configData, ...}  | 
|         self.ipyDataIndexMap = {} # Êý¾Ý±íË÷Òý²éѯ»º´æ {dtName:{args:[index, ...], ...}, ...}  | 
|         self.ipyDataIndexMapEx = {} # Êý¾Ý±í×Ô¶¨Òå²éѯÌõ¼þ²éѯ»º´æ {dtName_(findKey,...):{(findKeyValue, ...):[index, ...], ...}, ...}  | 
|         self.ipyFuncConfigDict = {} # ¹¦ÄÜÅäÖÃ±í»º´æ {key:IPY_FuncConfig, ...}  | 
|         self.IpyDataClear()  | 
|         return  | 
|       | 
|     def IpyDataClear(self):  | 
|         Log("IPY_DataMgr Init...")  | 
|         self.ipyConfigEx = {}  | 
|         self.ipyDienstgradCache = self.__LoadFileData("Dienstgrad", IPY_Dienstgrad)  | 
|         self.ipyDienstgradLen = len(self.ipyDienstgradCache)  | 
|         self.ipyRolePointCache = self.__LoadFileData("RolePoint", IPY_RolePoint)  | 
|         self.ipyRolePointLen = len(self.ipyRolePointCache)  | 
|         self.ipyLingQiAttrCache = self.__LoadFileData("LingQiAttr", IPY_LingQiAttr)  | 
|         self.ipyLingQiAttrLen = len(self.ipyLingQiAttrCache)  | 
|         self.ipyRealmCache = self.__LoadFileData("Realm", IPY_Realm)  | 
|         self.ipyRealmLen = len(self.ipyRealmCache)  | 
|         self.ipyGodWeaponCache = self.__LoadFileData("GodWeapon", IPY_GodWeapon)  | 
|         self.ipyGodWeaponLen = len(self.ipyGodWeaponCache)  | 
|         self.ipyFuncConfigCache = self.__LoadFileData("FuncConfig", IPY_FuncConfig)  | 
|         self.ipyFuncConfigLen = len(self.ipyFuncConfigCache)  | 
|         self.ipyFuncOpenLVCache = self.__LoadFileData("FuncOpenLV", IPY_FuncOpenLV)  | 
|         self.ipyFuncOpenLVLen = len(self.ipyFuncOpenLVCache)  | 
|         self.ipyItemCompoundCache = self.__LoadFileData("ItemCompound", IPY_ItemCompound)  | 
|         self.ipyItemCompoundLen = len(self.ipyItemCompoundCache)  | 
|         self.ipyItemPlusCache = self.__LoadFileData("ItemPlus", IPY_ItemPlus)  | 
|         self.ipyItemPlusLen = len(self.ipyItemPlusCache)  | 
|         self.ipyItemPlusMasterCache = self.__LoadFileData("ItemPlusMaster", IPY_ItemPlusMaster)  | 
|         self.ipyItemPlusMasterLen = len(self.ipyItemPlusMasterCache)  | 
|         self.ipyItemPlusMaxCache = self.__LoadFileData("ItemPlusMax", IPY_ItemPlusMax)  | 
|         self.ipyItemPlusMaxLen = len(self.ipyItemPlusMaxCache)  | 
|         self.ipyRoleEquipStarsCache = self.__LoadFileData("RoleEquipStars", IPY_RoleEquipStars)  | 
|         self.ipyRoleEquipStarsLen = len(self.ipyRoleEquipStarsCache)  | 
|         self.ipyEquipLegendAttrCountCache = self.__LoadFileData("EquipLegendAttrCount", IPY_EquipLegendAttrCount)  | 
|         self.ipyEquipLegendAttrCountLen = len(self.ipyEquipLegendAttrCountCache)  | 
|         self.ipyEquipLegendAttrTypeCache = self.__LoadFileData("EquipLegendAttrType", IPY_EquipLegendAttrType)  | 
|         self.ipyEquipLegendAttrTypeLen = len(self.ipyEquipLegendAttrTypeCache)  | 
|         self.ipyEquipLegendAttrLibCache = self.__LoadFileData("EquipLegendAttrLib", IPY_EquipLegendAttrLib)  | 
|         self.ipyEquipLegendAttrLibLen = len(self.ipyEquipLegendAttrLibCache)  | 
|         self.ipyEquipLegendAttrValueCache = self.__LoadFileData("EquipLegendAttrValue", IPY_EquipLegendAttrValue)  | 
|         self.ipyEquipLegendAttrValueLen = len(self.ipyEquipLegendAttrValueCache)  | 
|         self.ipyDogzCache = self.__LoadFileData("Dogz", IPY_Dogz)  | 
|         self.ipyDogzLen = len(self.ipyDogzCache)  | 
|         self.ipyDogzEquipPlusCache = self.__LoadFileData("DogzEquipPlus", IPY_DogzEquipPlus)  | 
|         self.ipyDogzEquipPlusLen = len(self.ipyDogzEquipPlusCache)  | 
|         self.ipyRuneCache = self.__LoadFileData("Rune", IPY_Rune)  | 
|         self.ipyRuneLen = len(self.ipyRuneCache)  | 
|         self.ipyEquipWashCache = self.__LoadFileData("EquipWash", IPY_EquipWash)  | 
|         self.ipyEquipWashLen = len(self.ipyEquipWashCache)  | 
|         self.ipyAttrFruitCache = self.__LoadFileData("AttrFruit", IPY_AttrFruit)  | 
|         self.ipyAttrFruitLen = len(self.ipyAttrFruitCache)  | 
|         self.ipyPetInfoCache = self.__LoadFileData("PetInfo", IPY_PetInfo)  | 
|         self.ipyPetInfoLen = len(self.ipyPetInfoCache)  | 
|         self.ipyEquipDecomposeCache = self.__LoadFileData("EquipDecompose", IPY_EquipDecompose)  | 
|         self.ipyEquipDecomposeLen = len(self.ipyEquipDecomposeCache)  | 
|         self.ipyPetClassCostCache = self.__LoadFileData("PetClassCost", IPY_PetClassCost)  | 
|         self.ipyPetClassCostLen = len(self.ipyPetClassCostCache)  | 
|         self.ipyPetEatEquipCache = self.__LoadFileData("PetEatEquip", IPY_PetEatEquip)  | 
|         self.ipyPetEatEquipLen = len(self.ipyPetEatEquipCache)  | 
|         self.ipyHorseLVUpCache = self.__LoadFileData("HorseLVUp", IPY_HorseLVUp)  | 
|         self.ipyHorseLVUpLen = len(self.ipyHorseLVUpCache)  | 
|         self.ipyHorseSkinPlusCache = self.__LoadFileData("HorseSkinPlus", IPY_HorseSkinPlus)  | 
|         self.ipyHorseSkinPlusLen = len(self.ipyHorseSkinPlusCache)  | 
|         self.ipyPlayerLVCache = self.__LoadFileData("PlayerLV", IPY_PlayerLV)  | 
|         self.ipyPlayerLVLen = len(self.ipyPlayerLVCache)  | 
|         self.ipyGMAttrCache = self.__LoadFileData("GMAttr", IPY_GMAttr)  | 
|         self.ipyGMAttrLen = len(self.ipyGMAttrCache)  | 
|         self.ipyNPCStrengthenCache = self.__LoadFileData("NPCStrengthen", IPY_NPCStrengthen)  | 
|         self.ipyNPCStrengthenLen = len(self.ipyNPCStrengthenCache)  | 
|         self.ipyNPCTimeLostHPCache = self.__LoadFileData("NPCTimeLostHP", IPY_NPCTimeLostHP)  | 
|         self.ipyNPCTimeLostHPLen = len(self.ipyNPCTimeLostHPCache)  | 
|         self.ipyEquipSuitAttrCache = self.__LoadFileData("EquipSuitAttr", IPY_EquipSuitAttr)  | 
|         self.ipyEquipSuitAttrLen = len(self.ipyEquipSuitAttrCache)  | 
|         self.ipyWingRefineAttrCache = self.__LoadFileData("WingRefineAttr", IPY_WingRefineAttr)  | 
|         self.ipyWingRefineAttrLen = len(self.ipyWingRefineAttrCache)  | 
|         self.ipyWingRefineExpCache = self.__LoadFileData("WingRefineExp", IPY_WingRefineExp)  | 
|         self.ipyWingRefineExpLen = len(self.ipyWingRefineExpCache)  | 
|         self.ipyFamilyTechCache = self.__LoadFileData("FamilyTech", IPY_FamilyTech)  | 
|         self.ipyFamilyTechLen = len(self.ipyFamilyTechCache)  | 
|         self.ipyFightPowerParamCache = self.__LoadFileData("FightPowerParam", IPY_FightPowerParam)  | 
|         self.ipyFightPowerParamLen = len(self.ipyFightPowerParamCache)  | 
|         self.ipyNPCDropItemCache = self.__LoadFileData("NPCDropItem", IPY_NPCDropItem)  | 
|         self.ipyNPCDropItemLen = len(self.ipyNPCDropItemCache)  | 
|         self.ipyRuneTowerCache = self.__LoadFileData("RuneTower", IPY_RuneTower)  | 
|         self.ipyRuneTowerLen = len(self.ipyRuneTowerCache)  | 
|         self.ipyChinMapCache = self.__LoadFileData("ChinMap", IPY_ChinMap)  | 
|         self.ipyChinMapLen = len(self.ipyChinMapCache)  | 
|         self.ipyFBFuncCache = self.__LoadFileData("FBFunc", IPY_FBFunc)  | 
|         self.ipyFBFuncLen = len(self.ipyFBFuncCache)  | 
|         self.ipyFBLineCache = self.__LoadFileData("FBLine", IPY_FBLine)  | 
|         self.ipyFBLineLen = len(self.ipyFBLineCache)  | 
|         self.ipyFBHelpBattleCache = self.__LoadFileData("FBHelpBattle", IPY_FBHelpBattle)  | 
|         self.ipyFBHelpBattleLen = len(self.ipyFBHelpBattleCache)  | 
|         self.ipyNPCCustomRefreshCache = self.__LoadFileData("NPCCustomRefresh", IPY_NPCCustomRefresh)  | 
|         self.ipyNPCCustomRefreshLen = len(self.ipyNPCCustomRefreshCache)  | 
|         self.ipyDailyActionCache = self.__LoadFileData("DailyAction", IPY_DailyAction)  | 
|         self.ipyDailyActionLen = len(self.ipyDailyActionCache)  | 
|         self.ipyEquipGSParamCache = self.__LoadFileData("EquipGSParam", IPY_EquipGSParam)  | 
|         self.ipyEquipGSParamLen = len(self.ipyEquipGSParamCache)  | 
|         self.ipySuccessCache = self.__LoadFileData("Success", IPY_Success)  | 
|         self.ipySuccessLen = len(self.ipySuccessCache)  | 
|         self.ipyTreasureCache = self.__LoadFileData("Treasure", IPY_Treasure)  | 
|         self.ipyTreasureLen = len(self.ipyTreasureCache)  | 
|         self.ipyTreasureUpCache = self.__LoadFileData("TreasureUp", IPY_TreasureUp)  | 
|         self.ipyTreasureUpLen = len(self.ipyTreasureUpCache)  | 
|         self.ipyContineSignAwardCache = self.__LoadFileData("ContineSignAward", IPY_ContineSignAward)  | 
|         self.ipyContineSignAwardLen = len(self.ipyContineSignAwardCache)  | 
|         self.ipySignAwardCache = self.__LoadFileData("SignAward", IPY_SignAward)  | 
|         self.ipySignAwardLen = len(self.ipySignAwardCache)  | 
|         self.ipyVIPAwardCache = self.__LoadFileData("VIPAward", IPY_VIPAward)  | 
|         self.ipyVIPAwardLen = len(self.ipyVIPAwardCache)  | 
|         self.ipyAppointItemCache = self.__LoadFileData("AppointItem", IPY_AppointItem)  | 
|         self.ipyAppointItemLen = len(self.ipyAppointItemCache)  | 
|         self.ipyAuctionItemCache = self.__LoadFileData("AuctionItem", IPY_AuctionItem)  | 
|         self.ipyAuctionItemLen = len(self.ipyAuctionItemCache)  | 
|         self.ipyVipPrivilegeCache = self.__LoadFileData("VipPrivilege", IPY_VipPrivilege)  | 
|         self.ipyVipPrivilegeLen = len(self.ipyVipPrivilegeCache)  | 
|         self.ipyStoreCache = self.__LoadFileData("Store", IPY_Store)  | 
|         self.ipyStoreLen = len(self.ipyStoreCache)  | 
|         self.ipyActSpringSaleCache = self.__LoadFileData("ActSpringSale", IPY_ActSpringSale)  | 
|         self.ipyActSpringSaleLen = len(self.ipyActSpringSaleCache)  | 
|         self.ipyDailyQuestCache = self.__LoadFileData("DailyQuest", IPY_DailyQuest)  | 
|         self.ipyDailyQuestLen = len(self.ipyDailyQuestCache)  | 
|         self.ipyDailyLivenessRewardCache = self.__LoadFileData("DailyLivenessReward", IPY_DailyLivenessReward)  | 
|         self.ipyDailyLivenessRewardLen = len(self.ipyDailyLivenessRewardCache)  | 
|         self.ipyActivityPlaceRewardCache = self.__LoadFileData("ActivityPlaceReward", IPY_ActivityPlaceReward)  | 
|         self.ipyActivityPlaceRewardLen = len(self.ipyActivityPlaceRewardCache)  | 
|         self.ipyRefineStoveCache = self.__LoadFileData("RefineStove", IPY_RefineStove)  | 
|         self.ipyRefineStoveLen = len(self.ipyRefineStoveCache)  | 
|         self.ipyAlchemyCache = self.__LoadFileData("Alchemy", IPY_Alchemy)  | 
|         self.ipyAlchemyLen = len(self.ipyAlchemyCache)  | 
|         self.ipyAlchemyResultCache = self.__LoadFileData("AlchemyResult", IPY_AlchemyResult)  | 
|         self.ipyAlchemyResultLen = len(self.ipyAlchemyResultCache)  | 
|         self.ipyBOSSInfoCache = self.__LoadFileData("BOSSInfo", IPY_BOSSInfo)  | 
|         self.ipyBOSSInfoLen = len(self.ipyBOSSInfoCache)  | 
|         self.ipyBOSSFirstKillCache = self.__LoadFileData("BOSSFirstKill", IPY_BOSSFirstKill)  | 
|         self.ipyBOSSFirstKillLen = len(self.ipyBOSSFirstKillCache)  | 
|         self.ipyElderGodAreaCache = self.__LoadFileData("ElderGodArea", IPY_ElderGodArea)  | 
|         self.ipyElderGodAreaLen = len(self.ipyElderGodAreaCache)  | 
|         self.ipyPersonalBossCache = self.__LoadFileData("PersonalBoss", IPY_PersonalBoss)  | 
|         self.ipyPersonalBossLen = len(self.ipyPersonalBossCache)  | 
|         self.ipyFamilyActivityCache = self.__LoadFileData("FamilyActivity", IPY_FamilyActivity)  | 
|         self.ipyFamilyActivityLen = len(self.ipyFamilyActivityCache)  | 
|         self.ipyFamilyRedPackCache = self.__LoadFileData("FamilyRedPack", IPY_FamilyRedPack)  | 
|         self.ipyFamilyRedPackLen = len(self.ipyFamilyRedPackCache)  | 
|         self.ipyActFeastRedPacketSuccCache = self.__LoadFileData("ActFeastRedPacketSucc", IPY_ActFeastRedPacketSucc)  | 
|         self.ipyActFeastRedPacketSuccLen = len(self.ipyActFeastRedPacketSuccCache)  | 
|         self.ipyNPCShowCache = self.__LoadFileData("NPCShow", IPY_NPCShow)  | 
|         self.ipyNPCShowLen = len(self.ipyNPCShowCache)  | 
|         self.ipySealDemonCache = self.__LoadFileData("SealDemon", IPY_SealDemon)  | 
|         self.ipySealDemonLen = len(self.ipySealDemonCache)  | 
|         self.ipyFbEncourageCache = self.__LoadFileData("FbEncourage", IPY_FbEncourage)  | 
|         self.ipyFbEncourageLen = len(self.ipyFbEncourageCache)  | 
|         self.ipyMapRefreshNPCCache = self.__LoadFileData("MapRefreshNPC", IPY_MapRefreshNPC)  | 
|         self.ipyMapRefreshNPCLen = len(self.ipyMapRefreshNPCCache)  | 
|         self.ipyRuneCompoundCache = self.__LoadFileData("RuneCompound", IPY_RuneCompound)  | 
|         self.ipyRuneCompoundLen = len(self.ipyRuneCompoundCache)  | 
|         self.ipyResourcesBackCache = self.__LoadFileData("ResourcesBack", IPY_ResourcesBack)  | 
|         self.ipyResourcesBackLen = len(self.ipyResourcesBackCache)  | 
|         self.ipyCollectNPCCache = self.__LoadFileData("CollectNPC", IPY_CollectNPC)  | 
|         self.ipyCollectNPCLen = len(self.ipyCollectNPCCache)  | 
|         self.ipyTreasureNPCCache = self.__LoadFileData("TreasureNPC", IPY_TreasureNPC)  | 
|         self.ipyTreasureNPCLen = len(self.ipyTreasureNPCCache)  | 
|         self.ipyChestsCache = self.__LoadFileData("Chests", IPY_Chests)  | 
|         self.ipyChestsLen = len(self.ipyChestsCache)  | 
|         self.ipyChestsAwardCache = self.__LoadFileData("ChestsAward", IPY_ChestsAward)  | 
|         self.ipyChestsAwardLen = len(self.ipyChestsAwardCache)  | 
|         self.ipyVIPKillNPCCache = self.__LoadFileData("VIPKillNPC", IPY_VIPKillNPC)  | 
|         self.ipyVIPKillNPCLen = len(self.ipyVIPKillNPCCache)  | 
|         self.ipyOSCBillRankAwardCache = self.__LoadFileData("OSCBillRankAward", IPY_OSCBillRankAward)  | 
|         self.ipyOSCBillRankAwardLen = len(self.ipyOSCBillRankAwardCache)  | 
|         self.ipyOSCBillTagAwardCache = self.__LoadFileData("OSCBillTagAward", IPY_OSCBillTagAward)  | 
|         self.ipyOSCBillTagAwardLen = len(self.ipyOSCBillTagAwardCache)  | 
|         self.ipyLoginDayAwardCache = self.__LoadFileData("LoginDayAward", IPY_LoginDayAward)  | 
|         self.ipyLoginDayAwardLen = len(self.ipyLoginDayAwardCache)  | 
|         self.ipyOnlineAwardCache = self.__LoadFileData("OnlineAward", IPY_OnlineAward)  | 
|         self.ipyOnlineAwardLen = len(self.ipyOnlineAwardCache)  | 
|         self.ipySpringSaleCache = self.__LoadFileData("SpringSale", IPY_SpringSale)  | 
|         self.ipySpringSaleLen = len(self.ipySpringSaleCache)  | 
|         self.ipyOrderInfoCache = self.__LoadFileData("OrderInfo", IPY_OrderInfo)  | 
|         self.ipyOrderInfoLen = len(self.ipyOrderInfoCache)  | 
|         self.ipyCTGCache = self.__LoadFileData("CTG", IPY_CTG)  | 
|         self.ipyCTGLen = len(self.ipyCTGCache)  | 
|         self.ipyFirstGoldCache = self.__LoadFileData("FirstGold", IPY_FirstGold)  | 
|         self.ipyFirstGoldLen = len(self.ipyFirstGoldCache)  | 
|         self.ipyLVAwardCache = self.__LoadFileData("LVAward", IPY_LVAward)  | 
|         self.ipyLVAwardLen = len(self.ipyLVAwardCache)  | 
|         self.ipyInvestCache = self.__LoadFileData("Invest", IPY_Invest)  | 
|         self.ipyInvestLen = len(self.ipyInvestCache)  | 
|         self.ipyXBXZCache = self.__LoadFileData("XBXZ", IPY_XBXZ)  | 
|         self.ipyXBXZLen = len(self.ipyXBXZCache)  | 
|         self.ipyTreasureHouseCache = self.__LoadFileData("TreasureHouse", IPY_TreasureHouse)  | 
|         self.ipyTreasureHouseLen = len(self.ipyTreasureHouseCache)  | 
|         self.ipyFreeGoodsCache = self.__LoadFileData("FreeGoods", IPY_FreeGoods)  | 
|         self.ipyFreeGoodsLen = len(self.ipyFreeGoodsCache)  | 
|         self.ipyActFlashGiftbagCache = self.__LoadFileData("ActFlashGiftbag", IPY_ActFlashGiftbag)  | 
|         self.ipyActFlashGiftbagLen = len(self.ipyActFlashGiftbagCache)  | 
|         self.ipyFlashGiftbagCache = self.__LoadFileData("FlashGiftbag", IPY_FlashGiftbag)  | 
|         self.ipyFlashGiftbagLen = len(self.ipyFlashGiftbagCache)  | 
|         self.ipyActExpRateCache = self.__LoadFileData("ActExpRate", IPY_ActExpRate)  | 
|         self.ipyActExpRateLen = len(self.ipyActExpRateCache)  | 
|         self.ipyActCostRebateCache = self.__LoadFileData("ActCostRebate", IPY_ActCostRebate)  | 
|         self.ipyActCostRebateLen = len(self.ipyActCostRebateCache)  | 
|         self.ipyCostRebateTemplateCache = self.__LoadFileData("CostRebateTemplate", IPY_CostRebateTemplate)  | 
|         self.ipyCostRebateTemplateLen = len(self.ipyCostRebateTemplateCache)  | 
|         self.ipyActBossRebornCache = self.__LoadFileData("ActBossReborn", IPY_ActBossReborn)  | 
|         self.ipyActBossRebornLen = len(self.ipyActBossRebornCache)  | 
|         self.ipyBossRebornCache = self.__LoadFileData("BossReborn", IPY_BossReborn)  | 
|         self.ipyBossRebornLen = len(self.ipyBossRebornCache)  | 
|         self.ipyActRealmPointCache = self.__LoadFileData("ActRealmPoint", IPY_ActRealmPoint)  | 
|         self.ipyActRealmPointLen = len(self.ipyActRealmPointCache)  | 
|         self.ipyTrialExchangeCache = self.__LoadFileData("TrialExchange", IPY_TrialExchange)  | 
|         self.ipyTrialExchangeLen = len(self.ipyTrialExchangeCache)  | 
|         self.ipyAllPeoplePartyCache = self.__LoadFileData("AllPeopleParty", IPY_AllPeopleParty)  | 
|         self.ipyAllPeoplePartyLen = len(self.ipyAllPeoplePartyCache)  | 
|         self.ipyAllPeoplePartyAwardCache = self.__LoadFileData("AllPeoplePartyAward", IPY_AllPeoplePartyAward)  | 
|         self.ipyAllPeoplePartyAwardLen = len(self.ipyAllPeoplePartyAwardCache)  | 
|         self.ipyMapEventPointCache = self.__LoadFileData("MapEventPoint", IPY_MapEventPoint)  | 
|         self.ipyMapEventPointLen = len(self.ipyMapEventPointCache)  | 
|         self.ipyTalentSkillCache = self.__LoadFileData("TalentSkill", IPY_TalentSkill)  | 
|         self.ipyTalentSkillLen = len(self.ipyTalentSkillCache)  | 
|         self.ipyActFlashSaleCache = self.__LoadFileData("ActFlashSale", IPY_ActFlashSale)  | 
|         self.ipyActFlashSaleLen = len(self.ipyActFlashSaleCache)  | 
|         self.ipyActWishingWellCache = self.__LoadFileData("ActWishingWell", IPY_ActWishingWell)  | 
|         self.ipyActWishingWellLen = len(self.ipyActWishingWellCache)  | 
|         self.ipyWishingWellCache = self.__LoadFileData("WishingWell", IPY_WishingWell)  | 
|         self.ipyWishingWellLen = len(self.ipyWishingWellCache)  | 
|         self.ipyFunctionForecastCache = self.__LoadFileData("FunctionForecast", IPY_FunctionForecast)  | 
|         self.ipyFunctionForecastLen = len(self.ipyFunctionForecastCache)  | 
|         self.ipyChatBubbleBoxCache = self.__LoadFileData("ChatBubbleBox", IPY_ChatBubbleBox)  | 
|         self.ipyChatBubbleBoxLen = len(self.ipyChatBubbleBoxCache)  | 
|         self.ipyActTotalRechargeCache = self.__LoadFileData("ActTotalRecharge", IPY_ActTotalRecharge)  | 
|         self.ipyActTotalRechargeLen = len(self.ipyActTotalRechargeCache)  | 
|         self.ipyTotalRechargeTemplateCache = self.__LoadFileData("TotalRechargeTemplate", IPY_TotalRechargeTemplate)  | 
|         self.ipyTotalRechargeTemplateLen = len(self.ipyTotalRechargeTemplateCache)  | 
|         self.ipyMagicWeaponFBCache = self.__LoadFileData("MagicWeaponFB", IPY_MagicWeaponFB)  | 
|         self.ipyMagicWeaponFBLen = len(self.ipyMagicWeaponFBCache)  | 
|         self.ipyIceLodeStarAwardCache = self.__LoadFileData("IceLodeStarAward", IPY_IceLodeStarAward)  | 
|         self.ipyIceLodeStarAwardLen = len(self.ipyIceLodeStarAwardCache)  | 
|         self.ipyCrossRealmPKDanCache = self.__LoadFileData("CrossRealmPKDan", IPY_CrossRealmPKDan)  | 
|         self.ipyCrossRealmPKDanLen = len(self.ipyCrossRealmPKDanCache)  | 
|         self.ipyCrossRealmPKDanAwardCache = self.__LoadFileData("CrossRealmPKDanAward", IPY_CrossRealmPKDanAward)  | 
|         self.ipyCrossRealmPKDanAwardLen = len(self.ipyCrossRealmPKDanAwardCache)  | 
|         self.ipyCrossRealmPKOrderAwardCache = self.__LoadFileData("CrossRealmPKOrderAward", IPY_CrossRealmPKOrderAward)  | 
|         self.ipyCrossRealmPKOrderAwardLen = len(self.ipyCrossRealmPKOrderAwardCache)  | 
|         self.ipyCrossZoneCommCache = self.__LoadFileData("CrossZoneComm", IPY_CrossZoneComm)  | 
|         self.ipyCrossZoneCommLen = len(self.ipyCrossZoneCommCache)  | 
|         self.ipyCrossZonePKCache = self.__LoadFileData("CrossZonePK", IPY_CrossZonePK)  | 
|         self.ipyCrossZonePKLen = len(self.ipyCrossZonePKCache)  | 
|         self.ipyCrossPenglaiZoneMapCache = self.__LoadFileData("CrossPenglaiZoneMap", IPY_CrossPenglaiZoneMap)  | 
|         self.ipyCrossPenglaiZoneMapLen = len(self.ipyCrossPenglaiZoneMapCache)  | 
|         self.ipyGatherSoulCache = self.__LoadFileData("GatherSoul", IPY_GatherSoul)  | 
|         self.ipyGatherSoulLen = len(self.ipyGatherSoulCache)  | 
|         self.ipyGatherSoulCompoundCache = self.__LoadFileData("GatherSoulCompound", IPY_GatherSoulCompound)  | 
|         self.ipyGatherSoulCompoundLen = len(self.ipyGatherSoulCompoundCache)  | 
|         self.ipyGatherSoulAttrCache = self.__LoadFileData("GatherSoulAttr", IPY_GatherSoulAttr)  | 
|         self.ipyGatherSoulAttrLen = len(self.ipyGatherSoulAttrCache)  | 
|         self.ipyMagicWeaponOfKingCache = self.__LoadFileData("MagicWeaponOfKing", IPY_MagicWeaponOfKing)  | 
|         self.ipyMagicWeaponOfKingLen = len(self.ipyMagicWeaponOfKingCache)  | 
|         self.ipyCoatCache = self.__LoadFileData("Coat", IPY_Coat)  | 
|         self.ipyCoatLen = len(self.ipyCoatCache)  | 
|         self.ipyCoatChestUpCache = self.__LoadFileData("CoatChestUp", IPY_CoatChestUp)  | 
|         self.ipyCoatChestUpLen = len(self.ipyCoatChestUpCache)  | 
|         self.ipyActWeekPartyCache = self.__LoadFileData("ActWeekParty", IPY_ActWeekParty)  | 
|         self.ipyActWeekPartyLen = len(self.ipyActWeekPartyCache)  | 
|         self.ipyWeekPartyCache = self.__LoadFileData("WeekParty", IPY_WeekParty)  | 
|         self.ipyWeekPartyLen = len(self.ipyWeekPartyCache)  | 
|         self.ipyActLoginAwardCache = self.__LoadFileData("ActLoginAward", IPY_ActLoginAward)  | 
|         self.ipyActLoginAwardLen = len(self.ipyActLoginAwardCache)  | 
|         self.ipyLoginAwardCache = self.__LoadFileData("LoginAward", IPY_LoginAward)  | 
|         self.ipyLoginAwardLen = len(self.ipyLoginAwardCache)  | 
|         self.ipyZhuXianBossCache = self.__LoadFileData("ZhuXianBoss", IPY_ZhuXianBoss)  | 
|         self.ipyZhuXianBossLen = len(self.ipyZhuXianBossCache)  | 
|         self.ipyActFeastWeekPartyCache = self.__LoadFileData("ActFeastWeekParty", IPY_ActFeastWeekParty)  | 
|         self.ipyActFeastWeekPartyLen = len(self.ipyActFeastWeekPartyCache)  | 
|         self.ipyFeastWeekPartyCache = self.__LoadFileData("FeastWeekParty", IPY_FeastWeekParty)  | 
|         self.ipyFeastWeekPartyLen = len(self.ipyFeastWeekPartyCache)  | 
|         self.ipyNewAllPeoplePartyCache = self.__LoadFileData("NewAllPeopleParty", IPY_NewAllPeopleParty)  | 
|         self.ipyNewAllPeoplePartyLen = len(self.ipyNewAllPeoplePartyCache)  | 
|         self.ipyNewAllPeoplePartyAwardCache = self.__LoadFileData("NewAllPeoplePartyAward", IPY_NewAllPeoplePartyAward)  | 
|         self.ipyNewAllPeoplePartyAwardLen = len(self.ipyNewAllPeoplePartyAwardCache)  | 
|         self.ipyActLuckyTreasureCache = self.__LoadFileData("ActLuckyTreasure", IPY_ActLuckyTreasure)  | 
|         self.ipyActLuckyTreasureLen = len(self.ipyActLuckyTreasureCache)  | 
|         self.ipyLuckyTreasureTemplateCache = self.__LoadFileData("LuckyTreasureTemplate", IPY_LuckyTreasureTemplate)  | 
|         self.ipyLuckyTreasureTemplateLen = len(self.ipyLuckyTreasureTemplateCache)  | 
|         self.ipyMysteryShopCache = self.__LoadFileData("MysteryShop", IPY_MysteryShop)  | 
|         self.ipyMysteryShopLen = len(self.ipyMysteryShopCache)  | 
|         self.ipyEquipPlaceIndexMapCache = self.__LoadFileData("EquipPlaceIndexMap", IPY_EquipPlaceIndexMap)  | 
|         self.ipyEquipPlaceIndexMapLen = len(self.ipyEquipPlaceIndexMapCache)  | 
|         self.ipyEquipShenAttrCache = self.__LoadFileData("EquipShenAttr", IPY_EquipShenAttr)  | 
|         self.ipyEquipShenAttrLen = len(self.ipyEquipShenAttrCache)  | 
|         self.ipyEquipShenEvolveCache = self.__LoadFileData("EquipShenEvolve", IPY_EquipShenEvolve)  | 
|         self.ipyEquipShenEvolveLen = len(self.ipyEquipShenEvolveCache)  | 
|         self.ipyEquipStarUpCache = self.__LoadFileData("EquipStarUp", IPY_EquipStarUp)  | 
|         self.ipyEquipStarUpLen = len(self.ipyEquipStarUpCache)  | 
|         self.ipyEquipPlusEvolveCache = self.__LoadFileData("EquipPlusEvolve", IPY_EquipPlusEvolve)  | 
|         self.ipyEquipPlusEvolveLen = len(self.ipyEquipPlusEvolveCache)  | 
|         self.ipyFamilyBossAwardCache = self.__LoadFileData("FamilyBossAward", IPY_FamilyBossAward)  | 
|         self.ipyFamilyBossAwardLen = len(self.ipyFamilyBossAwardCache)  | 
|         self.ipyItemWashMaxCache = self.__LoadFileData("ItemWashMax", IPY_ItemWashMax)  | 
|         self.ipyItemWashMaxLen = len(self.ipyItemWashMaxCache)  | 
|         self.ipyHorsePetBossAwardCache = self.__LoadFileData("HorsePetBossAward", IPY_HorsePetBossAward)  | 
|         self.ipyHorsePetBossAwardLen = len(self.ipyHorsePetBossAwardCache)  | 
|         self.ipyFairyDomainCache = self.__LoadFileData("FairyDomain", IPY_FairyDomain)  | 
|         self.ipyFairyDomainLen = len(self.ipyFairyDomainCache)  | 
|         self.ipyFairyAdventuresCache = self.__LoadFileData("FairyAdventures", IPY_FairyAdventures)  | 
|         self.ipyFairyAdventuresLen = len(self.ipyFairyAdventuresCache)  | 
|         self.ipyFairyDomainAppointCache = self.__LoadFileData("FairyDomainAppoint", IPY_FairyDomainAppoint)  | 
|         self.ipyFairyDomainAppointLen = len(self.ipyFairyDomainAppointCache)  | 
|         self.ipyFBBuyBuffCache = self.__LoadFileData("FBBuyBuff", IPY_FBBuyBuff)  | 
|         self.ipyFBBuyBuffLen = len(self.ipyFBBuyBuffCache)  | 
|         self.ipySkillElementCache = self.__LoadFileData("SkillElement", IPY_SkillElement)  | 
|         self.ipySkillElementLen = len(self.ipySkillElementCache)  | 
|         self.ipySkyTowerCache = self.__LoadFileData("SkyTower", IPY_SkyTower)  | 
|         self.ipySkyTowerLen = len(self.ipySkyTowerCache)  | 
|         self.ipyLingGenEffectCache = self.__LoadFileData("LingGenEffect", IPY_LingGenEffect)  | 
|         self.ipyLingGenEffectLen = len(self.ipyLingGenEffectCache)  | 
|         self.ipyHorsePetSkinCache = self.__LoadFileData("HorsePetSkin", IPY_HorsePetSkin)  | 
|         self.ipyHorsePetSkinLen = len(self.ipyHorsePetSkinCache)  | 
|         self.ipyAssistThanksGiftCache = self.__LoadFileData("AssistThanksGift", IPY_AssistThanksGift)  | 
|         self.ipyAssistThanksGiftLen = len(self.ipyAssistThanksGiftCache)  | 
|         self.ipyHistoryRechargeAwardCache = self.__LoadFileData("HistoryRechargeAward", IPY_HistoryRechargeAward)  | 
|         self.ipyHistoryRechargeAwardLen = len(self.ipyHistoryRechargeAwardCache)  | 
|         Log("IPY_FuncConfig count=%s" % len(self.ipyFuncConfigDict))  | 
|         Log("IPY_DataMgr InitOK!")  | 
|         return  | 
|       | 
|     def __LoadFileData(self, tableName, Class):  | 
|         curPath = ChConfig.GetDBPath() + "\\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))  | 
|           | 
|         fileObj = open(curPath, 'rb')  | 
|         content = fileObj.read()  | 
|         fileObj.close()  | 
|           | 
|         md5_obj = hashlib.md5()  | 
|         md5_obj.update(content)  | 
|         newMD5Code = md5_obj.hexdigest()  | 
|         if tableName in self.fileMD5Dict:  | 
|             oldMD5Code = self.fileMD5Dict[tableName]  | 
|             if newMD5Code == oldMD5Code:  | 
|                 return getattr(self, "ipy%sCache" % tableName)  | 
|               | 
|             if 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')  | 
|         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)))  | 
|               | 
|             try:  | 
|                 indexKey = []  | 
|                 classObj = Class()  | 
|                 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)  | 
|                     setattr(classObj, "%s" % fieldName, attrValue)  | 
|                     if isIndex:  | 
|                         indexKey.append(attrValue)  | 
|                 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 tableName == "FuncConfig":  | 
|                 self.__LoadFuncConfigData(fieldList, rowList)  | 
|         if tableName != "FuncConfig":  | 
|             self.ipyDataIndexMap[tableName] = indexDict  | 
|         Log("LoadIpydata: %s, content count=%s" % (tableName, len(cacheList)))  | 
|         return cacheList  | 
|       | 
|     def __LoadFuncConfigData(self, fieldList, rowList):  | 
|         funcConfigObj = IPY_FuncConfig()  | 
|         key = rowList[0]  | 
|         funcConfigObj.Key = key  | 
|         for i, strValue in enumerate(rowList):  | 
|             if i == 0:  | 
|                 continue  | 
|             try:  | 
|                 fieldName = fieldList[i][1]  | 
|                 strValue = strValue.lstrip().rstrip()  | 
|                 if strValue.isdigit():  | 
|                     configValue = int(strValue)  | 
|                 elif (strValue.startswith("{") and strValue.endswith("}")) \  | 
|                     or (strValue.startswith("[") and strValue.endswith("]")) \  | 
|                     or (strValue.startswith("(") and strValue.endswith(")")):  | 
|                     configValue = eval(strValue)  | 
|                 elif "_" in strValue and type(self.__StrToDict(strValue)) == dict:  | 
|                     configValue = self.__StrToDict(strValue)  | 
|                 elif ChConfig.Def_Str_Montant in strValue:  | 
|                     configValue = eval("(%s,)" % strValue.replace(ChConfig.Def_Str_Montant, ","))  | 
|                 elif strValue in ["-", ""]:  | 
|                     configValue = ""  | 
|                 else:  | 
|                     configValue = self.__ToFloat(strValue)  | 
|             except BaseException:  | 
|                 ErrLog("SetIpyDataError: tableName=%s,key=%s,i=%s,value=%s" % ("FuncConfig", key, i, strValue))  | 
|                 raise  | 
|             setattr(funcConfigObj, fieldName, configValue)  | 
|         self.ipyFuncConfigDict[key] = funcConfigObj  | 
|         return  | 
|       | 
|     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 GetDienstgradCount(self): return self.ipyDienstgradLen  | 
|     def GetDienstgradByIndex(self, index): return self.ipyDienstgradCache[index]  | 
|     def GetRolePointCount(self): return self.ipyRolePointLen  | 
|     def GetRolePointByIndex(self, index): return self.ipyRolePointCache[index]  | 
|     def GetLingQiAttrCount(self): return self.ipyLingQiAttrLen  | 
|     def GetLingQiAttrByIndex(self, index): return self.ipyLingQiAttrCache[index]  | 
|     def GetRealmCount(self): return self.ipyRealmLen  | 
|     def GetRealmByIndex(self, index): return self.ipyRealmCache[index]  | 
|     def GetGodWeaponCount(self): return self.ipyGodWeaponLen  | 
|     def GetGodWeaponByIndex(self, index): return self.ipyGodWeaponCache[index]  | 
|     def GetFuncConfigCount(self): return self.ipyFuncConfigLen  | 
|     def GetFuncConfigByIndex(self, index): return self.ipyFuncConfigCache[index]  | 
|     def GetFuncOpenLVCount(self): return self.ipyFuncOpenLVLen  | 
|     def GetFuncOpenLVByIndex(self, index): return self.ipyFuncOpenLVCache[index]  | 
|     def GetItemCompoundCount(self): return self.ipyItemCompoundLen  | 
|     def GetItemCompoundByIndex(self, index): return self.ipyItemCompoundCache[index]  | 
|     def GetItemPlusCount(self): return self.ipyItemPlusLen  | 
|     def GetItemPlusByIndex(self, index): return self.ipyItemPlusCache[index]  | 
|     def GetItemPlusMasterCount(self): return self.ipyItemPlusMasterLen  | 
|     def GetItemPlusMasterByIndex(self, index): return self.ipyItemPlusMasterCache[index]  | 
|     def GetItemPlusMaxCount(self): return self.ipyItemPlusMaxLen  | 
|     def GetItemPlusMaxByIndex(self, index): return self.ipyItemPlusMaxCache[index]  | 
|     def GetRoleEquipStarsCount(self): return self.ipyRoleEquipStarsLen  | 
|     def GetRoleEquipStarsByIndex(self, index): return self.ipyRoleEquipStarsCache[index]  | 
|     def GetEquipLegendAttrCountCount(self): return self.ipyEquipLegendAttrCountLen  | 
|     def GetEquipLegendAttrCountByIndex(self, index): return self.ipyEquipLegendAttrCountCache[index]  | 
|     def GetEquipLegendAttrTypeCount(self): return self.ipyEquipLegendAttrTypeLen  | 
|     def GetEquipLegendAttrTypeByIndex(self, index): return self.ipyEquipLegendAttrTypeCache[index]  | 
|     def GetEquipLegendAttrLibCount(self): return self.ipyEquipLegendAttrLibLen  | 
|     def GetEquipLegendAttrLibByIndex(self, index): return self.ipyEquipLegendAttrLibCache[index]  | 
|     def GetEquipLegendAttrValueCount(self): return self.ipyEquipLegendAttrValueLen  | 
|     def GetEquipLegendAttrValueByIndex(self, index): return self.ipyEquipLegendAttrValueCache[index]  | 
|     def GetDogzCount(self): return self.ipyDogzLen  | 
|     def GetDogzByIndex(self, index): return self.ipyDogzCache[index]  | 
|     def GetDogzEquipPlusCount(self): return self.ipyDogzEquipPlusLen  | 
|     def GetDogzEquipPlusByIndex(self, index): return self.ipyDogzEquipPlusCache[index]  | 
|     def GetRuneCount(self): return self.ipyRuneLen  | 
|     def GetRuneByIndex(self, index): return self.ipyRuneCache[index]  | 
|     def GetEquipWashCount(self): return self.ipyEquipWashLen  | 
|     def GetEquipWashByIndex(self, index): return self.ipyEquipWashCache[index]  | 
|     def GetAttrFruitCount(self): return self.ipyAttrFruitLen  | 
|     def GetAttrFruitByIndex(self, index): return self.ipyAttrFruitCache[index]  | 
|     def GetPetInfoCount(self): return self.ipyPetInfoLen  | 
|     def GetPetInfoByIndex(self, index): return self.ipyPetInfoCache[index]  | 
|     def GetEquipDecomposeCount(self): return self.ipyEquipDecomposeLen  | 
|     def GetEquipDecomposeByIndex(self, index): return self.ipyEquipDecomposeCache[index]  | 
|     def GetPetClassCostCount(self): return self.ipyPetClassCostLen  | 
|     def GetPetClassCostByIndex(self, index): return self.ipyPetClassCostCache[index]  | 
|     def GetPetEatEquipCount(self): return self.ipyPetEatEquipLen  | 
|     def GetPetEatEquipByIndex(self, index): return self.ipyPetEatEquipCache[index]  | 
|     def GetHorseLVUpCount(self): return self.ipyHorseLVUpLen  | 
|     def GetHorseLVUpByIndex(self, index): return self.ipyHorseLVUpCache[index]  | 
|     def GetHorseSkinPlusCount(self): return self.ipyHorseSkinPlusLen  | 
|     def GetHorseSkinPlusByIndex(self, index): return self.ipyHorseSkinPlusCache[index]  | 
|     def GetPlayerLVCount(self): return self.ipyPlayerLVLen  | 
|     def GetPlayerLVByIndex(self, index): return self.ipyPlayerLVCache[index]  | 
|     def GetGMAttrCount(self): return self.ipyGMAttrLen  | 
|     def GetGMAttrByIndex(self, index): return self.ipyGMAttrCache[index]  | 
|     def GetNPCStrengthenCount(self): return self.ipyNPCStrengthenLen  | 
|     def GetNPCStrengthenByIndex(self, index): return self.ipyNPCStrengthenCache[index]  | 
|     def GetNPCTimeLostHPCount(self): return self.ipyNPCTimeLostHPLen  | 
|     def GetNPCTimeLostHPByIndex(self, index): return self.ipyNPCTimeLostHPCache[index]  | 
|     def GetEquipSuitAttrCount(self): return self.ipyEquipSuitAttrLen  | 
|     def GetEquipSuitAttrByIndex(self, index): return self.ipyEquipSuitAttrCache[index]  | 
|     def GetWingRefineAttrCount(self): return self.ipyWingRefineAttrLen  | 
|     def GetWingRefineAttrByIndex(self, index): return self.ipyWingRefineAttrCache[index]  | 
|     def GetWingRefineExpCount(self): return self.ipyWingRefineExpLen  | 
|     def GetWingRefineExpByIndex(self, index): return self.ipyWingRefineExpCache[index]  | 
|     def GetFamilyTechCount(self): return self.ipyFamilyTechLen  | 
|     def GetFamilyTechByIndex(self, index): return self.ipyFamilyTechCache[index]  | 
|     def GetFightPowerParamCount(self): return self.ipyFightPowerParamLen  | 
|     def GetFightPowerParamByIndex(self, index): return self.ipyFightPowerParamCache[index]  | 
|     def GetNPCDropItemCount(self): return self.ipyNPCDropItemLen  | 
|     def GetNPCDropItemByIndex(self, index): return self.ipyNPCDropItemCache[index]  | 
|     def GetRuneTowerCount(self): return self.ipyRuneTowerLen  | 
|     def GetRuneTowerByIndex(self, index): return self.ipyRuneTowerCache[index]  | 
|     def GetChinMapCount(self): return self.ipyChinMapLen  | 
|     def GetChinMapByIndex(self, index): return self.ipyChinMapCache[index]  | 
|     def GetFBFuncCount(self): return self.ipyFBFuncLen  | 
|     def GetFBFuncByIndex(self, index): return self.ipyFBFuncCache[index]  | 
|     def GetFBLineCount(self): return self.ipyFBLineLen  | 
|     def GetFBLineByIndex(self, index): return self.ipyFBLineCache[index]  | 
|     def GetFBHelpBattleCount(self): return self.ipyFBHelpBattleLen  | 
|     def GetFBHelpBattleByIndex(self, index): return self.ipyFBHelpBattleCache[index]  | 
|     def GetNPCCustomRefreshCount(self): return self.ipyNPCCustomRefreshLen  | 
|     def GetNPCCustomRefreshByIndex(self, index): return self.ipyNPCCustomRefreshCache[index]  | 
|     def GetDailyActionCount(self): return self.ipyDailyActionLen  | 
|     def GetDailyActionByIndex(self, index): return self.ipyDailyActionCache[index]  | 
|     def GetEquipGSParamCount(self): return self.ipyEquipGSParamLen  | 
|     def GetEquipGSParamByIndex(self, index): return self.ipyEquipGSParamCache[index]  | 
|     def GetSuccessCount(self): return self.ipySuccessLen  | 
|     def GetSuccessByIndex(self, index): return self.ipySuccessCache[index]  | 
|     def GetTreasureCount(self): return self.ipyTreasureLen  | 
|     def GetTreasureByIndex(self, index): return self.ipyTreasureCache[index]  | 
|     def GetTreasureUpCount(self): return self.ipyTreasureUpLen  | 
|     def GetTreasureUpByIndex(self, index): return self.ipyTreasureUpCache[index]  | 
|     def GetContineSignAwardCount(self): return self.ipyContineSignAwardLen  | 
|     def GetContineSignAwardByIndex(self, index): return self.ipyContineSignAwardCache[index]  | 
|     def GetSignAwardCount(self): return self.ipySignAwardLen  | 
|     def GetSignAwardByIndex(self, index): return self.ipySignAwardCache[index]  | 
|     def GetVIPAwardCount(self): return self.ipyVIPAwardLen  | 
|     def GetVIPAwardByIndex(self, index): return self.ipyVIPAwardCache[index]  | 
|     def GetAppointItemCount(self): return self.ipyAppointItemLen  | 
|     def GetAppointItemByIndex(self, index): return self.ipyAppointItemCache[index]  | 
|     def GetAuctionItemCount(self): return self.ipyAuctionItemLen  | 
|     def GetAuctionItemByIndex(self, index): return self.ipyAuctionItemCache[index]  | 
|     def GetVipPrivilegeCount(self): return self.ipyVipPrivilegeLen  | 
|     def GetVipPrivilegeByIndex(self, index): return self.ipyVipPrivilegeCache[index]  | 
|     def GetStoreCount(self): return self.ipyStoreLen  | 
|     def GetStoreByIndex(self, index): return self.ipyStoreCache[index]  | 
|     def GetActSpringSaleCount(self): return self.ipyActSpringSaleLen  | 
|     def GetActSpringSaleByIndex(self, index): return self.ipyActSpringSaleCache[index]  | 
|     def GetDailyQuestCount(self): return self.ipyDailyQuestLen  | 
|     def GetDailyQuestByIndex(self, index): return self.ipyDailyQuestCache[index]  | 
|     def GetDailyLivenessRewardCount(self): return self.ipyDailyLivenessRewardLen  | 
|     def GetDailyLivenessRewardByIndex(self, index): return self.ipyDailyLivenessRewardCache[index]  | 
|     def GetActivityPlaceRewardCount(self): return self.ipyActivityPlaceRewardLen  | 
|     def GetActivityPlaceRewardByIndex(self, index): return self.ipyActivityPlaceRewardCache[index]  | 
|     def GetRefineStoveCount(self): return self.ipyRefineStoveLen  | 
|     def GetRefineStoveByIndex(self, index): return self.ipyRefineStoveCache[index]  | 
|     def GetAlchemyCount(self): return self.ipyAlchemyLen  | 
|     def GetAlchemyByIndex(self, index): return self.ipyAlchemyCache[index]  | 
|     def GetAlchemyResultCount(self): return self.ipyAlchemyResultLen  | 
|     def GetAlchemyResultByIndex(self, index): return self.ipyAlchemyResultCache[index]  | 
|     def GetBOSSInfoCount(self): return self.ipyBOSSInfoLen  | 
|     def GetBOSSInfoByIndex(self, index): return self.ipyBOSSInfoCache[index]  | 
|     def GetBOSSFirstKillCount(self): return self.ipyBOSSFirstKillLen  | 
|     def GetBOSSFirstKillByIndex(self, index): return self.ipyBOSSFirstKillCache[index]  | 
|     def GetElderGodAreaCount(self): return self.ipyElderGodAreaLen  | 
|     def GetElderGodAreaByIndex(self, index): return self.ipyElderGodAreaCache[index]  | 
|     def GetPersonalBossCount(self): return self.ipyPersonalBossLen  | 
|     def GetPersonalBossByIndex(self, index): return self.ipyPersonalBossCache[index]  | 
|     def GetFamilyActivityCount(self): return self.ipyFamilyActivityLen  | 
|     def GetFamilyActivityByIndex(self, index): return self.ipyFamilyActivityCache[index]  | 
|     def GetFamilyRedPackCount(self): return self.ipyFamilyRedPackLen  | 
|     def GetFamilyRedPackByIndex(self, index): return self.ipyFamilyRedPackCache[index]  | 
|     def GetActFeastRedPacketSuccCount(self): return self.ipyActFeastRedPacketSuccLen  | 
|     def GetActFeastRedPacketSuccByIndex(self, index): return self.ipyActFeastRedPacketSuccCache[index]  | 
|     def GetNPCShowCount(self): return self.ipyNPCShowLen  | 
|     def GetNPCShowByIndex(self, index): return self.ipyNPCShowCache[index]  | 
|     def GetSealDemonCount(self): return self.ipySealDemonLen  | 
|     def GetSealDemonByIndex(self, index): return self.ipySealDemonCache[index]  | 
|     def GetFbEncourageCount(self): return self.ipyFbEncourageLen  | 
|     def GetFbEncourageByIndex(self, index): return self.ipyFbEncourageCache[index]  | 
|     def GetMapRefreshNPCCount(self): return self.ipyMapRefreshNPCLen  | 
|     def GetMapRefreshNPCByIndex(self, index): return self.ipyMapRefreshNPCCache[index]  | 
|     def GetRuneCompoundCount(self): return self.ipyRuneCompoundLen  | 
|     def GetRuneCompoundByIndex(self, index): return self.ipyRuneCompoundCache[index]  | 
|     def GetResourcesBackCount(self): return self.ipyResourcesBackLen  | 
|     def GetResourcesBackByIndex(self, index): return self.ipyResourcesBackCache[index]  | 
|     def GetCollectNPCCount(self): return self.ipyCollectNPCLen  | 
|     def GetCollectNPCByIndex(self, index): return self.ipyCollectNPCCache[index]  | 
|     def GetTreasureNPCCount(self): return self.ipyTreasureNPCLen  | 
|     def GetTreasureNPCByIndex(self, index): return self.ipyTreasureNPCCache[index]  | 
|     def GetChestsCount(self): return self.ipyChestsLen  | 
|     def GetChestsByIndex(self, index): return self.ipyChestsCache[index]  | 
|     def GetChestsAwardCount(self): return self.ipyChestsAwardLen  | 
|     def GetChestsAwardByIndex(self, index): return self.ipyChestsAwardCache[index]  | 
|     def GetVIPKillNPCCount(self): return self.ipyVIPKillNPCLen  | 
|     def GetVIPKillNPCByIndex(self, index): return self.ipyVIPKillNPCCache[index]  | 
|     def GetOSCBillRankAwardCount(self): return self.ipyOSCBillRankAwardLen  | 
|     def GetOSCBillRankAwardByIndex(self, index): return self.ipyOSCBillRankAwardCache[index]  | 
|     def GetOSCBillTagAwardCount(self): return self.ipyOSCBillTagAwardLen  | 
|     def GetOSCBillTagAwardByIndex(self, index): return self.ipyOSCBillTagAwardCache[index]  | 
|     def GetLoginDayAwardCount(self): return self.ipyLoginDayAwardLen  | 
|     def GetLoginDayAwardByIndex(self, index): return self.ipyLoginDayAwardCache[index]  | 
|     def GetOnlineAwardCount(self): return self.ipyOnlineAwardLen  | 
|     def GetOnlineAwardByIndex(self, index): return self.ipyOnlineAwardCache[index]  | 
|     def GetSpringSaleCount(self): return self.ipySpringSaleLen  | 
|     def GetSpringSaleByIndex(self, index): return self.ipySpringSaleCache[index]  | 
|     def GetOrderInfoCount(self): return self.ipyOrderInfoLen  | 
|     def GetOrderInfoByIndex(self, index): return self.ipyOrderInfoCache[index]  | 
|     def GetCTGCount(self): return self.ipyCTGLen  | 
|     def GetCTGByIndex(self, index): return self.ipyCTGCache[index]  | 
|     def GetFirstGoldCount(self): return self.ipyFirstGoldLen  | 
|     def GetFirstGoldByIndex(self, index): return self.ipyFirstGoldCache[index]  | 
|     def GetLVAwardCount(self): return self.ipyLVAwardLen  | 
|     def GetLVAwardByIndex(self, index): return self.ipyLVAwardCache[index]  | 
|     def GetInvestCount(self): return self.ipyInvestLen  | 
|     def GetInvestByIndex(self, index): return self.ipyInvestCache[index]  | 
|     def GetXBXZCount(self): return self.ipyXBXZLen  | 
|     def GetXBXZByIndex(self, index): return self.ipyXBXZCache[index]  | 
|     def GetTreasureHouseCount(self): return self.ipyTreasureHouseLen  | 
|     def GetTreasureHouseByIndex(self, index): return self.ipyTreasureHouseCache[index]  | 
|     def GetFreeGoodsCount(self): return self.ipyFreeGoodsLen  | 
|     def GetFreeGoodsByIndex(self, index): return self.ipyFreeGoodsCache[index]  | 
|     def GetActFlashGiftbagCount(self): return self.ipyActFlashGiftbagLen  | 
|     def GetActFlashGiftbagByIndex(self, index): return self.ipyActFlashGiftbagCache[index]  | 
|     def GetFlashGiftbagCount(self): return self.ipyFlashGiftbagLen  | 
|     def GetFlashGiftbagByIndex(self, index): return self.ipyFlashGiftbagCache[index]  | 
|     def GetActExpRateCount(self): return self.ipyActExpRateLen  | 
|     def GetActExpRateByIndex(self, index): return self.ipyActExpRateCache[index]  | 
|     def GetActCostRebateCount(self): return self.ipyActCostRebateLen  | 
|     def GetActCostRebateByIndex(self, index): return self.ipyActCostRebateCache[index]  | 
|     def GetCostRebateTemplateCount(self): return self.ipyCostRebateTemplateLen  | 
|     def GetCostRebateTemplateByIndex(self, index): return self.ipyCostRebateTemplateCache[index]  | 
|     def GetActBossRebornCount(self): return self.ipyActBossRebornLen  | 
|     def GetActBossRebornByIndex(self, index): return self.ipyActBossRebornCache[index]  | 
|     def GetBossRebornCount(self): return self.ipyBossRebornLen  | 
|     def GetBossRebornByIndex(self, index): return self.ipyBossRebornCache[index]  | 
|     def GetActRealmPointCount(self): return self.ipyActRealmPointLen  | 
|     def GetActRealmPointByIndex(self, index): return self.ipyActRealmPointCache[index]  | 
|     def GetTrialExchangeCount(self): return self.ipyTrialExchangeLen  | 
|     def GetTrialExchangeByIndex(self, index): return self.ipyTrialExchangeCache[index]  | 
|     def GetAllPeoplePartyCount(self): return self.ipyAllPeoplePartyLen  | 
|     def GetAllPeoplePartyByIndex(self, index): return self.ipyAllPeoplePartyCache[index]  | 
|     def GetAllPeoplePartyAwardCount(self): return self.ipyAllPeoplePartyAwardLen  | 
|     def GetAllPeoplePartyAwardByIndex(self, index): return self.ipyAllPeoplePartyAwardCache[index]  | 
|     def GetMapEventPointCount(self): return self.ipyMapEventPointLen  | 
|     def GetMapEventPointByIndex(self, index): return self.ipyMapEventPointCache[index]  | 
|     def GetTalentSkillCount(self): return self.ipyTalentSkillLen  | 
|     def GetTalentSkillByIndex(self, index): return self.ipyTalentSkillCache[index]  | 
|     def GetActFlashSaleCount(self): return self.ipyActFlashSaleLen  | 
|     def GetActFlashSaleByIndex(self, index): return self.ipyActFlashSaleCache[index]  | 
|     def GetActWishingWellCount(self): return self.ipyActWishingWellLen  | 
|     def GetActWishingWellByIndex(self, index): return self.ipyActWishingWellCache[index]  | 
|     def GetWishingWellCount(self): return self.ipyWishingWellLen  | 
|     def GetWishingWellByIndex(self, index): return self.ipyWishingWellCache[index]  | 
|     def GetFunctionForecastCount(self): return self.ipyFunctionForecastLen  | 
|     def GetFunctionForecastByIndex(self, index): return self.ipyFunctionForecastCache[index]  | 
|     def GetChatBubbleBoxCount(self): return self.ipyChatBubbleBoxLen  | 
|     def GetChatBubbleBoxByIndex(self, index): return self.ipyChatBubbleBoxCache[index]  | 
|     def GetActTotalRechargeCount(self): return self.ipyActTotalRechargeLen  | 
|     def GetActTotalRechargeByIndex(self, index): return self.ipyActTotalRechargeCache[index]  | 
|     def GetTotalRechargeTemplateCount(self): return self.ipyTotalRechargeTemplateLen  | 
|     def GetTotalRechargeTemplateByIndex(self, index): return self.ipyTotalRechargeTemplateCache[index]  | 
|     def GetMagicWeaponFBCount(self): return self.ipyMagicWeaponFBLen  | 
|     def GetMagicWeaponFBByIndex(self, index): return self.ipyMagicWeaponFBCache[index]  | 
|     def GetIceLodeStarAwardCount(self): return self.ipyIceLodeStarAwardLen  | 
|     def GetIceLodeStarAwardByIndex(self, index): return self.ipyIceLodeStarAwardCache[index]  | 
|     def GetCrossRealmPKDanCount(self): return self.ipyCrossRealmPKDanLen  | 
|     def GetCrossRealmPKDanByIndex(self, index): return self.ipyCrossRealmPKDanCache[index]  | 
|     def GetCrossRealmPKDanAwardCount(self): return self.ipyCrossRealmPKDanAwardLen  | 
|     def GetCrossRealmPKDanAwardByIndex(self, index): return self.ipyCrossRealmPKDanAwardCache[index]  | 
|     def GetCrossRealmPKOrderAwardCount(self): return self.ipyCrossRealmPKOrderAwardLen  | 
|     def GetCrossRealmPKOrderAwardByIndex(self, index): return self.ipyCrossRealmPKOrderAwardCache[index]  | 
|     def GetCrossZoneCommCount(self): return self.ipyCrossZoneCommLen  | 
|     def GetCrossZoneCommByIndex(self, index): return self.ipyCrossZoneCommCache[index]  | 
|     def GetCrossZonePKCount(self): return self.ipyCrossZonePKLen  | 
|     def GetCrossZonePKByIndex(self, index): return self.ipyCrossZonePKCache[index]  | 
|     def GetCrossPenglaiZoneMapCount(self): return self.ipyCrossPenglaiZoneMapLen  | 
|     def GetCrossPenglaiZoneMapByIndex(self, index): return self.ipyCrossPenglaiZoneMapCache[index]  | 
|     def GetGatherSoulCount(self): return self.ipyGatherSoulLen  | 
|     def GetGatherSoulByIndex(self, index): return self.ipyGatherSoulCache[index]  | 
|     def GetGatherSoulCompoundCount(self): return self.ipyGatherSoulCompoundLen  | 
|     def GetGatherSoulCompoundByIndex(self, index): return self.ipyGatherSoulCompoundCache[index]  | 
|     def GetGatherSoulAttrCount(self): return self.ipyGatherSoulAttrLen  | 
|     def GetGatherSoulAttrByIndex(self, index): return self.ipyGatherSoulAttrCache[index]  | 
|     def GetMagicWeaponOfKingCount(self): return self.ipyMagicWeaponOfKingLen  | 
|     def GetMagicWeaponOfKingByIndex(self, index): return self.ipyMagicWeaponOfKingCache[index]  | 
|     def GetCoatCount(self): return self.ipyCoatLen  | 
|     def GetCoatByIndex(self, index): return self.ipyCoatCache[index]  | 
|     def GetCoatChestUpCount(self): return self.ipyCoatChestUpLen  | 
|     def GetCoatChestUpByIndex(self, index): return self.ipyCoatChestUpCache[index]  | 
|     def GetActWeekPartyCount(self): return self.ipyActWeekPartyLen  | 
|     def GetActWeekPartyByIndex(self, index): return self.ipyActWeekPartyCache[index]  | 
|     def GetWeekPartyCount(self): return self.ipyWeekPartyLen  | 
|     def GetWeekPartyByIndex(self, index): return self.ipyWeekPartyCache[index]  | 
|     def GetActLoginAwardCount(self): return self.ipyActLoginAwardLen  | 
|     def GetActLoginAwardByIndex(self, index): return self.ipyActLoginAwardCache[index]  | 
|     def GetLoginAwardCount(self): return self.ipyLoginAwardLen  | 
|     def GetLoginAwardByIndex(self, index): return self.ipyLoginAwardCache[index]  | 
|     def GetZhuXianBossCount(self): return self.ipyZhuXianBossLen  | 
|     def GetZhuXianBossByIndex(self, index): return self.ipyZhuXianBossCache[index]  | 
|     def GetActFeastWeekPartyCount(self): return self.ipyActFeastWeekPartyLen  | 
|     def GetActFeastWeekPartyByIndex(self, index): return self.ipyActFeastWeekPartyCache[index]  | 
|     def GetFeastWeekPartyCount(self): return self.ipyFeastWeekPartyLen  | 
|     def GetFeastWeekPartyByIndex(self, index): return self.ipyFeastWeekPartyCache[index]  | 
|     def GetNewAllPeoplePartyCount(self): return self.ipyNewAllPeoplePartyLen  | 
|     def GetNewAllPeoplePartyByIndex(self, index): return self.ipyNewAllPeoplePartyCache[index]  | 
|     def GetNewAllPeoplePartyAwardCount(self): return self.ipyNewAllPeoplePartyAwardLen  | 
|     def GetNewAllPeoplePartyAwardByIndex(self, index): return self.ipyNewAllPeoplePartyAwardCache[index]  | 
|     def GetActLuckyTreasureCount(self): return self.ipyActLuckyTreasureLen  | 
|     def GetActLuckyTreasureByIndex(self, index): return self.ipyActLuckyTreasureCache[index]  | 
|     def GetLuckyTreasureTemplateCount(self): return self.ipyLuckyTreasureTemplateLen  | 
|     def GetLuckyTreasureTemplateByIndex(self, index): return self.ipyLuckyTreasureTemplateCache[index]  | 
|     def GetMysteryShopCount(self): return self.ipyMysteryShopLen  | 
|     def GetMysteryShopByIndex(self, index): return self.ipyMysteryShopCache[index]  | 
|     def GetEquipPlaceIndexMapCount(self): return self.ipyEquipPlaceIndexMapLen  | 
|     def GetEquipPlaceIndexMapByIndex(self, index): return self.ipyEquipPlaceIndexMapCache[index]  | 
|     def GetEquipShenAttrCount(self): return self.ipyEquipShenAttrLen  | 
|     def GetEquipShenAttrByIndex(self, index): return self.ipyEquipShenAttrCache[index]  | 
|     def GetEquipShenEvolveCount(self): return self.ipyEquipShenEvolveLen  | 
|     def GetEquipShenEvolveByIndex(self, index): return self.ipyEquipShenEvolveCache[index]  | 
|     def GetEquipStarUpCount(self): return self.ipyEquipStarUpLen  | 
|     def GetEquipStarUpByIndex(self, index): return self.ipyEquipStarUpCache[index]  | 
|     def GetEquipPlusEvolveCount(self): return self.ipyEquipPlusEvolveLen  | 
|     def GetEquipPlusEvolveByIndex(self, index): return self.ipyEquipPlusEvolveCache[index]  | 
|     def GetFamilyBossAwardCount(self): return self.ipyFamilyBossAwardLen  | 
|     def GetFamilyBossAwardByIndex(self, index): return self.ipyFamilyBossAwardCache[index]  | 
|     def GetItemWashMaxCount(self): return self.ipyItemWashMaxLen  | 
|     def GetItemWashMaxByIndex(self, index): return self.ipyItemWashMaxCache[index]  | 
|     def GetHorsePetBossAwardCount(self): return self.ipyHorsePetBossAwardLen  | 
|     def GetHorsePetBossAwardByIndex(self, index): return self.ipyHorsePetBossAwardCache[index]  | 
|     def GetFairyDomainCount(self): return self.ipyFairyDomainLen  | 
|     def GetFairyDomainByIndex(self, index): return self.ipyFairyDomainCache[index]  | 
|     def GetFairyAdventuresCount(self): return self.ipyFairyAdventuresLen  | 
|     def GetFairyAdventuresByIndex(self, index): return self.ipyFairyAdventuresCache[index]  | 
|     def GetFairyDomainAppointCount(self): return self.ipyFairyDomainAppointLen  | 
|     def GetFairyDomainAppointByIndex(self, index): return self.ipyFairyDomainAppointCache[index]  | 
|     def GetFBBuyBuffCount(self): return self.ipyFBBuyBuffLen  | 
|     def GetFBBuyBuffByIndex(self, index): return self.ipyFBBuyBuffCache[index]  | 
|     def GetSkillElementCount(self): return self.ipySkillElementLen  | 
|     def GetSkillElementByIndex(self, index): return self.ipySkillElementCache[index]  | 
|     def GetSkyTowerCount(self): return self.ipySkyTowerLen  | 
|     def GetSkyTowerByIndex(self, index): return self.ipySkyTowerCache[index]  | 
|     def GetLingGenEffectCount(self): return self.ipyLingGenEffectLen  | 
|     def GetLingGenEffectByIndex(self, index): return self.ipyLingGenEffectCache[index]  | 
|     def GetHorsePetSkinCount(self): return self.ipyHorsePetSkinLen  | 
|     def GetHorsePetSkinByIndex(self, index): return self.ipyHorsePetSkinCache[index]  | 
|     def GetAssistThanksGiftCount(self): return self.ipyAssistThanksGiftLen  | 
|     def GetAssistThanksGiftByIndex(self, index): return self.ipyAssistThanksGiftCache[index]  | 
|     def GetHistoryRechargeAwardCount(self): return self.ipyHistoryRechargeAwardLen  | 
|     def GetHistoryRechargeAwardByIndex(self, index): return self.ipyHistoryRechargeAwardCache[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²éѯֵ, ¡ )  | 
|     '''  | 
|     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 º¯ÊýÏàͬ  | 
|     '''  | 
|     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 º¯ÊýÏàͬ, Ö»ÊÇÕÒ²»µ½Êý¾Ýʱ²»»áÊä³öÈÕÖ¾  | 
|     '''  | 
|     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 º¯ÊýÏàͬ, Ö»ÊÇÕÒ²»µ½Êý¾Ýʱ²»»áÊä³öÈÕÖ¾  | 
|     '''  | 
|     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£¬ÓÐÊý¾Ýʱ¸ù¾Ý²ÎÊýÊÇ·ñ·µ»ØÁÐ±í·µ»Ø¶ÔÓ¦µÄÊý¾ÝʵÀý»òÊý¾ÝʵÀýÁÐ±í  | 
|     '''  | 
|     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, "%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ʵÀý  | 
|     '''  | 
|     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  | 
|     '''  | 
|     if key not in IPYData.ipyFuncConfigDict:  | 
|         ErrLog("Can not found ipyData FuncConfig key=%s!" % key)  | 
|         return ""  | 
|     cfgObj = IPYData.ipyFuncConfigDict[key]  | 
|     if index == 1:  | 
|         return cfgObj.Numerical1  | 
|     if index == 2:  | 
|         return cfgObj.Numerical2  | 
|     if index == 3:  | 
|         return cfgObj.Numerical3  | 
|     if index == 4:  | 
|         return cfgObj.Numerical4  | 
|     if index == 5:  | 
|         return cfgObj.Numerical5  | 
|     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µÄÁÐ±í¡¢×Öµä½á¹¹µÄ»°¿ÉʹÓÃÉÏÃæµÄº¯Êý  | 
|     ²»¹ýΪÁËͳһ£¬½¨Ò鹦ÄÜÅäÖñí¶ÁÁÐ±í¡¢×Öµäʱ¶¼Ê¹Óøú¯Êý  | 
|     '''  | 
|     if key not in IPYData.ipyFuncConfigDict:  | 
|         ErrLog("Can not found ipyData FuncConfig key=%s!" % key)  | 
|         return defaultValue  | 
|     cfgObj = IPYData.ipyFuncConfigDict[key]  | 
|     if index == 1:  | 
|         curConfig = cfgObj.Numerical1  | 
|     elif index == 2:  | 
|         curConfig = cfgObj.Numerical2  | 
|     elif index == 3:  | 
|         curConfig = cfgObj.Numerical3  | 
|     elif index == 4:  | 
|         curConfig = cfgObj.Numerical4  | 
|     elif index == 5:  | 
|         curConfig = cfgObj.Numerical5  | 
|     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 Êý¾ÝʵÀý  | 
|     '''  | 
|     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, "%s" % keyName)  | 
|     if keyValue < lowValue:  | 
|         return  | 
|       | 
|     high = len(dataList) - 1  | 
|     highData = dataList[high]  | 
|     highValue = getattr(highData, "%s" % keyName)  | 
|     if keyValue >= highValue:  | 
|         return highData  | 
|       | 
|     near = low + int((high - low) * (keyValue - lowValue)/(highValue - lowValue))  | 
|       | 
|     nearData = dataList[near]  | 
|     nearValue = getattr(nearData, "%s" % keyName)  | 
|       | 
|     if keyValue < nearValue:  | 
|         for i in xrange(near - 1, low - 1, -1):  | 
|             nearData = dataList[i]  | 
|             nearValue = getattr(nearData, "%s" % keyName)  | 
|             if nearValue <= keyValue:  | 
|                 return nearData  | 
|               | 
|     elif keyValue > nearValue:  | 
|         for i in xrange(near + 1, high + 1):  | 
|             nearData = dataList[i]  | 
|             nearValue = getattr(nearData, "%s" % keyName)  | 
|             if nearValue > keyValue:  | 
|                 return dataList[i - 1]  | 
|               | 
|     return nearData  | 
|   |