• Друзья, на пополнения счёта добавлены новые платежные методы FreeKassa, ЮМани, Perfect Money, Cryptomus (все виды криптовалют)

ChatPlus

ПРИВАТНЫЙ ChatPlus 1.10.7

Автор
Vlad-00003
ChatPlus - Расширенная система управление чатом, разширение функционала чата, управление привелегиями.
Данный плагин является универсальным и будет работать на ВСЕХ играх, которые поддерживаются модификацией Oxide!
Возможности
  • Система личных сообщений.
  • Русская конфигурация
  • Антимат (будет ещё совершенствоваться и улучшаться).
  • Блокировка чата (система мута игроков, а так же мут общего чата, выдача по SteamID, список нецензурной лексики и слова исключения). Возможность заблокировать чат игроку, находящемуся в данный момент вне сети.
  • Цензура в чате
  • Система префиксов, цветных имён и сообщений. С возможностью для игроков выбирать из доступных им префиксов\цветов.
  • Расширенная система привилегий с очень гибкими настройками.
  • Режимы чата администратор и модератор.
  • Чёрный список для системы личных сообщений.
4857

Чат-команды
/chat prefix - доступные префиксы​
/chat name - доступные цвета имени​
/chat message - доступные цвета сообщений​
/chat censor - цензура в чате​
/chat ignore - управление черным списоком​
/chat ignore add - Добавить игрока в ЧС​
/chat ignore remove - Убрать игрока из ЧС​
/chat ignore list - Список заблокированых игроков​

/chat sound - звук при получении ЛС --Только игра RUST
/chat admin - режим администратора (необходима привилегия chatplus.adminmode)​
/chat moderator - режим модератора (необходима привилегия chatplus.moderatormode)​
/chat reset - Сбрасывает настройки чата для игрока​
/pm - написать ЛС - Работает так же из консоли в направлении игрока!
/r - ответить на последнее ЛС - Игрок, которому написал сервер может ответить на его сообщение через эту команду!
/mute - заблокировать чат игроку (необходима привилегия chatplus.mute)​
/unmute - разблокировать чат игроку (необходима привилегия chatplus.unmute)​
/muteall - заблокировать/разблокировать общий чат (необходима привилегия chatplus.muteall)​
/mutelist - выводит список игроков, у которых на данный момент активна блокировка чата (необходима привилегия chatplus.mute или chatplus.unmute)​
global.say (say) - команда, доступная из консоли сервера\игрока-администратора. Формат вывода можно настроить в файле конфигурации. --Только игра RUST
Пример работы команды global.say:say.jpg
Пример переписки через pm с консолью:PM1.jpg
PM2.jpg


Обработка сообщений из Rust+ и сообщений в чате команды:Chat preview.jpg

Дополнительно
  • Команды mute, unmute, muteall, mutelist можно использовать в консоли (только без / в начале). Так же есть возможность блокировки по SteamID (Пример: mute STEAMID 1d REASON)
  • Не удаляйте привилегию chatplus.default, без него плагин работать не будет.
  • После окончания времени привилегии у игрока (Пример: если выдано на неделю\месяц) настройки его чата сбрасываются к default
  • Для полной совместимости с Clans Reborn вам нужно поправить функцию OnPluginLoaded в плагине Clans:
    Код:
     void OnPluginLoaded(Plugin plugin)
    {
    if (plugin.Title != "Better Chat" || plugin.Title != "ChatPlus") return;
    if (enableClanTagging) Interface.CallHook("API_RegisterThirdPartyTitle", this, new Func<IPlayer, string>(getFormattedClanTag));
                 }
Команды для магазина(Так же работают через консоли сервера\администратора и через чат!)
chatplus.prefix {steamid/ник} привилегия - установить префикс игроку.
chatplus.name {steamid/ник} привилегия - установить цвет имени игроку.
chatplus.message {steamid\ник} привилегия - установить цвет сообщений игроку.
Данные команды лишь УСТАНАВЛИВАЮТ префикс\цвета игроку. Для использования необходимо выдать игроку привилегии. Без привилегий команды работать НЕ будут. Для использования из консоли игрока требуется привилегия на присваивание префикса и цветов (chatplus.assign)

