From c1fe88cd57df3e5e31725f52a6fd5a1946129c68 Mon Sep 17 00:00:00 2001 From: data-bomb Date: Wed, 4 Sep 2024 19:02:55 -0700 Subject: [PATCH] Leverage New Server Chat Feature - Adds SendChatMessageToAll method - Uses the server chat feature for chat messages rather than whoever is first player (i.e., Player[0]) --- Si_AdminMod/HelperMethods.cs | 29 ++++++++++++++++++++--------- Si_AdminMod/ModAttributes.cs | 2 +- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/Si_AdminMod/HelperMethods.cs b/Si_AdminMod/HelperMethods.cs index 893172f..c72aed2 100644 --- a/Si_AdminMod/HelperMethods.cs +++ b/Si_AdminMod/HelperMethods.cs @@ -98,10 +98,22 @@ public static void AlertAdminAction(Player? adminPlayer, string action) broadcastPlayer.SendChatMessage(chatPrefix + GetAdminColor() + adminName + " " + action, false); } - public static void SendChatMessageToTeam(Team team, params string[] messages) + public static void SendChatMessageToAll(params string[] messages) { - Player broadcastPlayer = FindBroadcastPlayer(team); + for (int i = 0; i < Player.Players.Count; i++) + { + Player? player = Player.Players[i]; + if (player == null) + { + continue; + } + + NetworkSendChat(player, false, messages); + } + } + public static void SendChatMessageToTeam(Team team, params string[] messages) + { for (int i = 0; i < Player.Players.Count; i++) { Player? player = Player.Players[i]; @@ -112,7 +124,7 @@ public static void SendChatMessageToTeam(Team team, params string[] messages) if (player.Team == team) { - NetworkSendChat(player, broadcastPlayer, messages); + NetworkSendChat(player, true, messages); } } } @@ -177,8 +189,7 @@ public static void SendChatMessageToPlayer(Player? player, params string[] messa return; } - Player broadcastPlayer = FindBroadcastPlayer(); - NetworkSendChat(player, broadcastPlayer, messages); + NetworkSendChat(player, true, messages); } public static void SendConsoleMessageToPlayer(Player? player, params string[] messages) { @@ -193,14 +204,14 @@ public static void SendConsoleMessageToPlayer(Player? player, params string[] me NetworkSendConsole(player, messages); } - private static void NetworkSendChat(Player recipient, Player sender, params string[] messages) + private static void NetworkSendChat(Player recipient, bool teamOnly, params string[] messages) { GameByteStreamWriter gameByteStreamWriter = GameByteStreamWriter.GetGameByteStreamWriter(0U, "Si_AdminMod::NetworkSendChat", true); gameByteStreamWriter.WriteByte((byte)ENetworkPacketType.ChatMessage); - gameByteStreamWriter.WriteUInt64((ulong)sender.PlayerID); - gameByteStreamWriter.WriteByte((byte)sender.PlayerChannel); + gameByteStreamWriter.WriteUInt64((ulong)NetworkID.CurrentUserID); + gameByteStreamWriter.WriteByte((byte)0); gameByteStreamWriter.WriteString(String.Concat(messages)); - gameByteStreamWriter.WriteBool(false); // teamOnly + gameByteStreamWriter.WriteBool(teamOnly); // teamOnly gameByteStreamWriter.WriteBool(true); // isServerMessage uint byteDataSize = (uint)gameByteStreamWriter.GetByteDataSize(); diff --git a/Si_AdminMod/ModAttributes.cs b/Si_AdminMod/ModAttributes.cs index b51b694..603667c 100644 --- a/Si_AdminMod/ModAttributes.cs +++ b/Si_AdminMod/ModAttributes.cs @@ -21,7 +21,7 @@ You should have received a copy of the GNU General Public License using SilicaAdminMod; using System.Drawing; -[assembly: MelonInfo(typeof(SiAdminMod), "Admin Mod", "2.0.943", "databomb", "https://github.com/data-bomb/Silica")] +[assembly: MelonInfo(typeof(SiAdminMod), "Admin Mod", "2.0.958", "databomb", "https://github.com/data-bomb/Silica")] [assembly: MelonGame("Bohemia Interactive", "Silica")] // Color.Cyan