寻宝:匹配多选

This commit is contained in:
luying
2022-02-25 17:16:17 +08:00
parent 224383b31e
commit 2db328759e
4 changed files with 49 additions and 35 deletions
+16 -8
View File
@@ -25,9 +25,14 @@ import { handleCost } from './rewardService';
* @param lv 品质数组,在所有给定品质的藏宝图中筛选1
* @param cnt 返回藏宝图数量
*/
export function getRandBlueprtId(lv: number, cnt = 1) {
if (!gameData.blueprtByLv.has(lv)) return null;
let blueprtIdArr: number[] = gameData.blueprtByLv.get(lv)||[];
export function getRandBlueprtId(lvs: number[], cnt = 1) {
if (!lvs || !lvs.length) return null;
let blueprtIdArr: number[] = [];
for (let lv of lvs) {
blueprtIdArr = blueprtIdArr.concat(gameData.blueprtByLv.get(lv));
}
if (blueprtIdArr.length === 0) return null;
const res = getRandEelm(blueprtIdArr, cnt);
// console.log('******** getRandBlueprtId', blueprtIdArr, cnt, res)
@@ -322,11 +327,14 @@ export function clearRobotHurtTimer(teamStatus, robotHurtTimer: Map<string, Node
* @param {number} blueprtLv 藏宝图等级
* @returns
*/
export function comBtlLvInvalid(playerLv: number, blueprtLv: number) {
const range = gameData.comBtlLvRange.get(blueprtLv);
if (!range) return true;
let { min, max } = range;
return playerLv < min || playerLv > max;
export function comBtlLvInvalid(playerLv: number, blueprtLvs: number[]) {
for(let blueprtLv of blueprtLvs) {
const range = gameData.comBtlLvRange.get(blueprtLv);
if (!range) return true;
let { min, max } = range;
if(playerLv < min || playerLv > max) return false;
}
return true
}
export async function dismissTeam(teamStatus: MemComBtlTeam, teamMap: Map<string, MemComBtlTeam>, roleId: string, teamDisTimer: Map<string, NodeJS.Timer>, channel) {
+21 -11
View File
@@ -158,10 +158,15 @@ function getComTeamValue(roleId: string, sid: string) {
* @param {number} lvRange
* @returns
*/
export async function setTeamSearchReq(roleId: string, sid: string, lv: number) {
export async function setTeamSearchReq(roleId: string, sid: string, lvs: number[]) {
let cmds = [];
lvs.forEach(lv => {
if (lv) {
cmds.push(['sadd', getComTeamKey(lv), getComTeamValue(roleId, sid)]);
}
});
const res = await redisClient().multi(cmds).execAsync();
const res = await redisClient().saddAsync(getComTeamKey(lv), [getComTeamValue(roleId, sid)]);
console.log('setTeamSearchReq: ', res);
return res;
}
@@ -172,11 +177,13 @@ export async function setTeamSearchReq(roleId: string, sid: string, lv: number)
* @param {string} sid
* @param {number} lv 如果不填表示所有品阶
*/
export async function rmRoleFromQueue(roleId: string, sid: string, lv?: number) {
export async function rmRoleFromQueue(roleId: string, sid: string, lvs?: number[]) {
let cmds = [];
if (lv) {
cmds.push(['srem', getComTeamKey(lv), getComTeamValue(roleId, sid)]);
if (lvs) {
for(let lv of lvs) {
cmds.push(['srem', getComTeamKey(lv), getComTeamValue(roleId, sid)]);
}
} else {
for (let range of comBtlRanges()) {
cmds.push(['srem', getComTeamKey(range), getComTeamValue(roleId, sid)]);
@@ -216,11 +223,14 @@ export async function getTeamSearchByLv(lv: number) {
* @param {number} lv
* @returns
*/
export async function checkRoleInQueue(roleId: string, sid: string, lv: number) {
let res = await redisClient().sismemberAsync(getComTeamKey(lv), `${roleId}:${sid}`);
if (res) {
return true;
}
export async function checkRoleInQueue(roleId: string, sid: string, lvs: number[]) {
for (let lv of lvs) {
let res = await redisClient().sismemberAsync(getComTeamKey(lv), `${roleId}:${sid}`);
if (res) {
return true;
}
};
return false;
}