Для того, чтобы автоматически установить префикс\цвет имени\сообщений в чате игроку при покупке добавьте дополнительную команду в магазин.
Примеры:

  • Выдача цвета имени (обе команды в один товар)
    Код:
    oxide.grant user %STEAMID% chatplus.hotpink
    chatplus.name %STEAMID% chatplus.hotpink
  • Выдача префикса (обе команды в один товар)
    Код:
    oxide.grant user %STEAMID% chatplus.vip
    chatplus.prefix  %STEAMID% chatplus.vip
  • Выдача цвета сообщений в чате (обе команды в один товар)
    Код:
    oxide.grant user %STEAMID% chatplus.blue
    chatplus.message %STEAMID% chatplus.blue
Пример выдачи привилегий
oxide.grant group "moderator" "chatplus.moderatormode" - группе
oxide.grant user "76561190000000000" "chatplus.moderatormode" - игроку

С версии 1.1.0 добавлена возможность использовать команды chatplus.prefix,chatplus.name,chatplus.message,mute,unmute на игроках, не находящихся на сервере.

С версии 1.1.0 изменён принцип работы команды mute(/mute).
Теперь время и причина опциональны: можно заблокировать человека навсегда, но с причиной.
Примеры:
mute vlad - блокировать игроку чат на всегда. Причина - Not specified
mute vlad 1d - блокировать чат игроку на 1 день. Причина - Not specified
mute vlad Просто потому что я так решил. - блокировать чат игроку навсегда. Причина - "Просто потому что я так решил."
mute vlad 1d Это весомая причина - блокировать чат игроку на 1 день. Причина - "Это весомая причина"
Формат времени: #d дни #h часы #m минуты #s секунды.Пример: 2 дня 1 час 30 минут 15 секунд: 2d1h30m15s


API:
Отправка личного сообщения\ответ на ЛС:

Код:
void ChatPlusPm(IPlayer sender, IPlayer receiver, string message)

API_RegisterThirdPartyTitle(Plugin plugin, Func<IPlayer, string> titleGetter)
Код:
[PluginReference] Plugin ChatPlus;
private string Prefix = [Alpha];
private string PrefixColor = "#FFAA00"
private List<IPlayer> PlayersWithPrefix = new List<IPlayer>();

void OnPluginLoaded(Plugin plugin)
{
    if (plugin.Title == "ChatPlus")
        SetPrefix();
}
void OnServerInitialized()
{
    if (ChatPlus)
        SetPrefix();
}

private void SetPrefix() => ChatPlus?.Call("API_RegisterThirdPartyTitle", new object[] { this, new Func<IPlayer, string>(GetPrefix) });
private string GetPrefix(IPlayer player) => PlayersWithPrefix.ContainsKey(player) ? $"[+12][{PrefixColor}]{Prefix}[/#][/+]" : string.Empty;
IsPlayerMuted(object ID) - проверяет заблокирован ли у игрока чат.
Код:
        [PluginReference]
        private Plugin ChatPlus;
        private bool IsPlayerMuted(BasePlayer player)
        {
            var result = ChatPlus?.CallHook("IsPlayerMuted", player.userID);
            if (result is bool)
                return (bool) result;
            return false;
        }

void CurrentPrefix(BasePlayer player, Action<string> action)
Возвращает void, action будет выполнен с текущим префиксом

string GetPrefixesInfo()
Возвращает список объектов PrefixInfo, описывающий все доступные на данный момент префиксы

[PluginReference]
private Plugin ChatPlus;

public class PrefixesInfo
{
public string Privelage;
public string Argument;
public string[] Colors;
public string Text;
}

private List<PrefixesInfo> IsPlayerMuted(BasePlayer player)
{
var result = ChatPlus?.CallHook("GetPrefixesInfo", player.userID) as string;
if (string.IsNullOrEmpty(result))
return null;
return JsonConvert.DeserializeObject<List<PrefixesInfo>>(result);
}

