From 774ef20bb40f307be76b5e5e5c8ad14bcdfa025a Mon Sep 17 00:00:00 2001 From: Sanae Date: Tue, 31 May 2022 16:02:12 -0600 Subject: [PATCH] Multiple users on commands --- Server/Program.cs | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/Server/Program.cs b/Server/Program.cs index b0083c9..921af12 100644 --- a/Server/Program.cs +++ b/Server/Program.cs @@ -1,6 +1,7 @@ using System.Collections.Concurrent; using System.Net; using System.Numerics; +using System.Text; using Server; using Shared; using Shared.Packet.Packets; @@ -141,16 +142,25 @@ server.PacketHandler = (c, p) => { }; CommandHandler.RegisterCommand("rejoin", args => { - if (server.Clients.SingleOrDefault(c => c.Connected && args[0] == c.Name) is { } user) { + bool moreThanOne = false; + StringBuilder builder = new StringBuilder(); + foreach (Client user in server.Clients.Where(c => c.Connected && args.Contains(c.Name))) { + if (moreThanOne) builder.Append(", "); + builder.Append(user.Name); user.Dispose(); - return $"Kicked {user.Name}, use \"crash\" if you want to crash the user"; + moreThanOne = true; } - return "Usage: kick "; + return moreThanOne ? $"Caused {builder} to rejoin" : "Usage: rejoin "; }); CommandHandler.RegisterCommand("crash", args => { - if (server.Clients.SingleOrDefault(c => c.Connected && args[0] == c.Name) is { } user) { + bool moreThanOne = false; + StringBuilder builder = new StringBuilder(); + foreach (Client user in server.Clients.Where(c => c.Connected && args.Contains(c.Name))) { + if (moreThanOne) builder.Append(", "); + moreThanOne = true; + builder.Append(user.Name); Task.Run(async () => { await user.Send(new ChangeStagePacket { Id = "$among$us/SubArea", @@ -160,14 +170,18 @@ CommandHandler.RegisterCommand("crash", args => { }); user.Dispose(); }); - return $"Crashed {user.Name}"; } - return "Usage: crash "; + return moreThanOne ? $"Crashed {builder}" : "Usage: crash "; }); CommandHandler.RegisterCommand("ban", args => { - if (server.Clients.SingleOrDefault(c => c.Connected && args[0] == c.Name) is { } user) { + bool moreThanOne = false; + StringBuilder builder = new StringBuilder(); + foreach (Client user in server.Clients.Where(c => c.Connected && args.Contains(c.Name))) { + if (moreThanOne) builder.Append(", "); + moreThanOne = true; + builder.Append(user.Name); Task.Run(async () => { await user.Send(new ChangeStagePacket { Id = "$agogus/banned4lyfe", @@ -180,9 +194,12 @@ CommandHandler.RegisterCommand("ban", args => { if (endpoint != null) Settings.Instance.BanList.IpAddresses.Add(endpoint.ToString()); user.Dispose(); }); - return $"Crashed {user.Name}"; } + if (moreThanOne) { + Settings.SaveSettings(); + return $"Banned {builder}."; + } return "Usage: crash "; });