From 004d7cd38d48b376ac3f7100ded27123deea5485 Mon Sep 17 00:00:00 2001 From: luying Date: Tue, 29 Jun 2021 12:03:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=93=E5=8A=9B=EF=BC=9A=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E4=BD=93=E5=8A=9B=E9=81=93=E5=85=B7=E5=90=8E?= =?UTF-8?q?=E6=9C=80=E5=A4=A7=E6=81=A2=E5=A4=8D=E6=97=B6=E9=97=B4=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E5=8F=98=E5=8C=96bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/services/actionPointService.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/game-server/app/services/actionPointService.ts b/game-server/app/services/actionPointService.ts index ddd76e140..533f7fbab 100644 --- a/game-server/app/services/actionPointService.ts +++ b/game-server/app/services/actionPointService.ts @@ -2,7 +2,7 @@ * 体力系统 */ -import { ActionPointModel } from '../db/ActionPoint'; +import { ActionPointModel, ActionPointType } from '../db/ActionPoint'; import { TASK_TYPE, STATUS } from '../consts'; import { checkActivityTask, checkTask } from './taskService'; import { getDicApByLv } from '../pubUtils/data'; @@ -18,9 +18,14 @@ import { AP } from '../pubUtils/dicParam'; * @param lv 玩家等级 */ export async function getAp(roleId: string, lv: number, fromGetAp = false) { + let dataAp = await ActionPointModel.getAp(roleId); + return getApWithDataAp(lv, dataAp, fromGetAp); +} + +function getApWithDataAp(lv: number, dataAp: ActionPointType, fromGetAp = false) { + const now = Date.now(); const dicAp = getDicApByLv(lv); - let dataAp = await ActionPointModel.getAp(roleId); const maxAp = dicAp.maxAp; // 最大体力值 const per = AP.PERAPRESTORETIME * 1000; // 恢复时间(ms) let { ap, refTime, buyRefTime = 0, buyTimes = 0 } = dataAp; @@ -70,7 +75,7 @@ export async function setAp(roleId: string, lv: number, changeAp: number, sid: s apMaxRemainTime = 0; } if (ap < 0) return null // 体力不足 - await ActionPointModel.saveAp(roleId, ap, refTime); + let dataAp = await ActionPointModel.saveAp(roleId, ap, refTime); if (isOver && ap < maxAp) { // 特殊处理,溢出之后做减少体力的操作时 apRemainTime = AP.PERAPRESTORETIME; @@ -82,7 +87,8 @@ export async function setAp(roleId: string, lv: number, changeAp: number, sid: s let { serverId } = await RoleModel.findByRoleId(roleId); await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_COST_AP, -1 * changeAp,); } - let apJson = { ap, maxAp, refTime, apMaxRemainTime, apRemainTime, buyTimes }; + let apJson = await getApWithDataAp(lv, dataAp); + if (changeAp != 0) { let uids = [{ uid: roleId, sid }]; pinus.app.get('channelService').pushMessageByUids('onApUpdate', resResult(STATUS.SUCCESS, { apJson }), uids);