From 108aac83a51c9e325d918ead62e8ca4bc875a580 Mon Sep 17 00:00:00 2001 From: RaidMax Date: Tue, 9 May 2023 21:14:13 -0500 Subject: [PATCH] Adjustments to stats to support zombie client --- Plugins/Stats/Client/HitCalculator.cs | 2 +- .../Stats/Helpers/AdvancedClientStatsResourceQueryHelper.cs | 2 +- Plugins/Stats/Helpers/StatManager.cs | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Plugins/Stats/Client/HitCalculator.cs b/Plugins/Stats/Client/HitCalculator.cs index e0bcb137d..5af5c8b8f 100644 --- a/Plugins/Stats/Client/HitCalculator.cs +++ b/Plugins/Stats/Client/HitCalculator.cs @@ -181,7 +181,7 @@ public class HitCalculator : IClientStatisticCalculator foreach (var hitInfo in new[] {attackerHitInfo, victimHitInfo}) { - if (hitInfo.MeansOfDeath == null || hitInfo.Location == null || hitInfo.Weapon == null) + if (hitInfo.MeansOfDeath == null || hitInfo.Location == null || hitInfo.Weapon == null || hitInfo.EntityId == 0) { _logger.LogDebug("Skipping hit because it does not contain the required data"); continue; diff --git a/Plugins/Stats/Helpers/AdvancedClientStatsResourceQueryHelper.cs b/Plugins/Stats/Helpers/AdvancedClientStatsResourceQueryHelper.cs index 31d3ce556..92fff0ec5 100644 --- a/Plugins/Stats/Helpers/AdvancedClientStatsResourceQueryHelper.cs +++ b/Plugins/Stats/Helpers/AdvancedClientStatsResourceQueryHelper.cs @@ -148,7 +148,7 @@ namespace Stats.Helpers public static Expression> GetRankingFunc(int minPlayTime, TimeSpan expiration, double? zScore = null, long? serverId = null) { - var oldestStat = DateTimeOffset.UtcNow.Subtract(expiration); + var oldestStat = DateTime.UtcNow.Subtract(expiration); return stats => (serverId == null || stats.ServerId == serverId) && stats.UpdatedAt >= oldestStat && stats.Client.Level != EFClient.Permission.Banned && diff --git a/Plugins/Stats/Helpers/StatManager.cs b/Plugins/Stats/Helpers/StatManager.cs index 3af42bd19..903dbfa30 100644 --- a/Plugins/Stats/Helpers/StatManager.cs +++ b/Plugins/Stats/Helpers/StatManager.cs @@ -1198,11 +1198,12 @@ namespace IW4MAdmin.Plugins.Stats.Helpers oldestStat = bucketConfig.RankingExpiration; } + var oldestStateDate = DateTime.UtcNow - oldestStat; var performances = await context.Set() .AsNoTracking() .Where(stat => stat.ClientId == clientId) .Where(stat => stat.ServerId != serverId) // ignore the one we're currently tracking - .Where(stats => stats.UpdatedAt >= DateTimeOffset.UtcNow - oldestStat) + .Where(stats => stats.UpdatedAt >= oldestStateDate) .Where(stats => stats.TimePlayed >= minPlayTime) .ToListAsync();