Иконка ресурса

FREE AutoMute : 1.0.0 1.0.0

Нет прав для скачивания
C#:
using Newtonsoft.Json;
using Oxide.Core;
using Oxide.Core.Configuration;
using Oxide.Core.Libraries.Covalence;
using System;
using System.Collections.Generic;
using System.Linq;

namespace Oxide.Plugins
{
    [Info("AutoMute", "OxideBro", "1.0.0")]
    class AutoMute : CovalencePlugin
    {
        Dictionary<string, int> mutes = new Dictionary<string, int>();
        DynamicConfigFile saveFile = Interface.Oxide.DataFileSystem.GetFile("ChatMutes");

        void OnServerInitialized()
        {
            timer.Every(1f, () =>
            {
                List<string> toRemove = mutes.Keys.ToList().Where(uid => --mutes[uid] < 0).ToList();
                toRemove.ForEach(p => mutes.Remove(p));
            });
            mutes = saveFile.ReadObject<Dictionary<string, int>>();
        }

        private MuteList Chat;
        private class MuteList
        {
            public MuteList(string[] Say, string[] Exclusion, int MuteTime, int AuthLevel, bool AdminBlock)
            {
                Слова = Say;
                Исключения = Exclusion;
                this.MuteTime = MuteTime;
                this.AdminBlock = AdminBlock;
            }
            [JsonProperty("3. Запрещенные фразы")]
            public string[] Слова { get; set; }
            [JsonProperty("4. Слова-исключения")]
            public string[] Исключения { get; set; }
            [JsonProperty("2. Настройки: Время блокировки чата (сек)")]
            public int MuteTime;
            [JsonProperty("1. Настройки: Блокировать ли администраторов?")]
            public bool AdminBlock;
        }

        void Loaded()
        {
            Chat = Config.ReadObject<MuteList>();
        }
        void Unload()
        {
            saveFile.WriteObject(mutes);
        }
        protected override void LoadDefaultConfig()
        {
            PrintWarning("Благодарим за скачивание плагина на сайте RustPlugin.ru.");
            PrintError("Маты и исключения добавлять в /config/AutoMute.json");
            Config.WriteObject(DefaultConfig(), true);
        }
        object OnBetterChat(Dictionary<string, object> data)
        {
            var player = (IPlayer)data["Player"];
            if (mutes.ContainsKey(player.Id))
            {
                return false;
            }
            return null;
        }
        object OnUserChat(IPlayer player, string message)
        {
            bool exclud = true;
            string SteamID = player.Id;
            string Nickname = player.Name;
            BasePlayer bplayer = BasePlayer.FindByID(ulong.Parse(player.Id));
            if (player == null || message == null) return null;
            if (!Chat.AdminBlock)
                if (player.IsAdmin)
                    return null;
            if (mutes.ContainsKey(player.Id))
            {
                player.Message($"<color=RED>Чат заблокирован!</color> До окончания: <color=RED>{FormatTime(mutes[player.Id])}</color> фу писать такое");
                return false;
            }

            foreach (var word in Chat.Слова)
            {
                if (message.ToLower().Contains(word))
                {
                    foreach (var exc in Chat.Исключения)
                    {
                        if (message.ToLower().Contains(exc)) { exclud = false; break; }
                    }
                    if (exclud)
                    {
                        Mute(bplayer);
                        server.Broadcast($"Игроку <color=#FF6347>{Nickname}</color> отключен чат! \nДлительность: <color=#FF6347>{Chat.MuteTime} сек.</color>  \nПричина: <color=#FF6347> Не красиво писать такое!</color>");
                        PrintWarning("Auto mute " + Nickname + "(" + SteamID + $") {mutes[player.Id]}с. Причина: (" + message + ")");
                        LogToFile("log", $"({DateTime.Now.ToShortDateString()}) ({DateTime.Now.ToShortTimeString()}) Игроку {Nickname} ({SteamID}) был отключен чат на {Chat.MuteTime} сек. Сообщение: ({message})", this, false);
                        return false;
                    }
                }
            }
            return null;
        }
        private string FormatTime(double time)
        {
            TimeSpan dateDifference = TimeSpan.FromSeconds(time);
            var days = dateDifference.Days;
            var hours = dateDifference.Hours;
            var mins = dateDifference.Minutes;
            var secs = dateDifference.Seconds;
            if (days > 0) return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", days, hours, mins, secs);
            if (hours > 0) return string.Format("{0:00}:{1:00}:{2:00}", hours, mins, secs);
            else return string.Format("{0:00}:{1:00}", mins, secs);
        }

        void Mute(BasePlayer player)
        {
            mutes.Add(player.UserIDString, Chat.MuteTime);
        }

        #region DefaultConfig
        private MuteList DefaultConfig()
        {
            string[] Say =
            {
                "бля",
                "еба",
                "аху",
                "впиз",
                "въеб",
                "выбля",
                "выеб",
                "выёб",
                "гнид",
                "гонд",
                "доеб",
                "долбо",
                "дроч",
                "ёб",
                "елд",
                "заеб",
                "заёб",
                "залуп",
                "захуя",
                "заяб",
                "злоеб",
                "ипа",
                "лох",
                "лошар",
                "манд",
                "мля",
                "мраз",
                "муд",
                "наеб",
                "наёб",
                "напизд",
                "нах",
                "нех",
                "нии",
                "обоср",
                "отпиз",
                "отъеб",
                "оху",
                "падл",
                "падон",
                "педр",
                "пез",
                "перд",
                "пид",
                "пиз",
                "подъеб",
                "поеб",
                "поёб",
                "похе",
                "похр",
                "поху",
                "придур",
                "приеб",
                "проеб",
                "разху",
                "разъеб",
                "распиз",
                "соси",
                "спиз",
                "сук",
                "суч",
                "трах",
                "ублю",
                "уеб",
                "уёб",
                "ху",
                "целка",
                "чмо",
                "шалав",
                "шлюх",
                "ска"
            };
            string[] Ex =
            {
                  "мандар",
                  "мудр",
                  "наха",
                  "нахо",
                  "нахл",
                  "нехо",
                  "нехв",
                  "неха",
                  "пидж",
                  "похуд",
                  "сосиск",
                  "худ",
                  "хуж",
                  "хут",
                  "хур",
                  "хулиг",
                  "Команда",
                  "команда",
                  "команду",
                  "тебе",
                  "тебя",
                  "скайп",
                  "скайпу",
                  "скайпе",
                  "сказано",
                  "стёб",
                  "стеб"
            };

            return new MuteList(Say, Ex, 120, 2, true);
        }
        #endregion

    }
}

Автор
15FPS
Скачиваний
0
Просмотры
1
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок
Сверху