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

FREE RAdminMenu : 2.0.4 2.0.4

Нет прав для скачивания
C#:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Xml;
using HarmonyLib;
using Newtonsoft.Json;
using Oxide.Core;
using Oxide.Core.Libraries;
using Oxide.Core.Libraries.Covalence;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using UnityEngine;
using UnityEngine.UI;
namespace Oxide.Plugins {
    [Info("RAdminMenu", "RustInnovate", "2.0.4")]
    [Description("Современное модульное меню администратора")]
    public class RAdminMenu : RustPlugin {
        // CHANGE: Компонент маскирования RectMask2D для аппаратной обрезки UI элементов внутри ScrollView
        private sealed class CuiRectMask2DComponent : ICuiComponent {
            public string Type => "UnityEngine.UI.RectMask2D";
        }
        // CHANGE: Ссылки на опциональные плагины для отображения в UserInfo
        [PluginReference]
        private Plugin Economics, ServerRewards, Clans;
#region Constants & Permissions
        // CHANGE: Базовые слои пользовательского интерфейса
        private const string LayerMain = "RAdminMenu.Main";
        private const string LayerNavigation = "RAdminMenu.Navigation";
        private const string LayerNavButtons = "RAdminMenu.NavButtons";
        private const string LayerHeader = "RAdminMenu.Header";
        private const string LayerHeaderTitle = "RAdminMenu.HeaderTitle";
        private const string LayerHeaderInfo = "RAdminMenu.HeaderInfo";
        private const string LayerContent = "RAdminMenu.Content";
        private const string LayerContentBody = "RAdminMenu.ContentBody";
        private const string LayerModal = "RAdminMenu.Modal";
        // CHANGE: Внутренняя фиксированная чувствительность скролла для плавной и быстрой прокрутки
        private const float SCROLL_SENSITIVITY = 50f;
#endregion
#region State Management
        private static RAdminMenu Instance;
        // CHANGE: Хранилище сессий интерфейса для каждого игрока
        private class AdminSession {
            public string CurrentCategory = "quickmenu";
            public string PlayerFilter = "online";
            public string PlayerSearch = "";
            public int PlayerPage = 0;
            public ulong SelectedUserId = 0;
            public string PluginSearch = "";
            public int PluginPage = 0;
            public string PermTargetType = "group";
            // "group" or "user"
            public string PermTargetName = "default";
            public string PermSelectedPlugin = "";
            public string PermSearch = "";
            public int PermPage = 0;
            public string ModalType = "";
            //"creategroup", "clonegroup"
            public string ModalInput = "";
            public string ModalInputSecondary = "";
            // CHANGE: Ожидающее подтверждения опасное действие (kill/strip_inv/revoke_bp/revoke_bp_granted)
            public string PendingAction = "";
            // CHANGE: Флаг открытого меню — фоновые таймеры обновления UI не шлют элементы, пока меню закрыто
            public bool MenuOpen = false;
            public bool TeleportToMarkerEnabled = false;
            // CHANGE: Поле ввода времени суток для администратора
            public string TimeInput = "12:00";
            // CHANGE: Подкатегория погоды и сохраненные значения пользовательского ввода
            public string WeatherSubCategory = "presets";
            public Dictionary<string, string> WeatherInputs = new Dictionary<string, string>();
            // CHANGE: Активное поле ввода с фокусом для скрытия плейсхолдера
            public string FocusedInput = "";
        }
        private readonly Dictionary<ulong, AdminSession> _sessions = new Dictionary<ulong, AdminSession>();
        private readonly HashSet<ulong> _tpMarkerPlayers = new HashSet<ulong>();
        // CHANGE: Креатив-режим полностью удалён из плагина: нативный клиент сам показывает выбор
        // строительных скинов в колесе плана при флаге CreativeMode + конваре creative.freebuild
        // (серверно подавить эти пункты нельзя), а скины построек на сервере реализованы плагином RRemove.private readonly Dictionary<ulong, SteamInfo> _cachedSteamInfo =
        new Dictionary<ulong, SteamInfo>();
        // CHANGE: Экземпляр Harmony для явного применения/снятия патчей при загрузке/выгрузке плагина
        private HarmonyLib.Harmony _harmony;
        public class SteamInfo {
            public string Location {
                get;
                set;
            }
            public string[] Avatars {
                get;
                set;
            }
            public string RegistrationDate {
                get;
                set;
            }
            public string RustHours {
                get;
                set;
            }
        }
#endregion
#region Configuration
        // CHANGE: Универсальный класс позиционирования согласно строгим правилам формата
        public class PanelSettings {
            [JsonProperty("Высота")]
            public int Height;
            [JsonProperty("Ширина")]
            public int Width;
            [JsonProperty("Вверх/вниз")]
            public int OffsetY;
            [JsonProperty("Влево/вправо")]
            public int OffsetX;
        }
        public class GeneralSettings {
            [JsonProperty("Горячая клавиша для открытия (X | F | OFF)")]
            [JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
            public ButtonHook ButtonToHook = ButtonHook.X;
            [JsonProperty("Отключить загрузку аватарок Steam")]
            public bool DisablePlayerAvatars = false;
            // CHANGE: ObjectCreationHandling.Replace для предотвращения дублирования избранных плагинов
            [JsonProperty("Список избранных плагинов", ObjectCreationHandling = ObjectCreationHandling.Replace )]
            public HashSet<string> FavoritePlugins = new HashSet<string>();
            [JsonProperty("Фон затемнения экрана")]
            public string OverlayColor = "0 0 0 0.70";
        }
        public class NavigationHeaderSettings {
            // CHANGE: Текст заголовка навигации вынесен в локализацию (NAV_HEADER_TITLE)
            [JsonProperty("Цвет заголовка")]
            public string TextColor = "0.25 0.69 1 1";
            [JsonProperty("Размер шрифта заголовка")]
            // CHANGE: 20 вместо 18 — мелкий кегль растрируется клиентом с пиксельными ступеньками
            public int FontSize = 20;
            [JsonProperty("Высота блока заголовка")]
            public int Height = 42;
        }
        public class NavigationButtonSettings {
            [JsonProperty("Ширина кнопки навигации")]
            public int Width = 174;
            [JsonProperty("Высота кнопки навигации")]
            public int Height = 42;
            [JsonProperty("Отступ сверху первой кнопки")]
            public int StartY = 240;
            [JsonProperty("Отступ между кнопками навигации")]
            public int Spacing = 8;
            [JsonProperty("Размер шрифта кнопок навигации")]
            public int FontSize = 14;
            [JsonProperty("Цвет текста кнопок навигации")]
            public string TextColor = "1 1 1 1";
            [JsonProperty("Цвет активной кнопки")]
            public string ActiveColor = "0.25 0.69 1 0.85";
            [JsonProperty("Цвет неактивной кнопки")]
            public string InactiveColor = "0.22 0.23 0.25 0.85";
        }
        public class NavigationSettings {
            [JsonProperty("Позиция панели навигации")]
            public PanelSettings Panel = new PanelSettings {
                Width = 190, Height = 560,  // CHANGE: Центрирование всего меню (навигация + контент) относительно экрана
                OffsetX = -347, OffsetY = 0,
            }
            ;
            [JsonProperty("Фон панели навигации")]
            public string BackgroundColor = "0.14 0.15 0.16 0.92";
            [JsonProperty("Настройки заголовка")]
            public NavigationHeaderSettings Header = new NavigationHeaderSettings();
            [JsonProperty("Настройки кнопок")]
            public NavigationButtonSettings Buttons = new NavigationButtonSettings();
        }
        public class HeaderTitleSettings {
            [JsonProperty("Отступ заголовка слева (OffsetX)")]
            public int OffsetX = 15;
            [JsonProperty("Размер шрифта заголовка")]
            public int FontSize = 20;
            [JsonProperty("Цвет текста заголовка")]
            public string TextColor = "0.25 0.69 1 1";
        }
        public class HeaderInfoSettings {
            [JsonProperty("Отступ информации справа (OffsetX)")]
            public int OffsetX = -15;
            [JsonProperty("Размер шрифта информации об онлайне")]
            public int FontSize = 13;
            [JsonProperty("Цвет текста информации об онлайне")]
            public string TextColor = "0.70 0.72 0.75 1";
        }
        public class HeaderSettings {
            [JsonProperty("Позиция панели заголовка")]
            public PanelSettings Panel = new PanelSettings {
                Width = 690, Height = 48,  // CHANGE: Центрирование всего меню (навигация + контент) относительно экрана
                OffsetX = 98, OffsetY = 256,
            }
            ;
            [JsonProperty("Фон панели заголовка")]
            public string BackgroundColor = "0.14 0.15 0.16 0.92";
            [JsonProperty("Заголовок раздела")]
            public HeaderTitleSettings Title = new HeaderTitleSettings();
            [JsonProperty("Информационный блок (онлайн, FPS)")]
            public HeaderInfoSettings Info = new HeaderInfoSettings();
            [JsonProperty("Интервал динамического обновления FPS и онлайна (сек)")]
            public float UpdateInterval = 1f;
        }
        public class ContentSettings {
            [JsonProperty("Позиция панели контента")]
            public PanelSettings Panel = new PanelSettings {
                Width = 690, Height = 504,  // CHANGE: Центрирование всего меню (навигация + контент) относительно экрана
                OffsetX = 98, OffsetY = -28,
            }
            ;
            [JsonProperty("Фон панели контента")]
            public string BackgroundColor = "0.16 0.17 0.18 0.92";
        }
        public class QuickMenuTeleportCardSettings {
            [JsonProperty("Позиция карточки")]
            public PanelSettings Panel = new PanelSettings {
                Width = 660, Height = 100, OffsetX = 0, OffsetY = 168,
            }
            ;
            [JsonProperty("Фон карточки")]
            public string BackgroundColor = "0.20 0.21 0.23 0.75";
            [JsonProperty("Отступ заголовка по X (слева)")]
            public int TitleOffsetX = 16;
            [JsonProperty("Отступ заголовка по Y (от верха)")]
            public int TitleOffsetY = 30;
            [JsonProperty("Ширина заголовка")]
            public int TitleWidth = 300;
            [JsonProperty("Высота заголовка")]
            public int TitleHeight = 22;
            [JsonProperty("Размер шрифта заголовка")]
            public int TitleFontSize = 13;
            [JsonProperty("Цвет заголовка")]
            public string TitleColor = "0.25 0.69 1 1";
            [JsonProperty("Ширина кнопки")]
            public int ButtonWidth = 202;
            [JsonProperty("Высота кнопки")]
            public int ButtonHeight = 42;
            [JsonProperty("Отступ кнопок по Y (от центра карточки)")]
            public int ButtonsOffsetY = -12;
            [JsonProperty("Отступ между кнопками по X")]
            public int ButtonSpacingX = 12;
            [JsonProperty("Размер шрифта кнопок")]
            public int ButtonFontSize = 13;
            [JsonProperty("Цвет текста кнопок")]
            public string ButtonTextColor = "1 1 1 1";
            [JsonProperty("Цвет кнопки")]
            public string ButtonDefaultColor = "0.22 0.23 0.25 0.85";
            [JsonProperty("Цвет активной кнопки (Метка)")]
            public string ButtonActiveColor = "0.25 0.69 1 0.85";
        }
        public class QuickMenuActionsCardSettings {
            [JsonProperty("Позиция карточки")]
            public PanelSettings Panel = new PanelSettings {
                Width = 660, Height = 100, OffsetX = 0, OffsetY = 56,
            }
            ;
            [JsonProperty("Фон карточки")]
            public string BackgroundColor = "0.20 0.21 0.23 0.75";
            [JsonProperty("Отступ заголовка по X (слева)")]
            public int TitleOffsetX = 16;
            [JsonProperty("Отступ заголовка по Y (от верха)")]
            public int TitleOffsetY = 30;
            [JsonProperty("Ширина заголовка")]
            public int TitleWidth = 300;
            [JsonProperty("Высота заголовка")]
            public int TitleHeight = 22;
            [JsonProperty("Размер шрифта заголовка")]
            public int TitleFontSize = 13;
            [JsonProperty("Цвет заголовка")]
            public string TitleColor = "0.25 0.69 1 1";
            [JsonProperty("Ширина кнопки")]
            public int ButtonWidth = 202;
            [JsonProperty("Высота кнопки")]
            public int ButtonHeight = 42;
            [JsonProperty("Отступ кнопок по Y (от центра карточки)")]
            public int ButtonsOffsetY = -12;
            [JsonProperty("Отступ между кнопками по X")]
            public int ButtonSpacingX = 12;
            [JsonProperty("Размер шрифта кнопок")]
            public int ButtonFontSize = 13;
            [JsonProperty("Цвет текста кнопок")]
            public string ButtonTextColor = "1 1 1 1";
            [JsonProperty("Цвет кнопки Вылечить себя")]
            public string HealButtonColor = "0.28 0.65 0.32 0.85";
            [JsonProperty("Цвет кнопки Починить все")]
            public string RepairButtonColor = "0.25 0.69 1 0.85";
            [JsonProperty("Цвет кнопки Очистить инвентарь")]
            public string ClearInvButtonColor = "0.75 0.25 0.25 0.85";
        }
        public class QuickMenuEventsCardSettings {
            [JsonProperty("Позиция карточки")]
            public PanelSettings Panel = new PanelSettings {
                Width = 660, Height = 100, OffsetX = 0, OffsetY = -56,
            }
            ;
            [JsonProperty("Фон карточки")]
            public string BackgroundColor = "0.20 0.21 0.23 0.75";
            [JsonProperty("Отступ заголовка по X (слева)")]
            public int TitleOffsetX = 16;
            [JsonProperty("Отступ заголовка по Y (от верха)")]
            public int TitleOffsetY = 30;
            [JsonProperty("Ширина заголовка")]
            public int TitleWidth = 300;
            [JsonProperty("Высота заголовка")]
            public int TitleHeight = 22;
            [JsonProperty("Размер шрифта заголовка")]
            public int TitleFontSize = 13;
            [JsonProperty("Цвет заголовка")]
            public string TitleColor = "0.25 0.69 1 1";
            [JsonProperty("Ширина кнопки")]
            public int ButtonWidth = 202;
            [JsonProperty("Высота кнопки")]
            public int ButtonHeight = 42;
            [JsonProperty("Отступ кнопок по Y (от центра карточки)")]
            public int ButtonsOffsetY = -12;
            [JsonProperty("Отступ между кнопками по X")]
            public int ButtonSpacingX = 12;
            [JsonProperty("Размер шрифта кнопок")]
            public int ButtonFontSize = 13;
            [JsonProperty("Цвет текста кнопок")]
            public string ButtonTextColor = "1 1 1 1";
            [JsonProperty("Цвет кнопок событий")]
            public string ButtonColor = "0.85 0.55 0.20 0.85";
        }
        public class QuickMenuCurrentTimeSettings {
            [JsonProperty("Отступ текущего времени по X (справа)")]
            public int OffsetX = -16;
            [JsonProperty("Отступ текущего времени по Y (от верха)")]
            public int OffsetY = 30;
            [JsonProperty("Ширина блока текущего времени")]
            public int Width = 260;
            [JsonProperty("Высота блока текущего времени")]
            public int Height = 22;
            [JsonProperty("Размер шрифта текущего времени")]
            public int FontSize = 13;
            [JsonProperty("Цвет текста текущего времени")]
            public string TextColor = "0.70 0.72 0.75 1";
        }
        public class QuickMenuTimePresetButtonsSettings {
            [JsonProperty("Ширина кнопки пресета")]
            public int Width = 202;
            [JsonProperty("Высота кнопки пресета")]
            public int Height = 42;
            [JsonProperty("Отступ кнопок по Y (от центра карточки)")]
            public int OffsetY = -12;
            [JsonProperty("Отступ между кнопками по X")]
            public int SpacingX = 12;
            [JsonProperty("Размер шрифта кнопок")]
            public int FontSize = 13;
            [JsonProperty("Цвет текста кнопок")]
            public string TextColor = "1 1 1 1";
            [JsonProperty("Цвет фона кнопок пресетов")]
            public string BackgroundColor = "0.22 0.23 0.25 0.85";
        }
        public class QuickMenuTimeInputSettings {
            [JsonProperty("Отступ блока ввода по X (от центра)")]
            public int OffsetX = 214;
            [JsonProperty("Ширина поля ввода времени")]
            public int Width = 104;
            [JsonProperty("Высота поля ввода времени")]
            public int Height = 42;
            [JsonProperty("Размер шрифта поля ввода")]
            public int FontSize = 13;
            [JsonProperty("Максимальная длина ввода символов")]
            public int CharsLimit = 10;
            [JsonProperty("Внутренний отступ поля ввода по X")]
            public int PaddingX = 0;
            [JsonProperty("Внутренний отступ поля ввода по Y")]
            public int PaddingY = 0;
            [JsonProperty("Цвет фона поля ввода")]
            public string BackgroundColor = "0.10 0.10 0.11 0.90";
            [JsonProperty("Цвет текста в поле ввода")]
            public string TextColor = "1 1 1 1";
            // CHANGE: Настройка цвета текста плейсхолдера поля ввода времени
            [JsonProperty("Цвет текста подсказки (плейсхолдера)")]
            public string PlaceholderColor = "0.60 0.62 0.65 0.60";
        }
        public class QuickMenuTimeApplyButtonSettings {
            [JsonProperty("Ширина кнопки применить")]
            public int Width = 94;
            [JsonProperty("Высота кнопки применить")]
            public int Height = 42;
            [JsonProperty("Отступ кнопки применить от поля ввода")]
            public int SpacingX = 4;
            [JsonProperty("Размер шрифта кнопки применить")]
            public int FontSize = 12;
            [JsonProperty("Цвет фона кнопки применить")]
            public string BackgroundColor = "0.28 0.65 0.32 0.85";
            [JsonProperty("Цвет текста кнопки применить")]
            public string TextColor = "1 1 1 1";
        }
        public class QuickMenuTimeCardSettings {
            [JsonProperty("Позиция карточки")]
            public PanelSettings Panel = new PanelSettings {
                Width = 660, Height = 100, OffsetX = 0, OffsetY = -168,
            }
            ;
            [JsonProperty("Фон карточки")]
            public string BackgroundColor = "0.20 0.21 0.23 0.75";
            [JsonProperty("Отступ заголовка по X (слева)")]
            public int TitleOffsetX = 16;
            [JsonProperty("Отступ заголовка по Y (от верха)")]
            public int TitleOffsetY = 30;
            [JsonProperty("Ширина заголовка")]
            public int TitleWidth = 250;
            [JsonProperty("Высота заголовка")]
            public int TitleHeight = 22;
            [JsonProperty("Размер шрифта заголовка")]
            public int TitleFontSize = 13;
            [JsonProperty("Цвет заголовка")]
            public string TitleColor = "0.25 0.69 1 1";
            [JsonProperty("Блок текущего времени")]
            public QuickMenuCurrentTimeSettings CurrentTime = new QuickMenuCurrentTimeSettings();
            [JsonProperty("Кнопки пресетов")]
            public QuickMenuTimePresetButtonsSettings Presets = new QuickMenuTimePresetButtonsSettings();
            [JsonProperty("Поле ввода времени")]
            public QuickMenuTimeInputSettings Input = new QuickMenuTimeInputSettings();
            [JsonProperty("Кнопка применить")]
            public QuickMenuTimeApplyButtonSettings ApplyButton = new QuickMenuTimeApplyButtonSettings();
        }
        public class QuickMenuWeatherDetailButtonSettings {
            [JsonProperty("Ширина кнопки детальных настроек")]
            public int Width = 130;
            [JsonProperty("Высота кнопки детальных настроек")]
            public int Height = 22;
            [JsonProperty("Отступ кнопки детальных настроек по X (справа)")]
            public int OffsetX = -16;
            [JsonProperty("Отступ кнопки детальных настроек по Y (от центра по Y)")]
            public int OffsetY = 30;
            [JsonProperty("Размер шрифта")]
            public int FontSize = 12;
            [JsonProperty("Цвет текста")]
            public string TextColor = "1 1 1 1";
            [JsonProperty("Цвет фона")]
            public string BackgroundColor = "0.25 0.69 1 0.85";
        }
        public class QuickMenuWeatherButtonsSettings {
            [JsonProperty("Ширина кнопки")]
            public int Width = 96;
            [JsonProperty("Высота кнопки")]
            public int Height = 42;
            [JsonProperty("Отступ кнопок по Y (от центра карточки)")]
            public int OffsetY = -12;
            [JsonProperty("Отступ между кнопками по X")]
            public int SpacingX = 10;
            [JsonProperty("Размер шрифта кнопок")]
            public int FontSize = 12;
            [JsonProperty("Цвет текста кнопок")]
            public string TextColor = "1 1 1 1";
            [JsonProperty("Цвет кнопки Ясно")]
            public string ClearColor = "0.25 0.69 1 0.85";
            [JsonProperty("Цвет кнопки Дождь")]
            public string RainColor = "0.22 0.45 0.75 0.85";
            [JsonProperty("Цвет кнопки Туман")]
            public string FogColor = "0.45 0.50 0.55 0.85";
            [JsonProperty("Цвет кнопки Гроза")]
            public string StormColor = "0.55 0.35 0.70 0.85";
            [JsonProperty("Цвет кнопки Сброс")]
            public string ResetColor = "0.80 0.35 0.25 0.90";
            // CHANGE: Цвет кнопки Отчет удалён вместе с кнопкой
        }
        public class QuickMenuWeatherCardSettings {
            [JsonProperty("Позиция карточки")]
            public PanelSettings Panel = new PanelSettings {
                Width = 660, Height = 100, OffsetX = 0, OffsetY = -280,
            }
            ;
            [JsonProperty("Фон карточки")]
            public string BackgroundColor = "0.20 0.21 0.23 0.75";
            [JsonProperty("Отступ заголовка по X (слева)")]
            public int TitleOffsetX = 16;
            [JsonProperty("Отступ заголовка по Y (от верха)")]
            public int TitleOffsetY = 30;
            [JsonProperty("Ширина заголовка")]
            public int TitleWidth = 250;
            [JsonProperty("Высота заголовка")]
            public int TitleHeight = 22;
            [JsonProperty("Размер шрифта заголовка")]
            public int TitleFontSize = 13;
            [JsonProperty("Цвет заголовка")]
            public string TitleColor = "0.25 0.69 1 1";
            [JsonProperty("Кнопка детальных настроек")]
            public QuickMenuWeatherDetailButtonSettings DetailButton = new QuickMenuWeatherDetailButtonSettings();
            [JsonProperty("Кнопки погоды")]
            public QuickMenuWeatherButtonsSettings Buttons = new QuickMenuWeatherButtonsSettings();
        }
        public class QuickMenuSettings {
            [JsonProperty("Карточка: Телепортация")]
            public QuickMenuTeleportCardSettings TeleportCard = new QuickMenuTeleportCardSettings();
            [JsonProperty("Карточка: Действия администратора")]
            public QuickMenuActionsCardSettings ActionsCard = new QuickMenuActionsCardSettings();
            [JsonProperty("Карточка: События")]
            public QuickMenuEventsCardSettings EventsCard = new QuickMenuEventsCardSettings();
            [JsonProperty("Карточка: Управление временем")]
            public QuickMenuTimeCardSettings TimeCard = new QuickMenuTimeCardSettings();
            // CHANGE: Карточка управления погодой в QuickMenu
            [JsonProperty("Карточка: Управление погодой")]
            public QuickMenuWeatherCardSettings WeatherCard = new QuickMenuWeatherCardSettings();
        }
        public class WeatherTabsSettings {
            [JsonProperty("Позиция панели табов")]
            public PanelSettings Panel = new PanelSettings {
                Width = 660, Height = 34, OffsetX = 0, OffsetY = 180,
            }
            ;
            [JsonProperty("Ширина кнопки таба")]
            public int TabWidth = 104;
            [JsonProperty("Высота кнопки таба")]
            public int TabHeight = 32;
            [JsonProperty("Отступ между табами")]
            public int TabSpacingX = 6;
            [JsonProperty("Размер шрифта табов")]
            public int FontSize = 12;
            [JsonProperty("Цвет текста табов")]
            public string TextColor = "1 1 1 1";
            [JsonProperty("Цвет активного таба")]
            public string ActiveColor = "0.25 0.69 1 0.90";
            [JsonProperty("Цвет неактивного таба")]
            public string InactiveColor = "0.20 0.21 0.23 0.75";
        }
        public class WeatherPresetsGridSettings {
            [JsonProperty("Ширина карточки пресета")]
            public int CardWidth = 210;
            [JsonProperty("Высота карточки пресета")]
            public int CardHeight = 64;
            [JsonProperty("Отступ по X между карточками")]
            public int SpacingX = 14;
            [JsonProperty("Отступ по Y между карточками")]
            public int SpacingY = 14;
            [JsonProperty("Количество колонок в сетке")]
            public int Columns = 3;
            [JsonProperty("Размер шрифта названия пресета")]
            public int TitleFontSize = 13;
            [JsonProperty("Размер шрифта команды/описания")]
            public int SubtitleFontSize = 10;
            [JsonProperty("Цвет текста названия")]
            public string TitleColor = "1 1 1 1";
            [JsonProperty("Цвет текста описания")]
            public string SubtitleColor = "0.70 0.72 0.75 1";
            [JsonProperty("Цвет фона карточки пресета")]
            public string CardBackgroundColor = "0.20 0.21 0.23 0.85";
            [JsonProperty("Цвет фона карточки сброса")]
            public string ResetBackgroundColor = "0.65 0.28 0.25 0.85";
        }
        public class WeatherRowSettings {
            [JsonProperty("Ширина строки параметра")]
            public int Width = 660;
            [JsonProperty("Высота строки параметра")]
            public int Height = 52;
            [JsonProperty("Фон строки параметра")]
            public string BackgroundColor = "0.20 0.21 0.23 0.75";
            [JsonProperty("Отступ названия параметра слева (X)")]
            public int LabelOffsetX = 12;
            [JsonProperty("Отступ названия параметра по Y")]
            public int LabelOffsetY = 8;
            [JsonProperty("Ширина блока названия параметра")]
            public int LabelWidth = 200;
            [JsonProperty("Высота блока названия параметра")]
            public int LabelHeight = 18;
            [JsonProperty("Размер шрифта названия")]
            public int TitleFontSize = 12;
            [JsonProperty("Цвет шрифта названия")]
            public string TitleColor = "1 1 1 1";
            [JsonProperty("Отступ ConVar имени слева (X)")]
            public int ConVarOffsetX = 12;
            [JsonProperty("Отступ ConVar имени по Y")]
            public int ConVarOffsetY = -10;
            [JsonProperty("Ширина блока ConVar имени")]
            public int ConVarWidth = 200;
            [JsonProperty("Высота блока ConVar имени")]
            public int ConVarHeight = 14;
            [JsonProperty("Размер шрифта ConVar")]
            public int ConVarFontSize = 10;
            [JsonProperty("Цвет шрифта ConVar")]
            public string ConVarColor = "0.55 0.58 0.62 1";
        }
        public class WeatherQuickButtonsSettings {
            [JsonProperty("Отступ кнопок слева (X)")]
            public int OffsetX = 216;
            [JsonProperty("Отступ кнопок по Y")]
            public int OffsetY = 0;
            [JsonProperty("Ширина быстрой кнопки")]
            public int ButtonWidth = 44;
            [JsonProperty("Высота быстрой кнопки")]
            public int ButtonHeight = 32;
            [JsonProperty("Отступ между быстрыми кнопками")]
            public int SpacingX = 4;
            [JsonProperty("Размер шрифта быстрых кнопок")]
            public int FontSize = 10;
            [JsonProperty("Цвет текста быстрых кнопок")]
            public string TextColor = "1 1 1 1";
            [JsonProperty("Цвет фона быстрой кнопки")]
            public string BackgroundColor = "0.25 0.27 0.30 0.85";
            [JsonProperty("Цвет кнопки Авто")]
            public string AutoButtonColor = "0.25 0.55 0.85 0.85";
        }
        public class WeatherInputBlockSettings {
            [JsonProperty("Отступ блока ввода справа (X)")]
            public int OffsetX = 490;
            [JsonProperty("Отступ блока ввода по Y")]
            public int OffsetY = 0;
            [JsonProperty("Ширина поля ввода")]
            public int Width = 80;
            [JsonProperty("Высота поля ввода")]
            public int Height = 32;
            [JsonProperty("Размер шрифта поля ввода")]
            public int FontSize = 12;
            [JsonProperty("Максимум символов ввода")]
            public int CharsLimit = 8;
            [JsonProperty("Внутренний отступ по X")]
            public int PaddingX = 0;
            [JsonProperty("Внутренний отступ по Y")]
            public int PaddingY = 0;
            [JsonProperty("Цвет фона поля ввода")]
            public string BackgroundColor = "0.10 0.10 0.11 0.90";
            [JsonProperty("Цвет текста поля ввода")]
            public string TextColor = "1 1 1 1";
            [JsonProperty("Цвет плейсхолдера")]
            public string PlaceholderColor = "0.60 0.62 0.65 0.60";
        }
        public class WeatherApplyButtonSettings {
            [JsonProperty("Отступ кнопки применить справа (X)")]
            public int OffsetX = 576;
            [JsonProperty("Отступ кнопки применить по Y")]
            public int OffsetY = 0;
            [JsonProperty("Ширина кнопки применить")]
            public int Width = 72;
            [JsonProperty("Высота кнопки применить")]
            public int Height = 32;
            [JsonProperty("Размер шрифта кнопки применить")]
            public int FontSize = 11;
            [JsonProperty("Цвет фона кнопки применить")]
            public string BackgroundColor = "0.28 0.65 0.32 0.85";
            [JsonProperty("Цвет текста кнопки применить")]
            public string TextColor = "1 1 1 1";
        }
        public class WeatherManagerSettings {
            [JsonProperty("Табы категорий")]
            public WeatherTabsSettings Tabs = new WeatherTabsSettings();
            [JsonProperty("Сетка карточек пресетов")]
            public WeatherPresetsGridSettings PresetsGrid = new WeatherPresetsGridSettings();
            [JsonProperty("Строка параметра")]
            public WeatherRowSettings Row = new WeatherRowSettings();
            [JsonProperty("Кнопки быстрой установки")]
            public WeatherQuickButtonsSettings QuickButtons = new WeatherQuickButtonsSettings();
            [JsonProperty("Поле числового ввода")]
            public WeatherInputBlockSettings Input = new WeatherInputBlockSettings();
            [JsonProperty("Кнопка применить")]
            public WeatherApplyButtonSettings ApplyButton = new WeatherApplyButtonSettings();
        }
        public class PlayerListFilterSettings {
            [JsonProperty("Высота кнопок фильтров")]
            public int Height = 32;
            [JsonProperty("Ширина кнопки фильтра")]
            public int Width = 92;
            [JsonProperty("Отступ фильтров сверху (по Y)")]
            public int OffsetY = 215;
            [JsonProperty("Отступ между фильтрами")]
            public int Spacing = 6;
            [JsonProperty("Размер шрифта фильтров")]
            public int FontSize = 12;
            [JsonProperty("Цвет текста фильтров")]
            public string TextColor = "1 1 1 1";
            [JsonProperty("Цвет активного фильтра")]
            public string ActiveColor = "0.25 0.69 1 0.85";
            [JsonProperty("Цвет неактивного фильтра")]
            public string InactiveColor = "0.22 0.23 0.25 0.85";
        }
        public class PlayerListSearchSettings {
            [JsonProperty("Высота панели поиска")]
            public int Height = 32;
            [JsonProperty("Ширина панели поиска")]
            public int Width = 660;
            [JsonProperty("Отступ поиска сверху (по Y)")]
            public int OffsetY = 175;
            [JsonProperty("Размер шрифта поиска")]
            public int FontSize = 13;
            [JsonProperty("Внутренний отступ поля ввода по X")]
            public int PaddingX = 10;
            [JsonProperty("Фон поля ввода поиска")]
            public string BackgroundColor = "0.10 0.10 0.11 0.90";
            [JsonProperty("Цвет текста в поле поиска")]
            public string TextColor = "1 1 1 1";
            // CHANGE: Цвет текста подсказки поиска игроков
            [JsonProperty("Цвет текста подсказки (плейсхолдера)")]
            public string PlaceholderColor = "0.60 0.62 0.65 0.60";
        }
        public class PlayerListCardSettings {
            [JsonProperty("Количество колонок игроков")]
            public int Columns = 4;
            [JsonProperty("Ширина карточки игрока")]
            public int Width = 158;
            [JsonProperty("Высота карточки игрока")]
            public int Height = 36;
            [JsonProperty("Отступ по горизонтали между карточками")]
            public int SpacingX = 8;
            [JsonProperty("Отступ по вертикали между карточками")]
            public int SpacingY = 6;
            [JsonProperty("Размер шрифта ника игрока")]
            public int FontSize = 12;
            [JsonProperty("Цвет текста ника игрока")]
            public string TextColor = "1 1 1 1";
            [JsonProperty("Фон активной/живой карточки игрока")]
            public string ActiveCardColor = "0.20 0.21 0.23 0.75";
            [JsonProperty("Фон неактивной карточки игрока")]
            public string InactiveCardColor = "0.22 0.23 0.25 0.85";
            [JsonProperty("Цвет полосы статуса: Онлайн")]
            public string StatusOnlineColor = "0.28 0.65 0.32 1";
            [JsonProperty("Цвет полосы статуса: Оффлайн")]
            public string StatusOfflineColor = "0.75 0.25 0.25 1";
            [JsonProperty("Цвет полосы статуса: Спящий")]
            public string StatusSleepingColor = "0.85 0.55 0.20 1";
        }
        public class PlayerListSettings {
            [JsonProperty("Фильтры игроков")]
            public PlayerListFilterSettings Filters = new PlayerListFilterSettings();
            [JsonProperty("Панель поиска")]
            public PlayerListSearchSettings Search = new PlayerListSearchSettings();
            [JsonProperty("Карточки игроков")]
            public PlayerListCardSettings Card = new PlayerListCardSettings();
        }
        public class UserInfoBackButtonSettings {
            [JsonProperty("Ширина кнопки Назад")]
            public int Width = 140;
            [JsonProperty("Высота кнопки Назад")]
            public int Height = 32;
            [JsonProperty("Влево/вправо кнопки Назад (OffsetX)")]
            public int OffsetX = -255;
            [JsonProperty("Вверх/вниз кнопки Назад (OffsetY)")]
            public int OffsetY = 222;
            [JsonProperty("Размер шрифта кнопки Назад")]
            public int FontSize = 13;
            [JsonProperty("Фон кнопки Назад")]
            public string BackgroundColor = "0.22 0.23 0.25 0.85";
            [JsonProperty("Цвет текста кнопки Назад")]
            public string TextColor = "1 1 1 1";
        }
        public class UserInfoAvatarSettings {
            [JsonProperty("Размер аватарки")]
            public int Size = 120;
            [JsonProperty("Отступ аватарки по X (OffsetX)")]
            public int OffsetX = -255;
            [JsonProperty("Отступ аватарки по Y (OffsetY)")]
            public int OffsetY = 138;
            [JsonProperty("Фон рамки аватарки")]
            public string BackgroundColor = "0.20 0.21 0.23 0.75";
        }
        public class UserInfoDetailsSettings {
            [JsonProperty("Ширина блока инфо")]
            public int Width = 500;
            [JsonProperty("Высота блока инфо")]
            public int Height = 120;
            [JsonProperty("Отступ блока инфо по X (OffsetX)")]
            public int OffsetX = 75;
            [JsonProperty("Отступ блока инфо по Y (OffsetY)")]
            public int OffsetY = 138;
            [JsonProperty("Фон блока инфо")]
            public string BackgroundColor = "0.20 0.21 0.23 0.75";
            [JsonProperty("Размер шрифта ника")]
            public int NameFontSize = 18;
            [JsonProperty("Цвет текста ника")]
            public string NameColor = "0.25 0.69 1 1";
            [JsonProperty("Размер шрифта деталей")]
            public int DetailsFontSize = 13;
            [JsonProperty("Цвет текста деталей")]
            public string DetailsColor = "0.70 0.72 0.75 1";
            [JsonProperty("Отступ левой колонки деталей (OffsetMinX)")]
            public int LeftColumnOffsetMinX = 15;
            [JsonProperty("Отступ правой колонки деталей (OffsetMaxX)")]
            public int RightColumnOffsetMaxX = -15;
        }
        public class UserInfoActionButtonsSettings {
            [JsonProperty("Ширина кнопки действия")]
            public int Width = 158;
            [JsonProperty("Высота кнопки действия")]
            public int Height = 38;
            [JsonProperty("Начальный X кнопок действий (OffsetX)")]
            public int StartX = -249;
            [JsonProperty("Начальный Y кнопок действий (OffsetY)")]
            public int StartY = 50;
            [JsonProperty("Отступ по X между действиями")]
            public int SpacingX = 8;
            [JsonProperty("Отступ по Y между действиями")]
            public int SpacingY = 8;
            [JsonProperty("Размер шрифта кнопок действий")]
            public int FontSize = 12;
            [JsonProperty("Цвет текста кнопок действий")]
            public string TextColor = "1 1 1 1";
            [JsonProperty("Цвет стандартной кнопки")]
            public string DefaultButtonColor = "0.22 0.23 0.25 0.85";
            [JsonProperty("Цвет активной кнопки")]
            public string ActiveButtonColor = "0.25 0.69 1 0.85";
            [JsonProperty("Цвет кнопки успеха (лечение)")]
            public string SuccessButtonColor = "0.28 0.65 0.32 0.85";
            // CHANGE: Настройка цвета фона кнопки снятия радиации
            [JsonProperty("Цвет кнопки снятия радиации")]
            public string RadiationButtonColor = "0.85 0.65 0.15 0.85";
            [JsonProperty("Цвет кнопки внимания (опасные/важные действия)")]
            public string WarningButtonColor = "0.85 0.55 0.20 0.85";
        }
        public class UserInfoSettings {
            [JsonProperty("Кнопка Назад")]
            public UserInfoBackButtonSettings BackButton = new UserInfoBackButtonSettings();
            [JsonProperty("Аватарка игрока")]
            public UserInfoAvatarSettings Avatar = new UserInfoAvatarSettings();
            [JsonProperty("Блок информации")]
            public UserInfoDetailsSettings Details = new UserInfoDetailsSettings();
            [JsonProperty("Кнопки действий")]
            public UserInfoActionButtonsSettings Actions = new UserInfoActionButtonsSettings();
        }
        public class PermTabsSettings {
            [JsonProperty("Ширина переключателя режима")]
            public int Width = 130;
            [JsonProperty("Высота переключателей режимов")]
            public int Height = 32;
            [JsonProperty("Отступ переключателей режимов Вверх/Вниз (OffsetY)")]
            public int OffsetY = 215;
            [JsonProperty("Размер шрифта переключателей")]
            public int FontSize = 12;
            [JsonProperty("Цвет текста переключателей")]
            public string TextColor = "1 1 1 1";
            [JsonProperty("Цвет активного таба")]
            public string ActiveColor = "0.25 0.69 1 0.85";
            [JsonProperty("Цвет неактивного таба")]
            public string InactiveColor = "0.22 0.23 0.25 0.85";
        }
        public class PermCreateGroupBtnSettings {
            [JsonProperty("Ширина кнопки создания группы")]
            public int Width = 140;
            [JsonProperty("Высота кнопки создания группы")]
            public int Height = 32;
            [JsonProperty("Размер шрифта")]
            public int FontSize = 12;
            [JsonProperty("Фон кнопки")]
            public string BackgroundColor = "0.28 0.65 0.32 0.85";
            [JsonProperty("Цвет текста")]
            public string TextColor = "1 1 1 1";
        }
        public class PermGroupsBarSettings {
            // CHANGE: Добавлено свойство ScrollWidth для настройки ширины области скролла панели групп
            [JsonProperty("Ширина области скролла групп")]
            public int ScrollWidth = 720;
            [JsonProperty("Ширина кнопки группы")]
            public int Width = 110;
            [JsonProperty("Высота кнопки группы")]
            public int Height = 30;
            [JsonProperty("Отступ строки групп Вверх/Вниз (OffsetY)")]
            public int OffsetY = 165;
            [JsonProperty("Отступ между кнопками групп")]
            public int Spacing = 6;
            [JsonProperty("Размер шрифта кнопок групп")]
            public int FontSize = 12;
            [JsonProperty("Цвет текста кнопок групп")]
            public string TextColor = "1 1 1 1";
            [JsonProperty("Цвет активной группы")]
            public string ActiveGroupColor = "0.25 0.69 1 0.85";
            [JsonProperty("Цвет неактивной группы")]
            public string InactiveGroupColor = "0.22 0.23 0.25 0.85";
        }
        public class PermSearchSettings {
            [JsonProperty("Ширина поля поиска")]
            public int Width = 340;
            [JsonProperty("Высота поля поиска")]
            public int Height = 30;
            [JsonProperty("Отступ поля поиска Влево/Вправо (OffsetX)")]
            public int OffsetX = -140;
            [JsonProperty("Отступ поля поиска Вверх/Вниз (OffsetY)")]
            public int OffsetY = 115;
            [JsonProperty("Размер шрифта поля поиска")]
            public int FontSize = 12;
            [JsonProperty("Внутренний отступ поля ввода по X")]
            public int PaddingX = 10;
            [JsonProperty("Фон поля поиска")]
            public string BackgroundColor = "0.10 0.10 0.11 0.90";
            [JsonProperty("Цвет текста поля поиска")]
            public string TextColor = "1 1 1 1";
            // CHANGE: Цвет текста подсказки поиска прав
            [JsonProperty("Цвет текста подсказки (плейсхолдера)")]
            public string PlaceholderColor = "0.60 0.62 0.65 0.60";
        }
        public class PermGroupActionButtonsSettings {
            [JsonProperty("Ширина кнопки действия над группой")]
            public int Width = 140;
            [JsonProperty("Высота кнопки действия над группой")]
            public int Height = 30;
            [JsonProperty("Отступ кнопки клонирования Влево/Вправо (OffsetX)")]
            public int CloneOffsetX = 110;
            [JsonProperty("Отступ кнопки удаления Влево/Вправо (OffsetX)")]
            public int DeleteOffsetX = 260;
            [JsonProperty("Отступ кнопок действий Вверх/Вниз (OffsetY)")]
            public int OffsetY = 115;
            [JsonProperty("Размер шрифта кнопок")]
            public int FontSize = 12;
            [JsonProperty("Цвет кнопки клонирования")]
            public string CloneButtonColor = "0.22 0.23 0.25 0.85";
            [JsonProperty("Цвет кнопки удаления")]
            public string DeleteButtonColor = "0.75 0.25 0.25 0.85";
            [JsonProperty("Цвет текста кнопок")]
            public string TextColor = "1 1 1 1";
        }
        public class PermBulkActionButtonsSettings {
            [JsonProperty("Ширина кнопки Назад к плагинам")]
            public int BackWidth = 160;
            [JsonProperty("Высота кнопки Назад к плагинам")]
            public int BackHeight = 30;
            [JsonProperty("Отступ кнопки Назад Влево/Вправо (OffsetX)")]
            public int BackOffsetX = -240;
            [JsonProperty("Ширина кнопки Выдать/Снять все")]
            public int ActionWidth = 105;
            [JsonProperty("Высота кнопки Выдать/Снять все")]
            public int ActionHeight = 30;
            [JsonProperty("Отступ кнопки Выдать все Влево/Вправо (OffsetX)")]
            public int GrantAllOffsetX = 155;
            [JsonProperty("Отступ кнопки Снять все Влево/Вправо (OffsetX)")]
            public int RevokeAllOffsetX = 265;
            [JsonProperty("Отступ кнопок действий Вверх/Вниз (OffsetY)")]
            public int OffsetY = 115;
            [JsonProperty("Ширина заголовка плагина в строке действий")]
            public int PluginTitleWidth = 240;
            [JsonProperty("Отступ заголовка плагина Влево/Вправо (OffsetX)")]
            public int PluginTitleOffsetX = -30;
            [JsonProperty("Размер шрифта кнопок")]
            public int FontSize = 12;
            [JsonProperty("Цвет кнопки Назад")]
            public string BackButtonColor = "0.22 0.23 0.25 0.85";
            [JsonProperty("Цвет кнопки Выдать все")]
            public string GrantAllColor = "0.28 0.65 0.32 0.85";
            [JsonProperty("Цвет кнопки Снять все")]
            public string RevokeAllColor = "0.75 0.25 0.25 0.85";
            [JsonProperty("Цвет текста кнопок")]
            public string TextColor = "1 1 1 1";
        }
        public class PermPluginGridSettings {
            [JsonProperty("Ширина карточки плагина")]
            public int CardWidth = 210;
            [JsonProperty("Высота карточки плагина")]
            public int CardHeight = 42;
            [JsonProperty("Количество колонок плагинов")]
            public int Columns = 3;
            [JsonProperty("Отступ между плагинами по X")]
            public int SpacingX = 10;
            [JsonProperty("Отступ между плагинами по Y")]
            public int SpacingY = 8;
            [JsonProperty("Размер шрифта названия плагина")]
            public int FontSize = 12;

// ... [Code preview truncated due to length. Full source in attached file] ...

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

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

Сверху