1
0
mirror of https://github.com/RaidMax/IW4M-Admin.git synced 2025-06-10 23:31:13 -05:00

Moved from SQLITE to EntityFramework.

Lots of things are broken!
This commit is contained in:
RaidMax
2017-11-25 19:29:58 -06:00
parent c56d98d11c
commit 23eb641113
61 changed files with 1690 additions and 1685 deletions

View File

@ -7,6 +7,8 @@ using System.IO;
using System.Text;
using System.Threading.Tasks;
using SharedLibrary.Objects;
namespace StatsPlugin
{
public class CViewStats : Command
@ -74,7 +76,7 @@ namespace StatsPlugin
await E.Origin.Tell("^5--Top Players--");
foreach (KeyValuePair<String, PlayerStats> pStat in pStats)
{
Player P = E.Owner.Manager.GetClientDatabase().GetPlayer(pStat.Key, -1);
Player P = E.Owner.Manager.GetDatabase().GetClient(pStat.Key) as Player;
if (P == null)
continue;
await E.Origin.Tell(String.Format("^3{0}^7 - ^5{1} ^7KDR | ^5{2} ^7SKILL", P.Name, pStat.Value.KDR, pStat.Value.Skill));
@ -132,8 +134,8 @@ namespace StatsPlugin
return;
}
E.Owner.Manager.GetClientDatabase().PruneAdmins(inactiveDays);
await E.Origin.Tell("Pruned inactive privileged users");
var inactiveAdmins = await E.Owner.Manager.GetDatabase().PruneInactivePrivilegedClients(inactiveDays);
await E.Origin.Tell($"Pruned inactive {inactiveAdmins.Count} privileged users");
}
}
@ -289,7 +291,7 @@ namespace StatsPlugin
if (E.Type == Event.GType.Connect)
{
ResetCounters(E.Origin.ClientID, S.GetPort());
ResetCounters(E.Origin.ClientNumber, S.GetPort());
var config = new ConfigurationManager(E.Owner);
@ -300,8 +302,8 @@ namespace StatsPlugin
//todo: move this out of here!!
if (checkForTrusted.TotalPlayTime >= 4320 && E.Origin.Level < Player.Permission.Trusted && E.Origin.Level != Player.Permission.Flagged)
{
E.Origin.SetLevel(Player.Permission.Trusted);
E.Owner.Manager.GetClientDatabase().UpdatePlayer(E.Origin);
E.Origin.Level = Player.Permission.Trusted;
await E.Owner.Manager.GetDatabase().UpdateClient(E.Origin);
await E.Origin.Tell("Congratulations, you are now a ^5trusted ^7player! Type ^5!help ^7to view new commands.");
await E.Origin.Tell("You earned this by playing for ^53 ^7full days!");
}
@ -316,10 +318,10 @@ namespace StatsPlugin
continue;
CalculateAndSaveSkill(P, statLists.Find(x => x.Port == S.GetPort()));
ResetCounters(P.ClientID, S.GetPort());
ResetCounters(P.ClientNumber, S.GetPort());
E.Owner.Logger.WriteInfo($"Updated skill for {P}");
//E.Owner.Log.Write(String.Format("\r\nJoin: {0}\r\nInactive Minutes: {1}\r\nnewPlayTime: {2}\r\nnewSPM: {3}\r\nkdrWeight: {4}\r\nMultiplier: {5}\r\nscoreWeight: {6}\r\nnewSkillFactor: {7}\r\nprojectedNewSkill: {8}\r\nKills: {9}\r\nDeaths: {10}", connectionTime[P.clientID].ToShortTimeString(), inactiveMinutes[P.clientID], newPlayTime, newSPM, kdrWeight, Multiplier, scoreWeight, newSkillFactor, disconnectStats.Skill, disconnectStats.Kills, disconnectStats.Deaths));
//E.Owner.Log.Write(String.Format("\r\nJoin: {0}\r\nInactive Minutes: {1}\r\nnewPlayTime: {2}\r\nnewSPM: {3}\r\nkdrWeight: {4}\r\nMultiplier: {5}\r\nscoreWeight: {6}\r\nnewSkillFactor: {7}\r\nprojectedNewSkill: {8}\r\nKills: {9}\r\nDeaths: {10}", connectionTime[P.ClientNumber].ToShortTimeString(), inactiveMinutes[P.ClientNumber], newPlayTime, newSPM, kdrWeight, Multiplier, scoreWeight, newSkillFactor, disconnectStats.Skill, disconnectStats.Kills, disconnectStats.Deaths));
}
}
@ -332,7 +334,7 @@ namespace StatsPlugin
if (E.Type == Event.GType.Disconnect)
{
CalculateAndSaveSkill(E.Origin, statLists.Find(x => x.Port == S.GetPort()));
ResetCounters(E.Origin.ClientID, S.GetPort());
ResetCounters(E.Origin.ClientNumber, S.GetPort());
E.Owner.Logger.WriteInfo($"Updated skill for disconnecting client {E.Origin}");
}
@ -345,7 +347,7 @@ namespace StatsPlugin
if (killInfo.Length >= 9 && killInfo[0].Contains("ScriptKill"))
{
var killEvent = new KillInfo(E.Origin.DatabaseID, E.Target.DatabaseID, S.CurrentMap.Name, killInfo[7], killInfo[8], killInfo[5], killInfo[6], killInfo[3], killInfo[4])
var killEvent = new KillInfo(E.Origin.ClientNumber, E.Target.ClientNumber, S.CurrentMap.Name, killInfo[7], killInfo[8], killInfo[5], killInfo[6], killInfo[3], killInfo[4])
{
KillerPlayer = E.Origin.Name,
VictimPlayer = E.Target.Name,
@ -366,11 +368,11 @@ namespace StatsPlugin
if (killerStats == null)
killerStats = new PlayerStats(0, 0, 0, 0, 0, 0);
curServer.lastKill[E.Origin.ClientID] = DateTime.Now;
curServer.Kills[E.Origin.ClientID]++;
curServer.lastKill[E.Origin.ClientNumber] = DateTime.Now;
curServer.Kills[E.Origin.ClientNumber]++;
if ((DateTime.Now - curServer.lastKill[E.Origin.ClientID]).TotalSeconds > 120)
curServer.inactiveMinutes[E.Origin.ClientID] += 2;
if ((DateTime.Now - curServer.lastKill[E.Origin.ClientNumber]).TotalSeconds > 120)
curServer.inactiveMinutes[E.Origin.ClientNumber] += 2;
killerStats.Kills++;
@ -378,10 +380,10 @@ namespace StatsPlugin
curServer.playerStats.UpdateStats(Killer, killerStats);
curServer.killStreaks[Killer.ClientID] += 1;
curServer.deathStreaks[Killer.ClientID] = 0;
curServer.killStreaks[Killer.ClientNumber] += 1;
curServer.deathStreaks[Killer.ClientNumber] = 0;
await Killer.Tell(MessageOnStreak(curServer.killStreaks[Killer.ClientID], curServer.deathStreaks[Killer.ClientID]));
await Killer.Tell(MessageOnStreak(curServer.killStreaks[Killer.ClientNumber], curServer.deathStreaks[Killer.ClientNumber]));
}
if (E.Type == Event.GType.Death)
@ -401,15 +403,15 @@ namespace StatsPlugin
curServer.playerStats.UpdateStats(Victim, victimStats);
curServer.deathStreaks[Victim.ClientID] += 1;
curServer.killStreaks[Victim.ClientID] = 0;
curServer.deathStreaks[Victim.ClientNumber] += 1;
curServer.killStreaks[Victim.ClientNumber] = 0;
await Victim.Tell(MessageOnStreak(curServer.killStreaks[Victim.ClientID], curServer.deathStreaks[Victim.ClientID]));
await Victim.Tell(MessageOnStreak(curServer.killStreaks[Victim.ClientNumber], curServer.deathStreaks[Victim.ClientNumber]));
}
if (E.Type == Event.GType.Say)
{
ChatDB.AddChatHistory(E.Origin.DatabaseID, E.Owner.GetPort(), E.Data);
ChatDB.AddChatHistory(E.Origin.ClientNumber, E.Owner.GetPort(), E.Data);
}
}
@ -444,19 +446,19 @@ namespace StatsPlugin
PlayerStats DisconnectingPlayerStats = curServer.playerStats.GetStats(P);
if (DisconnectingPlayerStats == null || curServer.Kills[P.ClientID] == 0)
if (DisconnectingPlayerStats == null || curServer.Kills[P.ClientNumber] == 0)
return;
else if (curServer.lastKill[P.ClientID] > curServer.connectionTime[P.ClientID])
curServer.inactiveMinutes[P.ClientID] += (int)(DateTime.Now - curServer.lastKill[P.ClientID]).TotalMinutes;
else if (curServer.lastKill[P.ClientNumber] > curServer.connectionTime[P.ClientNumber])
curServer.inactiveMinutes[P.ClientNumber] += (int)(DateTime.Now - curServer.lastKill[P.ClientNumber]).TotalMinutes;
int newPlayTime = (int)(DateTime.Now - curServer.connectionTime[P.ClientID]).TotalMinutes - curServer.inactiveMinutes[P.ClientID];
int newPlayTime = (int)(DateTime.Now - curServer.connectionTime[P.ClientNumber]).TotalMinutes - curServer.inactiveMinutes[P.ClientNumber];
if (newPlayTime < 2)
return;
// calculate the players Score Per Minute for the current session
double SessionSPM = curServer.Kills[P.ClientID] * 100 / Math.Max(1, newPlayTime);
double SessionSPM = curServer.Kills[P.ClientNumber] * 100 / Math.Max(1, newPlayTime);
// calculate how much the KDR should way
// 1.637 is a Eddie-Generated number that weights the KDR nicely
double KDRWeight = Math.Round(Math.Pow(DisconnectingPlayerStats.KDR, 1.637 / Math.E), 3);
@ -520,7 +522,7 @@ namespace StatsPlugin
}
}
public class StatsDB : Database
public class StatsDB : _Database
{
public StatsDB(String FN, SharedLibrary.Interfaces.ILogger logger) : base(FN, logger) { }
@ -624,7 +626,7 @@ namespace StatsPlugin
{
Dictionary<String, object> newPlayer = new Dictionary<String, object>
{
{ "npID", P.NetworkID },
{ "npID", P.NetworkId },
{ "KILLS", 0 },
{ "DEATHS", 0 },
{ "KDR", 0.0 },
@ -637,7 +639,7 @@ namespace StatsPlugin
public PlayerStats GetStats(Player P)
{
DataTable Result = GetDataTable("STATS", new KeyValuePair<string, object>("npID", P.NetworkID));
DataTable Result = GetDataTable("STATS", new KeyValuePair<string, object>("npID", P.NetworkId));
if (Result != null && Result.Rows.Count > 0)
{
@ -682,7 +684,7 @@ namespace StatsPlugin
{ "SPM", Math.Round(S.scorePerMinute, 2) },
{ "PLAYTIME", S.TotalPlayTime }
};
Update("STATS", updatedPlayer, new KeyValuePair<string, object>("npID", P.NetworkID));
Update("STATS", updatedPlayer, new KeyValuePair<string, object>("npID", P.NetworkId));
}
public List<KeyValuePair<String, PlayerStats>> GetTopStats()