From d94ba658473d9633ea3c540991cc9a761cbb24e4 Mon Sep 17 00:00:00 2001 From: mamengke01 <794347210@qq.com> Date: Mon, 11 Jan 2021 17:09:48 +0800 Subject: [PATCH] =?UTF-8?q?pvp=E6=8E=92=E8=A1=8C=E6=A6=9C=E5=B1=95?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/servers/battle/handler/pvpHandler.ts | 24 ++++++++++++++++--- .../app/services/playerEventService.ts | 4 ++-- game-server/app/services/pvpService.ts | 3 ++- shared/pubUtils/interface.ts | 3 ++- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/game-server/app/servers/battle/handler/pvpHandler.ts b/game-server/app/servers/battle/handler/pvpHandler.ts index 703fd8815..93fe0abd6 100644 --- a/game-server/app/servers/battle/handler/pvpHandler.ts +++ b/game-server/app/servers/battle/handler/pvpHandler.ts @@ -28,6 +28,25 @@ export class PvpHandler { constructor(private app: Application) { } + async addRoleScore(msg: {score:number}, session: BackendSession) { + let { score } = msg; + let roleId = session.get('roleId'); + let pvpDefense = await PvpDefenseModel.findByRoleId(roleId); + score += pvpDefense.score; + if (score < 0) { + score = 0; + } + pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, { score }); + let roleName = session.get('roleName'); + const role = await RoleModel.findByRoleId(roleId); + + // 加入排行榜 + let params = new RankParam(roleName, role.lv, role.vLv, role.headHid, role.sHid, role.title); + await setRank(REDIS_KEY.PVP_RANK, 0, roleId, pvpDefense.score, pvpDefense.updatedAt.getTime(), params); + return resResult(STATUS.SUCCESS, {score}); + + } + async getData (msg: {}, session: BackendSession) { let roleId = session.get('roleId'); let {pvpDefense, warId} = await findPvpDefAllByRoleId(roleId); @@ -333,7 +352,6 @@ export class PvpHandler { }); } } - result = new PlayerDetail({...robot, lv: role.lv, heroes}) } else { // 查询对方pvpDefense @@ -350,8 +368,8 @@ export class PvpHandler { }); } heroes.sort((a, b) => b.score - a.score); - - result = new PlayerDetail({...role, heroes}); + let rank = await getMyRank(REDIS_KEY.PVP_RANK, 0, roleId);//去redis中获取排名 + result = new PlayerDetail({...role, heroes, rank}); } return resResult(STATUS.SUCCESS, result); diff --git a/game-server/app/services/playerEventService.ts b/game-server/app/services/playerEventService.ts index 30bd327d8..0fb74d8d3 100644 --- a/game-server/app/services/playerEventService.ts +++ b/game-server/app/services/playerEventService.ts @@ -8,14 +8,14 @@ import { startEvent } from "./eventSercive"; export async function eventOnPlayerLvUp(roleId: string, lv: number, addFuncs: Array, dataFuncs: Array) { - // if (!dataFuncs.includes(FUNCS_ID.PVP)) {//开启pvp + if (!dataFuncs.includes(FUNCS_ID.PVP)) {//开启pvp let res = getFuncsSwitch(FUNCS_ID.PVP); if (!res || lv >= res.param) { let role = await RoleModel.findByRoleId(roleId); await checkPvp(role); addFuncs.push(FUNCS_ID.PVP); } - // } + } if (!dataFuncs.includes(FUNCS_ID.EVENT)) {//开启奇遇 let res = getFuncsSwitch(FUNCS_ID.EVENT); diff --git a/game-server/app/services/pvpService.ts b/game-server/app/services/pvpService.ts index b2b585a30..33c71aa8d 100644 --- a/game-server/app/services/pvpService.ts +++ b/game-server/app/services/pvpService.ts @@ -242,7 +242,7 @@ export async function defaultHeroes ( role:RoleType, challengeCnt?:number, chall let { heroes } = await PvpDefenseModel.findByRoleId(role.roleId); var orders = [1, 2, 3, 4, 5]; heroes.sort(function(a, b) { - if (!!a.order) { + if (!!a.order&& !!a.hero) { let index = orders.indexOf(a.order); orders.splice(index, 1); } @@ -278,6 +278,7 @@ export async function defaultHeroes ( role:RoleType, challengeCnt?:number, chall } } else { heroes[index].ce = item.ce; + heroes[index].hero = item.hero; if (!heroes[index].order) { heroes[index].order = orders[0]; orders.splice(0, 1); diff --git a/shared/pubUtils/interface.ts b/shared/pubUtils/interface.ts index e319fdfd0..a5193da44 100644 --- a/shared/pubUtils/interface.ts +++ b/shared/pubUtils/interface.ts @@ -143,7 +143,7 @@ export class PlayerDetail { defCe?: number = 0; heroes: PlayerDetailHero[]; - + rank?:number = 0; constructor(detail: PlayerDetail) { if(detail.roleId) this.roleId = detail.roleId; if(detail.roleName) this.roleName = detail.roleName; @@ -155,5 +155,6 @@ export class PlayerDetail { if(detail.pLv) this.pLv = detail.pLv; if(detail.defCe) this.defCe = reduceCe(detail.defCe); if(detail.heroes) this.heroes = detail.heroes; + if(detail.rank) this.rank = detail.rank; } } \ No newline at end of file