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