mirror of
https://github.com/ApfelTeeSaft/Reload-Backend.git
synced 2026-08-26 19:33:26 +00:00
Fixed too much stuff
Co-Authored-By: Lawin <[email protected]> Co-Authored-By: PRO100KatYT <[email protected]>
This commit is contained in:
co-authored by
Lawin
PRO100KatYT
parent
a2490e7952
commit
7084034270
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1179,6 +1179,14 @@
|
||||
"lastModified": "2019-10-29T14:05:17.030Z",
|
||||
"_locale": "en-US"
|
||||
},
|
||||
"sparkTracks": {
|
||||
"_title": "spark-tracks",
|
||||
"_noIndex": false,
|
||||
"_activeDate": "2023-10-06T04:15:09.015Z",
|
||||
"lastModified": "2023-10-06T04:15:55.135Z",
|
||||
"_locale": "en-US",
|
||||
"_templateName": "blank"
|
||||
},
|
||||
"tournamentinformation": {
|
||||
"tournament_info": {
|
||||
"tournaments": [
|
||||
@@ -5810,6 +5818,300 @@
|
||||
"lastModified": "2019-06-20T22:06:24.590Z",
|
||||
"_locale": "en-US"
|
||||
},
|
||||
"radioStations": {
|
||||
"_title": "Radio Stations",
|
||||
"radioStationList": {
|
||||
"_type": "RadioStationList",
|
||||
"stations": [
|
||||
{
|
||||
"resourceID": "eaIPyhOJafbnZUIYnZ",
|
||||
"gameplayTagDenylist": [
|
||||
"*UGC*",
|
||||
"*Creative*"
|
||||
],
|
||||
"stationImage": "https://cdn2.unrealengine.com/s15-radio-rl-rockroyale-256x256-256x256-c2b19d746f09.png",
|
||||
"_type": "RadioStationItem",
|
||||
"title": "Rock & Royale"
|
||||
},
|
||||
{
|
||||
"resourceID": "AxraiOXbAdcOPnthxV",
|
||||
"gameplayTagDenylist": [
|
||||
"*UGC*",
|
||||
"*Creative*"
|
||||
],
|
||||
"stationImage": "https://cdn2.unrealengine.com/s13-radio-underground-radio-256x256-256x256-12ec3d7367c5.png",
|
||||
"_type": "RadioStationItem",
|
||||
"title": "Radio Underground"
|
||||
},
|
||||
{
|
||||
"resourceID": "QWGQAynCdixzoLIdJl",
|
||||
"stationImage": "https://cdn2.unrealengine.com/s13-radio-party-royale-256x256-256x256-41b6d427e012.png",
|
||||
"_type": "RadioStationItem",
|
||||
"title": "Party Royale"
|
||||
},
|
||||
{
|
||||
"resourceID": "liZWCXyJDbxNMHWlyk",
|
||||
"gameplayTagDenylist": [
|
||||
"*UGC*",
|
||||
"*Creative*"
|
||||
],
|
||||
"stationImage": "https://cdn2.unrealengine.com/s13-radio-radio-yonder-256x256-256x256-f9a05292b87c.png",
|
||||
"_type": "RadioStationItem",
|
||||
"title": "Radio Yonder"
|
||||
},
|
||||
{
|
||||
"resourceID": "SesARghrQNsflAozoD",
|
||||
"gameplayTagDenylist": [
|
||||
"*UGC*",
|
||||
"*Creative*"
|
||||
],
|
||||
"stationImage": "https://cdn2.unrealengine.com/s13-radio-beat-box-256x256-256x256-19277d48c502.png",
|
||||
"_type": "RadioStationItem",
|
||||
"title": "Beat Box"
|
||||
},
|
||||
{
|
||||
"resourceID": "dWkLynOluUUuCAPJHA",
|
||||
"gameplayTagDenylist": [
|
||||
"*UGC*",
|
||||
"*Creative*"
|
||||
],
|
||||
"stationImage": "https://cdn2.unrealengine.com/s13-radio-power-play-256x256-256x256-2f3bacc8ecbf.png",
|
||||
"_type": "RadioStationItem",
|
||||
"title": "Power Play"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"scoringrulesinformation": {
|
||||
"scoring_rules_info": {
|
||||
"_type": "Scoring Rules Info",
|
||||
"scoring_rules": [
|
||||
{
|
||||
"poster_description": "Loot Island Captured",
|
||||
"rule_name": "MMO_LootIsland",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/UI/Foundation/Textures/Icons/Quest/T-Icon-Trophy-32.T-Icon-Trophy-32",
|
||||
"description": "Loot Island Captured",
|
||||
"hide_score_toast_notifications": false,
|
||||
"poster_interval_description": "Loot Island Captured"
|
||||
},
|
||||
{
|
||||
"poster_description": "{0}|plural(one=Each Forcast Tower Captured,other=Every {0} Forcast Tower Captures)",
|
||||
"rule_name": "EACH_MMO_RadioTower",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/UI/Foundation/Textures/Icons/Quest/T-Icon-Trophy-32.T-Icon-Trophy-32",
|
||||
"description": "{0}|plural(one=Each Forcast Tower Captured,other=Every {0} Forcast Tower Captures)",
|
||||
"hide_score_toast_notifications": false,
|
||||
"poster_interval_description": "{0} - {1} Forcast Towers Captured"
|
||||
},
|
||||
{
|
||||
"poster_description": "{0}|plural(one=Each Vault Captured,other=Every {0} Vault Captures)",
|
||||
"rule_name": "EACH_MMO_Vault",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/UI/Foundation/Textures/Icons/Quest/T-Icon-Trophy-32.T-Icon-Trophy-32",
|
||||
"description": "{0}|plural(one=Each Vault Captured,other=Every {0} Vault Captures)",
|
||||
"hide_score_toast_notifications": false,
|
||||
"poster_interval_description": "{0} - {1} Vault Captured"
|
||||
},
|
||||
{
|
||||
"poster_description": "{0}|plural(one=Each Cache Captured, other=Every {0} Cache Captures)",
|
||||
"rule_name": "EACH_MMO_Cache",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/UI/Foundation/Textures/Icons/Quest/T-Icon-Trophy-32.T-Icon-Trophy-32",
|
||||
"description": "{0}|plural(one=Each Cache Captured, other=Every {0} Cache Captures)",
|
||||
"hide_score_toast_notifications": false,
|
||||
"poster_interval_description": "{0} - {1} Cache Captured"
|
||||
},
|
||||
{
|
||||
"poster_description": "Victory Royale",
|
||||
"rule_name": "VICTORY_ROYALE_STAT",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/UI/Foundation/Textures/Icons/Quest/T-Icon-Trophy-32.T-Icon-Trophy-32",
|
||||
"description": "Victory Royale",
|
||||
"hide_score_toast_notifications": false,
|
||||
"poster_interval_description": "Victory Royale"
|
||||
},
|
||||
{
|
||||
"poster_description": "{0} {0}|plural(one=Elimination,other=Eliminations)",
|
||||
"rule_name": "Eliminations",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/Athena/HUD/Art/killsico_alt.KillsIco_Alt",
|
||||
"description": "{0} {0}|plural(one=Elimination,other=Eliminations)",
|
||||
"hide_score_toast_notifications": false,
|
||||
"poster_interval_description": "{0} - {1} Eliminations"
|
||||
},
|
||||
{
|
||||
"poster_description": "{0} {0}|plural(one=Elimination,other=Eliminations)",
|
||||
"rule_name": "TEAM_ELIMS_STAT_INDEX",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/Athena/HUD/Art/killsico_alt.KillsIco_Alt",
|
||||
"description": "{0} {0}|plural(one=Elimination,other=Eliminations)",
|
||||
"hide_score_toast_notifications": false,
|
||||
"poster_interval_description": "{0} - {1} Eliminations"
|
||||
},
|
||||
{
|
||||
"poster_description": "{0}{0}|ordinal(one=st,two=nd,few=rd,other=th) Place",
|
||||
"rule_name": "Placement",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/UI/Foundation/Textures/Icons/Quest/T-Icon-Trophy-32.T-Icon-Trophy-32",
|
||||
"description": "Reach Top {0}",
|
||||
"hide_score_toast_notifications": false,
|
||||
"poster_interval_description": "{0}{0}|ordinal(one=st,two=nd,few=rd,other=th) - {1}{1}|ordinal(one=st,two=nd,few=rd,other=th) Place"
|
||||
},
|
||||
{
|
||||
"poster_description": "{0}|plural(one=Each Elimination,other=Every {0} Eliminations)",
|
||||
"rule_name": "EachElimination",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/Athena/HUD/Art/killsico_alt.KillsIco_Alt",
|
||||
"description": "{0}|plural(one=Each Elimination,other=Every {0} Eliminations)",
|
||||
"hide_score_toast_notifications": false,
|
||||
"poster_interval_description": ""
|
||||
},
|
||||
{
|
||||
"poster_description": "{0}|plural(one=Each Elimination,other=Every {0} Eliminations)",
|
||||
"rule_name": "EACH_CREATIVE_ELIMINATIONS_STAT",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/Athena/HUD/Art/killsico_alt.KillsIco_Alt",
|
||||
"description": "{0}|plural(one=Each Elimination,other=Every {0} Eliminations)",
|
||||
"hide_score_toast_notifications": false,
|
||||
"poster_interval_description": "{0} - {1} Eliminations"
|
||||
},
|
||||
{
|
||||
"poster_description": "Bus Fare",
|
||||
"rule_name": "MatchEntryFee",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/UI/Events/Icons/T-Icon-Bus-Fare-Flat.T-Icon-Bus-Fare-Flat",
|
||||
"description": "Bus Fare",
|
||||
"hide_score_toast_notifications": false
|
||||
},
|
||||
{
|
||||
"poster_description": "{0} {0}|plural(one=Bow Elimination,other=Bow Eliminations)",
|
||||
"rule_name": "BowKills",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/Athena/HUD/Art/killsico_alt.KillsIco_Alt",
|
||||
"description": "{0} {0}|plural(one=Bow Elimination,other=Bow Eliminations)",
|
||||
"hide_score_toast_notifications": false,
|
||||
"poster_interval_description": "{0} - {1} Bow Eliminations"
|
||||
},
|
||||
{
|
||||
"poster_description": "Each score of {0}",
|
||||
"rule_name": "EACH_CREATIVE_SCORE_STAT",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/UI/Foundation/Textures/Icons/Quest/T-Icon-Trophy-32.T-Icon-Trophy-32",
|
||||
"description": "Each score of {0}",
|
||||
"hide_score_toast_notifications": true,
|
||||
"poster_interval_description": ""
|
||||
},
|
||||
{
|
||||
"poster_description": "Score of {0}",
|
||||
"rule_name": "Scores",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/UI/Foundation/Textures/Icons/Quest/T-Icon-Trophy-32.T-Icon-Trophy-32",
|
||||
"description": "Score of {0}",
|
||||
"hide_score_toast_notifications": false,
|
||||
"poster_interval_description": "Score of {0} - {1}"
|
||||
},
|
||||
{
|
||||
"poster_description": "{0} {0}|plural(one=Time Eliminated,other=Times Eliminated)",
|
||||
"rule_name": "EACH_CREATIVE_ELIMINATED_STAT",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/Athena/HUD/Art/killsico_alt.KillsIco_Alt",
|
||||
"description": "{0} {0}|plural(one=Time Eliminated,other=Times Eliminated)",
|
||||
"hide_score_toast_notifications": false,
|
||||
"poster_interval_description": "{0} - {1} Times Eliminated"
|
||||
},
|
||||
{
|
||||
"poster_description": "{0}|plural(one=Each Damage Dealt,other=Every {0} Damage Dealt)",
|
||||
"rule_name": "CREATIVE_DAMAGE_DEALT_STAT",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/Athena/HUD/Art/icon_health.icon_health",
|
||||
"description": "{0}|plural(one=Each Damage Dealt,other=Every {0} Damage Dealt)",
|
||||
"hide_score_toast_notifications": true
|
||||
},
|
||||
{
|
||||
"poster_description": "{0}|plural(one=Each Damage Taken,other=Every {0} Damage Taken)",
|
||||
"rule_name": "CREATIVE_DAMAGE_TAKEN_STAT",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/Athena/HUD/Art/icon_health.icon_health",
|
||||
"description": "{0}|plural(one=Each Damage Taken,other=Every {0} Damage Taken)",
|
||||
"hide_score_toast_notifications": false
|
||||
},
|
||||
{
|
||||
"poster_description": "{0}|plural(one=Each Item Collected,other=Every {0} Items Collected)",
|
||||
"rule_name": "EACH_CREATIVE_COLLECT_ITEMS_STAT",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/UI/Foundation/Textures/Icons/Quest/T-Icon-Trophy-32.T-Icon-Trophy-32",
|
||||
"description": "{0}|plural(one=Each Item Collected,other=Every {0} Items Collected)",
|
||||
"hide_score_toast_notifications": false,
|
||||
"poster_interval_description": "{0} - {1} Items Collected"
|
||||
},
|
||||
{
|
||||
"poster_description": "Every {0} Remaining Spawn",
|
||||
"rule_name": "CREATIVE_SPAWNS_LEFT_STAT",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/UI/Foundation/Textures/Icons/Quest/T-Icon-Trophy-32.T-Icon-Trophy-32",
|
||||
"description": "Every {0} Remaining Spawn",
|
||||
"hide_score_toast_notifications": false
|
||||
},
|
||||
{
|
||||
"poster_description": "Every {0} Health Remaining",
|
||||
"rule_name": "CREATIVE_REMAINING_HEALTH_STAT",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/Athena/HUD/Art/icon_health.icon_health",
|
||||
"description": "Every {0} Health Remaining",
|
||||
"hide_score_toast_notifications": false
|
||||
},
|
||||
{
|
||||
"poster_description": "{0}|plural(one=Each Objective Completed,other=Every {0} Objectives Completed)",
|
||||
"rule_name": "EACH_CREATIVE_OBJECTIVES_STAT",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/UI/Foundation/Textures/Icons/Quest/T-Icon-Trophy-32.T-Icon-Trophy-32",
|
||||
"description": "{0}|plural(one=Each Each Objective Completed,other=Every {0} Objectives Completed)",
|
||||
"hide_score_toast_notifications": false
|
||||
},
|
||||
{
|
||||
"poster_description": "{0}|plural(one=AI Elimination,other=Every {0} AI Eliminations)",
|
||||
"rule_name": "EACH_CREATIVE_AI_ELIMINATIONS_STAT",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/Athena/HUD/Art/killsico_alt.KillsIco_Alt",
|
||||
"description": "{0}|plural(one=AI Elimination,other=Every {0} AI Eliminations)",
|
||||
"hide_score_toast_notifications": false,
|
||||
"poster_interval_description": "{0} - {1} AI Eliminated"
|
||||
},
|
||||
{
|
||||
"poster_description": "{0}|plural(one=Each Assist,other=Assists)",
|
||||
"rule_name": "EACH_CREATIVE_ASSISTS_STAT",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/Athena/HUD/Art/killsico_alt.KillsIco_Alt",
|
||||
"description": "{0}|plural(one=Each Assist,other=Assists)",
|
||||
"hide_score_toast_notifications": false,
|
||||
"poster_interval_description": "{0} - {1} Assists"
|
||||
},
|
||||
{
|
||||
"poster_description": "{0}|plural(one=Each millisecond Alive ,other=Every {0} Milliseconds Alive)",
|
||||
"rule_name": "EACH_CREATIVE_TIME_ALIVE_STAT",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "/Game/Athena/HUD/Art/icon_health.icon_health",
|
||||
"description": "{0}|plural(one=Each millisecond Alive ,other=Every {0} Milliseconds Alive)",
|
||||
"hide_score_toast_notifications": true
|
||||
},
|
||||
{
|
||||
"poster_description": "For every lap under {0} milliseconds ",
|
||||
"rule_name": "CREATIVE_RACE_TIME_STAT",
|
||||
"_type": "Scoring Rules Display Info",
|
||||
"icon": "ns/Quest/T-Icon-Trophy-32.T-Icon-Trophy-32",
|
||||
"description": "For every lap under {0} milliseconds ",
|
||||
"hide_score_toast_notifications": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"_title": "scoringrulesinformation",
|
||||
"_noIndex": false,
|
||||
"_activeDate": "2021-10-12T19:24:18.962Z",
|
||||
"lastModified": "2023-11-16T19:22:34.542Z",
|
||||
"_locale": "en-US",
|
||||
"_templateName": "FortniteGameScoringRulesInfo"
|
||||
},
|
||||
"specialoffervideo": {
|
||||
"_activeDate": "2021-08-14T23:58:00.000Z",
|
||||
"_locale": "pl",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2,6 +2,12 @@ const express = require("express");
|
||||
const app = express.Router();
|
||||
const functions = require("../structs/functions.js");
|
||||
|
||||
app.get("/content/api/pages/fortnite-game/spark-tracks", async (req, res) => {
|
||||
const sparkTracks = require("./../responses/sparkTracks.json");
|
||||
|
||||
res.json(sparkTracks)
|
||||
})
|
||||
|
||||
app.get("/content/api/pages/*", async (req, res) => {
|
||||
const contentpages = functions.getContentPages(req);
|
||||
|
||||
|
||||
@@ -2,10 +2,22 @@ const Express = require("express");
|
||||
const app = Express.Router();
|
||||
const discovery = require("./../responses/Discovery/discovery_frontend.json");
|
||||
|
||||
app.post("*/api/v2/discovery/surface/*", async (req, res) => {
|
||||
res.json(discovery);
|
||||
});
|
||||
|
||||
app.post("*/discovery/surface/*", async (req, res) => {
|
||||
res.json(discovery);
|
||||
})
|
||||
|
||||
app.get("/fortnite/api/discovery/accessToken/:branch", async (req, res) => {
|
||||
res.json({
|
||||
"branchName": req.params.branch,
|
||||
"appId": "Fortnite",
|
||||
"token": "reloadbackendogfncenteruwuwu"
|
||||
});
|
||||
});
|
||||
|
||||
app.post("/links/api/fn/mnemonic", async (req, res) => {
|
||||
var MnemonicArray = [];
|
||||
|
||||
|
||||
@@ -143,6 +143,22 @@ app.get("/fortnite/api/stats/accountId/:accountId/bulk/window/alltime", (req, re
|
||||
});
|
||||
});
|
||||
|
||||
app.get("/d98eeaac-2bfa-4bf4-8a59-bdc95469c693", async (req, res) => {
|
||||
res.json({
|
||||
"playlist": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPE1QRCB4bWxucz0idXJuOm1wZWc6ZGFzaDpzY2hlbWE6bXBkOjIwMTEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4c2k6c2NoZW1hTG9jYXRpb249InVybjptcGVnOkRBU0g6c2NoZW1hOk1QRDoyMDExIGh0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pdHRmL1B1YmxpY2x5QXZhaWxhYmxlU3RhbmRhcmRzL01QRUctREFTSF9zY2hlbWFfZmlsZXMvREFTSC1NUEQueHNkIiBwcm9maWxlcz0idXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLWxpdmU6MjAxMSIgdHlwZT0ic3RhdGljIiBtZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uPSJQVDMwLjIxM1MiIG1heFNlZ21lbnREdXJhdGlvbj0iUFQyLjAwMFMiIG1pbkJ1ZmZlclRpbWU9IlBUNC4xMDZTIj4KICA8QmFzZVVSTD5odHRwczovL2ZvcnRuaXRlLXB1YmxpYy1zZXJ2aWNlLXByb2QxMS5vbC5lcGljZ2FtZXMuY29tL2F1ZGlvL0phbVRyYWNrcy9PR1JlbWl4LzwvQmFzZVVSTD4KICA8UHJvZ3JhbUluZm9ybWF0aW9uPjwvUHJvZ3JhbUluZm9ybWF0aW9uPgogIDxQZXJpb2QgaWQ9IjAiIHN0YXJ0PSJQVDBTIj4KICAgIDxBZGFwdGF0aW9uU2V0IGlkPSIwIiBjb250ZW50VHlwZT0iYXVkaW8iIHN0YXJ0V2l0aFNBUD0iMSIgc2VnbWVudEFsaWdubWVudD0idHJ1ZSIgYml0c3RyZWFtU3dpdGNoaW5nPSJ0cnVlIj4KICAgICAgPFJlcHJlc2VudGF0aW9uIGlkPSIwIiBhdWRpb1NhbXBsaW5nUmF0ZT0iNDgwMDAiIGJhbmR3aWR0aD0iMTI4MDAwIiBtaW1lVHlwZT0iYXVkaW8vbXA0IiBjb2RlY3M9Im1wNGEuNDAuMiI+CiAgICAgICAgPFNlZ21lbnRUZW1wbGF0ZSBkdXJhdGlvbj0iMjAwMDAwMCIgdGltZXNjYWxlPSIxMDAwMDAwIiBpbml0aWFsaXphdGlvbj0iaW5pdF8kUmVwcmVzZW50YXRpb25JRCQubXA0IiBtZWRpYT0ic2VnbWVudF8kUmVwcmVzZW50YXRpb25JRCRfJE51bWJlciQubTRzIiBzdGFydE51bWJlcj0iMSI+PC9TZWdtZW50VGVtcGxhdGU+CiAgICAgICAgPEF1ZGlvQ2hhbm5lbENvbmZpZ3VyYXRpb24gc2NoZW1lSWRVcmk9InVybjptcGVnOmRhc2g6MjMwMDM6MzphdWRpb19jaGFubmVsX2NvbmZpZ3VyYXRpb246MjAxMSIgdmFsdWU9IjIiPjwvQXVkaW9DaGFubmVsQ29uZmlndXJhdGlvbj4KICAgICAgPC9SZXByZXNlbnRhdGlvbj4KICAgIDwvQWRhcHRhdGlvblNldD4KICA8L1BlcmlvZD4KPC9NUEQ+",
|
||||
"playlistType": "application/dash+xml",
|
||||
"metadata": {
|
||||
"assetId": "",
|
||||
"baseUrls": [
|
||||
"https://fortnite-public-service-prod11.ol.epicgames.com/audio/JamTracks/OGRemix/"
|
||||
],
|
||||
"supportsCaching": true,
|
||||
"ucp": "a",
|
||||
"version": "f2528fa1-5f30-42ff-8ae5-a03e3b023a0a"
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
app.post("/fortnite/api/feedback/*", (req, res) => {
|
||||
log.debug("POST /fortnite/api/feedback/* called");
|
||||
res.status(200);
|
||||
@@ -290,6 +306,11 @@ app.get("/region", async (req, res) => {
|
||||
})
|
||||
})
|
||||
|
||||
app.all("/v1/epic-settings/public/users/*/values", async (req, res) => {
|
||||
const epicsettings = require("./../responses/epic-settings.json");
|
||||
res.json(epicsettings)
|
||||
})
|
||||
|
||||
app.get("/fortnite/api/game/v2/br-inventory/account/*", async (req, res) => {
|
||||
log.debug(`GET /fortnite/api/game/v2/br-inventory/account/${req.params.accountId} called`);
|
||||
res.json({
|
||||
|
||||
+194
-1
@@ -962,6 +962,55 @@ app.post("/fortnite/api/game/v2/profile/*/client/GiftCatalogEntry", verifyToken,
|
||||
log.debug(`GiftCatalogEntry: Response sent with profile revision ${profile.rvn}`);
|
||||
});
|
||||
|
||||
app.post("/fortnite/api/game/v2/profile/*/client/SetActiveArchetype", async (req, res) => {
|
||||
const profiles = await Profile.findOne({ accountId: req.user.accountId });
|
||||
let profile = profiles.profiles[req.query.profileId];
|
||||
|
||||
var ApplyProfileChanges = [];
|
||||
var BaseRevision = profile.rvn || 0;
|
||||
var QueryRevision = req.query.rvn || -1;
|
||||
var StatChanged = false;
|
||||
|
||||
if (req.body.archetypeGroup && req.body.archetype) {
|
||||
if (!profile.stats.attributes.hasOwnProperty("loadout_archetype_values")) {
|
||||
profile.stats.attributes.loadout_archetype_values = {}
|
||||
}
|
||||
|
||||
profile.stats.attributes.loadout_archetype_values[req.body.archetypeGroup] = req.body.archetype;
|
||||
StatChanged = true;
|
||||
}
|
||||
|
||||
if (StatChanged == true) {
|
||||
profile.rvn += 1;
|
||||
profile.commandRevision += 1;
|
||||
|
||||
ApplyProfileChanges.push({
|
||||
"changeType": "statModified",
|
||||
"name": "loadout_archetype_values",
|
||||
"value": profile.stats.attributes.loadout_archetype_values
|
||||
})
|
||||
|
||||
await profiles.updateOne({ $set: { [`profiles.${req.query.profileId}`]: profile } });
|
||||
}
|
||||
|
||||
if (QueryRevision != BaseRevision) {
|
||||
ApplyProfileChanges = [{
|
||||
"changeType": "fullProfileUpdate",
|
||||
"profile": profile
|
||||
}];
|
||||
}
|
||||
|
||||
res.json({
|
||||
profileRevision: profile.rvn || 0,
|
||||
profileId: req.query.profileId,
|
||||
profileChangesBaseRevision: BaseRevision,
|
||||
profileChanges: ApplyProfileChanges,
|
||||
profileCommandRevision: profile.commandRevision || 0,
|
||||
serverTime: new Date().toISOString(),
|
||||
responseVersion: 1
|
||||
})
|
||||
});
|
||||
|
||||
app.post("/fortnite/api/game/v2/profile/*/client/UnlockRewardNode", verifyToken, async (req, res) => {
|
||||
const profiles = await Profile.findOne({ accountId: req.user.accountId });
|
||||
let profile = profiles.profiles[req.query.profileId];
|
||||
@@ -1137,7 +1186,7 @@ app.post("/fortnite/api/game/v2/profile/*/client/UnlockRewardNode", verifyToken,
|
||||
await profiles.updateOne({ $set: { [`profiles.${req.query.profileId}`]: profile } });
|
||||
}
|
||||
|
||||
if (QueryRevision != ProfileRevisionCheck) {
|
||||
if (QueryRevision != ProfileRevisionCheck) {
|
||||
ApplyProfileChanges = [{
|
||||
"changeType": "fullProfileUpdate",
|
||||
"profile": profile
|
||||
@@ -1531,6 +1580,57 @@ app.post("/fortnite/api/game/v2/profile/*/client/RefundMtxPurchase", verifyToken
|
||||
})
|
||||
});
|
||||
|
||||
app.post("/fortnite/api/game/v2/profile/*/client/IncrementNamedCounterStat", async (req, res) => {
|
||||
const profiles = await Profile.findOne({ accountId: req.params[0] });
|
||||
let profile = profiles.profiles[req.query.profileId];
|
||||
|
||||
// do not change any of these or you will end up breaking it
|
||||
var ApplyProfileChanges = [];
|
||||
var BaseRevision = profile.rvn || 0;
|
||||
var QueryRevision = req.query.rvn || -1;
|
||||
var StatChanged = false;
|
||||
|
||||
if (req.body.counterName && profile.stats.attributes.hasOwnProperty("named_counters")) {
|
||||
if (profile.stats.attributes.named_counters.hasOwnProperty(req.body.counterName)) {
|
||||
profile.stats.attributes.named_counters[req.body.counterName].current_count += 1;
|
||||
profile.stats.attributes.named_counters[req.body.counterName].last_incremented_time = new Date().toISOString();
|
||||
|
||||
StatChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (StatChanged == true) {
|
||||
profile.rvn += 1;
|
||||
profile.commandRevision += 1;
|
||||
|
||||
ApplyProfileChanges.push({
|
||||
"changeType": "statModified",
|
||||
"name": "named_counters",
|
||||
"value": profile.stats.attributes.named_counters
|
||||
})
|
||||
|
||||
await profiles.updateOne({ $set: { [`profiles.${req.query.profileId}`]: profile} });
|
||||
}
|
||||
|
||||
// this doesn't work properly on version v12.20 and above but whatever
|
||||
if (QueryRevision != BaseRevision) {
|
||||
ApplyProfileChanges = [{
|
||||
"changeType": "fullProfileUpdate",
|
||||
"profile": profile
|
||||
}];
|
||||
}
|
||||
|
||||
res.json({
|
||||
profileRevision: profile.rvn || 0,
|
||||
profileId: req.query.profileId,
|
||||
profileChangesBaseRevision: BaseRevision,
|
||||
profileChanges: ApplyProfileChanges,
|
||||
profileCommandRevision: profile.commandRevision || 0,
|
||||
serverTime: new Date().toISOString(),
|
||||
responseVersion: 1
|
||||
})
|
||||
});
|
||||
|
||||
app.post("/fortnite/api/game/v2/profile/*/client/PurchaseCatalogEntry", verifyToken, async (req, res) => {
|
||||
log.debug(`PurchaseCatalogEntry: Request received with body: ${JSON.stringify(req.body)}`);
|
||||
|
||||
@@ -3405,6 +3505,99 @@ app.post("/fortnite/api/game/v2/profile/*/client/SetCosmeticLockerSlot", verifyT
|
||||
});
|
||||
});
|
||||
|
||||
app.post("/fortnite/api/game/v2/profile/*/client/PutModularCosmeticLoadout", async (req, res) => {
|
||||
const profiles = await Profile.findOne({ accountId: req.user.accountId });
|
||||
let profile = profiles.profiles[req.query.profileId];
|
||||
|
||||
// do not change any of these or you will end up breaking it
|
||||
var ApplyProfileChanges = [];
|
||||
var BaseRevision = profile.rvn || 0;
|
||||
var QueryRevision = req.query.rvn || -1;
|
||||
var StatChanged = false;
|
||||
|
||||
if (!profile.stats.attributes.hasOwnProperty("loadout_presets")) {
|
||||
profile.stats.attributes.loadout_presets = {};
|
||||
|
||||
ApplyProfileChanges.push({
|
||||
"changeType": "statModified",
|
||||
"name": "loadout_presets",
|
||||
"value": {}
|
||||
})
|
||||
|
||||
StatChanged = true;
|
||||
}
|
||||
|
||||
if (!profile.stats.attributes.loadout_presets.hasOwnProperty(req.body.loadoutType)) {
|
||||
const NewLoadoutID = functions.MakeID();
|
||||
|
||||
profile.items[NewLoadoutID] = {
|
||||
"templateId": req.body.loadoutType,
|
||||
"attributes": {},
|
||||
"quantity": 1
|
||||
}
|
||||
|
||||
ApplyProfileChanges.push({
|
||||
"changeType": "itemAdded",
|
||||
"itemId": NewLoadoutID,
|
||||
"item": profile.items[NewLoadoutID]
|
||||
})
|
||||
|
||||
profile.stats.attributes.loadout_presets[req.body.loadoutType] = {
|
||||
[req.body.presetId]: NewLoadoutID
|
||||
};
|
||||
|
||||
ApplyProfileChanges.push({
|
||||
"changeType": "statModified",
|
||||
"name": "loadout_presets",
|
||||
"value": profile.stats.attributes.loadout_presets
|
||||
})
|
||||
|
||||
StatChanged = true;
|
||||
}
|
||||
|
||||
var LoadoutGUID = [];
|
||||
|
||||
try {
|
||||
LoadoutGUID = profile.stats.attributes.loadout_presets[req.body.loadoutType][req.body.presetId];
|
||||
profile.items[LoadoutGUID].attributes = JSON.parse(req.body.loadoutData);
|
||||
|
||||
ApplyProfileChanges.push({
|
||||
"changeType": "itemAttrChanged",
|
||||
"itemId": LoadoutGUID,
|
||||
"attributeName": "slots",
|
||||
"attributeValue": profile.items[LoadoutGUID].attributes.slots
|
||||
})
|
||||
|
||||
StatChanged = true;
|
||||
|
||||
} catch (err) {}
|
||||
|
||||
if (StatChanged == true) {
|
||||
profile.rvn += 1;
|
||||
profile.commandRevision += 1;
|
||||
|
||||
await profiles.updateOne({ $set: { [`profiles.${req.query.profileId}`]: profile } });
|
||||
}
|
||||
|
||||
// this doesn't work properly on version v12.20 and above but whatever
|
||||
if (QueryRevision != BaseRevision) {
|
||||
ApplyProfileChanges = [{
|
||||
"changeType": "fullProfileUpdate",
|
||||
"profile": profile
|
||||
}];
|
||||
}
|
||||
|
||||
res.json({
|
||||
profileRevision: profile.rvn || 0,
|
||||
profileId: req.query.profileId,
|
||||
profileChangesBaseRevision: BaseRevision,
|
||||
profileChanges: ApplyProfileChanges,
|
||||
profileCommandRevision: profile.commandRevision || 0,
|
||||
serverTime: new Date().toISOString(),
|
||||
responseVersion: 1
|
||||
})
|
||||
});
|
||||
|
||||
app.post("/fortnite/api/game/v2/profile/*/client/:operation", verifyToken, async (req, res) => {
|
||||
const profiles = await Profile.findOne({ accountId: req.user.accountId });
|
||||
|
||||
|
||||
+3
-3
@@ -1,12 +1,12 @@
|
||||
const express = require("express");
|
||||
const app = express();
|
||||
const profile = require("./../model/profiles.js")
|
||||
const Profile = require("./../model/profiles.js")
|
||||
|
||||
const { verifyToken } = require("../tokenManager/tokenVerify.js");
|
||||
|
||||
|
||||
app.get("/fortnite/api/game/v2/privacy/account/:accountId", verifyToken , async (req, res) => {
|
||||
const profiles = await profile.findOne({ accountId: req.user.accountId });
|
||||
const profiles = await Profile.findOne({ accountId: req.user.accountId });
|
||||
|
||||
if(!profiles) return res.status(400).end();
|
||||
|
||||
@@ -17,7 +17,7 @@ app.get("/fortnite/api/game/v2/privacy/account/:accountId", verifyToken , async
|
||||
})
|
||||
|
||||
app.post("/fortnite/api/game/v2/privacy/account/:accountId", verifyToken , async (req, res) => {
|
||||
const profiles = await profile.findOne({ accountId: req.user.accountId });
|
||||
const profiles = await Profile.findOne({ accountId: req.user.accountId });
|
||||
|
||||
if(!profiles) return res.status(400).end();
|
||||
|
||||
|
||||
@@ -184,6 +184,13 @@ function getContentPages(req) {
|
||||
contentpages.dynamicbackgrounds.backgrounds.backgrounds[0].backgroundimage = "https://cdn2.unrealengine.com/t-s25-14dos-lobby-4096x2048-2be24969eee3.jpg"
|
||||
}
|
||||
}
|
||||
|
||||
if (memory.season == 27) {
|
||||
contentpages.dynamicbackgrounds.backgrounds.backgrounds[0].stage = "rufus";
|
||||
} else {
|
||||
contentpages.dynamicbackgrounds.backgrounds.backgrounds[0].stage = "defaultnotris";
|
||||
contentpages.dynamicbackgrounds.backgrounds.backgrounds[0].backgroundimage = "https://fortnite-public-service-prod11.ol.epicgames.com/images/lightlobbybg.png";
|
||||
}
|
||||
} catch {}
|
||||
|
||||
return contentpages;
|
||||
|
||||
Reference in New Issue
Block a user