diff --git a/Plugin.cs b/Plugin.cs index 1776368..db9fd5f 100644 --- a/Plugin.cs +++ b/Plugin.cs @@ -29,8 +29,6 @@ namespace ClanTagRankCommands public class Plugin : IPluginV2 { - //private const string ProfanityKey = "_profanityInfringements"; - //private readonly IConfigurationHandler _configurationHandler; private readonly ILogger _logger; //private ClanTagConfiguration Config; //readonly string rank = "rank"; @@ -60,13 +58,25 @@ namespace ClanTagRankCommands { IManagementEventSubscriptions.Load += OnLoad; + IManagementEventSubscriptions.Unload += OnUnloadAsync; IGameEventSubscriptions.ScriptEventTriggered += OnScriptEvent; + _remoteCommandService = remoteCommandService; _logger = logger; _metaService = metaService; - //_configurationHandler = (IConfigurationHandler)configurationHandlerFactory.GetConfigurationHandler("ClanTagRankCommands"); _interactionRegistration = interactionRegistration; DataManager = new DataManager(metaService, logger); + IManagementEventSubscriptions.ClientStateDisposed += async (clientEvent, token) => + { + if ((clientEvent.Client.CurrentServer.Hostname.Contains("Donator") || clientEvent.Client.CurrentServer.Hostname.Contains("Test")) && clientEvent.Client.Tag == "Guest") + { + Console.WriteLine("Guest disconnected, removing guest tag."); + _logger.LogInformation("Guest disconnected, removing guest tag."); + clientEvent.Client.Tag = null; + await _metaService.RemovePersistentMeta(EFMeta.ClientTagV2, clientEvent.Client.ClientId, + token); + } + }; } public static void RegisterDependencies(IServiceCollection serviceCollection) { @@ -75,12 +85,7 @@ namespace ClanTagRankCommands } private Task OnLoad(IManager manager, CancellationToken token) { - //if (_configurationHandler.Configuration() == null) - //{ - // _configurationHandler.Set((ClanTagConfiguration)new ClanTagConfiguration().Generate()); - // _configurationHandler.Save(); - //} - //Config = _configurationHandler.Configuration(); + string version = manager.Version; string str = string.Format("Loaded {0} ({1}) by {2} in {3} ({4})!", (object)((IPluginV2)this).Name, (object)((IPluginV2)this).Version, (object)((IPluginV2)this).Author, (object)"IW4MAdmin", (object)version); _logger.LogInformation(str); @@ -236,7 +241,7 @@ namespace ClanTagRankCommands SharedLibraryCore.Database.Models.EFClient efClient = (SharedLibraryCore.Database.Models.EFClient)null; string rule = ScriptBan.Owner.Manager.GetApplicationSettings().Configuration().GlobalRules.Where(rule => rule.Contains("hate")).FirstOrDefault().ToString(); efClient = ScriptBan.Owner.GetClientsAsList().First((Func)(_client => _client.NetworkId == ScriptBan.Target.NetworkId)); - efClient.Ban($"Profanity filter Racism match - {rule}", sender, false); + efClient.Ban($"Profanity filter Racism match - -{rule}", sender, false); //ScriptBan.Owner.Ban("Blatent racism match", ScriptBan.Target., sender); @@ -250,32 +255,56 @@ namespace ClanTagRankCommands return Task.CompletedTask; } + //public async Task OnDisconnect(GameEvent E, Server S)// => Task.CompletedTask; + //{ + // if (E.Type == GameEventV2.EventType.Disconnect && (S.Hostname.Contains("Donator") || S.Hostname.Contains("Test")) && E.Origin.Tag == "Guest") + // { + // Console.WriteLine("Guest disconnected, removing guest tag."); + // _logger.LogInformation("Guest disconnected, removing guest tag."); + // E.Origin.Tag = null; + // await _metaService.RemovePersistentMeta(EFMeta.ClientTagV2, E.Origin.ClientId, + // E.Owner.Manager.CancellationToken); + // } + // else if (E.Type == GameEventV2.EventType.Other && (S.Hostname.Contains("Donator") || S.Hostname.Contains("Test")) && E.Origin.Tag == "Guest") + // { + // Console.WriteLine("Guest triggered event of type Other, removing guest tag."); + // _logger.LogInformation("Guest triggered event of type Other, removing guest tag."); + // E.Origin.Tag = null; + // await _metaService.RemovePersistentMeta(EFMeta.ClientTagV2, E.Origin.ClientId, + // E.Owner.Manager.CancellationToken); + // } - public async Task OnEventAsync(GameEvent E, Server S)// => Task.CompletedTask; - { - if (E.Type == GameEvent.EventType.Disconnect && (S.Hostname.Contains("Donator") || S.Hostname.Contains("Test")) && E.Origin.Tag == "Guest") - { - E.Origin.Tag = null; - await _metaService.RemovePersistentMeta(EFMeta.ClientTagV2, E.Origin.ClientId, - E.Owner.Manager.CancellationToken); - } - else if (E.Type == GameEvent.EventType.Other && (S.Hostname.Contains("Donator") || S.Hostname.Contains("Test")) && E.Origin.Tag == "Guest") - { - E.Origin.Tag = null; - await _metaService.RemovePersistentMeta(EFMeta.ClientTagV2, E.Origin.ClientId, - E.Owner.Manager.CancellationToken); - } + + //} + //public async Task OnEventAsync(GameEventV2 E, Server S)// => Task.CompletedTask; + //{ + // if (E.Type == GameEventV2.EventType.Disconnect && (S.Hostname.Contains("Donator") || S.Hostname.Contains("Test")) && E.Origin.Tag == "Guest") + // { + // Console.WriteLine("Guest disconnected, removing guest tag."); + // _logger.LogInformation("Guest disconnected, removing guest tag."); + // E.Origin.Tag = null; + // await _metaService.RemovePersistentMeta(EFMeta.ClientTagV2, E.Origin.ClientId, + // E.Owner.Manager.CancellationToken); + // } + // else if (E.Type == GameEventV2.EventType.Other && (S.Hostname.Contains("Donator") || S.Hostname.Contains("Test")) && E.Origin.Tag == "Guest") + // { + // Console.WriteLine("Guest triggered event of type Other, removing guest tag."); + // _logger.LogInformation("Guest triggered event of type Other, removing guest tag."); + // E.Origin.Tag = null; + // await _metaService.RemovePersistentMeta(EFMeta.ClientTagV2, E.Origin.ClientId, + // E.Owner.Manager.CancellationToken); + // } - } - public Task OnTickAsync(Server S)// => - { + //} + //public Task OnTickAsync(Server S)// => + //{ - return Task.CompletedTask; + // return Task.CompletedTask; - } + //} - public Task OnUnloadAsync() //=> + private Task OnUnloadAsync(IManager manager, CancellationToken token) //=> { _interactionRegistration.UnregisterInteraction(DonatorInteraction); @@ -283,7 +312,6 @@ namespace ClanTagRankCommands return Task.CompletedTask; } - } public static class yadb {