0
0
mirror of https://github.com/sp-tarkov/server.git synced 2025-02-13 07:50:45 -05:00

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: SPT/Server#382
Co-authored-by: HiddenCirno <2301697863@qq.com>
Co-committed-by: HiddenCirno <2301697863@qq.com>
(cherry picked from commit f555c24709bd4ed9b294c1e008ce3229be4190e1)
This commit is contained in:
HiddenCirno 2024-07-21 15:05:48 +00:00 committed by Dev
parent 8ff9f6f945
commit 4144fccbd1
2 changed files with 16 additions and 1 deletions

View File

@ -3,6 +3,7 @@ import { ItemHelper } from "@spt/helpers/ItemHelper";
import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { TradeHelper } from "@spt/helpers/TradeHelper"; import { TradeHelper } from "@spt/helpers/TradeHelper";
import { TraderHelper } from "@spt/helpers/TraderHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper";
import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item } from "@spt/models/eft/common/tables/IItem"; import { Item } from "@spt/models/eft/common/tables/IItem";
import { ITraderBase } from "@spt/models/eft/common/tables/ITrader"; import { ITraderBase } from "@spt/models/eft/common/tables/ITrader";
@ -53,6 +54,7 @@ export class TradeController
@inject("HashUtil") protected hashUtil: HashUtil, @inject("HashUtil") protected hashUtil: HashUtil,
@inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ItemHelper") protected itemHelper: ItemHelper,
@inject("ProfileHelper") protected profileHelper: ProfileHelper, @inject("ProfileHelper") protected profileHelper: ProfileHelper,
@inject("ragfairOfferHelper") protected ragfairOfferHelper: RagfairOfferHelper,
@inject("TraderHelper") protected traderHelper: TraderHelper, @inject("TraderHelper") protected traderHelper: TraderHelper,
@inject("RagfairServer") protected ragfairServer: RagfairServer, @inject("RagfairServer") protected ragfairServer: RagfairServer,
@inject("HttpResponseUtil") protected httpResponse: HttpResponseUtil, @inject("HttpResponseUtil") protected httpResponse: HttpResponseUtil,
@ -231,6 +233,19 @@ export class TradeController
{ {
return; 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 // Remove/lower stack count of item purchased from flea offer
this.ragfairServer.removeOfferStack(fleaOffer._id, requestOffer.count); this.ragfairServer.removeOfferStack(fleaOffer._id, requestOffer.count);

View File

@ -441,7 +441,7 @@ export class RagfairOfferHelper
* @param boughtAmount Amount item was purchased for * @param boughtAmount Amount item was purchased for
* @returns IItemEventRouterResponse * @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; const itemTpl = offer.items[0]._tpl;
let paymentItemsToSendToPlayer: Item[] = []; let paymentItemsToSendToPlayer: Item[] = [];