xdh
2019-01-22 ccaefa2a93fb82d0db5fc7e74832a292fb860984
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -298,6 +298,7 @@
                "NPCStrengthen":(
                        ("DWORD", "NPCID", 1),
                        ("BYTE", "IsStrengthenByPlayerCount", 0),
                        ("BYTE", "LVStrengthenMark", 0),
                        ("BYTE", "LVStrengthenType", 0),
                        ("BYTE", "CmpNPCBaseLV", 0),
                        ("DWORD", "HitTime", 0),
@@ -804,6 +805,16 @@
                        ("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":(
@@ -1129,6 +1140,123 @@
                        ("char", "NotifyCode", 0),
                        ("DWORD", "FightPower", 0),
                        ("dict", "Attr", 0),
                        ),
                "CrossRealmPKDan":(
                        ("BYTE", "DanLV", 1),
                        ("list", "DanLVAwardList", 0),
                        ("list", "SeasonDanLVAwardList", 0),
                        ),
                "CrossPenglaiZone":(
                        ("BYTE", "ZoneID", 0),
                        ("list", "ServerGroupIDList", 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),
                        ),
                "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),
                        ),
                }
@@ -1689,6 +1817,7 @@
    def __init__(self):
        self.NPCID = 0
        self.IsStrengthenByPlayerCount = 0
        self.LVStrengthenMark = 0
        self.LVStrengthenType = 0
        self.CmpNPCBaseLV = 0
        self.HitTime = 0
@@ -1707,6 +1836,7 @@
        
    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 # 受击次数
@@ -2736,7 +2866,8 @@
        self.VipCostJade = 0
        self.JadeReward = {}
        self.CostCopper = 0
        self.CopperReward = {}
        self.CopperReward = {}
        self.JobItemList = []
        return
        
    def GetID(self): return self.ID # ID
@@ -2746,7 +2877,27 @@
    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 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():
@@ -3435,6 +3586,254 @@
    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.DanLVAwardList = []
        self.SeasonDanLVAwardList = []
        return
    def GetDanLV(self): return self.DanLV # 段位等级
    def GetDanLVAwardList(self): return self.DanLVAwardList # 段位达标奖励物品列表
    def GetSeasonDanLVAwardList(self): return self.SeasonDanLVAwardList # 赛季段位奖励物品列表
# 跨服Boss蓬莱仙境分区表
class IPY_CrossPenglaiZone():
    def __init__(self):
        self.ZoneID = 0
        self.ServerGroupIDList = []
        self.MapID = 0
        self.DataMapID = 0
        self.CopyMapID = 0
        self.PosX = 0
        self.PosY = 0
        return
    def GetZoneID(self): return self.ZoneID # 分区ID
    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器组ID列表
    def GetMapID(self): return self.MapID # 场景地图ID
    def GetDataMapID(self): return self.DataMapID # 数据地图ID
    def GetCopyMapID(self): return self.CopyMapID # 虚拟线路ID
    def GetPosX(self): return self.PosX # 坐标X
    def GetPosY(self): return self.PosY # 坐标Y
# 聚魂表
class IPY_GatherSoul():
    def __init__(self):
        self.ItemID = 0
        self.AttrType = []
        self.SoulGrade = 0
        return
    def GetItemID(self): return self.ItemID # 物品ID
    def GetAttrType(self): return self.AttrType # 属性类型
    def GetSoulGrade(self): return self.SoulGrade # 魂阶段
# 聚魂合成表
class IPY_GatherSoulCompound():
    def __init__(self):
        self.TagItemID = 0
        self.NeedLV = 0
        self.NeedItem = []
        self.NeedSoulSplinters = 0
        self.NeedSoulCore = 0
        return
    def GetTagItemID(self): return self.TagItemID # 合成的物品ID
    def GetNeedLV(self): return self.NeedLV # 需要的玩家等级
    def GetNeedItem(self): return self.NeedItem # 需要的物品ID
    def GetNeedSoulSplinters(self): return self.NeedSoulSplinters # 需要的聚魂碎片
    def GetNeedSoulCore(self): return self.NeedSoulCore # 需要的核心环
# 聚魂属性表
class IPY_GatherSoulAttr():
    def __init__(self):
        self.AttrType = 0
        self.AttrInfo1 = ""
        self.AttrInfo2 = {}
        self.AttrInfo3 = {}
        self.AttrInfo4 = {}
        self.AttrInfo5 = {}
        return
    def GetAttrType(self): return self.AttrType # 属性类型
    def GetAttrInfo1(self): return self.AttrInfo1 # 基础属性-参数聚魂等级level
    def GetAttrInfo2(self): return self.AttrInfo2 # 品质系数(品质_系数|…)
    def GetAttrInfo3(self): return self.AttrInfo3 # 多属性系数
    def GetAttrInfo4(self): return self.AttrInfo4 # 初始属性(品质_属性值|…)
    def GetAttrInfo5(self): return self.AttrInfo5 # 阶段系数
