From b9900707b52b1afd5774e7b4570a77318826abd7 Mon Sep 17 00:00:00 2001 From: RaidMax Date: Fri, 9 Feb 2018 01:21:25 -0600 Subject: [PATCH] More stats polishing fixed player specification for commands with multiple words --- Admin/Main.cs | 1 - Admin/Manager.cs | 6 + Admin/Server.cs | 28 +++- Admin/lib/SharedLibrary.dll | Bin 149504 -> 150528 bytes Plugins/SimpleStats/Helpers/ServerStats.cs | 4 +- Plugins/SimpleStats/Helpers/StatManager.cs | 156 ++++++++++++------ Plugins/SimpleStats/Helpers/StreakMessage.cs | 37 +++++ Plugins/SimpleStats/IW4Info.cs | 3 +- .../SimpleStats/Models/EFClientStatistics.cs | 4 + .../SimpleStats/Models/EFServerStatistics.cs | 17 ++ Plugins/SimpleStats/Plugin.cs | 25 +++ Plugins/SimpleStats/StatsPlugin.csproj | 2 + SharedLibrary/Commands/NativeCommands.cs | 2 +- SharedLibrary/Objects/Player.cs | 2 + SharedLibrary/RCON.cs | 4 +- SharedLibrary/Services/ClientService.cs | 6 + SharedLibrary/Utilities.cs | 4 +- 17 files changed, 240 insertions(+), 61 deletions(-) create mode 100644 Plugins/SimpleStats/Helpers/StreakMessage.cs create mode 100644 Plugins/SimpleStats/Models/EFServerStatistics.cs diff --git a/Admin/Main.cs b/Admin/Main.cs index cac5b6c9f..92d05d5aa 100644 --- a/Admin/Main.cs +++ b/Admin/Main.cs @@ -1,5 +1,4 @@  -#define USINGMEMORY using System; using System.Runtime.InteropServices; using SharedLibrary; diff --git a/Admin/Manager.cs b/Admin/Manager.cs index 8988867ec..7a9cc8b94 100644 --- a/Admin/Manager.cs +++ b/Admin/Manager.cs @@ -199,6 +199,12 @@ namespace IW4MAdmin var Status = TaskStatuses[i]; if (Status.RequestedTask == null || Status.RequestedTask.Status == TaskStatus.RanToCompletion) { + if (Status.ElapsedMillisecondsTime() > 60000) + { + Logger.WriteWarning($"Task took longer than 60 seconds to complete, killing"); + //Status.RequestedTask. + } + Status.Update(new Task(() => { return (Status.Dependant as Server).ProcessUpdatesAsync(Status.GetToken()).Result; })); if (Status.RunAverage > 1000 + UPDATE_FREQUENCY) Logger.WriteWarning($"Update task average execution is longer than desired for {(Status.Dependant as Server)} [{Status.RunAverage}ms]"); diff --git a/Admin/Server.cs b/Admin/Server.cs index 7335ab826..601050d04 100644 --- a/Admin/Server.cs +++ b/Admin/Server.cs @@ -34,6 +34,7 @@ namespace IW4MAdmin { // update their ping Players[polledPlayer.ClientNumber].Ping = polledPlayer.Ping; + Players[polledPlayer.ClientNumber].Score = polledPlayer.Score; return true; } @@ -112,6 +113,7 @@ namespace IW4MAdmin // NewPlayer.Level = Player.Permission.Flagged; // Do the player specific stuff player.ClientNumber = polledPlayer.ClientNumber; + player.Score = polledPlayer.Score; Players[player.ClientNumber] = player; Logger.WriteInfo($"Client {player} connecting..."); @@ -210,7 +212,15 @@ namespace IW4MAdmin if (C.RequiresTarget || Args.Length > 0) { int cNum = -1; - int.TryParse(Args[0], out cNum); + try + { + cNum = Convert.ToInt32(Args[0]); + } + + catch(FormatException) + { + + } if (Args[0][0] == '@') // user specifying target by database ID { @@ -227,7 +237,7 @@ namespace IW4MAdmin } } - else if (Args[0].Length < 3 && cNum > -1 && cNum < 18) // user specifying target by client num + else if (Args[0].Length < 3 && cNum > -1 && cNum < MaxClients) // user specifying target by client num { if (Players[cNum] != null) { @@ -250,6 +260,13 @@ namespace IW4MAdmin { E.Target = matchingPlayers.First(); E.Data = Regex.Replace(E.Data, $"\"{E.Target.Name}\"", "", RegexOptions.IgnoreCase).Trim(); + + if (E.Data.ToLower().Trim() == E.Target.Name.ToLower().Trim()) + { + await E.Origin.Tell($"Not enough arguments supplied!"); + await E.Origin.Tell(C.Syntax); + throw new SharedLibrary.Exceptions.CommandException($"{E.Origin} did not supply enough arguments for \"{C.Name}\""); + } } } @@ -267,6 +284,13 @@ namespace IW4MAdmin { E.Target = matchingPlayers.First(); E.Data = Regex.Replace(E.Data, $"{E.Target.Name}", "", RegexOptions.IgnoreCase).Trim(); + + if (E.Data.Trim() == E.Target.Name.ToLower().Trim()) + { + await E.Origin.Tell($"Not enough arguments supplied!"); + await E.Origin.Tell(C.Syntax); + throw new SharedLibrary.Exceptions.CommandException($"{E.Origin} did not supply enough arguments for \"{C.Name}\""); + } } } diff --git a/Admin/lib/SharedLibrary.dll b/Admin/lib/SharedLibrary.dll index 46fc446849aa4e8cb324af7b86ac873fa31afb99..0a35b3e5b6d4ecd82c87df43885ad914c4b32e22 100644 GIT binary patch literal 150528 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

