Files
2026-08-24 22:20:36 +02:00

25 lines
1.1 KiB
JavaScript

const LeaderboardPositionsPacket = require("../Packets/LeaderboardPositions");
const leaderboards = require("../Data/leaderboard");
module.exports = async function (ws, message, player) {
const leaderboardPositionsData = leaderboards.map(async (leaderboard, i) => {
const leaderboardPositionFromDB = await execute(`SELECT 1 + COUNT(*) AS position FROM leaderboard_${i + 1} WHERE amount > COALESCE((SELECT amount FROM leaderboard_${i + 1} WHERE id = ?), 0)`, [player.id]);
if (!leaderboardPositionFromDB.data)
return {
selfPosition: 0,
totalPositionsLength: leaderboard.size
};
const selfPosition = leaderboardPositionFromDB.data[0].position;
return {
selfPosition: selfPosition > leaderboard.size ? 0 : selfPosition,
totalPositionsLength: leaderboard.size
};
});
const leaderboardPositions = await Promise.all(leaderboardPositionsData);
const leaderboardPositionsPacket = LeaderboardPositionsPacket(leaderboardPositions);
player.map.registerIndividualNetworkPacket(player.id, leaderboardPositionsPacket);
};