diff --git a/game-server/app/servers/battle/handler/pvpHandler.ts b/game-server/app/servers/battle/handler/pvpHandler.ts index c4629b4ca..5875b132e 100644 --- a/game-server/app/servers/battle/handler/pvpHandler.ts +++ b/game-server/app/servers/battle/handler/pvpHandler.ts @@ -185,7 +185,7 @@ export class PvpHandler { status: 0, warName: warInfo.gk_name, warType: warInfo.warType, - record: { heroes, pos: curOpp.pos, oppRoleId } + record: { heroes, pos: curOpp.pos, oppRoleId, pvpSeasonNum: seasonNum } } }, true); await checkTask(serverId, roleId, sid, TASK_TYPE.PVP); @@ -235,7 +235,7 @@ export class PvpHandler { return resResult(STATUS.BATTLE_STATUS_WRONG); } - let { record: { heroes: dbHeroes, oppRoleId, pos }, createdAt } = BattleRecord; + let { record: { heroes: dbHeroes, oppRoleId, pos, pvpSeasonNum }, createdAt } = BattleRecord; let flag = 1; // 对比hero信息 for (let { hid } of myHeroes) { @@ -260,29 +260,32 @@ export class PvpHandler { if (!curOpp) return resResult(STATUS.PVP_ROLE_NOT_FOUND); const defenseInfo = await generPVPOppRecInfo(isSuccess, curOpp, oppHeroes, serverId); - // 战报记录 - await PvpRecordModel.createRec({ roleId1: roleId, roleId2: robotIdComBack(oppRoleId), warId: BattleRecord.battleId, attackInfo, defenseInfo, createTime: nowSeconds() }); - let seasonNum: number = this.app.get('pvpSeasonNum'); + // 战报记录 + await PvpRecordModel.createRec({ roleId1: roleId, roleId2: robotIdComBack(oppRoleId), warId: BattleRecord.battleId, attackInfo, defenseInfo, createTime: nowSeconds(), timeout: seasonNum != pvpSeasonNum }); // 更新battleRecord await BattleRecordModel.updateBattleRecordByCode(battleCode, { $set: { status: isSuccess ? 1 : 2 } }, true); - pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, update); - + if(seasonNum == pvpSeasonNum) { + pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, update); + } let result = new PvpDataReturn(); // 返回对象 result.setPvpDefense(pvpDefense); let oppPlayersReturn = await getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum); result.setOppPlayers(oppPlayersReturn); - // 加入排行榜 - let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum }); - await r.setRankWithRoleInfo(roleId, pvpDefense.score, pvpDefense.updatedAt.getTime(), role); - let myRank = await r.getMyRank({ roleId }); - result.setMyRank(myRank); + + if(seasonNum == pvpSeasonNum) { + // 加入排行榜 + let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum: pvpSeasonNum }); + await r.setRankWithRoleInfo(roleId, pvpDefense.score, pvpDefense.updatedAt.getTime(), role); + let myRank = await r.getMyRank({ roleId }); + result.setMyRank(myRank); + } await checkTaskInPvpEnd(serverId, roleId, sid, isSuccess, pvpDefense.heroScores, pvpDefense.seasonWinNum); if(hisWinStreakNum < pvpDefense.hisWinStreakNum) { diff --git a/shared/db/BattleRecord.ts b/shared/db/BattleRecord.ts index d459fc594..a9df27d45 100644 --- a/shared/db/BattleRecord.ts +++ b/shared/db/BattleRecord.ts @@ -35,6 +35,8 @@ class Record { bossDamage?: number; // boss本造成的伤害 @prop({ required: false }) encourageCnt?: number; + @prop({ required: false }) + pvpSeasonNum?: number; } @index({ roleId: 1, battleId: 1 }) diff --git a/shared/db/PvpRecord.ts b/shared/db/PvpRecord.ts index 1840bab43..2809c97c8 100644 --- a/shared/db/PvpRecord.ts +++ b/shared/db/PvpRecord.ts @@ -134,8 +134,10 @@ export default class PvpRecord extends BaseModel { @prop({ required: true, default: 0 }) createTime: number; + @prop({ required: true, default: 0 }) + timeout: boolean; - public static async createRec(param: { roleId1: string, roleId2: string, warId: number, attackInfo: PvpRecordPlayerInfo, defenseInfo: PvpRecordPlayerInfo, createTime: number }) { + public static async createRec(param: { roleId1: string, roleId2: string, warId: number, attackInfo: PvpRecordPlayerInfo, defenseInfo: PvpRecordPlayerInfo, createTime: number, timeout?: boolean }) { await this.delPvpRecords(); let code = genCode(6); const result = await PvpRecordModel.findOneAndUpdate({ code }, param, { new: true, upsert: true }).lean(); diff --git a/shared/domain/roleField/hero.ts b/shared/domain/roleField/hero.ts index 20f0b94f6..4ea96dfe1 100644 --- a/shared/domain/roleField/hero.ts +++ b/shared/domain/roleField/hero.ts @@ -62,6 +62,7 @@ export class HeroParam { ePlace: EPlace[]; // 武将装备引用数组 artifact: number = 0; + subHid: number = 0; talent: Talent[] = []; usedTalentPoint: number = 0; totalTalentPoint: number = 0; @@ -96,6 +97,7 @@ export class HeroParam { } this.ePlace = hero.ePlace; this.artifact = hero.artifact; + this.subHid = hero.subHid; } }