From 4144fccbd1198f52c2312c7c8af223ffbb7f76df Mon Sep 17 00:00:00 2001 From: HiddenCirno <2301697863@qq.com> Date: Sun, 21 Jul 2024 15:05:48 +0000 Subject: [PATCH] Complete issues #667 (Possible issue with flea buying) (!382) Now when a profile create a new offer and another profile buy it, it can work correctly(For example profile A create a offer and profile B buy this offer, now A will receive money from profile B) and set RagfairOfferHelper.completeOffer to public because TradeHelper now use it to resolve trade between 2 profiles on ragfair Reviewed-on: https://dev.sp-tarkov.com/SPT/Server/pulls/382 Co-authored-by: HiddenCirno <2301697863@qq.com> Co-committed-by: HiddenCirno <2301697863@qq.com> (cherry picked from commit f555c24709bd4ed9b294c1e008ce3229be4190e1) --- project/src/controllers/TradeController.ts | 15 +++++++++++++++ project/src/helpers/RagfairOfferHelper.ts | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/project/src/controllers/TradeController.ts b/project/src/controllers/TradeController.ts index 597baebb..a532fe4e 100644 --- a/project/src/controllers/TradeController.ts +++ b/project/src/controllers/TradeController.ts @@ -3,6 +3,7 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TradeHelper } from "@spt/helpers/TradeHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { Item } from "@spt/models/eft/common/tables/IItem"; import { ITraderBase } from "@spt/models/eft/common/tables/ITrader"; @@ -53,6 +54,7 @@ export class TradeController @inject("HashUtil") protected hashUtil: HashUtil, @inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ProfileHelper") protected profileHelper: ProfileHelper, + @inject("ragfairOfferHelper") protected ragfairOfferHelper: RagfairOfferHelper, @inject("TraderHelper") protected traderHelper: TraderHelper, @inject("RagfairServer") protected ragfairServer: RagfairServer, @inject("HttpResponseUtil") protected httpResponse: HttpResponseUtil, @@ -231,6 +233,19 @@ export class TradeController { return; } + //resolve when a profile buy another profile's offer + const OfferID = fleaOffer._id + const OfferOwnerID = fleaOffer.user?.id + const OfferBuyCount = requestOffer.count + //resolve offer + if(this.profileHelper.getFullProfile(OfferOwnerID)!=null){ + if(this.profileHelper.getFullProfile(OfferOwnerID).characters.pmc.RagfairInfo.offers.length>0){ + if(this.profileHelper.getFullProfile(OfferOwnerID).characters.pmc.RagfairInfo.offers.some(offer=>offer._id == OfferID)){ + this.ragfairOfferHelper.completeOffer(OfferOwnerID, fleaOffer, OfferBuyCount) + return; + } + } + } // Remove/lower stack count of item purchased from flea offer this.ragfairServer.removeOfferStack(fleaOffer._id, requestOffer.count); diff --git a/project/src/helpers/RagfairOfferHelper.ts b/project/src/helpers/RagfairOfferHelper.ts index 8ad958c2..d6846900 100644 --- a/project/src/helpers/RagfairOfferHelper.ts +++ b/project/src/helpers/RagfairOfferHelper.ts @@ -441,7 +441,7 @@ export class RagfairOfferHelper * @param boughtAmount Amount item was purchased for * @returns IItemEventRouterResponse */ - protected completeOffer(sessionID: string, offer: IRagfairOffer, boughtAmount: number): IItemEventRouterResponse + public completeOffer(sessionID: string, offer: IRagfairOffer, boughtAmount: number): IItemEventRouterResponse { const itemTpl = offer.items[0]._tpl; let paymentItemsToSendToPlayer: Item[] = [];