66 lines
2.0 KiB
TypeScript
66 lines
2.0 KiB
TypeScript
import z from "zod"
|
|
|
|
function copsAndCrimsGunUpgrades() {
|
|
const ids = [
|
|
"knife",
|
|
"pistol",
|
|
"handgun",
|
|
"magnum",
|
|
"sniper",
|
|
"bullpup",
|
|
"smg",
|
|
"rifle",
|
|
"carbine",
|
|
"scoped_rifle",
|
|
"shotgun",
|
|
"auto_shotgun"
|
|
] as const
|
|
|
|
const upgrades = [
|
|
"damage_increase",
|
|
"recoil_reduction",
|
|
"reload_speed_reduction",
|
|
"cost_reduction"
|
|
] as const
|
|
|
|
const entries = new Map<string, z.ZodDefault<z.ZodNumber>>()
|
|
|
|
for (const id of ids) {
|
|
for (const upgrade of upgrades) {
|
|
entries.set(`${id}_${upgrade}`, z.number().default(0))
|
|
}
|
|
}
|
|
|
|
return Object.fromEntries(entries) as Record<`${typeof ids[number]}_${typeof upgrades[number]}`, z.ZodDefault<z.ZodNumber>>
|
|
}
|
|
|
|
export const copsAndCrimsStatsSchema = z.object({
|
|
kills: z.number().default(0),
|
|
assists: z.number().default(0),
|
|
deaths: z.number().default(0),
|
|
game_wins: z.number().default(0),
|
|
cop_kills: z.number().default(0),
|
|
criminal_kills: z.number().default(0),
|
|
kills_deathmatch: z.number().default(0),
|
|
assists_deathmatch: z.number().default(0),
|
|
deaths_deathmatch: z.number().default(0),
|
|
game_wins_deathmatch: z.number().default(0),
|
|
cop_kills_deathmatch: z.number().default(0),
|
|
criminal_kills_deathmatch: z.number().default(0),
|
|
kills_gungame: z.number().default(0),
|
|
assists_gungame: z.number().default(0),
|
|
deaths_gungame: z.number().default(0),
|
|
game_wins_gungame: z.number().default(0),
|
|
cop_kills_gungame: z.number().default(0),
|
|
criminal_kills_gungame: z.number().default(0),
|
|
bombs_planted: z.number().default(0),
|
|
bombs_defused: z.number().default(0),
|
|
shots_fired: z.number().default(0),
|
|
coins: z.number().default(0),
|
|
round_wins: z.number().default(0),
|
|
headshot_kills: z.number().default(0),
|
|
knife_attack_delay: z.number().default(0),
|
|
sniper_charge_bonus: z.number().default(0),
|
|
...copsAndCrimsGunUpgrades()
|
|
})
|