返回提交历史
Modified
src/controllers/api/creditsController.ts
+4
-1
Modified
src/controllers/api/inventoryController.ts
+11
-0
Modified
src/controllers/api/tradingController.ts
+6
-2
Modified
src/controllers/custom/setAccountCheatController.ts
+11
-1
Modified
src/models/inventoryModels/inventoryModel.ts
+1
-0
Modified
src/services/importService.ts
+3
-0
Modified
src/types/inventoryTypes/inventoryTypes.ts
+1
-0
Modified
static/webui/index.html
+4
-0
Modified
static/webui/translations/de.js
+1
-0
Modified
static/webui/translations/en.js
+1
-0
Modified
static/webui/translations/es.js
+1
-0
Modified
static/webui/translations/fr.js
+1
-0
Modified
static/webui/translations/ru.js
+1
-0
Modified
static/webui/translations/uk.js
+1
-0
Modified
static/webui/translations/zh.js
+1
-0
XFEstudio/XFESpaceNinjaServer
feat: infiniteTrades cheat & update skipAllPopups to avoid first time trade message (#3434)
- Also fixes importer ignoring Settings object (e.g. couldn't change `TradingRulesConfirmed` value previously). - `skipAllPopups` skips now the first time trading message (though not sure if my approach may be a little too questionable). - Also fixes `skipAllDialogue` not taking effect when activated while being in an open world hub. Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/3434 Reviewed-by: Sainan <63328889+sainan@users.noreply.github.com> Co-authored-by: Animan8000 <187183497+Veniman8000@users.noreply.github.com> Co-committed-by: Animan8000 <187183497+Veniman8000@users.noreply.github.com>
a6b29dbf
代码差异
15 个文件
+48
-4
@@ -8,7 +8,7 @@ export const creditsController: RequestHandler = async (req, res) => {
8
8
getAccountIdForRequest(req),
9
9
getInventory(
10
10
req.query.accountId as string,
11
"RegularCredits TradesRemaining PremiumCreditsFree PremiumCredits infiniteCredits infinitePlatinum"
11
"RegularCredits TradesRemaining PremiumCreditsFree PremiumCredits infiniteCredits infinitePlatinum infiniteTrades"
12
12
)
13
13
])
14
14
)[1];
@@ -27,6 +27,9 @@ export const creditsController: RequestHandler = async (req, res) => {
27
27
response.PremiumCreditsFree = 0;
28
28
response.PremiumCredits = 999999999;
29
29
}
30
if (inventory.infiniteTrades) {
31
response.TradesRemaining = 9999;
32
}
30
33
31
34
res.json(response);
32
35
};
@@ -355,6 +355,9 @@ export const getInventoryResponse = async (
355
355
if (inventory.infiniteRegalAya) {
356
356
inventoryResponse.PrimeTokens = 999999999;
357
357
}
358
if (inventory.infiniteTrades) {
359
inventoryResponse.TradesRemaining = 9999;
360
}
358
361
359
362
if (inventory.skipAllDialogue) {
360
363
inventoryResponse.TauntHistory ??= [];
@@ -385,6 +388,14 @@ export const getInventoryResponse = async (
385
388
for (const str of allPopups) {
386
389
addString(inventoryResponse.NodeIntrosCompleted, str);
387
390
}
391
inventoryResponse.Settings ??= {
392
FriendInvRestriction: "GIFT_MODE_ALL",
393
GiftMode: "GIFT_MODE_ALL",
394
GuildInvRestriction: "GIFT_MODE_ALL",
395
ShowFriendInvNotifications: true,
396
TradingRulesConfirmed: false
397
};
398
inventoryResponse.Settings.TradingRulesConfirmed = true;
388
399
inventoryResponse.PlayedParkourTutorial = true; // Skips PoE update popup in U22
389
400
}
390
401
@@ -84,7 +84,9 @@ export const tradingController: RequestHandler = async (req, res) => {
84
84
pendingTrades[tradeId].clanTax,
85
85
req.query.guildId as string | undefined
86
86
);
87
traderInventory.TradesRemaining -= 1;
87
if (!traderInventory.infiniteTrades) {
88
traderInventory.TradesRemaining -= 1;
89
}
88
90
}
89
91
if (!tradeeInventory.tradesDontTouchInventory) {
90
92
applyOfferToInventory(tradeeInventory, pendingTrades[tradeId].tradeeOffer, -1); // Conversely, tradee gives up their items
@@ -96,7 +98,9 @@ export const tradingController: RequestHandler = async (req, res) => {
96
98
pendingTrades[tradeId].clanTax,
97
99
req.query.guildId as string | undefined
98
100
);
99
tradeeInventory.TradesRemaining -= 1;
101
if (!tradeeInventory.infiniteTrades) {
102
tradeeInventory.TradesRemaining -= 1;
103
}
100
104
}
101
105
102
106
await Promise.all([traderInventory.save(), tradeeInventory.save()]);
@@ -23,7 +23,17 @@ export const setAccountCheatController: RequestHandler = async (req, res) => {
23
23
}
24
24
await inventory.save();
25
25
res.end();
26
if (["infiniteCredits", "infinitePlatinum", "infiniteEndo", "infiniteRegalAya"].indexOf(payload.key) != -1) {
26
if (
27
[
28
"infiniteCredits",
29
"infinitePlatinum",
30
"infiniteEndo",
31
"infiniteRegalAya",
32
"infiniteTrades",
33
"skipAllDialogue",
34
"skipAllPopups"
35
].indexOf(payload.key) != -1
36
) {
27
37
sendWsBroadcastTo(accountId, { update_inventory: true, sync_inventory: true });
28
38
} else {
29
39
sendWsBroadcastEx({ update_inventory: true }, accountId, parseInt(String(req.query.wsid)));
@@ -1557,6 +1557,7 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
1557
1557
infinitePlatinum: Boolean,
1558
1558
infiniteEndo: Boolean,
1559
1559
infiniteRegalAya: Boolean,
1560
infiniteTrades: Boolean,
1560
1561
infiniteHelminthMaterials: Boolean,
1561
1562
universalPolarityEverywhere: Boolean,
1562
1563
unlockDoubleCapacityPotatoesEverywhere: Boolean,
@@ -554,6 +554,9 @@ export const importInventory = (db: TInventoryDatabaseDocument, client: Partial<
554
554
if (client.Boosters !== undefined) {
555
555
replaceArray<IBooster>(db.Boosters, client.Boosters);
556
556
}
557
if (client.Settings !== undefined) {
558
db.Settings = client.Settings;
559
}
557
560
558
561
// Final sanity check over data
559
562
for (const pr of db.PendingRecipes) {
@@ -43,6 +43,7 @@ export const accountCheatBooleans = [
43
43
"infinitePlatinum",
44
44
"infiniteEndo",
45
45
"infiniteRegalAya",
46
"infiniteTrades",
46
47
"infiniteHelminthMaterials",
47
48
"universalPolarityEverywhere",
48
49
"unlockDoubleCapacityPotatoesEverywhere",
@@ -1010,6 +1010,10 @@
1010
1010
<input class="form-check-input" type="checkbox" id="infiniteRegalAya" />
1011
1011
<label class="form-check-label" for="infiniteRegalAya" data-loc="cheats_infiniteRegalAya"></label>
1012
1012
</div>
1013
<div class="form-check">
1014
<input class="form-check-input" type="checkbox" id="infiniteTrades" />
1015
<label class="form-check-label" for="infiniteTrades" data-loc="cheats_infiniteTrades"></label>
1016
</div>
1013
1017
<div class="form-check">
1014
1018
<input class="form-check-input" type="checkbox" id="infiniteHelminthMaterials" />
1015
1019
<label class="form-check-label" for="infiniteHelminthMaterials" data-loc="cheats_infiniteHelminthMaterials"></label>
@@ -230,6 +230,7 @@ dict = {
230
230
cheats_infinitePlatinum: `Unendlich Platinum`,
231
231
cheats_infiniteEndo: `Unendlich Endo`,
232
232
cheats_infiniteRegalAya: `Unendlich Reines Aya`,
233
cheats_infiniteTrades: `Unendlich handeln`,
233
234
cheats_infiniteHelminthMaterials: `Unendlich Helminth-Materialien`,
234
235
cheats_claimingBlueprintRefundsIngredients: `Fertige Blaupausen erstatten Ressourcen zurück`,
235
236
cheats_dontSubtractPurchaseCreditCost: `Credits beim Kauf nicht verbrauchen`,
@@ -229,6 +229,7 @@ dict = {
229
229
cheats_infinitePlatinum: `Infinite Platinum`,
230
230
cheats_infiniteEndo: `Infinite Endo`,
231
231
cheats_infiniteRegalAya: `Infinite Regal Aya`,
232
cheats_infiniteTrades: `Infinite Trades`,
232
233
cheats_infiniteHelminthMaterials: `Infinite Helminth Materials`,
233
234
cheats_claimingBlueprintRefundsIngredients: `Claiming Blueprint Refunds Ingredients`,
234
235
cheats_dontSubtractPurchaseCreditCost: `Don't Subtract Purchase Credit Cost`,
@@ -230,6 +230,7 @@ dict = {
230
230
cheats_infinitePlatinum: `Platino infinito`,
231
231
cheats_infiniteEndo: `Endo infinito`,
232
232
cheats_infiniteRegalAya: `Aya Real infinita`,
233
cheats_infiniteTrades: `[UNTRANSLATED] Infinite Trades`,
233
234
cheats_infiniteHelminthMaterials: `Materiales Helminto infinitos`,
234
235
cheats_claimingBlueprintRefundsIngredients: `Reclamar planos devuelve los ingredientes`,
235
236
cheats_dontSubtractPurchaseCreditCost: `No restar costo en créditos al comprar`,
@@ -230,6 +230,7 @@ dict = {
230
230
cheats_infinitePlatinum: `Platinum infini`,
231
231
cheats_infiniteEndo: `Endo infini`,
232
232
cheats_infiniteRegalAya: `Aya Raffiné infini`,
233
cheats_infiniteTrades: `[UNTRANSLATED] Infinite Trades`,
233
234
cheats_infiniteHelminthMaterials: `Ressources d'Helminth infinies`,
234
235
cheats_claimingBlueprintRefundsIngredients: `Récupérer les items rend les ressources`,
235
236
cheats_dontSubtractPurchaseCreditCost: `Ne pas retirer le coût en crédits`,