2024-06-09 14:50:47 +08:00

81 lines
3.3 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class Mod {
itemHelper;
offerService;
tradeHelper;
profileHelper;
saveServer;
logger;
preAkiLoad(container) {
const logger = container.resolve("WinstonLogger");
this.logger = logger;
const staticRouterModService = container.resolve("StaticRouterModService");
//HELPERS
this.itemHelper = container.resolve("ItemHelper");
this.offerService = container.resolve("RagfairOfferService");
this.tradeHelper = container.resolve("TradeHelper");
this.profileHelper = container.resolve("ProfileHelper");
this.saveServer = container.resolve("SaveServer");
// Hook up a new static route
staticRouterModService.registerStaticRouter("LootValueRoutes", [
{
url: "/LootValue/GetItemLowestFleaPrice",
//info is the payload from client in json
//output is the response back to client
action: (url, info, sessionID, output) => {
return (JSON.stringify(this.getItemLowestFleaPrice(info.templateId)));
}
},
{
url: "/LootValue/SellItemToTrader",
//info is the payload from client in json
//output is the response back to client
action: (url, info, sessionID, output) => {
let response = this.sellItemToTrader(sessionID, info.ItemId, info.TraderId, info.Price);
return (JSON.stringify(response));
}
}
], "custom-static-LootValueRoutes");
}
getItemLowestFleaPrice(templateId) {
let offers = this.offerService.getOffersOfType(templateId);
if (offers && offers.length > 0) {
offers = offers.filter(a => a.user.memberType != 4 //exclude traders
&& a.requirements[0]._tpl == '5449016a4bdc2d6f028b456f' //consider only ruble trades
&& this.itemHelper.getItemQualityModifier(a.items[0]) == 1 //and items with full durability
);
if (offers.length > 0)
return (offers.sort((a, b) => a.summaryCost - b.summaryCost)[0]).summaryCost;
}
return null;
}
sellItemToTrader(sessionId, itemId, traderId, price) {
let pmcData = this.profileHelper.getPmcProfile(sessionId);
if (!pmcData) {
this.logger.error("pmcData was null");
return false;
}
let item = pmcData.Inventory.items.find(x => x._id === itemId);
if (!item) {
this.logger.error("item was null");
return false;
}
let sellRequest = {
Action: "sell_to_trader",
type: "sell_to_trader",
tid: traderId,
price: price,
items: [{
id: itemId,
count: item.upd ? item.upd.StackObjectsCount ? item.upd.StackObjectsCount : 1 : 1,
scheme_id: 0
}]
};
let response = this.tradeHelper.sellItem(pmcData, pmcData, sellRequest, sessionId);
this.saveServer.saveProfile(sessionId);
return true;
}
}
module.exports = { mod: new Mod() };
//# sourceMappingURL=LootValueStaticRouter.js.map