ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
@@ -53,6 +53,7 @@
                        ("BYTE", "EliteCnt", 0),
                        ("DWORD", "NeedMoney", 0),
                        ("DWORD", "WeekMissionMoneyMax", 0),
                        ("BYTE", "BossFBCnt", 0),
                        ),
                "MarketQuery":(
@@ -79,8 +80,17 @@
                "DailyAction":(
                        ("DWORD", "DailyID", 1),
                        ("BYTE", "OpenServerDay", 0),
                        ("char", "OpenTime", 0),
                        ("dict", "OpenTimeDict", 0),
                        ("DWORD", "Duration", 0),
                        ("dict", "NotifyInfo", 0),
                        ),
                "DailyActionCustom":(
                        ("DWORD", "ID", 0),
                        ("BYTE", "OpenServerWeek", 1),
                        ("DWORD", "OpenServerDay", 0),
                        ("BYTE", "DailyID", 0),
                        ("list", "OpenTimeList", 0),
                        ("DWORD", "Duration", 0),
                        ("dict", "NotifyInfo", 0),
                        ),
@@ -88,12 +98,9 @@
                "FBStateTime":(
                        ("DWORD", "ID", 1),
                        ("DWORD", "DataMapID", 0),
                        ("BYTE", "OpenServerWeek", 0),
                        ("BYTE", "OpenServerDay", 0),
                        ("BYTE", "StartWeekday", 0),
                        ("BYTE", "StartHour", 0),
                        ("BYTE", "StartMinute", 0),
                        ("BYTE", "EndWeekday", 0),
                        ("BYTE", "EndHour", 0),
                        ("BYTE", "EndMinute", 0),
                        ("BYTE", "CanEnter", 0),
@@ -101,10 +108,38 @@
                        ("dict", "NotifyInfoDict", 0),
                        ),
                "FBStateTimeCustom":(
                        ("DWORD", "ID", 0),
                        ("BYTE", "OpenServerWeek", 1),
                        ("DWORD", "OpenServerDay", 0),
                        ("DWORD", "DataMapID", 0),
                        ("BYTE", "StartHour", 0),
                        ("BYTE", "StartMinute", 0),
                        ("BYTE", "EndHour", 0),
                        ("BYTE", "EndMinute", 0),
                        ("BYTE", "CanEnter", 0),
                        ("BYTE", "StateValue", 0),
                        ("dict", "NotifyInfoDict", 0),
                        ),
                "FBFunc":(
                        ("DWORD", "DataMapID", 1),
                        ("WORD", "HelpPoint", 0),
                        ),
                "FBLine":(
                        ("DWORD", "DataMapID", 1),
                        ("BYTE", "LineID", 1),
                        ("DWORD", "MapID", 0),
                        ),
                "FBHelpBattle":(
                        ("DWORD", "DataMapID", 1),
                        ("BYTE", "LineID", 1),
                        ("DWORD", "FightPowerMin", 0),
                        ("DWORD", "FightPowerMax", 0),
                        ("WORD", "LVLimit", 0),
                        ("list", "DayFreeHelpCount", 0),
                        ),
                "ChinMap":(
@@ -158,41 +193,64 @@
                        ("DWORD", "ReFightPower", 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),
                        ),
                "ActSpringSale":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActMark", 0),
                        ("list", "PlatformList", 0),
                        ("list", "ServerIDList", 0),
                        ("BYTE", "OpenServerDayLimit", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("list", "StartTimeList", 0),
                        ("list", "EndTimeList", 0),
                        ("WORD", "AdvanceMinutes", 0),
                        ("dict", "NotifyInfoStart", 0),
                        ("dict", "NotifyInfoEnd", 0),
                        ("list", "NotifyInfoLoop", 0),
                        ("WORD", "LVLimit", 0),
                        ("BYTE", "IsDayReset", 0),
                        ("list", "ShopTypeList", 0),
                        ),
                "ActFlashGiftbag":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActMark", 0),
                        ("list", "PlatformList", 0),
                        ("list", "ServerIDList", 0),
                        ("BYTE", "OpenServerDayLimit", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("list", "StartTimeList", 0),
                        ("list", "EndTimeList", 0),
                        ("WORD", "AdvanceMinutes", 0),
                        ("dict", "NotifyInfoStart", 0),
                        ("dict", "NotifyInfoEnd", 0),
                        ("list", "NotifyInfoLoop", 0),
                        ("WORD", "LVLimit", 0),
                        ("BYTE", "IsDayReset", 0),
                        ("list", "GiftbagTypeList", 0),
                        ),
                "ActExpRate":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActMark", 0),
                        ("list", "PlatformList", 0),
                        ("list", "ServerIDList", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
@@ -200,6 +258,7 @@
                        ("list", "EndTimeList", 0),
                        ("dict", "NotifyInfoStart", 0),
                        ("dict", "NotifyInfoEnd", 0),
                        ("list", "NotifyInfoLoop", 0),
                        ("WORD", "LVLimit", 0),
                        ("DWORD", "AddExpRate", 0),
                        ),
@@ -207,33 +266,38 @@
                "ActCostRebate":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActMark", 0),
                        ("list", "PlatformList", 0),
                        ("list", "ServerIDList", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("dict", "NotifyInfoStart", 0),
                        ("dict", "NotifyInfoEnd", 0),
                        ("WORD", "LVLimit", 0),
                        ("list", "NotifyInfoLoop", 0),
                        ("BYTE", "IsDayReset", 0),
                        ("list", "TemplateIDList", 0),
                        ),
                "ActBossReborn":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActMark", 0),
                        ("list", "PlatformList", 0),
                        ("list", "ServerIDList", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("BYTE", "ResetType", 0),
                        ("dict", "NotifyInfoStart", 0),
                        ("dict", "NotifyInfoEnd", 0),
                        ("WORD", "LVLimit", 0),
                        ("BYTE", "TemplateID", 0),
                        ),
                "ActFairyCeremony":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActMark", 0),
                        ("list", "PlatformList", 0),
                        ("list", "ServerIDList", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("BYTE", "ResetType", 0),
                        ("dict", "NotifyInfoStart", 0),
                        ("dict", "NotifyInfoEnd", 0),
                        ("WORD", "LVLimit", 0),
@@ -248,13 +312,89 @@
                "ActRealmPoint":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActMark", 0),
                        ("list", "PlatformList", 0),
                        ("list", "ServerIDList", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("BYTE", "ResetType", 0),
                        ("dict", "NotifyInfoStart", 0),
                        ("dict", "NotifyInfoEnd", 0),
                        ("WORD", "Multiple", 0),
                        ("WORD", "LVLimit", 0),
                        ("DWORD", "PointLimit", 0),
                        ),
                "ActFlashSale":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActMark", 0),
                        ("list", "PlatformList", 0),
                        ("list", "ServerIDList", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("list", "StartTimeList", 0),
                        ("list", "EndTimeList", 0),
                        ("WORD", "AdvanceMinutes", 0),
                        ("dict", "NotifyInfoStart", 0),
                        ("dict", "NotifyInfoEnd", 0),
                        ("list", "NotifyInfoLoop", 0),
                        ("WORD", "LVLimit", 0),
                        ("BYTE", "IsDayReset", 0),
                        ("list", "ShopTypeList", 0),
                        ),
                "Store":(
                        ("DWORD", "ID", 1),
                        ("DWORD", "ShopType", 0),
                        ("BYTE", "RefreshType", 0),
                        ("DWORD", "ServerLimitCnt", 0),
                        ),
                "ActWishingWell":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActMark", 0),
                        ("list", "PlatformList", 0),
                        ("list", "ServerIDList", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("BYTE", "IsDayReset", 0),
                        ("BYTE", "ResetType", 0),
                        ("dict", "NotifyInfoStart", 0),
                        ("dict", "NotifyInfoEnd", 0),
                        ("list", "NotifyInfoLoop", 0),
                        ("WORD", "LVLimit", 0),
                        ),
                "ActTotalRecharge":(
                        ("DWORD", "CfgID", 1),
                        ("char", "ActMark", 0),
                        ("list", "PlatformList", 0),
                        ("list", "ServerIDList", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("dict", "NotifyInfoStart", 0),
                        ("dict", "NotifyInfoEnd", 0),
                        ("WORD", "Multiple", 0),
                        ("WORD", "LVLimit", 0),
                        ("list", "NotifyInfoLoop", 0),
                        ("BYTE", "IsDayReset", 0),
                        ),
                "CrossRealmPKZone":(
                        ("BYTE", "ZoneID", 1),
                        ("char", "ZoneName", 0),
                        ("list", "ServerGroupIDList", 0),
                        ),
                "CrossRealmPKSeason":(
                        ("BYTE", "ZoneID", 1),
                        ("BYTE", "SeasonID", 0),
                        ("char", "StartDate", 0),
                        ("char", "EndDate", 0),
                        ("char", "EndTime", 0),
                        ),
                "CrossRealmPKDan":(
                        ("BYTE", "DanLV", 1),
                        ("WORD", "LVUpScore", 0),
                        ("list", "MatchRange", 0),
                        ),
                }
@@ -298,7 +438,8 @@
        self.DeputyLeaderCnt = 0
        self.EliteCnt = 0
        self.NeedMoney = 0
        self.WeekMissionMoneyMax = 0
        self.WeekMissionMoneyMax = 0
        self.BossFBCnt = 0
        return
        
    def GetFamilyLV(self): return self.FamilyLV # 仙盟等级
@@ -306,7 +447,8 @@
    def GetDeputyLeaderCnt(self): return self.DeputyLeaderCnt # 副盟主数量
    def GetEliteCnt(self): return self.EliteCnt # 精英数量
    def GetNeedMoney(self): return self.NeedMoney # 升级需要资金
    def GetWeekMissionMoneyMax(self): return self.WeekMissionMoneyMax # 每周任务最大可获得仙盟资金
    def GetWeekMissionMoneyMax(self): return self.WeekMissionMoneyMax # 每周任务最大可获得仙盟资金
    def GetBossFBCnt(self): return self.BossFBCnt # BOSS副本次数
# 集市查询表
class IPY_MarketQuery():
@@ -359,15 +501,34 @@
    
    def __init__(self):
        self.DailyID = 0
        self.OpenServerDay = 0
        self.OpenTime = ""
        self.OpenTimeDict = {}
        self.Duration = 0
        self.NotifyInfo = {}
        return
        
    def GetDailyID(self): return self.DailyID # 活动ID
    def GetOpenServerDay(self): return self.OpenServerDay # 开服第几天开始开启,0为不限制
    def GetOpenTime(self): return self.OpenTime # 开启时间
    def GetOpenTimeDict(self): return self.OpenTimeDict # 开启时间
    def GetDuration(self): return self.Duration # 持续时间, 0为不限制
    def GetNotifyInfo(self): return self.NotifyInfo # 广播提示信息
# 日常活动表定制表
class IPY_DailyActionCustom():
    def __init__(self):
        self.ID = 0
        self.OpenServerWeek = 0
        self.OpenServerDay = 0
        self.DailyID = 0
        self.OpenTimeList = []
        self.Duration = 0
        self.NotifyInfo = {}
        return
    def GetID(self): return self.ID # ID
    def GetOpenServerWeek(self): return self.OpenServerWeek # 开服是周几
    def GetOpenServerDay(self): return self.OpenServerDay # 开服第几天
    def GetDailyID(self): return self.DailyID # 日常活动ID
    def GetOpenTimeList(self): return self.OpenTimeList # 开启时间列表
    def GetDuration(self): return self.Duration # 持续时间, 0为不限制
    def GetNotifyInfo(self): return self.NotifyInfo # 广播提示信息
@@ -377,12 +538,9 @@
    def __init__(self):
        self.ID = 0
        self.DataMapID = 0
        self.OpenServerWeek = 0
        self.OpenServerDay = 0
        self.StartWeekday = 0
        self.StartHour = 0
        self.StartMinute = 0
        self.EndWeekday = 0
        self.EndHour = 0
        self.EndMinute = 0
        self.CanEnter = 0
@@ -392,17 +550,54 @@
        
    def GetID(self): return self.ID # ID
    def GetDataMapID(self): return self.DataMapID # 所属的玩法数据地图ID
    def GetOpenServerWeek(self): return self.OpenServerWeek # 开服X周后开放
    def GetOpenServerDay(self): return self.OpenServerDay # 开服X天后开放
    def GetStartWeekday(self): return self.StartWeekday # 开始星期
    def GetStartHour(self): return self.StartHour # 开始时
    def GetStartMinute(self): return self.StartMinute # 开始分
    def GetEndWeekday(self): return self.EndWeekday # 结束星期
    def GetEndHour(self): return self.EndHour # 结束时
    def GetEndMinute(self): return self.EndMinute # 结束分
    def GetCanEnter(self): return self.CanEnter # 是否可进入副本
    def GetStateValue(self): return self.StateValue # ״ֵ̬
    def GetNotifyInfoDict(self): return self.NotifyInfoDict # 广播提示信息
# 副本状态时间定制表
class IPY_FBStateTimeCustom():
    def __init__(self):
        self.ID = 0
        self.OpenServerWeek = 0
        self.OpenServerDay = 0
        self.DataMapID = 0
        self.StartHour = 0
        self.StartMinute = 0
        self.EndHour = 0
        self.EndMinute = 0
        self.CanEnter = 0
        self.StateValue = 0
        self.NotifyInfoDict = {}
        return
    def GetID(self): return self.ID # ID
    def GetOpenServerWeek(self): return self.OpenServerWeek # 开服是周几
    def GetOpenServerDay(self): return self.OpenServerDay # 开服第几天
    def GetDataMapID(self): return self.DataMapID # 所属的玩法数据地图ID
    def GetStartHour(self): return self.StartHour # 开始时
    def GetStartMinute(self): return self.StartMinute # 开始分
    def GetEndHour(self): return self.EndHour # 结束时
    def GetEndMinute(self): return self.EndMinute # 结束分
    def GetCanEnter(self): return self.CanEnter # 是否可进入副本
    def GetStateValue(self): return self.StateValue # ״ֵ̬
    def GetNotifyInfoDict(self): return self.NotifyInfoDict # 广播提示信息
# 副本总表
class IPY_FBFunc():
    def __init__(self):
        self.DataMapID = 0
        self.HelpPoint = 0
        return
    def GetDataMapID(self): return self.DataMapID # 数据地图ID
    def GetHelpPoint(self): return self.HelpPoint # 助战仙缘币(0代表不可助战)
# 副本功能线路表
class IPY_FBLine():
@@ -416,6 +611,25 @@
    def GetDataMapID(self): return self.DataMapID # 数据地图ID
    def GetLineID(self): return self.LineID # 功能线路ID
    def GetMapID(self): return self.MapID # 场景地图ID
# 副本助战表
class IPY_FBHelpBattle():
    def __init__(self):
        self.DataMapID = 0
        self.LineID = 0
        self.FightPowerMin = 0
        self.FightPowerMax = 0
        self.LVLimit = 0
        self.DayFreeHelpCount = []
        return
    def GetDataMapID(self): return self.DataMapID # 数据地图ID
    def GetLineID(self): return self.LineID # 功能线路ID
    def GetFightPowerMin(self): return self.FightPowerMin # 助战最低战力,也是副本战力
    def GetFightPowerMax(self): return self.FightPowerMax # 助战最高战力,0为不限制
    def GetLVLimit(self): return self.LVLimit # 助战等级限制, 0为不限制
    def GetDayFreeHelpCount(self): return self.DayFreeHelpCount # 每日免费助战次数,[每日免费助战次数, 是否所有层通用]
# 地图表
class IPY_ChinMap():
@@ -526,38 +740,81 @@
    def GetLV(self): return self.LV # 玩家等级
    def GetReFightPower(self): return self.ReFightPower # 战斗力
# 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对应的特权值
# 限时特惠表
class IPY_ActSpringSale():
    
    def __init__(self):
        self.CfgID = 0
        self.ActMark = ""
        self.PlatformList = []
        self.ServerIDList = []
        self.OpenServerDayLimit = 0
        self.StartDate = ""
        self.EndDate = ""
        self.StartTimeList = []
        self.EndTimeList = []
        self.AdvanceMinutes = 0
        self.NotifyInfoStart = {}
        self.NotifyInfoEnd = {}
        self.NotifyInfoLoop = []
        self.LVLimit = 0
        self.IsDayReset = 0
        self.ShopTypeList = []
        self.IsDayReset = 0
        return
        
    def GetCfgID(self): return self.CfgID # 配置ID
    def GetActMark(self): return self.ActMark # 活动组标记
    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
    def GetServerIDList(self): return self.ServerIDList # 服务器ID列表
    def GetOpenServerDayLimit(self): return self.OpenServerDayLimit # 开服X天后有效
    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 GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
    def GetLVLimit(self): return self.LVLimit # 限制等级
    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
    def GetShopTypeList(self): return self.ShopTypeList # 商店类型列表
    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
# 限时礼包表
class IPY_ActFlashGiftbag():
@@ -565,32 +822,34 @@
    def __init__(self):
        self.CfgID = 0
        self.ActMark = ""
        self.PlatformList = []
        self.ServerIDList = []
        self.OpenServerDayLimit = 0
        self.StartDate = ""
        self.EndDate = ""
        self.StartTimeList = []
        self.EndTimeList = []
        self.AdvanceMinutes = 0
        self.NotifyInfoStart = {}
        self.NotifyInfoEnd = {}
        self.NotifyInfoLoop = []
        self.LVLimit = 0
        self.IsDayReset = 0
        self.GiftbagTypeList = []
        self.IsDayReset = 0
        return
        
    def GetCfgID(self): return self.CfgID # 配置ID
    def GetActMark(self): return self.ActMark # 活动组标记
    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
    def GetServerIDList(self): return self.ServerIDList # 服务器ID列表
    def GetOpenServerDayLimit(self): return self.OpenServerDayLimit # 开服X天后有效
    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 GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
    def GetLVLimit(self): return self.LVLimit # 限制等级
    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
    def GetGiftbagTypeList(self): return self.GiftbagTypeList # 礼包类型列表
    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
# 双倍经验活动表
class IPY_ActExpRate():
@@ -598,6 +857,7 @@
    def __init__(self):
        self.CfgID = 0
        self.ActMark = ""
        self.PlatformList = []
        self.ServerIDList = []
        self.StartDate = ""
        self.EndDate = ""
@@ -605,12 +865,14 @@
        self.EndTimeList = []
        self.NotifyInfoStart = {}
        self.NotifyInfoEnd = {}
        self.NotifyInfoLoop = []
        self.LVLimit = 0
        self.AddExpRate = 0
        return
        
    def GetCfgID(self): return self.CfgID # 配置ID
    def GetActMark(self): return self.ActMark # 活动组标记
    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
    def GetServerIDList(self): return self.ServerIDList # 服务器ID列表
    def GetStartDate(self): return self.StartDate # 开启日期
    def GetEndDate(self): return self.EndDate # 结束日期
@@ -618,6 +880,7 @@
    def GetEndTimeList(self): return self.EndTimeList # 结束时间列表, 支持多个时段
    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key, [可选参数1, ...]]
    def GetLVLimit(self): return self.LVLimit # 限制等级
    def GetAddExpRate(self): return self.AddExpRate # 经验倍率加成,万分率
@@ -627,26 +890,26 @@
    def __init__(self):
        self.CfgID = 0
        self.ActMark = ""
        self.PlatformList = []
        self.ServerIDList = []
        self.StartDate = ""
        self.EndDate = ""
        self.NotifyInfoStart = {}
        self.NotifyInfoEnd = {}
        self.LVLimit = 0
        self.IsDayReset = 0
        self.TemplateIDList = []
        self.NotifyInfoLoop = []
        self.IsDayReset = 0
        return
        
    def GetCfgID(self): return self.CfgID # 配置ID
    def GetActMark(self): return self.ActMark # 活动组标记
    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
    def GetServerIDList(self): return self.ServerIDList # 服务器ID列表
    def GetStartDate(self): return self.StartDate # 开启日期
    def GetEndDate(self): return self.EndDate # 结束日期
    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
    def GetLVLimit(self): return self.LVLimit # 限制等级
    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
    def GetTemplateIDList(self): return self.TemplateIDList # 模板ID列表
    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
# BOSS复活活动时间表
class IPY_ActBossReborn():
@@ -654,22 +917,28 @@
    def __init__(self):
        self.CfgID = 0
        self.ActMark = ""
        self.PlatformList = []
        self.ServerIDList = []
        self.StartDate = ""
        self.EndDate = ""
        self.ResetType = 0
        self.NotifyInfoStart = {}
        self.NotifyInfoEnd = {}
        self.LVLimit = 0
        self.LVLimit = 0
        self.TemplateID = 0
        return
        
    def GetCfgID(self): return self.CfgID # 配置ID
    def GetActMark(self): return self.ActMark # 活动组标记
    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
    def GetServerIDList(self): return self.ServerIDList # 服务器ID列表
    def GetStartDate(self): return self.StartDate # 开启日期
    def GetEndDate(self): return self.EndDate # 结束日期
    def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
    def GetLVLimit(self): return self.LVLimit # 限制等级
    def GetLVLimit(self): return self.LVLimit # 限制等级
    def GetTemplateID(self): return self.TemplateID # 模板编号
# 仙界盛典活动时间表
class IPY_ActFairyCeremony():
@@ -677,9 +946,11 @@
    def __init__(self):
        self.CfgID = 0
        self.ActMark = ""
        self.PlatformList = []
        self.ServerIDList = []
        self.StartDate = ""
        self.EndDate = ""
        self.ResetType = 0
        self.NotifyInfoStart = {}
        self.NotifyInfoEnd = {}
        self.LVLimit = 0
@@ -687,9 +958,11 @@
        
    def GetCfgID(self): return self.CfgID # 配置ID
    def GetActMark(self): return self.ActMark # 活动组标记
    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
    def GetServerIDList(self): return self.ServerIDList # 服务器ID列表
    def GetStartDate(self): return self.StartDate # 开启日期
    def GetEndDate(self): return self.EndDate # 结束日期
    def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置;2-5点开始0点结束
    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
    def GetLVLimit(self): return self.LVLimit # 限制等级
@@ -713,24 +986,183 @@
    def __init__(self):
        self.CfgID = 0
        self.ActMark = ""
        self.PlatformList = []
        self.ServerIDList = []
        self.StartDate = ""
        self.EndDate = ""
        self.ResetType = 0
        self.NotifyInfoStart = {}
        self.NotifyInfoEnd = {}
        self.Multiple = 0
        self.LVLimit = 0
        self.PointLimit = 0
        return
    def GetCfgID(self): return self.CfgID # 配置ID
    def GetActMark(self): return self.ActMark # 活动组标记
    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
    def GetServerIDList(self): return self.ServerIDList # 服务器ID列表
    def GetStartDate(self): return self.StartDate # 开启日期
    def GetEndDate(self): return self.EndDate # 结束日期
    def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
    def GetMultiple(self): return self.Multiple # 倍数
    def GetLVLimit(self): return self.LVLimit # 限制等级
    def GetPointLimit(self): return self.PointLimit # 限制额外修行点
# 限时抢购表
class IPY_ActFlashSale():
    def __init__(self):
        self.CfgID = 0
        self.ActMark = ""
        self.PlatformList = []
        self.ServerIDList = []
        self.StartDate = ""
        self.EndDate = ""
        self.StartTimeList = []
        self.EndTimeList = []
        self.AdvanceMinutes = 0
        self.NotifyInfoStart = {}
        self.NotifyInfoEnd = {}
        self.NotifyInfoLoop = []
        self.LVLimit = 0
        self.IsDayReset = 0
        self.ShopTypeList = []
        return
    def GetCfgID(self): return self.CfgID # 配置ID
    def GetActMark(self): return self.ActMark # 活动组标记
    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
    def GetServerIDList(self): return self.ServerIDList # 服务器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 GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
    def GetLVLimit(self): return self.LVLimit # 限制等级
    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
    def GetShopTypeList(self): return self.ShopTypeList # 商店类型列表
# 商城表
class IPY_Store():
    def __init__(self):
        self.ID = 0
        self.ShopType = 0
        self.RefreshType = 0
        self.ServerLimitCnt = 0
        return
    def GetID(self): return self.ID # ID
    def GetShopType(self): return self.ShopType # 商店类型
    def GetRefreshType(self): return self.RefreshType # 刷新类型 0-不重置,1-onWeek0点,2-onWeek5点,3-OnDay0点,4-OnDay5点
    def GetServerLimitCnt(self): return self.ServerLimitCnt # 全服限制数量
# 许愿池活动时间表
class IPY_ActWishingWell():
    def __init__(self):
        self.CfgID = 0
        self.ActMark = ""
        self.PlatformList = []
        self.ServerIDList = []
        self.StartDate = ""
        self.EndDate = ""
        self.IsDayReset = 0
        self.ResetType = 0
        self.NotifyInfoStart = {}
        self.NotifyInfoEnd = {}
        self.NotifyInfoLoop = []
        self.LVLimit = 0
        return
        
    def GetCfgID(self): return self.CfgID # 配置ID
    def GetActMark(self): return self.ActMark # 活动组标记
    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
    def GetServerIDList(self): return self.ServerIDList # 服务器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 GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
    def GetLVLimit(self): return self.LVLimit # 限制等级
# 累计充值活动表
class IPY_ActTotalRecharge():
    def __init__(self):
        self.CfgID = 0
        self.ActMark = ""
        self.PlatformList = []
        self.ServerIDList = []
        self.StartDate = ""
        self.EndDate = ""
        self.NotifyInfoStart = {}
        self.NotifyInfoEnd = {}
        self.NotifyInfoLoop = []
        self.IsDayReset = 0
        return
    def GetCfgID(self): return self.CfgID # 配置ID
    def GetActMark(self): return self.ActMark # 活动组标记
    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
    def GetServerIDList(self): return self.ServerIDList # 服务器ID列表
    def GetStartDate(self): return self.StartDate # 开启日期
    def GetEndDate(self): return self.EndDate # 结束日期
    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
    def GetMultiple(self): return self.Multiple # 倍数
    def GetLVLimit(self): return self.LVLimit # 限制等级
    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
# 跨服竞技场赛区表
class IPY_CrossRealmPKZone():
    def __init__(self):
        self.ZoneID = 0
        self.ZoneName = ""
        self.ServerGroupIDList = []
        return
    def GetZoneID(self): return self.ZoneID # 赛区ID
    def GetZoneName(self): return self.ZoneName # 赛区名字
    def GetServerGroupIDList(self): return self.ServerGroupIDList # 赛区服务器组ID列表
# 跨服竞技场赛季表
class IPY_CrossRealmPKSeason():
    def __init__(self):
        self.ZoneID = 0
        self.SeasonID = 0
        self.StartDate = ""
        self.EndDate = ""
        self.EndTime = ""
        return
    def GetZoneID(self): return self.ZoneID # 赛区ID
    def GetSeasonID(self): return self.SeasonID # 赛季ID
    def GetStartDate(self): return self.StartDate # 开始日期   yyyy-MM-dd
    def GetEndDate(self): return self.EndDate # 结束日期   yyyy-MM-dd
    def GetEndTime(self): return self.EndTime # 结算时间   hh:mm
# 跨服竞技场段位表
class IPY_CrossRealmPKDan():
    def __init__(self):
        self.DanLV = 0
        self.LVUpScore = 0
        self.MatchRange = []
        return
    def GetDanLV(self): return self.DanLV # 段位等级
    def GetLVUpScore(self): return self.LVUpScore # 升段位所需积分
    def GetMatchRange(self): return self.MatchRange # 可匹配到的玩家段位区间 [从段位A, 到段位B],配[]代表只匹配本段位的
def Log(msg, playerID=0, par=0):
@@ -768,10 +1200,18 @@
        self.ipyActionControlLen = len(self.ipyActionControlCache)
        self.ipyDailyActionCache = self.__LoadFileData("DailyAction", IPY_DailyAction)
        self.ipyDailyActionLen = len(self.ipyDailyActionCache)
        self.ipyDailyActionCustomCache = self.__LoadFileData("DailyActionCustom", IPY_DailyActionCustom)
        self.ipyDailyActionCustomLen = len(self.ipyDailyActionCustomCache)
        self.ipyFBStateTimeCache = self.__LoadFileData("FBStateTime", IPY_FBStateTime)
        self.ipyFBStateTimeLen = len(self.ipyFBStateTimeCache)
        self.ipyFBStateTimeCustomCache = self.__LoadFileData("FBStateTimeCustom", IPY_FBStateTimeCustom)
        self.ipyFBStateTimeCustomLen = len(self.ipyFBStateTimeCustomCache)
        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.ipyChinMapCache = self.__LoadFileData("ChinMap", IPY_ChinMap)
        self.ipyChinMapLen = len(self.ipyChinMapCache)
        self.ipyBOSSInfoCache = self.__LoadFileData("BOSSInfo", IPY_BOSSInfo)
@@ -786,6 +1226,8 @@
        self.ipyChinNPCLen = len(self.ipyChinNPCCache)
        self.ipyPlayerLVCache = self.__LoadFileData("PlayerLV", IPY_PlayerLV)
        self.ipyPlayerLVLen = len(self.ipyPlayerLVCache)
        self.ipyVipPrivilegeCache = self.__LoadFileData("VipPrivilege", IPY_VipPrivilege)
        self.ipyVipPrivilegeLen = len(self.ipyVipPrivilegeCache)
        self.ipyActSpringSaleCache = self.__LoadFileData("ActSpringSale", IPY_ActSpringSale)
        self.ipyActSpringSaleLen = len(self.ipyActSpringSaleCache)
        self.ipyActFlashGiftbagCache = self.__LoadFileData("ActFlashGiftbag", IPY_ActFlashGiftbag)
@@ -802,6 +1244,20 @@
        self.ipyUniquenessArriveLen = len(self.ipyUniquenessArriveCache)
        self.ipyActRealmPointCache = self.__LoadFileData("ActRealmPoint", IPY_ActRealmPoint)
        self.ipyActRealmPointLen = len(self.ipyActRealmPointCache)
        self.ipyActFlashSaleCache = self.__LoadFileData("ActFlashSale", IPY_ActFlashSale)
        self.ipyActFlashSaleLen = len(self.ipyActFlashSaleCache)
        self.ipyStoreCache = self.__LoadFileData("Store", IPY_Store)
        self.ipyStoreLen = len(self.ipyStoreCache)
        self.ipyActWishingWellCache = self.__LoadFileData("ActWishingWell", IPY_ActWishingWell)
        self.ipyActWishingWellLen = len(self.ipyActWishingWellCache)
        self.ipyActTotalRechargeCache = self.__LoadFileData("ActTotalRecharge", IPY_ActTotalRecharge)
        self.ipyActTotalRechargeLen = len(self.ipyActTotalRechargeCache)
        self.ipyCrossRealmPKZoneCache = self.__LoadFileData("CrossRealmPKZone", IPY_CrossRealmPKZone)
        self.ipyCrossRealmPKZoneLen = len(self.ipyCrossRealmPKZoneCache)
        self.ipyCrossRealmPKSeasonCache = self.__LoadFileData("CrossRealmPKSeason", IPY_CrossRealmPKSeason)
        self.ipyCrossRealmPKSeasonLen = len(self.ipyCrossRealmPKSeasonCache)
        self.ipyCrossRealmPKDanCache = self.__LoadFileData("CrossRealmPKDan", IPY_CrossRealmPKDan)
        self.ipyCrossRealmPKDanLen = len(self.ipyCrossRealmPKDanCache)
        Log("IPY_FuncConfig count=%s" % len(self.ipyFuncConfigDict))
        Log("IPY_DataMgr InitOK!")
        return
@@ -893,22 +1349,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
@@ -976,10 +1436,18 @@
    def GetActionControlByIndex(self, index): return self.ipyActionControlCache[index]
    def GetDailyActionCount(self): return self.ipyDailyActionLen
    def GetDailyActionByIndex(self, index): return self.ipyDailyActionCache[index]
    def GetDailyActionCustomCount(self): return self.ipyDailyActionCustomLen
    def GetDailyActionCustomByIndex(self, index): return self.ipyDailyActionCustomCache[index]
    def GetFBStateTimeCount(self): return self.ipyFBStateTimeLen
    def GetFBStateTimeByIndex(self, index): return self.ipyFBStateTimeCache[index]
    def GetFBStateTimeCustomCount(self): return self.ipyFBStateTimeCustomLen
    def GetFBStateTimeCustomByIndex(self, index): return self.ipyFBStateTimeCustomCache[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 GetChinMapCount(self): return self.ipyChinMapLen
    def GetChinMapByIndex(self, index): return self.ipyChinMapCache[index]
    def GetBOSSInfoCount(self): return self.ipyBOSSInfoLen
@@ -994,6 +1462,8 @@
    def GetChinNPCByIndex(self, index): return self.ipyChinNPCCache[index]
    def GetPlayerLVCount(self): return self.ipyPlayerLVLen
    def GetPlayerLVByIndex(self, index): return self.ipyPlayerLVCache[index]
    def GetVipPrivilegeCount(self): return self.ipyVipPrivilegeLen
    def GetVipPrivilegeByIndex(self, index): return self.ipyVipPrivilegeCache[index]
    def GetActSpringSaleCount(self): return self.ipyActSpringSaleLen
    def GetActSpringSaleByIndex(self, index): return self.ipyActSpringSaleCache[index]
    def GetActFlashGiftbagCount(self): return self.ipyActFlashGiftbagLen
@@ -1010,6 +1480,20 @@
    def GetUniquenessArriveByIndex(self, index): return self.ipyUniquenessArriveCache[index]
    def GetActRealmPointCount(self): return self.ipyActRealmPointLen
    def GetActRealmPointByIndex(self, index): return self.ipyActRealmPointCache[index]
    def GetActFlashSaleCount(self): return self.ipyActFlashSaleLen
    def GetActFlashSaleByIndex(self, index): return self.ipyActFlashSaleCache[index]
    def GetStoreCount(self): return self.ipyStoreLen
    def GetStoreByIndex(self, index): return self.ipyStoreCache[index]
    def GetActWishingWellCount(self): return self.ipyActWishingWellLen
    def GetActWishingWellByIndex(self, index): return self.ipyActWishingWellCache[index]
    def GetActTotalRechargeCount(self): return self.ipyActTotalRechargeLen
    def GetActTotalRechargeByIndex(self, index): return self.ipyActTotalRechargeCache[index]
    def GetCrossRealmPKZoneCount(self): return self.ipyCrossRealmPKZoneLen
    def GetCrossRealmPKZoneByIndex(self, index): return self.ipyCrossRealmPKZoneCache[index]
    def GetCrossRealmPKSeasonCount(self): return self.ipyCrossRealmPKSeasonLen
    def GetCrossRealmPKSeasonByIndex(self, index): return self.ipyCrossRealmPKSeasonCache[index]
    def GetCrossRealmPKDanCount(self): return self.ipyCrossRealmPKDanLen
    def GetCrossRealmPKDanByIndex(self, index): return self.ipyCrossRealmPKDanCache[index]
IPYData = IPY_DataMgr()
def IPY_Data(): return IPYData
@@ -1204,7 +1688,7 @@
    '''查询条件下与对应查询字段参考值相近的数据实例;参考值小于配置表最小值时返回none,大于最大值时返回最大值对应的实例
    @param dtName: 表名,不含tag
    @param keyName: 参考字段名
    @param keyValue: 参考字段值
    @param keyValue: 参考字段值,大于等于字段值时返回对应数据
    @param conditionDict: 查询条件,{查询字段名:字段值, ...}
    @return: 找不到数据返回 None , 否则返回对应的 ipyData 数据实例
    '''
@@ -1236,7 +1720,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: