diff --git a/game-server/app/servers/battle/handler/pvpHandler.ts b/game-server/app/servers/battle/handler/pvpHandler.ts index 3f05962d7..a18536a36 100644 --- a/game-server/app/servers/battle/handler/pvpHandler.ts +++ b/game-server/app/servers/battle/handler/pvpHandler.ts @@ -2,7 +2,7 @@ import { Application, BackendSession, pinus, HandlerService, } from 'pinus'; import { findIndex } from 'underscore'; import { gameData, getPvpBoxBySeasonNumAndIndex } from '../../../pubUtils/data'; -import { refreshEnemies, getEnemies, refChallengeCnt, generPVPOppRecInfo, generMyRecInfo, sendLastSeasonRewardIfNotSent, refreshRefOppCnt, generPvpLineupCe } from '../../../services/pvpService'; +import { refreshEnemies, getEnemies, refChallengeCnt, generPVPOppRecInfo, generMyRecInfo, sendLastSeasonRewardIfNotSent, refreshRefOppCnt, generPvpLineupCe, calLineupScore } from '../../../services/pvpService'; import { RoleModel, RoleType } from '../../../db/Role'; import { STATUS } from '../../../consts/statusCode'; import { resResult, genCode, checkRoleIsRobot, robotIdComBack } from '../../../pubUtils/util'; @@ -546,7 +546,7 @@ export class PvpHandler { let sid = session.get('sid'); let serverId = session.get('serverId'); - let { heroScores, hisScore } = await PvpDefenseModel.findByRoleId(roleId); + let { heroScores, hisScore, attack, defense } = await PvpDefenseModel.findByRoleId(roleId); let score = 0; for (let { hid, score: heroScore } of addHeroScores) { if (heroScore < 0) continue; @@ -566,7 +566,11 @@ export class PvpHandler { if (hisScore < score) { hisScore = score; } - let pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, { score, hisScore, heroScores }); + + let newAttack = calLineupScore(attack, heroScores); + let newDefense = calLineupScore(defense, heroScores); + + let pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, { score, hisScore, heroScores, attack: newAttack, defense: newDefense }); const role = await RoleModel.findByRoleId(roleId); // 加入排行榜 diff --git a/game-server/app/services/pvpService.ts b/game-server/app/services/pvpService.ts index 2ada06cec..dbbfc1621 100644 --- a/game-server/app/services/pvpService.ts +++ b/game-server/app/services/pvpService.ts @@ -130,8 +130,6 @@ export async function matchPlayerByRank(seasonNum: number, chosenOpps: string[], oppRank++; } } - } else if (myRank == 0) { - return null } else { if (pos == 1 || pos == 2) { // 刷新我前一名 oppRank = myRank - 1; @@ -449,7 +447,7 @@ export async function generMyRecInfo(pvpDefense: PvpDefenseType, role: RoleType, return { attackInfo, showHeroScores, updateParam } } -function calLineupScore(lineup: Attack|Defense, heroScores: HeroScore[]) { +export function calLineupScore(lineup: Attack|Defense, heroScores: HeroScore[]) { if(!lineup) return lineup; let scores: number[] = []; for(let { actorId } of lineup.heroes) { diff --git a/shared/domain/activityField/popUpShopField.ts b/shared/domain/activityField/popUpShopField.ts index def9c17b7..d0a864d07 100644 --- a/shared/domain/activityField/popUpShopField.ts +++ b/shared/domain/activityField/popUpShopField.ts @@ -95,11 +95,11 @@ export class PopUpShopData extends ActivityBase { this.setLv(lv); for(let data of datas) { let pkg = this.findPackageById(data.id); - pkg.addPlayerRecord(data); + pkg?.addPlayerRecord(data); } for(let data of latestRecords) { let pkg = this.findPackageById(data.id); - pkg.setLatestBought(data); + pkg?.setLatestBought(data); } }