Added duels kits stats table

This commit is contained in:
2025-09-13 21:02:51 +02:00
parent 42a49fb085
commit 0f9e7d4848
4 changed files with 119 additions and 7 deletions

View File

@@ -1,5 +1,21 @@
import { KITS } from "@/data/hypixel/blitz"
import { KITEXP, KITS } from "@/data/hypixel/blitz"
import { NonNullStats } from "@/lib/schema/player"
import { devide } from "../general"
export function getBlitzKitLevel(kitId: typeof KITS[number]["id"], stats: NonNullable<NonNullStats["Blitz"]>) {
let level = stats[kitId]
if (level === -1) {
const exp = stats[`exp_${kitId}`]
for (const kitexp of KITEXP.slice()) {
if (exp >= kitexp) {
level++
} else {
break
}
}
}
return level + 1
}
export function getBlitzMostPlayedKit(stats: NonNullable<NonNullStats["Blitz"]>) {
let mostPlayedKit: typeof KITS[number] | null = null
@@ -15,3 +31,34 @@ export function getBlitzMostPlayedKit(stats: NonNullable<NonNullStats["Blitz"]>)
return mostPlayedKit
}
export function getBlitzKitName(kitId: typeof KITS[number]["id"]) {
return KITS.find(k => k.id === kitId)!.name
}
export function getAllBlitzKitStats(stats: NonNullable<NonNullStats["Blitz"]>) {
const nums: { id: typeof KITS[number]["id"], nums: number[] }[] = []
for (const kit of KITS) {
nums.push({ id: kit.id, nums: getBlitzKitStats(kit.id, stats) })
}
console.log(nums)
return nums
}
export function getBlitzKitStats(kitId: typeof KITS[number]["id"], stats: NonNullable<NonNullStats["Blitz"]>) {
const wins = stats[`wins_${kitId}`] + stats[`wins_teams_${kitId}`]
const losses = stats[`games_played_${kitId}`] - wins
return [
stats[`exp_${kitId}`],
stats[`p${kitId}`],
stats[`kills_${kitId}`],
wins,
losses,
devide(wins, losses),
stats[`time_played_${kitId}`]
]
}

View File

@@ -837,22 +837,30 @@ function blitzKitPlayedStats() {
] as const
const stats = [
"time_played"
"wins",
"wins_teams",
"time_played",
"exp",
"kills",
"games_played"
] as const
const entries = new Map<string, z.ZodDefault<z.ZodNumber>>()
const kits = new Map<string, z.ZodDefault<z.ZodNumber>>()
const prestiges = new Map<string, z.ZodDefault<z.ZodNumber>>()
for (const id of ids) {
for (const stat of stats) {
entries.set(`${stat}_${id}`, z.number().default(0))
kits.set(`${id}`, z.number().default(0))
kits.set(`${id}`, z.number().default(-1))
prestiges.set(`p${id}`, z.number().default(0))
}
}
return {
stats: Object.fromEntries(entries) as Record<`${typeof stats[number]}_${typeof ids[number]}`, z.ZodDefault<z.ZodNumber>>,
kits: Object.fromEntries(entries) as Record<`${typeof ids[number]}`, z.ZodDefault<z.ZodNumber>>
kits: Object.fromEntries(kits) as Record<`${typeof ids[number]}`, z.ZodDefault<z.ZodNumber>>,
prestiges: Object.fromEntries(prestiges) as Record<`p${typeof ids[number]}`, z.ZodDefault<z.ZodNumber>>
}
}
@@ -867,5 +875,6 @@ export const blitzStatsSchema = z.object({
damage: z.number().default(0),
damage_taken: z.number().default(0),
...blitzKitPlayedStats().stats,
...blitzKitPlayedStats().kits
...blitzKitPlayedStats().kits,
...blitzKitPlayedStats().prestiges
})