# 王者法宝表
class IPY_MagicWeaponOfKing():
    def __init__(self):
        self.MWID = 0
        self.AwardMark = 0
        self.AddAttr = {}
        return
    def GetMWID(self): return self.MWID # 法宝ID
    def GetAwardMark(self): return self.AwardMark # 赛季奖励等级
    def GetAddAttr(self): return self.AddAttr # 属性
# 时装表
class IPY_Coat():
    def __init__(self):
        self.CoatID = 0
        self.EquipItemID = []
        self.UnlockItemID = 0
        self.MaxLV = 0
        self.CostItemCnt = []
        self.StarAttr = {}
        return
    def GetCoatID(self): return self.CoatID # 时装编号
    def GetEquipItemID(self): return self.EquipItemID # 装备物品ID(按职业顺序)
    def GetUnlockItemID(self): return self.UnlockItemID # 材料物品ID
    def GetMaxLV(self): return self.MaxLV # 最大星级
    def GetCostItemCnt(self): return self.CostItemCnt # 材料数量
    def GetStarAttr(self): return self.StarAttr # 属性
# 时装柜升级表
class IPY_CoatChestUp():
    def __init__(self):
        self.LV = 0
        self.NeedExp = 0
        self.AddAttr = {}
        return
    def GetLV(self): return self.LV # 等级
    def GetNeedExp(self): return self.NeedExp # 升级所需经验
    def GetAddAttr(self): return self.AddAttr # 属性
# 周狂欢活动时间表
class IPY_ActWeekParty():
    def __init__(self):
        self.CfgID = 0
        self.StartDate = ""
        self.EndDate = ""
        self.AdvanceMinutes = 0
        self.IsDayReset = 0
        self.ResetType = 0
        self.LVLimit = 0
        self.TemplateID = []
        self.PointAward = {}
        return
    def GetCfgID(self): return self.CfgID # 配置ID
    def GetStartDate(self): return self.StartDate # 开启日期
    def GetEndDate(self): return self.EndDate # 结束日期
    def GetAdvanceMinutes(self): return self.AdvanceMinutes # 前端提前X分钟展示活动
    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
    def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
    def GetLVLimit(self): return self.LVLimit # 限制等级
    def GetTemplateID(self): return self.TemplateID # 模板编号
    def GetPointAward(self): return self.PointAward # 总积分奖励
# 周狂欢表
class IPY_WeekParty():
    def __init__(self):
        self.TemplateID = 0
        self.ActionType = 0
        self.TotalTimes = 0
        self.SingleTimes = 0
        self.Reward = []
        self.Point = 0
        return
    def GetTemplateID(self): return self.TemplateID # 模板ID
    def GetActionType(self): return self.ActionType # 活动条目ID
    def GetTotalTimes(self): return self.TotalTimes # 可完成的总次数,0表示不限次数
    def GetSingleTimes(self): return self.SingleTimes # 单次领奖需要的次数
    def GetReward(self): return self.Reward # 奖励物品
    def GetPoint(self): return self.Point # 积分
# 登录奖励时间表
class IPY_ActLoginAward():
    def __init__(self):
        self.CfgID = 0
        self.StartDate = ""
        self.EndDate = ""
        self.AdvanceMinutes = 0
        self.IsDayReset = 0
        self.ResetType = 0
        self.LVLimit = 0
        self.TemplateID = []
        return
    def GetCfgID(self): return self.CfgID # 配置ID
    def GetStartDate(self): return self.StartDate # 开启日期
    def GetEndDate(self): return self.EndDate # 结束日期
    def GetAdvanceMinutes(self): return self.AdvanceMinutes # 前端提前X分钟展示活动
    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
    def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
    def GetLVLimit(self): return self.LVLimit # 限制等级
    def GetTemplateID(self): return self.TemplateID # 模板编号
# 登录奖励模板表
class IPY_LoginAward():
    def __init__(self):
        self.TemplateID = 0
        self.ActionType = 0
        self.TotalTimes = 0
        self.SingleTimes = 0
        self.Reward = []
        return
    def GetTemplateID(self): return self.TemplateID # 模板ID
    def GetActionType(self): return self.ActionType # 活动条目ID
    def GetTotalTimes(self): return self.TotalTimes # 可完成的总次数,0表示不限次数
    def GetSingleTimes(self): return self.SingleTimes # 单次领奖需要的次数
    def GetReward(self): return self.Reward # 奖励物品
# 诛仙BOSS表
class IPY_ZhuXianBoss():
    def __init__(self):
        self.NPCID = 0
        self.LineID = 0
        self.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 # 推荐战力
def Log(msg, playerID=0, par=0):
@@ -3594,6 +3993,8 @@
        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)
