优化:初始角色时,不初始pvpdefense
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
import { Application, BackendSession, pinus, HandlerService, } from 'pinus';
|
||||
import { uniq, findWhere, findIndex } from 'underscore';
|
||||
import { gameData, getPvpBoxs, getPLvByScore } from '../../../pubUtils/data';
|
||||
import { refreshEnemies, getEnemies, getLvByScore, defaultHeroes, comsumeChallengeCnt, refresh, findPvpDefByRoleId, getRefOppCnt, findPvpDefAllByRoleId, generPVPOppRecInfo, generMyRecInfo } from '../../../services/pvpService';
|
||||
import { refreshEnemies, getEnemies, getLvByScore, defaultHeroes, comsumeChallengeCnt, refresh, findPvpDefByRoleId, getRefOppCnt, findPvpDefAllByRoleId, generPVPOppRecInfo, generMyRecInfo, initPvpInfo } from '../../../services/pvpService';
|
||||
import { RoleModel, RoleType } from '../../../db/Role';
|
||||
import { STATUS } from '../../../consts/statusCode';
|
||||
import { resResult, genCode, checkRoleIsRobot, robotIdComBack } from '../../../pubUtils/util';
|
||||
@@ -105,6 +105,10 @@ export class PvpHandler {
|
||||
async getData(msg: {}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
let { pvpDefense, warId, seasonEndTime } = await findPvpDefAllByRoleId(roleId);
|
||||
if(!pvpDefense) {
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
pvpDefense = await initPvpInfo(role);
|
||||
}
|
||||
let oppPlayers = await getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum);
|
||||
let { isDefaultHero, heroes, score, pLv, winStreakNum, refOppCnt, challengeCnt, challengeRefTime, receivedBox, hisScore, heroScores, isFirstEntry, seasonNum } = pvpDefense;
|
||||
if (isFirstEntry) {
|
||||
|
||||
@@ -19,7 +19,6 @@ import { updateUserInfo } from '../../../services/redisService';
|
||||
import { checkTaskWithHero, checkTask, checkTaskWithArgs, checkActivityTask } from '../../../services/taskService';
|
||||
import { getGoldObject, getCoinObject } from '../../../pubUtils/itemUtils';
|
||||
import { RScriptRecordModel } from '../../../db/RScriptRecord';
|
||||
import { checkPvp } from '../../../services/pvpService';
|
||||
import { SkinModel, SkinUpdate } from '../../../db/Skin';
|
||||
import { CreateHeroes } from '../../../pubUtils/roleUtil';
|
||||
import { Figure } from '../../../domain/dbGeneral';
|
||||
@@ -73,8 +72,6 @@ export class RoleHandler {
|
||||
let warInfo = gameData.war.get(battleId);
|
||||
await RScriptRecordModel.setScript(roleId, battleId, warInfo.warType, 2, SCRIPT.SCRIPT_NAME);
|
||||
|
||||
await checkPvp(role);
|
||||
|
||||
console.log('******** initRole end', Date.now());
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
roleId, roleName, heroes
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
import { checkPvp, findPvpDefByRoleId } from '../services/pvpService'
|
||||
import { findPvpDefByRoleId } from '../services/pvpService'
|
||||
import { getFuncsSwitch, gameData } from '../pubUtils/data';
|
||||
import { FUNCS_ID, FUNC_OPT_TYPE } from '../consts/constModules/sysConst';
|
||||
import { RoleModel } from '../db/Role';
|
||||
@@ -19,10 +19,6 @@ export async function eventOnPlayerLvUp(roleId: string, lv: number, addFuncs: Ar
|
||||
if (dicFunSwitch && lv >= dicFunSwitch.param) {
|
||||
addFuncs.push(id);
|
||||
|
||||
if(id == FUNCS_ID.PVP) {
|
||||
let role = await RoleModel.findByRoleId(roleId, null, true);
|
||||
await checkPvp(role);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ export async function initPvpInfo(role: RoleType) {
|
||||
let oppPlayers: Array<OppPlayers> = await refreshEnemies(role, 0, 1);
|
||||
let { seasonNum } = await PVPConfigModel.findCurPVPConfig();
|
||||
let challengeCnt = PVP.PVP_CHALLENGE_COUNTS;
|
||||
let result = await PvpDefenseModel.createPvpDefense({ roleId: role.roleId, roleName: role.roleName, role: role._id, heroes, oppPlayers, defCe, seasonNum, challengeCnt });
|
||||
let result = await PvpDefenseModel.createPvpDefenseAndPopulate({ roleId: role.roleId, roleName: role.roleName, role: role._id, heroes, oppPlayers, defCe, seasonNum, challengeCnt });
|
||||
|
||||
//加入排行榜
|
||||
let r = new Rank(REDIS_KEY.PVP_RANK, {});
|
||||
@@ -428,6 +428,7 @@ export function comsumeChallengeCnt(challengeCnt: number, challengeRefTime: numb
|
||||
export async function findPvpDefByRoleId(roleId: string) {
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleIdIncludeAll(roleId);
|
||||
let { warId, seasonNum, seasonEndTime } = await PVPConfigModel.findCurPVPConfig();
|
||||
if(!pvpDefense) return { pvpDefense, warId }
|
||||
let oldSeasonNum = await CounterModel.getCounter(COUNTER.PVP_SEASON_NUM);
|
||||
let { seasonEndTime: oldSeasonEndTime } = await PVPConfigModel.findPVPConfig(oldSeasonNum);
|
||||
if (pvpDefense.seasonNum !== seasonNum && oldSeasonEndTime < nowSeconds()) {
|
||||
@@ -467,6 +468,7 @@ export function getRefOppCnt(refOppCnt: number, refOppTime: Date) {
|
||||
export async function findPvpDefAllByRoleId(roleId: string) {
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleIdIncludeAll(roleId);
|
||||
let { warId, seasonNum, seasonEndTime } = await PVPConfigModel.findCurPVPConfig();
|
||||
if(!pvpDefense) return { pvpDefense, warId }
|
||||
let oldSeasonNum = await CounterModel.getCounter(COUNTER.PVP_SEASON_NUM);
|
||||
let { seasonEndTime: oldSeasonEndTime } = await PVPConfigModel.findPVPConfig(oldSeasonNum);
|
||||
|
||||
|
||||
@@ -113,10 +113,20 @@ export default class PvpDefense extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async createPvpDefense(params: { roleId: string, roleName: string, role: string, heroes: Array<Heroes>, oppPlayers: Array<OppPlayers>, defCe: number, seasonNum: number,challengeCnt: number }, lean = true) {
|
||||
public static async createPvpDefense(params: pvpUpdateInter) {
|
||||
const doc = new PvpDefenseModel();
|
||||
const update = Object.assign(doc.toJSON(), params);
|
||||
const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: params.roleId }, update, { upsert: true, new: true }).lean(lean);
|
||||
const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: params.roleId }, update, { upsert: true, new: true }).lean();
|
||||
return defense;
|
||||
|
||||
}
|
||||
|
||||
public static async createPvpDefenseAndPopulate(params: pvpUpdateInter) {
|
||||
const doc = new PvpDefenseModel();
|
||||
const update = Object.assign(doc.toJSON(), params);
|
||||
const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: params.roleId }, update, { upsert: true, new: true })
|
||||
.populate('oppPlayers.oppDef', 'oppRoleId pos roleName head frame spine rankLv pLv title lv defCe heroes')
|
||||
.lean();
|
||||
return defense;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user