pvp最强五人和刷新挑战次数
This commit is contained in:
@@ -8,14 +8,14 @@ import { startEvent } from "./eventSercive";
|
||||
|
||||
export async function eventOnPlayerLvUp(roleId: string, lv: number, addFuncs: Array<number>, dataFuncs: Array<number>) {
|
||||
|
||||
if (!dataFuncs.includes(FUNCS_ID.PVP)) {//开启pvp
|
||||
// if (!dataFuncs.includes(FUNCS_ID.PVP)) {//开启pvp
|
||||
let res = getFuncsSwitch(FUNCS_ID.PVP);
|
||||
if (res && lv >= res.param) {
|
||||
if (!res || lv >= res.param) {
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
await checkPvp(role);
|
||||
addFuncs.push(FUNCS_ID.PVP);
|
||||
}
|
||||
}
|
||||
// }
|
||||
|
||||
if (!dataFuncs.includes(FUNCS_ID.EVENT)) {//开启奇遇
|
||||
let res = getFuncsSwitch(FUNCS_ID.EVENT);
|
||||
|
||||
@@ -241,37 +241,41 @@ export function getLvByScore(heroScores: HeroScores[]) {
|
||||
export async function defaultHeroes ( role:RoleType, challengeCnt?:number, challengeRefTime?:number,) {
|
||||
let { heroes } = await PvpDefenseModel.findByRoleId(role.roleId);
|
||||
heroes.sort(function(a, b) {
|
||||
return a.ce + a.dataId - b.ce + b.dataId;
|
||||
return b.ce - b.dataId - a.ce + a.dataId;
|
||||
});
|
||||
role.topFive.sort(function(a, b) {
|
||||
return a.ce - b.ce;
|
||||
return b.ce - a.ce;
|
||||
});
|
||||
let defCe = 0;
|
||||
for (let i = 1; i < role.topFive.length; i++) {
|
||||
let num = 0;
|
||||
for (let i = 0; i < role.topFive.length; i++) {
|
||||
let item = role.topFive[i];
|
||||
if (!_.findWhere(heroes, {actorId: item.hid})) {
|
||||
for (let j = 0; j < heroes.length; j++) {
|
||||
let index = _.findIndex(heroes, {actorId: item.hid});
|
||||
if (index == -1) {
|
||||
for (let j = num; j < heroes.length; j++) {
|
||||
let hero = heroes[j];
|
||||
if (heroes.length >= 5 && !hero.actorId) {
|
||||
if (num >= 5) {
|
||||
break;
|
||||
}
|
||||
if (!!_.findWhere(role.topFive, {hid: hero.actorId})) {
|
||||
continue;
|
||||
}
|
||||
let index = _.findIndex(role.topFive,{hid: hero.actorId});
|
||||
if (index == -1) {
|
||||
hero.actorId = item.hid;
|
||||
hero.hero = item.hero||'';
|
||||
hero.ce = item.ce||0;
|
||||
} else {
|
||||
heroes[index].ce = item.ce||0;
|
||||
}
|
||||
}
|
||||
hero.actorId = item.hid;
|
||||
hero.hero = item.hero;
|
||||
hero.ce = item.ce;
|
||||
num = j;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
heroes[index].ce = item.ce;
|
||||
}
|
||||
defCe += item.ce;
|
||||
}
|
||||
if (!!challengeCnt && !!challengeRefTime) {
|
||||
let { heroes: resHeroes} = await PvpDefenseModel.updateInfo(role.roleId, {defCe, heroes, challengeCnt, challengeRefTime});
|
||||
let { heroes: resHeroes} = await PvpDefenseModel.updateInfo(role.roleId, {defCe, heroes, challengeCnt, challengeRefTime, isDefaultHero:true});
|
||||
return { resHeroes};
|
||||
} else {
|
||||
let { heroes: resHeroes} = await PvpDefenseModel.updateInfo(role.roleId, {defCe, heroes});
|
||||
let { heroes: resHeroes} = await PvpDefenseModel.updateInfo(role.roleId, {defCe, heroes, isDefaultHero:true});
|
||||
return { resHeroes};
|
||||
}
|
||||
}
|
||||
@@ -280,9 +284,9 @@ export function refresh(challengeCnt: number, challengeRefTime: number, seasonEn
|
||||
if (challengeCnt >= PVP.PVP_CHALLENGE_COUNTS) {
|
||||
return {challengeCnt, challengeRefTime};
|
||||
}
|
||||
let period = PVP.PVP_CHALLENGE_NORMALTIMES;
|
||||
let period = PVP.PVP_CHALLENGE_NORMALTIMES * 60;
|
||||
if (checkTodayTime(seasonEndTime)) {
|
||||
period = PVP.PVP_CHALLENGE_FINALTIMES;
|
||||
period = PVP.PVP_CHALLENGE_FINALTIMES * 60;
|
||||
}
|
||||
let time = nowSeconds();
|
||||
let num = Math.floor(( time - challengeRefTime)/period);
|
||||
|
||||
@@ -234,4 +234,9 @@ export async function getRedis(key: string) {
|
||||
const str = await client.getAsync(key);
|
||||
return str;
|
||||
}
|
||||
|
||||
export async function delRedis(key: string) {
|
||||
const client: Redis.RedisClient = pinus.app.get('redis');
|
||||
await client.delAsync(key);
|
||||
}
|
||||
/**************** 寻宝相关 end */
|
||||
|
||||
@@ -10,11 +10,12 @@ import { nowSeconds, getTodayZeroPoint } from '../pubUtils/timeUtil';
|
||||
import { getPvpGkWarIds, getPvpRankRewards, getPvpHeroRewards } from '../pubUtils/data';
|
||||
import { getRandomArr } from '../pubUtils/util';
|
||||
import { getLvByScore } from './pvpService';
|
||||
import { getMyRank, setRank } from './redisService';
|
||||
import { getMyRank, setRank, getRedis } from './redisService';
|
||||
import { REDIS_KEY } from '../consts';
|
||||
import { RankParam } from '../pubUtils/interface';
|
||||
import { RoleModel } from '../db/Role';
|
||||
import { MailModel, MailType } from '../db/Mail';
|
||||
import { pinus } from 'pinus';
|
||||
const _ = require('underscore');
|
||||
const PER_SECOND = 1 * 1000;
|
||||
const PER_DAY = 24 * 60 * 60;
|
||||
@@ -54,6 +55,11 @@ export async function setPvpSeasonResult(obj:{ name:string }) {
|
||||
}
|
||||
}
|
||||
await MailModel.addMails(addMails);
|
||||
// let key = 'login_roleId_' + pvpDefense.roleId;
|
||||
// let sid = await getRedis(key);
|
||||
// if (!!sid) {
|
||||
// pinus.app.rpc.connector.connectorRemote.pushMessage.toServer(sid, pvpDefense.roleId, 'onMailsAdd', [mail]);
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,7 +89,7 @@ export async function checkResult(pvpDefense: PvpDefenseType, seasonNum: number,
|
||||
if(pvpRankReward) {
|
||||
goods = goods.concat(pvpRankReward.reward);
|
||||
}
|
||||
let score = 0
|
||||
let score = 0;
|
||||
for (let i = 0; i < pvpDefense.heroScores.length; i++) {
|
||||
let heroScore = pvpDefense.heroScores[i];
|
||||
let pvpHeroReward = getScore(pvpHeroRewards, heroScore.score);
|
||||
@@ -109,7 +115,12 @@ export async function setPvpDefResult(pvpDefense: PvpDefenseType, seasonNum: num
|
||||
setRank(REDIS_KEY.PVP_RANK, 0, pvpDefense.roleId, pvpDefense.score, pvpDefense.updatedAt.getTime(), params);
|
||||
//下发邮件
|
||||
let sendTime = seasonEndTime - PVP.PVP_SEASON_DAYS * PER_DAY + SETTLE_DIFF;
|
||||
await MailModel.addMail({ goods, sendName: '系统', mailId: 1, sendTime: sendTime});
|
||||
let mail = await MailModel.addMail({ goods, sendName: '系统', mailId: 1, sendTime: sendTime});
|
||||
let key = 'login_roleId_' + pvpDefense.roleId;
|
||||
let sid = await getRedis(key);
|
||||
if (!!sid) {
|
||||
pinus.app.rpc.connector.connectorRemote.pushMessage.toServer(sid, pvpDefense.roleId, 'onMailsAdd', [mail]);
|
||||
}
|
||||
return pvpDefense;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user