#!/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),  
 | 
                        ),  
 | 
  
 | 
                "Realm":(  
 | 
                        ("WORD", "Lv", 1),  
 | 
                        ("BYTE", "IsBigRealm", 0),  
 | 
                        ("DWORD", "NeedPoint", 0),  
 | 
                        ("DWORD", "NeedItemID", 0),  
 | 
                        ("WORD", "NeedItemCnt", 0),  
 | 
                        ("dict", "NeedActiveTreasure", 0),  
 | 
                        ("list", "AddAttrType", 0),  
 | 
                        ("list", "AddAttrNum", 0),  
 | 
                        ("DWORD", "BossID", 0),  
 | 
                        ("dict", "SitTime", 0),  
 | 
                        ("dict", "TeamAward", 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),  
 | 
                        ),  
 | 
  
 | 
                "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),  
 | 
                        ("DWORD", "AddExp", 0),  
 | 
                        ("DWORD", "TotalExp", 0),  
 | 
                        ),  
 | 
  
 | 
                "ItemPlusMax":(  
 | 
                        ("BYTE", "Type", 1),  
 | 
                        ("BYTE", "ItemRank", 1),  
 | 
                        ("BYTE", "ItemColor", 1),  
 | 
                        ("WORD", "LevelMax", 0),  
 | 
                        ),  
 | 
  
 | 
                "ItemPlusSumAttr":(  
 | 
                        ("WORD", "PlusCntNeed", 1),  
 | 
                        ("list", "AttrType", 0),  
 | 
                        ("list", "AttrValue", 0),  
 | 
                        ),  
 | 
  
 | 
                "RoleEquipStars":(  
 | 
                        ("BYTE", "StarsNeed", 1),  
 | 
                        ("list", "AttrType", 0),  
 | 
                        ("list", "AttrValue", 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),  
 | 
                        ),  
 | 
  
 | 
                "EquipWashSpec":(  
 | 
                        ("BYTE", "WashTypeNeed", 1),  
 | 
                        ("BYTE", "WashLVNeed", 1),  
 | 
                        ("list", "AddAttrType", 0),  
 | 
                        ("list", "AddAttrValue", 0),  
 | 
                        ),  
 | 
  
 | 
                "AttrFruit":(  
 | 
                        ("DWORD", "ID", 1),  
 | 
                        ("BYTE", "FuncID", 0),  
 | 
                        ("WORD", "MaxUseCnt", 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),  
 | 
                        ),  
 | 
  
 | 
                "Horse":(  
 | 
                        ("DWORD", "HorseID", 1),  
 | 
                        ("DWORD", "ItemID", 0),  
 | 
                        ("DWORD", "UnlockItemID", 0),  
 | 
                        ("BYTE", "UnlockItemCnt", 0),  
 | 
                        ("BYTE", "InitLV", 0),  
 | 
                        ("BYTE", "MaxLV", 0),  
 | 
                        ("BYTE", "UseNeedRank", 0),  
 | 
                        ("BYTE", "Quality", 0),  
 | 
                        ("DWORD", "InitFightPower", 0),  
 | 
                        ("char", "UnlockSys", 0),  
 | 
                        ),  
 | 
  
 | 
                "HorseUp":(  
 | 
                        ("DWORD", "HorseID", 1),  
 | 
                        ("BYTE", "LV", 1),  
 | 
                        ("DWORD", "NeedExp", 0),  
 | 
                        ("list", "AttrType", 0),  
 | 
                        ("list", "AttrValue", 0),  
 | 
                        ("list", "SkillID", 0),  
 | 
                        ("char", "SysMark", 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),  
 | 
                        ),  
 | 
  
 | 
                "EquipSuitAttr":(  
 | 
                        ("BYTE", "GroupType", 1),  
 | 
                        ("BYTE", "SuiteType", 1),  
 | 
                        ("WORD", "SuiteLV", 1),  
 | 
                        ("BYTE", "Job", 1),  
 | 
                        ("BYTE", "Count1", 0),  
 | 
                        ("list", "AttrType1", 0),  
 | 
                        ("list", "AttrValue1", 0),  
 | 
                        ("BYTE", "Count2", 0),  
 | 
                        ("list", "AttrType2", 0),  
 | 
                        ("list", "AttrValue2", 0),  
 | 
                        ("BYTE", "Count3", 0),  
 | 
                        ("list", "AttrType3", 0),  
 | 
                        ("list", "AttrValue3", 0),  
 | 
                        ),  
 | 
  
 | 
                "EquipSuitCompound":(  
 | 
                        ("BYTE", "SuiteType", 1),  
 | 
                        ("BYTE", "EquipPlace", 1),  
 | 
                        ("WORD", "SuiteLV", 1),  
 | 
                        ("BYTE", "Job", 1),  
 | 
                        ("list", "CostItemID", 0),  
 | 
                        ("list", "CostItemCnt", 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", "CftDamagePer", 0),  
 | 
                        ("DWORD", "CftDamReduce", 0),  
 | 
                        ("DWORD", "CftIgnoreDefRate", 0),  
 | 
                        ("DWORD", "CftDamChanceDef", 0),  
 | 
                        ("DWORD", "CftBleedDamage", 0),  
 | 
                        ("DWORD", "CftFaintRate", 0),  
 | 
                        ("DWORD", "CftSuperHitReduce", 0),  
 | 
                        ("DWORD", "CftLuckyHitRateReduce", 0),  
 | 
                        ("DWORD", "CftSkillAtkRate", 0),  
 | 
                        ("DWORD", "CftSkillAtkRateReduce", 0),  
 | 
                        ("DWORD", "CftDamagePerPVP", 0),  
 | 
                        ("DWORD", "CftDamagePerPVPReduce", 0),  
 | 
                        ("DWORD", "CftDamBackPer", 0),  
 | 
                        ("DWORD", "CftIgnoreDefRateReduce", 0),  
 | 
                        ("DWORD", "CftFaintDefRate", 0),  
 | 
                        ("DWORD", "CftAtkSpeed", 0),  
 | 
                        ("DWORD", "CftLuckyHit", 0),  
 | 
                        ("DWORD", "CftSpeedPer", 0),  
 | 
                        ("DWORD", "CftAtkPer", 0),  
 | 
                        ("DWORD", "CftMaxHPPer", 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", "IndepRateMaxDropCount", 0),  
 | 
                        ("dict", "EquipStarInfo", 0),  
 | 
                        ("list", "KillCountDropEquipEx", 0),  
 | 
                        ("list", "KillCountDropEquipEx2", 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),  
 | 
                        ("list", "KillCountDrop", 0),  
 | 
                        ("list", "PriItemIDDrop", 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),  
 | 
                        ),  
 | 
  
 | 
                "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),  
 | 
                        ("BYTE", "JobRankLimit", 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),  
 | 
                        ("DWORD", "DayTimes", 0),  
 | 
                        ("BYTE", "DayResetType", 0),  
 | 
                        ("DWORD", "WeekTimes", 0),  
 | 
                        ("BYTE", "WeekResetType", 0),  
 | 
                        ),  
 | 
  
 | 
                "EquipGSParam":(  
 | 
                        ("BYTE", "ClassLV", 1),  
 | 
                        ("BYTE", "EquipColor", 1),  
 | 
                        ("BYTE", "EquipQualityLV", 1),  
 | 
                        ("DWORD", "AtkPerC", 0),  
 | 
                        ("DWORD", "DamagePerC", 0),  
 | 
                        ("DWORD", "SuperHitRateC", 0),  
 | 
                        ("DWORD", "SuperHitPerC", 0),  
 | 
                        ("DWORD", "DamReducePerC", 0),  
 | 
                        ("DWORD", "MaxHPPerC", 0),  
 | 
                        ("DWORD", "DefPerC", 0),  
 | 
                        ("DWORD", "LuckyHitRateC", 0),  
 | 
                        ("DWORD", "PetDamPerC", 0),  
 | 
                        ("DWORD", "PerLVAtkC", 0),  
 | 
                        ("DWORD", "MissRateC", 0),  
 | 
                        ("DWORD", "HitRateC", 0),  
 | 
                        ("DWORD", "DamBackPerC", 0),  
 | 
                        ("DWORD", "PerLVMaxHPC", 0),  
 | 
                        ("DWORD", "DropEquipPerC", 0),  
 | 
                        ("DWORD", "DropMoneyPerC", 0),  
 | 
                        ("DWORD", "IgnoreDefRateReduceC", 0),  
 | 
                        ("DWORD", "DamChanceDefC", 0),  
 | 
                        ("DWORD", "SuperHitReduceC", 0),  
 | 
                        ("DWORD", "SkillAtkRateC", 0),  
 | 
                        ("DWORD", "SpeedPerC", 0),  
 | 
                        ("DWORD", "AtkSpeedC", 0),  
 | 
                        ("DWORD", "SkillAtkRateReduceC", 0),  
 | 
                        ("DWORD", "HitC", 0),  
 | 
                        ("DWORD", "MissC", 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),  
 | 
                        ),  
 | 
  
 | 
                "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),  
 | 
                        ("list", "SuccID", 0),  
 | 
                        ("list", "Potentials", 0),  
 | 
                        ("list", "SkillPower", 0),  
 | 
                        ("dict", "NeedItem", 0),  
 | 
                        ),  
 | 
  
 | 
                "TreasureUp":(  
 | 
                        ("DWORD", "MWID", 1),  
 | 
                        ("BYTE", "LV", 1),  
 | 
                        ("DWORD", "NeedExp", 0),  
 | 
                        ("dict", "AddAttr", 0),  
 | 
                        ("list", "UnLockSkill", 0),  
 | 
                        ("DWORD", "ActiveMWID", 0),  
 | 
                        ("list", "ItemAward", 0),  
 | 
                        ("DWORD", "ActiveSoulID", 0),  
 | 
                        ("DWORD", "PowerEx", 0),  
 | 
                        ),  
 | 
  
 | 
                "TreasurePrivilege":(  
 | 
                        ("DWORD", "PrivilegeID", 1),  
 | 
                        ("eval", "EffectValue", 0),  
 | 
                        ("DWORD", "SingleValue", 0),  
 | 
                        ("DWORD", "MaxValue", 0),  
 | 
                        ("dict", "AddAttr", 0),  
 | 
                        ("list", "ItemAward", 0),  
 | 
                        ("list", "SuccessList", 0),  
 | 
                        ),  
 | 
  
 | 
                "TreasureSkill":(  
 | 
                        ("BYTE", "SkillUpType", 1),  
 | 
                        ("BYTE", "SkillLV", 1),  
 | 
                        ("DWORD", "NeedPoint", 0),  
 | 
                        ("WORD", "InitRate", 0),  
 | 
                        ("list", "NeedItemID", 0),  
 | 
                        ("list", "NeedItemCnt", 0),  
 | 
                        ("list", "MaxRate", 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", "SuiteLV", 0),  
 | 
                        ("BYTE", "CancelUseLimit", 0),  
 | 
                        ("list", "LegendAttrID", 0),  
 | 
                        ("list", "LegendAttrValue", 0),  
 | 
                        ("list", "OutOfPrintAttr", 0),  
 | 
                        ("list", "OutOfPrintAttrValue", 0),  
 | 
                        ),  
 | 
  
 | 
                "VipPrivilege":(  
 | 
                        ("DWORD", "VIPPriID", 1),  
 | 
                        ("DWORD", "VIP0", 0),  
 | 
                        ("DWORD", "VIP1", 0),  
 | 
                        ("DWORD", "VIP2", 0),  
 | 
                        ("DWORD", "VIP3", 0),  
 | 
                        ("DWORD", "VIP4", 0),  
 | 
                        ("DWORD", "VIP5", 0),  
 | 
                        ("DWORD", "VIP6", 0),  
 | 
                        ("DWORD", "VIP7", 0),  
 | 
                        ("DWORD", "VIP8", 0),  
 | 
                        ("DWORD", "VIP9", 0),  
 | 
                        ("DWORD", "VIP10", 0),  
 | 
                        ("DWORD", "VIP11", 0),  
 | 
                        ("DWORD", "VIP12", 0),  
 | 
                        ("DWORD", "VIP13", 0),  
 | 
                        ("DWORD", "VIP14", 0),  
 | 
                        ("DWORD", "VIP15", 0),  
 | 
                        ),  
 | 
  
 | 
                "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),  
 | 
                        ),  
 | 
  
 | 
                "TreasureRefine":(  
 | 
                        ("WORD", "TreasureID", 1),  
 | 
                        ("BYTE", "TreasureLV", 1),  
 | 
                        ("dict", "TreasureAttr", 0),  
 | 
                        ("dict", "Material", 0),  
 | 
                        ("WORD", "SuccessRate", 0),  
 | 
                        ("DWORD", "OpenSkill", 0),  
 | 
                        ("BYTE", "NeedAlchemyLV", 0),  
 | 
                        ("BYTE", "NeedAllTreasureLV", 0),  
 | 
                        ),  
 | 
  
 | 
                "RefineStove":(  
 | 
                        ("BYTE", "StoveLV", 1),  
 | 
                        ("DWORD", "UpNeedExp", 0),  
 | 
                        ("list", "AddAttrType", 0),  
 | 
                        ("list", "AddAttrNum", 0),  
 | 
                        ),  
 | 
  
 | 
                "Alchemy":(  
 | 
                        ("WORD", "AlchemyID", 1),  
 | 
                        ("dict", "Material", 0),  
 | 
                        ("WORD", "AlchemyExp", 0),  
 | 
                        ("list", "AlchemyItem", 0),  
 | 
                        ("list", "SpecAlchemyID", 0),  
 | 
                        ("list", "AlchemyUp", 0),  
 | 
                        ("BYTE", "NeedAlchemyLV", 0),  
 | 
                        ),  
 | 
  
 | 
                "AlchemySpec":(  
 | 
                        ("WORD", "SpecAlchemyID", 1),  
 | 
                        ("DWORD", "MaterialID", 0),  
 | 
                        ("BYTE", "MaterialCnt", 0),  
 | 
                        ("WORD", "AlchemyExp", 0),  
 | 
                        ("list", "AlchemyItem", 0),  
 | 
                        ("BYTE", "NeedAlchemyLV", 0),  
 | 
                        ),  
 | 
  
 | 
                "BOSSInfo":(  
 | 
                        ("DWORD", "NPCID", 1),  
 | 
                        ("DWORD", "MapID", 0),  
 | 
                        ("BYTE", "RefreshMark", 0),  
 | 
                        ("BYTE", "IsNeedShunt", 0),  
 | 
                        ("BYTE", "RelatedType", 0),  
 | 
                        ("WORD", "RelatedID", 0),  
 | 
                        ("DWORD", "StoneNPCID", 0),  
 | 
                        ),  
 | 
  
 | 
                "ElderGodArea":(  
 | 
                        ("DWORD", "NPCID", 1),  
 | 
                        ("BYTE", "MonsterAnger", 0),  
 | 
                        ),  
 | 
  
 | 
                "PersonalBoss":(  
 | 
                        ("DWORD", "NPCID", 1),  
 | 
                        ("DWORD", "ChanllengeLv", 0),  
 | 
                        ),  
 | 
  
 | 
                "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),  
 | 
                        ("WORD", "KillTime", 0),  
 | 
                        ),  
 | 
  
 | 
                "FbEncourage":(  
 | 
                        ("DWORD", "DataMapID", 1),  
 | 
                        ("BYTE", "InspireType", 1),  
 | 
                        ("WORD", "InspireMaxLV", 0),  
 | 
                        ("char", "MoneyCount", 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", "PrepareTime", 0),  
 | 
                        ("list", "LostHPPer", 0),  
 | 
                        ("BYTE", "MaxCollectCount", 0),  
 | 
                        ("char", "CollectCountLimitNotify", 0),  
 | 
                        ("list", "CollectAward", 0),  
 | 
                        ),  
 | 
  
 | 
                "Chests":(  
 | 
                        ("DWORD", "ChestsItemID", 1),  
 | 
                        ("DWORD", "CostItemID", 0),  
 | 
                        ("BYTE", "CostItemCount", 0),  
 | 
                        ("WORD", "CostGold", 0),  
 | 
                        ("BYTE", "ShowType", 0),  
 | 
                        ("BYTE", "IsBind", 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),  
 | 
                        ),  
 | 
  
 | 
                "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", "DailyBuyCount", 0),  
 | 
                        ("WORD", "GainGold", 0),  
 | 
                        ("WORD", "GainGoldPrize", 0),  
 | 
                        ("WORD", "FirstGoldPrize", 0),  
 | 
                        ("list", "GainItemList", 0),  
 | 
                        ("char", "NotifyMark", 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),  
 | 
                        ),  
 | 
  
 | 
                "GodWeaponEffect":(  
 | 
                        ("BYTE", "GWType", 0),  
 | 
                        ("WORD", "Level", 0),  
 | 
                        ("char", "NotifyCode", 0),  
 | 
                        ("DWORD", "FightPower", 0),  
 | 
                        ("dict", "Attr", 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),  
 | 
                        ),  
 | 
  
 | 
                "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),  
 | 
                        ("list", "Reward", 0),  
 | 
                        ),  
 | 
  
 | 
                "ZhuXianSuitAttr":(  
 | 
                        ("BYTE", "SuitType", 1),  
 | 
                        ("BYTE", "SuitLV", 1),  
 | 
                        ("list", "SuitAttrIDList", 0),  
 | 
                        ("list", "SuitAttrValueList", 0),  
 | 
                        ),  
 | 
  
 | 
                "ZhuXianBoss":(  
 | 
                        ("DWORD", "NPCID", 0),  
 | 
                        ("BYTE", "LineID", 1),  
 | 
                        ("WORD", "KillTime", 0),  
 | 
                        ("WORD", "RealmLV", 0),  
 | 
                        ("DWORD", "ZhuXianScore", 0),  
 | 
                        ),  
 | 
  
 | 
                "ZhuXianTower":(  
 | 
                        ("DWORD", "ID", 1),  
 | 
                        ("DWORD", "NPCID", 0),  
 | 
                        ("list", "FirstAward", 0),  
 | 
                        ("dict", "GradeAward", 0),  
 | 
                        ("WORD", "UnLockEquipPlace", 0),  
 | 
                        ("DWORD", "NeedPower", 0),  
 | 
                        ),  
 | 
  
 | 
                "ZhuXianEquipDecompose":(  
 | 
                        ("BYTE", "ClassLV", 1),  
 | 
                        ("dict", "DecomposeInfo", 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),  
 | 
                        ),  
 | 
  
 | 
                "ZhuXianStoneAttr":(  
 | 
                        ("BYTE", "SuitType", 1),  
 | 
                        ("BYTE", "ShareSoneLV", 1),  
 | 
                        ("list", "AttrIDList", 0),  
 | 
                        ("list", "AttrValueList", 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_Realm(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.Lv = 0  
 | 
        self.IsBigRealm = 0  
 | 
        self.NeedPoint = 0  
 | 
        self.NeedItemID = 0  
 | 
        self.NeedItemCnt = 0  
 | 
        self.NeedActiveTreasure = {}  
 | 
        self.AddAttrType = []  
 | 
        self.AddAttrNum = []  
 | 
        self.BossID = 0  
 | 
        self.SitTime = {}  
 | 
        self.TeamAward = {} 
 | 
        return 
 | 
         
 | 
    def GetLv(self): return self.Lv # ¾³½çµÈ¼¶  
 | 
    def GetIsBigRealm(self): return self.IsBigRealm # ÊÇ·ñ´ó¾³½ç  
 | 
    def GetNeedPoint(self): return self.NeedPoint # ¿ªÆô¶É½ÙÐèÒªÐÞÁ¶µã  
 | 
    def GetNeedItemID(self): return self.NeedItemID # ¿ªÆô¶É½ÙÐèÒªµÀ¾ßID  
 | 
    def GetNeedItemCnt(self): return self.NeedItemCnt # ¿ªÆô¶É½ÙÏûºÄµÄµÀ¾ßÊýÁ¿  
 | 
    def GetNeedActiveTreasure(self): return self.NeedActiveTreasure # ¿ªÆô¶É½ÙÐèÒª¼¤»î·¨±¦Ìõ¼þ  
 | 
    def GetAddAttrType(self): return self.AddAttrType # ¾³½ç¼Ó³ÉÊôÐÔÀàÐÍ  
 | 
    def GetAddAttrNum(self): return self.AddAttrNum # ¾³½ç¼Ó³ÉÊôÐÔÖµ  
 | 
    def GetBossID(self): return self.BossID # ¶É½Ùbossid  
 | 
    def GetSitTime(self): return self.SitTime # ´ò×øÊ±¼ä  
 | 
    def GetTeamAward(self): return self.TeamAward # ×é¶Ó°ï´òµÄÈ˵Ľ±Àø 
 | 
  
 | 
# Éñ±ø±í 
 | 
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 
 | 
        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µÈ¼¶ 
 | 
  
 | 
# ºÏ³É±í 
 | 
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.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 GetAddExp(self): return self.AddExp # ÌáÉýÊìÁ·¶ÈÖµ  
 | 
    def GetTotalExp(self): return self.TotalExp # Éý¼¶ËùÐèÊìÁ·¶È×ÜÖµ 
 | 
  
 | 
# ×°±¸Ç¿»¯µÈ¼¶ÉÏÏÞ 
 | 
class IPY_ItemPlusMax(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.Type = 0  
 | 
        self.ItemRank = 0  
 | 
        self.ItemColor = 0  
 | 
        self.LevelMax = 0 
 | 
        return 
 | 
         
 | 
    def GetType(self): return self.Type # °´×°±¸Î»¶ÔÓ¦ÀàÐͲéÕÒ  
 | 
    def GetItemRank(self): return self.ItemRank #  ×°±¸½×Êý  
 | 
    def GetItemColor(self): return self.ItemColor # ×°±¸ÑÕÉ« Èç³È×°  
 | 
    def GetLevelMax(self): return self.LevelMax # Ç¿»¯µÈ¼¶ÉÏÏÞ 
 | 
  
 | 
# ×°±¸È«ÉíÇ¿»¯ÊôÐÔ 
 | 
class IPY_ItemPlusSumAttr(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.PlusCntNeed = 0  
 | 
        self.AttrType = []  
 | 
        self.AttrValue = [] 
 | 
        return 
 | 
         
 | 
    def GetPlusCntNeed(self): return self.PlusCntNeed # È«ÉíÇ¿»¯µÈ¼¶  
 | 
    def GetAttrType(self): return self.AttrType # È«ÉíÇ¿»¯¼¤»îÊôÐÔÀàÐÍ  
 | 
    def GetAttrValue(self): return self.AttrValue # È«ÉíÇ¿»¯¼¤»îÊôÐÔÖµ 
 | 
  
 | 
# ×°±¸È«ÉíÐÇÊýÊôÐÔ 
 | 
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_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_EquipWashSpec(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.WashTypeNeed = 0  
 | 
        self.WashLVNeed = 0  
 | 
        self.AddAttrType = []  
 | 
        self.AddAttrValue = [] 
 | 
        return 
 | 
         
 | 
    def GetWashTypeNeed(self): return self.WashTypeNeed #  ËùÐè×°±¸¹é×éÀàÐÍ  
 | 
    def GetWashLVNeed(self): return self.WashLVNeed #  ËùÐèÏ´Á·µÈ¼¶  
 | 
    def GetAddAttrType(self): return self.AddAttrType # ¼¤»î¼Ó³ÉÊôÐÔÀàÐÍ  
 | 
    def GetAddAttrValue(self): return self.AddAttrValue # ¼¤»î¼Ó³ÉÊôÐÔÖµ 
 | 
  
 | 
# ÊôÐÔ¹ûʵ±í 
 | 
class IPY_AttrFruit(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.ID = 0  
 | 
        self.FuncID = 0  
 | 
        self.MaxUseCnt = 0  
 | 
        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 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_Horse(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.HorseID = 0  
 | 
        self.ItemID = 0  
 | 
        self.UnlockItemID = 0  
 | 
        self.UnlockItemCnt = 0  
 | 
        self.InitLV = 0  
 | 
        self.MaxLV = 0  
 | 
        self.UseNeedRank = 0  
 | 
        self.Quality = 0  
 | 
        self.InitFightPower = 0  
 | 
        self.UnlockSys = "" 
 | 
        return 
 | 
         
 | 
    def GetHorseID(self): return self.HorseID # ×øÆï±àºÅID  
 | 
    def GetItemID(self): return self.ItemID # ×øÆïÎïÆ·ID  
 | 
    def GetUnlockItemID(self): return self.UnlockItemID # ½âËø×øÆïÎïÆ·±àºÅ  
 | 
    def GetUnlockItemCnt(self): return self.UnlockItemCnt # ½âËøËùÐèÎïÆ·ÊýÁ¿  
 | 
    def GetInitLV(self): return self.InitLV # ×øÆï³õʼµÈ¼¶  
 | 
    def GetMaxLV(self): return self.MaxLV # ×øÆï×î¸ßµÈ¼¶  
 | 
    def GetUseNeedRank(self): return self.UseNeedRank # ¶àÉٽ׿ÉÇл»Íâ¹Û  
 | 
    def GetQuality(self): return self.Quality # ×øÆïÆ·ÖÊ  
 | 
    def GetInitFightPower(self): return self.InitFightPower # ³õʼսÁ¦  
 | 
    def GetUnlockSys(self): return self.UnlockSys # ½âËø¹ã²¥Ìáʾ 
 | 
  
 | 
# ×øÆïÉý¼¶±í 
 | 
class IPY_HorseUp(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.HorseID = 0  
 | 
        self.LV = 0  
 | 
        self.NeedExp = 0  
 | 
        self.AttrType = []  
 | 
        self.AttrValue = []  
 | 
        self.SkillID = []  
 | 
        self.SysMark = "" 
 | 
        return 
 | 
         
 | 
    def GetHorseID(self): return self.HorseID # ×øÆï±àºÅID  
 | 
    def GetLV(self): return self.LV # ×øÆïµÈ¼¶  
 | 
    def GetNeedExp(self): return self.NeedExp # Éý¼¶ËùÐè¾Ñé  
 | 
    def GetAttrType(self): return self.AttrType # ¼¤»î¼Ó³ÉÊôÐÔÀàÐÍ  
 | 
    def GetAttrValue(self): return self.AttrValue # ¼¤»î¼Ó³ÉÊôÐÔÖµ  
 | 
    def GetSkillID(self): return self.SkillID # ¿É»ñµÃµÄ¼¼ÄÜID  
 | 
    def GetSysMark(self): return self.SysMark # ¹ã²¥Ìáʾ 
 | 
  
 | 
# Íæ¼ÒµÈ¼¶±í 
 | 
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 # Ñ¹ÖÆÕ½¶·Á¦ÏµÊý 
 | 
  
 | 
# ×°±¸Ì××°ÊôÐÔ±í 
 | 
class IPY_EquipSuitAttr(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.GroupType = 0  
 | 
        self.SuiteType = 0  
 | 
        self.SuiteLV = 0  
 | 
        self.Job = 0  
 | 
        self.Count1 = 0  
 | 
        self.AttrType1 = []  
 | 
        self.AttrValue1 = []  
 | 
        self.Count2 = 0  
 | 
        self.AttrType2 = []  
 | 
        self.AttrValue2 = []  
 | 
        self.Count3 = 0  
 | 
        self.AttrType3 = []  
 | 
        self.AttrValue3 = [] 
 | 
        return 
 | 
         
 | 
    def GetGroupType(self): return self.GroupType # Ì××°×éºÏÀàÐÍ  
 | 
    def GetSuiteType(self): return self.SuiteType # Ì××°ÀàÐÍ  
 | 
    def GetSuiteLV(self): return self.SuiteLV # Ì××°µÈ¼¶  
 | 
    def GetJob(self): return self.Job # Ö°Òµ  
 | 
    def GetCount1(self): return self.Count1 # ½×¶Î1ËùÐèÊýÁ¿  
 | 
    def GetAttrType1(self): return self.AttrType1 # ½×¶Î1ÊôÐÔÀàÐÍ  
 | 
    def GetAttrValue1(self): return self.AttrValue1 # ½×¶Î1ÊôÐÔÖµ  
 | 
    def GetCount2(self): return self.Count2 # ½×¶Î2ËùÐèÊýÁ¿  
 | 
    def GetAttrType2(self): return self.AttrType2 # ½×¶Î2ÊôÐÔÀàÐÍ  
 | 
    def GetAttrValue2(self): return self.AttrValue2 # ½×¶Î2ÊôÐÔÖµ  
 | 
    def GetCount3(self): return self.Count3 # ½×¶Î2ËùÐèÊýÁ¿  
 | 
    def GetAttrType3(self): return self.AttrType3 # ½×¶Î2ÊôÐÔÀàÐÍ  
 | 
    def GetAttrValue3(self): return self.AttrValue3 # ½×¶Î2ÊôÐÔÖµ 
 | 
  
 | 
# Ì××°ºÏ³É±í 
 | 
class IPY_EquipSuitCompound(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.SuiteType = 0  
 | 
        self.EquipPlace = 0  
 | 
        self.SuiteLV = 0  
 | 
        self.Job = 0  
 | 
        self.CostItemID = []  
 | 
        self.CostItemCnt = [] 
 | 
        return 
 | 
         
 | 
    def GetSuiteType(self): return self.SuiteType # Ì××°ÀàÐÍ  
 | 
    def GetEquipPlace(self): return self.EquipPlace # ×°±¸²¿Î»  
 | 
    def GetSuiteLV(self): return self.SuiteLV # Ì××°µÈ¼¶  
 | 
    def GetJob(self): return self.Job # Ö°Òµ  
 | 
    def GetCostItemID(self): return self.CostItemID # ²ÄÁÏID  
 | 
    def GetCostItemCnt(self): return self.CostItemCnt # ²ÄÁÏÊýÁ¿ 
 | 
  
 | 
# ÓðÒí¾«Á¶ÊôÐÔ±í 
 | 
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.CftDamagePer = 0  
 | 
        self.CftDamReduce = 0  
 | 
        self.CftIgnoreDefRate = 0  
 | 
        self.CftDamChanceDef = 0  
 | 
        self.CftBleedDamage = 0  
 | 
        self.CftFaintRate = 0  
 | 
        self.CftSuperHitReduce = 0  
 | 
        self.CftLuckyHitRateReduce = 0  
 | 
        self.CftSkillAtkRate = 0  
 | 
        self.CftSkillAtkRateReduce = 0  
 | 
        self.CftDamagePerPVP = 0  
 | 
        self.CftDamagePerPVPReduce = 0  
 | 
        self.CftDamBackPer = 0  
 | 
        self.CftIgnoreDefRateReduce = 0  
 | 
        self.CftFaintDefRate = 0  
 | 
        self.CftAtkSpeed = 0  
 | 
        self.CftLuckyHit = 0  
 | 
        self.CftSpeedPer = 0  
 | 
        self.CftAtkPer = 0  
 | 
        self.CftMaxHPPer = 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 GetCftDamagePer(self): return self.CftDamagePer # Ôö¼ÓÉ˺¦ÏµÊý  
 | 
    def GetCftDamReduce(self): return self.CftDamReduce # ¼õÉÙÉ˺¦ÏµÊý  
 | 
    def GetCftIgnoreDefRate(self): return self.CftIgnoreDefRate # ÎÞÊÓ·ÀÓùϵÊý  
 | 
    def GetCftDamChanceDef(self): return self.CftDamChanceDef # µÖÓùϵÊý  
 | 
    def GetCftBleedDamage(self): return self.CftBleedDamage # Á÷ѪÉ˺¦ÏµÊý  
 | 
    def GetCftFaintRate(self): return self.CftFaintRate # »÷ÔÎϵÊý  
 | 
    def GetCftSuperHitReduce(self): return self.CftSuperHitReduce # ±©»÷¿¹ÐÔϵÊý  
 | 
    def GetCftLuckyHitRateReduce(self): return self.CftLuckyHitRateReduce # »áÐÄÒ»»÷¿¹ÐÔϵÊý  
 | 
    def GetCftSkillAtkRate(self): return self.CftSkillAtkRate # ¼¼ÄÜÉ˺¦ÏµÊý  
 | 
    def GetCftSkillAtkRateReduce(self): return self.CftSkillAtkRateReduce # ¼¼ÄܼõÉËϵÊý  
 | 
    def GetCftDamagePerPVP(self): return self.CftDamagePerPVP # PVPÉ˺¦Ôö¼¡ÏµÊý  
 | 
    def GetCftDamagePerPVPReduce(self): return self.CftDamagePerPVPReduce # PVPÉ˺¦¼õÉÙϵÊý  
 | 
    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 GetCftLuckyHit(self): return self.CftLuckyHit # »áÐÄÒ»»÷ϵÊý  
 | 
    def GetCftSpeedPer(self): return self.CftSpeedPer # Òƶ¯ËٶȰٷֱÈϵÊý  
 | 
    def GetCftAtkPer(self): return self.CftAtkPer # ¹¥»÷°Ù·Ö±ÈϵÊý  
 | 
    def GetCftMaxHPPer(self): return self.CftMaxHPPer # ÉúÃü°Ù·Ö±ÈϵÊý  
 | 
    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.IndepRateMaxDropCount = {}  
 | 
        self.EquipStarInfo = {}  
 | 
        self.KillCountDropEquipEx = []  
 | 
        self.KillCountDropEquipEx2 = []  
 | 
        self.ItemIDDropRate = {}  
 | 
        self.ItemIDMaxDropCount = {}  
 | 
        self.ItemKeyDropRate = {}  
 | 
        self.ItemKeyDropRateJob = {}  
 | 
        self.ItemKeyMaxDropCount = {}  
 | 
        self.DropMoneyDoCnt = 0  
 | 
        self.DropMoneyRate = 0  
 | 
        self.DropMoneyMin = 0  
 | 
        self.DropMoneyMax = 0  
 | 
        self.KillCountDrop = []  
 | 
        self.PriItemIDDrop = [] 
 | 
        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),(¸ÅÂÊ,(½×,ÑÕÉ«,²¿Î»¼¯ºÏkey)),...]  
 | 
    def GetPieRateDoCnt(self): return self.PieRateDoCnt # ±ýͼ¸ÅÂÊÖ´ÐдÎÊý  
 | 
    def GetIndepRateDrop(self): return self.IndepRateDrop # ¶ÀÁ¢¸ÅÂʵôÂäÐÅÏ¢ {(½×,ÑÕÉ«,²¿Î»¼¯ºÏkey):¸ÅÂÊ,...}  
 | 
    def GetIndepRateDoCnt(self): return self.IndepRateDoCnt # ¶ÀÁ¢¸ÅÂÊÖ´ÐдÎÊý  
 | 
    def GetIndepRateMaxDropCount(self): return self.IndepRateMaxDropCount # ¶ÀÁ¢¸ÅÂÊ×°±¸ÑÕÉ«×î´óµôÂäÎïÆ·Êý {ÑÕÉ«:ÉÏÏÞÊýÁ¿,...}  
 | 
    def GetEquipStarInfo(self): return self.EquipStarInfo # ×°±¸ÑÕÉ«¶ÔÓ¦ÐǼ¶²ú³ö¹æÔò {ÑÕÉ«:[(¸ÅÂÊ, ÐǼ¶),...], ...}  
 | 
    def GetKillCountDropEquipEx(self): return self.KillCountDropEquipEx # µÚx´Î»÷ɱ¸½¼Ó±Øµô×°±¸ [´ÎÊý,½×,ÑÕÉ«,[(¸ÅÂÊ,ÐǼ¶),...],²¿Î»¼¯ºÏkey]  
 | 
    def GetKillCountDropEquipEx2(self): return self.KillCountDropEquipEx2 # Ç°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 GetKillCountDrop(self): return self.KillCountDrop # »÷ɱ´ÎÊý±Øµô,·ÀÖ¹°æ±¾±ä¸üÖØ¸´µô,Ö»Ö§³ÖÒ»´Î»ú»á [»÷ɱ´ÎÊý,ÊÇ·ñÖ±½Ó·ÅÈë±³°ü,[ÎïÆ·ID,...]]  
 | 
    def GetPriItemIDDrop(self): return self.PriItemIDDrop # ËùÓйéÊôÕß˽ÓеôÂäÎïÆ·IDÁбí,ÿÈËÒ»·Ý,ĬÈϰó¶¨,ûÓÐÖ°ÒµÇø·Ö[ÎïÆ·ID, ...] 
 | 
  
 | 
# ·ûÓ¡Ëþ±í 
 | 
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_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.JobRankLimit = 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 GetJobRankLimit(self): return self.JobRankLimit # ËùÐèÖ°Òµ½×  
 | 
    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.DayTimes = 0  
 | 
        self.DayResetType = 0  
 | 
        self.WeekTimes = 0  
 | 
        self.WeekResetType = 0 
 | 
        return 
 | 
         
 | 
    def GetDailyID(self): return self.DailyID # »î¶¯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µã 
 | 
  
 | 
# ×°±¸ÆÀ·ÖÊôÐÔϵÊý±í 
 | 
class IPY_EquipGSParam(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.ClassLV = 0  
 | 
        self.EquipColor = 0  
 | 
        self.EquipQualityLV = 0  
 | 
        self.AtkPerC = 0  
 | 
        self.DamagePerC = 0  
 | 
        self.SuperHitRateC = 0  
 | 
        self.SuperHitPerC = 0  
 | 
        self.DamReducePerC = 0  
 | 
        self.MaxHPPerC = 0  
 | 
        self.DefPerC = 0  
 | 
        self.LuckyHitRateC = 0  
 | 
        self.PetDamPerC = 0  
 | 
        self.PerLVAtkC = 0  
 | 
        self.MissRateC = 0  
 | 
        self.HitRateC = 0  
 | 
        self.DamBackPerC = 0  
 | 
        self.PerLVMaxHPC = 0  
 | 
        self.DropEquipPerC = 0  
 | 
        self.DropMoneyPerC = 0  
 | 
        self.IgnoreDefRateReduceC = 0  
 | 
        self.DamChanceDefC = 0  
 | 
        self.SuperHitReduceC = 0  
 | 
        self.SkillAtkRateC = 0  
 | 
        self.SpeedPerC = 0  
 | 
        self.AtkSpeedC = 0  
 | 
        self.SkillAtkRateReduceC = 0  
 | 
        self.HitC = 0  
 | 
        self.MissC = 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 
 | 
        return 
 | 
         
 | 
    def GetClassLV(self): return self.ClassLV #  ×°±¸½×¼¶  
 | 
    def GetEquipColor(self): return self.EquipColor #  ×°±¸ÑÕÉ«  
 | 
    def GetEquipQualityLV(self): return self.EquipQualityLV #  ×°±¸ÐǼ¶  
 | 
    def GetAtkPerC(self): return self.AtkPerC #  ¹¥»÷°Ù·Ö±ÈϵÊý  
 | 
    def GetDamagePerC(self): return self.DamagePerC #  Ôö¼ÓÉ˺¦ÏµÊý  
 | 
    def GetSuperHitRateC(self): return self.SuperHitRateC #  ±©»÷ÂÊϵÊý  
 | 
    def GetSuperHitPerC(self): return self.SuperHitPerC #  ±©»÷Öµ°Ù·Ö±ÈϵÊý  
 | 
    def GetDamReducePerC(self): return self.DamReducePerC #  ¼õÉÙÉ˺¦ÏµÊý  
 | 
    def GetMaxHPPerC(self): return self.MaxHPPerC #  ÉúÃüÉÏÏÞ°Ù·Ö±ÈϵÊý  
 | 
    def GetDefPerC(self): return self.DefPerC #  ·ÀÓùÁ¦°Ù·Ö±ÈϵÊý  
 | 
    def GetLuckyHitRateC(self): return self.LuckyHitRateC #  »áÐÄÒ»»÷ÂÊϵÊý  
 | 
    def GetPetDamPerC(self): return self.PetDamPerC #  Áé³èÉ˺¦Ôö¼Ó°Ù·Ö±ÈϵÊý  
 | 
    def GetPerLVAtkC(self): return self.PerLVAtkC #  Ã¿¼¶Ôö¼Ó¹¥»÷Á¦ÏµÊý  
 | 
    def GetMissRateC(self): return self.MissRateC #  ÉÁ±ÜÖµ°Ù·Ö±ÈϵÊý  
 | 
    def GetHitRateC(self): return self.HitRateC #  ÃüÖÐÁ¦°Ù·Ö±ÈϵÊý  
 | 
    def GetDamBackPerC(self): return self.DamBackPerC #  É˺¦·´Éä°Ù·Ö±ÈϵÊý  
 | 
    def GetPerLVMaxHPC(self): return self.PerLVMaxHPC #  Ã¿¼¶Ôö¼ÓÉúÃüֵϵÊý  
 | 
    def GetDropEquipPerC(self): return self.DropEquipPerC #  Ôö¼Ó×°±¸µôÂ伸ÂÊϵÊý  
 | 
    def GetDropMoneyPerC(self): return self.DropMoneyPerC #  Ôö¼ÓµôÂä½ð±ÒÁ¿°Ù·Ö±ÈϵÊý  
 | 
    def GetIgnoreDefRateReduceC(self): return self.IgnoreDefRateReduceC #  ÎÞÊÓ·ÀÓù¿¹ÐÔ°Ù·Ö±ÈϵÊý  
 | 
    def GetDamChanceDefC(self): return self.DamChanceDefC #  µÖÓù°Ù·Ö±ÈϵÊý  
 | 
    def GetSuperHitReduceC(self): return self.SuperHitReduceC #  ±©»÷¿¹ÐÔ°Ù·Ö±ÈϵÊý  
 | 
    def GetSkillAtkRateC(self): return self.SkillAtkRateC #  ¼¼ÄÜÉ˺¦°Ù·Ö±ÈϵÊý  
 | 
    def GetSpeedPerC(self): return self.SpeedPerC #  Òƶ¯ËٶȰٷֱÈϵÊý  
 | 
    def GetAtkSpeedC(self): return self.AtkSpeedC #  ¹¥»÷ËÙ¶ÈϵÊý  
 | 
    def GetSkillAtkRateReduceC(self): return self.SkillAtkRateReduceC #  ¼¼ÄܼõÉ˰ٷֱÈϵÊý  
 | 
    def GetHitC(self): return self.HitC #  ÃüÖÐϵÊý  
 | 
    def GetMissC(self): return self.MissC #  ÉÁ±ÜϵÊý  
 | 
    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ϵÊý 
 | 
  
 | 
# ³É¾Í±í 
 | 
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.SuccID = []  
 | 
        self.Potentials = []  
 | 
        self.SkillPower = []  
 | 
        self.NeedItem = {} 
 | 
        return 
 | 
         
 | 
    def GetID(self): return self.ID # ID  
 | 
    def GetTreasureType(self): return self.TreasureType # ·¨±¦ÀàÐÍ  
 | 
    def GetPreTreasure(self): return self.PreTreasure # Ç°Ö÷¨±¦  
 | 
    def GetSuccID(self): return self.SuccID # ³É¾ÍID  
 | 
    def GetPotentials(self): return self.Potentials # ¼¼ÄÜDZÁ¦Éý¼¶  
 | 
    def GetSkillPower(self): return self.SkillPower # ¼¼ÄܽâËøÕ½Á¦  
 | 
    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.ActiveMWID = 0  
 | 
        self.ItemAward = []  
 | 
        self.ActiveSoulID = 0  
 | 
        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 GetActiveMWID(self): return self.ActiveMWID # ¼¤»î·¨±¦ID  
 | 
    def GetItemAward(self): return self.ItemAward # ÎïÆ·½±Àø[itemID,cnt,isbind]  
 | 
    def GetActiveSoulID(self): return self.ActiveSoulID # ¼¤»î»êID  
 | 
    def GetPowerEx(self): return self.PowerEx # ¶îÍâ¹Ì¶¨Õ½Á¦ 
 | 
  
 | 
# ·¨±¦ÌØÈ¨±í 
 | 
class IPY_TreasurePrivilege(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.PrivilegeID = 0  
 | 
        self.EffectValue = 0  
 | 
        self.SingleValue = 0  
 | 
        self.MaxValue = 0  
 | 
        self.AddAttr = {}  
 | 
        self.ItemAward = []  
 | 
        self.SuccessList = [] 
 | 
        return 
 | 
         
 | 
    def GetPrivilegeID(self): return self.PrivilegeID # ÌØÈ¨ID  
 | 
    def GetEffectValue(self): return self.EffectValue # ÌØÊâЧ¹û  
 | 
    def GetSingleValue(self): return self.SingleValue # ½ø¶È  
 | 
    def GetMaxValue(self): return self.MaxValue # ×î´ó½ø¶È  
 | 
    def GetAddAttr(self): return self.AddAttr # ÊôÐÔ  
 | 
    def GetItemAward(self): return self.ItemAward # ÎïÆ·½±Àø  
 | 
    def GetSuccessList(self): return self.SuccessList # ÐèÒªÍê³É³É¾Í 
 | 
  
 | 
# ·¨±¦¼¼ÄÜÉý¼¶±í 
 | 
class IPY_TreasureSkill(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.SkillUpType = 0  
 | 
        self.SkillLV = 0  
 | 
        self.NeedPoint = 0  
 | 
        self.InitRate = 0  
 | 
        self.NeedItemID = []  
 | 
        self.NeedItemCnt = []  
 | 
        self.MaxRate = [] 
 | 
        return 
 | 
         
 | 
    def GetSkillUpType(self): return self.SkillUpType # ¼¼ÄÜÉý¼¶ÀàÐÍ  
 | 
    def GetSkillLV(self): return self.SkillLV # ¼¼Äܵȼ¶  
 | 
    def GetNeedPoint(self): return self.NeedPoint # Éýµ½µ±Ç°¼¶ÏûºÄÌìʯ¾«»ª  
 | 
    def GetInitRate(self): return self.InitRate # ³õʼ¸ÅÂÊ  
 | 
    def GetNeedItemID(self): return self.NeedItemID # Éýµ½µ±Ç°¼¶ÈܲÊʯID  
 | 
    def GetNeedItemCnt(self): return self.NeedItemCnt # Éýµ½µ±Ç°¼¶ÈܲÊʯÊýÁ¿  
 | 
    def GetMaxRate(self): return self.MaxRate # Éýµ½µ±Ç°¼¶¸ÅÂÊ 
 | 
  
 | 
# Á¬ÐøÇ©µ½½±Àø±í 
 | 
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.SuiteLV = 0  
 | 
        self.CancelUseLimit = 0  
 | 
        self.LegendAttrID = []  
 | 
        self.LegendAttrValue = []  
 | 
        self.OutOfPrintAttr = []  
 | 
        self.OutOfPrintAttrValue = [] 
 | 
        return 
 | 
         
 | 
    def GetID(self): return self.ID # ¶¨ÖÆÎïÆ·ID  
 | 
    def GetSuiteLV(self): return self.SuiteLV # Ì××°µÈ¼¶  
 | 
    def GetCancelUseLimit(self): return self.CancelUseLimit # ´©´÷ÏÞÖÆ(³ýÖ°Òµ)  
 | 
    def GetLegendAttrID(self): return self.LegendAttrID # ´«ÆæÊôÐÔID  
 | 
    def GetLegendAttrValue(self): return self.LegendAttrValue # ´«ÆæÊôÐÔÖµ  
 | 
    def GetOutOfPrintAttr(self): return self.OutOfPrintAttr # ¾ø°æÊôÐÔID  
 | 
    def GetOutOfPrintAttrValue(self): return self.OutOfPrintAttrValue # ¾ø°æÊôÐÔ×î´óÖµ 
 | 
  
 | 
# 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_TreasureRefine(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.TreasureID = 0  
 | 
        self.TreasureLV = 0  
 | 
        self.TreasureAttr = {}  
 | 
        self.Material = {}  
 | 
        self.SuccessRate = 0  
 | 
        self.OpenSkill = 0  
 | 
        self.NeedAlchemyLV = 0  
 | 
        self.NeedAllTreasureLV = 0 
 | 
        return 
 | 
         
 | 
    def GetTreasureID(self): return self.TreasureID # ·¨±¦id  
 | 
    def GetTreasureLV(self): return self.TreasureLV # ·¨±¦½×Êý  
 | 
    def GetTreasureAttr(self): return self.TreasureAttr # ÊôÐÔ£¨×î¶à3Ìõ£©  
 | 
    def GetMaterial(self): return self.Material # ÖýÁ¶²ÄÁÏ  
 | 
    def GetSuccessRate(self): return self.SuccessRate # ³É¹¦ÂÊ  
 | 
    def GetOpenSkill(self): return self.OpenSkill # ½âËø¼¼ÄÜ  
 | 
    def GetNeedAlchemyLV(self): return self.NeedAlchemyLV # ËùÐèÁ¶µ¤µÈ¼¶  
 | 
    def GetNeedAllTreasureLV(self): return self.NeedAllTreasureLV # ËùÐèËùÓз¨±¦µÈ¼¶ 
 | 
  
 | 
# Á¶µ¤Â¯µÈ¼¶±í 
 | 
class IPY_RefineStove(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.StoveLV = 0  
 | 
        self.UpNeedExp = 0  
 | 
        self.AddAttrType = []  
 | 
        self.AddAttrNum = [] 
 | 
        return 
 | 
         
 | 
    def GetStoveLV(self): return self.StoveLV # Á¶µ¤Â¯µÈ¼¶  
 | 
    def GetUpNeedExp(self): return self.UpNeedExp # ÉýÏÂÒ»¼¶ËùÐè¾Ñé  
 | 
    def GetAddAttrType(self): return self.AddAttrType # µÈ¼¶¼Ó³ÉÊôÐÔÀàÐÍ  
 | 
    def GetAddAttrNum(self): return self.AddAttrNum # µÈ¼¶¼Ó³ÉÊôÐÔÖµ 
 | 
  
 | 
# Á¶µ¤±í 
 | 
class IPY_Alchemy(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.AlchemyID = 0  
 | 
        self.Material = {}  
 | 
        self.AlchemyExp = 0  
 | 
        self.AlchemyItem = []  
 | 
        self.SpecAlchemyID = []  
 | 
        self.AlchemyUp = []  
 | 
        self.NeedAlchemyLV = 0 
 | 
        return 
 | 
         
 | 
    def GetAlchemyID(self): return self.AlchemyID # Á¶µ¤±àºÅ  
 | 
    def GetMaterial(self): return self.Material # ËùÐèËùÓвÄÁϺÍÊýÁ¿  
 | 
    def GetAlchemyExp(self): return self.AlchemyExp # Á¶µ¤»ñµÃ¾ÑéÖµ  
 | 
    def GetAlchemyItem(self): return self.AlchemyItem # ²ú³öÎïÆ·¼°ÊýÁ¿¼°È¨ÖØ  
 | 
    def GetSpecAlchemyID(self): return self.SpecAlchemyID # ÌØÊâÁ¶µ¤ID×é  
 | 
    def GetAlchemyUp(self): return self.AlchemyUp # ²ú³ö°üº¬µÄ½ø½×µ¤Ò©  
 | 
    def GetNeedAlchemyLV(self): return self.NeedAlchemyLV # ËùÐèÁ¶µ¤µÈ¼¶ 
 | 
  
 | 
# Á¶µ¤ÌØÊâ²ú³ö±í 
 | 
class IPY_AlchemySpec(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.SpecAlchemyID = 0  
 | 
        self.MaterialID = 0  
 | 
        self.MaterialCnt = 0  
 | 
        self.AlchemyExp = 0  
 | 
        self.AlchemyItem = []  
 | 
        self.NeedAlchemyLV = 0 
 | 
        return 
 | 
         
 | 
    def GetSpecAlchemyID(self): return self.SpecAlchemyID # ÌØÊâÁ¶µ¤ID  
 | 
    def GetMaterialID(self): return self.MaterialID # ÌØÊâ²ÄÁÏID  
 | 
    def GetMaterialCnt(self): return self.MaterialCnt # ÌØÊâ²ÄÁÏIDÏûºÄ¸öÊý  
 | 
    def GetAlchemyExp(self): return self.AlchemyExp # ÌØÊâ²ÄÁϾÑé  
 | 
    def GetAlchemyItem(self): return self.AlchemyItem # ²ú³öÎïÆ·¼°ÊýÁ¿¼°È¨ÖØ  
 | 
    def GetNeedAlchemyLV(self): return self.NeedAlchemyLV # ËùÐèÁ¶µ¤µÈ¼¶ 
 | 
  
 | 
# 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 
 | 
        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 
 | 
  
 | 
# ¹ÅÉñ½ûµØ±í 
 | 
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.ChanllengeLv = 0 
 | 
        return 
 | 
         
 | 
    def GetNPCID(self): return self.NPCID # ID  
 | 
    def GetChanllengeLv(self): return self.ChanllengeLv # ¿ÉÌôÕ½µÈ¼¶ 
 | 
  
 | 
# ÏÉÃË»îÔ¾±í 
 | 
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.KillTime = 0 
 | 
        return 
 | 
         
 | 
    def GetNPCID(self): return self.NPCID # ID  
 | 
    def GetLineID(self): return self.LineID  
 | 
    def GetKillTime(self): return self.KillTime # »÷ɱ×Üʱ¼äÃë 
 | 
  
 | 
# ¸±±¾¹ÄÎè±í 
 | 
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 # µ¥´ÎÏûºÄ½ðÇ®ÊýÁ¿ 
 | 
  
 | 
# ·ûÓ¡ºÏ³É±í 
 | 
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.PrepareTime = 0  
 | 
        self.LostHPPer = []  
 | 
        self.MaxCollectCount = 0  
 | 
        self.CollectCountLimitNotify = ""  
 | 
        self.CollectAward = [] 
 | 
        return 
 | 
         
 | 
    def GetNPCID(self): return self.NPCID # ID  
 | 
    def GetPrepareTime(self): return self.PrepareTime # ²É¼¯ºÄʱ£¬Ãë  
 | 
    def GetLostHPPer(self): return self.LostHPPer # ²É¼¯µôѪ£¬[ÿXÃë,µôѪ°Ù·Ö±È]  
 | 
    def GetMaxCollectCount(self): return self.MaxCollectCount # Ã¿Èտɲɼ¯´ÎÊý£¬0ÏÞÖÆ  
 | 
    def GetCollectCountLimitNotify(self): return self.CollectCountLimitNotify # Î޲ɼ¯´ÎÊý²É¼¯Ìáʾ  
 | 
    def GetCollectAward(self): return self.CollectAward # ²É¼¯½±ÀøÎïÆ·£¬ [ÎïÆ·ID,¸öÊý,ÊÇ·ñ°ó¶¨] 
 | 
  
 | 
# ±¦Ïä±í¿ªÆô 
 | 
class IPY_Chests(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.ChestsItemID = 0  
 | 
        self.CostItemID = 0  
 | 
        self.CostItemCount = 0  
 | 
        self.CostGold = 0  
 | 
        self.ShowType = 0  
 | 
        self.IsBind = 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 # ¿ª³öÎïÆ·ÊÇ·ñ°ó¶¨ 
 | 
  
 | 
# ±¦Ïä±í²ú³ö±í 
 | 
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 = [] 
 | 
        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Áбí 
 | 
  
 | 
# 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.DailyBuyCount = 0  
 | 
        self.GainGold = 0  
 | 
        self.GainGoldPrize = 0  
 | 
        self.FirstGoldPrize = 0  
 | 
        self.GainItemList = []  
 | 
        self.NotifyMark = "" 
 | 
        return 
 | 
         
 | 
    def GetRecordID(self): return self.RecordID # ¼Ç¼ID  
 | 
    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_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_GodWeaponEffect(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.GWType = 0  
 | 
        self.Level = 0  
 | 
        self.NotifyCode = ""  
 | 
        self.FightPower = 0  
 | 
        self.Attr = {} 
 | 
        return 
 | 
         
 | 
    def GetGWType(self): return self.GWType # Éñ±øÀàÐÍ  
 | 
    def GetLevel(self): return self.Level # Éñ±øµÈ¼¶  
 | 
    def GetNotifyCode(self): return self.NotifyCode # ¹ã²¥  
 | 
    def GetFightPower(self): return self.FightPower # Ôö¼ÓÕ½Á¦  
 | 
    def GetAttr(self): return self.Attr # ÊôÐÔ¼Ó³É 
 | 
  
 | 
# ¿ç·þ¾º¼¼³¡¶Îλ±í 
 | 
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Áбí 
 | 
  
 | 
# ¿ç·þ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 # ½±ÀøÎïÆ· 
 | 
  
 | 
# ÖïÏÉ×°±¸Ì××°ÊôÐÔ±í 
 | 
class IPY_ZhuXianSuitAttr(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.SuitType = 0  
 | 
        self.SuitLV = 0  
 | 
        self.SuitAttrIDList = []  
 | 
        self.SuitAttrValueList = [] 
 | 
        return 
 | 
         
 | 
    def GetSuitType(self): return self.SuitType # Ì××°ÀàÐÍ  
 | 
    def GetSuitLV(self): return self.SuitLV # Ì××°µÈ¼¶  
 | 
    def GetSuitAttrIDList(self): return self.SuitAttrIDList # ÊôÐÔIDÁÐ±í  
 | 
    def GetSuitAttrValueList(self): return self.SuitAttrValueList # ÊôÐÔÖµÁбí 
 | 
  
 | 
# ÖïÏÉBOSS±í 
 | 
class IPY_ZhuXianBoss(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.NPCID = 0  
 | 
        self.LineID = 0  
 | 
        self.KillTime = 0  
 | 
        self.RealmLV = 0  
 | 
        self.ZhuXianScore = 0 
 | 
        return 
 | 
         
 | 
    def GetNPCID(self): return self.NPCID # ID  
 | 
    def GetLineID(self): return self.LineID  
 | 
    def GetKillTime(self): return self.KillTime # »÷ɱ×Üʱ¼äÃë  
 | 
    def GetRealmLV(self): return self.RealmLV # ÐèÒª¾³½ç  
 | 
    def GetZhuXianScore(self): return self.ZhuXianScore # ÐèÒªÖïÏÉ×ÜÆÀ·Ö 
 | 
  
 | 
# ÖïÏÉËþ±í 
 | 
class IPY_ZhuXianTower(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.ID = 0  
 | 
        self.NPCID = 0  
 | 
        self.FirstAward = []  
 | 
        self.GradeAward = {}  
 | 
        self.UnLockEquipPlace = 0  
 | 
        self.NeedPower = 0 
 | 
        return 
 | 
         
 | 
    def GetID(self): return self.ID # Ëþ±àºÅ  
 | 
    def GetNPCID(self): return self.NPCID # npcid  
 | 
    def GetFirstAward(self): return self.FirstAward # Ê×´ÎS¼¶½±Àø  
 | 
    def GetGradeAward(self): return self.GradeAward # ÆÀ¼¶½±Àø  
 | 
    def GetUnLockEquipPlace(self): return self.UnLockEquipPlace # ½âËøµÄ×°±¸Î»  
 | 
    def GetNeedPower(self): return self.NeedPower # ÍƼöÕ½Á¦ 
 | 
  
 | 
# ÖïÏÉ×°±¸·Ö½â±í 
 | 
class IPY_ZhuXianEquipDecompose(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.ClassLV = 0  
 | 
        self.DecomposeInfo = {} 
 | 
        return 
 | 
         
 | 
    def GetClassLV(self): return self.ClassLV # ½×¼¶  
 | 
    def GetDecomposeInfo(self): return self.DecomposeInfo # {(²ú³öÎïÆ·ID,..):±ýͼ,..} 
 | 
  
 | 
# ½ÚÈÕѲÀñ»î¶¯Ê±¼ä±í 
 | 
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_ZhuXianStoneAttr(): 
 | 
     
 | 
    def __init__(self): 
 | 
        self.SuitType = 0  
 | 
        self.ShareSoneLV = 0  
 | 
        self.AttrIDList = []  
 | 
        self.AttrValueList = [] 
 | 
        return 
 | 
         
 | 
    def GetSuitType(self): return self.SuitType # Ì××°ÀàÐÍ  
 | 
    def GetShareSoneLV(self): return self.ShareSoneLV # ¹²ÃùµÈ¼¶  
 | 
    def GetAttrIDList(self): return self.AttrIDList # ÊôÐÔIDÁÐ±í  
 | 
    def GetAttrValueList(self): return self.AttrValueList # ÊôÐÔÖµÁбí 
 | 
  
 | 
  
 | 
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.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.ipyItemPlusMaxCache = self.__LoadFileData("ItemPlusMax", IPY_ItemPlusMax)  
 | 
        self.ipyItemPlusMaxLen = len(self.ipyItemPlusMaxCache)  
 | 
        self.ipyItemPlusSumAttrCache = self.__LoadFileData("ItemPlusSumAttr", IPY_ItemPlusSumAttr)  
 | 
        self.ipyItemPlusSumAttrLen = len(self.ipyItemPlusSumAttrCache)  
 | 
        self.ipyRoleEquipStarsCache = self.__LoadFileData("RoleEquipStars", IPY_RoleEquipStars)  
 | 
        self.ipyRoleEquipStarsLen = len(self.ipyRoleEquipStarsCache)  
 | 
        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.ipyEquipWashSpecCache = self.__LoadFileData("EquipWashSpec", IPY_EquipWashSpec)  
 | 
        self.ipyEquipWashSpecLen = len(self.ipyEquipWashSpecCache)  
 | 
        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.ipyHorseCache = self.__LoadFileData("Horse", IPY_Horse)  
 | 
        self.ipyHorseLen = len(self.ipyHorseCache)  
 | 
        self.ipyHorseUpCache = self.__LoadFileData("HorseUp", IPY_HorseUp)  
 | 
        self.ipyHorseUpLen = len(self.ipyHorseUpCache)  
 | 
        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.ipyEquipSuitAttrCache = self.__LoadFileData("EquipSuitAttr", IPY_EquipSuitAttr)  
 | 
        self.ipyEquipSuitAttrLen = len(self.ipyEquipSuitAttrCache)  
 | 
        self.ipyEquipSuitCompoundCache = self.__LoadFileData("EquipSuitCompound", IPY_EquipSuitCompound)  
 | 
        self.ipyEquipSuitCompoundLen = len(self.ipyEquipSuitCompoundCache)  
 | 
        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.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.ipyTreasurePrivilegeCache = self.__LoadFileData("TreasurePrivilege", IPY_TreasurePrivilege)  
 | 
        self.ipyTreasurePrivilegeLen = len(self.ipyTreasurePrivilegeCache)  
 | 
        self.ipyTreasureSkillCache = self.__LoadFileData("TreasureSkill", IPY_TreasureSkill)  
 | 
        self.ipyTreasureSkillLen = len(self.ipyTreasureSkillCache)  
 | 
        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.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.ipyTreasureRefineCache = self.__LoadFileData("TreasureRefine", IPY_TreasureRefine)  
 | 
        self.ipyTreasureRefineLen = len(self.ipyTreasureRefineCache)  
 | 
        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.ipyAlchemySpecCache = self.__LoadFileData("AlchemySpec", IPY_AlchemySpec)  
 | 
        self.ipyAlchemySpecLen = len(self.ipyAlchemySpecCache)  
 | 
        self.ipyBOSSInfoCache = self.__LoadFileData("BOSSInfo", IPY_BOSSInfo)  
 | 
        self.ipyBOSSInfoLen = len(self.ipyBOSSInfoCache)  
 | 
        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.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.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.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.ipyGodWeaponEffectCache = self.__LoadFileData("GodWeaponEffect", IPY_GodWeaponEffect)  
 | 
        self.ipyGodWeaponEffectLen = len(self.ipyGodWeaponEffectCache)  
 | 
        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.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.ipyZhuXianSuitAttrCache = self.__LoadFileData("ZhuXianSuitAttr", IPY_ZhuXianSuitAttr)  
 | 
        self.ipyZhuXianSuitAttrLen = len(self.ipyZhuXianSuitAttrCache)  
 | 
        self.ipyZhuXianBossCache = self.__LoadFileData("ZhuXianBoss", IPY_ZhuXianBoss)  
 | 
        self.ipyZhuXianBossLen = len(self.ipyZhuXianBossCache)  
 | 
        self.ipyZhuXianTowerCache = self.__LoadFileData("ZhuXianTower", IPY_ZhuXianTower)  
 | 
        self.ipyZhuXianTowerLen = len(self.ipyZhuXianTowerCache)  
 | 
        self.ipyZhuXianEquipDecomposeCache = self.__LoadFileData("ZhuXianEquipDecompose", IPY_ZhuXianEquipDecompose)  
 | 
        self.ipyZhuXianEquipDecomposeLen = len(self.ipyZhuXianEquipDecomposeCache)  
 | 
        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.ipyZhuXianStoneAttrCache = self.__LoadFileData("ZhuXianStoneAttr", IPY_ZhuXianStoneAttr)  
 | 
        self.ipyZhuXianStoneAttrLen = len(self.ipyZhuXianStoneAttrCache)  
 | 
        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 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 GetItemPlusMaxCount(self): return self.ipyItemPlusMaxLen  
 | 
    def GetItemPlusMaxByIndex(self, index): return self.ipyItemPlusMaxCache[index]  
 | 
    def GetItemPlusSumAttrCount(self): return self.ipyItemPlusSumAttrLen  
 | 
    def GetItemPlusSumAttrByIndex(self, index): return self.ipyItemPlusSumAttrCache[index]  
 | 
    def GetRoleEquipStarsCount(self): return self.ipyRoleEquipStarsLen  
 | 
    def GetRoleEquipStarsByIndex(self, index): return self.ipyRoleEquipStarsCache[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 GetEquipWashSpecCount(self): return self.ipyEquipWashSpecLen  
 | 
    def GetEquipWashSpecByIndex(self, index): return self.ipyEquipWashSpecCache[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 GetHorseCount(self): return self.ipyHorseLen  
 | 
    def GetHorseByIndex(self, index): return self.ipyHorseCache[index]  
 | 
    def GetHorseUpCount(self): return self.ipyHorseUpLen  
 | 
    def GetHorseUpByIndex(self, index): return self.ipyHorseUpCache[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 GetEquipSuitAttrCount(self): return self.ipyEquipSuitAttrLen  
 | 
    def GetEquipSuitAttrByIndex(self, index): return self.ipyEquipSuitAttrCache[index]  
 | 
    def GetEquipSuitCompoundCount(self): return self.ipyEquipSuitCompoundLen  
 | 
    def GetEquipSuitCompoundByIndex(self, index): return self.ipyEquipSuitCompoundCache[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 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 GetTreasurePrivilegeCount(self): return self.ipyTreasurePrivilegeLen  
 | 
    def GetTreasurePrivilegeByIndex(self, index): return self.ipyTreasurePrivilegeCache[index]  
 | 
    def GetTreasureSkillCount(self): return self.ipyTreasureSkillLen  
 | 
    def GetTreasureSkillByIndex(self, index): return self.ipyTreasureSkillCache[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 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 GetTreasureRefineCount(self): return self.ipyTreasureRefineLen  
 | 
    def GetTreasureRefineByIndex(self, index): return self.ipyTreasureRefineCache[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 GetAlchemySpecCount(self): return self.ipyAlchemySpecLen  
 | 
    def GetAlchemySpecByIndex(self, index): return self.ipyAlchemySpecCache[index]  
 | 
    def GetBOSSInfoCount(self): return self.ipyBOSSInfoLen  
 | 
    def GetBOSSInfoByIndex(self, index): return self.ipyBOSSInfoCache[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 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 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 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 GetGodWeaponEffectCount(self): return self.ipyGodWeaponEffectLen  
 | 
    def GetGodWeaponEffectByIndex(self, index): return self.ipyGodWeaponEffectCache[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 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 GetZhuXianSuitAttrCount(self): return self.ipyZhuXianSuitAttrLen  
 | 
    def GetZhuXianSuitAttrByIndex(self, index): return self.ipyZhuXianSuitAttrCache[index]  
 | 
    def GetZhuXianBossCount(self): return self.ipyZhuXianBossLen  
 | 
    def GetZhuXianBossByIndex(self, index): return self.ipyZhuXianBossCache[index]  
 | 
    def GetZhuXianTowerCount(self): return self.ipyZhuXianTowerLen  
 | 
    def GetZhuXianTowerByIndex(self, index): return self.ipyZhuXianTowerCache[index]  
 | 
    def GetZhuXianEquipDecomposeCount(self): return self.ipyZhuXianEquipDecomposeLen  
 | 
    def GetZhuXianEquipDecomposeByIndex(self, index): return self.ipyZhuXianEquipDecomposeCache[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 GetZhuXianStoneAttrCount(self): return self.ipyZhuXianStoneAttrLen  
 | 
    def GetZhuXianStoneAttrByIndex(self, index): return self.ipyZhuXianStoneAttrCache[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  
 | 
  
 |