{1pn4;=?HRqdQcS=~@ZEY>4kQh&Q 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

25VD#%0lld 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 F{{S!`fL8zj literal 149504 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 PlayerStats { get; set; } + public EFServerStatistics ServerStatistics { get; private set; } public EFServer Server { get; private set; } - public ServerStats(EFServer sv) + public ServerStats(EFServer sv, EFServerStatistics st) { PlayerStats = new Dictionary(); + ServerStatistics = st; Server = sv; } } diff --git a/Plugins/SimpleStats/Helpers/StatManager.cs b/Plugins/SimpleStats/Helpers/StatManager.cs index d0475d338..1e6e63b03 100644 --- a/Plugins/SimpleStats/Helpers/StatManager.cs +++ b/Plugins/SimpleStats/Helpers/StatManager.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; using System.Threading.Tasks; using SharedLibrary; using SharedLibrary.Helpers; @@ -19,7 +18,8 @@ namespace StatsPlugin.Helpers private IManager Manager; private GenericRepository ClientStatSvc; private GenericRepository ServerSvc; - private GenericRepository KillSvc; + private GenericRepository KillStatsSvc; + private GenericRepository ServerStatsSvc; public StatManager(IManager mgr) { @@ -28,13 +28,13 @@ namespace StatsPlugin.Helpers Manager = mgr; ClientStatSvc = new GenericRepository(); ServerSvc = new GenericRepository(); - KillSvc = new GenericRepository(); + KillStatsSvc = new GenericRepository(); + ServerStatsSvc = new GenericRepository(); } ~StatManager() { Servers.Clear(); - Log.WriteInfo("Cleared StatManager servers"); Log = null; Servers = null; } @@ -48,6 +48,7 @@ namespace StatsPlugin.Helpers try { int serverId = sv.GetHashCode(); + // get the server from the database if it exists, otherwise create and insert a new one var server = ServerSvc.Find(c => c.ServerId == serverId).FirstOrDefault(); if (server == null) @@ -64,7 +65,13 @@ namespace StatsPlugin.Helpers // this doesn't need to be async as it's during initialization ServerSvc.SaveChanges(); - Servers.Add(sv.GetHashCode(), new ServerStats(server)); + InitializeServerStats(sv); + ServerStatsSvc.SaveChanges(); + + var serverStats = ServerStatsSvc.Find(c => c.ServerId == serverId).FirstOrDefault(); + // check to see if the stats have ever been initialized + + Servers.Add(serverId, new ServerStats(server, serverStats)); } catch (Exception e) @@ -102,6 +109,10 @@ namespace StatsPlugin.Helpers clientStats = ClientStatSvc.Insert(clientStats); } + // set these on connecting + clientStats.LastActive = DateTime.UtcNow; + clientStats.LastStatCalculation = DateTime.UtcNow; + lock (playerStats) { if (playerStats.ContainsKey(pl.ClientNumber)) @@ -123,17 +134,9 @@ namespace StatsPlugin.Helpers // remove the client from the stats dictionary as they're leaving lock (playerStats) playerStats.Remove(pl.ClientNumber); - // allow accessing certain properties - //clientStats.Client = pl; - // update skill - // clientStats = UpdateStats(clientStats); - // reset for EF cache - //clientStats.SessionDeaths = 0; - // clientStats.SessionKills = 0; - // prevent mismatched primary key - //clientStats.Client = null; - // update in database - //await ClientStatSvc.SaveChangesAsync(); + + var serverStats = ServerStatsSvc.Find(sv => sv.ServerId == serverId).FirstOrDefault(); + serverStats.TotalPlayTime += (int)(DateTime.UtcNow - pl.LastConnection).TotalSeconds; } /// @@ -160,18 +163,29 @@ namespace StatsPlugin.Helpers Weapon = ParseEnum.Get(weapon, typeof(IW4Info.WeaponName)) }; - KillSvc.Insert(kill); - await KillSvc.SaveChangesAsync(); + KillStatsSvc.Insert(kill); + await KillStatsSvc.SaveChangesAsync(); } public void AddStandardKill(Player attacker, Player victim) { - var attackerStats = Servers[attacker.CurrentServer.GetHashCode()].PlayerStats[attacker.ClientNumber]; - // set to access total time + int serverId = attacker.CurrentServer.GetHashCode(); + var attackerStats = Servers[serverId].PlayerStats[attacker.ClientNumber]; + // set to access total time played attackerStats.Client = attacker; - var victimStats = Servers[victim.CurrentServer.GetHashCode()].PlayerStats[victim.ClientNumber]; + var victimStats = Servers[serverId].PlayerStats[victim.ClientNumber]; + // update the total stats + Servers[serverId].ServerStatistics.TotalKills += 1; + + // calculate for the clients CalculateKill(attackerStats, victimStats); + + // immediately write changes in debug +#if DEBUG + ClientStatSvc.SaveChanges(); + ServerStatsSvc.SaveChanges(); +#endif } /// @@ -195,10 +209,9 @@ namespace StatsPlugin.Helpers UpdateStats(attackerStats); attackerStats.Client = null; - // immediately write changes in debug -#if DEBUG - ClientStatSvc.SaveChanges(); -#endif + // update after calculation + attackerStats.LastActive = DateTime.UtcNow; + victimStats.LastActive = DateTime.UtcNow; } /// @@ -208,44 +221,83 @@ namespace StatsPlugin.Helpers /// private EFClientStatistics UpdateStats(EFClientStatistics clientStats) { - // if it's their first kill we need to set the last kill as the time they joined - clientStats.LastStatCalculation = (clientStats.LastStatCalculation == DateTime.MinValue) ? DateTime.UtcNow : clientStats.LastStatCalculation; double timeSinceLastCalc = (DateTime.UtcNow - clientStats.LastStatCalculation).TotalSeconds / 60.0; + double timeSinceLastActive = (DateTime.UtcNow - clientStats.LastActive).TotalSeconds / 60.0; - // each 'session' is one minute - if (timeSinceLastCalc >= 1) - { - Log.WriteDebug($"Updated stats for {clientStats.ClientId} ({clientStats.SessionKills})"); - // calculate the players Score Per Minute for the current session - // todo: score should be based on gamemode - double killSPM = clientStats.SessionKills * 100.0; + // prevent NaN or inactive time lowering SPM + if (timeSinceLastCalc == 0 || timeSinceLastActive > 3) + return clientStats; - // calculate how much the KDR should weigh - // 1.637 is a Eddie-Generated number that weights the KDR nicely - double KDRWeight = Math.Round(Math.Pow(clientStats.KDR, 1.637 / Math.E), 3); + // calculate the players Score Per Minute for the current session + int currentScore = Manager.GetActiveClients() + .First(c => c.ClientId == clientStats.ClientId) + .Score; + double killSPM = currentScore / (timeSinceLastCalc * 60.0); - // if no SPM, weight is 1 else the weight ishe current session's spm / lifetime average score per minute - double SPMWeightAgainstAverage = (clientStats.SPM < 1) ? 1 : killSPM / clientStats.SPM; + // calculate how much the KDR should weigh + // 1.637 is a Eddie-Generated number that weights the KDR nicely + double KDRWeight = Math.Round(Math.Pow(clientStats.KDR, 1.637 / Math.E), 3); - // calculate the weight of the new play time against last 10 hours of gameplay - int totalConnectionTime = (clientStats.Client.TotalConnectionTime == 0) ? - (int)(DateTime.UtcNow - clientStats.Client.FirstConnection).TotalSeconds : - clientStats.Client.TotalConnectionTime + (int)(DateTime.UtcNow - clientStats.Client.LastConnection).TotalSeconds; + // if no SPM, weight is 1 else the weight ishe current session's spm / lifetime average score per minute + double SPMWeightAgainstAverage = (clientStats.SPM < 1) ? 1 : killSPM / clientStats.SPM; - double SPMAgainstPlayWeight = timeSinceLastCalc / Math.Min(600, (totalConnectionTime / 60.0)); + // calculate the weight of the new play time against last 10 hours of gameplay + int totalConnectionTime = (clientStats.Client.TotalConnectionTime == 0) ? + (int)(DateTime.UtcNow - clientStats.Client.FirstConnection).TotalSeconds : + clientStats.Client.TotalConnectionTime + (int)(DateTime.UtcNow - clientStats.Client.LastConnection).TotalSeconds; - // calculate the new weight against average times the weight against play time - clientStats.SPM = (killSPM * SPMAgainstPlayWeight) + (clientStats.SPM * (1 - SPMAgainstPlayWeight)); - clientStats.SPM = Math.Round(clientStats.SPM, 3); - clientStats.Skill = Math.Round((clientStats.SPM * KDRWeight) / 10.0, 3); + double SPMAgainstPlayWeight = timeSinceLastCalc / Math.Min(600, (totalConnectionTime / 60.0)); - clientStats.SessionKills = 0; - clientStats.SessionDeaths = 0; + // calculate the new weight against average times the weight against play time + clientStats.SPM = (killSPM * SPMAgainstPlayWeight) + (clientStats.SPM * (1 - SPMAgainstPlayWeight)); + clientStats.SPM = Math.Round(clientStats.SPM, 3); + clientStats.Skill = Math.Round((clientStats.SPM * KDRWeight), 3); - clientStats.LastStatCalculation = DateTime.UtcNow; - } + clientStats.LastStatCalculation = DateTime.UtcNow; + clientStats.LastScore = currentScore; return clientStats; } + + public void InitializeServerStats(Server sv) + { + int serverId = sv.GetHashCode(); + var serverStats = ServerStatsSvc.Find(s => s.ServerId == serverId).FirstOrDefault(); + if (serverStats == null) + { + Log.WriteDebug($"Initializing server stats for {sv}"); + // server stats have never been generated before + serverStats = new EFServerStatistics() + { + Active = true, + ServerId = serverId, + TotalKills = 0, + TotalPlayTime = 0, + }; + + var ieClientStats = ClientStatSvc.Find(cs => cs.ServerId == serverId); + + // set these incase they've we've imported settings + serverStats.TotalKills = ieClientStats.Sum(cs => cs.Kills); + serverStats.TotalPlayTime = Manager.GetClientService().GetTotalPlayTime().Result; + + ServerStatsSvc.Insert(serverStats); + } + } + + public async Task Sync() + { + Log.WriteDebug("Syncing server stats"); + await ServerStatsSvc.SaveChangesAsync(); + + Log.WriteDebug("Syncing client stats"); + await ClientStatSvc.SaveChangesAsync(); + + Log.WriteDebug("Syncing kill stats"); + await KillStatsSvc.SaveChangesAsync(); + + Log.WriteDebug("Syncing servers"); + await ServerSvc.SaveChangesAsync(); + } } } diff --git a/Plugins/SimpleStats/Helpers/StreakMessage.cs b/Plugins/SimpleStats/Helpers/StreakMessage.cs new file mode 100644 index 000000000..0bc04b9e6 --- /dev/null +++ b/Plugins/SimpleStats/Helpers/StreakMessage.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StatsPlugin.Helpers +{ + public class StreakMessage + { + public static string MessageOnStreak(int killStreak, int deathStreak) + { + String Message = ""; + switch (killStreak) + { + case 5: + Message = "Great job! You're on a ^55 killstreak!"; + break; + case 10: + Message = "Amazing! ^510 kills ^7without dying!"; + break; + } + + switch (deathStreak) + { + case 5: + Message = "Pick it up soldier, you've died ^55 times ^7in a row..."; + break; + case 10: + Message = "Seriously? ^510 deaths ^7without getting a kill?"; + break; + } + + return Message; + } + } +} diff --git a/Plugins/SimpleStats/IW4Info.cs b/Plugins/SimpleStats/IW4Info.cs index 7d40cfefb..76fa08823 100644 --- a/Plugins/SimpleStats/IW4Info.cs +++ b/Plugins/SimpleStats/IW4Info.cs @@ -1333,7 +1333,8 @@ namespace StatsPlugin ak74u_silencer_thermal_mp, ak74u_silencer_xmags_mp, ak74u_thermal_xmags_mp, - m40a3_mp = 1194, + m16_reflex_silencer_mp, + m40a3_mp, peacekeeper_mp, dragunov_mp, cobra_player_minigun_mp diff --git a/Plugins/SimpleStats/Models/EFClientStatistics.cs b/Plugins/SimpleStats/Models/EFClientStatistics.cs index f514af24b..bf264e562 100644 --- a/Plugins/SimpleStats/Models/EFClientStatistics.cs +++ b/Plugins/SimpleStats/Models/EFClientStatistics.cs @@ -45,5 +45,9 @@ namespace StatsPlugin.Models public int DeathStreak { get; set; } [NotMapped] public DateTime LastStatCalculation { get; set; } + [NotMapped] + public int LastScore { get; set; } + [NotMapped] + public DateTime LastActive { get; set; } } } diff --git a/Plugins/SimpleStats/Models/EFServerStatistics.cs b/Plugins/SimpleStats/Models/EFServerStatistics.cs new file mode 100644 index 000000000..1dc9fc62b --- /dev/null +++ b/Plugins/SimpleStats/Models/EFServerStatistics.cs @@ -0,0 +1,17 @@ +using SharedLibrary.Database.Models; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace StatsPlugin.Models +{ + public class EFServerStatistics : SharedEntity + { + [Key] + public int StatisticId { get; set; } + public int ServerId { get; set; } + [ForeignKey("ServerId")] + public virtual EFServer Server { get; set; } + public long TotalKills { get; set; } + public long TotalPlayTime { get; set; } + } +} diff --git a/Plugins/SimpleStats/Plugin.cs b/Plugins/SimpleStats/Plugin.cs index b043c670c..412571cce 100644 --- a/Plugins/SimpleStats/Plugin.cs +++ b/Plugins/SimpleStats/Plugin.cs @@ -5,8 +5,11 @@ using System.Text; using System.Threading.Tasks; using SharedLibrary; +using SharedLibrary.Helpers; using SharedLibrary.Interfaces; +using SharedLibrary.Services; using StatsPlugin.Helpers; +using StatsPlugin.Models; namespace StatsPlugin { @@ -40,6 +43,7 @@ namespace StatsPlugin case Event.GType.MapChange: break; case Event.GType.MapEnd: + await Manager.Sync(); break; case Event.GType.Broadcast: break; @@ -71,6 +75,27 @@ namespace StatsPlugin public Task OnLoadAsync(IManager manager) { + /* + * + ManagerInstance.GetMessageTokens().Add(new MessageToken("TOTALKILLS", GetTotalKills)); + ManagerInstance.GetMessageTokens().Add(new MessageToken("TOTALPLAYTIME", GetTotalPlaytime)); +*/ + string totalKills() + { + var serverStats = new GenericRepository(); + return serverStats.GetQuery(s => s.Active) + .Sum(c => c.TotalKills).ToString(); + } + + string totalPlayTime() + { + var serverStats = new GenericRepository(); + return serverStats.GetQuery(s => s.Active) + .Sum(c => c.TotalPlayTime).ToString(); + } + + manager.GetMessageTokens().Add(new MessageToken("TOTALKILLS", totalKills)); + manager.GetMessageTokens().Add(new MessageToken("TOTALPLAYTIME", totalPlayTime)); return Task.FromResult( Manager = new StatManager(manager) ); diff --git a/Plugins/SimpleStats/StatsPlugin.csproj b/Plugins/SimpleStats/StatsPlugin.csproj index 2e964951d..f86f7e4cb 100644 --- a/Plugins/SimpleStats/StatsPlugin.csproj +++ b/Plugins/SimpleStats/StatsPlugin.csproj @@ -72,11 +72,13 @@ + + diff --git a/SharedLibrary/Commands/NativeCommands.cs b/SharedLibrary/Commands/NativeCommands.cs index 1cc29c833..c306e0653 100644 --- a/SharedLibrary/Commands/NativeCommands.cs +++ b/SharedLibrary/Commands/NativeCommands.cs @@ -744,7 +744,7 @@ namespace SharedLibrary.Commands E.Data = E.Data.RemoveWords(1); E.Owner.Reports.Add(new Report(E.Target, E.Origin, E.Data)); - await E.Origin.Tell($"Thank you for your report, and administrator has been notified"); + await E.Origin.Tell($"Thank you for your report, an administrator has been notified"); await E.Owner.ExecuteEvent(new Event(Event.GType.Report, E.Data, E.Origin, E.Target, E.Owner)); await E.Owner.ToAdmins(String.Format("^5{0}^7->^1{1}^7: {2}", E.Origin.Name, E.Target.Name, E.Data)); } diff --git a/SharedLibrary/Objects/Player.cs b/SharedLibrary/Objects/Player.cs index d6edb3bd7..74355b9c4 100644 --- a/SharedLibrary/Objects/Player.cs +++ b/SharedLibrary/Objects/Player.cs @@ -73,6 +73,8 @@ namespace SharedLibrary.Objects public DateTime ConnectionTime { get; set; } [NotMapped] public Server CurrentServer { get; set; } + [NotMapped] + public int Score { get; set; } private string _ipaddress; public override string IPAddress diff --git a/SharedLibrary/RCON.cs b/SharedLibrary/RCON.cs index 2780fc50e..c1b7f8b52 100644 --- a/SharedLibrary/RCON.cs +++ b/SharedLibrary/RCON.cs @@ -26,8 +26,8 @@ namespace SharedLibrary.Network static string[] SendQuery(QueryType Type, Server QueryServer, string Parameters = "") { - if ((DateTime.Now - LastQuery).TotalMilliseconds < 100) - Task.Delay(100).Wait(); + if ((DateTime.Now - LastQuery).TotalMilliseconds < 300) + Task.Delay(300).Wait(); LastQuery = DateTime.Now; var ServerOOBConnection = new UdpClient(); ServerOOBConnection.Client.SendTimeout = 1000; diff --git a/SharedLibrary/Services/ClientService.cs b/SharedLibrary/Services/ClientService.cs index b024525db..cdf08f2ad 100644 --- a/SharedLibrary/Services/ClientService.cs +++ b/SharedLibrary/Services/ClientService.cs @@ -233,6 +233,12 @@ namespace SharedLibrary.Services { throw new NotImplementedException(); } + + public async Task GetTotalPlayTime() + { + using (var context = new DatabaseContext()) + return await context.Clients.SumAsync(c => c.TotalConnectionTime); + } #endregion } } diff --git a/SharedLibrary/Utilities.cs b/SharedLibrary/Utilities.cs index 7d77e58c7..96427cf14 100644 --- a/SharedLibrary/Utilities.cs +++ b/SharedLibrary/Utilities.cs @@ -62,7 +62,9 @@ namespace SharedLibrary int.TryParse(playerInfo[0], out cID); var regex = Regex.Match(responseLine, @"\d+\.\d+\.\d+.\d+\:\d{1,5}"); string cIP = regex.Value.Split(':')[0]; - Player P = new Player() { Name = cName, NetworkId = npID, ClientNumber = cID, IPAddress = cIP, Ping = Ping }; + regex = Regex.Match(responseLine, @"[0-9]{1,2}\s+[0-9]+\s+"); + int score = Int32.Parse(regex.Value.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)[1]); + Player P = new Player() { Name = cName, NetworkId = npID, ClientNumber = cID, IPAddress = cIP, Ping = Ping, Score = score}; StatusPlayers.Add(P); } }