pvp保存阵容

This commit is contained in:
mamengke01
2021-01-07 20:36:30 +08:00
parent 5bfac1723c
commit 2470f7582f
8 changed files with 119 additions and 36 deletions
+2 -1
View File
@@ -9,7 +9,7 @@ import { resResult, reduceCe } from '../pubUtils/util';
import { calPlayerCeAndSave as pubCalPlayerCeAndSave, reCalAllHeroCe } from '../pubUtils/playerCe';
import { HeroType } from '../db/Hero';
const _ = require('underscore');
import { defaultHeroes } from './pvpService';
//修改并下发战力
export async function calPlayerCeAndSave(sid: string, roleId: string, heros: Array<HeroType>, type?: number, args?: Array<number>) {
@@ -17,6 +17,7 @@ export async function calPlayerCeAndSave(sid: string, roleId: string, heros: Arr
//下发战力
let uids = [{ uid: roleId, sid }];
pinus.app.get('channelService').pushMessageByUids('onPlayerCeUpdate', resResult(STATUS.SUCCESS, { ce: reduceCe(role.ce) , heros: pushHeros, topFiveCe: reduceCe(topFiveCe) }), uids);
defaultHeroes(role);
return heros;
}
+45 -11
View File
@@ -10,21 +10,22 @@ import { getRandomIndexByLen, genCode, getRandomByLen } from '../pubUtils/util';
import { oppPlayersInter } from '../pubUtils/interface';
import { gameData, getPLvByScore } from "../pubUtils/data";
import { PVP } from '../pubUtils/dicParam';
const _ = require('underscore');
export async function initPvpInfo(role: RoleType) {
let heroes: Array<Heroes> = [];
//初始化最强5人阵容
for (let i = 0; i < role.topFive.length; i++) {
let item = role.topFive[i];
if (item.hid) {
heroes.push({
actorId: item.hid,
hero: item.hero,
ce: item.ce,
dataId: PVP_HERO_POS.START + i,
order: i + 1,
});
}
for (let i = PVP_HERO_POS.START; i <= PVP_HERO_POS.END; i++) {
let index = i - PVP_HERO_POS.START;
let item = role.topFive[index];
heroes.push({
actorId: item?.hid||0,
hero: item?.hero||null,
ce: item?.ce||0,
dataId: i,
order: index + 1,
});
}
//初始化对手人阵容
let oppPlayers: Array<OppPlayers> = await refreshEnemies(role, 0, 1);
@@ -170,4 +171,37 @@ export function getLvByScore(heroScores: HeroScores[]) {
score += heroScores[i].score;
}
return getPLvByScore(score);
}
export async function defaultHeroes ( role:RoleType) {
let { heroes } = await PvpDefenseModel.findByRoleId(role.roleId);
heroes.sort(function(a, b) {
return a.ce + a.dataId - b.ce + b.dataId;
});
role.topFive.sort(function(a, b) {
return a.ce - b.ce;
});
let defCe = 0;
for (let i = 1; 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 hero = heroes[j];
if (heroes.length >= 5 && !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;
}
}
}
defCe += item.ce;
}
let { heroes: resHeroes} = await PvpDefenseModel.updateInfo(role.roleId, {defCe, heroes});
return { resHeroes};
}
+10 -11
View File
@@ -2,7 +2,7 @@
* 体力系统
*/
import { scheduleJob } from 'pinus-scheduler';
import { scheduleJob } from 'node-schedule';
import { SystemConfigModel } from '../db/SystemConfig';
import PvpDefenseType,{ PvpDefenseModel } from '../db/PvpDefense';
import { PVP } from '../pubUtils/dicParam';
@@ -21,23 +21,23 @@ export async function init() {
let warIds = getPvpGkWarIds();
let warId = warIds[0];//TODO随机地图
seasonEndTime = PVP.PVP_SEASON_DAYS * PER_DAY + getTodayZeroPoint();
await SystemConfigModel.createSystemConfig( seasonEndTime, warId );
systemConfig = await SystemConfigModel.createSystemConfig( seasonEndTime, warId );
} else {
seasonEndTime = systemConfig.seasonEndTime;
if (systemConfig.seasonEndTime - SETTLE_DIFF <= nowSeconds()) {
await setPvpSeasonResult();
await setPvpSeasonResult({name: 'simpleJobExample' + systemConfig.seasonNum});
seasonEndTime = PVP.PVP_SEASON_DAYS * PER_DAY + getTodayZeroPoint();
systemConfig.seasonNum++;
await SystemConfigModel.updateSystemConfig({ seasonEndTime, seasonNum: systemConfig.seasonNum});
}
}
let settleTime = seasonEndTime - SETTLE_DIFF - nowSeconds();
// setTimeout(setPvpSeasonResult, settleTime * PER_SECOND);
let settleTime = (seasonEndTime - SETTLE_DIFF)* PER_SECOND;
scheduleJob(settleTime, setPvpSeasonResult)
scheduleJob("0 0 0 * * 1", resetPvpWarId)
}
export async function setPvpSeasonResult() {
console.log('setPvpSeasonResult');
export async function setPvpSeasonResult(obj:{ name:string }) {
console.log('exce setPvpSeasonResult'+ obj.name);
let pvpDefenses = await PvpDefenseModel.getPvpDef(LIMIT_NUM);
for (let pvpDefense of pvpDefenses) {
await setPvpDefResult(pvpDefense);
@@ -47,7 +47,6 @@ export async function setPvpSeasonResult() {
async function setPvpDefResult(pvpDefense: PvpDefenseType) {
await PvpDefenseModel.updateInfo(pvpDefense.roleId, {score:100, pLv: 1});
}
export async function resetPvpWarId() {
@@ -65,7 +64,7 @@ export async function resetPvpWarId() {
async function setNextPvpTime() {
let seasonEndTime = PVP.PVP_SEASON_DAYS * PER_DAY + getTodayZeroPoint();
await SystemConfigModel.updateSeason(seasonEndTime);
let settleTime = seasonEndTime - SETTLE_DIFF - nowSeconds();
setTimeout(setPvpSeasonResult, settleTime * PER_SECOND);
let systemConfig = await SystemConfigModel.updateSeason(seasonEndTime);
let settleTime = (seasonEndTime - SETTLE_DIFF)* PER_SECOND;
scheduleJob(settleTime, setPvpSeasonResult);
}