Помогите Отменить отправку сообщения

olol321

Нестандартное звание
5 (100%)
22 Июн 2023
528
3
115
193
23
Как я могу отловить BasePlayer.ChatMessage() и отменить его отправку, есть какие то хуки для этого или еще что то?
 
Да, в игре Rust есть возможность отлавливать и изменять сообщения, отправляемые игроками, с помощью хуков. Вот пример кода, который позволит вам отловить сообщение, отправленное игроком, и отменить его отправку:

C#:
using Oxide.Core;
using Oxide.Core.Plugins;
using Rust;

namespace YourPluginNamespace
{
    [Info("YourPluginName", "YourName", "1.0.0")]
    class YourPluginName : RustPlugin
    {
        void Loaded()
        {
            permission.RegisterPermission("yourpluginname.blockchat", this);
        }

        void Unload()
        {
            permission.UnregisterPermission("yourpluginname.blockchat");
        }

        [ChatCommand("blockchat")]
        void BlockChatCommand(BasePlayer player, string command, string[] args)
        {
            if (!permission.UserHasPermission(player.UserIDString, "yourpluginname.blockchat"))
            {
                SendReply(player, "You don't have permission to use this command!");
                return;
            }

            if (args.Length == 0)
            {
                SendReply(player, "Usage: /blockchat <on|off>");
                return;
            }

            if (args[0].ToLower() == "on")
            {
                Subscribe(nameof(OnPlayerChat));
                SendReply(player, "Chat blocking enabled.");
            }
            else if (args[0].ToLower() == "off")
            {
                Unsubscribe(nameof(OnPlayerChat));
                SendReply(player, "Chat blocking disabled.");
            }
            else
            {
                SendReply(player, "Usage: /blockchat <on|off>");
            }
        }

        void OnPlayerChat(BasePlayer player, string message, Chat.ChatChannel channel)
        {
            if (permission.UserHasPermission(player.UserIDString, "yourpluginname.blockchat"))
            {
                Puts($"Blocked chat message from {player.displayName}: {message}");
                player.ChatMessage("Your chat message was blocked.");
                // Performing additional actions with the blocked message
                // ...
                // To allow the message to be sent, remove the following line
                return;
            }
        }
    }
}

В этом примере реализована команда "/blockchat", которая позволяет игроку включать и выключать блокировку чата. Если блокировка включена, все сообщения, отправленные игроком, будут отменены. Вы можете изменить или расширить этот пример под свои нужды.

Обратите внимание, что для работы этого кода вам понадобится установить и настроить плагин Oxide для вашего сервера Rust.
 
Да, в игре Rust есть возможность отлавливать и изменять сообщения, отправляемые игроками, с помощью хуков. Вот пример кода, который позволит вам отловить сообщение, отправленное игроком, и отменить его отправку:

C#:
using Oxide.Core;
using Oxide.Core.Plugins;
using Rust;

namespace YourPluginNamespace
{
    [Info("YourPluginName", "YourName", "1.0.0")]
    class YourPluginName : RustPlugin
    {
        void Loaded()
        {
            permission.RegisterPermission("yourpluginname.blockchat", this);
        }

        void Unload()
        {
            permission.UnregisterPermission("yourpluginname.blockchat");
        }

        [ChatCommand("blockchat")]
        void BlockChatCommand(BasePlayer player, string command, string[] args)
        {
            if (!permission.UserHasPermission(player.UserIDString, "yourpluginname.blockchat"))
            {
                SendReply(player, "You don't have permission to use this command!");
                return;
            }

            if (args.Length == 0)
            {
                SendReply(player, "Usage: /blockchat <on|off>");
                return;
            }

            if (args[0].ToLower() == "on")
            {
                Subscribe(nameof(OnPlayerChat));
                SendReply(player, "Chat blocking enabled.");
            }
            else if (args[0].ToLower() == "off")
            {
                Unsubscribe(nameof(OnPlayerChat));
                SendReply(player, "Chat blocking disabled.");
            }
            else
            {
                SendReply(player, "Usage: /blockchat <on|off>");
            }
        }

        void OnPlayerChat(BasePlayer player, string message, Chat.ChatChannel channel)
        {
            if (permission.UserHasPermission(player.UserIDString, "yourpluginname.blockchat"))
            {
                Puts($"Blocked chat message from {player.displayName}: {message}");
                player.ChatMessage("Your chat message was blocked.");
                // Performing additional actions with the blocked message
                // ...
                // To allow the message to be sent, remove the following line
                return;
            }
        }
    }
}

В этом примере реализована команда "/blockchat", которая позволяет игроку включать и выключать блокировку чата. Если блокировка включена, все сообщения, отправленные игроком, будут отменены. Вы можете изменить или расширить этот пример под свои нужды.

Обратите внимание, что для работы этого кода вам понадобится установить и настроить плагин Oxide для вашего сервера Rust.
отменить отправку сообщений которые отправил скрипт, методом ChatMessage
 
отменить отправку сообщений которые отправил скрипт, методом ChatMessage
В игре Rust нельзя отменить отправку сообщений, которые отправляются скриптами с помощью метода ChatMessage. Когда сообщение отправляется с помощью этого метода, оно уже прошло проверку на сервере и готово к отправке всем игрокам, которые находятся в нужном диапазоне.
 
Активность
Пока никто не печатает сообщение