Хуки:
OnChatPlusMessage(Dictionary<string,object> dict) - вызывается при отправке сообщения в чат игроком. Словарь содержит 4 переменные:
  • ["Player"] - Iplayer - игрок, написавший в чат
  • ["Name"] - Отформатированное имя пользователя
  • ["Message"] - string - его сообщение в чат
  • ["CensoredMessage"] - string - версия его сообщения с цензурой
  • ["Prefixes"] - string - все префиксы игрока, разделённые одним пробелом
  • ["NameFormat"] - формат имени пользователя
  • ["MessageFormat"] - формат сообщения
  • ["ChatChannel"] - (Chat.ChatChannel) канал сообщения чата
Если возвращён словарь - будет предпринята попытка заменить значения полученными от стороннего плагина. Если возвращено что-либо кроме словаря, но не null - сообщение не будет выведено в чат. При возврате null или не возврате ничего - функция типа void - изменения внесены не будут.
Код:
object OnChatPlusMessage(Dictionary<string, object> dict)
{
    IPlayer player = (IPlayer) dict["Player"];
    if (player == null)
    {
        PrintWarning("Unknown error - ChatPlus send the wrong data");
        return null;
        //Такой ситуации не должно быть вообще, но берёжного - бог бережёт.
    }
    string message = dict["Message"] as string;
    string censored = dict["CensoredMessage"] as string;
    string prefixes = dict["Prefixes"] as string;

    PrintWarning($"Игрок {player.Name} отправил в чат текст \"{message}\". Цензура заменила его на \"{censored}\".");
    //А теперь поменяем немного текст, если игрок - администратор.
    if (player.IsAdmin)
        dict["Message"] = "Я администратор, УРА!";
    return dict;
}
КОНФИГУРАЦИЯ
JSON:
{
  "0. Отключить смайлы в чате": false,
  "A. Автоматически блокировать чат за нецензурную лексику": false,
  "B. Длительность блокировки чата за нецензурную лексику(в секундах)": 300,
  "C. Причина мута при автоматической блокировке чата за нецензурную лексику": "Нецензурная лексика",
  "D. Стандартная причина мута": "Не указана",
  "E. Воспроизводить звук при получении личного сообщения": true,
  "F. Полный путь к звуковому файлу": "assets/bundled/prefabs/fx/notice/stack.world.fx.prefab",
  "G. Выключить заглавные буквы в чате": true,
  "H. Настройки привелегий администраторов": {
    "Привилегия для включения режима администратора": "chatplus.adminmode",
    "Привилегия для включения режима модератора": "chatplus.moderatormode",
    "Привилегия для использования команды /mute": "chatplus.mute",
    "Привилегия для использования команды /unmute": "chatplus.unmute",
    "Формат чата режима администратор": {
      "Формат имени": "[#a5e664]Администратор[/#]",
      "Формат Сообщения": "{0}",
      "SteamID икноки в чате": 0
    },
    "Формат чата режима модератор": {
      "Формат имени": "[#a5e664]Модератор[/#]",
      "Формат Сообщения": "{0}",
      "SteamID икноки в чате": 0
    },
    "Привилегия для полного отключения чата": "chatplus.muteall",
    "Привилегия для использования консольных команд на присваивание префикса и цветов": "chatplus.assign",
    "Скрывать имена администраторов при блокировке чата": false,
    "Замена имени администратора при блокировке чата(если включено)": "Модератор чата"
  },
  "I. Цвет имен": [
    {
      "Привилегия": "chatplus.default",
      "Аргумент": "default",
      "Формат": "[#ffffff]{0}[/#]"
    },
    {
      "Привилегия": "chatplus.hotpink",
      "Аргумент": "hotpink",
      "Формат": "[#FF69B4]{0}[/#]"
    },
    {
      "Привилегия": "chatplus.tomato",
      "Аргумент": "tomato",
      "Формат": "[#FF6347]{0}[/#]"
    }
  ],
  "J. Префиксы": [
    {
      "Привилегия": "chatplus.default",
      "Аргумент": "default",
      "Формат": ""
    },
    {
      "Привилегия": "chatplus.vip",
      "Аргумент": "vip",
      "Формат": "[#9370DB][VIP][/#]"
    },
    {
      "Привилегия": "chatplus.premium",
      "Аргумент": "premium",
      "Формат": "[#00FF7F][Премиум][/#]"
    }
  ],
  "K. Цвет сообщений": [
    {
      "Привилегия": "chatplus.default",
      "Аргумент": "default",
      "Формат": "[#ffffff]{0}[/#]"
    },
    {
      "Привилегия": "chatplus.blue",
      "Аргумент": "blue",
      "Формат": "[#64a5e6]{0}[/#]"
    },
    {
      "Привилегия": "chatplus.gold",
      "Аргумент": "gold",
      "Формат": "[#DAA520]{0}[/#]"
    }
  ],
  "L. Список начальных букв нецензурных слов или слова целиком | список исключений": {
    "ебля": [],
    "сука": [],
    "пидор": []
  },
  "M. Имя консоли при отправке личных сообщений и отключении чата из консоли": "Server Console",
  "N. Формат отправки сообщений из консоли командой say": {
    "Формат имени": "[+16][#00ff00]{0}[/#][/+]",
    "Формат Сообщения": "[+16]{0}[/+]",
    "SteamID икноки в чате": 0
  },
  "O. Отображать ли аватарки игроков при получении ЛС(только RUST)": true,
  "P. Запрещать доступ к ЛС при блокировке чата": true,
  "Q. Отображать в чате сообщение, за которое игрок получил мут": true
}
  • Chat1.jpg
    Chat1.jpg
    272.3 KB · Просмотры: 1,641
  • chat4.jpg
    chat4.jpg
    24.7 KB · Просмотры: 1,283
  • 1691094136824.png
    1691094136824.png
    25 KB · Просмотры: 411
  • Like
