Finished general stats
This commit is contained in:
@@ -13,12 +13,31 @@ const dateFormatter = new Intl.DateTimeFormat("en-GB", {
|
||||
hour12: false
|
||||
})
|
||||
|
||||
export function formatNumber(num: number): string {
|
||||
export function formatNumber(num: number) {
|
||||
return numberFormatter.format(num)
|
||||
}
|
||||
export function formatDate(timestamp: number): string {
|
||||
export function formatDate(timestamp: number) {
|
||||
return dateFormatter.format(new Date(timestamp))
|
||||
}
|
||||
export function formatSecondsToTime(seconds: number) {
|
||||
if (!Number.isFinite(seconds)) return "0s"
|
||||
seconds = Math.floor(Math.max(0, seconds))
|
||||
const days = Math.floor(seconds / 86400)
|
||||
const hours = Math.floor((seconds % 86400) / 3600)
|
||||
const minutes = Math.floor((seconds % 3600) / 60)
|
||||
const secs = seconds % 60
|
||||
|
||||
const parts: string[] = []
|
||||
if (days) parts.push(days + "d")
|
||||
if (hours) parts.push(hours + "h")
|
||||
if (minutes) parts.push(minutes + "m")
|
||||
if (secs || parts.length === 0) parts.push(secs + "s")
|
||||
|
||||
if (parts.length === 1) return parts[0]
|
||||
if (parts.length === 2) return parts[0] + " and " + parts[1]
|
||||
// For 3+ parts: separate first n-1 by comma+space, last preceded by 'and'
|
||||
return parts.slice(0, -1).join(", ") + " and " + parts[parts.length - 1]
|
||||
}
|
||||
|
||||
export function formatRelativeTime(timestamp: number, type: "past" | "future") {
|
||||
const now = Date.now()
|
||||
|
||||
11
src/lib/hypixel/murder-mystery/general.ts
Normal file
11
src/lib/hypixel/murder-mystery/general.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { KNIFESKINS } from "@/data/hypixel/murder-mystery"
|
||||
|
||||
export function getKnifeName(name?: string) {
|
||||
if (!name) return KNIFESKINS.undefined
|
||||
|
||||
const skin = (KNIFESKINS as Record<string, string>)[name]
|
||||
|
||||
if (!skin) return KNIFESKINS.undefined
|
||||
|
||||
return skin
|
||||
}
|
||||
@@ -333,8 +333,13 @@ export const duelsStatsSchema = z.looseObject({
|
||||
|
||||
export const murderMysteryStatsSchema = z.looseObject({
|
||||
kills: z.number().default(0),
|
||||
deaths: z.number().default(0),
|
||||
wins: z.number().default(0),
|
||||
losses: z.number().default(0),
|
||||
coins: z.number().default(0),
|
||||
kills_as_murderer: z.number().default(0),
|
||||
deaths: z.number().default(0)
|
||||
thrown_knife_kills: z.number().default(0),
|
||||
active_knife_skin: z.string().optional(),
|
||||
quickest_detective_win_time_seconds: z.number().default(0),
|
||||
quickest_murderer_win_time_seconds: z.number().default(0)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user