mirror of
https://github.com/Lawin0129/LawinServer.git
synced 2026-01-13 10:52:23 +01:00
@@ -160,24 +160,27 @@ function getTheater(req) {
|
||||
theater = theater.replace(/\"DataTable\'\/SaveTheWorld\//ig, "\"DataTable\'\/Game\/");
|
||||
}
|
||||
|
||||
var date = new Date().toISOString()
|
||||
var date = new Date();
|
||||
var hour = date.getHours();
|
||||
|
||||
// Set the 24-hour StW mission refresh date for version season 9 and above
|
||||
if (memory.season >= 9) {
|
||||
date = date.split("T")[0] + "T23:59:59.999Z";
|
||||
date.setHours(23, 59, 59, 999);
|
||||
} else {
|
||||
// Set the 6-hour StW mission refresh date for versions below season 9
|
||||
if (date < (date.split("T")[0] + "T05:59:59.999Z")) {
|
||||
date = date.split("T")[0] + "T05:59:59.999Z";
|
||||
} else if (date < (date.split("T")[0] + "T11:59:59.999Z")) {
|
||||
date = date.split("T")[0] + "T11:59:59.999Z";
|
||||
} else if (date < (date.split("T")[0] + "T17:59:59.999Z")) {
|
||||
date = date.split("T")[0] + "T17:59:59.999Z";
|
||||
} else if (date < (date.split("T")[0] + "T23:59:59.999Z")) {
|
||||
date = date.split("T")[0] + "T23:59:59.999Z";
|
||||
if (hour < 6) {
|
||||
date.setHours(5, 59, 59, 999);
|
||||
} else if (hour < 12) {
|
||||
date.setHours(11, 59, 59, 999);
|
||||
} else if (hour < 18) {
|
||||
date.setHours(17, 59, 59, 999);
|
||||
} else {
|
||||
date.setHours(23, 59, 59, 999);
|
||||
}
|
||||
}
|
||||
|
||||
date = date.toISOString();
|
||||
|
||||
theater = theater.replace(/2017-07-25T23:59:59.999Z/ig, date);
|
||||
} catch (err) {}
|
||||
|
||||
|
||||
@@ -215,10 +215,93 @@ express.get("/fortnite/api/receipts/v1/account/*/receipts", async (req, res) =>
|
||||
res.json([])
|
||||
})
|
||||
|
||||
express.get("/fortnite/api/game/v2/leaderboards/cohort/*", async (req, res) => {
|
||||
res.json([])
|
||||
express.get("/fortnite/api/game/v2/leaderboards/cohort/:accountId", async (req, res) => {
|
||||
res.json({
|
||||
"accountId": req.params.accountId,
|
||||
"cohortAccounts": [
|
||||
req.params.accountId,
|
||||
"Lawin",
|
||||
"TI93",
|
||||
"PRO100KatYT",
|
||||
"Playeereq",
|
||||
"Matteoki"
|
||||
],
|
||||
"expiresAt": "9999-12-31T00:00:00.000Z",
|
||||
"playlist": req.query.playlist
|
||||
})
|
||||
})
|
||||
|
||||
express.post("/fortnite/api/leaderboards/type/group/stat/:statName/window/:statWindow", async (req, res) => {
|
||||
var entries = [];
|
||||
|
||||
for (var i = 0; i < req.body.length; i++) {
|
||||
entries.push({
|
||||
"accountId": req.body[i],
|
||||
"value": Math.floor(Math.random() * 68) + 1
|
||||
})
|
||||
}
|
||||
|
||||
res.json({
|
||||
"entries": entries,
|
||||
"statName": req.params.statName,
|
||||
"statWindow": req.params.statWindow
|
||||
})
|
||||
res.end();
|
||||
});
|
||||
|
||||
express.post("/fortnite/api/leaderboards/type/global/stat/:statName/window/:statWindow", async (req, res) => {
|
||||
var HeroNames = [
|
||||
"Hawk",
|
||||
"Banshee",
|
||||
"Wildcat",
|
||||
"Jonsey",
|
||||
"Spitfire",
|
||||
"Ramirez",
|
||||
"Headhunter",
|
||||
"Renegade",
|
||||
"Harper",
|
||||
"Knox",
|
||||
"Hype",
|
||||
"Bull",
|
||||
"Hazard",
|
||||
"Penny",
|
||||
"Izza",
|
||||
"Kyle",
|
||||
"Luna",
|
||||
"Crash",
|
||||
"Edge",
|
||||
"Scorpion",
|
||||
"Scorch",
|
||||
"Ken",
|
||||
"Mari",
|
||||
"Sarah",
|
||||
"Grizzly",
|
||||
"Eagle Eye",
|
||||
"Southie",
|
||||
"A.C.",
|
||||
"Buzz",
|
||||
"Quinn",
|
||||
"Jess",
|
||||
"Deadeye"
|
||||
]
|
||||
|
||||
var entries = [];
|
||||
|
||||
for (var i = 0; i < HeroNames.length; i++) {
|
||||
entries.push({
|
||||
"accountId": HeroNames[i],
|
||||
"value": Math.floor(Math.random() * 68) + 1
|
||||
})
|
||||
}
|
||||
|
||||
res.json({
|
||||
"entries": entries,
|
||||
"statName": req.params.statName,
|
||||
"statWindow": req.params.statWindow
|
||||
})
|
||||
res.end();
|
||||
});
|
||||
|
||||
express.get("/fortnite/api/game/v2/homebase/allowed-name-chars", async (req, res) => {
|
||||
res.json({
|
||||
"ranges": [
|
||||
|
||||
130
structure/mcp.js
130
structure/mcp.js
@@ -312,7 +312,7 @@ express.post("/fortnite/api/game/v2/profile/*/client/PurchaseHomebaseNode", asyn
|
||||
express.post("/fortnite/api/game/v2/profile/*/client/UnlockRewardNode", async (req, res) => {
|
||||
const profile = require(`./../profiles/${req.query.profileId || "athena"}.json`);
|
||||
const common_core = require("./../profiles/common_core.json");
|
||||
const WinterFestIDS = require("./../responses/Athena/winterfestrewards.json");
|
||||
const WinterFestIDS = require("./../responses/Athena/winterfestRewards.json");
|
||||
const memory = functions.GetVersionInfo(req);
|
||||
|
||||
// do not change any of these or you will end up breaking it
|
||||
@@ -1455,7 +1455,7 @@ express.post("/fortnite/api/game/v2/profile/*/client/IncrementNamedCounterStat",
|
||||
// Claim STW daily reward
|
||||
express.post("/fortnite/api/game/v2/profile/*/client/ClaimLoginReward", async (req, res) => {
|
||||
const profile = require(`./../profiles/${req.query.profileId || "campaign"}.json`);
|
||||
const DailyRewards = require("./../responses/Campaign/dailyrewards.json");
|
||||
const DailyRewards = require("./../responses/Campaign/dailyRewards.json");
|
||||
const memory = functions.GetVersionInfo(req);
|
||||
|
||||
// do not change any of these or you will end up breaking it
|
||||
@@ -2606,7 +2606,7 @@ express.post("/fortnite/api/game/v2/profile/*/client/TransmogItem", async (req,
|
||||
transformItemIDS = transformItemIDS[req.body.transmogKeyTemplateId]
|
||||
}
|
||||
else {
|
||||
transformItemIDS = require("./../responses/Campaign/cardpackLootItemIDS.json");
|
||||
transformItemIDS = require("./../responses/Campaign/cardPackData.json").default;
|
||||
}
|
||||
|
||||
StatChanged = true;
|
||||
@@ -2623,7 +2623,7 @@ express.post("/fortnite/api/game/v2/profile/*/client/TransmogItem", async (req,
|
||||
Item.attributes = functions.MakeSurvivorAttributes(transformItemIDS[randomNumber]);
|
||||
}
|
||||
|
||||
profile.items[ID] = Item
|
||||
profile.items[ID] = Item;
|
||||
|
||||
Notifications.push({
|
||||
"type": "transmogResult",
|
||||
@@ -5380,7 +5380,7 @@ express.post("/fortnite/api/game/v2/profile/*/client/UnassignAllSquads", async (
|
||||
// Open llama STW
|
||||
express.post("/fortnite/api/game/v2/profile/*/client/OpenCardPack", async (req, res) => {
|
||||
const profile = require(`./../profiles/${req.query.profileId || "campaign"}.json`);
|
||||
const ItemIDS = require("./../responses/Campaign/cardpackLootItemIDS.json");
|
||||
const cardpackData = require("./../responses/Campaign/cardPackData.json");
|
||||
|
||||
// do not change any of these or you will end up breaking it
|
||||
var ApplyProfileChanges = [];
|
||||
@@ -5400,15 +5400,12 @@ express.post("/fortnite/api/game/v2/profile/*/client/OpenCardPack", async (req,
|
||||
"displayLevel": 0
|
||||
})
|
||||
|
||||
for (var i = 0; i < 10; i++) {
|
||||
const randomNumber = Math.floor(Math.random() * ItemIDS.length);
|
||||
if (cardpackData.choiceCardPacks.includes(profile.items[req.body.cardPackItemId].templateId)) {
|
||||
var ChosenItem = profile.items[req.body.cardPackItemId].attributes.options[req.body.selectionIdx];
|
||||
var Item = {"templateId":ChosenItem.itemType,"attributes":ChosenItem.attributes,"quantity":ChosenItem.quantity};
|
||||
const ID = functions.MakeID();
|
||||
var Item = {"templateId":ItemIDS[randomNumber],"attributes":{"legacy_alterations":[],"max_level_bonus":0,"level":1,"refund_legacy_item":false,"item_seen":false,"alterations":["","","","","",""],"xp":0,"refundable":false,"alteration_base_rarities":[],"favorite":false},"quantity":1};
|
||||
if (ItemIDS[randomNumber].toLowerCase().startsWith("worker:")) {
|
||||
Item.attributes = functions.MakeSurvivorAttributes(ItemIDS[randomNumber]);
|
||||
}
|
||||
|
||||
profile.items[ID] = Item
|
||||
profile.items[ID] = Item;
|
||||
|
||||
ApplyProfileChanges.push({
|
||||
"changeType": "itemAdded",
|
||||
@@ -5417,12 +5414,55 @@ express.post("/fortnite/api/game/v2/profile/*/client/OpenCardPack", async (req,
|
||||
})
|
||||
|
||||
Notifications[0].lootGranted.items.push({
|
||||
"itemType": ItemIDS[randomNumber],
|
||||
"itemType": Item.templateId,
|
||||
"itemGuid": ID,
|
||||
"itemProfile": req.query.profileId,
|
||||
"attributes": Item.attributes,
|
||||
"quantity": 1
|
||||
"quantity": Item.quantity
|
||||
})
|
||||
} else {
|
||||
for (var i = 0; i < 10; i++) {
|
||||
const ID = functions.MakeID();
|
||||
var ItemIDS = cardpackData.default;
|
||||
var randomNumber = Math.floor(Math.random() * ItemIDS.length);
|
||||
var Item = {"templateId":ItemIDS[randomNumber],"attributes":{"legacy_alterations":[],"max_level_bonus":0,"level":1,"refund_legacy_item":false,"item_seen":false,"alterations":["","","","","",""],"xp":0,"refundable":false,"alteration_base_rarities":[],"favorite":false},"quantity":1};
|
||||
if (ItemIDS[randomNumber].toLowerCase().startsWith("worker:")) {
|
||||
Item.attributes = functions.MakeSurvivorAttributes(ItemIDS[randomNumber]);
|
||||
}
|
||||
|
||||
if (Math.random() < 0.1) { // 10% (could be dfferent) chance of getting a choice CardPack.
|
||||
var CPTemplateId = cardpackData.choiceCardPacks[Math.floor(Math.random() * cardpackData.choiceCardPacks.length)];
|
||||
var CPItem = {"templateId":CPTemplateId,"attributes":{"level":1,"pack_source":"Store","options":[]},"quantity":1}
|
||||
ItemIDS = cardpackData[CPTemplateId.toLowerCase()] || cardpackData.default;
|
||||
|
||||
for (var x = 0; x < 2; x++) {
|
||||
randomNumber = Math.floor(Math.random() * ItemIDS.length);
|
||||
Item = {"itemType":ItemIDS[randomNumber],"attributes":{"legacy_alterations":[],"max_level_bonus":0,"level":1,"refund_legacy_item":false,"item_seen":false,"alterations":["","","","","",""],"xp":0,"refundable":false,"alteration_base_rarities":[],"favorite":false},"quantity":1};
|
||||
if (ItemIDS[randomNumber].toLowerCase().startsWith("worker:")) {
|
||||
Item.attributes = functions.MakeSurvivorAttributes(ItemIDS[randomNumber]);
|
||||
}
|
||||
ItemIDS.splice(ItemIDS.indexOf(ItemIDS[randomNumber]), 1);
|
||||
CPItem.attributes.options.push(Item);
|
||||
}
|
||||
Item = CPItem;
|
||||
}
|
||||
|
||||
profile.items[ID] = Item;
|
||||
|
||||
ApplyProfileChanges.push({
|
||||
"changeType": "itemAdded",
|
||||
"itemId": ID,
|
||||
"item": Item
|
||||
})
|
||||
|
||||
Notifications[0].lootGranted.items.push({
|
||||
"itemType": ItemIDS[randomNumber],
|
||||
"itemGuid": ID,
|
||||
"itemProfile": req.query.profileId,
|
||||
"attributes": Item.attributes,
|
||||
"quantity": 1
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if (profile.items[req.body.cardPackItemId].quantity <= 1) {
|
||||
@@ -5455,12 +5495,12 @@ express.post("/fortnite/api/game/v2/profile/*/client/OpenCardPack", async (req,
|
||||
}
|
||||
|
||||
// this doesn't work properly on version v12.20 and above but whatever
|
||||
if (QueryRevision != BaseRevision) {
|
||||
ApplyProfileChanges = [{
|
||||
"changeType": "fullProfileUpdate",
|
||||
"profile": profile
|
||||
}];
|
||||
}
|
||||
// if (QueryRevision != BaseRevision) {
|
||||
// ApplyProfileChanges = [{
|
||||
// "changeType": "fullProfileUpdate",
|
||||
// "profile": profile
|
||||
// }];
|
||||
// }
|
||||
|
||||
res.json({
|
||||
"profileRevision": profile.rvn || 0,
|
||||
@@ -5478,7 +5518,7 @@ express.post("/fortnite/api/game/v2/profile/*/client/OpenCardPack", async (req,
|
||||
// Add items to StW X-Ray Llamas
|
||||
express.post("/fortnite/api/game/v2/profile/*/client/PopulatePrerolledOffers", async (req, res) => {
|
||||
const profile = require(`./../profiles/${req.query.profileId || "campaign"}.json`);
|
||||
const ItemIDS = require("./../responses/Campaign/cardpackLootItemIDS.json");
|
||||
const cardpackData = require("./../responses/Campaign/cardPackData.json");
|
||||
|
||||
// do not change any of these or you will end up breaking it
|
||||
var ApplyProfileChanges = [];
|
||||
@@ -5494,13 +5534,29 @@ express.post("/fortnite/api/game/v2/profile/*/client/PopulatePrerolledOffers", a
|
||||
profile.items[key].attributes.items = [];
|
||||
|
||||
for (var i = 0; i < 10; i++) {
|
||||
const randomNumber = Math.floor(Math.random() * ItemIDS.length);
|
||||
|
||||
var ItemIDS = cardpackData.default;
|
||||
var randomNumber = Math.floor(Math.random() * ItemIDS.length);
|
||||
var Item = {"itemType":ItemIDS[randomNumber],"attributes":{"legacy_alterations":[],"max_level_bonus":0,"level":1,"refund_legacy_item":false,"item_seen":false,"alterations":["","","","","",""],"xp":0,"refundable":false,"alteration_base_rarities":[],"favorite":false},"quantity":1};
|
||||
|
||||
if (ItemIDS[randomNumber].toLowerCase().startsWith("worker:")) {
|
||||
Item.attributes = functions.MakeSurvivorAttributes(ItemIDS[randomNumber]);
|
||||
}
|
||||
|
||||
if (Math.random() < 0.1) { // 10% (could be dfferent) chance of getting a choice Cardpack.
|
||||
var CPTemplateId = cardpackData.choiceCardPacks[Math.floor(Math.random() * cardpackData.choiceCardPacks.length)];
|
||||
var CPItem = {"itemType":CPTemplateId,"attributes":{"level":1,"pack_source":"Store","options":[]},"quantity":1}
|
||||
ItemIDS = cardpackData[CPTemplateId.toLowerCase()] || cardpackData.default;
|
||||
|
||||
for (var x = 0; x < 2; x++) {
|
||||
randomNumber = Math.floor(Math.random() * ItemIDS.length);
|
||||
Item = {"itemType":ItemIDS[randomNumber],"attributes":{"legacy_alterations":[],"max_level_bonus":0,"level":1,"refund_legacy_item":false,"item_seen":false,"alterations":["","","","","",""],"xp":0,"refundable":false,"alteration_base_rarities":[],"favorite":false},"quantity":1};
|
||||
if (ItemIDS[randomNumber].toLowerCase().startsWith("worker:")) {
|
||||
Item.attributes = functions.MakeSurvivorAttributes(ItemIDS[randomNumber]);
|
||||
}
|
||||
ItemIDS.splice(ItemIDS.indexOf(ItemIDS[randomNumber]), 1);
|
||||
CPItem.attributes.options.push(Item);
|
||||
}
|
||||
Item = CPItem;
|
||||
}
|
||||
|
||||
profile.items[key].attributes.items.push(Item)
|
||||
}
|
||||
@@ -5558,7 +5614,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/Campaign/cardpackLootItemIDS.json");
|
||||
const cardpackData = require("./../responses/Campaign/cardPackData.json");
|
||||
|
||||
// do not change any of these or you will end up breaking it
|
||||
var ApplyProfileChanges = [];
|
||||
@@ -5597,7 +5653,7 @@ express.post("/fortnite/api/game/v2/profile/*/client/PurchaseCatalogEntry", asyn
|
||||
for (var i = 0; i < Quantity; i++) {
|
||||
var ID = functions.MakeID();
|
||||
|
||||
profile.items[ID] = Item
|
||||
profile.items[ID] = Item;
|
||||
|
||||
ApplyProfileChanges.push({
|
||||
"changeType": "itemAdded",
|
||||
@@ -6441,13 +6497,29 @@ express.post("/fortnite/api/game/v2/profile/*/client/PurchaseCatalogEntry", asyn
|
||||
campaign.items[key].attributes.items = [];
|
||||
|
||||
for (var i = 0; i < 10; i++) {
|
||||
const randomNumber = Math.floor(Math.random() * ItemIDS.length);
|
||||
|
||||
var ItemIDS = cardpackData.default;
|
||||
var randomNumber = Math.floor(Math.random() * ItemIDS.length);
|
||||
var Item = {"itemType":ItemIDS[randomNumber],"attributes":{"legacy_alterations":[],"max_level_bonus":0,"level":1,"refund_legacy_item":false,"item_seen":false,"alterations":["","","","","",""],"xp":0,"refundable":false,"alteration_base_rarities":[],"favorite":false},"quantity":1};
|
||||
|
||||
if (ItemIDS[randomNumber].toLowerCase().startsWith("worker:")) {
|
||||
Item.attributes = functions.MakeSurvivorAttributes(ItemIDS[randomNumber]);
|
||||
}
|
||||
|
||||
if (Math.random() < 0.1) { // 10% (could be dfferent) chance of getting a choice Cardpack.
|
||||
var CPTemplateId = cardpackData.choiceCardPacks[Math.floor(Math.random() * cardpackData.choiceCardPacks.length)];
|
||||
var CPItem = {"itemType":CPTemplateId,"attributes":{"level":1,"pack_source":"Store","options":[]},"quantity":1}
|
||||
ItemIDS = cardpackData[CPTemplateId.toLowerCase()] || cardpackData.default;
|
||||
|
||||
for (var x = 0; x < 2; x++) {
|
||||
randomNumber = Math.floor(Math.random() * ItemIDS.length);
|
||||
Item = {"itemType":ItemIDS[randomNumber],"attributes":{"legacy_alterations":[],"max_level_bonus":0,"level":1,"refund_legacy_item":false,"item_seen":false,"alterations":["","","","","",""],"xp":0,"refundable":false,"alteration_base_rarities":[],"favorite":false},"quantity":1};
|
||||
if (ItemIDS[randomNumber].toLowerCase().startsWith("worker:")) {
|
||||
Item.attributes = functions.MakeSurvivorAttributes(ItemIDS[randomNumber]);
|
||||
}
|
||||
ItemIDS.splice(ItemIDS.indexOf(ItemIDS[randomNumber]), 1);
|
||||
CPItem.attributes.options.push(Item);
|
||||
}
|
||||
Item = CPItem;
|
||||
}
|
||||
|
||||
campaign.items[key].attributes.items.push(Item)
|
||||
}
|
||||
|
||||
@@ -1359,6 +1359,53 @@ express.get("/fortnite/api/calendar/v1/timeline", async (req, res) => {
|
||||
}
|
||||
}
|
||||
|
||||
if (memory.build == 5.41) {
|
||||
if (config.Events.bEnableCubeLake == true) {
|
||||
states[0].activeEvents.push(
|
||||
{
|
||||
"eventType": "EventFlag.BR_S5_Cube_StartMove",
|
||||
"activeUntil": config.Events.cubeLakeDate
|
||||
},
|
||||
{
|
||||
"eventType": "EventFlag.BR_S5_Cube_TurnOn",
|
||||
"activeUntil": config.Events.cubeLakeDate
|
||||
})
|
||||
|
||||
states.push({
|
||||
validFrom: config.Events.cubeLakeDate,
|
||||
activeEvents: activeEvents.slice(),
|
||||
state: stateTemplate
|
||||
})
|
||||
|
||||
states[1].activeEvents.push(
|
||||
{
|
||||
"eventType": "EventFlag.BR_S5_Cube_StartMove",
|
||||
"activeUntil": config.Events.cubeLakeDate
|
||||
},
|
||||
{
|
||||
"eventType": "EventFlag.BR_S5_Cube_TurnOn",
|
||||
"activeUntil": config.Events.cubeLakeDate
|
||||
},
|
||||
{
|
||||
"eventType": "EventFlag.BR_S5_Cube_MoveTo8",
|
||||
"activeUntil": config.Events.cubeLakeDate
|
||||
})
|
||||
|
||||
var EventEndDate = new Date(new Date(config.Events.cubeLakeDate).getTime() + 1.5 * 60000).toISOString();
|
||||
|
||||
states.push({
|
||||
validFrom: EventEndDate,
|
||||
activeEvents: activeEvents.slice(),
|
||||
state: stateTemplate
|
||||
})
|
||||
|
||||
states[2].activeEvents.push({
|
||||
"eventType": "EventFlag.BR_S5_Cube_Destination",
|
||||
"activeUntil": "9999-01-01T00:00:00.000Z"
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
res.json({
|
||||
"channels": {
|
||||
"client-matchmaking": {
|
||||
|
||||
Reference in New Issue
Block a user