@@ -3670,6 +4071,34 @@
        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.ipyCrossPenglaiZoneCache = self.__LoadFileData("CrossPenglaiZone", IPY_CrossPenglaiZone)
        self.ipyCrossPenglaiZoneLen = len(self.ipyCrossPenglaiZoneCache)
        self.ipyGatherSoulCache = self.__LoadFileData("GatherSoul", IPY_GatherSoul)
        self.ipyGatherSoulLen = len(self.ipyGatherSoulCache)
        self.ipyGatherSoulCompoundCache = self.__LoadFileData("GatherSoulCompound", IPY_GatherSoulCompound)
        self.ipyGatherSoulCompoundLen = len(self.ipyGatherSoulCompoundCache)
        self.ipyGatherSoulAttrCache = self.__LoadFileData("GatherSoulAttr", IPY_GatherSoulAttr)
        self.ipyGatherSoulAttrLen = len(self.ipyGatherSoulAttrCache)
        self.ipyMagicWeaponOfKingCache = self.__LoadFileData("MagicWeaponOfKing", IPY_MagicWeaponOfKing)
        self.ipyMagicWeaponOfKingLen = len(self.ipyMagicWeaponOfKingCache)
        self.ipyCoatCache = self.__LoadFileData("Coat", IPY_Coat)
        self.ipyCoatLen = len(self.ipyCoatCache)
        self.ipyCoatChestUpCache = self.__LoadFileData("CoatChestUp", IPY_CoatChestUp)
        self.ipyCoatChestUpLen = len(self.ipyCoatChestUpCache)
        self.ipyActWeekPartyCache = self.__LoadFileData("ActWeekParty", IPY_ActWeekParty)
        self.ipyActWeekPartyLen = len(self.ipyActWeekPartyCache)
        self.ipyWeekPartyCache = self.__LoadFileData("WeekParty", IPY_WeekParty)
        self.ipyWeekPartyLen = len(self.ipyWeekPartyCache)
        self.ipyActLoginAwardCache = self.__LoadFileData("ActLoginAward", IPY_ActLoginAward)
        self.ipyActLoginAwardLen = len(self.ipyActLoginAwardCache)
        self.ipyLoginAwardCache = self.__LoadFileData("LoginAward", IPY_LoginAward)
        self.ipyLoginAwardLen = len(self.ipyLoginAwardCache)
        self.ipyZhuXianBossCache = self.__LoadFileData("ZhuXianBoss", IPY_ZhuXianBoss)
        self.ipyZhuXianBossLen = len(self.ipyZhuXianBossCache)
        self.ipyZhuXianTowerCache = self.__LoadFileData("ZhuXianTower", IPY_ZhuXianTower)
        self.ipyZhuXianTowerLen = len(self.ipyZhuXianTowerCache)
        Log("IPY_FuncConfig count=%s" % len(self.ipyFuncConfigDict))
        Log("IPY_DataMgr InitOK!")
        return
@@ -3970,6 +4399,8 @@
    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
@@ -4046,6 +4477,34 @@
    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 GetCrossPenglaiZoneCount(self): return self.ipyCrossPenglaiZoneLen
    def GetCrossPenglaiZoneByIndex(self, index): return self.ipyCrossPenglaiZoneCache[index]
    def GetGatherSoulCount(self): return self.ipyGatherSoulLen
    def GetGatherSoulByIndex(self, index): return self.ipyGatherSoulCache[index]
    def GetGatherSoulCompoundCount(self): return self.ipyGatherSoulCompoundLen
    def GetGatherSoulCompoundByIndex(self, index): return self.ipyGatherSoulCompoundCache[index]
    def GetGatherSoulAttrCount(self): return self.ipyGatherSoulAttrLen
    def GetGatherSoulAttrByIndex(self, index): return self.ipyGatherSoulAttrCache[index]
    def GetMagicWeaponOfKingCount(self): return self.ipyMagicWeaponOfKingLen
    def GetMagicWeaponOfKingByIndex(self, index): return self.ipyMagicWeaponOfKingCache[index]
    def GetCoatCount(self): return self.ipyCoatLen
    def GetCoatByIndex(self, index): return self.ipyCoatCache[index]
    def GetCoatChestUpCount(self): return self.ipyCoatChestUpLen
    def GetCoatChestUpByIndex(self, index): return self.ipyCoatChestUpCache[index]
    def GetActWeekPartyCount(self): return self.ipyActWeekPartyLen
    def GetActWeekPartyByIndex(self, index): return self.ipyActWeekPartyCache[index]
    def GetWeekPartyCount(self): return self.ipyWeekPartyLen
    def GetWeekPartyByIndex(self, index): return self.ipyWeekPartyCache[index]
    def GetActLoginAwardCount(self): return self.ipyActLoginAwardLen
    def GetActLoginAwardByIndex(self, index): return self.ipyActLoginAwardCache[index]
    def GetLoginAwardCount(self): return self.ipyLoginAwardLen
    def GetLoginAwardByIndex(self, index): return self.ipyLoginAwardCache[index]
    def GetZhuXianBossCount(self): return self.ipyZhuXianBossLen
    def GetZhuXianBossByIndex(self, index): return self.ipyZhuXianBossCache[index]
    def GetZhuXianTowerCount(self): return self.ipyZhuXianTowerLen
    def GetZhuXianTowerByIndex(self, index): return self.ipyZhuXianTowerCache[index]
IPYData = IPY_DataMgr()
def IPY_Data(): return IPYData