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

FREE IQChat : 1.1.0 1.1.0

Нет прав для скачивания
C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CompanionServer;
using ConVar;
using Facepunch;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Oxide.Core;
using Oxide.Core.Libraries;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using UnityEngine;
namespace Oxide.Plugins {
    [Info("IQChat", "BH", "1.1.0")]
    [Description("Самый приятный чат для вашего сервера из ветки IQ")]
    class IQChat : RustPlugin {
        /// <summary>
        /// Обновление 0.3.6
        /// - Изменил настройки пользователя по умолчанию включенными
        /// - Корректировка UI в дроп листе
        /// - Поправил исчезновение стрелочек в сладйерах при растягивании экрана
        /// - Добавил возможность выбора тип UI для каждого элемента , слайдер или дроп.лист
        /// - Добавил страницы в дроп.листы
        /// - Добавил возможность настраиввать расположение UI через конфиг (для опытных пользователей)
        /// - Добавлены комнды на ручную блокировку чата (консольная и чат) : (/)mute Steam64ID Причина Время(секунды)
        /// - Добавлены комнды на ручную разблолкирку чата (консольная и чат) : (/)unmute Steam64ID
        /// - Добавлены команды на скрытую блокировку чата, уведомления о блокировке будет видеть только игрок и модератор (консольная и чат) : (/)hmute Steam64ID Причина Время(секунды)
        /// - Добавлены команды на скрытую разблолкирку чата, уведомления о разблокировке будет видеть только игрок и модератор (консольная и чат) : (/)hunmute Steam64ID
        /// - Добавлена консольная команда migrate , которая переведет настройки ВСЕХ игроков в состояние ВКЛЮЧЕНО
        /// - Поправки в совместной работе в IQModalMenu (вскоре выйдет)
        /// - Добавлена проерка на префиксы, теперь если вы удалили префикс, у игрока он так-же удалится
        /// Обновление 0.3.7
        /// - Поправлены страницы в дроп.листе для IQModalMenu
        /// - Поправлена встраиваемая панель с чатом в IQModalMenu
        /// - Вернул чатовую команду /mute (Случайно была задета и удалена)
        /// - Корректировки API : API_SEND_PLAYER - добавлен вывод форматированного сообщения в консоль
        /// Обновление 0.3.8
        /// - Исправлен чат после обновления
        /// - Добавлены команды для чата и консоли :
        /// - (/)adminalert Сообщение - высылает всем оповещение игнорируя то, что у игрока выключен показ оповещений
        /// - Исправлено отображение аватарки пользователя, если выключен вход с информацией о стране
        /// - Добавлена возможность скрыть оповоещение о входе администратора
        /// - Добавлена возможность скрыть оповоещение о выходе администратора
        /// - Поправил синтаксис команде saybro , теперь можно использовать ник и Steam64ID
        /// - Поправил синтаксис команде alertuip , теперь можно использовать ник и Steam64ID
        /// /// </summary>
#region Reference
        [PluginReference]
        Plugin IQPersonal, IQFakeActive, XDNotifications, IQRankSystem, IQModalMenu;
#region IQModalMenu
        bool IQModalMenuConnected() => (bool)IQModalMenu.Call("API_Connected_Plugin", this, config.ReferenceSetting.IQModalMenuSettings.Avatar, config.ReferenceSetting.IQModalMenuSettings.Sprite, "iq.chat.modal");
        bool IQModalMenuDisconnected() => (bool)IQModalMenu.Call("API_Disconnected_Plugin", this);
        void IQModalSend(BasePlayer player) => IQModalMenu.Call("API_Send_Menu", player, this);
#endregion
#region IQPersonal
        public void SetMute(BasePlayer player) => IQPersonal?.CallHook("API_SET_MUTE", player.userID);
        public void BadWords(BasePlayer player) => IQPersonal?.CallHook("API_DETECTED_BAD_WORDS", player.userID);
#endregion
#region XDNotifications
        private void AddNotify(BasePlayer player, string title, string description, string command = "", string cmdyes = "", string cmdno = "") {
            if (!XDNotifications) return;
            var Setting = config.ReferenceSetting.XDNotificationsSettings;
            Interface.Oxide.CallHook("AddNotify", player, title, description, Setting.Color, Setting.AlertDelete, Setting.SoundEffect, command, cmdyes, cmdno);
        }
#endregion
#region IQFakeActive
        public bool IsFake(string DisplayName) => (bool)IQFakeActive?.Call("IsFake", DisplayName);
        void SyncReservedFinish() {
            if (!config.ReferenceSetting.IQFakeActiveSettings.UseIQFakeActive) return;
            PrintWarning("IQChat - успешно синхронизирована с IQFakeActive");
            PrintWarning("=============SYNC==================");
        }
#endregion
#region IQRankSystem
        string IQRankGetRank(ulong userID) => (string)(IQRankSystem?.Call("API_GET_RANK_NAME", userID));
        string IQRankGetTimeGame(ulong userID) => (string)(IQRankSystem?.Call("API_GET_TIME_GAME", userID));
        List<string> IQRankListKey(ulong userID) => (List<string>)(IQRankSystem?.Call("API_RANK_USER_KEYS", userID));
        string IQRankGetNameRankKey(string Key) => (string)(IQRankSystem?.Call("API_GET_RANK_NAME", Key));
        void IQRankSetRank(ulong userID, string RankKey) => IQRankSystem?.Call("API_SET_ACTIVE_RANK", userID, RankKey);
#endregion
#endregion
#region Vars
        private enum MuteType {
            Chat, Voice
        }
        private enum TakeElemntUser {
            Prefix, Nick, Chat, Rank, MultiPrefix
        }
        public Dictionary<BasePlayer, BasePlayer> PMHistory = new Dictionary<BasePlayer, BasePlayer>();
        public string PermMuteMenu = "iqchat.muteuse";
        class Response {
            [JsonProperty("country")]
            public string Country {
                get;
                set;
            }
        }
        public static StringBuilder sb = new StringBuilder();
        public string GetLang(string LangKey, string userID = null, params object[] args) {
            sb.Clear();
            if (args != null) {
                sb.AppendFormat(lang.GetMessage(LangKey, this, userID), args);
                return sb.ToString();
            }
            return lang.GetMessage(LangKey, this, userID);
        }
#endregion
#region Configuration
        private static Configuration config = new Configuration();
        private class Configuration {
            [JsonProperty("Права для смены ника")]
            public string RenamePermission;
            [JsonProperty("Настройка префиксов")]
            public List<AdvancedFuncion> PrefixList = new List<AdvancedFuncion>();
            [JsonProperty("Настройка цветов для ников")]
            public List<AdvancedFuncion> NickColorList = new List<AdvancedFuncion>();
            [JsonProperty("Настройка цветов для сообщений")]
            public List<AdvancedFuncion> MessageColorList = new List<AdvancedFuncion>();
            [JsonProperty("Настройка сообщений в чате")]
            public MessageSettings MessageSetting;
            [JsonProperty("Настройка мутов")]
            public MuteController MuteControllers = new MuteController();
            [JsonProperty("Настройка UI интерфейса")]
            public Interface InterfaceChat;
            [JsonProperty("Настройка оповещения")]
            public AlertSetting AlertSettings;
            [JsonProperty("Настройка привилегий")]
            public AutoSetups AutoSetupSetting;
            [JsonProperty("Настройка Rust+")]
            public RustPlus RustPlusSettings;
            [JsonProperty("Дополнительная настройка")]
            public OtherSettings OtherSetting;
            [JsonProperty("Настройка автоответчика")]
            public AnswerMessage AnswerMessages = new AnswerMessage();
            [JsonProperty("Настройка плагинов поддержки")]
            public ReferenceSettings ReferenceSetting = new ReferenceSettings();
            internal class AdvancedFuncion {
                [JsonProperty("Права")]
                public string Permissions;
                [JsonProperty("Значение")]
                public string Argument;
            }
            internal class AnswerMessage {
                [JsonProperty("Включить автоответчик?(true - да/false - нет)")]
                public bool UseAnswer;
                [JsonProperty("Настройка сообщений [Ключевое слово] = Ответ")]
                public Dictionary<string, string> AnswerMessageList = new Dictionary<string, string>();
            }
            internal class RustPlus {
                [JsonProperty("Использовать Rust+")]
                public bool UseRustPlus;
                [JsonProperty("Название для уведомления Rust+")]
                public string DisplayNameAlert;
            }
            internal class MuteController {
                [JsonProperty("Настройка причин блокировок чата")]
                public List<ReasonMuteChat> ReasonListChat = new List<ReasonMuteChat>();
                [JsonProperty("Настройка автоматического мута")]
                public AutoMute AutoMuteSettings = new AutoMute();
                internal class AutoMute {
                    [JsonProperty("Включить автоматический мут по запрещенным словам")]
                    public bool UseAutoMute;
                    [JsonProperty("Время автоматического мута")]
                    public int MuteTime;
                    [JsonProperty("Причина мута")]
                    public string ReasonMute;
                }
                internal class ReasonMuteChat {
                    [JsonProperty("Причина мута")]
                    public string Reason;
                    [JsonProperty("Время мута")]
                    public int TimeMute;
                }
            }
            internal class ReferenceSettings {
                [JsonProperty("Настройка XDNotifications")]
                public XDNotifications XDNotificationsSettings = new XDNotifications();
                [JsonProperty("Настройка IQModalMenu")]
                public IQModalMenu IQModalMenuSettings = new IQModalMenu();
                [JsonProperty("Настройка IQFakeActive")]
                public IQFakeActive IQFakeActiveSettings = new IQFakeActive();
                [JsonProperty("Настройка IQRankSystem")]
                public IQRankSystem IQRankSystems = new IQRankSystem();
                internal class IQModalMenu {
                    [JsonProperty("Спрайт на кнопку в модальном меню")]
                    public string Sprite;
                    [JsonProperty("Ссылка на кнопку в модальном меню(имеет приоритет над спрайтом)")]
                    public string Avatar;
                }
                internal class XDNotifications {
                    [JsonProperty("Включить поддержку XDNotifications(UI уведомления будут заменены на уведомление с XDNotifications)")]
                    public bool UseXDNotifications;
                    [JsonProperty("Цвет заднего фона уведомления(HEX)")]
                    public string Color;
                    [JsonProperty("Через сколько удалиться уведомление")]
                    public int AlertDelete;
                    [JsonProperty("Звуковой эффект")]
                    public string SoundEffect;
                }
                internal class IQRankSystem {
                    [JsonProperty("Использовать поддержку рангов")]
                    public bool UseRankSystem;
                    [JsonProperty("Отображать игрокам их отыгранное время рядом с рангом")]
                    public bool UseTimeStandart;
                }
                internal class IQFakeActive {
                    [JsonProperty("Использовать поддержку IQFakeActive")]
                    public bool UseIQFakeActive;
                }
            }
            internal class AutoSetups {
                [JsonProperty("Настройки сброса привилегий")]
                public ReturnDefault ReturnDefaultSetting = new ReturnDefault();
                [JsonProperty("Автоматической установки префиксов/цвета ника/цвета чата")]
                public SetupAuto SetupAutoSetting = new SetupAuto();
                internal class ReturnDefault {
                    [JsonProperty("Сбрасывать автоматически префикс при окончании его прав")]
                    public bool UseDropPrefix;
                    [JsonProperty("Сбрасывать автоматически цвет ника при окончании его прав")]
                    public bool UseDropColorNick;
                    [JsonProperty("Сбрасывать автоматически цвет чата при окончании его прав")]
                    public bool UseDropColorChat;
                    [JsonProperty("При окончании префикса, установится данный префикс")]
                    public string PrefixDefault;
                    [JsonProperty("При окончании цвета ника, установится данный цвет")]
                    public string NickDefault;
                    [JsonProperty("При окончании цвета сообщения, установится данный цвета")]
                    public string MessageDefault;
                }
                internal class SetupAuto {
                    [JsonProperty("Устанавливать автоматически префикс при получении его прав")]
                    public bool UseSetupAutoPrefix;
                    [JsonProperty("Устанавливать автоматически цвет ника при получении его прав")]
                    public bool UseSetupAutoColorNick;
                    [JsonProperty("Устанавливать автоматически цвет чата при получении его прав")]
                    public bool UseSetupAutoColorChat;
                }
            }
            internal class MessageSettings {
                [JsonProperty("Включить форматирование сообщений")]
                public bool FormatingMessage;
                [JsonProperty("Включить личные сообщения")]
                public bool PMActivate;
                [JsonProperty("Включить игнор ЛС игрокам(/ignore nick)")]
                public bool IgnoreUsePM;
                [JsonProperty("Включить Анти-Спам")]
                public bool AntiSpamActivate;
                [JsonProperty("Скрыть из чата выдачу предметов Админу")]
                public bool HideAdminGave;
                [JsonProperty("Использовать список запрещенных слов?")]
                public bool UseBadWords;
                [JsonProperty("Включить возможность использовать несколько префиксов сразу")]
                public bool MultiPrefix;
                [JsonProperty("Переносить мут в командный чат(В случае мута,игрок не сможет писать даже в командный чат)")]
                public bool MuteTeamChat;
                [JsonProperty("Пермишенс для иммунитета к антиспаму")]
                public string PermAdminImmunitetAntispam;
                [JsonProperty("Наименование оповещения в чат")]
                public string BroadcastTitle;
                [JsonProperty("Наименование упоминания игрока в чате")]
                public string AlertPlayerTitle;
                [JsonProperty("Цвет сообщения упоминания игрока в чате")]
                public string AlertPlayerColor;
                [JsonProperty("Цвет сообщения оповещения в чат")]
                public string BroadcastColor;
                [JsonProperty("На какое сообщение заменять плохие слова")]
                public string ReplaceBadWord;
                [JsonProperty("Звук при при получении личного сообщения")]
                public string SoundPM;
                [JsonProperty("Звук при при получении и отправки упоминания через @")]
                public string SoundAlertPlayer;
                [JsonProperty("Время,через которое удалится сообщение с UI от администратора")]
                public int TimeDeleteAlertUI;
                [JsonProperty("Steam64ID для аватарки в чате")]
                public ulong Steam64IDAvatar;
                [JsonProperty("Время через которое игрок может отправлять сообщение (АнтиСпам)")]
                public int FloodTime;
                [JsonProperty("Список плохих слов")]
                public List<string> BadWords = new List<string>();
            }
            internal class Interface {
                [JsonProperty("HEX : Для задней панели")]
                public string HexPanel;
                [JsonProperty("HEX : Для титульной панели")]
                public string HexTitle;
                [JsonProperty("HEX : Для кнопок")]
                public string HexButton;
                [JsonProperty("HEX : Для текста")]
                public string HexLabel;
                [JsonProperty("HEX : Кнопки с активной страницей")]
                public string HexPageButtonActive;
                [JsonProperty("HEX : Кнопки с неактивной страницей")]
                public string HexPageButtonInActive;
                [JsonProperty("HEX : Блюра для меню")]
                public string HexBlurMute;
                [JsonProperty("Настройка расположения основного UI")]
                public InterfacePosition InterfacePositions;
                [JsonProperty("Настройка расположения UI уведомления")]
                public AlertInterfaceSettings AlertInterfaceSetting;
                [JsonProperty("Дополнительная настройка UI интерфейса")]
                public OtherSettingsInterface OtherSettingInterface;
                internal class InterfacePosition {
                    [JsonProperty("Настройка основного меню")]
                    public MainPanel MainPanels;
                    [JsonProperty("Настройка панели управления блокировками чата")]
                    public MutePanel MutePanels;
                    [JsonProperty("Настройка панели управления игнорированием чата")]
                    public IgnoredPanel IgnoredPanels;
                    internal class MutePanel {
                        [JsonProperty("AnchorMin целевого UI в меню управленяи блокировкой чата")]
                        public string BackgroundAnchorMin;
                        [JsonProperty("AnchorMax основного UI в меню управленяи блокировкой чата")]
                        public string BackgroundAnchorMax;
                    }
                    internal class IgnoredPanel {
                        [JsonProperty("AnchorMin целевого UI в меню управленяи игнорировани")]
                        public string BackgroundAnchorMin;
                        [JsonProperty("AnchorMax основного UI")]
                        public string BackgroundAnchorMax;
                    }
                    internal class MainPanel {
                        [JsonProperty("Настройка блока с информацией в меню")]
                        public InfromationBlocks InfromationBlock;
                        [JsonProperty("Настройка блока администрирования в меню")]
                        public ModerationBlocks ModerationBlock;
                        [JsonProperty("Настройка блока с настройками в меню")]
                        public SettingBlocks SettingBlock;
                        [JsonProperty("Настройка блока с слайдерами и дроплистами в меню")]
                        public SliderAndDropListBlocks SliderAndDropListBlock;
                        [JsonProperty("AnchorMin целевого меню")]
                        public string BackgroundAnchorMin;
                        [JsonProperty("AnchorMax основного меню")]
                        public string BackgroundAnchorMax;
                        [JsonProperty("AnchorMin панели с контентом в меню (тут расположены кнопки и другая информация)")]
                        public string ContentAnchorMin;
                        [JsonProperty("AnchorMax панели с контентом в меню (тут расположены кнопки и другая информация)")]
                        public string ContentAnchorMax;
                        [JsonProperty("AnchorMin титульной панели в меню")]
                        public string TitleAnchorMin;
                        [JsonProperty("AnchorMax титульной панели в меню")]
                        public string TitleAnchorMax;
                        [JsonProperty("AnchorMin кнопки закрытия")]
                        public string CloseButtonAnchorMin;
                        [JsonProperty("AnchorMax кнопки закрытия")]
                        public string CloseButtonAnchorMax;
                        [JsonProperty("AnchorMin текста в титульной панели")]
                        public string TitleLabelAnchorMin;
                        [JsonProperty("AnchorMax текста в титульной панели")]
                        public string TitleLabelAnchorMax;
                        internal class InfromationBlocks {
                            [JsonProperty("AnchorMin текста заголовка в блоке информации")]
                            public string TitleLabelAnchorMin;
                            [JsonProperty("AnchorMax текста заголовка в блоке информации")]
                            public string TitleLabelAnchorMax;
                            [JsonProperty("AnchorMin текста с информаций о блокировке чата")]
                            public string MutedLabelAnchorMin;
                            [JsonProperty("AnchorMax текста с информацией о блокировке чата")]
                            public string MutedLabelAnchorMax;
                            [JsonProperty("AnchorMin текста с информаций о нике игрока")]
                            public string NickPlayerAnchorMin;
                            [JsonProperty("AnchorMax текста с информацией о нике игрока")]
                            public string NickPlayerAnchorMax;
                            [JsonProperty("AnchorMin титульного текста о игнорированных игроках")]
                            public string IgnoredLabelAnchorMin;
                            [JsonProperty("AnchorMax титульного текста о игнорировванных игроках")]
                            public string IgnoredLabelAnchorMax;
                            [JsonProperty("AnchorMin кнопки с игнор-меню")]
                            public string IgnoredButtonAnchorMin;
                            [JsonProperty("AnchorMax кнопки с игнор-меню")]
                            public string IgnoredButtonAnchorMax;
                        }
                        internal class ModerationBlocks {
                            [JsonProperty("AnchorMin текста заголовка в блоке администрирования")]
                            public string TitleLabelAnchorMin;
                            [JsonProperty("AnchorMax текста заголовка в блоке администрирования")]
                            public string TitleLabelAnchorMax;
                            [JsonProperty("AnchorMin кнопки с меню блокировки чата")]
                            public string ButtonMuteAnchorMin;
                            [JsonProperty("AnchorMax кнопки с меню блокировки чата")]
                            public string ButtonMuteAnchorMax;
                            [JsonProperty("AnchorMin кнопки с блокировкой чата всем игрокам")]
                            public string ButtonMuteAllAnchorMin;
                            [JsonProperty("AnchorMax кнопки с блокировкой чата всем игрокам")]
                            public string ButtonMuteAllAnchorMax;
                            [JsonProperty("AnchorMin кнопки с блокировкой голосового чата всем игрокам")]
                            public string ButtonMuteVoiceAllAnchorMin;
                            [JsonProperty("AnchorMax кнопки с блокировкой голосового чата всем игрокам")]
                            public string ButtonMuteVoiceAllAnchorMax;
                        }
                        internal class SliderAndDropListBlocks {
                            [JsonProperty("AnchorMin заголовка слайдера/дроп листа рангов")]
                            public string TitleSliderAndDropListRankAnchorMin;
                            [JsonProperty("AnchorMax заголовка слайдера/дроп листа рангов")]
                            public string TitleSliderAndDropListRankAnchorMax;
                            [JsonProperty("AnchorMin слайдера/дроп листа рангов")]
                            public string SliderAndDropListRankAnchorMin;
                            [JsonProperty("AnchorMax слайдера/дроп листа рангов")]
                            public string SliderAndDropListRankAnchorMax;
                            [JsonProperty("AnchorMin заголовка слайдера/дроп листа цвета сообщения в чате")]
                            public string TitleSliderAndDropListChatColorAnchorMin;
                            [JsonProperty("AnchorMax заголовка слайдера/дроп листа цвета сообщения в чате")]
                            public string TitleSliderAndDropListChatColorAnchorMax;
                            [JsonProperty("AnchorMin слайдера/дроп листа цвета сообщения в чате")]
                            public string SliderAndDropListChatColorAnchorMin;
                            [JsonProperty("AnchorMax слайдера/дроп листа цвета сообщения в чате")]
                            public string SliderAndDropListChatColorAnchorMax;
                            [JsonProperty("AnchorMin заголовка слайдера/дроп листа цвета ника в чате")]
                            public string TitleSliderAndDropListNickColorAnchorMin;
                            [JsonProperty("AnchorMax заголовка слайдера/дроп листа цвета ника в чате")]
                            public string TitleSliderAndDropListNickColorAnchorMax;
                            [JsonProperty("AnchorMin слайдера/дроп листа цвета ника в чате")]
                            public string SliderAndDropListNickColorAnchorMin;
                            [JsonProperty("AnchorMax слайдера/дроп листа цвета ника в чате")]
                            public string SliderAndDropListNickColorAnchorMax;
                            [JsonProperty("AnchorMin заголовка слайдера/дроп листа префикса в чате")]
                            public string TitleSliderAndDropListPrefixAnchorMin;
                            [JsonProperty("AnchorMax заголовка слайдера/дроп листа префикса в чате")]
                            public string TitleSliderAndDropListPrefixAnchorMax;
                            [JsonProperty("AnchorMin слайдера/дроп листа префикса в чате")]
                            public string SliderAndDropListPrefixAnchorMin;
                            [JsonProperty("AnchorMax слайдера/дроп листа префикса в чате")]
                            public string SliderAndDropListPrefixAnchorMax;
                        }
                        internal class SettingBlocks {
                            [JsonProperty("AnchorMin заголовка в блоке настроек")]
                            public string TitleSettingAnchorMin;
                            [JsonProperty("AnchorMax заголовка в блоке настроек")]
                            public string TitleSettingAnchorMax;
                            [JsonProperty("AnchorMin текста настройки личных сообщений")]
                            public string SettingPMLabelAnchorMin;
                            [JsonProperty("AnchorMax текста настройки личных сообщений")]
                            public string SettingPMLabelAnchorMax;
                            [JsonProperty("AnchorMin текста настройки автоматических сообщений")]
                            public string SettingBroadcastAnchorMin;
                            [JsonProperty("AnchorMax текста настройки автоматических сообщений")]
                            public string SettingBroadcastAnchorMax;
                            [JsonProperty("AnchorMin текста настройки упоминания в чате")]
                            public string SettingAlertAnchorMin;
                            [JsonProperty("AnchorMax текста настройки упоминания в чате")]
                            public string SettingAlertAnchorMax;
                            [JsonProperty("AnchorMin текста настройки звукового оповещения")]
                            public string SettingSoundAnchorMin;
                            [JsonProperty("AnchorMax текста настройки звукового оповещения")]
                            public string SettingSoundAnchorMax;
                            [JsonProperty("AnchorMin бокса настройки личных сообщений")]
                            public string BoxSettingPMLabelAnchorMin;
                            [JsonProperty("AnchorMax бокса настройки личных сообщений")]
                            public string BoxSettingPMLabelAnchorMax;
                            [JsonProperty("AnchorMin бокса настройки автоматических сообщений")]
                            public string BoxSettingBroadcastAnchorMin;
                            [JsonProperty("AnchorMax бокса настройки автоматических сообщений")]
                            public string BoxSettingBroadcastAnchorMax;
                            [JsonProperty("AnchorMin бокса настройки упоминания в чате")]
                            public string BoxSettingAlertAnchorMin;
                            [JsonProperty("AnchorMax бокса настройки упоминания в чате")]
                            public string BoxSettingAlertAnchorMax;
                            [JsonProperty("AnchorMin бокса настройки звукового оповещения")]
                            public string BoxSettingSoundAnchorMin;
                            [JsonProperty("AnchorMax бокса настройки звукового оповещения")]
                            public string BoxSettingSoundAnchorMax;
                        }
                    }
                }
                internal class OtherSettingsInterface {
                    [JsonProperty("Использовать выпадающий список на префиксах(иначе будет слайдер)")]
                    public bool DropListPrefixUse;
                    [JsonProperty("Использовать выпадающий список на цветах ника(иначе будет слайдер)")]
                    public bool DropListColorNickUse;
                    [JsonProperty("Использовать выпадающий список на цветах чата(иначе будет слайдер)")]
                    public bool DropListColorChatUse;
                    [JsonProperty("Использовать выпадающий список на рангах(IQRankSystem)(иначе будет слайдер)")]
                    public bool DropListRankUse;
                }
                internal class AlertInterfaceSettings {
                    [JsonProperty("AnchorMin")]
                    public string AnchorMin;
                    [JsonProperty("AnchorMax")]
                    public string AnchorMax;
                    [JsonProperty("OffsetMin")]
                    public string OffsetMin;
                    [JsonProperty("OffsetMax")]
                    public string OffsetMax;
                }
            }
            internal class AlertSetting {
                [JsonProperty("Включить случайное сообщение зашедшему игроку")]
                public bool WelcomeMessageUse;
                [JsonProperty("Список сообщений игроку при входе")]
                public List<string> WelcomeMessage = new List<string>();
                [JsonProperty("Уведомлять о входе игрока в чат")]
                public bool ConnectedAlert;
                [JsonProperty("Уведомлять о входе админа на сервер в чат")]
                public Boolean ConnectedAlertAdmin;
                [JsonProperty("Уведомлять о выходе админа на сервер в чат")]
                public Boolean DisconnectedAlertAdmin;
                [JsonProperty("Включить случайные уведомления о входе игрока из списка")]
                public bool ConnectionAlertRandom;
                [JsonProperty("Случайные уведомления о входе игрока({0} - ник игрока, {1} - страна(если включено отображение страны)")]
                public List<string> RandomConnectionAlert = new List<string>();
                [JsonProperty("Отображать страну зашедшего игрока")]
                public bool ConnectedWorld;
                [JsonProperty("Уведомлять о выходе игрока в чат из списка")]
                public bool DisconnectedAlert;
                [JsonProperty("Включить случайные уведомления о входе игрока")]
                public bool DisconnectedAlertRandom;
                [JsonProperty("Случайные уведомления о входе игрока({0} - ник игрока, {1} - причина выхода(если включена причина)")]
                public List<string> RandomDisconnectedAlert = new List<string>();
                [JsonProperty("Отображать причину выхода игрока")]
                public bool DisconnectedReason;
                [JsonProperty("При уведомлении о входе/выходе игрока отображать его аватар напротив ника")]
                public bool ConnectedAvatarUse;
                [JsonProperty("Включить автоматические сообщения в чат")]
                public bool AlertMessage;
                [JsonProperty("Тип автоматических сообщений : true - поочередные/false - случайные")]
                public bool AlertMessageType;
                [JsonProperty("Настройка отправки автоматических сообщений в чат")]
                public List<string> MessageList;
                [JsonProperty("Интервал отправки сообщений в чат(Броадкастер)")]
                public int MessageListTimer;
            }
            internal class OtherSettings {
                [JsonProperty("Использовать дискорд")]
                public bool UseDiscord;
                [JsonProperty("Вебхук для логирования чата в дискорд")]
                public string WebhooksChatLog;
                [JsonProperty("Вебхук для логирования информации о мутах в дискорде")]
                public string WebhooksMuteInfo;
            }
            public static Configuration GetNewConfiguration() {
                return new Configuration {
                    PrefixList = new List<AdvancedFuncion> {
                        new AdvancedFuncion {
                            Permissions = "iqchat.default", Argument = "<color=yellow><b>[+]</b></color>",
                        }
                        , new AdvancedFuncion {
                            Permissions = "iqchat.default", Argument = "<color=yellow><b>[ИГРОК]</b></color>",
                        }
                        , new AdvancedFuncion {
                            Permissions = "iqchat.vip", Argument = "<color=yellow><b>[VIP]</b></color>",
                        }
                        ,
                    }
                    , NickColorList = new List<AdvancedFuncion> {
                        new AdvancedFuncion {
                            Permissions = "iqchat.default", Argument = "#DBEAEC",
                        }
                        , new AdvancedFuncion {
                            Permissions = "iqchat.default", Argument = "#FFC428",
                        }
                        , new AdvancedFuncion {
                            Permissions = "iqchat.vip", Argument = "#45AAB4",
                        }
                        ,
                    }
                    , MessageColorList = new List<AdvancedFuncion> {
                        new AdvancedFuncion {
                            Permissions = "iqchat.default", Argument = "#DBEAEC",
                        }
                        , new AdvancedFuncion {
                            Permissions = "iqchat.default", Argument = "#FFC428",
                        }
                        , new AdvancedFuncion {
                            Permissions = "iqchat.vip", Argument = "#45AAB4",
                        }
                        ,
                    }
                    , AutoSetupSetting = new AutoSetups {
                        ReturnDefaultSetting = new AutoSetups.ReturnDefault {
                            UseDropColorChat = true, UseDropColorNick = true, UseDropPrefix = true, PrefixDefault = "", NickDefault = "", MessageDefault = "",
                        }
                        , SetupAutoSetting = new AutoSetups.SetupAuto {
                            UseSetupAutoColorChat = true, UseSetupAutoColorNick = true, UseSetupAutoPrefix = true,
                        }
                    }
                    , RustPlusSettings = new RustPlus {
                        UseRustPlus = true, DisplayNameAlert = "СУПЕР СЕРВЕР",
                    }
                    , MessageSetting = new MessageSettings {
                        UseBadWords = true, HideAdminGave = true, IgnoreUsePM = true, MuteTeamChat = true, PermAdminImmunitetAntispam = "iqchat.adminspam", BroadcastTitle = "<color=#F65050FF><b>[ОПОВЕЩЕНИЕ]</b></color>", AlertPlayerTitle = "<color=#A7F64FFF><b>[УПОМИНАНИЕ]</b></color>", AlertPlayerColor = "#efedee", BroadcastColor = "#efedee", ReplaceBadWord = "Ругаюсь матом", Steam64IDAvatar = 0, TimeDeleteAlertUI = 5, PMActivate = true, SoundAlertPlayer = "assets/bundled/prefabs/fx/notice/item.select.fx.prefab", SoundPM = "assets/bundled/prefabs/fx/notice/stack.world.fx.prefab", AntiSpamActivate = true, FloodTime = 5, FormatingMessage = true, MultiPrefix = true, BadWords = new List<string> {
                            "хуй", "гей", "говно", "бля", "тварь"
                        }
                    }
                    , MuteControllers = new MuteController {
                        AutoMuteSettings = new MuteController.AutoMute {
                            UseAutoMute = false, MuteTime = 600, ReasonMute = "Ненормативная лексика"
                        }
                        , ReasonListChat = new List<MuteController.ReasonMuteChat> {
                            new MuteController.ReasonMuteChat {
                                Reason = "Оскорбление родителей", TimeMute = 1200,
                            }
                            , new MuteController.ReasonMuteChat {
                                Reason = "Оскорбление игроков", TimeMute = 100
                            }
                        }
                        ,
                    }
                    , RenamePermission = "iqchat.renameuse", AlertSettings = new AlertSetting {
                        ConnectedAlertAdmin = false, DisconnectedAlertAdmin = false, MessageListTimer = 60, AlertMessageType = false, WelcomeMessageUse = true, ConnectionAlertRandom = false, DisconnectedAlertRandom = false, RandomConnectionAlert = new List<string> {
                            "{0} влетел как дурачок из {1}", "{0} залетел на сервер из {1}, соболезнуем", "{0} прыгнул на сервачок"
                        }
                        , RandomDisconnectedAlert = new List<string> {
                            "{0} ушел в мир иной", "{0} вылетел с сервера с причиной {1}", "{0} пошел на другой сервачок"
                        }
                        , ConnectedAlert = true, ConnectedWorld = true, DisconnectedAlert = true, DisconnectedReason = true, AlertMessage = true, ConnectedAvatarUse = true, MessageList = new List<string> {
                            "Автоматическое сообщение #1", "Автоматическое сообщение #2", "Автоматическое сообщение #3", "Автоматическое сообщение #4", "Автоматическое сообщение #5", "Автоматическое сообщение #6",
                        }
                        , WelcomeMessage = new List<string> {
                            "Добро пожаловать на сервер SUPERSERVER\nРады,что выбрал именно нас!", "С возвращением на сервер!\nЖелаем тебе удачи", "Добро пожаловать на сервер\nУ нас самые лучшие плагины",
                        }
                        ,
                    }
                    , InterfaceChat = new Interface {
                        HexPanel = "#3B3A2EFF", HexTitle = "#1B211BFF", HexButton = "#252a24", HexLabel = "#efedee", HexPageButtonActive = "#3B3A2EFF", HexPageButtonInActive = "#3B3A2EB9", HexBlurMute = "#3B3A2EC4", InterfacePositions = new Interface.InterfacePosition {
                            MainPanels = new Interface.InterfacePosition.MainPanel {
                                BackgroundAnchorMin = "0.57 0.1186", BackgroundAnchorMax = "0.9869678 0.8814", ContentAnchorMin = "0 0", ContentAnchorMax = "1 0.8896463", TitleAnchorMin = "0 0.8896463", TitleAnchorMax = "1 1", CloseButtonAnchorMin = "0.9037238 0.3409882", CloseButtonAnchorMax = "0.95509 0.6929768", TitleLabelAnchorMin = "0.04494545 0", TitleLabelAnchorMax = "0.739994 1", InfromationBlock = new Interface.InterfacePosition.MainPanel.InfromationBlocks {
                                    TitleLabelAnchorMin = "0.04152404 0.5224559", TitleLabelAnchorMax = "0.6196045 0.5934054", MutedLabelAnchorMin = "0.04152404 0.4078422", MutedLabelAnchorMax = "0.9486688 0.46788", NickPlayerAnchorMin = "0.04152404 0.4610541", NickPlayerAnchorMax = "0.9486688 0.5210921", IgnoredLabelAnchorMin = "0.04152405 0.3559946", IgnoredLabelAnchorMax = "0.5168719 0.4160324", IgnoredButtonAnchorMin = "0.443033 0.366909", IgnoredButtonAnchorMax = "0.9584759 0.4173968",
                                }
                                , ModerationBlock = new Interface.InterfacePosition.MainPanel.ModerationBlocks {
                                    TitleLabelAnchorMin = "0.04152405 0.2482094", TitleLabelAnchorMax = "0.9390378 0.3191593", ButtonMuteAnchorMin = "0.04152405 0.1677083", ButtonMuteAnchorMax = "0.9584759 0.238659", ButtonMuteAllAnchorMin = "0.04152405 0.0913007", ButtonMuteAllAnchorMax = "0.9584759 0.1622516", ButtonMuteVoiceAllAnchorMin = "0.04152405 0.01489319", ButtonMuteVoiceAllAnchorMax = "0.9584759 0.08584419",
                                }
                                , SliderAndDropListBlock = new Interface.InterfacePosition.MainPanel.SliderAndDropListBlocks {
                                    TitleSliderAndDropListRankAnchorMin = "0.04152405 0.761226", TitleSliderAndDropListRankAnchorMax = "0.4430331 0.8103468", SliderAndDropListRankAnchorMin = "0.4430331 0.7653192", SliderAndDropListRankAnchorMax = "0.9584759 0.81", TitleSliderAndDropListChatColorAnchorMin = "0.04152405 0.8117096", TitleSliderAndDropListChatColorAnchorMax = "0.4430331 0.8649233", SliderAndDropListChatColorAnchorMin = "0.4430331 0.8198956", SliderAndDropListChatColorAnchorMax = "0.9584758 0.8645764", TitleSliderAndDropListNickColorAnchorMin = "0.04152405 0.8717443", TitleSliderAndDropListNickColorAnchorMax = "0.4430331 0.9194997", SliderAndDropListNickColorAnchorMin = "0.4430331 0.8744721", SliderAndDropListNickColorAnchorMax = "0.9584758 0.9191527", TitleSliderAndDropListPrefixAnchorMin = "0.04152405 0.9222281", TitleSliderAndDropListPrefixAnchorMax = "0.4430331 0.9740761", SliderAndDropListPrefixAnchorMin = "0.4430331 0.9290484", SliderAndDropListPrefixAnchorMax = "0.9584758 0.9737292",
                                }
                                , SettingBlock = new Interface.InterfacePosition.MainPanel.SettingBlocks {
                                    TitleSettingAnchorMin = "0.04152405 0.6779985", TitleSettingAnchorMax = "0.6196045 0.7489485", SettingPMLabelAnchorMin = "0.04312925 0.6411574", SettingPMLabelAnchorMax = "0.4125344 0.6779992", SettingBroadcastAnchorMin = "0.04312925 0.5974963", SettingBroadcastAnchorMax = "0.4125344 0.6343381", SettingAlertAnchorMin = "0.584079 0.6411574", SettingAlertAnchorMax = "0.9534805 0.6779992", SettingSoundAnchorMin = "0.584079 0.5974963", SettingSoundAnchorMax = "0.9534805 0.6343381", BoxSettingPMLabelAnchorMin = "0.38664 0.6425239", BoxSettingPMLabelAnchorMax = "0.4251647 0.67527", BoxSettingBroadcastAnchorMin = "0.38664 0.5988628", BoxSettingBroadcastAnchorMax = "0.4251647 0.6316", BoxSettingSoundAnchorMin = "0.5600009 0.5988628", BoxSettingSoundAnchorMax = "0.5985249 0.6316088", BoxSettingAlertAnchorMin = "0.5600009 0.6425239", BoxSettingAlertAnchorMax = "0.5985249 0.67527",
                                }
                                ,
                            }
                            , MutePanels = new Interface.InterfacePosition.MutePanel {
                                BackgroundAnchorMin = "0.0130322 0.1186", BackgroundAnchorMax = "0.57 0.8814",
                            }
                            , IgnoredPanels = new Interface.InterfacePosition.IgnoredPanel {
                                BackgroundAnchorMin = "0.0130322 0.1186", BackgroundAnchorMax = "0.57 0.8814"
                            }
                        }
                        , AlertInterfaceSetting = new Interface.AlertInterfaceSettings {
                            AnchorMin = "0 1", AnchorMax = "0 1", OffsetMin = "10 -70", OffsetMax = "330 -20"
                        }
                        , OtherSettingInterface = new Interface.OtherSettingsInterface {
                            DropListColorChatUse = false, DropListColorNickUse = false, DropListPrefixUse = false, DropListRankUse = false,
                        }
                    }
                    , OtherSetting = new OtherSettings {
                        UseDiscord = false, WebhooksChatLog = "", WebhooksMuteInfo = "",
                    }
                    , AnswerMessages = new AnswerMessage {
                        UseAnswer = true, AnswerMessageList = new Dictionary<string, string> {
                            ["вайп"]
                            = "Вайп будет 27.06", ["wipe"] = "Вайп будет 27.06", ["читер"] = "Нашли читера?Напиши /report и отправь жалобу"
                        }
                    }
                    , ReferenceSetting = new ReferenceSettings {
                        XDNotificationsSettings = new ReferenceSettings.XDNotifications {
                            UseXDNotifications = false, AlertDelete = 5, Color = "#762424FF", SoundEffect = "",
                        }
                        , IQFakeActiveSettings = new ReferenceSettings.IQFakeActive {
                            UseIQFakeActive = true,
                        }
                        , IQRankSystems = new ReferenceSettings.IQRankSystem {
                            UseRankSystem = false, UseTimeStandart = true
                        }
                        , IQModalMenuSettings = new ReferenceSettings.IQModalMenu {
                            Sprite = "assets/icons/translate.png", Avatar = "",
                        }
                    }
                }
                ;
            }
        }
        protected override void LoadConfig() {
            base.LoadConfig();
            try {
                config = Config.ReadObject<Configuration>();
                if (config == null) LoadDefaultConfig();
                if(config.InterfaceChat.OtherSettingInterface == null) {
                    config.InterfaceChat.OtherSettingInterface = new Configuration.Interface.OtherSettingsInterface {
                        DropListColorChatUse = false, DropListColorNickUse = false, DropListPrefixUse = false, DropListRankUse = false,
                    }
                    ;
                }
                if(config.InterfaceChat.InterfacePositions == null) {
                    config.InterfaceChat.InterfacePositions = new Configuration.Interface.InterfacePosition {
                        MainPanels = new Configuration.Interface.InterfacePosition.MainPanel {
                            BackgroundAnchorMin = "0.6625 0.1186", BackgroundAnchorMax = "0.9869678 0.8814", ContentAnchorMin = "0 0", ContentAnchorMax = "1 0.8896463", TitleAnchorMin = "0 0.8896463", TitleAnchorMax = "1 1", CloseButtonAnchorMin = "0.9037238 0.3409882", CloseButtonAnchorMax = "0.95509 0.6929768", TitleLabelAnchorMin = "0.04494545 0", TitleLabelAnchorMax = "0.739994 1", InfromationBlock = new Configuration.Interface.InterfacePosition.MainPanel.InfromationBlocks {
                                TitleLabelAnchorMin = "0.04152404 0.5224559", TitleLabelAnchorMax = "0.6196045 0.5934054", MutedLabelAnchorMin = "0.04152404 0.4078422", MutedLabelAnchorMax = "0.9486688 0.46788", NickPlayerAnchorMin =
// ... [Code preview truncated due to length. Full source in attached file] ...

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

Другие ресурсы пользователя 15FPS

Сверху