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

FREE IQChat : 2.3.46 2.3.46

Нет прав для скачивания
C#:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
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;
using UnityEngine.Networking;
namespace Oxide.Plugins {
    [Info("IQChat", "x0z", "2.3.46")]
    [Description("The most pleasant chat for your server from the IQ branch")]
    class IQChat : RustPlugin {
        /// <summary>
        /// Update 2.2.x
        /// - Fixed the possibility of using markup tags in /pm and /r
        /// - The path was changed for the data file, the new path is IQSystem/IQChat (The plugin itself will transfer all the data and inform you about it to the console, after the message about the successful transfer and checking the new ones files - you can delete old files)
        /// - Changed and improved the method of searching for "bad words" in the chat.Added ignoring the case of words
        /// - Changed the check for issuing automatic muta for "bad words"
        /// - "Link protection" has been added to the formatting of nicknames - they will be deleted
        /// - The method of searching for "banned nicknames" has been changed and improved.Added ignoring the case of words
        /// - Added the "Protection from noobs" functionality, players who are connected for the first time will not be able to write to the chat /pm/r N time, configured in the configuration
        /// - When the "Protection from noobs" is enabled, old players will be transferred to the protection
        /// Update 2.3.x
        /// - Correction of CAPS formatting
#region Reference
        [PluginReference]
        Plugin ImageLibrary, IQPersonal, IQFakeActive, IQRankSystem;
#region ImageLibrary
        private String GetImage(String fileName, UInt64 skin = 0) {
            var imageId = (String)plugins.Find("ImageLibrary").CallHook("ImageUi.GetImage", fileName, skin);
            if (!string.IsNullOrEmpty(imageId)) return imageId;
            return String.Empty;
        }
        public Boolean AddImage(String url, String shortname, UInt64 skin = 0) => (Boolean)ImageLibrary?.Call("AddImage", url, shortname, skin);
#endregion
#region IQPersonal
        public void IQPersonalSendSetMute(BasePlayer player) => IQPersonal?.CallHook("API_SET_MUTE", player.userID);
        public void IQPersonalSendBadWords(BasePlayer player) => IQPersonal?.CallHook("API_DETECTED_BAD_WORDS", player.userID);
#endregion
#region IQFakeActive
        public void RemoveReserved(UInt64 userID) {
            if (!IQFakeActive) return;
            IQFakeActive?.Call("RemoveReserver", userID);
        }
        public bool IsFake(UInt64 userID) {
            if (!IQFakeActive) return false;
            return (bool)IQFakeActive?.Call("IsFake", userID);
        }
        public bool IsFake(String DisplayName) {
            if (!IQFakeActive) return false;
            return (bool)IQFakeActive?.Call("IsFake", DisplayName);
        }
        void SyncReservedFinish(string JSON) {
            if (!config.ReferenceSetting.IQFakeActiveSettings.UseIQFakeActive) return;
            List<FakePlayer> ContentDeserialize = JsonConvert.DeserializeObject<List<FakePlayer>>(JSON);
            PlayerBases = ContentDeserialize;
            PrintWarning("IQChat - успешно синхронизирована с IQFakeActive");
            PrintWarning("=============SYNC==================");
        }
        public string FindFakeName(ulong userID) => (string)IQFakeActive?.Call("FindFakeName", userID);
        public List<FakePlayer> PlayerBases = new List<FakePlayer>();
        public class FakePlayer {
            public ulong UserID;
            public string DisplayName;
        }
#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 static IQChat _;
        static Double CurrentTime => Facepunch.Math.Epoch.Current;
        public enum MuteType {
            Chat, Voice
        }
        private enum SelectedAction {
            Mute, Ignore
        }
        private enum SelectedParametres {
            DropList, Slider
        }
        private enum TakeElementUser {
            Prefix, Nick, Chat, Rank, MultiPrefix
        }
        private enum ElementsSettingsType {
            PM, Broadcast, Alert, Sound
        }
        public Dictionary<BasePlayer, BasePlayer> PMHistory = new Dictionary<BasePlayer, BasePlayer>();
        public Dictionary<BasePlayer, List<String>> LastMessagesChat = new Dictionary<BasePlayer, List<String>>();
        private const String PermissionHideOnline = "iqchat.onlinehide";
        private const String PermissionMute = "iqchat.muteuse";
        private const String PermissionAlert = "iqchat.alertuse";
        private const String PermissionRename = "iqchat.renameuse";
        private const String PermissionAntiSpam = "iqchat.antispamabuse";
        private const String PermissionHideConnection = "iqchat.hideconnection";
        private const String PermissionHideDisconnection = "iqchat.hidedisconnection";
        private const String PermissionMutedAdmin = "iqchat.adminmuted";
        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 {
#region Controller Connection
            [JsonProperty("Настройка информации о игроке")]
            public ControllerConnection ControllerConnect = new ControllerConnection();
            internal class ControllerConnection {
                [JsonProperty("Function switches")]
                public Turned Turneds = new Turned();
                [JsonProperty("Setting standard values")]
                public SetupDefault SetupDefaults = new SetupDefault();
                internal class SetupDefault {
                    [JsonProperty("This prefix will be set if the player first logged on to the server or if the rights to the prefix that he had previously expired")]
                    public String PrefixDefault = "<color=#CC99FF>[PLAYER]</color>";
                    [JsonProperty("This nickname color will be set if the player logged into the server for the first time or if the rights to the nickname color that he had previously ended")]
                    public String NickDefault = "#33CCCC";
                    [JsonProperty("This chat color will be set if the player logged into the server for the first time or if the rights to the chat color that he had previously expired")]
                    public String MessageDefault = "#0099FF";
                }
                internal class Turned {
                    [JsonProperty("Set the prefix automatically to the player when he got the rights to it")]
                    public Boolean TurnAutoSetupPrefix;
                    [JsonProperty("Set the nickname color automatically to the player when he got the rights to it")]
                    public Boolean TurnAutoSetupColorNick;
                    [JsonProperty("Set the chat color automatically to the player when he got the rights to it")]
                    public Boolean TurnAutoSetupColorChat;
                    [JsonProperty("Reset the prefix automatically when the player's rights to it expire")]
                    public Boolean TurnAutoDropPrefix;
                    [JsonProperty("Reset the nickname color automatically when the player's rights to it expire")]
                    public Boolean TurnAutoDropColorNick;
                    [JsonProperty("Reset the chat color automatically when the player's rights to it expire")]
                    public Boolean TurnAutoDropColorChat;
                }
            }
#endregion
#region Controller Parameters
            [JsonProperty("Setting parameters for the player")]
            public ControllerParameters ControllerParameter = new ControllerParameters();
            internal class ControllerParameters {
                [JsonProperty("Setting up the display of parameters for player selection")]
                public VisualSettingParametres VisualParametres = new VisualSettingParametres();
                [JsonProperty("List and customize colors for a nickname")]
                public List<AdvancedFuncion> NickColorList = new List<AdvancedFuncion>();
                [JsonProperty("List and customize colors for chat messages")]
                public List<AdvancedFuncion> MessageColorList = new List<AdvancedFuncion>();
                [JsonProperty("List and configure prefixes in the chat")]
                public PrefixSetting Prefixes = new PrefixSetting();
                internal class PrefixSetting {
                    [JsonProperty("Enable support for multiple prefixes at once (true - you can set multiple prefixes/false - you can set only 1 to choose from)")]
                    public Boolean TurnMultiPrefixes;
                    [JsonProperty("The maximum number of prefixes that can be set at a time (This parameter only works if multiple prefixes are enabled)")]
                    public Int32 MaximumMultiPrefixCount;
                    [JsonProperty("List of prefixes and their settings")]
                    public List<AdvancedFuncion> Prefixes = new List<AdvancedFuncion>();
                }
                internal class AdvancedFuncion {
                    [JsonProperty("Permissions")]
                    public String Permissions;
                    [JsonProperty("Argument")]
                    public String Argument;
                }
                internal class VisualSettingParametres {
                    [JsonProperty("The type of prefix selection display for the player is (0 - drop-down list, 1 - slider (Note that if you have multi-prefix enabled, a drop-down list will be set))")]
                    public SelectedParametres PrefixType;
                    [JsonProperty("The type of display of the nickname color selection for the player - (0 - drop-down list, 1 - slider)")]
                    public SelectedParametres NickColorType;
                    [JsonProperty("The type of display of the message color selection for the player - (0 - drop-down list, 1 - slider)")]
                    public SelectedParametres ChatColorType;
                    [JsonProperty("IQRankSystem: Display type of rank selection for a player - (0 - drop - down list, 1 - slider)")]
                    public SelectedParametres IQRankSystemType;
                }
            }
#endregion
#region Controller Mute
            [JsonProperty("Setting up mute in the plugin")]
            public ControllerMute ControllerMutes = new ControllerMute();
            internal class ControllerMute {
                [JsonProperty("Setting up an automatic mute")]
                public AutoMute AutoMuteSettings = new AutoMute();
                internal class AutoMute {
                    [JsonProperty("Enable automatic mute for forbidden words (true - yes/false - no)")]
                    public Boolean UseAutoMute;
                    [JsonProperty("The reason for the automatic mute")]
                    public Muted AutoMuted;
                }
                [JsonProperty("Additional setting for logging about mute in discord")]
                public LoggedFuncion LoggedMute = new LoggedFuncion();
                internal class LoggedFuncion {
                    [JsonProperty("Support for logging the last N messages (Logging in the mute discord must be enabled)")]
                    public Boolean UseHistoryMessage;
                    [JsonProperty("How many recent player messages to send in logging")]
                    public Int32 CountHistoryMessage;
                }
                [JsonProperty("Reasons to block the chat")]
                public List<Muted> MuteChatReasons = new List<Muted>();
                [JsonProperty("Reasons for Voice Blocking")]
                public List<Muted> MuteVoiceReasons = new List<Muted>();
                internal class Muted {
                    [JsonProperty("Reason for blocking")]
                    public String Reason;
                    [JsonProperty("Blocking time (in seconds)")]
                    public Int32 SecondMute;
                }
            }
#endregion
#region Controller Message
            [JsonProperty("Configuring Message Processing")]
            public ControllerMessage ControllerMessages = new ControllerMessage();
            internal class ControllerMessage {
                [JsonProperty("Basic configuration of chat messages from the plugin")]
                public GeneralSettings GeneralSetting = new GeneralSettings();
                [JsonProperty("Setting up the functionality switching in the chat")]
                public TurnedFuncional TurnedFunc = new TurnedFuncional();
                [JsonProperty("Configuring the formatting of player messages")]
                public FormattingMessage Formatting = new FormattingMessage();
                internal class GeneralSettings {
                    [JsonProperty("Setting up the chat notification format")]
                    public BroadcastSettings BroadcastFormat = new BroadcastSettings();
                    [JsonProperty("Setting up the chat mention format, via @")]
                    public AlertSettings AlertFormat = new AlertSettings();
                    [JsonProperty("Additional configuration")]
                    public OtherSettings OtherSetting = new OtherSettings();
                    internal class BroadcastSettings {
                        [JsonProperty("Name of the notification in the chat")]
                        public String BroadcastTitle;
                        [JsonProperty("The color of the notification message in the chat")]
                        public String BroadcastColor;
                        [JsonProperty("Steam64ID for the avatar in the chat")]
                        public String Steam64IDAvatar;
                    }
                    internal class AlertSettings {
                        [JsonProperty("The color of the message mentioning the player in the chat")]
                        public String AlertPlayerColor;
                        [JsonProperty("Sound when receiving and sending mentions via @")]
                        public String SoundAlertPlayer;
                    }
                    internal class OtherSettings {
                        [JsonProperty("The time after which the message from the UI from the administrator will be deleted")]
                        public Int32 TimeDeleteAlertUI;
                        [JsonProperty("The size of the message from the player in the chat")]
                        public Int32 SizeMessage = 14;
                        [JsonProperty("The size of the player's nickname in the chat")]
                        public Int32 SizeNick = 14;
                        [JsonProperty("The size of the player's prefix in the chat (will be used if <size=N></size> is not set in the prefix itself)")]
                        public Int32 SizePrefix = 14;
                    }
                }
                internal class TurnedFuncional {
                    [JsonProperty("Setting up Spam protection")]
                    public AntiSpam AntiSpamSetting = new AntiSpam();
                    [JsonProperty("Setting up a temporary chat lock for beginners (who have just logged on to the server)")]
                    public AntiNoob AntiNoobSetting = new AntiNoob();
                    [JsonProperty("Setting up Private messages")]
                    public PM PMSetting = new PM();
                    internal class AntiNoob {
                        [JsonProperty("Protection from a beginner in PM/R")]
                        public Settings AntiNoobPM = new Settings();
                        [JsonProperty("Protection from a newcomer in global and command chat")]
                        public Settings AntiNoobChat = new Settings();
                        internal class Settings {
                            [JsonProperty("Enable protection?")]
                            public Boolean AntiNoobActivate = false;
                            [JsonProperty("Chat blocking time for a beginner")]
                            public Int32 TimeBlocked = 1200;
                        }
                    }
                    internal class AntiSpam {
                        [JsonProperty("Enable spam protection (Antispam)")]
                        public Boolean AntiSpamActivate;
                        [JsonProperty("The time after which the player can send a message (anti-SPAM)")]
                        public Int32 FloodTime;
                        [JsonProperty("Additional Anti-Spam Settings")]
                        public AntiSpamDuples AntiSpamDuplesSetting = new AntiSpamDuples();
                        internal class AntiSpamDuples {
                            [JsonProperty("Enable additional spam protection (Anti-duplicates, repeating messages)")]
                            public Boolean AntiSpamDuplesActivate = true;
                            [JsonProperty("How many duplicate messages does a player need to make in order to be confused by the system")]
                            public Int32 TryDuples = 3;
                            [JsonProperty("Setting up automatic mute for duplicates")]
                            public ControllerMute.Muted MuteSetting = new ControllerMute.Muted {
                                Reason = "Blocking for duplicate messages (SPAM)", SecondMute = 300,
                            }
                            ;
                        }
                    }
                    internal class PM {
                        [JsonProperty("Enable private messages")]
                        public Boolean PMActivate;
                        [JsonProperty("Sound when receiving a private message")]
                        public String SoundPM;
                    }
                    [JsonProperty("Enable ignore BOS to players (/ignore nick or via the interface)")]
                    public Boolean IgnoreUsePM;
                    [JsonProperty("Hide the issue of items to the Admin from the chat")]
                    public Boolean HideAdminGave;
                    [JsonProperty("Transfer mute to the team chat(In the case of mute, the player will not be able to write even to the team chat)")]
                    public Boolean MuteTeamChat;
                }
                internal class FormattingMessage {
                    [JsonProperty("Enable message formatting [Will control caps, message format] (true - yes/false - no)")]
                    public Boolean FormatMessage;
                    [JsonProperty("Use a list of forbidden words (true - yes/false - no)")]
                    public Boolean UseBadWords;
                    [JsonProperty("The word that will replace the forbidden word")]
                    public String ReplaceBadWord;
                    [JsonProperty("List of forbidden words")]
                    public List<String> BadWords = new List<String>();
                    [JsonProperty("Configuring the Nickname Controller")]
                    public NickController ControllerNickname = new NickController();
                    internal class NickController {
                        [JsonProperty("Enable formatting of player nicknames (message formatting must be enabled)")]
                        public Boolean UseNickController = true;
                        [JsonProperty("The word that will replace the forbidden word (You can leave it empty and will just delete it)")]
                        public String ReplaceBadNick = "****";
                        [JsonProperty("List of banned nicknames")]
                        public List<String> BadNicks = new List<String>();
                    }
                }
            }
#endregion
#region Controller Alert
            [JsonProperty("Setting up chat alerts")]
            public ControllerAlert ControllerAlertSetting;
            internal class ControllerAlert {
                [JsonProperty("Setting up chat alerts")]
                public Alert AlertSetting;
                [JsonProperty("Setting up player session status alerts")]
                public PlayerSession PlayerSessionSetting;
                [JsonProperty("Setting up administrator session status alerts")]
                public AdminSession AdminSessionSetting;
                [JsonProperty("Setting up personal notifications to the player when connecting")]
                public PersonalAlert PersonalAlertSetting;
                internal class Alert {
                    [JsonProperty("Enable automatic chat messages (true - yes/false - no)")]
                    public Boolean AlertMessage;
                    [JsonProperty("Type of automatic messages : true - sequential/false - random")]
                    public Boolean AlertMessageType;
                    [JsonProperty("List of automatic chat messages")]
                    public List<String> MessageList;
                    [JsonProperty("The interval for sending messages to the chat (Broadcaster) (in seconds)")]
                    public Int32 MessageListTimer;
                }
                internal class PlayerSession {
                    [JsonProperty("When a player is notified of entry/exit, display his avatar opposite the nickname (true - yes/false - no)")]
                    public Boolean ConnectedAvatarUse;
                    [JsonProperty("Notify the chat about the player's entry (true - yes/false - no)")]
                    public Boolean ConnectedAlert;
                    [JsonProperty("Enable random notifications about the entry of a player from the list (true - yes/false - no)")]
                    public Boolean ConnectionAlertRandom;
                    [JsonProperty("Display the country of the visiting player (true - yes/false - no")]
                    public Boolean ConnectedWorld;
                    [JsonProperty("Notify about the player's exit to the chat (selected from the list) (true - yes/false - no)")]
                    public Boolean DisconnectedAlert;
                    [JsonProperty("Enable random player exit notifications (true - yes/false - no)")]
                    public Boolean DisconnectedAlertRandom;
                    [JsonProperty("Display the reason for the player's exit (true - yes/false - no)")]
                    public Boolean DisconnectedReason;
                    [JsonProperty("Random notifications about player entry ({0} - player's nickname, {1} - country (if country display is enabled)")]
                    public List<String> RandomConnectionAlert = new List<String>();
                    [JsonProperty("Random notifications about the player's exit ({0} - the player's nickname, {1} - the reason for the exit (if the reason is enabled)")]
                    public List<String> RandomDisconnectedAlert = new List<String>();
                }
                internal class AdminSession {
                    [JsonProperty("Notify the admin of the server's login to the chat (true - yes/false - no)")]
                    public Boolean ConnectedAlertAdmin;
                    [JsonProperty("Notify the admin of the server's exit to the chat (true - yes/false - no)")]
                    public Boolean DisconnectedAlertAdmin;
                }
                internal class PersonalAlert {
                    [JsonProperty("Enable a random message to a visiting player (true - yes/false - no)")]
                    public Boolean UseWelcomeMessage;
                    [JsonProperty("List of messages to the player at the entrance")]
                    public List<String> WelcomeMessage = new List<String>();
                }
            }
#endregion
#region Rust Plus
            [JsonProperty("Setting up Rust+")]
            public RustPlus RustPlusSettings;
            internal class RustPlus {
                [JsonProperty("Use Rust+")]
                public Boolean UseRustPlus;
                [JsonProperty("Name for Rust+ notification")]
                public String DisplayNameAlert;
            }
#endregion
#region Reference Setting
            [JsonProperty("Configuring support plugins")]
            public ReferenceSettings ReferenceSetting = new ReferenceSettings();
            internal class ReferenceSettings {
                [JsonProperty("Setting up IQFakeActive")]
                public IQFakeActive IQFakeActiveSettings = new IQFakeActive();
                [JsonProperty("Setting up IQRankSystem")]
                public IQRankSystem IQRankSystems = new IQRankSystem();
                internal class IQRankSystem {
                    [JsonProperty("The format for displaying the rank in the chat ({0} is the rank of the user, do not delete this value)")]
                    public String FormatRank = "[{0}]";
                    [JsonProperty("The format for displaying the time with Inksystem in the chat ({0} is the user's time, do not delete this value)")]
                    public String FormatRankTime = "[{0}]";
                    [JsonProperty("Use rank support")]
                    public Boolean UseRankSystem;
                    [JsonProperty("Display the players their time played next to the rank")]
                    public Boolean UseTimeStandart;
                }
                internal class IQFakeActive {
                    [JsonProperty("Use IQFakeActive support")]
                    public Boolean UseIQFakeActive;
                }
            }
#endregion
#region Anwser Setting
            [JsonProperty("Setting up an answering machine")]
            public AnswerMessage AnswerMessages = new AnswerMessage();
            internal class AnswerMessage {
                [JsonProperty("Turn on the answering machine?(true - yes/false - no)")]
                public bool UseAnswer;
                [JsonProperty("Message Setup [Keyword] = Answer")]
                public Dictionary<String, String> AnswerMessageList = new Dictionary<String, String>();
            }
#endregion
#region Other Setting
            [JsonProperty("Additional configuration")]
            public OtherSettings OtherSetting;
            internal class OtherSettings {
                [JsonProperty("Configuring Message logging")]
                public LoggedChat LogsChat = new LoggedChat();
                [JsonProperty("Setting up logging of personal messages of players")]
                public General LogsPMChat = new General();
                [JsonProperty("Setting up logging of chat/voice locks/unblocks")]
                public General LogsMuted = new General();
                [JsonProperty("Setting up logging of chat commands from players")]
                public General LogsChatCommands = new General();
                internal class LoggedChat {
                    [JsonProperty("Setting up General Chat logging")]
                    public General GlobalChatSettings = new General();
                    [JsonProperty("Setting up tim chat logging")]
                    public General TeamChatSettings = new General();
                }
                internal class General {
                    [JsonProperty("Enable logging (true - yes/false - no)")]
                    public Boolean UseLogged = false;
                    [JsonProperty("Webhooks of the logging channel")]
                    public String Webhooks = "";
                }
            }
#endregion
            public Dictionary<String, String> KeyImages = new Dictionary<string, string>();
            public static Configuration GetNewConfiguration() {
                return new Configuration {
#region Controller Parameter
                    ControllerParameter = new ControllerParameters {
                        VisualParametres = new ControllerParameters.VisualSettingParametres {
                            PrefixType = SelectedParametres.DropList, ChatColorType = SelectedParametres.DropList, NickColorType = SelectedParametres.Slider, IQRankSystemType = SelectedParametres.Slider,
                        }
                        , Prefixes = new ControllerParameters.PrefixSetting {
                            TurnMultiPrefixes = false, MaximumMultiPrefixCount = 5, Prefixes = new List<ControllerParameters.AdvancedFuncion> {
                                new ControllerParameters.AdvancedFuncion {
                                    Argument = "<color=#CC99FF>[ИГРОК]</color>", Permissions = "iqchat.default",
                                }
                                , new ControllerParameters.AdvancedFuncion {
                                    Argument = "<color=#ffff99>[VIP]</color>", Permissions = "iqchat.admin",
                                }
                                , new ControllerParameters.AdvancedFuncion {
                                    Argument = "<color=#ff9999>[АДМИН]</color>", Permissions = "iqchat.admin",
                                }
                                ,
                            }
                            ,
                        }
                        , MessageColorList = new List<ControllerParameters.AdvancedFuncion> {
                            new ControllerParameters.AdvancedFuncion {
                                Argument = "#CC99FF", Permissions = "iqchat.default",
                            }
                            , new ControllerParameters.AdvancedFuncion {
                                Argument = "#ffff99", Permissions = "iqchat.admin",
                            }
                            , new ControllerParameters.AdvancedFuncion {
                                Argument = "#ff9999", Permissions = "iqchat.admin",
                            }
                            ,
                        }
                        , NickColorList = new List<ControllerParameters.AdvancedFuncion> {
                            new ControllerParameters.AdvancedFuncion {
                                Argument = "#CC99FF", Permissions = "iqchat.default",
                            }
                            , new ControllerParameters.AdvancedFuncion {
                                Argument = "#ffff99", Permissions = "iqchat.admin",
                            }
                            , new ControllerParameters.AdvancedFuncion {
                                Argument = "#ff9999", Permissions = "iqchat.admin",
                            }
                            ,
                        }
                        ,
                    }
                    ,
#endregion
#region Controller Connect
                    ControllerConnect = new ControllerConnection {
                        SetupDefaults = new ControllerConnection.SetupDefault {
                            PrefixDefault = "<color=#CC99FF>[ИГРОК]</color>", MessageDefault = "#33CCCC", NickDefault = "#0099FF",
                        }
                        , Turneds = new ControllerConnection.Turned {
                            TurnAutoDropColorChat = true, TurnAutoDropColorNick = true, TurnAutoDropPrefix = true, TurnAutoSetupColorChat = true, TurnAutoSetupColorNick = true, TurnAutoSetupPrefix = true,
                        }
                    }
                    ,
#endregion
#region Controller Mute
                    ControllerMutes = new ControllerMute {
                        LoggedMute = new ControllerMute.LoggedFuncion {
                            UseHistoryMessage = false, CountHistoryMessage = 10,
                        }
                        , AutoMuteSettings = new ControllerMute.AutoMute {
                            UseAutoMute = true, AutoMuted = new ControllerMute.Muted {
                                Reason = "Автоматическая блокировка чата", SecondMute = 300,
                            }
                        }
                        , MuteChatReasons = new List<ControllerMute.Muted> {
                            new ControllerMute.Muted {
                                Reason = "Агрессивное поведение", SecondMute = 100,
                            }
                            , new ControllerMute.Muted {
                                Reason = "Оскорбления", SecondMute = 300,
                            }
                            , new ControllerMute.Muted {
                                Reason = "Оскорбление (повторное нарушение)", SecondMute = 1000,
                            }
                            , new ControllerMute.Muted {
                                Reason = "Реклама", SecondMute = 5000,
                            }
                            , new ControllerMute.Muted {
                                Reason = "Унижение", SecondMute = 300,
                            }
                            , new ControllerMute.Muted {
                                Reason = "Спам", SecondMute = 60,
                            }
                            ,
                        }
                        , MuteVoiceReasons = new List<ControllerMute.Muted> {
                            new ControllerMute.Muted {
                                Reason = "Агрессивное поведение", SecondMute = 100,
                            }
                            , new ControllerMute.Muted {
                                Reason = "Оскорбления", SecondMute = 300,
                            }
                            , new ControllerMute.Muted {
                                Reason = "Срыв мероприятия криками", SecondMute = 300,
                            }
                            ,
                        }
                    }
                    ,
#endregion
#region Controller Message
                    ControllerMessages = new ControllerMessage {
                        Formatting = new ControllerMessage.FormattingMessage {
                            UseBadWords = true, BadWords = new List<String> {
                                "бля", "сука", "говно", "тварь"
                            }
                            , FormatMessage = true, ReplaceBadWord = "***", ControllerNickname = new ControllerMessage.FormattingMessage.NickController {
                                BadNicks = new List<String> {
                                    "Администратор", "Модератор", "Админ", "Модер", "Овнер", "Mercury Loh", "IQchat"
                                }
                                , ReplaceBadNick = "", UseNickController = true,
                            }
                            ,
                        }
                        , TurnedFunc = new ControllerMessage.TurnedFuncional {
                            HideAdminGave = true, IgnoreUsePM = true, MuteTeamChat = true, AntiNoobSetting = new ControllerMessage.TurnedFuncional.AntiNoob {
                                AntiNoobChat = new ControllerMessage.TurnedFuncional.AntiNoob.Settings {
                                    AntiNoobActivate = false, TimeBlocked = 1200,
                                }
                                , AntiNoobPM = new ControllerMessage.TurnedFuncional.AntiNoob.Settings {
                                    AntiNoobActivate = false, TimeBlocked = 1200,
                                }
                                ,
                            }
                            , AntiSpamSetting = new ControllerMessage.TurnedFuncional.AntiSpam {
                                AntiSpamActivate = true, FloodTime = 10, AntiSpamDuplesSetting = new ControllerMessage.TurnedFuncional.AntiSpam.AntiSpamDuples {
                                    AntiSpamDuplesActivate = true, MuteSetting = new ControllerMute.Muted {
                                        Reason = "Повторяющиеся сообщения (СПАМ)", SecondMute = 300,
                                    }
                                    , TryDuples = 3,
                                }
                            }
                            , PMSetting = new ControllerMessage.TurnedFuncional.PM {
                                PMActivate = true, SoundPM = "assets/bundled/prefabs/fx/notice/stack.world.fx.prefab",
                            }
                            ,
                        }
                        , GeneralSetting = new ControllerMessage.GeneralSettings {
                            BroadcastFormat = new ControllerMessage.GeneralSettings.BroadcastSettings {
                                BroadcastColor = "#efedee", BroadcastTitle = "<color=#68cacd><b>[ОПОВЕЩЕНИЕ]</b></color>", Steam64IDAvatar = "0",
                            }
                            , AlertFormat = new ControllerMessage.GeneralSettings.AlertSettings {
                                AlertPlayerColor = "#efedee", SoundAlertPlayer = "assets/bundled/prefabs/fx/notice/item.select.fx.prefab",
                            }
                            , OtherSetting = new ControllerMessage.GeneralSettings.OtherSettings {
                                TimeDeleteAlertUI = 5, SizePrefix = 14, SizeMessage = 14, SizeNick = 14,
                            }
                        }
                        ,
                    }
                    ,
#endregion
#region Controller Alert
                    ControllerAlertSetting = new ControllerAlert {
                        AlertSetting = new ControllerAlert.Alert {
                            AlertMessage = true, AlertMessageType = false, MessageList = new List<String> {
                                "Автоматическое сообщение #1 (Редактировать в конфигурации)", "Автоматическое сообщение #2 (Редактировать в конфигурации)", "Автоматическое сообщение #3 (Редактировать в конфигурации)", "Автоматическое сообщение #4 (Редактировать в конфигурации)", "Автоматическое сообщение #5 (Редактировать в конфигурации)", "Автоматическое сообщение #6 (Редактировать в конфигурации)",
                            }
                            , MessageListTimer = 60,
                        }
                        , AdminSessionSetting = new ControllerAlert.AdminSession {
                            ConnectedAlertAdmin = false, DisconnectedAlertAdmin = false,
                        }
                        , PlayerSessionSetting = new ControllerAlert.PlayerSession {
                            ConnectedAlert = true, ConnectedAvatarUse = true, ConnectedWorld = true, ConnectionAlertRandom = false, DisconnectedAlert = true, DisconnectedAlertRandom = false, DisconnectedReason = true, RandomConnectionAlert = new List<String> {
                                "{0} влетел как дурачок из {1}", "{0} залетел на сервер из {1}, соболезнуем", "{0} прыгнул на сервачок"
                            }
                            , RandomDisconnectedAlert = new List<String> {
                                "{0} ушел в мир иной", "{0} вылетел с сервера с причиной {1}", "{0} пошел на другой сервачок"
                            }
                            ,
                        }
                        , PersonalAlertSetting = new ControllerAlert.PersonalAlert {
                            UseWelcomeMessage = true, WelcomeMessage = new List<String> {
                                "Добро пожаловать на сервер SUPERSERVER\nРады,что выбрал именно нас!", "С возвращением на сервер!\nЖелаем тебе удачи", "Добро пожаловать на сервер\nУ нас самые лучшие плагины",
                            }
                        }
                    }
                    ,
#endregion
#region Reference Setting
                    ReferenceSetting = new ReferenceSettings {
                        IQFakeActiveSettings = new ReferenceSettings.IQFakeActive {
                            UseIQFakeActive = true,
                        }
                        , IQRankSystems = new ReferenceSettings.IQRankSystem {
                            FormatRank = "[{0}]", FormatRankTime = "[{0}]", UseRankSystem = false, UseTimeStandart = true
                        }
                        ,
                    }
                    ,
#endregion
#region Rust Plus
                    RustPlusSettings = new RustPlus {
                        UseRustPlus = true, DisplayNameAlert = "СУПЕР СЕРВЕР",
                    }
                    ,
#endregion
#region Anwser Setting
                    AnswerMessages = new AnswerMessage {
                        UseAnswer = true, AnswerMessageList = new Dictionary<string, string> {
                            ["вайп"]
                            = "Вайп будет 27.06", ["wipe"] = "Вайп будет 27.06", ["читер"] = "Нашли читера?Напиши /report и отправь жалобу"
                        }
                    }
                    ,
#endregion
#region Other Setting
                    OtherSetting = new OtherSettings {
                        LogsChat = new OtherSettings.LoggedChat {
                            GlobalChatSettings = new OtherSettings.General {
                                UseLogged = false, Webhooks = "",
                            }
                            , TeamChatSettings = new OtherSettings.General {
                                UseLogged = false, Webhooks = "",
                            }
                        }
                        , LogsChatCommands = new OtherSettings.General {
                            UseLogged = false, Webhooks = "",
                        }
                        , LogsPMChat = new OtherSettings.General {
                            UseLogged = false, Webhooks = "",
                        }
                        , LogsMuted = new OtherSettings.General {
                            UseLogged = false, Webhooks = "",
                        }
                        ,
                    }
                    ,
#endregion
                    KeyImages = new Dictionary<String, String>() {
                        {
                            "UI_IQCHAT_CONTEXT_NO_RANK", "https://imgur.com/7AV4eG5.png"
                        }
                        , {
                            "UI_IQCHAT_CONTEXT_RANK", "https://imgur.com/dQ0ptBE.png"
                        }
                        , {
                            "IQCHAT_INFORMATION_ICON", "https://imgur.com/phcCykw.png"
                        }
                        , {
                            "IQCHAT_SETTING_ICON", "https://imgur.com/foT3lUr.png"
                        }
                        , {
                            "IQCHAT_IGNORE_INFO_ICON", "https://imgur.com/MEhsbTM.png"
                        }
                        , {
                            "IQCHAT_MODERATION_ICON", "https://imgur.com/2vJP8qM.png"
                        }
                        , {
                            "IQCHAT_ELEMENT_PANEL_ICON", "https://imgur.com/afRp7O0.png"
                        }
                        , {
                            "IQCHAT_ELEMENT_PREFIX_MULTI_TAKE_ICON", "https://imgur.com/6ohxadb.png"
                        }
                        , {
                            "IQCHAT_ELEMENT_SLIDER_ICON", "https://imgur.com/cx8ZoA7.png"
                        }
                        , {
                            "IQCHAT_ELEMENT_SLIDER_LEFT_ICON", "https://imgur.com/ZZP2kuy.png"
                        }
                        , {
                            "IQCHAT_ELEMENT_SLIDER_RIGHT_ICON", "https://imgur.com/g0VTWKD.png"
                        }
                        , {
                            "IQCHAT_ELEMENT_DROP_LIST_OPEN_ICON", "https://imgur.com/p9pIfXR.png"
                        }
                        , {
                            "IQCHAT_ELEMENT_DROP_LIST_OPEN_ARGUMENT_ICON", "https://imgur.com/HM1AuCF.png"
                        }
                        , {
                            "IQCHAT_ELEMENT_DROP_LIST_OPEN_TAKED", "https://imgur.com/gBvkzy0.png"
                        }
                        , {
                            "IQCHAT_ELEMENT_SETTING_CHECK_BOX", "https://imgur.com/tjkGj46.png"
                        }
                        , {
                            "IQCHAT_ALERT_PANEL", "https://i.imgur.com/sKKsKrs.png"
                        }
                        , {
                            "IQCHAT_MUTE_AND_IGNORE_PANEL", "https://imgur.com/bOS905f.png"
                        }
                        , {
                            "IQCHAT_MUTE_AND_IGNORE_ICON", "https://imgur.com/15myNzk.png"
                        }
                        , {
                            "IQCHAT_MUTE_AND_IGNORE_SEARCH", "https://imgur.com/S4c4Hc9.png"
                        }
                        , {
                            "IQCHAT_MUTE_AND_IGNORE_PAGE_PANEL", "https://imgur.com/Yo0You9.png"
                        }
                        , {
                            "IQCHAT_MUTE_AND_IGNORE_PLAYER", "https://imgur.com/JfDmg3P.png"
                        }
                        , {
                            "IQCHAT_MUTE_AND_IGNORE_PLAYER_STATUS", "https://imgur.com/dLiAv1i.png"
                        }
                        , {
                            "IQCHAT_IGNORE_ALERT_PANEL", "https://imgur.com/bJgQV1b.png"
                        }
                        , {
                            "IQCHAT_IGNORE_ALERT_ICON", "https://imgur.com/qKTHf8N.png"
                        }
                        , {
                            "IQCHAT_IGNORE_ALERT_BUTTON_YES", "https://imgur.com/NjQ9OVL.png"
                        }
                        , {
                            "IQCHAT_IGNORE_ALERT_BUTTON_NO", "https://imgur.com/Gzn47GY.png"
                        }
                        , {
                            "IQCHAT_MUTE_ALERT_PANEL", "https://imgur.com/f8dBS6M.png"
                        }
                        , {
                            "IQCHAT_MUTE_ALERT_ICON", "https://imgur.com/seBCx8G.png"
                        }
                        , {
                            "IQCHAT_MUTE_ALERT_PANEL_REASON", "https://imgur.co
// ... [Code preview truncated due to length. Full source in attached file] ...

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