XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFESpaceNinjaServer

feat: legacy global Kills leaderboard (#3449)

Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/3449 Reviewed-by: Sainan <63328889+sainan@users.noreply.github.com> Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>

b4b44b6d
AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
提交于

代码差异

2 个文件 +27 -4
Modified src/controllers/stats/uploadController.ts +3 -3
@@ -1,5 +1,5 @@
1 1 import { getJSONfromString } from "../../helpers/stringHelpers.ts";
2 import { getAccountIdForRequest } from "../../services/loginService.ts";
2 import { getAccountForRequest } from "../../services/loginService.ts";
3 3 import { updateStats } from "../../services/statsService.ts";
4 4 import type { IStatsUpdate } from "../../types/statTypes.ts";
5 5 import type { RequestHandler } from "express";
@@ -7,8 +7,8 @@ import type { RequestHandler } from "express";
7 7 const uploadController: RequestHandler = async (req, res) => {
8 8 // eslint-disable-next-line @typescript-eslint/no-unused-vars
9 9 const { PS, ...payload } = getJSONfromString<IStatsUpdate>(String(req.body));
10 const accountId = await getAccountIdForRequest(req);
11 await updateStats(accountId, payload);
10 const account = await getAccountForRequest(req);
11 await updateStats(account._id.toString(), payload, account.BuildLabel);
12 12 res.status(200).end();
13 13 };
14 14
Modified src/services/statsService.ts +24 -1
@@ -12,6 +12,8 @@ import type {
12 12 import { logger } from "../utils/logger.ts";
13 13 import { addEmailItem, getInventory } from "./inventoryService.ts";
14 14 import { submitLeaderboardScore } from "./leaderboardService.ts";
15 import { version_compare } from "../helpers/inventoryHelpers.ts";
16 import gameToBuildVersion from "../constants/gameToBuildVersion.ts";
15 17
16 18 export const createStats = async (accountId: string): Promise<TStatsDatabaseDocument> => {
17 19 const stats = new Stats({ accountOwnerId: accountId });
@@ -27,7 +29,11 @@ export const getStats = async (accountOwnerId: string): Promise<TStatsDatabaseDo
27 29 return stats;
28 30 };
29 31
30 export const updateStats = async (accountOwnerId: string, payload: IStatsUpdate): Promise<void> => {
32 export const updateStats = async (
33 accountOwnerId: string,
34 payload: IStatsUpdate,
35 buildLabel?: string
36 ): Promise<void> => {
31 37 const unknownCategories: Record<string, string[]> = {};
32 38 const playerStats = await getStats(accountOwnerId);
33 39
@@ -454,6 +460,23 @@ export const updateStats = async (accountOwnerId: string, payload: IStatsUpdate)
454 460 logger.debug(`Unknown updateStats ${action} action categories: ${categories.join(", ")}`);
455 461 }
456 462
463 if (
464 playerStats.Enemies &&
465 buildLabel &&
466 version_compare(buildLabel, gameToBuildVersion["10.3.3"]) <= 0 // Should be 11.7.1
467 ) {
468 const totalKills = playerStats.Enemies.reduce((sum, e) => sum + (e.kills ?? 0), 0);
469 if (totalKills > 0) {
470 await submitLeaderboardScore(
471 "events",
472 "Kills",
473 accountOwnerId,
474 payload.displayName,
475 totalKills,
476 payload.guildId
477 );
478 }
479 }
457 480 await playerStats.save();
458 481 };
459 482