mirror of
https://github.com/Lawin0129/LawinServer.git
synced 2026-01-13 02:42:22 +01:00
Add BR Item Shop and Item Shop Purchasing
This commit is contained in:
303
index.js
303
index.js
@@ -9,7 +9,7 @@ const worldstw = require("./responses/worldstw.json");
|
||||
const friendslist = require("./responses/friendslist.json");
|
||||
const friendslist2 = require("./responses/friendslist2.json");
|
||||
const Keychain = require("./responses/keychain.json");
|
||||
const catalog = require("./responses/catalog.json");
|
||||
const catalog = getItemShop();
|
||||
const contentpages = require("./responses/contentpages.json");
|
||||
express.use(function(req, res, next) {
|
||||
// Getting the raw body of a request for client saving
|
||||
@@ -41,6 +41,32 @@ express.get("/", async (req, res) => {
|
||||
res.sendFile('index.html');
|
||||
})
|
||||
|
||||
express.get("/clearitemsforshop", async (req, res) => {
|
||||
res.set("Content-Type", "text/plain");
|
||||
|
||||
const athena = require("./profiles/athena.json");
|
||||
const CatalogConfig = require("./catalog_config.json");
|
||||
|
||||
for (var value in CatalogConfig) {
|
||||
for (var key in athena.items) {
|
||||
if (typeof CatalogConfig[value] == "string") {
|
||||
if (CatalogConfig[value].length != 0) {
|
||||
if (CatalogConfig[value].toLowerCase() == athena.items[key].templateId.toLowerCase()) {
|
||||
delete athena.items[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
athena.rvn += 1;
|
||||
athena.commandRevision += 1;
|
||||
|
||||
fs.writeFileSync("./profiles/athena.json", JSON.stringify(athena, null, 2));
|
||||
|
||||
res.send('Success')
|
||||
})
|
||||
|
||||
express.get("/fortnite/api/storefront/v2/catalog", async (req, res) => {
|
||||
if (req.headers["user-agent"].includes("2870186")) {
|
||||
return res.status(404).end();
|
||||
@@ -3850,6 +3876,7 @@ express.post("/fortnite/api/game/v2/profile/*/client/PurchaseCatalogEntry", asyn
|
||||
|
||||
const profile = require(`./profiles/${req.query.profileId || "profile0"}.json`);
|
||||
const campaign = require("./profiles/campaign.json");
|
||||
const athena = require("./profiles/athena.json");
|
||||
const ItemIDS = require("./responses/ItemIDS.json");
|
||||
|
||||
// do not change any of these or you will end up breaking it
|
||||
@@ -3860,6 +3887,8 @@ express.post("/fortnite/api/game/v2/profile/*/client/PurchaseCatalogEntry", asyn
|
||||
var CampaignBaseRevision = campaign.rvn || 0;
|
||||
var QueryRevision = req.query.rvn || -1;
|
||||
var PurchasedLlama = false;
|
||||
var AthenaModified = false;
|
||||
var ItemExists = false;
|
||||
|
||||
const ID = makeid();
|
||||
|
||||
@@ -3900,10 +3929,92 @@ express.post("/fortnite/api/game/v2/profile/*/client/PurchaseCatalogEntry", asyn
|
||||
}
|
||||
})
|
||||
}
|
||||
if (value.name.toLowerCase().startsWith("br")) {
|
||||
catalog.storefronts[a].catalogEntries.forEach(function(value, b) {
|
||||
if (value.offerId == req.body.offerId) {
|
||||
catalog.storefronts[a].catalogEntries[b].itemGrants.forEach(function(value, c) {
|
||||
const ID = value.templateId;
|
||||
|
||||
for (var key in athena.items) {
|
||||
if (value.templateId.toLowerCase() == athena.items[key].templateId.toLowerCase()) {
|
||||
ItemExists = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (ItemExists == false) {
|
||||
if (MultiUpdate.length == 0) {
|
||||
MultiUpdate.push({
|
||||
"profileRevision": athena.rvn || 0,
|
||||
"profileId": "athena",
|
||||
"profileChangesBaseRevision": AthenaBaseRevision,
|
||||
"profileChanges": [],
|
||||
"profileCommandRevision": athena.commandRevision || 0,
|
||||
})
|
||||
}
|
||||
|
||||
if (Notifications.length == 0) {
|
||||
Notifications.push({
|
||||
"type": "CatalogPurchase",
|
||||
"primary": true,
|
||||
"lootResult": {
|
||||
"items": []
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const Item = {
|
||||
"templateId": value.templateId,
|
||||
"attributes": {
|
||||
"max_level_bonus": 0,
|
||||
"level": 1,
|
||||
"item_seen": false,
|
||||
"xp": 0,
|
||||
"variants": [],
|
||||
"favorite": false
|
||||
},
|
||||
"quantity": 1
|
||||
};
|
||||
|
||||
athena.items[ID] = Item;
|
||||
|
||||
MultiUpdate[0].profileChanges.push({
|
||||
"changeType": "itemAdded",
|
||||
"itemId": ID,
|
||||
"item": Item
|
||||
})
|
||||
|
||||
Notifications[0].lootResult.items.push({
|
||||
"itemType": Item.templateId,
|
||||
"itemGuid": ID,
|
||||
"itemProfile": "athena",
|
||||
"attributes": Item.attributes,
|
||||
"quantity": 1
|
||||
})
|
||||
|
||||
AthenaModified = true;
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
PurchasedLlama = true;
|
||||
|
||||
if (AthenaModified == true) {
|
||||
athena.rvn += 1;
|
||||
athena.commandRevision += 1;
|
||||
|
||||
MultiUpdate[0].profileRevision = athena.rvn || 0;
|
||||
MultiUpdate[0].profileCommandRevision = athena.commandRevision || 0;
|
||||
|
||||
fs.writeFileSync("./profiles/athena.json", JSON.stringify(athena, null, 2), function(err) {
|
||||
if (err) {
|
||||
console.log('error:', err)
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
fs.writeFileSync(`./profiles/${req.query.profileId || "profile0"}.json`, JSON.stringify(profile, null, 2), function(err) {
|
||||
if (err) {
|
||||
console.log('error:', err)
|
||||
@@ -4120,8 +4231,90 @@ express.post("/fortnite/api/game/v2/profile/*/client/PurchaseCatalogEntry", asyn
|
||||
}
|
||||
})
|
||||
}
|
||||
if (value.name.toLowerCase().startsWith("br")) {
|
||||
catalog.storefronts[a].catalogEntries.forEach(function(value, b) {
|
||||
if (value.offerId == req.body.offerId) {
|
||||
catalog.storefronts[a].catalogEntries[b].itemGrants.forEach(function(value, c) {
|
||||
const ID = value.templateId;
|
||||
|
||||
for (var key in athena.items) {
|
||||
if (value.templateId.toLowerCase() == athena.items[key].templateId.toLowerCase()) {
|
||||
ItemExists = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (ItemExists == false) {
|
||||
if (MultiUpdate.length == 0) {
|
||||
MultiUpdate.push({
|
||||
"profileRevision": athena.rvn || 0,
|
||||
"profileId": "athena",
|
||||
"profileChangesBaseRevision": AthenaBaseRevision,
|
||||
"profileChanges": [],
|
||||
"profileCommandRevision": athena.commandRevision || 0,
|
||||
})
|
||||
}
|
||||
|
||||
if (Notifications.length == 0) {
|
||||
Notifications.push({
|
||||
"type": "CatalogPurchase",
|
||||
"primary": true,
|
||||
"lootResult": {
|
||||
"items": []
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const Item = {
|
||||
"templateId": value.templateId,
|
||||
"attributes": {
|
||||
"max_level_bonus": 0,
|
||||
"level": 1,
|
||||
"item_seen": false,
|
||||
"xp": 0,
|
||||
"variants": [],
|
||||
"favorite": false
|
||||
},
|
||||
"quantity": 1
|
||||
};
|
||||
|
||||
athena.items[ID] = Item;
|
||||
|
||||
MultiUpdate[0].profileChanges.push({
|
||||
"changeType": "itemAdded",
|
||||
"itemId": ID,
|
||||
"item": Item
|
||||
})
|
||||
|
||||
Notifications[0].lootResult.items.push({
|
||||
"itemType": Item.templateId,
|
||||
"itemGuid": ID,
|
||||
"itemProfile": "athena",
|
||||
"attributes": Item.attributes,
|
||||
"quantity": 1
|
||||
})
|
||||
|
||||
AthenaModified = true;
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
if (AthenaModified == true) {
|
||||
athena.rvn += 1;
|
||||
athena.commandRevision += 1;
|
||||
|
||||
MultiUpdate[0].profileRevision = athena.rvn || 0;
|
||||
MultiUpdate[0].profileCommandRevision = athena.commandRevision || 0;
|
||||
|
||||
fs.writeFileSync("./profiles/athena.json", JSON.stringify(athena, null, 2), function(err) {
|
||||
if (err) {
|
||||
console.log('error:', err)
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
fs.writeFileSync("./profiles/campaign.json", JSON.stringify(campaign, null, 2), function(err) {
|
||||
if (err) {
|
||||
console.log('error:', err)
|
||||
@@ -4959,3 +5152,111 @@ express.all("*", async (req, res) => {
|
||||
});
|
||||
res.end();
|
||||
});
|
||||
|
||||
function getItemShop() {
|
||||
const catalog = JSON.parse(JSON.stringify(require("./responses/catalog.json")));
|
||||
const CatalogConfig = require("./catalog_config.json");
|
||||
|
||||
for (var value in CatalogConfig) {
|
||||
if (typeof CatalogConfig[value] == "string") {
|
||||
if (CatalogConfig[value].length != 0) {
|
||||
if (value.toLowerCase().startsWith("daily")) {
|
||||
catalog.storefronts.forEach((storefront, i) => {
|
||||
if (storefront.name.toLowerCase() == "brdailystorefront") {
|
||||
catalog.storefronts[i].catalogEntries.push({
|
||||
"devName": CatalogConfig[value],
|
||||
"offerId": CatalogConfig[value],
|
||||
"fulfillmentIds": [],
|
||||
"dailyLimit": -1,
|
||||
"weeklyLimit": -1,
|
||||
"monthlyLimit": -1,
|
||||
"categories": [],
|
||||
"prices": [{
|
||||
"currencyType": "MtxCurrency",
|
||||
"currencySubType": "",
|
||||
"regularPrice": 0,
|
||||
"finalPrice": 0,
|
||||
"saleExpiration": "9999-12-02T01:12:00Z",
|
||||
"basePrice": 0
|
||||
}],
|
||||
"matchFilter": "",
|
||||
"filterWeight": 0,
|
||||
"appStoreId": [],
|
||||
"requirements": [{
|
||||
"requirementType": "DenyOnItemOwnership",
|
||||
"requiredId": CatalogConfig[value],
|
||||
"minQuantity": 1
|
||||
}],
|
||||
"offerType": "StaticPrice",
|
||||
"giftInfo": {
|
||||
"bIsEnabled": false,
|
||||
"forcedGiftBoxTemplateId": "",
|
||||
"purchaseRequirements": [],
|
||||
"giftRecordIds": []
|
||||
},
|
||||
"refundable": true,
|
||||
"metaInfo": [],
|
||||
"displayAssetPath": "",
|
||||
"itemGrants": [{
|
||||
"templateId": CatalogConfig[value],
|
||||
"quantity": 1
|
||||
}],
|
||||
"sortPriority": 0,
|
||||
"catalogGroupPriority": 0
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
if (value.toLowerCase().startsWith("featured")) {
|
||||
catalog.storefronts.forEach((storefront, i) => {
|
||||
if (storefront.name.toLowerCase() == "brweeklystorefront") {
|
||||
catalog.storefronts[i].catalogEntries.push({
|
||||
"devName": CatalogConfig[value],
|
||||
"offerId": CatalogConfig[value],
|
||||
"fulfillmentIds": [],
|
||||
"dailyLimit": -1,
|
||||
"weeklyLimit": -1,
|
||||
"monthlyLimit": -1,
|
||||
"categories": [],
|
||||
"prices": [{
|
||||
"currencyType": "MtxCurrency",
|
||||
"currencySubType": "",
|
||||
"regularPrice": 0,
|
||||
"finalPrice": 0,
|
||||
"saleExpiration": "9999-12-02T01:12:00Z",
|
||||
"basePrice": 0
|
||||
}],
|
||||
"matchFilter": "",
|
||||
"filterWeight": 0,
|
||||
"appStoreId": [],
|
||||
"requirements": [{
|
||||
"requirementType": "DenyOnItemOwnership",
|
||||
"requiredId": CatalogConfig[value],
|
||||
"minQuantity": 1
|
||||
}],
|
||||
"offerType": "StaticPrice",
|
||||
"giftInfo": {
|
||||
"bIsEnabled": false,
|
||||
"forcedGiftBoxTemplateId": "",
|
||||
"purchaseRequirements": [],
|
||||
"giftRecordIds": []
|
||||
},
|
||||
"refundable": true,
|
||||
"metaInfo": [],
|
||||
"displayAssetPath": "",
|
||||
"itemGrants": [{
|
||||
"templateId": CatalogConfig[value],
|
||||
"quantity": 1
|
||||
}],
|
||||
"sortPriority": 0,
|
||||
"catalogGroupPriority": 0
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return catalog;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user