ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -80,6 +80,7 @@
                        ("DWORD", "LimitMagicWeapon", 0),
                        ("WORD", "LimiRealmLV", 0),
                        ("DWORD", "LimitMissionID", 0),
                        ("BYTE", "LimitVIPLV", 0),
                        ),
                "ItemCompound":(
@@ -131,7 +132,9 @@
                        ("list", "BaseAttrTypes", 0),
                        ("list", "BaseAttrValues", 0),
                        ("list", "HelpBattleSkills", 0),
                        ("DWORD", "FightPowerEx", 0),
                        ("list", "EquipPlaceColorList", 0),
                        ("list", "HelpBattleNotify", 0),
                        ),
                "DogzEquipPlus":(
@@ -290,6 +293,7 @@
                        ("DWORD", "NPCID", 1),
                        ("BYTE", "IsStrengthenByPlayerCount", 0),
                        ("BYTE", "LVStrengthenType", 0),
                        ("BYTE", "CmpNPCBaseLV", 0),
                        ("DWORD", "HitTime", 0),
                        ("DWORD", "DefCoefficient", 0),
                        ("DWORD", "AtkCoefficient", 0),
@@ -372,6 +376,7 @@
                        ("DWORD", "CftFaintDefRate", 0),
                        ("DWORD", "CftAtkSpeed", 0),
                        ("DWORD", "CftLuckyHit", 0),
                        ("DWORD", "CftSpeedPer", 0),
                        ),
                "NPCDropItem":(
@@ -497,6 +502,8 @@
                        ("DWORD", "SpeedPerC", 0),
                        ("DWORD", "AtkSpeedC", 0),
                        ("DWORD", "SkillAtkRateReduceC", 0),
                        ("DWORD", "HitC", 0),
                        ("DWORD", "MissC", 0),
                        ),
                "Success":(
@@ -520,6 +527,7 @@
                        ("DWORD", "PreTreasure", 0),
                        ("list", "SuccID", 0),
                        ("list", "Potentials", 0),
                        ("list", "SkillPower", 0),
                        ("dict", "NeedItem", 0),
                        ),
