fix incorrect KD caused by weapon processing
This commit is contained in:
+12
-9
@@ -73,20 +73,23 @@ router.get(
|
||||
allData
|
||||
.filter((e) => filters(e, req.query))
|
||||
.forEach((e) => {
|
||||
if (!data[e[index]])
|
||||
data[e[index]] = {
|
||||
if (!e.cause_of_death || !e.attacker_id || !e.map || !e.servername || !e.game_mode) return
|
||||
const requestIndex = e[index]
|
||||
if (!requestIndex) return
|
||||
if (!data[requestIndex])
|
||||
data[requestIndex] = {
|
||||
deaths: 0,
|
||||
kills: 0,
|
||||
max_distance: 0,
|
||||
total_distance: 0
|
||||
}
|
||||
if (index === 'attacker_id') data[e[index]].username = e.attacker_name
|
||||
if (index === 'servername') data[e[index]].host = e.host
|
||||
data[e[index]].deaths += Number(e.deaths)
|
||||
data[e[index]].kills += Number(e.kills)
|
||||
data[e[index]].total_distance += Number(e.total_distance)
|
||||
data[e[index]].max_distance = Math.max(
|
||||
data[e[index]].max_distance,
|
||||
if (index === 'attacker_id') data[requestIndex].username = e.attacker_name
|
||||
if (index === 'servername') data[requestIndex].host = e.host
|
||||
data[requestIndex].deaths += Number(e.deaths)
|
||||
data[requestIndex].kills += Number(e.kills)
|
||||
data[requestIndex].total_distance += Number(e.total_distance)
|
||||
data[requestIndex].max_distance = Math.max(
|
||||
data[requestIndex].max_distance,
|
||||
Number(e.max_distance)
|
||||
)
|
||||
})
|
||||
|
||||
@@ -69,7 +69,7 @@ export default async function listenKills() {
|
||||
|
||||
killEntry.kills++
|
||||
killEntry.total_distance += payload.distance
|
||||
killEntry.max_distance = Math.max(killEntry.max_distance, payload.distance)
|
||||
killEntry.max_distance = Math.max(killEntry.max_distance || 0, payload.distance)
|
||||
deathEntry.deaths++
|
||||
})
|
||||
return pgClient
|
||||
|
||||
+19
-6
@@ -62,7 +62,8 @@ async function processGlobalStats() {
|
||||
.select([
|
||||
count<number>('id').as('deaths'),
|
||||
'victim_id',
|
||||
'victim_current_weapon',
|
||||
sql<string>`last(victim_name)`.as('victim_name'),
|
||||
'cause_of_death',
|
||||
'map',
|
||||
'game_mode',
|
||||
'servername',
|
||||
@@ -70,7 +71,7 @@ async function processGlobalStats() {
|
||||
])
|
||||
.groupBy([
|
||||
'victim_id',
|
||||
'victim_current_weapon',
|
||||
'cause_of_death',
|
||||
'map',
|
||||
'servername',
|
||||
'host',
|
||||
@@ -78,17 +79,29 @@ async function processGlobalStats() {
|
||||
])
|
||||
)
|
||||
.selectFrom('kills')
|
||||
.leftJoin('deaths', (join) =>
|
||||
.fullJoin('deaths', (join) =>
|
||||
join
|
||||
.onRef('deaths.victim_id', '=', 'kills.attacker_id')
|
||||
.onRef('deaths.victim_current_weapon', '=', 'kills.cause_of_death')
|
||||
.onRef('deaths.cause_of_death', '=', 'kills.cause_of_death')
|
||||
.onRef('deaths.servername', '=', 'kills.servername')
|
||||
.onRef('deaths.host', '=', 'kills.host')
|
||||
.onRef('deaths.game_mode', '=', 'kills.game_mode')
|
||||
.onRef('deaths.map', '=', 'kills.map')
|
||||
)
|
||||
.selectAll('kills')
|
||||
.select(sql<number>`COALESCE(deaths.deaths, 0)`.as('deaths'))
|
||||
//.selectAll('kills')
|
||||
.select([
|
||||
sql<string>`COALESCE(kills.attacker_name, deaths.victim_name)`.as('attacker_name'),
|
||||
sql<string>`COALESCE(kills.attacker_id, deaths.victim_id)`.as('attacker_id'),
|
||||
sql<number>`COALESCE(kills.kills, 0)`.as('kills'),
|
||||
sql<number>`COALESCE(kills.total_distance, 0)`.as('total_distance'),
|
||||
sql<number>`COALESCE(kills.max_distance, 0)`.as('max_distance'),
|
||||
sql<number>`COALESCE(deaths.deaths, 0)`.as('deaths'),
|
||||
sql<string>`COALESCE(kills.servername, deaths.servername)`.as('servername'),
|
||||
sql<number>`COALESCE(kills.host, deaths.host)`.as('host'),
|
||||
sql<string>`COALESCE(kills.cause_of_death, deaths.cause_of_death)`.as('cause_of_death'),
|
||||
sql<string>`COALESCE(kills.map, deaths.map)`.as('map'),
|
||||
sql<string>`COALESCE(kills.game_mode, deaths.game_mode)`.as('game_mode'),
|
||||
])
|
||||
.execute()
|
||||
}
|
||||
export default processAll
|
||||
|
||||
Reference in New Issue
Block a user