diff --git a/Application/RConParsers/BaseRConParser.cs b/Application/RConParsers/BaseRConParser.cs index 62e6f76e..c94a5adb 100644 --- a/Application/RConParsers/BaseRConParser.cs +++ b/Application/RConParsers/BaseRConParser.cs @@ -176,16 +176,16 @@ namespace IW4MAdmin.Application.RConParsers return new StatusResponse { Clients = ClientsFromStatus(response).ToArray(), - Map = GetValueFromStatus(response, ParserRegex.GroupType.RConStatusMap, Configuration.MapStatus.Pattern), - GameType = GetValueFromStatus(response, ParserRegex.GroupType.RConStatusGametype, Configuration.GametypeStatus.Pattern), - Hostname = GetValueFromStatus(response, ParserRegex.GroupType.RConStatusHostname, Configuration.HostnameStatus.Pattern), - MaxClients = GetValueFromStatus(response, ParserRegex.GroupType.RConStatusMaxPlayers, Configuration.MaxPlayersStatus.Pattern) + Map = GetValueFromStatus(response, ParserRegex.GroupType.RConStatusMap, Configuration.MapStatus), + GameType = GetValueFromStatus(response, ParserRegex.GroupType.RConStatusGametype, Configuration.GametypeStatus), + Hostname = GetValueFromStatus(response, ParserRegex.GroupType.RConStatusHostname, Configuration.HostnameStatus), + MaxClients = GetValueFromStatus(response, ParserRegex.GroupType.RConStatusMaxPlayers, Configuration.MaxPlayersStatus) }; } - private T GetValueFromStatus(IEnumerable response, ParserRegex.GroupType groupType, string groupPattern) + private T GetValueFromStatus(IEnumerable response, ParserRegex.GroupType groupType, ParserRegex parserRegex) { - if (string.IsNullOrEmpty(groupPattern)) + if (string.IsNullOrEmpty(parserRegex.Pattern)) { return default; } @@ -193,10 +193,10 @@ namespace IW4MAdmin.Application.RConParsers string value = null; foreach (var line in response) { - var regex = Regex.Match(line, groupPattern); - if (regex.Success) + var regex = Regex.Match(line, parserRegex.Pattern); + if (regex.Success && parserRegex.GroupMapping.ContainsKey(groupType)) { - value = regex.Groups[Configuration.MapStatus.GroupMapping[groupType]].ToString(); + value = regex.Groups[parserRegex.GroupMapping[groupType]].ToString(); } } diff --git a/Plugins/ScriptPlugins/ParserT7.js b/Plugins/ScriptPlugins/ParserT7.js index c009856d..21ea874e 100644 --- a/Plugins/ScriptPlugins/ParserT7.js +++ b/Plugins/ScriptPlugins/ParserT7.js @@ -15,7 +15,7 @@ var plugin = { eventParser = manager.GenerateDynamicEventParser(this.name); rconParser.Configuration.Status.Pattern = '^ *([0-9]+) +-?([0-9]+) +((?:[A-Z]+|[0-9]+)) +((?:[a-z]|[0-9]){8,32}|(?:[a-z]|[0-9]){8,32}|bot[0-9]+|(?:[0-9]+)) *(.{0,32}) +(\\d+\\.\\d+\\.\\d+.\\d+\\:-*\\d{1,5}|0+.0+:-*\\d{1,5}|loopback|unknown)(?:\\([0-9]+\\)) +(-*[0-9]+) *$'; - rconParser.Configuration.StatusHeader.Pattern = 'num +score +ping +xuid +name +address +qport'; + rconParser.Configuration.StatusHeader.Pattern = 'num +score +ping +xuid +name +address +qport|---------- Live ----------'; rconParser.Configuration.CommandPrefixes.Kick = 'clientkick {0}'; rconParser.Configuration.CommandPrefixes.Ban = 'clientkick {0}'; rconParser.Configuration.CommandPrefixes.TempBan = 'tempbanclient {0}';