Merge branch 'fix/conglinshoulie' into dev

This commit is contained in:
xcy 2023-12-27 16:43:28 +08:00
commit 26fd486595
7 changed files with 44 additions and 34 deletions

View File

@ -19,9 +19,10 @@ export default async function (call: ApiCall<ReqFindEnemy, ResFindEnemy>) {
// 在自定范围内随机一个对手
let others = await G.mongodb.collection("clslCrossUser").aggregate([
{
$match: [
{ allStar: { $gte: starConf.fighter[0], $lte: starConf.fighter[1] } }
],
$match: {
allStar: { $gte: starConf.fighter[0], $lte: starConf.fighter[1] }
}
}, {
$sample: { size: 1 }
}

View File

@ -16,14 +16,7 @@ export default async function (call: ApiCall<ReqUpLoad, ResUpLoad>) {
{ upsert: true, returnDocument: "after" }
)).value;
let week = PublicShared.getToWeek();
let group_time = G.gc.clsl_com.divideTime;
let week_zero_time = PublicShared.getToWeekMondayZeroTime();
if (G.time > week_zero_time + group_time) {
if (!a.group){
}
if (a.group){ // 分完组之后就可以更新排行榜了
if (allStar != undefined && ops.info) {
let rank;
if (Rank.list[`clslCross_${a.group}`]) {

View File

@ -56,7 +56,7 @@ export default async function (call: ApiCall<ReqFind, ResFind>) {
let content = G.gc.clsl_com.email_dan.content;
G.gc.clsl_com.danPrize.forEach(conf => {
// 段位未达到 或者 奖励已经发放
if (conf.star > curMaxStar || danPrize.includes[conf.star]) {
if (conf.star > curMaxStar || danPrize.includes(conf.star)) {
return
}
@ -67,6 +67,7 @@ export default async function (call: ApiCall<ReqFind, ResFind>) {
title: title,
content: content,
prize: conf.prize,
contentInsertArr:[conf.title]
})
danPrize.push(conf.star);

View File

@ -18,6 +18,12 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
fightWinNum: 0,
buyFightNum: 0
};
// 隔周刷新星级
if(ops?.refreshTime < PublicShared.getToWeekMondayZeroTime()){
change.allStar = 0;
change.curMaxStar = 0;
}
Object.assign(ops, change);

View File

@ -32,13 +32,13 @@
],
//段位奖励
danPrize: [
{ star: 49, prize: [{ a: 'item', t: '605', n:3 },{ a: 'item', t: '29', n:10 },{ a: 'item', t: '631', n:3 },{ a: 'item', t: '40', n:1 }] },
{ star: 39, prize: [{ a: 'item', t: '605', n:2 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '631', n:2 }] },
{ star: 29, prize: [{ a: 'item', t: '606', n:3 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '631', n:1 }] },
{ star: 21, prize: [{ a: 'item', t: '606', n:2 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '39', n:1000 }] },
{ star: 13, prize: [{ a: 'item', t: '606', n:1 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '39', n:800 }] },
{ star: 7, prize: [{ a: 'item', t: '29', n:10 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '39', n:600 }] },
{ star: 0, prize: [{ a: 'item', t: '29', n:5 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '39', n:400 }] }
{ star: 49, title: "clsl_7", prize: [{ a: 'item', t: '605', n:3 },{ a: 'item', t: '29', n:10 },{ a: 'item', t: '631', n:3 },{ a: 'item', t: '40', n:1 }] },
{ star: 39, title: "clsl_6", prize: [{ a: 'item', t: '605', n:2 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '631', n:2 }] },
{ star: 29, title: "clsl_5", prize: [{ a: 'item', t: '606', n:3 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '631', n:1 }] },
{ star: 21, title: "clsl_4", prize: [{ a: 'item', t: '606', n:2 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '39', n:1000 }] },
{ star: 13, title: "clsl_3", prize: [{ a: 'item', t: '606', n:1 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '39', n:800 }] },
{ star: 7, title: "clsl_2", prize: [{ a: 'item', t: '29', n:10 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '39', n:600 }] },
{ star: 0, title: "clsl_1", prize: [{ a: 'item', t: '29', n:5 },{ a: 'item', t: '29', n:5 },{ a: 'item', t: '39', n:400 }] }
],
//王者排名邮件信息
email_rank: {

View File

@ -44,9 +44,13 @@ export class SchedulerClslLocalCtor extends Scheduler {
*/
export class SchedulerClslCrossCtor extends Scheduler {
id: schedulerType = 'clsl_cross_group';
num: number = 2;
type: 'day' | 'week' = 'week';
time = G.gc.clsl_com.divideTime;
name = '丛林猎手赛季区间划分 周四00:00';
type: 'day' | 'week' = 'week';
star = Object.values(G.gc.clsl_dan).slice(-1)[0].allStar;
async read() {
@ -69,16 +73,16 @@ export class SchedulerClslCrossCtor extends Scheduler {
// 每100个玩家划分一个区间
let groups: { [group: string]: { st: number, et: number, users: string[] } } = {};
for (let i = 0; i < wzusers.length / 100; i++) {
for (let i = 0; i < wzusers.length / this.num; i++) {
groups['group' + i] = {
st: wzusers[i * 100].info.player.cTime,
et: wzusers[(i + 1) * 100 - 1].info.player.cTime,
users: wzusers.slice(i * 100, (i + 1) * 100).map(u => u.uid),
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 remaining_users = [].concat(wzusers.slice((wzusers.length / 100) * 100)); // 王者剩余玩家
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) {
@ -97,7 +101,11 @@ export class SchedulerClslCrossCtor extends Scheduler {
await G.mongodb.collection("clslCrossGroup").updateOne({ week: week }, { $set: { groups: groups } }, { upsert: true });
// 初始化丛林猎手排行榜
await RankClslCrossInit()
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})
})
})
await this.record();
}

View File

@ -2,7 +2,7 @@ import { GanHaiRed } from './api_s2c/ganhai/ApiOpen';
import { FriendManage } from './public/friend/manage';
import { GHManage } from './public/gonghui/manage';
import { JJCFun } from './public/jjc';
import { RankClslCross } from './public/rank/rank_clsl';
import { RankClslCross, RankClslCrossInit } from './public/rank/rank_clsl';
//import { RankHbzbJfsCross, RankHbzbJfsLocal, RankHbzbZbsCross } from './public/rank/rank_hbzb_jfs';
import { RankKbzz } from './public/rank/rank_kbzz';
import { RankPower } from './public/rank/rank_power';
@ -104,18 +104,19 @@ export async function startAfter() {
});
} else if (G.argv.serverType == 'cross') {
RankKbzz.init();
new RankClslCross();
// new RankHbzbJfsCross().loadAllPlayer();
// new RankHbzbZbsCross();
RankClslCrossInit();
new RankWzryCross();
new SchedulerKbzzGroup().init();
new Scheduler_hbzb_zbs_cross_clear().init();
//new Scheduler_hbzb_corss_reset();
new Scheduler_hbzb_zbs_cross_group().init();
new SchedulerClslPrize().init();
new SchedulerClslCrossCtor().init();
new SchedulerClslLocalCtor ().init();
new Scheduler_hbzb_zbs_cross_clear().init();
new Scheduler_hbzb_zbs_cross_group().init();
new SchedulerWzryDlDstart().init();
new SchedulerWzryDlDjinji().init();
new SchedulerWzryZuanshiOne().init();