From 4cb5db0de64a80dd3e64ac9c0bdc0650c7060775 Mon Sep 17 00:00:00 2001 From: luying Date: Thu, 14 Apr 2022 11:07:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=EF=BC=9A=E5=AF=BB=E5=AE=9D?= =?UTF-8?q?=E9=AA=91=E5=85=B5=E6=B6=88=E8=80=97=E4=BD=8D=E7=BD=AE=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/handler/treasureHuntHandler.ts | 7 +++++-- .../battle/handler/normalBattleHandler.ts | 5 +++++ .../app/services/activity/giftPackageService.ts | 2 +- .../services/activity/treasureHuntService.ts | 17 ++++++++++++++++- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/game-server/app/servers/activity/handler/treasureHuntHandler.ts b/game-server/app/servers/activity/handler/treasureHuntHandler.ts index 8924f31a4..6833f9c06 100644 --- a/game-server/app/servers/activity/handler/treasureHuntHandler.ts +++ b/game-server/app/servers/activity/handler/treasureHuntHandler.ts @@ -9,6 +9,7 @@ import { addReward, stringToConsumeParam, stringToRewardParam } from '../../../s import { RewardParam } from '../../../domain/activityField/rewardField'; import { ActivityTreasureHuntTreasureShopModel } from '../../../db/ActivityTreasureHuntTreasureShop'; import { ActivityTreasureHuntFirstPageModel } from '../../../db/ActivityTreasureHuntFirstPage'; +import { CheckMeterial } from '../../../services/role/checkMaterial'; export default function (app: Application) { @@ -212,8 +213,10 @@ export class TreasureHuntHandler { //消耗资源 let consumeStr = challengeData.consume; let consume = stringToConsumeParam(consumeStr) - let resourceResult = await handleCost(roleId, sid, consume, ITEM_CHANGE_REASON.TREASURE_HUNT_CHALLENGE); - if (!resourceResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); + + let check = new CheckMeterial(roleId); + let isEnough = await check.decrease(consume); + if (!isEnough) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); let warId = playerData.challenge.randomGK(); diff --git a/game-server/app/servers/battle/handler/normalBattleHandler.ts b/game-server/app/servers/battle/handler/normalBattleHandler.ts index 286de604b..e5fabb591 100644 --- a/game-server/app/servers/battle/handler/normalBattleHandler.ts +++ b/game-server/app/servers/battle/handler/normalBattleHandler.ts @@ -29,6 +29,7 @@ import { getVipRegretCnt } from '../../../services/activity/monthlyTicketService import { isArray, isNumber } from 'underscore'; import { RewardInter } from '../../../pubUtils/interface'; import { addItems } from '../../../services/role/rewardService'; +import { treasureHuntChallengeConsume } from '../../../services/activity/treasureHuntService'; export default function (app: Application) { new HandlerService(app, {}); @@ -234,6 +235,10 @@ export class NormalBattleHandler { let isFirst = await challengeNewHeroGK(serverId, roleId, activityId, pageIndex, battleId) skipReward = !isFirst; } + } else if (warInfo.warType == WAR_TYPE.ACT_TREASURE_HUNT) { + if(isSuccess) { + await treasureHuntChallengeConsume(roleId, sid, activityId); + } } let curWarStar = warStar.find(cur => cur.id == battleId); let { newWarStars, newStar } = calculateWarStar(warStar, battleId, stars); diff --git a/game-server/app/services/activity/giftPackageService.ts b/game-server/app/services/activity/giftPackageService.ts index 1231e47c9..654dec043 100644 --- a/game-server/app/services/activity/giftPackageService.ts +++ b/game-server/app/services/activity/giftPackageService.ts @@ -173,7 +173,7 @@ export function stringToRewardParam(rewardStr: string): Array { } //数据格式转换'类型&id&数量|类型&id&数量|' ->> Array 资源消耗 -export function stringToConsumeParam(rewardStr: string): Array { +export function stringToConsumeParam(rewardStr: string) { let result = new Array<{ type: number, id: number, count: number }>(); if (!rewardStr) return result; let decodeArr = decodeArrayListStr(rewardStr); diff --git a/game-server/app/services/activity/treasureHuntService.ts b/game-server/app/services/activity/treasureHuntService.ts index 884b77e9e..97585a2c2 100644 --- a/game-server/app/services/activity/treasureHuntService.ts +++ b/game-server/app/services/activity/treasureHuntService.ts @@ -9,11 +9,12 @@ import { ServerlistModel } from '../../db/Serverlist'; import { ServerTempModel, ServerTempModelType } from '../../db/ServerTemp'; import { TreasureHuntData } from '../../domain/activityField/treasureHuntField'; import { deltaDays } from '../../pubUtils/util'; -import { addReward, stringToRewardParam } from './giftPackageService'; +import { addReward, stringToConsumeParam, stringToRewardParam } from './giftPackageService'; import { RewardParam } from '../../domain/activityField/rewardField'; import { RoleModel } from '../../db/Role'; import { getActivitiesByType, getActivityById } from './activityService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService'; +import { handleCost } from '../role/rewardService'; /** * 获取活动数据 @@ -356,4 +357,18 @@ export async function makeShop(roleId: string, roleName: string, sid: string, se code: 0, data: Object.assign(result, { item }) } +} + +export async function treasureHuntChallengeConsume(roleId: string, sid: string, activityId: number) { + + let activityData: ActivityModelType = await getActivityById(activityId); + let playerData = new TreasureHuntData(activityData, 0, 0); + + let challengeData = playerData.challenge; + //消耗资源 + let consumeStr = challengeData.consume; + let consume = stringToConsumeParam(consumeStr) + let resourceResult = await handleCost(roleId, sid, consume, ITEM_CHANGE_REASON.TREASURE_HUNT_CHALLENGE); + if (!resourceResult) return false; + return true } \ No newline at end of file