Реакции: server и GrazyCat
Автор
Vlad-00003
Скачивания
108
Просмотры
14,015
Первый выпуск
Обновление
Оценка
3.90 звёзд 10 оценок

Другие ресурсы пользователя Vlad-00003

Последние обновления

  1. Обновление до версии 1.10.7

    Удалено отладочное сообщение
  2. Обновление до версии 1.10.6

    Исправление ошибки компиляции от 03.10.2025
  3. Обновление до версии 1.10.5

    Изменены параметры, передаваемые в словаре хуке OnChatPlusMessage, теперь словарь выглядит так...

Последние рецензии

Спасибо за плагин.Всё работает отлично.только в описании ошибка с командой модератора.А так всё супер и легко
Как по моему, плагин не достоин статуса приватный. Ужастно. Слишком много запары по поводу настройки, дак и к тому еще и не коректно работает...
А мне понравился плагин) тем более за такую цену. лучше и в бесплатных не найдешь. единственное - сложно сперва разобраться. но со временем можно привыкнуть)
Конкретно МНЕ не понравился.
Я попробовал и для меня оказался не удобный и сложный в настройке.
Пришлось поставить старый плагин

Если добавить меню с кнопками и выбором то будет супер
Просто отличный чат! Спасибо за проделанную работу.
Хороший чат.
Что могу сказать . Купил плагин, и не разу не жалею об этом . Функционирование, полная копия у всеми известного хостинга , даже больше.
Обновляеться , и с каждым разом все лучше ! Поэтому кому не нравиться ценна , дешевле вы не найдет, а если и найдете , то это явно будет не этот чат.
Оценка этого плагина 100/10.
Разработчику , мои похвалы .
Руки у тебя золотые.
Vlad-00003
Vlad-00003
Если всё так здорово - прошу, оставь рецензию на сайте Digiseller на сам товар - мне нужно повысить уровень магазина дабы получить возможность добавить оплату через карты, спасибо =3
Долго искал данный плагин, дефицит, так сказать. Цена меня порадовала, хотя кто-то со мной не согласится, но я считаю что труд другого человека нужно уважать, а деньги которые мы потратим на данный плагин - это проявление уважения к потраченному времени разработчика.

Не жалко было потратиться, ведь это мой самый долгожданный чат, и он лучше чем с оксида, моё личное убеждение. Разработчику - браво!
Хорошая задумка!!! Посмотреть бы видео как именно этот плагин работает чтобы оценить его по достоинству...
Цена перебор
Vlad-00003
Vlad-00003
Увы. Над плагином пришлось очень много работать. А с учётом того, что его наверняка сольют.... нам(разработчикам) надо же как-то выживать... =)
Сверху