diff --git a/Application/RconParsers/BaseRConParser.cs b/Application/RconParsers/BaseRConParser.cs index ceba6021..0b3ecf3b 100644 --- a/Application/RconParsers/BaseRConParser.cs +++ b/Application/RconParsers/BaseRConParser.cs @@ -14,6 +14,8 @@ namespace IW4MAdmin.Application.RconParsers { public class BaseRConParser : IRConParser { + private const int MAX_FAULTY_STATUS_LINES = 7; + public BaseRConParser(IParserRegexFactory parserRegexFactory) { Configuration = new DynamicRConParserConfiguration(parserRegexFactory) @@ -207,7 +209,7 @@ namespace IW4MAdmin.Application.RconParsers } // this happens if status is requested while map is rotating - if (Status.Length > 5 && validMatches == 0) + if (Status.Length > MAX_FAULTY_STATUS_LINES && validMatches == 0) { throw new ServerException(Utilities.CurrentLocalization.LocalizationIndex["SERVER_ERROR_ROTATING_MAP"]); } diff --git a/Plugins/LiveRadar/Plugin.cs b/Plugins/LiveRadar/Plugin.cs index ed16cc8f..872ee587 100644 --- a/Plugins/LiveRadar/Plugin.cs +++ b/Plugins/LiveRadar/Plugin.cs @@ -60,7 +60,10 @@ namespace LiveRadar await _configurationHandler.Save(); } - manager.GetPageList().Pages.Add(Utilities.CurrentLocalization.LocalizationIndex["WEBFRONT_RADAR_TITLE"], "/Radar/All"); + if (manager.GetServers().Any(_server => _server.GameName == Server.Game.IW4)) + { + manager.GetPageList().Pages.Add(Utilities.CurrentLocalization.LocalizationIndex["WEBFRONT_RADAR_TITLE"], "/Radar/All"); + } } public Task OnTickAsync(Server S) diff --git a/Plugins/ScriptPlugins/ParserPIW5.js b/Plugins/ScriptPlugins/ParserPIW5.js new file mode 100644 index 00000000..e0e19928 --- /dev/null +++ b/Plugins/ScriptPlugins/ParserPIW5.js @@ -0,0 +1,49 @@ +var rconParser; +var eventParser; + +var plugin = { + author: 'RaidMax', + version: 0.1, + name: 'Plutonium IW5 Parser', + isParser: true, + + onEventAsync: function (gameEvent, server) { + }, + + onLoadAsync: function (manager) { + rconParser = manager.GenerateDynamicRConParser(this.name); + eventParser = manager.GenerateDynamicEventParser(this.name); + + rconParser.Configuration.CommandPrefixes.Tell = 'tell {0} {1}'; + rconParser.Configuration.CommandPrefixes.Say = 'say {0}'; + rconParser.Configuration.CommandPrefixes.Kick = 'clientkick {0} "{1}"'; + rconParser.Configuration.CommandPrefixes.Ban = 'clientkick {0} "{1}"'; + rconParser.Configuration.CommandPrefixes.TempBan = 'clientkick {0} "{1}"'; + rconParser.Configuration.CommandPrefixes.RConGetDvar = '\xff\xff\xff\xffrcon {0} get {1}'; + + rconParser.Configuration.Dvar.Pattern = '^received "(.+)"\n(.+) is "(.+)?"'; + rconParser.Configuration.Dvar.AddMapping(106, 2); + rconParser.Configuration.Dvar.AddMapping(107, 3); + rconParser.Configuration.WaitForResponse = false; + rconParser.Configuration.CanGenerateLogPath = false; + + rconParser.Configuration.Status.Pattern = '^ *([0-9]+) +([0-9]+) +(?:[0-1]{1}) +([0-9]+) +([A-F0-9]+) +(.+?) +(?:[0-9]+) +(\\d+\\.\\d+\\.\\d+\\.\\d+\\:-?\\d{1,5}|0+\\.0+:-?\\d{1,5}|loopback) +(?:-?[0-9]+) +(?:[0-9]+) *$'; + rconParser.Configuration.Status.AddMapping(100, 1); + rconParser.Configuration.Status.AddMapping(101, 2); + rconParser.Configuration.Status.AddMapping(102, 3); + rconParser.Configuration.Status.AddMapping(103, 4); + rconParser.Configuration.Status.AddMapping(104, 5); + rconParser.Configuration.Status.AddMapping(105, 6); + + rconParser.Version = 'IW5 MP 1.9 build 388110 Fri Sep 14 00:04:28 2012 win-x86'; + rconParser.GameName = 3; // T5 + eventParser.Version = 'IW5 MP 1.9 build 388110 Fri Sep 14 00:04:28 2012 win-x86'; + eventParser.GameName = 3; // T5 + }, + + onUnloadAsync: function () { + }, + + onTickAsync: function (server) { + } +}; \ No newline at end of file