From f82eac3ffc364bd179a738e81747c202e33db2e1 Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Mon, 16 Aug 2021 16:59:48 -0400 Subject: [PATCH] Add chat commands for regular users --- CLre_server/CLre_server.cs | 3 ++ CLre_server/Tweaks/Chat/UserCommands.cs | 49 +++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 CLre_server/Tweaks/Chat/UserCommands.cs diff --git a/CLre_server/CLre_server.cs b/CLre_server/CLre_server.cs index 27c9375..43fadee 100644 --- a/CLre_server/CLre_server.cs +++ b/CLre_server/CLre_server.cs @@ -26,6 +26,8 @@ namespace CLre_server public static CLreConfig Config = CLreConfig.Default(); + public static CLre Instance = null; + // called when Cardlife shuts down public override void OnApplicationQuit() { @@ -37,6 +39,7 @@ namespace CLre_server // called when Cardlife starts up public override void OnApplicationStart() { + Instance = this; #if DEBUG FileLog.Reset(); Harmony.DEBUG = true; diff --git a/CLre_server/Tweaks/Chat/UserCommands.cs b/CLre_server/Tweaks/Chat/UserCommands.cs new file mode 100644 index 0000000..a166ce6 --- /dev/null +++ b/CLre_server/Tweaks/Chat/UserCommands.cs @@ -0,0 +1,49 @@ +using System.Text; +using System.Text.RegularExpressions; +using ExitGames.Client.Photon.Chat; + +namespace CLre_server.Tweaks.Chat +{ + public static class UserCommands + { + private const string HELP_STRING = "CLre chat commands:\n" + + "/echo - say \n" + + "/help - show this message\n" + + "/list - display online users\n" + + "/version - display version information\n\n" + + + "CLre moderation commands:\n" + + "/ban - permanently remove from this server\n" + + "/deop - revoke moderator permissions\n" + + "/kick - disconnect from this server\n" + + "/op - grant moderator permissions"; + + + + [ChatCommand("ONLINE", "(list|online)")] + public static void WhoIsOnline(Match messageMatch, ChatClient connection, string sender) + { + var players = API.MainServer.Server.Instance.Players; + StringBuilder sb = new StringBuilder($"Online Users ({players.Length}):\n"); + foreach (var p in players) + { + sb.AppendFormat("{0} ({1})\n", p.accountId.displayName, p.accountId.publicId); + } + + connection.PublishMessage(ChatListener.ChatName, sb.ToString().TrimEnd()); + } + + [ChatCommand("VERSION", "version")] + public static void CeleryVersion(Match messageMatch, ChatClient connection, string sender) + { + string versionStr = $"CLre {CLre.Instance.Version}\nCardLife {Game.Utilities.VersionReader.GetVersion()}\nUnity {UnityEngine.Application.version}"; + connection.PublishMessage(ChatListener.ChatName, versionStr); + } + + [ChatCommand("HELP", "help")] + public static void Halp(Match messageMatch, ChatClient connection, string sender) + { + connection.PublishMessage(ChatListener.ChatName, HELP_STRING); + } + } +} \ No newline at end of file