From af061eb963b3d4c97f3d71424f42f89f4ff3b498 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期一, 08 十月 2018 14:03:28 +0800 Subject: [PATCH] 2091 【主干】【1.0.18】神兽背包满情况下拾取错误导致内存泄露 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 295 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 262 insertions(+), 33 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py index 9d231c9..6c738f8 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py @@ -94,6 +94,7 @@ ("WORD", "SuccessRateMax", 0), ("BYTE", "AddonsCountMax", 0), ("char", "SysMark", 0), + ("BYTE", "SysMarkParamType", 0), ), "ItemPlus":( @@ -130,7 +131,9 @@ ("list", "BaseAttrTypes", 0), ("list", "BaseAttrValues", 0), ("list", "HelpBattleSkills", 0), + ("DWORD", "FightPowerEx", 0), ("list", "EquipPlaceColorList", 0), + ("list", "HelpBattleNotify", 0), ), "DogzEquipPlus":( @@ -289,6 +292,7 @@ ("DWORD", "NPCID", 1), ("BYTE", "IsStrengthenByPlayerCount", 0), ("BYTE", "LVStrengthenType", 0), + ("BYTE", "CmpNPCBaseLV", 0), ("DWORD", "HitTime", 0), ("DWORD", "DefCoefficient", 0), ("DWORD", "AtkCoefficient", 0), @@ -495,6 +499,9 @@ ("DWORD", "SkillAtkRateC", 0), ("DWORD", "SpeedPerC", 0), ("DWORD", "AtkSpeedC", 0), + ("DWORD", "SkillAtkRateReduceC", 0), + ("DWORD", "HitC", 0), + ("DWORD", "MissC", 0), ), "Success":( @@ -518,6 +525,7 @@ ("DWORD", "PreTreasure", 0), ("list", "SuccID", 0), ("list", "Potentials", 0), + ("list", "SkillPower", 0), ("dict", "NeedItem", 0), ), @@ -529,6 +537,7 @@ ("list", "UnLockSkill", 0), ("DWORD", "ActiveMWID", 0), ("list", "ItemAward", 0), + ("DWORD", "ActiveSoulID", 0), ), "TreasurePrivilege":( @@ -632,9 +641,12 @@ ("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), ), "DailyQuest":( @@ -697,6 +709,9 @@ ("DWORD", "NPCID", 1), ("DWORD", "MapID", 0), ("BYTE", "RefreshMark", 0), + ("BYTE", "IsNeedShunt", 0), + ("BYTE", "RelatedType", 0), + ("WORD", "RelatedID", 0), ("DWORD", "StoneNPCID", 0), ), @@ -745,7 +760,7 @@ ("DWORD", "DataMapID", 1), ("BYTE", "InspireType", 1), ("WORD", "InspireMaxLV", 0), - ("DWORD", "MoneyCount", 0), + ("char", "MoneyCount", 0), ), "RuneCompound":( @@ -783,6 +798,7 @@ ("list", "RandTimeList1", 0), ("list", "RandItemList2", 0), ("list", "RandTimeList2", 0), + ("dict", "RandItemByUseCount", 0), ("list", "JobItemList", 0), ("BYTE", "MoneyType", 0), ("DWORD", "MoneyCount", 0), @@ -879,6 +895,8 @@ ("dict", "GridItemInfo", 0), ("list", "JobItemList", 0), ("list", "GridItemRateListFree", 0), + ("list", "FreeGridItemRateList2", 0), + ("dict", "FreeGridItemRateList3", 0), ("list", "GridItemRateList1", 0), ("list", "GridItemRateList2", 0), ("dict", "GridItemRateList3", 0), @@ -898,9 +916,12 @@ ("char", "EndDate", 0), ("list", "StartTimeList", 0), ("list", "EndTimeList", 0), + ("WORD", "AdvanceMinutes", 0), ("WORD", "LVLimit", 0), ("BYTE", "IsDayReset", 0), - ("list", "GiftbagList", 0), + ("list", "GiftbagTypeList", 0), + ("char", "MailKey", 0), + ("list", "MailItemPrize", 0), ), "FlashGiftbag":( @@ -913,6 +934,21 @@ ("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), @@ -921,12 +957,27 @@ ("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), ("list", "Reward", 0), + ), + + "ActRealmPoint":( + ("DWORD", "CfgID", 1), + ("WORD", "Multiple", 0), + ("WORD", "LVLimit", 0), ), "TrialExchange":( @@ -949,6 +1000,20 @@ ("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), ), } @@ -1072,7 +1137,8 @@ self.SuccessRate = 0 self.SuccessRateMax = 0 self.AddonsCountMax = 0 - self.SysMark = "" + self.SysMark = "" + self.SysMarkParamType = 0 return def GetID(self): return self.ID # 合成配置编号ID @@ -1085,7 +1151,8 @@ def GetSuccessRate(self): return self.SuccessRate # 成功率万分率 def GetSuccessRateMax(self): return self.SuccessRateMax # 最大成功率万分率 def GetAddonsCountMax(self): return self.AddonsCountMax # 最大可附加材料数, 增加概率用, 非必须, 0代表不可附加材料 - def GetSysMark(self): return self.SysMark # 提示mark + def GetSysMark(self): return self.SysMark # 提示mark + def GetSysMarkParamType(self): return self.SysMarkParamType # 系统提示参数组合类型 # 物品强化效果表 class IPY_ItemPlus(): @@ -1157,14 +1224,18 @@ 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(): @@ -1490,6 +1561,7 @@ self.NPCID = 0 self.IsStrengthenByPlayerCount = 0 self.LVStrengthenType = 0 + self.CmpNPCBaseLV = 0 self.HitTime = 0 self.DefCoefficient = 0 self.AtkCoefficient = 0 @@ -1507,6 +1579,7 @@ 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 # 人物攻击系数 @@ -1892,7 +1965,10 @@ self.SuperHitReduceC = 0 self.SkillAtkRateC = 0 self.SpeedPerC = 0 - self.AtkSpeedC = 0 + self.AtkSpeedC = 0 + self.SkillAtkRateReduceC = 0 + self.HitC = 0 + self.MissC = 0 return def GetClassLV(self): return self.ClassLV # 装备阶级 @@ -1919,7 +1995,10 @@ 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 GetAtkSpeedC(self): return self.AtkSpeedC # 攻击速度系数 + def GetSkillAtkRateReduceC(self): return self.SkillAtkRateReduceC # 技能减伤百分比系数 + def GetHitC(self): return self.HitC # 命中系数 + def GetMissC(self): return self.MissC # 闪避系数 # 成就表 class IPY_Success(): @@ -1961,6 +2040,7 @@ self.PreTreasure = 0 self.SuccID = [] self.Potentials = [] + self.SkillPower = [] self.NeedItem = {} return @@ -1969,6 +2049,7 @@ 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 # 需要消耗物品 # 法宝升级表 @@ -1981,7 +2062,8 @@ self.AddAttr = {} self.UnLockSkill = [] self.ActiveMWID = 0 - self.ItemAward = [] + self.ItemAward = [] + self.ActiveSoulID = 0 return def GetMWID(self): return self.MWID # 法宝ID @@ -1990,7 +2072,8 @@ 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(): @@ -2199,9 +2282,12 @@ self.EndDate = "" self.StartTimeList = [] self.EndTimeList = [] + self.AdvanceMinutes = 0 self.LVLimit = 0 self.IsDayReset = 0 - self.ShopTypeList = [] + self.ShopTypeList = [] + self.MailKey = "" + self.MailItemPrize = [] return def GetCfgID(self): return self.CfgID # 配置ID @@ -2209,9 +2295,12 @@ 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 GetShopTypeList(self): return self.ShopTypeList # 商店类型列表 + def GetMailKey(self): return self.MailKey # 活动更新时发送邮件key + def GetMailItemPrize(self): return self.MailItemPrize # 活动更新时发送邮件奖励物品 # 日常任务表 class IPY_DailyQuest(): @@ -2338,12 +2427,18 @@ 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 # 古神禁地表 @@ -2441,7 +2536,7 @@ self.DataMapID = 0 self.InspireType = 0 self.InspireMaxLV = 0 - self.MoneyCount = 0 + self.MoneyCount = "" return def GetDataMapID(self): return self.DataMapID # 地图ID @@ -2516,6 +2611,7 @@ self.RandTimeList1 = [] self.RandItemList2 = [] self.RandTimeList2 = [] + self.RandItemByUseCount = {} self.JobItemList = [] self.MoneyType = 0 self.MoneyCount = 0 @@ -2530,6 +2626,7 @@ 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 # 货币数量 @@ -2723,6 +2820,8 @@ self.GridItemInfo = {} self.JobItemList = [] self.GridItemRateListFree = [] + self.FreeGridItemRateList2 = [] + self.FreeGridItemRateList3 = {} self.GridItemRateList1 = [] self.GridItemRateList2 = [] self.GridItemRateList3 = {} @@ -2734,6 +2833,8 @@ 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次必出产出格子编号饼图 {次数:[[概率, 格子编号], ...], ...} @@ -2763,9 +2864,12 @@ self.EndDate = "" self.StartTimeList = [] self.EndTimeList = [] + self.AdvanceMinutes = 0 self.LVLimit = 0 self.IsDayReset = 0 - self.GiftbagList = [] + self.GiftbagTypeList = [] + self.MailKey = "" + self.MailItemPrize = [] return def GetCfgID(self): return self.CfgID # 配置ID @@ -2773,9 +2877,12 @@ 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 GetGiftbagList(self): return self.GiftbagList # 礼包模板类型列表 + def GetGiftbagTypeList(self): return self.GiftbagTypeList # 礼包类型列表 + def GetMailKey(self): return self.MailKey # 活动更新时发送邮件key + def GetMailItemPrize(self): return self.MailItemPrize # 活动更新时发送邮件奖励物品 # 限时礼包模板表 class IPY_FlashGiftbag(): @@ -2798,6 +2905,38 @@ 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(): @@ -2815,6 +2954,25 @@ 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(): @@ -2831,6 +2989,19 @@ 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 + return + + def GetCfgID(self): return self.CfgID # 配置ID + def GetMultiple(self): return self.Multiple # 倍数 + def GetLVLimit(self): return self.LVLimit # 限制等级 # 宗门试炼兑换表 class IPY_TrialExchange(): @@ -2878,6 +3049,36 @@ 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 # 天赋系别 def Log(msg, playerID=0, par=0): @@ -3069,16 +3270,28 @@ 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) Log("IPY_FuncConfig count=%s" % len(self.ipyFuncConfigDict)) Log("IPY_DataMgr InitOK!") return @@ -3170,22 +3383,26 @@ for i, strValue in enumerate(rowList): if i == 0: continue - 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) + 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 @@ -3407,16 +3624,28 @@ 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] IPYData = IPY_DataMgr() def IPY_Data(): return IPYData @@ -3611,7 +3840,7 @@ '''查询条件下与对应查询字段参考值相近的数据实例;参考值小于配置表最小值时返回none,大于最大值时返回最大值对应的实例 @param dtName: 表名,不含tag @param keyName: 参考字段名 - @param keyValue: 参考字段值 + @param keyValue: 参考字段值,大于等于字段值时返回对应数据 @param conditionDict: 查询条件,{查询字段名:字段值, ...} @return: 找不到数据返回 None , 否则返回对应的 ipyData 数据实例 ''' @@ -3643,7 +3872,7 @@ 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: -- Gitblit v1.8.0