From 8fb23941306bd4b5028db6129951a6116edf2375 Mon Sep 17 00:00:00 2001 From: RaidMax Date: Sat, 11 Apr 2020 18:05:18 -0500 Subject: [PATCH] support for Plutonium IW5 and only show live radar tab if monitoring at least one IW4 serves --- Application/RconParsers/BaseRConParser.cs | 4 +- Plugins/LiveRadar/Plugin.cs | 5 ++- Plugins/ScriptPlugins/ParserPIW5.js | 49 +++++++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 Plugins/ScriptPlugins/ParserPIW5.js diff --git a/Application/RconParsers/BaseRConParser.cs b/Application/RconParsers/BaseRConParser.cs index ceba60215..0b3ecf3bb 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 ed16cc8f0..872ee587b 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 000000000..e0e199286 --- /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