3928 【后端】增加多倍经验活动在活动期间的循环广播
| | |
| | | list EndTimeList; //结束时间列表, 支持多个时段
|
| | | dict NotifyInfoStart; //全服提示信息 - 相对开始时间
|
| | | dict NotifyInfoEnd; //全服提示信息 - 相对结束时间
|
| | | list NotifyInfoLoop; //全服提示信息 - 循环广播[间隔分钟, 广播key, [可选参数1, ...]]
|
| | | WORD LVLimit; //限制等级
|
| | | DWORD AddExpRate; //经验倍率加成,万分率
|
| | | };
|
| | |
| | |
|
| | | notifyInfoDictStart = ipyData.GetNotifyInfoStart() if hasattr(ipyData, "GetNotifyInfoStart") else {}
|
| | | notifyInfoDictEnd = ipyData.GetNotifyInfoEnd() if hasattr(ipyData, "GetNotifyInfoEnd") else {}
|
| | | notifyInfoLoopInfo = ipyData.GetNotifyInfoLoop() if hasattr(ipyData, "GetNotifyInfoLoop") else {} # [循环分钟, 广播key]
|
| | | notifyInfoLoopInfo = ipyData.GetNotifyInfoLoop() if hasattr(ipyData, "GetNotifyInfoLoop") else {} # [循环分钟, 广播key, [广播参数列表可选]]
|
| | |
|
| | | if len(startHMStrList) != len(endHMStrList):
|
| | | GameWorld.ErrLog(" 活动配置开始及结束时间个数不匹配! actName=%s,cfgID=%s,startHMStrList=%s,endHMStrList=%s"
|
| | |
| | | isNotify = True
|
| | |
|
| | | # 广播 - 循环广播
|
| | | if notifyInfoLoopInfo and len(notifyInfoLoopInfo) == 2:
|
| | | loopMinutes, loopNotifyKey = notifyInfoLoopInfo
|
| | | notifyInfo = [loopNotifyKey, []] # 循环广播的默认无参数,不做支持
|
| | | if notifyInfoLoopInfo and len(notifyInfoLoopInfo) >= 2:
|
| | | loopMinutes, loopNotifyKey = notifyInfoLoopInfo[:2]
|
| | | loopNotifyParamList = notifyInfoLoopInfo[2] if len(notifyInfoLoopInfo) > 2 else []
|
| | | notifyInfo = [loopNotifyKey, loopNotifyParamList] # 循环广播的默认无参数
|
| | | loopCount, loopMaxCount = 0, 100
|
| | | while loopMinutes and loopNotifyKey and loopCount < loopMaxCount:
|
| | | loopCount += 1
|
| | |
| | | ("list", "EndTimeList", 0),
|
| | | ("dict", "NotifyInfoStart", 0),
|
| | | ("dict", "NotifyInfoEnd", 0),
|
| | | ("list", "NotifyInfoLoop", 0),
|
| | | ("WORD", "LVLimit", 0),
|
| | | ("DWORD", "AddExpRate", 0),
|
| | | ),
|
| | |
| | | self.EndTimeList = []
|
| | | self.NotifyInfoStart = {}
|
| | | self.NotifyInfoEnd = {}
|
| | | self.NotifyInfoLoop = []
|
| | | self.LVLimit = 0
|
| | | self.AddExpRate = 0 |
| | | return |
| | |
| | | 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 # 经验倍率加成,万分率 |
| | | |
| | |
| | | '''查询条件下与对应查询字段参考值相近的数据实例;参考值小于配置表最小值时返回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:
|