fix playerWeapons async

This commit is contained in:
2023-03-13 19:34:25 +01:00
parent 6822f30f87
commit 8717668234
+54 -50
View File
@@ -113,59 +113,63 @@ async function processPlayerWeapons(server: number, player: number) {
(acc, current) => (current.last_entry > acc ? current.last_entry : acc), (acc, current) => (current.last_entry > acc ? current.last_entry : acc),
0 0
) )
const promises: Promise<number>[] = [] const promises: Promise<any>[] = []
newData.forEach( newData.forEach(
async ({ weapon, kills, deaths, avg_kill_distance, max_kill_distance }) => { async ({ weapon, kills, deaths, avg_kill_distance, max_kill_distance }) => {
const oldKills =
Number(
await cache.HGET(
`servers:${server}:players:${player}:weapons:kills`,
weapon
)
) || 0
const oldaverage =
Number(
await cache.HGET(
`servers:${server}:players:${player}:weapons:avg_kill_distance`,
weapon
)
) | 0
const totalkills = oldKills + kills
const newAverage =
(oldKills / totalkills) * oldaverage +
(kills / totalkills) * Number(avg_kill_distance)
const oldMaxDistance =
Number(
await cache.HGET(
`servers:${server}:players:${player}:weapons:max_kill_distance`,
weapon
)
) | 0
promises.push( promises.push(
cache.HINCRBY( (async () => {
`servers:${server}:players:${player}:weapons:deaths`, const oldKills =
weapon, Number(
deaths await cache.HGET(
), `servers:${server}:players:${player}:weapons:kills`,
cache.HINCRBY( weapon
`servers:${server}:players:${player}:weapons:kills`, )
weapon, ) || 0
kills const oldaverage =
), Number(
cache.HSET( await cache.HGET(
`servers:${server}:players:${player}:weapons:avg_kill_distance`, `servers:${server}:players:${player}:weapons:avg_kill_distance`,
weapon, weapon
newAverage | 0 )
), ) | 0
cache.HSET( const totalkills = oldKills + kills
`servers:${server}:players:${player}:weapons:max_kill_distance`, const newAverage =
weapon, (oldKills / totalkills) * oldaverage +
oldMaxDistance < max_kill_distance (kills / totalkills) * Number(avg_kill_distance)
? max_kill_distance
: oldMaxDistance const oldMaxDistance =
) Number(
await cache.HGET(
`servers:${server}:players:${player}:weapons:max_kill_distance`,
weapon
)
) | 0
promises.push(
cache.HINCRBY(
`servers:${server}:players:${player}:weapons:deaths`,
weapon,
deaths
),
cache.HINCRBY(
`servers:${server}:players:${player}:weapons:kills`,
weapon,
kills
),
cache.HSET(
`servers:${server}:players:${player}:weapons:avg_kill_distance`,
weapon,
newAverage | 0
),
cache.HSET(
`servers:${server}:players:${player}:weapons:max_kill_distance`,
weapon,
oldMaxDistance < max_kill_distance
? max_kill_distance
: oldMaxDistance
)
)
})()
) )
} }
) )