From 383835f82def640229eb2785ee3d005867113e34 Mon Sep 17 00:00:00 2001 From: PintTheDragon Date: Wed, 5 Aug 2020 17:13:17 -0700 Subject: [PATCH 1/8] Massive cleanup --- src/Buddy.cs | 24 +++--------- src/BuddyAcceptCommand.cs | 39 +++++++++----------- src/BuddyCommand.cs | 33 ++++++++--------- src/Config.cs | 29 +++++++++------ src/EventHandlers.cs | 78 ++++++++++++++++++--------------------- src/UnBuddyCommand.cs | 18 ++++----- 6 files changed, 100 insertions(+), 121 deletions(-) diff --git a/src/Buddy.cs b/src/Buddy.cs index 1b934c9..dcaa89b 100644 --- a/src/Buddy.cs +++ b/src/Buddy.cs @@ -33,11 +33,9 @@ public override void OnEnabled() { singleton = this; - this.setLang("BuddyMessage", this.getLang("BuddyMessage").Replace("$buddyCMD", "." + this.getLang("buddyCommand"))); - this.setLang("invalidUsage", this.getLang("invalidUsage").Replace("$buddyCMD", "." + this.getLang("buddyCommand"))); - this.setLang("buddyRequestAcceptMessage", this.getLang("buddyRequestAcceptMessage").Replace("$unBuddyCMD", "." + this.getLang("buddyUnbuddyCommand"))); - this.setLang("successMessage", this.getLang("successMessage").Replace("$unBuddyCMD", "." + this.getLang("buddyUnbuddyCommand"))); - EventHandlers = new EventHandlers(this); + Config.OnReload(); + + EventHandlers = new EventHandlers(); Exiled.Events.Handlers.Server.RoundStarted += EventHandlers.OnRoundStart; Exiled.Events.Handlers.Player.Joined += EventHandlers.OnPlayerJoin; Exiled.Events.Handlers.Server.RestartingRound += EventHandlers.OnRoundRestart; @@ -48,10 +46,12 @@ public override void OnEnabled() public override void OnReloaded() { + Config.OnReload(); + base.OnReloaded(); } - public void removePerson(string userID) + public void RemovePerson(string userID) { try { @@ -66,17 +66,5 @@ public void removePerson(string userID) } catch (ArgumentException) { } } - - public string getLang(string key) - { - string outVal = ""; - if (!Config.Messages.TryGetValue(key, out outVal)) return ""; - return outVal; - } - - public void setLang(string key, string value) - { - Config.Messages[key] = value; - } } } diff --git a/src/BuddyAcceptCommand.cs b/src/BuddyAcceptCommand.cs index 831cfb4..8817f67 100644 --- a/src/BuddyAcceptCommand.cs +++ b/src/BuddyAcceptCommand.cs @@ -9,7 +9,7 @@ namespace Buddy [CommandHandler(typeof(ClientCommandHandler))] class BuddyAcceptCommand : ICommand { - public string Command => Buddy.singleton.getLang("buddyAcceptCommand"); + public string Command => Buddy.singleton.Config.GetLang("buddyAcceptCommand"); public string[] Aliases => null; @@ -18,26 +18,25 @@ class BuddyAcceptCommand : ICommand public bool Execute(ArraySegment arguments, ICommandSender sender, out string response) { response = ""; - string[] args = arguments.ToArray(); if (sender is PlayerCommandSender) { Player player = Player.Get(((CommandSender)sender).SenderId); - response = handleBuddyAcceptCommand(player, new string[] { }); + response = HandleBuddyAcceptCommand(player); return true; } return true; } - private string handleBuddyAcceptCommand(Player p, string[] args) + private string HandleBuddyAcceptCommand(Player p) { //checks if (!Buddy.singleton.buddyRequests.ContainsKey(p.UserId)) { - return Buddy.singleton.getLang("noBuddyRequestsMessage"); + return Buddy.singleton.Config.GetLang("noBuddyRequestsMessage"); } //set the buddy - Player buddy = null; + Player buddy; try { Buddy.singleton.buddyRequests.TryGetValue(p.UserId, out buddy); @@ -45,39 +44,35 @@ private string handleBuddyAcceptCommand(Player p, string[] args) catch (ArgumentNullException e) { Log.Error(e.ToString()); - return Buddy.singleton.getLang("errorMessage"); + return Buddy.singleton.Config.GetLang("errorMessage"); } if (buddy == null) { Buddy.singleton.buddies.Remove(p.UserId); - Buddy.singleton.removePerson(p.UserId); - return Buddy.singleton.getLang("errorMessage"); - + Buddy.singleton.RemovePerson(p.UserId); + return Buddy.singleton.Config.GetLang("errorMessage"); } try { if (Buddy.singleton.buddies.ContainsKey(p.UserId)) { - string refh = null; - Buddy.singleton.buddies.TryGetValue(p.UserId, out refh); - if (refh != null) Buddy.singleton.buddies.Remove(refh); - else Buddy.singleton.removePerson(p.UserId); Buddy.singleton.buddies.Remove(p.UserId); + Buddy.singleton.RemovePerson(p.UserId); } } catch (ArgumentNullException e) { - Log.Error(e.ToString()); - return Buddy.singleton.getLang("errorMessage"); + Log.Error(e); + return Buddy.singleton.Config.GetLang("errorMessage"); } - Buddy.singleton.buddies.Add(p.UserId, buddy.UserId); - Buddy.singleton.buddies.Add(buddy.UserId, p.UserId); + Buddy.singleton.buddies[p.UserId] = buddy.UserId; + Buddy.singleton.buddies[buddy.UserId] = p.UserId; Buddy.singleton.buddyRequests.Remove(p.UserId); - buddy.SendConsoleMessage(Buddy.singleton.getLang("buddyRequestAcceptMessage").Replace("$name", p.Nickname), "yellow"); - if (Buddy.singleton.Config.sendBuddyAcceptedBroadcast) - buddy.Broadcast(5, Buddy.singleton.getLang("buddyRequestAcceptMessage").Replace("$name", p.Nickname), Broadcast.BroadcastFlags.Normal); - return Buddy.singleton.getLang("successMessage"); + buddy.SendConsoleMessage(Buddy.singleton.Config.GetLang("buddyRequestAcceptMessage").Replace("$name", p.Nickname), "yellow"); + if (Buddy.singleton.Config.SendBuddyAcceptedBroadcast) + buddy.Broadcast(5, Buddy.singleton.Config.GetLang("buddyRequestAcceptMessage").Replace("$name", p.Nickname), Broadcast.BroadcastFlags.Normal); + return Buddy.singleton.Config.GetLang("successMessage"); } } } diff --git a/src/BuddyCommand.cs b/src/BuddyCommand.cs index ab6dc15..6424f8a 100644 --- a/src/BuddyCommand.cs +++ b/src/BuddyCommand.cs @@ -9,7 +9,7 @@ namespace Buddy [CommandHandler(typeof(ClientCommandHandler))] class BuddyCommand : ICommand { - public string Command => Buddy.singleton.getLang("buddyCommand"); + public string Command => Buddy.singleton.Config.GetLang("buddyCommand"); public string[] Aliases => null; @@ -24,48 +24,47 @@ public bool Execute(ArraySegment arguments, ICommandSender sender, out s Player player = Player.Get(((CommandSender)sender).SenderId); if (args.Length != 1) { - response = Buddy.singleton.getLang("invalidUsage"); + response = Buddy.singleton.Config.GetLang("invalidUsage"); return true; } try { - response = handleBuddyCommand(player, args); + response = HandleBuddyCommand(player, args); return true; } catch (Exception e) { - Log.Error(e.ToString()); - response = Buddy.singleton.getLang("errorMessage"); + Log.Error(e); + response = Buddy.singleton.Config.GetLang("errorMessage"); } } return true; } - private string handleBuddyCommand(Player p, string[] args) + private string HandleBuddyCommand(Player p, string[] args) { //get the player who the request was sent to Player buddy = null; string lower = args[0].ToLower(); - foreach (Player hub in Player.List) + foreach (Player player in Player.List) { - if (hub == null) continue; - if (hub.ReferenceHub.nicknameSync.Network_myNickSync.ToLower().Contains(lower) && hub.UserId != p.UserId) + if (player == null) continue; + if (player.Nickname.ToLower().Contains(lower) && player.UserId != p.UserId) { - buddy = hub; + buddy = player; break; } } if (buddy == null) { - return Buddy.singleton.getLang("playerNotFoundMessage"); + return Buddy.singleton.Config.GetLang("playerNotFoundMessage"); } - if (Buddy.singleton.buddyRequests.ContainsKey(buddy.UserId)) Buddy.singleton.buddyRequests.Remove(buddy.UserId); - Buddy.singleton.buddyRequests.Add(buddy.UserId, p); - buddy.SendConsoleMessage(Buddy.singleton.getLang("BuddyMessagePrompt").Replace("$name", p.Nickname).Replace("$buddyAcceptCMD", "." + Buddy.singleton.getLang("buddyAcceptCommand")), "yellow"); - if (Buddy.singleton.Config.sendBuddyRequestBroadcast && !Round.IsStarted) - buddy.Broadcast(5, Buddy.singleton.getLang("broadcastBuddyRequest").Replace("$name", p.Nickname), Broadcast.BroadcastFlags.Normal); - return Buddy.singleton.getLang("buddyRequestSentMessage"); + Buddy.singleton.buddyRequests[buddy.UserId] = p; + buddy.SendConsoleMessage(Buddy.singleton.Config.GetLang("BuddyMessagePrompt").Replace("$name", p.Nickname), "yellow"); + if (Buddy.singleton.Config.SendBuddyRequestBroadcast && !Round.IsStarted) + buddy.Broadcast(5, Buddy.singleton.Config.GetLang("broadcastBuddyRequest").Replace("$name", p.Nickname), Broadcast.BroadcastFlags.Normal); + return Buddy.singleton.Config.GetLang("buddyRequestSentMessage"); } } } diff --git a/src/Config.cs b/src/Config.cs index 8a01555..0b35747 100644 --- a/src/Config.cs +++ b/src/Config.cs @@ -11,25 +11,25 @@ class Config : IConfig public bool IsEnabled { get; set; } = true; [Description("Makes a player the exact role as their buddy.")] - public bool forceExactRole { get; set; } = false; + public bool ForceExactRole { get; set; } = false; [Description("If true, buddies will never spawn in as a guard and scientist. Only both a guard or both a scientist.")] - public bool disallowGuardScientistCombo { get; set; } = true; + public bool DisallowGuardScientistCombo { get; set; } = true; [Description("Should buddies be reset every round.")] - public bool resetBuddiesEveryRound { get; set; } = true; + public bool ResetBuddiesEveryRound { get; set; } = true; [Description("Should a broadcast be sent be sent telling players how to use the plugin.")] - public bool sendInfoBroadcast { get; set; } = true; + public bool SendInfoBroadcast { get; set; } = true; [Description("Should a broadcast be sent be sent telling players who their buddy is..")] - public bool sendBuddyBroadcast { get; set; } = true; + public bool SendBuddyBroadcast { get; set; } = true; [Description("Should a broadcast be sent be sent to a player when someone requests to be their buddy.")] - public bool sendBuddyRequestBroadcast { get; set; } = true; + public bool SendBuddyRequestBroadcast { get; set; } = true; [Description("Should a broadcast be sent be sent telling players that their buddy request was accepted.")] - public bool sendBuddyAcceptedBroadcast { get; set; } = true; + public bool SendBuddyAcceptedBroadcast { get; set; } = true; [Description("Change the messages that Buddy sends to players.")] public Dictionary Messages { get; set; } = new Dictionary { @@ -54,10 +54,17 @@ class Config : IConfig public void OnReload() { - Buddy.singleton.setLang("BuddyMessage", Buddy.singleton.getLang("BuddyMessage").Replace("$buddyCMD", "." + Buddy.singleton.getLang("buddyCommand"))); - Buddy.singleton.setLang("invalidUsage", Buddy.singleton.getLang("invalidUsage").Replace("$buddyCMD", "." + Buddy.singleton.getLang("buddyCommand"))); - Buddy.singleton.setLang("buddyRequestAcceptMessage", Buddy.singleton.getLang("buddyRequestAcceptMessage").Replace("$unBuddyCMD", "." + Buddy.singleton.getLang("buddyUnbuddyCommand"))); - Buddy.singleton.setLang("successMessage", Buddy.singleton.getLang("successMessage").Replace("$unBuddyCMD", "." + Buddy.singleton.getLang("buddyUnbuddyCommand"))); + this.Messages["BuddyMessage"] = this.GetLang("BuddyMessage").Replace("$buddyCMD", "." + this.GetLang("buddyCommand")); + this.Messages["invalidUsage"] = this.GetLang("invalidUsage").Replace("$buddyCMD", "." + this.GetLang("buddyCommand")); + this.Messages["buddyRequestAcceptMessage"] = this.GetLang("buddyRequestAcceptMessage").Replace("$unBuddyCMD", "." + this.GetLang("buddyUnbuddyCommand")); + this.Messages["successMessage"] = this.GetLang("successMessage").Replace("$unBuddyCMD", "." + this.GetLang("buddyUnbuddyCommand")); + this.Messages["BuddyMessagePrompt"] = this.GetLang("BuddyMessagePrompt").Replace("$buddyAcceptCMD", "." + this.GetLang("buddyAcceptCommand")); + } + + public string GetLang(string key) + { + if (!this.Messages.TryGetValue(key, out string outVal)) return ""; + return outVal; } } } diff --git a/src/EventHandlers.cs b/src/EventHandlers.cs index 51f92e3..8c2f9e5 100644 --- a/src/EventHandlers.cs +++ b/src/EventHandlers.cs @@ -9,101 +9,95 @@ namespace Buddy { class EventHandlers { - public Buddy buddyPlugin; - public EventHandlers(Buddy plugin) => this.buddyPlugin = plugin; - - private RoleType[] tmpArr = { RoleType.Scp049, RoleType.Scp079, RoleType.Scp096, RoleType.Scp106, RoleType.Scp173, RoleType.Scp93953, RoleType.Scp93989 }; - private Random rnd = new Random(); + private readonly RoleType[] scpRoles = { RoleType.Scp049, RoleType.Scp079, RoleType.Scp096, RoleType.Scp106, RoleType.Scp173, RoleType.Scp93953, RoleType.Scp93989 }; + private readonly Random rnd = new Random(); public void OnPlayerJoin(JoinedEventArgs ev) { - Timing.RunCoroutine(sendJoinMessage(ev.Player)); - Timing.RunCoroutine(sendBroadcast(ev.Player)); + Timing.RunCoroutine(SendJoinMessage(ev.Player)); + Timing.RunCoroutine(SendBroadcast(ev.Player)); } - public IEnumerator sendJoinMessage(Player p) + public IEnumerator SendJoinMessage(Player p) { yield return Timing.WaitForSeconds(1f); - if (!buddyPlugin.buddies.ContainsKey(p.UserId)) + if (!Buddy.singleton.buddies.ContainsKey(p.UserId)) { - p.SendConsoleMessage(buddyPlugin.getLang("BuddyMessage"), "yellow"); + p.SendConsoleMessage(Buddy.singleton.Config.GetLang("BuddyMessage"), "yellow"); } else { - string buddy1 = null; - if (!buddyPlugin.buddies.TryGetValue(p.UserId, out buddy1) || buddy1 == null) + if (!Buddy.singleton.buddies.TryGetValue(p.UserId, out string buddy1) || buddy1 == null) { - buddyPlugin.buddies.Remove(p.UserId); - buddyPlugin.removePerson(p.UserId); + Buddy.singleton.buddies.Remove(p.UserId); + Buddy.singleton.RemovePerson(p.UserId); } else { Player player = Player.Get(buddy1); if (player == null) yield break; - p.SendConsoleMessage(buddyPlugin.getLang("broadcastBuddy").Replace("$buddy", player.Nickname), "yellow"); + p.SendConsoleMessage(Buddy.singleton.Config.GetLang("broadcastBuddy").Replace("$buddy", player.Nickname), "yellow"); } } } - private IEnumerator sendBroadcast(Player p) + private IEnumerator SendBroadcast(Player p) { yield return Timing.WaitForSeconds(2f); - if (!buddyPlugin.buddies.ContainsKey(p.UserId) && buddyPlugin.Config.sendInfoBroadcast) + if (!Buddy.singleton.buddies.ContainsKey(p.UserId) && Buddy.singleton.Config.SendInfoBroadcast) { - p.Broadcast(5, buddyPlugin.getLang("useBuddyCommandBroadcast"), Broadcast.BroadcastFlags.Normal); + p.Broadcast(5, Buddy.singleton.Config.GetLang("useBuddyCommandBroadcast"), Broadcast.BroadcastFlags.Normal); } - if (buddyPlugin.buddies.ContainsKey(p.UserId) && buddyPlugin.Config.sendBuddyBroadcast) + if (Buddy.singleton.buddies.ContainsKey(p.UserId) && Buddy.singleton.Config.SendBuddyBroadcast) { - string buddy1 = null; - if (!buddyPlugin.buddies.TryGetValue(p.UserId, out buddy1) || buddy1 == null) + if (!Buddy.singleton.buddies.TryGetValue(p.UserId, out string buddy1) || buddy1 == null) { - buddyPlugin.buddies.Remove(p.UserId); - buddyPlugin.removePerson(p.UserId); + Buddy.singleton.buddies.Remove(p.UserId); + Buddy.singleton.RemovePerson(p.UserId); } else { Player player = Player.Get(buddy1); if (player == null) yield break; - p.Broadcast(5, buddyPlugin.getLang("broadcastBuddy").Replace("$buddy", player.Nickname), Broadcast.BroadcastFlags.Normal); + p.Broadcast(5, Buddy.singleton.Config.GetLang("broadcastBuddy").Replace("$buddy", player.Nickname), Broadcast.BroadcastFlags.Normal); } } } public void OnRoundStart() { - Timing.RunCoroutine(setRoles()); + Timing.RunCoroutine(SetRoles()); } public void OnRoundRestart() { - if (buddyPlugin.Config.resetBuddiesEveryRound) - buddyPlugin.buddies = new Dictionary(); + if (Buddy.singleton.Config.ResetBuddiesEveryRound) + Buddy.singleton.buddies = new Dictionary(); } - private IEnumerator setRoles() + private IEnumerator SetRoles() { yield return Timing.WaitForSeconds(1f); List doneIDs = new List(); IEnumerable onlinePlayers = Player.List.Select(x => x.UserId); - IEnumerable hubs = buddyPlugin.buddies.Values; + IEnumerable hubs = Buddy.singleton.buddies.Values; for (int i = 0; i < hubs.Count(); i++) { string id = hubs.ElementAt(i); Player player = Player.Get(id); if (player == null) continue; //check if player has a buddy - if (buddyPlugin.buddies.ContainsKey(player.UserId)) + if (Buddy.singleton.buddies.ContainsKey(player.UserId)) { try { - string buddy1 = null; - if (!buddyPlugin.buddies.TryGetValue(player.UserId, out buddy1) || buddy1 == null || (!onlinePlayers.Contains(id) || !onlinePlayers.Contains(buddy1))) + if (!Buddy.singleton.buddies.TryGetValue(player.UserId, out string buddy1) || buddy1 == null || !onlinePlayers.Contains(id) || !onlinePlayers.Contains(buddy1)) { - buddyPlugin.buddies.Remove(id); - if (buddy1 != null) buddyPlugin.buddies.Remove(buddy1); - else buddyPlugin.removePerson(id); + Buddy.singleton.buddies.Remove(id); + if (buddy1 != null) Buddy.singleton.buddies.Remove(buddy1); + else Buddy.singleton.RemovePerson(id); doneIDs.Add(buddy1); doneIDs.Add(id); continue; @@ -114,14 +108,14 @@ private IEnumerator setRoles() //take action if they have different roles if (player.Role != buddy.Role && /* massive check for scientist/guard combo */ - !(!buddyPlugin.Config.disallowGuardScientistCombo && ((player.Role == RoleType.FacilityGuard && buddy.Role == RoleType.Scientist) || (player.Role == RoleType.Scientist && buddy.Role == RoleType.FacilityGuard))) + !(!Buddy.singleton.Config.DisallowGuardScientistCombo && ((player.Role == RoleType.FacilityGuard && buddy.Role == RoleType.Scientist) || (player.Role == RoleType.Scientist && buddy.Role == RoleType.FacilityGuard))) ) { //SCPs take priority if (buddy.Team == Team.SCP) continue; //if force exact role is on we can just set the buddy to the other player's role - if (buddyPlugin.Config.forceExactRole) + if (Buddy.singleton.Config.ForceExactRole) { buddy.SetRole(player.Role); doneIDs.Add(buddy1); @@ -137,7 +131,7 @@ private IEnumerator setRoles() { Player player1 = hub; //check if the player is an scp - if (player1.UserId != id && player1.UserId != buddy1 && !buddyPlugin.buddies.ContainsKey(player1.UserId) && player1.Team == Team.SCP) + if (player1.UserId != id && player1.UserId != buddy1 && !Buddy.singleton.buddies.ContainsKey(player1.UserId) && player1.Team == Team.SCP) { //set the buddy to that player's role and set the player to classd buddy.SetRole(player1.Role); @@ -151,7 +145,7 @@ private IEnumerator setRoles() //if their role is not set (their buddy is the sole scp), set them to a random scp if (!setRole) { - List roles = new List(tmpArr); + List roles = new List(scpRoles); roles.Remove(player.Role); buddy.SetRole(roles[rnd.Next(roles.Count)]); doneIDs.Add(buddy1); @@ -169,12 +163,12 @@ private IEnumerator setRoles() { try { - buddyPlugin.buddies.Remove(id); + Buddy.singleton.buddies.Remove(id); } catch (ArgumentException) { } - buddyPlugin.removePerson(id); + Buddy.singleton.RemovePerson(id); doneIDs.Add(id); - Log.Error(e.ToString()); + Log.Error(e); continue; } } diff --git a/src/UnBuddyCommand.cs b/src/UnBuddyCommand.cs index d6f6dbe..fe6d929 100644 --- a/src/UnBuddyCommand.cs +++ b/src/UnBuddyCommand.cs @@ -9,7 +9,7 @@ namespace Buddy [CommandHandler(typeof(ClientCommandHandler))] class UnBuddyCommand : ICommand { - public string Command => Buddy.singleton.getLang("buddyUnbuddyCommand"); + public string Command => Buddy.singleton.Config.GetLang("buddyUnbuddyCommand"); public string[] Aliases => null; @@ -18,35 +18,31 @@ class UnBuddyCommand : ICommand public bool Execute(ArraySegment arguments, ICommandSender sender, out string response) { response = ""; - string[] args = arguments.ToArray(); if (sender is PlayerCommandSender) { Player player = Player.Get(((CommandSender)sender).SenderId); - response = handleUnBuddyCommand(player); + response = HandleUnBuddyCommand(player); return true; } return true; } - private string handleUnBuddyCommand(Player p) + private string HandleUnBuddyCommand(Player p) { try { if (Buddy.singleton.buddies.ContainsKey(p.UserId)) { - string refh = null; - Buddy.singleton.buddies.TryGetValue(p.UserId, out refh); - if (refh != null) Buddy.singleton.buddies.Remove(refh); - else Buddy.singleton.removePerson(p.UserId); Buddy.singleton.buddies.Remove(p.UserId); + Buddy.singleton.RemovePerson(p.UserId); } } catch (ArgumentNullException e) { - Log.Error(e.ToString()); - return Buddy.singleton.getLang("errorMessage"); + Log.Error(e); + return Buddy.singleton.Config.GetLang("errorMessage"); } - return Buddy.singleton.getLang("unBuddySuccess"); + return Buddy.singleton.Config.GetLang("unBuddySuccess"); } } } From a1c0029a826b219f7f19acf9e95bd69939e330f8 Mon Sep 17 00:00:00 2001 From: PintTheDragon <64887885+PintTheDragon@users.noreply.github.com> Date: Wed, 5 Aug 2020 17:14:47 -0700 Subject: [PATCH 2/8] Update workflow for test --- .github/workflows/main.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0644c12..ff82bed 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -4,7 +4,9 @@ name: Build on: push: - branches: [ master ] + branches: + - master + - test jobs: build: From 4c114b72082909c0a0a9b1de3002d1658cd7bc86 Mon Sep 17 00:00:00 2001 From: PintTheDragon Date: Wed, 5 Aug 2020 17:26:00 -0700 Subject: [PATCH 3/8] Enhance variable support --- src/Config.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Config.cs b/src/Config.cs index 0b35747..808ca54 100644 --- a/src/Config.cs +++ b/src/Config.cs @@ -54,11 +54,11 @@ class Config : IConfig public void OnReload() { - this.Messages["BuddyMessage"] = this.GetLang("BuddyMessage").Replace("$buddyCMD", "." + this.GetLang("buddyCommand")); - this.Messages["invalidUsage"] = this.GetLang("invalidUsage").Replace("$buddyCMD", "." + this.GetLang("buddyCommand")); - this.Messages["buddyRequestAcceptMessage"] = this.GetLang("buddyRequestAcceptMessage").Replace("$unBuddyCMD", "." + this.GetLang("buddyUnbuddyCommand")); - this.Messages["successMessage"] = this.GetLang("successMessage").Replace("$unBuddyCMD", "." + this.GetLang("buddyUnbuddyCommand")); - this.Messages["BuddyMessagePrompt"] = this.GetLang("BuddyMessagePrompt").Replace("$buddyAcceptCMD", "." + this.GetLang("buddyAcceptCommand")); + foreach(string key in this.Messages.Keys) + { + if (key == "buddyCommand" || key == "buddyAcceptCommand" || key == "buddyUnbuddyCommand") continue; + this.Messages[key] = this.Messages[key].Replace("$buddyCMD", "." + this.GetLang("buddyCommand")).Replace("$buddyAcceptCMD", "." + this.GetLang("buddyAcceptCommand")).Replace("$unBuddyCMD", "." + this.GetLang("buddyUnbuddyCommand")); + } } public string GetLang(string key) From fd23ec74e6f0e26a76aa3b1c06d550ae828509d1 Mon Sep 17 00:00:00 2001 From: PintTheDragon Date: Wed, 5 Aug 2020 18:37:49 -0700 Subject: [PATCH 4/8] Add buddy instead of sending request if request was already sent --- src/Buddy.cs | 2 +- src/BuddyAcceptCommand.cs | 25 ++++++++++++++++++++----- src/BuddyCommand.cs | 14 ++++++++++++-- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/Buddy.cs b/src/Buddy.cs index dcaa89b..df93cc1 100644 --- a/src/Buddy.cs +++ b/src/Buddy.cs @@ -15,7 +15,7 @@ class Buddy : Plugin public Dictionary buddies = new Dictionary(); - public Dictionary buddyRequests = new Dictionary(); + public Dictionary> buddyRequests = new Dictionary>(); public static Buddy singleton; diff --git a/src/BuddyAcceptCommand.cs b/src/BuddyAcceptCommand.cs index 8817f67..a6f4717 100644 --- a/src/BuddyAcceptCommand.cs +++ b/src/BuddyAcceptCommand.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Linq; using CommandSystem; using Exiled.API.Features; @@ -21,13 +22,13 @@ public bool Execute(ArraySegment arguments, ICommandSender sender, out s if (sender is PlayerCommandSender) { Player player = Player.Get(((CommandSender)sender).SenderId); - response = HandleBuddyAcceptCommand(player); + response = HandleBuddyAcceptCommand(player, arguments.ToArray()); return true; } return true; } - private string HandleBuddyAcceptCommand(Player p) + private string HandleBuddyAcceptCommand(Player p, string[] args) { //checks if (!Buddy.singleton.buddyRequests.ContainsKey(p.UserId)) @@ -36,17 +37,31 @@ private string HandleBuddyAcceptCommand(Player p) } //set the buddy - Player buddy; + Player buddy = null; try { - Buddy.singleton.buddyRequests.TryGetValue(p.UserId, out buddy); + if (!Buddy.singleton.buddyRequests.TryGetValue(p.UserId, out List buddies) || buddies == null) return Buddy.singleton.Config.GetLang("errorMessage"); + if (args.Length != 1) buddy = buddies.Last(); + else + { + string lower = args[0].ToLower(); + foreach(Player player in buddies) + { + if (player == null) continue; + if (player.Nickname.ToLower().Contains(lower) && player.UserId != p.UserId) + { + buddy = player; + break; + } + } + } } catch (ArgumentNullException e) { Log.Error(e.ToString()); return Buddy.singleton.Config.GetLang("errorMessage"); } - if (buddy == null) + if (buddy == null || (buddy != null && Buddy.singleton.buddies.ContainsKey(buddy.UserId))) { Buddy.singleton.buddies.Remove(p.UserId); Buddy.singleton.RemovePerson(p.UserId); diff --git a/src/BuddyCommand.cs b/src/BuddyCommand.cs index 6424f8a..55e1672 100644 --- a/src/BuddyCommand.cs +++ b/src/BuddyCommand.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Linq; using CommandSystem; using Exiled.API.Features; @@ -59,8 +60,17 @@ private string HandleBuddyCommand(Player p, string[] args) { return Buddy.singleton.Config.GetLang("playerNotFoundMessage"); } - - Buddy.singleton.buddyRequests[buddy.UserId] = p; + if(Buddy.singleton.buddyRequests.TryGetValue(p.UserId, out List buddies) && buddies.Where((player) => player.UserId == buddy.UserId).Any() && !Buddy.singleton.buddies.ContainsKey(buddy.UserId)) + { + Buddy.singleton.buddies[p.UserId] = buddy.UserId; + Buddy.singleton.buddies[buddy.UserId] = p.UserId; + Buddy.singleton.buddyRequests.Remove(p.UserId); + buddy.SendConsoleMessage(Buddy.singleton.Config.GetLang("buddyRequestAcceptMessage").Replace("$name", p.Nickname), "yellow"); + if (Buddy.singleton.Config.SendBuddyAcceptedBroadcast) + buddy.Broadcast(5, Buddy.singleton.Config.GetLang("buddyRequestAcceptMessage").Replace("$name", p.Nickname), Broadcast.BroadcastFlags.Normal); + return Buddy.singleton.Config.GetLang("successMessage"); + } + Buddy.singleton.buddyRequests[buddy.UserId].Add(p); buddy.SendConsoleMessage(Buddy.singleton.Config.GetLang("BuddyMessagePrompt").Replace("$name", p.Nickname), "yellow"); if (Buddy.singleton.Config.SendBuddyRequestBroadcast && !Round.IsStarted) buddy.Broadcast(5, Buddy.singleton.Config.GetLang("broadcastBuddyRequest").Replace("$name", p.Nickname), Broadcast.BroadcastFlags.Normal); From 46899a65cfd00853815b5ade950dff142f331d11 Mon Sep 17 00:00:00 2001 From: PintTheDragon Date: Wed, 5 Aug 2020 18:44:26 -0700 Subject: [PATCH 5/8] Fixed error --- src/Config.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Config.cs b/src/Config.cs index 808ca54..34a70e6 100644 --- a/src/Config.cs +++ b/src/Config.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.ComponentModel; using Exiled.Events.EventArgs; +using System.Linq; namespace Buddy { @@ -54,7 +55,7 @@ class Config : IConfig public void OnReload() { - foreach(string key in this.Messages.Keys) + foreach(string key in this.Messages.Keys.ToList()) { if (key == "buddyCommand" || key == "buddyAcceptCommand" || key == "buddyUnbuddyCommand") continue; this.Messages[key] = this.Messages[key].Replace("$buddyCMD", "." + this.GetLang("buddyCommand")).Replace("$buddyAcceptCMD", "." + this.GetLang("buddyAcceptCommand")).Replace("$unBuddyCMD", "." + this.GetLang("buddyUnbuddyCommand")); From 9dfa13f38144424658616facf6401f672c5c45b9 Mon Sep 17 00:00:00 2001 From: PintTheDragon Date: Wed, 5 Aug 2020 19:08:34 -0700 Subject: [PATCH 6/8] Fixed another error --- src/BuddyCommand.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BuddyCommand.cs b/src/BuddyCommand.cs index 55e1672..9d2da3b 100644 --- a/src/BuddyCommand.cs +++ b/src/BuddyCommand.cs @@ -60,7 +60,7 @@ private string HandleBuddyCommand(Player p, string[] args) { return Buddy.singleton.Config.GetLang("playerNotFoundMessage"); } - if(Buddy.singleton.buddyRequests.TryGetValue(p.UserId, out List buddies) && buddies.Where((player) => player.UserId == buddy.UserId).Any() && !Buddy.singleton.buddies.ContainsKey(buddy.UserId)) + if(Buddy.singleton.buddyRequests.ContainsKey(p.UserId) && Buddy.singleton.buddyRequests.TryGetValue(p.UserId, out List buddies) && buddies.Where((player) => player.UserId == buddy.UserId).Any() && !Buddy.singleton.buddies.ContainsKey(buddy.UserId)) { Buddy.singleton.buddies[p.UserId] = buddy.UserId; Buddy.singleton.buddies[buddy.UserId] = p.UserId; From 973b1c6cbc3be935fb4ebb4fe386886769452099 Mon Sep 17 00:00:00 2001 From: PintTheDragon Date: Wed, 5 Aug 2020 20:11:34 -0700 Subject: [PATCH 7/8] Fixed another error --- src/BuddyCommand.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/BuddyCommand.cs b/src/BuddyCommand.cs index 9d2da3b..08dcf93 100644 --- a/src/BuddyCommand.cs +++ b/src/BuddyCommand.cs @@ -70,6 +70,7 @@ private string HandleBuddyCommand(Player p, string[] args) buddy.Broadcast(5, Buddy.singleton.Config.GetLang("buddyRequestAcceptMessage").Replace("$name", p.Nickname), Broadcast.BroadcastFlags.Normal); return Buddy.singleton.Config.GetLang("successMessage"); } + if (!Buddy.singleton.buddyRequests.ContainsKey(buddy.UserId)) Buddy.singleton.buddyRequests[buddy.UserId] = new List(); Buddy.singleton.buddyRequests[buddy.UserId].Add(p); buddy.SendConsoleMessage(Buddy.singleton.Config.GetLang("BuddyMessagePrompt").Replace("$name", p.Nickname), "yellow"); if (Buddy.singleton.Config.SendBuddyRequestBroadcast && !Round.IsStarted) From d126beb64d4694da71a614b81e695fc98b011454 Mon Sep 17 00:00:00 2001 From: PintTheDragon Date: Wed, 5 Aug 2020 20:23:00 -0700 Subject: [PATCH 8/8] Update to 1.2.2 --- src/Buddy.csproj | 20 ++++++++++---------- src/Properties/AssemblyInfo.cs | 4 ++-- src/packages.config | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Buddy.csproj b/src/Buddy.csproj index 3635213..d546dbf 100644 --- a/src/Buddy.csproj +++ b/src/Buddy.csproj @@ -53,20 +53,20 @@ False libs\CommandSystem.Core.dll - - ..\packages\EXILED.2.0.9\lib\net472\Exiled.API.dll + + ..\packages\EXILED.2.0.10\lib\net472\Exiled.API.dll - - ..\packages\EXILED.2.0.9\lib\net472\Exiled.Events.dll + + ..\packages\EXILED.2.0.10\lib\net472\Exiled.Events.dll - - ..\packages\EXILED.2.0.9\lib\net472\Exiled.Loader.dll + + ..\packages\EXILED.2.0.10\lib\net472\Exiled.Loader.dll - - ..\packages\EXILED.2.0.9\lib\net472\Exiled.Permissions.dll + + ..\packages\EXILED.2.0.10\lib\net472\Exiled.Permissions.dll - - ..\packages\EXILED.2.0.9\lib\net472\Exiled.Updater.dll + + ..\packages\EXILED.2.0.10\lib\net472\Exiled.Updater.dll diff --git a/src/Properties/AssemblyInfo.cs b/src/Properties/AssemblyInfo.cs index c920ecf..3b4893d 100644 --- a/src/Properties/AssemblyInfo.cs +++ b/src/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.1")] -[assembly: AssemblyFileVersion("1.2.1")] +[assembly: AssemblyVersion("1.2.2")] +[assembly: AssemblyFileVersion("1.2.2")] diff --git a/src/packages.config b/src/packages.config index 7e5c788..b2b0ea1 100644 --- a/src/packages.config +++ b/src/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file