From fb42aae569f674b34121e6797b5c660e5b4f9ce8 Mon Sep 17 00:00:00 2001 From: luying Date: Fri, 9 Dec 2022 16:20:30 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=20fix(=E5=B7=85=E5=B3=B0=E6=BC=94?= =?UTF-8?q?=E6=AD=A6):=20=E8=B5=9B=E5=AD=A3=E5=88=87=E6=8D=A2=E5=90=8E?= =?UTF-8?q?=E7=BB=93=E7=AE=97=E4=B8=8D=E5=86=8D=E8=AE=A1=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/servers/battle/handler/pvpHandler.ts | 27 ++++++++++--------- shared/db/BattleRecord.ts | 2 ++ shared/db/PvpRecord.ts | 4 ++- shared/domain/roleField/hero.ts | 2 ++ 4 files changed, 22 insertions(+), 13 deletions(-) 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; } }