From 0df0bde238c82013c11b02b2a924b3a65f1ec7fa Mon Sep 17 00:00:00 2001 From: INSANEMODE Date: Tue, 16 Aug 2022 01:15:58 -0500 Subject: [PATCH] update commands to make sure they address objects being null. --- ClanTagRankCommands.csproj | 4 +- Commands/GetRankCommand.cs | 94 ++++++++++++++++++++++++++++++++++++ Commands/PermaperkCommand.cs | 22 +++++++-- Commands/ResetRankCommand.cs | 20 ++++++-- Commands/SetRankCommand.cs | 20 ++++++-- Plugin.cs | 81 ++++++++++++++++++++----------- 6 files changed, 195 insertions(+), 46 deletions(-) create mode 100644 Commands/GetRankCommand.cs diff --git a/ClanTagRankCommands.csproj b/ClanTagRankCommands.csproj index 8b51261..752c993 100644 --- a/ClanTagRankCommands.csproj +++ b/ClanTagRankCommands.csproj @@ -2,11 +2,11 @@ Library - netcoreapp3.1 + net6.0 Debug;Release;Prerelease - 7.1 + 10 diff --git a/Commands/GetRankCommand.cs b/Commands/GetRankCommand.cs new file mode 100644 index 0000000..d6d1cf0 --- /dev/null +++ b/Commands/GetRankCommand.cs @@ -0,0 +1,94 @@ +using SharedLibraryCore; +using SharedLibraryCore.Commands; +using SharedLibraryCore.Configuration; +using SharedLibraryCore.Database.Models; +using SharedLibraryCore.Interfaces; +using System.Threading.Tasks; + + +namespace ClanTagRankCommands.Commands +{ + + /// + /// Example script command + /// + /// + + public class GetRankCommand : Command + { + readonly string rank = "rank"; + string rank_string; + private readonly IMetaService _metaService; + private readonly IConfigurationHandler _configurationHandler; + private Configuration Config; + + + public GetRankCommand(CommandConfiguration config, ITranslationLookup lookup, IMetaService metaService, IConfigurationHandlerFactory configurationHandlerFactory) : base(config, lookup) + { + _metaService = metaService; + _configurationHandler = configurationHandlerFactory.GetConfigurationHandler("ClanTagRankCommands"); + if (_configurationHandler.Configuration() == null) + { + _configurationHandler.Set((Configuration)new Configuration().Generate()); + _configurationHandler.Save(); + } + Config = _configurationHandler.Configuration(); + + Name = "GetRank"; + Description = "Get a user's clan tag Rank (does not give permissions)"; + Alias = "Gr"; + Permission = EFClient.Permission.Trusted; + RequiresTarget = true; + Arguments = new[] + { + new CommandArgument() + { + } + }; + + } + + public override async Task ExecuteAsync(GameEvent E) + { + //var S = E.Owner; + rank_string = "none"; + if(E.Target is not null) + { + var rank_player_var = await _metaService.GetPersistentMeta(rank, E.Target); + if (rank_player_var == null) + { + await _metaService.AddPersistentMeta(rank, "none", E.Target); + rank_player_var = await _metaService.GetPersistentMeta(rank, E.Target); + } + + if (rank_string.Length > 0 && rank_string.Length < 9) + { + + //await _metaService.AddPersistentMeta(rank, rank_string, E.Target); + rank_player_var = await _metaService.GetPersistentMeta(rank, E.Target); + if(rank_player_var.Value == "none" || rank_player_var.Value == "None" || rank_player_var.Value == "NONE") + { + + //E.Origin.Tell(E.Target.Name + "'s rank has been reset"); + rank_string = E.Target.Level.ClanTag(Config); + E.Origin.Tell("[" + rank_string + "]" + E.Target.Name ); + + } + + else + { + rank_string = rank_player_var.Value; + E.Origin.Tell("[" + rank_player_var.Value + "]" + E.Target.Name); + + } + } + + + + + + } + + } + } +} diff --git a/Commands/PermaperkCommand.cs b/Commands/PermaperkCommand.cs index a1821ea..bac88cf 100644 --- a/Commands/PermaperkCommand.cs +++ b/Commands/PermaperkCommand.cs @@ -5,6 +5,8 @@ using SharedLibraryCore.Database.Models; using SharedLibraryCore.Interfaces; using System.Threading.Tasks; using ClanTagRankCommands; +using System; +using System.Runtime; namespace ClanTagRankCommands.Commands { @@ -49,9 +51,9 @@ namespace ClanTagRankCommands.Commands await _metaService.AddPersistentMeta("speedtoggle", "0", E.Origin); speedtoggle = await _metaService.GetPersistentMeta("speedtoggle", E.Origin); } - await E.Owner.SetDvarAsync("sv_iw4madmin_options", "speedtoggle;" + E.Origin.ClientNumber.ToString() + ";" + speedtoggle.Value.ToString()); + //await E.Owner.SetDvarAsync("sv_iw4madmin_options", "speedtoggle;" + E.Origin.ClientNumber.ToString() + ";" + speedtoggle.Value.ToString()); - if (E.Origin.CurrentServer == E.Owner && E.Origin is object && E.Origin.ClientNumber != -1 && E.Origin.ClientNumber != 9) + if (E.Origin is not null && E.Origin.CurrentServer == E.Owner && E.Origin.ClientNumber != -1 && E.Origin.ClientNumber != 9) { var rank_player_var = await _metaService.GetPersistentMeta("rank", E.Origin); var rankName = E.Origin.Level.ClanTag(Config); @@ -69,10 +71,20 @@ namespace ClanTagRankCommands.Commands rankName = rank_player_var.Value; } - if (E.Origin.CurrentServer == E.Owner && E.Origin is object && E.Origin.ClientNumber != -1 && E.Origin.ClientNumber != 9)// && (E.Origin.Level > EFClient.Permission.Trusted || rankName != Config.User)) + if (E.Origin is not null && E.Origin.CurrentServer == E.Owner && E.Origin.ClientNumber != -1 && E.Origin.ClientNumber != 9)// && (E.Origin.Level > EFClient.Permission.Trusted || rankName != Config.User)) { - await E.Owner.ExecuteCommandAsync("setclantag" + " " + E.Origin.ClientNumber.ToString() + " " + rankName.ToString()); - await E.Owner.SetDvarAsync("sv_iw4madmin_role", "setRole;" + E.Origin.ClientNumber.ToString() + ";" + rankName.ToString()); + if(string.IsNullOrWhiteSpace(rankName)) + { + + } + else + { + await E.Owner.ExecuteCommandAsync("setclantag" + " " + E.Origin.ClientNumber.ToString() + " " + rankName.ToString()); + await E.Owner.ExecuteCommandAsync("setrole" + " " + E.Origin.ClientNumber.ToString() + " " + rankName.ToString()); + E.Origin.Tell("Setting permaperks"); + } + + //await E.Owner.SetDvarAsync("sv_iw4madmin_role", "setRole;" + E.Origin.ClientNumber.ToString() + ";" + rankName.ToString()); } } diff --git a/Commands/ResetRankCommand.cs b/Commands/ResetRankCommand.cs index c28a6e3..7bfec1d 100644 --- a/Commands/ResetRankCommand.cs +++ b/Commands/ResetRankCommand.cs @@ -51,16 +51,26 @@ namespace ClanTagRankCommands.Commands { //var S = E.Owner; rank_string = "none"; - if(E.Target is object) + if(E.Target is not null) { await _metaService.AddPersistentMeta(rank, rank_string, E.Target); rank_string = E.Target.Level.ClanTag(Config); E.Origin.Tell(E.Target.Name + "'s rank has been reset to: " + rank_string); - if (E.Target.IsIngame && E.Target is object) + if (E.Target is not null && E.Target.IsIngame ) { - await E.Owner.ExecuteCommandAsync("setclantag" + " " + E.Target.ClientNumber.ToString() + " " + rank_string.ToString()); - //await E.Owner.SetDvarAsync("sv_iw4madmin_role", "setRole;" + E.Target.ClientNumber.ToString() + ";" + rank_string.ToString()); - await E.Owner.ExecuteCommandAsync("setrole " + E.Target.ClientNumber.ToString() + " " + rank_string.ToString()); + if (string.IsNullOrWhiteSpace(rank_string)) + { + await E.Owner.ExecuteCommandAsync("resetclantag" + " " + E.Target.ClientNumber.ToString()); + + await E.Owner.ExecuteCommandAsync("resetrole " + E.Target.ClientNumber.ToString()); + + } + else + { + await E.Owner.ExecuteCommandAsync("setclantag" + " " + E.Target.ClientNumber.ToString() + " " + rank_string.ToString()); + //await E.Owner.SetDvarAsync("sv_iw4madmin_role", "setRole;" + E.Target.ClientNumber.ToString() + ";" + rank_string.ToString()); + await E.Owner.ExecuteCommandAsync("setrole " + E.Target.ClientNumber.ToString() + " " + rank_string.ToString()); + } } diff --git a/Commands/SetRankCommand.cs b/Commands/SetRankCommand.cs index b286b79..78c2762 100644 --- a/Commands/SetRankCommand.cs +++ b/Commands/SetRankCommand.cs @@ -55,7 +55,7 @@ namespace ClanTagRankCommands.Commands rank_string = "none"; if (E.Data != null) rank_string = E.Data; - if(E.Target is object) + if(E.Target is not null) { var rank_player_var = await _metaService.GetPersistentMeta(rank, E.Target); if (rank_player_var == null) @@ -90,11 +90,21 @@ namespace ClanTagRankCommands.Commands E.Origin.Tell($"invalid rank length (between 1-8 characters), set rank to none, or use !ResetRank to reset"); } - if(E.Target.IsIngame && E.Target is object) + if(E.Target is not null && E.Target.IsIngame) { - await E.Owner.ExecuteCommandAsync("setclantag" + " " + E.Target.ClientNumber.ToString() + " " + rank_string.ToString()); - //await E.Owner.SetDvarAsync("sv_iw4madmin_role", "setRole;" + E.Target.ClientNumber.ToString() + ";" + rank_string.ToString()); - await E.Owner.ExecuteCommandAsync("setrole " + E.Target.ClientNumber.ToString() + " " + rank_string.ToString()); + if (string.IsNullOrWhiteSpace(rank_string)) + { + await E.Owner.ExecuteCommandAsync("resetclantag" + " " + E.Target.ClientNumber.ToString()); + + await E.Owner.ExecuteCommandAsync("resetrole " + E.Target.ClientNumber.ToString()); + + } + else + { + await E.Owner.ExecuteCommandAsync("setclantag" + " " + E.Target.ClientNumber.ToString() + " " + rank_string.ToString()); + + await E.Owner.ExecuteCommandAsync("setrole " + E.Target.ClientNumber.ToString() + " " + rank_string.ToString()); + } } diff --git a/Plugin.cs b/Plugin.cs index 44e5858..fe6b568 100644 --- a/Plugin.cs +++ b/Plugin.cs @@ -59,7 +59,7 @@ namespace ClanTagRankCommands { //Console.WriteLine("RC: " + E.Origin.Name); - if (E.Origin.CurrentServer == S && E.Origin is object && E.Origin.ClientNumber != -1 && E.Origin.ClientNumber != 9) + if (E.Origin is not null && E.Origin.CurrentServer == S && E.Origin.ClientNumber != -1 && E.Origin.ClientNumber != 9) { var rank_player_var = await _metaService.GetPersistentMeta(rank, E.Origin); rankName = E.Origin.Level.ClanTag(Config); @@ -77,46 +77,69 @@ namespace ClanTagRankCommands rankName = rank_player_var.Value; } - if (E.Origin.CurrentServer == S && E.Origin is object && E.Origin.ClientNumber != -1 && E.Origin.ClientNumber != 9)// && (E.Origin.Level > EFClient.Permission.Trusted || rankName != Config.User)) + if (E.Origin is not null && E.Origin.CurrentServer == S && E.Origin.ClientNumber != -1 && E.Origin.ClientNumber != 9)// && (E.Origin.Level > EFClient.Permission.Trusted || rankName != Config.User)) { - await S.ExecuteCommandAsync("setclantag" + " " + E.Origin.ClientNumber.ToString() + " " + rankName.ToString()); - await S.ExecuteCommandAsync("setrole " + E.Origin.ClientNumber.ToString() + " " + rankName.ToString()); + if (string.IsNullOrWhiteSpace(rankName)) + { + //await S.ExecuteCommandAsync("resetclantag" + " " + E.Origin.ClientNumber.ToString()); + + //await S.ExecuteCommandAsync("resetrole " + E.Origin.ClientNumber.ToString()); + + } + else + { + await S.ExecuteCommandAsync("setclantag" + " " + E.Origin.ClientNumber.ToString() + " " + rankName.ToString()); + await S.ExecuteCommandAsync("setrole " + E.Origin.ClientNumber.ToString() + " " + rankName.ToString()); + } + //await S.SetDvarAsync("sv_iw4madmin_role", "setRole;" + E.Origin.ClientNumber.ToString() + ";" + rankName.ToString()); } } } - if ((E.Type == GameEvent.EventType.Connect)) - { - //Console.WriteLine("RC: " + E.Origin.Name); + //if ((E.Type == GameEvent.EventType.Connect)) + //{ + // //Console.WriteLine("RC: " + E.Origin.Name); - if (E.Origin.CurrentServer == S && E.Origin is object && E.Origin.ClientNumber != -1 && E.Origin.ClientNumber != 9) - { - var rank_player_var = await _metaService.GetPersistentMeta(rank, E.Origin); - rankName = E.Origin.Level.ClanTag(Config); + // if (E.Origin.CurrentServer == S && E.Origin is object && E.Origin.ClientNumber != -1 && E.Origin.ClientNumber != 9) + // { + // var rank_player_var = await _metaService.GetPersistentMeta(rank, E.Origin); + // rankName = E.Origin.Level.ClanTag(Config); - rank_player_var = await _metaService.GetPersistentMeta("rank", E.Origin); - if (rank_player_var == null) - { + // rank_player_var = await _metaService.GetPersistentMeta("rank", E.Origin); + // if (rank_player_var == null) + // { - await _metaService.AddPersistentMeta("rank", "none", E.Origin); - rank_player_var = await _metaService.GetPersistentMeta("rank", E.Origin); - } + // await _metaService.AddPersistentMeta("rank", "none", E.Origin); + // rank_player_var = await _metaService.GetPersistentMeta("rank", E.Origin); + // } - if (!(rank_player_var.Value.Contains("none")) && !(rank_player_var.Value.Contains("None")) && !(rank_player_var.Value.Contains("NONE"))) - { - rankName = rank_player_var.Value; + // if (!(rank_player_var.Value.Contains("none")) && !(rank_player_var.Value.Contains("None")) && !(rank_player_var.Value.Contains("NONE"))) + // { + // rankName = rank_player_var.Value; - } - if (E.Origin.CurrentServer == S && E.Origin is object && E.Origin.ClientNumber != -1 && E.Origin.ClientNumber != 9)// && (E.Origin.Level > EFClient.Permission.Trusted || rankName != Config.User)) - { - await S.ExecuteCommandAsync("setclantag" + " " + E.Origin.ClientNumber.ToString() + " " + rankName.ToString()); - await S.ExecuteCommandAsync("setrole " + E.Origin.ClientNumber.ToString() + " " + rankName.ToString()); - //await S.SetDvarAsync("sv_iw4madmin_role", "setRole;" + E.Origin.ClientNumber.ToString() + ";" + rankName.ToString()); - } - } + // } + // if (E.Origin.CurrentServer == S && E.Origin is object && E.Origin.ClientNumber != -1 && E.Origin.ClientNumber != 9)// && (E.Origin.Level > EFClient.Permission.Trusted || rankName != Config.User)) + // { + // if (string.IsNullOrWhiteSpace(rankName) || rankName.Length < 1) + // { + // //await S.ExecuteCommandAsync("resetclantag" + " " + E.Origin.ClientNumber.ToString()); - } + // //await S.ExecuteCommandAsync("resetrole " + E.Origin.ClientNumber.ToString()); + + // } + // else + // { + // await S.ExecuteCommandAsync("setclantag" + " " + E.Origin.ClientNumber.ToString() + " " + rankName.ToString()); + + // await S.ExecuteCommandAsync("setrole " + E.Origin.ClientNumber.ToString() + " " + rankName.ToString()); + // } + + // //await S.SetDvarAsync("sv_iw4madmin_role", "setRole;" + E.Origin.ClientNumber.ToString() + ";" + rankName.ToString()); + // } + // } + + //} //if ((E.Type == GameEvent.EventType.Other) && E.Subtype.Contains("YADB-Embed")) //{ // Console.WriteLine(E.Extra);