From c066adc0200f4df147cacbe77ab270ded30a2a4e Mon Sep 17 00:00:00 2001 From: INSANEMODE Date: Fri, 5 Mar 2021 02:04:18 -0600 Subject: [PATCH] make sure target isn't null --- ClanTagRankCommands.csproj | 2 +- Commands/ResetRankCommand.cs | 14 ++++-- Commands/SetRankCommand.cs | 56 +++++++++++---------- Configuration.cs | 2 +- Plugin.cs | 97 +++++++++++++++++++++++++----------- 5 files changed, 109 insertions(+), 62 deletions(-) diff --git a/ClanTagRankCommands.csproj b/ClanTagRankCommands.csproj index e5bca04..5348bdd 100644 --- a/ClanTagRankCommands.csproj +++ b/ClanTagRankCommands.csproj @@ -10,7 +10,7 @@ - + diff --git a/Commands/ResetRankCommand.cs b/Commands/ResetRankCommand.cs index 260dc81..e8470c2 100644 --- a/Commands/ResetRankCommand.cs +++ b/Commands/ResetRankCommand.cs @@ -51,10 +51,16 @@ namespace ClanTagRankApi.Commands { //var S = E.Owner; rank_string = "none"; - 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); - await E.Owner.ExecuteCommandAsync("setclantag" + " " + E.Target.ClientNumber + " " + rank_string); + if(E.Target is object) + { + 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) + await E.Owner.ExecuteCommandAsync("setclantag" + " " + E.Target.ClientNumber + " " + rank_string); + + } + } } } diff --git a/Commands/SetRankCommand.cs b/Commands/SetRankCommand.cs index cb9f4e8..fa381b5 100644 --- a/Commands/SetRankCommand.cs +++ b/Commands/SetRankCommand.cs @@ -55,41 +55,45 @@ namespace ClanTagRankApi.Commands rank_string = "none"; if (E.Data != null) rank_string = E.Data; - var rank_player_var = await _metaService.GetPersistentMeta(rank, E.Target); - if (rank_player_var == null) + if(E.Target is object) { - 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") + var rank_player_var = await _metaService.GetPersistentMeta(rank, E.Target); + if (rank_player_var == null) { - - //E.Origin.Tell(E.Target.Name + "'s rank has been reset"); - rank_string = E.Target.Level.ClanTag(Config); - E.Origin.Tell(E.Target.Name + "'s rank has been reset to: " + rank_string); - + 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(E.Target.Name + "'s rank has been reset to: " + rank_string); + + } + + else + { + rank_string = rank_player_var.Value; + E.Origin.Tell("New rank set: [" + rank_player_var.Value + "]" + E.Target.Name); + + } + } else { - rank_string = rank_player_var.Value; - E.Origin.Tell("New rank set: [" + rank_player_var.Value + "]" + E.Target.Name); - + E.Origin.Tell($"invalid rank length (between 1-8 characters), set rank to none, or use !ResetRank to reset"); } - } - else - { - 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) + await E.Owner.ExecuteCommandAsync("setclantag" + " " + E.Target.ClientNumber + " " + rank_string); } - - await E.Owner.ExecuteCommandAsync("setclantag" + " " + E.Target.ClientNumber + " " + rank_string); } } } diff --git a/Configuration.cs b/Configuration.cs index 7212314..ce91c79 100644 --- a/Configuration.cs +++ b/Configuration.cs @@ -22,7 +22,7 @@ namespace ClanTagRankApi { //this.RestartTimerLength = Utilities.PromptInt("How long in seconds until a server is killed after it is empty?", (string)null, 60, 86400, new int?(43200)); this.WARNING = "Do Not Exceed 8 characters, names will be truncated."; - this.User = "User"; + this.User = ""; this.Trusted = "Trusted"; this.Moderator = "Mod"; this.Admin = "Admin"; diff --git a/Plugin.cs b/Plugin.cs index 03cbb03..98cbba6 100644 --- a/Plugin.cs +++ b/Plugin.cs @@ -53,39 +53,16 @@ namespace ClanTagRankApi { if (E.Type == GameEvent.EventType.Join ||E.Type == GameEvent.EventType.ChangePermission) { - Thread.Sleep(1000); - 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) + if(E.Origin.IsIngame && E.Origin is object) { - await _metaService.AddPersistentMeta("rank", "none", E.Origin); + 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.Value.Contains("none")) && !(rank_player_var.Value.Contains("None")) && !(rank_player_var.Value.Contains("NONE"))) - { - rankName = rank_player_var.Value; - - } - - await S.ExecuteCommandAsync("setclantag" + " " + E.Origin.ClientNumber + " " + rankName); - } - if (E.Type == GameEvent.EventType.Start || E.Type == GameEvent.EventType.MapEnd || E.Type == GameEvent.EventType.MapChange) - { - Thread.Sleep(1000); - IList currentclients = E.Owner.Manager.GetActiveClients(); - foreach(EFClient client in currentclients) - { - var rank_player_var = await _metaService.GetPersistentMeta(rank, client); - rankName = client.Level.ClanTag(Config); - - rank_player_var = await _metaService.GetPersistentMeta("rank", client); if (rank_player_var == null) { - await _metaService.AddPersistentMeta("rank", "none", client); - rank_player_var = await _metaService.GetPersistentMeta("rank", client); + 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"))) @@ -93,8 +70,37 @@ namespace ClanTagRankApi rankName = rank_player_var.Value; } + if (E.Origin.IsIngame && E.Origin is object) + await S.ExecuteCommandAsync("setclantag" + " " + E.Origin.ClientNumber + " " + rankName); + } + + } + if (E.Type == GameEvent.EventType.Start || E.Type == GameEvent.EventType.MapEnd || E.Type == GameEvent.EventType.MapChange) + { + IList currentclients = E.Owner.Manager.GetActiveClients(); + foreach(EFClient client in currentclients) + { + if (client.IsIngame && client is object) + { + var rank_player_var = await _metaService.GetPersistentMeta("rank", client); + rankName = client.Level.ClanTag(Config); + + rank_player_var = await _metaService.GetPersistentMeta("rank", client); + if (rank_player_var == null) + { + await _metaService.AddPersistentMeta("rank", "none", client); + rank_player_var = await _metaService.GetPersistentMeta("rank", client); + } + + 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 (client.IsIngame && client is object) + await S.ExecuteCommandAsync("setclantag" + " " + client.ClientNumber + " " + rankName); + } - await S.ExecuteCommandAsync("setclantag" + " " + client.ClientNumber + " " + rankName); } @@ -110,6 +116,37 @@ namespace ClanTagRankApi public Task OnUnloadAsync() => Task.CompletedTask; + public Task notifyYADB(string message, string title, string reason, string icon, Server S, EFClient OriginClient, EFClient TargetClient) + { + string json = ""; + using (var stream = new System.IO.MemoryStream()) + { + using (var writer = new System.Text.Json.Utf8JsonWriter(stream)) + { + writer.WriteStartObject(); + writer.WriteString("title", title); + writer.WriteString("message", message); + writer.WriteString("reason", reason); + writer.WriteString("icon", icon); + writer.WriteEndObject(); + } + json = System.Text.Encoding.UTF8.GetString(stream.ToArray()); + } + var e = new GameEvent() + { + Origin = OriginClient, + Target = TargetClient, + Owner = S, + Type = GameEvent.EventType.Other, + Subtype = "YADB-Embed", + Extra = json + }; + + S.ExecuteEvent(e); + return Task.CompletedTask; + + //notifyYADB("Kicked player @{target} after a successful vote started from @{origin}", $"Vote kicked {target.Name}", gameEvent.Data,":pencil:", Server, origin, target); + } } }