|  |  | 
 |  |  |                         ("list", "BaseAttrTypes", 0),
 | 
 |  |  |                         ("list", "BaseAttrValues", 0),
 | 
 |  |  |                         ("list", "HelpBattleSkills", 0),
 | 
 |  |  |                         ("DWORD", "FightPowerEx", 0),
 | 
 |  |  |                         ("list", "EquipPlaceColorList", 0),
 | 
 |  |  |                         ("list", "HelpBattleNotify", 0),
 | 
 |  |  |                         ),
 | 
 |  |  | 
 | 
 |  |  |                 "DogzEquipPlus":(
 | 
 |  |  | 
 |  |  |                         ("DWORD", "NPCID", 1),
 | 
 |  |  |                         ("BYTE", "IsStrengthenByPlayerCount", 0),
 | 
 |  |  |                         ("BYTE", "LVStrengthenType", 0),
 | 
 |  |  |                         ("BYTE", "CmpNPCBaseLV", 0),
 | 
 |  |  |                         ("DWORD", "HitTime", 0),
 | 
 |  |  |                         ("DWORD", "DefCoefficient", 0),
 | 
 |  |  |                         ("DWORD", "AtkCoefficient", 0),
 | 
 |  |  | 
 |  |  |                         ("DWORD", "SpeedPerC", 0),
 | 
 |  |  |                         ("DWORD", "AtkSpeedC", 0),
 | 
 |  |  |                         ("DWORD", "SkillAtkRateReduceC", 0),
 | 
 |  |  |                         ("DWORD", "HitC", 0),
 | 
 |  |  |                         ("DWORD", "MissC", 0),
 | 
 |  |  |                         ),
 | 
 |  |  | 
 | 
 |  |  |                 "Success":(
 | 
 |  |  | 
 |  |  |                         ("DWORD", "PreTreasure", 0),
 | 
 |  |  |                         ("list", "SuccID", 0),
 | 
 |  |  |                         ("list", "Potentials", 0),
 | 
 |  |  |                         ("list", "SkillPower", 0),
 | 
 |  |  |                         ("dict", "NeedItem", 0),
 | 
 |  |  |                         ),
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |                         ("list", "UnLockSkill", 0),
 | 
 |  |  |                         ("DWORD", "ActiveMWID", 0),
 | 
 |  |  |                         ("list", "ItemAward", 0),
 | 
 |  |  |                         ("DWORD", "ActiveSoulID", 0),
 | 
 |  |  |                         ),
 | 
 |  |  | 
 | 
 |  |  |                 "TreasurePrivilege":(
 | 
 |  |  | 
 |  |  |                         ("list", "LimitVIPLV", 0),
 | 
 |  |  |                         ("DWORD", "LimitLV", 0),
 | 
 |  |  |                         ("list", "LimitCnt", 0),
 | 
 |  |  |                         ("DWORD", "ServerLimitCnt", 0),
 | 
 |  |  |                         ("BYTE", "MoneyType", 0),
 | 
 |  |  |                         ("DWORD", "MoneyNum", 0),
 | 
 |  |  |                         ("DWORD", "MoneyOriginal", 0),
 | 
 |  |  | 
 |  |  |                         ("list", "RandTimeList1", 0),
 | 
 |  |  |                         ("list", "RandItemList2", 0),
 | 
 |  |  |                         ("list", "RandTimeList2", 0),
 | 
 |  |  |                         ("dict", "RandItemByUseCount", 0),
 | 
 |  |  |                         ("list", "JobItemList", 0),
 | 
 |  |  |                         ("BYTE", "MoneyType", 0),
 | 
 |  |  |                         ("DWORD", "MoneyCount", 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),
 | 
 |  |  |                         ),
 | 
 |  |  |                 }
 | 
 |  |  | 
 | 
 |  |  |  | 
 |  |  | 
 |  |  |         self.BaseAttrTypes = []
 | 
 |  |  |         self.BaseAttrValues = []
 | 
 |  |  |         self.HelpBattleSkills = []
 | 
 |  |  |         self.EquipPlaceColorList = [] | 
 |  |  |         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 GetEquipPlaceColorList(self): return self.EquipPlaceColorList # 穿戴装备颜色限制 | 
 |  |  |     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(): | 
 |  |  | 
 |  |  |         self.NPCID = 0
 | 
 |  |  |         self.IsStrengthenByPlayerCount = 0
 | 
 |  |  |         self.LVStrengthenType = 0
 | 
 |  |  |         self.CmpNPCBaseLV = 0
 | 
 |  |  |         self.HitTime = 0
 | 
 |  |  |         self.DefCoefficient = 0
 | 
 |  |  |         self.AtkCoefficient = 0
 | 
 |  |  | 
 |  |  |     def GetNPCID(self): return self.NPCID # NPCID
 | 
 |  |  |     def GetIsStrengthenByPlayerCount(self): return self.IsStrengthenByPlayerCount # 是否根据人数成长
 | 
 |  |  |     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 # 人物攻击系数
 | 
 |  |  | 
 |  |  |         self.SkillAtkRateC = 0
 | 
 |  |  |         self.SpeedPerC = 0
 | 
 |  |  |         self.AtkSpeedC = 0
 | 
 |  |  |         self.SkillAtkRateReduceC = 0 | 
 |  |  |         self.SkillAtkRateReduceC = 0
 | 
 |  |  |         self.HitC = 0
 | 
 |  |  |         self.MissC = 0 | 
 |  |  |         return | 
 |  |  |          | 
 |  |  |     def GetClassLV(self): return self.ClassLV #  装备阶级
 | 
 |  |  | 
 |  |  |     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 GetSkillAtkRateReduceC(self): return self.SkillAtkRateReduceC #  技能减伤百分比系数
 | 
 |  |  |     def GetHitC(self): return self.HitC #  命中系数
 | 
 |  |  |     def GetMissC(self): return self.MissC #  闪避系数 | 
 |  |  |  | 
 |  |  | # 成就表 | 
 |  |  | class IPY_Success(): | 
 |  |  | 
 |  |  |         self.PreTreasure = 0
 | 
 |  |  |         self.SuccID = []
 | 
 |  |  |         self.Potentials = []
 | 
 |  |  |         self.SkillPower = []
 | 
 |  |  |         self.NeedItem = {} | 
 |  |  |         return | 
 |  |  |          | 
 |  |  | 
 |  |  |     def GetPreTreasure(self): return self.PreTreasure # 前置法宝
 | 
 |  |  |     def GetSuccID(self): return self.SuccID # 成就ID
 | 
 |  |  |     def GetPotentials(self): return self.Potentials # 技能潜力升级
 | 
 |  |  |     def GetSkillPower(self): return self.SkillPower # 技能解锁战力
 | 
 |  |  |     def GetNeedItem(self): return self.NeedItem # 需要消耗物品 | 
 |  |  |  | 
 |  |  | # 法宝升级表 | 
 |  |  | 
 |  |  |         self.AddAttr = {}
 | 
 |  |  |         self.UnLockSkill = []
 | 
 |  |  |         self.ActiveMWID = 0
 | 
 |  |  |         self.ItemAward = [] | 
 |  |  |         self.ItemAward = []
 | 
 |  |  |         self.ActiveSoulID = 0 | 
 |  |  |         return | 
 |  |  |          | 
 |  |  |     def GetMWID(self): return self.MWID # 法宝ID
 | 
 |  |  | 
 |  |  |     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 GetItemAward(self): return self.ItemAward # 物品奖励[itemID,cnt,isbind]
 | 
 |  |  |     def GetActiveSoulID(self): return self.ActiveSoulID # 激活魂ID | 
 |  |  |  | 
 |  |  | # 法宝特权表 | 
 |  |  | class IPY_TreasurePrivilege(): | 
 |  |  | 
 |  |  |         self.LimitVIPLV = []
 | 
 |  |  |         self.LimitLV = 0
 | 
 |  |  |         self.LimitCnt = []
 | 
 |  |  |         self.ServerLimitCnt = 0
 | 
 |  |  |         self.MoneyType = 0
 | 
 |  |  |         self.MoneyNum = 0
 | 
 |  |  |         self.MoneyOriginal = 0
 | 
 |  |  | 
 |  |  |     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 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 # 原价
 | 
 |  |  | 
 |  |  |         self.RandTimeList1 = []
 | 
 |  |  |         self.RandItemList2 = []
 | 
 |  |  |         self.RandTimeList2 = []
 | 
 |  |  |         self.RandItemByUseCount = {}
 | 
 |  |  |         self.JobItemList = []
 | 
 |  |  |         self.MoneyType = 0
 | 
 |  |  |         self.MoneyCount = 0
 | 
 |  |  | 
 |  |  |     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 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 # 活动更新时发送邮件奖励物品 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | def Log(msg, playerID=0, par=0):
 | 
 |  |  | 
 |  |  |         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)
 | 
 |  |  |         Log("IPY_FuncConfig count=%s" % len(self.ipyFuncConfigDict))
 | 
 |  |  |         Log("IPY_DataMgr InitOK!")
 | 
 |  |  |         return
 | 
 |  |  | 
 |  |  |     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]
 | 
 |  |  | 
 | 
 |  |  | IPYData = IPY_DataMgr()
 | 
 |  |  | def IPY_Data(): return IPYData
 | 
 |  |  | 
 |  |  |     '''查询条件下与对应查询字段参考值相近的数据实例;参考值小于配置表最小值时返回none,大于最大值时返回最大值对应的实例
 | 
 |  |  |     @param dtName: 表名,不含tag
 | 
 |  |  |     @param keyName: 参考字段名
 | 
 |  |  |     @param keyValue: 参考字段值
 | 
 |  |  |     @param keyValue: 参考字段值,大于等于字段值时返回对应数据
 | 
 |  |  |     @param conditionDict: 查询条件,{查询字段名:字段值, ...}
 | 
 |  |  |     @return: 找不到数据返回 None , 否则返回对应的 ipyData 数据实例
 | 
 |  |  |     '''
 | 
 |  |  | 
 |  |  |         for i in xrange(near - 1, low - 1, -1):
 | 
 |  |  |             nearData = dataList[i]
 | 
 |  |  |             nearValue = getattr(nearData, "%s" % keyName)
 | 
 |  |  |             if nearValue < keyValue:
 | 
 |  |  |             if nearValue <= keyValue:
 | 
 |  |  |                 return nearData
 | 
 |  |  |             
 | 
 |  |  |     elif keyValue > nearValue:
 |