@@ -531,6 +539,7 @@
                        ("list", "UnLockSkill", 0),
                        ("DWORD", "ActiveMWID", 0),
                        ("list", "ItemAward", 0),
                        ("DWORD", "ActiveSoulID", 0),
                        ),
                "TreasurePrivilege":(
@@ -621,11 +630,13 @@
                        ("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":(
@@ -638,6 +649,8 @@
                        ("WORD", "LVLimit", 0),
                        ("BYTE", "IsDayReset", 0),
                        ("list", "ShopTypeList", 0),
                        ("char", "MailKey", 0),
                        ("list", "MailItemPrize", 0),
                        ),
                "DailyQuest":(
@@ -789,6 +802,7 @@
                        ("list", "RandTimeList1", 0),
                        ("list", "RandItemList2", 0),
                        ("list", "RandTimeList2", 0),
                        ("dict", "RandItemByUseCount", 0),
                        ("list", "JobItemList", 0),
                        ("BYTE", "MoneyType", 0),
                        ("DWORD", "MoneyCount", 0),
@@ -910,6 +924,8 @@
                        ("WORD", "LVLimit", 0),
                        ("BYTE", "IsDayReset", 0),
                        ("list", "GiftbagTypeList", 0),
                        ("char", "MailKey", 0),
                        ("list", "MailItemPrize", 0),
                        ),
                "FlashGiftbag":(
@@ -949,6 +965,7 @@
                        ("DWORD", "CfgID", 1),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("BYTE", "ResetType", 0),
                        ("WORD", "LVLimit", 0),
                        ("BYTE", "TemplateID", 0),
                        ),
@@ -995,6 +1012,47 @@
                        ("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),
                        ),
                }
@@ -1095,14 +1153,16 @@
        self.LimitLV = 0
        self.LimitMagicWeapon = 0
        self.LimiRealmLV = 0
        self.LimitMissionID = 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 GetLimitMissionID(self): return self.LimitMissionID # 需要完成的任务ID
    def GetLimitVIPLV(self): return self.LimitVIPLV # 需要VIP等级
# 合成表
class IPY_ItemCompound():
@@ -1205,14 +1265,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():
@@ -1538,6 +1602,7 @@
        self.NPCID = 0
        self.IsStrengthenByPlayerCount = 0
        self.LVStrengthenType = 0
        self.CmpNPCBaseLV = 0
        self.HitTime = 0
        self.DefCoefficient = 0
        self.AtkCoefficient = 0
@@ -1555,6 +1620,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 # 人物攻击系数
@@ -1690,7 +1756,8 @@
        self.CftIgnoreDefRateReduce = 0
        self.CftFaintDefRate = 0
        self.CftAtkSpeed = 0
        self.CftLuckyHit = 0
        self.CftLuckyHit = 0
        self.CftSpeedPer = 0
        return
        
    def GetLV(self): return self.LV # 等级
@@ -1712,7 +1779,8 @@
    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 GetCftLuckyHit(self): return self.CftLuckyHit # 会心一击系数
    def GetCftSpeedPer(self): return self.CftSpeedPer # 移动速度百分比系数
# NPC掉落表
class IPY_NPCDropItem():
@@ -1941,7 +2009,9 @@
        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 #  装备阶级
@@ -1969,7 +2039,9 @@
    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():
@@ -2011,6 +2083,7 @@
        self.PreTreasure = 0
        self.SuccID = []
        self.Potentials = []
        self.SkillPower = []
        self.NeedItem = {}
        return
        
@@ -2019,6 +2092,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 # 需要消耗物品
# 法宝升级表
@@ -2031,7 +2105,8 @@
        self.AddAttr = {}
        self.UnLockSkill = []
        self.ActiveMWID = 0
        self.ItemAward = []
        self.ItemAward = []
        self.ActiveSoulID = 0
        return
        
    def GetMWID(self): return self.MWID # 法宝ID
@@ -2040,7 +2115,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():
@@ -2214,11 +2290,13 @@
        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.NotifyMark = ""
        self.MailKey = ""
        return
        
    def GetID(self): return self.ID # ID
@@ -2233,12 +2311,14 @@
    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 # 原价
    def GetLimitValue(self): return self.LimitValue # 限制条件
    def GetNotifyMark(self): return self.NotifyMark # 广播提示
    def GetNotifyMark(self): return self.NotifyMark # 广播提示
    def GetMailKey(self): return self.MailKey # 背包不足时邮件KEY
# 限时特惠表
class IPY_ActSpringSale():
@@ -2252,7 +2332,9 @@
        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
@@ -2263,7 +2345,9 @@
    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():
@@ -2574,6 +2658,7 @@
        self.RandTimeList1 = []
        self.RandItemList2 = []
        self.RandTimeList2 = []
        self.RandItemByUseCount = {}
        self.JobItemList = []
        self.MoneyType = 0
        self.MoneyCount = 0
@@ -2588,6 +2673,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 # 货币数量
@@ -2828,7 +2914,9 @@
        self.AdvanceMinutes = 0
        self.LVLimit = 0
        self.IsDayReset = 0
        self.GiftbagTypeList = []
        self.GiftbagTypeList = []
        self.MailKey = ""
        self.MailItemPrize = []
        return
        
    def GetCfgID(self): return self.CfgID # 配置ID
@@ -2839,7 +2927,9 @@
    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 GetGiftbagTypeList(self): return self.GiftbagTypeList # 礼包类型列表
    def GetMailKey(self): return self.MailKey # 活动更新时发送邮件key
    def GetMailItemPrize(self): return self.MailItemPrize # 活动更新时发送邮件奖励物品
# 限时礼包模板表
class IPY_FlashGiftbag():
@@ -2918,6 +3008,7 @@
        self.CfgID = 0
        self.StartDate = ""
        self.EndDate = ""
        self.ResetType = 0
        self.LVLimit = 0
        self.TemplateID = 0
        return
@@ -2925,6 +3016,7 @@
    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 # 模板编号
@@ -3021,6 +3113,92 @@
    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
        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 Log(msg, playerID=0, par=0):
@@ -3232,6 +3410,14 @@
        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)
        Log("IPY_FuncConfig count=%s" % len(self.ipyFuncConfigDict))
        Log("IPY_DataMgr InitOK!")
        return
@@ -3584,6 +3770,14 @@
    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]
IPYData = IPY_DataMgr()
def IPY_Data(): return IPYData
@@ -3778,7 +3972,7 @@
    '''查询条件下与对应查询字段参考值相近的数据实例;参考值小于配置表最小值时返回none,大于最大值时返回最大值对应的实例
    @param dtName: 表名,不含tag
    @param keyName: 参考字段名
    @param keyValue: 参考字段值
    @param keyValue: 参考字段值,大于等于字段值时返回对应数据
    @param conditionDict: 查询条件,{查询字段名:字段值, ...}
    @return: 找不到数据返回 None , 否则返回对应的 ipyData 数据实例
    '''
@@ -3810,7 +4004,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: