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] ...