ed83c4c011
fix bug with unbanned players still showing as banned via lock icon move player based stuff into client class finally renamed Player to EFClient via partial class don't try to run this build because it's in between stages
57 lines
2.0 KiB
C#
57 lines
2.0 KiB
C#
using SharedLibraryCore;
|
|
using SharedLibraryCore.Objects;
|
|
using IW4MAdmin.Plugins.Stats.Models;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using SharedLibraryCore.Database;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using SharedLibraryCore.Database.Models;
|
|
|
|
namespace IW4MAdmin.Plugins.Stats.Commands
|
|
{
|
|
public class ResetStats : Command
|
|
{
|
|
public ResetStats() : base("resetstats", Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_COMMANDS_RESET_DESC"], "rs", EFClient.Permission.User, false) { }
|
|
|
|
public override async Task ExecuteAsync(GameEvent E)
|
|
{
|
|
if (E.Origin.ClientNumber >= 0)
|
|
{
|
|
|
|
int serverId = E.Owner.GetHashCode();
|
|
|
|
EFClientStatistics clientStats;
|
|
using (var ctx = new DatabaseContext(disableTracking: true))
|
|
{
|
|
clientStats = await ctx.Set<EFClientStatistics>()
|
|
.Where(s => s.ClientId == E.Origin.ClientId && s.ServerId == serverId)
|
|
.FirstAsync();
|
|
|
|
clientStats.Deaths = 0;
|
|
clientStats.Kills = 0;
|
|
clientStats.SPM = 0.0;
|
|
clientStats.Skill = 0.0;
|
|
clientStats.TimePlayed = 0;
|
|
// todo: make this more dynamic
|
|
clientStats.EloRating = 200.0;
|
|
|
|
// reset the cached version
|
|
Plugin.Manager.ResetStats(E.Origin.ClientId, E.Owner.GetHashCode());
|
|
|
|
// fixme: this doesn't work properly when another context exists
|
|
await ctx.SaveChangesAsync();
|
|
}
|
|
E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_COMMANDS_RESET_SUCCESS"]);
|
|
}
|
|
|
|
else
|
|
{
|
|
E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["PLUGINS_STATS_COMMANDS_RESET_FAIL"]);
|
|
}
|
|
}
|
|
}
|
|
}
|