From 0e93358e74c5d096c2de15c43dc6bc939aaee5dc Mon Sep 17 00:00:00 2001 From: xcy Date: Thu, 28 Dec 2023 00:02:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=B8=9B=E6=9E=97=E7=8C=8E=E6=89=8B?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api_s2c/rank/ApiOpen.ts | 4 +-- src/public/scheduler/scheduler_clsl.ts | 42 ++++++++++++++++++++------ src/shared/protocols/rank/PtlOpen.ts | 2 +- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/src/api_s2c/rank/ApiOpen.ts b/src/api_s2c/rank/ApiOpen.ts index a5bd1fe..6708475 100644 --- a/src/api_s2c/rank/ApiOpen.ts +++ b/src/api_s2c/rank/ApiOpen.ts @@ -4,10 +4,10 @@ import { Rank } from '../../public/rank/rank'; import { ReqOpen, ResOpen } from "../../shared/protocols/rank/PtlOpen"; import { getToper50RankInfo } from "../hbzb/jfs/fun"; import { getZbsRankList } from "../hbzb/zbs/fun"; -import { re } from "mathjs"; export default async function (call: ApiCall) { - let obj = await rankOpenfun(call, call.req) + console.log("==============>", call.req) + let obj = await rankOpenfun(call, call.req); call.succ(obj); } diff --git a/src/public/scheduler/scheduler_clsl.ts b/src/public/scheduler/scheduler_clsl.ts index a26f447..0026577 100644 --- a/src/public/scheduler/scheduler_clsl.ts +++ b/src/public/scheduler/scheduler_clsl.ts @@ -73,17 +73,35 @@ export class SchedulerClslCrossCtor extends Scheduler { // 每100个玩家划分一个区间 let groups: { [group: string]: { st: number, et: number, users: string[] } } = {}; - for (let i = 0; i < wzusers.length / this.num; i++) { - groups['group' + i] = { - st: wzusers[i * this.num].info.player.cTime, - et: wzusers[(i + 1) * this.num - 1].info.player.cTime, - users: wzusers.slice(i * this.num, (i + 1) * this.num).map(u => u.uid), + let group_num = wzusers.length / this.num; + + // 非王者玩家 + let remaining_users = users.filter(u => u.allStar < this.star); + if (group_num >= 1) { + let tt = parseInt(group_num + '') + for (let i = 1; i <= tt; i++) { + groups['group' + i] = { + et: wzusers[i * this.num - 1].info.player.cTime, + st: wzusers[(i - 1) * this.num].info.player.cTime, + users: wzusers.slice((i - 1) * this.num, i * this.num).map(u => u.uid), + } + if (i == 1) { + groups['group1'].st = 0 + } + if (i == tt) { + groups['group' + i].et = G.time + 7 * 14 * 3600; + groups['group' + i].users = wzusers.slice((i - 1) * this.num).map(u => u.uid); + } + }; + } else { + groups['group0'] = { + st: 0, + et: G.time + 7 * 14 * 3600, + users: wzusers.map(u => u.uid), } } // 剩余玩家 - let remaining_users = [].concat(wzusers.slice((wzusers.length / this.num) * this.num)); // 王者剩余玩家 - remaining_users = remaining_users.concat(users.filter(u => u.allStar < this.star)); // 非王者剩余玩家 for (let i = 0; i < remaining_users.length; i++) { for (let group in groups) { if (remaining_users[i].info.player.cTime >= groups[group].st && remaining_users[i].info.player.cTime <= groups[group].et) { @@ -101,9 +119,13 @@ export class SchedulerClslCrossCtor extends Scheduler { await G.mongodb.collection("clslCrossGroup").updateOne({ week: week }, { $set: { groups: groups } }, { upsert: true }); // 初始化丛林猎手排行榜 - G.mongodb.collection('clslCrossUser').find({allStar:{$gte:this.star}}).toArray().then(users=>{ - users.forEach(u=>{ - new RankClslCross(u.group).addNew({valArr:[u.allStar, u.info.player.power], player:u.info, roles:u.info.roles}) + G.mongodb.collection('clslCrossUser').find({ allStar: { $gte: this.star } }).toArray().then(users => { + users.forEach(u => { + new RankClslCross(u.group).addNew({ + valArr: [u.allStar, u.info.player.power], + player: u.info.player, + roles: u.info.roles, + }) }) }) diff --git a/src/shared/protocols/rank/PtlOpen.ts b/src/shared/protocols/rank/PtlOpen.ts index f878176..fcc7e84 100644 --- a/src/shared/protocols/rank/PtlOpen.ts +++ b/src/shared/protocols/rank/PtlOpen.ts @@ -13,7 +13,7 @@ export type ResOpen = { }; export type rankType = 'jjc' | 'tanxian' | 'zhanli' | 'qjzzd' | 'hbzbLocal' | 'hbzbCross' | 'hbzbZbsCross' - | 'slzd1' | 'slzd2' | 'slzd3' | 'slzd4' | 'slzd5' | 'slzd6' | "clslCross" + | 'slzd1' | 'slzd2' | 'slzd3' | 'slzd4' | 'slzd5' | 'slzd6' | 'clslCross' | 'kbzz' | 'xszm' | 'zccg' | 'gbzl' | 'tujian' | 'wzryCross'; export type rankTypeObj = {