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

FREE IQMarker : 1.1.5 1.1.5

Нет прав для скачивания
C#:
using System;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;
using Oxide.Game.Rust.Cui;
using Oxide.Core.Plugins;
namespace Oxide.Plugins {
    [Info("IQMarker", "Menevt", "1.1.5")]
    [Description("Маркеры для ваших любимчиков")]
    class IQMarker : RustPlugin {
#region Reference
        [PluginReference]
        Plugin ImageLibrary, Friends;
        public string GetImage(string shortname, ulong skin = 0) => (string)ImageLibrary?.Call("GetImage", shortname, skin);
        public bool AddImage(string url, string shortname, ulong skin = 0) => (bool)ImageLibrary?.Call("AddImage", url, shortname, skin);
        public void SendImage(BasePlayer player, string imageName, ulong imageId = 0) => ImageLibrary?.Call("SendImage", player, imageName, imageId);
        public bool HasImage(string imageName) => (bool)ImageLibrary?.Call("HasImage", imageName);
        public bool IsFriends(ulong TargetID, ulong PlayerID) {
            if(Friends == null) return false;
            if ((bool)Friends.Call("HasFriend", PlayerID, TargetID)) return true;
            else return false;
        }
        public void LoadedImage() {
            var Icon = config.MarkesSettings.IconSetting.IconList;
            for(int i = 0; i < Icon.Count; i++) {
                if (!HasImage($"ICON_{Icon[i].PNG}_{i}")) AddImage(Icon[i].PNG, $"ICON_{Icon[i].PNG}_{i}");
            }
        }
        public void CachedImage(BasePlayer player) {
            var Icon = config.MarkesSettings.IconSetting.IconList;
            for (int i = 0; i < Icon.Count; i++) SendImage(player, $"ICON_{Icon[i].PNG}_{i}");
        }
#endregion
#region Vars
        public static string PermissionUseMarker = "iqmarker.use";
        public static string PermissionUseColorList = "iqmarker.usecolorlist";
        public static string PermissionUseCustomColor = "iqmarker.usecustomcolor";
        public static string PermissionUseSizer = "iqmarker.usesize";
        public void RegisteredPermissions() {
            var ColorList = config.AccessSettings.ColorListMarker;
            var Markers = config.MarkesSettings;
            var HealtBar = Markers.HealthBarSetting;
            var DamageText = Markers.DamageTextSetting;
            var Icon = Markers.IconSetting;
            Register(PermissionUseMarker);
            Register(PermissionUseColorList);
            Register(PermissionUseCustomColor);
            Register(PermissionUseSizer);
            Register(HealtBar.PermissionsHealthBar);
            Register(HealtBar.PermissionsHealtBarDamageText);
            Register(HealtBar.PermissionsHealtBarWounded);
            Register(DamageText.PermissionsDamageText);
            Register(DamageText.PermissionsDamageTextWounded);
            Register(Icon.PermissionsIcon);
            Register(Icon.PermissionsIconWounded);
            Register(Icon.PermissionsIconDamageText);
            for (int i = 0; i < Icon.IconList.Count; i++) Register(Icon.IconList[i].Permissions);
            for (int i = 0; i < ColorList.Count; i++) Register(ColorList[i].Permissions);
        }
        public void ReturnSettingsMore(BasePlayer player) {
            if (!DataInformation.ContainsKey(player.userID)) return;
            var Data = DataInformation[player.userID];
            var HealthBar = Data.HealthBarMore;
            var DamageText = Data.DamageTextMore;
            var Icon = Data.IconMore;
            var Markers = config.MarkesSettings;
            var HealtBarCfg = Markers.HealthBarSetting;
            var DamageTextCfg = Markers.DamageTextSetting;
            var IconCfg = Markers.IconSetting;
            if (HealthBar.TurnDamageText) if (!permission.UserHasPermission(player.UserIDString, HealtBarCfg.PermissionsHealtBarDamageText)) HealthBar.TurnDamageText = false;
            if (HealthBar.TurnWounded) if (!permission.UserHasPermission(player.UserIDString, HealtBarCfg.PermissionsHealtBarWounded)) HealthBar.TurnWounded = false;
            if (DamageText.TurnWounded) if (!permission.UserHasPermission(player.UserIDString, DamageTextCfg.PermissionsDamageTextWounded)) DamageText.TurnWounded = false;
            if (Icon.TurnDamageText) if (!permission.UserHasPermission(player.UserIDString, IconCfg.PermissionsIconDamageText)) Icon.TurnDamageText = false;
            if (Icon.TurnWounded) if (!permission.UserHasPermission(player.UserIDString, IconCfg.PermissionsIconWounded)) Icon.TurnWounded = false;
        }
        public void Register(string Permissions) {
            if (!String.IsNullOrWhiteSpace(Permissions)) if (!permission.PermissionExists(Permissions, this)) permission.RegisterPermission(Permissions, this);
        }
#endregion
#region Configuration
        private static Configuration config = new Configuration();
        private class Configuration {
            [JsonProperty("Настройка плагина")]
            public AccessSetting AccessSettings = new AccessSetting();
            [JsonProperty("Настройка интерфейса плагина")]
            public SettingsInterface SettingsInterfaces = new SettingsInterface();
            [JsonProperty("Настройка маркеров")]
            public MarkersSetting MarkesSettings = new MarkersSetting();
            [JsonProperty("Настройка для новых пользователей(Будьте внимательны,эти настройки даются по умолчанию вне зависимости от прав,если игрок их выключит и у него не будет прав, они ему потребуются для повторного включения)")]
            public UserSettings UserSetting = new UserSettings();
            internal class AccessSetting {
                [JsonProperty("true - включить настройку маркеров/false - отключить настройку")]
                public bool UseSettingsMarker;
                [JsonProperty("Настройка доступных цветов для маркера")]
                public List<ColorList> ColorListMarker = new List<ColorList>();
                internal class ColorList {
                    [JsonProperty("Права доступа для этого цвета")]
                    public string Permissions;
                    [JsonProperty("HEX цвет")]
                    public string HexColor;
                }
            }
            internal class UserSettings {
                [JsonProperty("Включен ли маркер для новых игроков?(true - да/false - нет)")]
                public bool DefaultTurnOnMarker;
                [JsonProperty("Стандартный цвет маркера для новых игроков(HEX)")]
                public string DefaultHexMarker;
                [JsonProperty("Стандартный вид маркера для новых игркоов (0 - Текст с дамагом | 1 - Полоса ХП | 2 - Иконка)")]
                public MarkerType DefaultMarkerType;
                [JsonProperty("Стандартный размер маркера для новых игркоов (0 - Маленький | 1 - Средний | 2 - Большой)")]
                public TypeSize DefaultMarkerSize;
                [JsonProperty("Дополнительные настройки полосы ХП для новых игрков")]
                public HealthBar DefaultHealthBar = new HealthBar();
                [JsonProperty("Дополнительные настройки текста с уроном для новых игрков")]
                public DamageText DefaultDamageText = new DamageText();
                [JsonProperty("Дополнительные настройки иконки для новых игрков")]
                public Icon DefaultIcon = new Icon();
                internal class HealthBar {
                    [JsonProperty("Включить отображение текста с дамагом(true - да/false - нет)")]
                    public bool TurnDamageText;
                    [JsonProperty("Включить отображение иконки падения(true - да/false - нет)")]
                    public bool TurnWounded;
                }
                internal class DamageText {
                    [JsonProperty("Включить отображение текста с дамагом(true - да /false - нет)")]
                    public bool TurnWounded;
                }
                internal class Icon {
                    [JsonProperty("Включить отображение текста с дамагом(true - да / false - нет)")]
                    public bool TurnDamageText;
                    [JsonProperty("Включить отображение иконки падения(true - да/false - нет)")]
                    public bool TurnWounded;
                }
            }
            internal class MarkersSetting {
                [JsonProperty("Настройка маркера HealthBar")]
                public HealthBarSettings HealthBarSetting = new HealthBarSettings();
                [JsonProperty("Настройка маркера DamageText")]
                public DamageText DamageTextSetting = new DamageText();
                [JsonProperty("Настройка маркера Icon")]
                public Icon IconSetting = new Icon();
                internal class HealthBarSettings {
                    [JsonProperty("Общая настройка")]
                    public GeneralSettings GeneralSetting = new GeneralSettings();
                    [JsonProperty("Пермишенс для доступа к типу маркера HealthBar")]
                    public string PermissionsHealthBar;
                    [JsonProperty("Пермишенс для доступа дополнению HealthBar , отображение урона рядом с показателем")]
                    public string PermissionsHealtBarDamageText;
                    [JsonProperty("Пермишенс для доступа дополнению HealthBar , отображение иконки с падением игрока")]
                    public string PermissionsHealtBarWounded;
                }
                internal class DamageText {
                    [JsonProperty("Общая настройка")]
                    public GeneralSettings GeneralSetting = new GeneralSettings();
                    [JsonProperty("Пермишенс для доступа к типу маркера DamageText")]
                    public string PermissionsDamageText;
                    [JsonProperty("Пермишенс для доступа дополнению DamageText , отображение иконки с падением игрока")]
                    public string PermissionsDamageTextWounded;
                }
                internal class Icon {
                    [JsonProperty("Общая настройка")]
                    public GeneralSettings GeneralSetting = new GeneralSettings();
                    [JsonProperty("Пермишенс для доступа к типу маркера Icon")]
                    public string PermissionsIcon;
                    [JsonProperty("Пермишенс для доступа дополнению Icon , отображение урона рядом с показателем")]
                    public string PermissionsIconDamageText;
                    [JsonProperty("Пермишенс для доступа дополнению HealthBar , отображение иконки с падением игрока")]
                    public string PermissionsIconWounded;
                    [JsonProperty("Список иконок(Название - ссылка на иконку 64х64)")]
                    public List<IconListClass> IconList = new List<IconListClass>();
                    internal class IconListClass {
                        public string Permissions;
                        public string PNG;
                    }
                }
                internal class GeneralSettings {
                    [JsonProperty("Отображаемое имя")]
                    public string DisplayName;
                    [JsonProperty("Описание")]
                    public string Description;
                }
            }
            internal class SettingsInterface {
                [JsonProperty("Настройка основнвой панели")]
                public MainPanel InterfaceMainPanel = new MainPanel();
                [JsonProperty("Настройка панели с настройкой маркера")]
                public SettingsMarker InterfaceSettingsMarker = new SettingsMarker();
                [JsonProperty("HEX цвета текста")]
                public string HexLabels;
                internal class MainPanel {
                    [JsonProperty("HEX заднего фона")]
                    public string HexBackground;
                    [JsonProperty("Material заднего фона")]
                    public string MaterialBackground;
                    [JsonProperty("Sprite логотипа")]
                    public string SpriteLogoBackground;
                }
                internal class SettingsMarker {
                    [JsonProperty("HEX кнопки настройки")]
                    public string HexButtonMain;
                    [JsonProperty("HEX поля ввода для настройки цвета маркера")]
                    public string HexButtonInputPanel;
                    [JsonProperty("HEX выбранного элемента отображения маркера")]
                    public string HexActiveShowMarker;
                    [JsonProperty("HEX не выбранного элемента отображения маркера")]
                    public string HexInActiveShowMarker;
                    [JsonProperty("Sprite не выбранного элемента отображения маркера")]
                    public string SpriteActiveShowMarker;
                    [JsonProperty("Sprite выбранного элемента отображения маркера")]
                    public string SpriteInActiveShowMarker;
                    [JsonProperty("HEX панели с типом маркера")]
                    public string HexTypeMarkerPanel;
                    [JsonProperty("HEX кнопки с доступным типом маркера")]
                    public string HexTypeMarkerAcces;
                    [JsonProperty("HEX кнопки с недоступным типом маркера")]
                    public string HexTypeMarkerDeading;
                    [JsonProperty("HEX кнопки с выбранным типом маркера")]
                    public string HexTypeMarkerTaking;
                }
            }
            public static Configuration GetNewConfiguration() {
                return new Configuration {
#region AccessSettings
                    AccessSettings = new AccessSetting {
                        UseSettingsMarker = true, ColorListMarker = new List<AccessSetting.ColorList> {
                            new AccessSetting.ColorList {
                                HexColor = "#FF6666", Permissions = "iqmarker.red"
                            }
                            , new AccessSetting.ColorList {
                                HexColor = "#FF3366", Permissions = "iqmarker.default"
                            }
                            , new AccessSetting.ColorList {
                                HexColor = "#FF33CC", Permissions = "iqmarker.default"
                            }
                            , new AccessSetting.ColorList {
                                HexColor = "#FF66FF", Permissions = "iqmarker.purple"
                            }
                            , new AccessSetting.ColorList {
                                HexColor = "#9900FF", Permissions = "iqmarker.purple"
                            }
                            , new AccessSetting.ColorList {
                                HexColor = "#00CCFF", Permissions = "iqmarker.aqua"
                            }
                            , new AccessSetting.ColorList {
                                HexColor = "#33CC66", Permissions = "iqmarker.green"
                            }
                            , new AccessSetting.ColorList {
                                HexColor = "#FF9933", Permissions = "iqmarker.default"
                            }
                            ,
                        }
                    }
                    ,
#endregion
#region Markers
                    MarkesSettings = new MarkersSetting {
                        HealthBarSetting = new MarkersSetting.HealthBarSettings {
                            PermissionsHealthBar = "iqmarker.healthbar", PermissionsHealtBarWounded = "iqmarker.healthbarwound", PermissionsHealtBarDamageText = "iqmarker.damagetext", GeneralSetting = new MarkersSetting.GeneralSettings {
                                DisplayName = "<size=16><b>ИНДИКАТОР ЗДОРОВЬЯ</b></size>", Description = "<size=11>ПРИ ПОПАДАНИИ БУДЕТ ПОЯВЛЯТЬСЯ ИНДИКАТОР ЗДОРОВЬЯ ЦЕЛИ,КОТОРУЮ ВЫ АТАКУЕТЕ</size>"
                            }
                        }
                        , DamageTextSetting = new MarkersSetting.DamageText {
                            PermissionsDamageText = "iqmarker.damagetext", PermissionsDamageTextWounded = "iqmarker.damagetextwound", GeneralSetting = new MarkersSetting.GeneralSettings {
                                DisplayName = "<size=16><b>ТЕКСТОВЫЙ ИНДИКАТОР</b></size>", Description = "<size=11>ПРИ ПОПАДАНИИ БУДЕТ ОТОБРАЖАТЬСЯ НАНЕСЕННЫЙ УРОН</size>"
                            }
                        }
                        , IconSetting = new MarkersSetting.Icon {
                            PermissionsIcon = "iqmarker.icon", PermissionsIconDamageText = "iqmarker.icondamagetext", PermissionsIconWounded = "iqmarker.iconwound", IconList = new List<MarkersSetting.Icon.IconListClass> {
                                new MarkersSetting.Icon.IconListClass {
                                    Permissions = "", PNG = "https://i.imgur.com/mIbPpj3.png"
                                }
                                , new MarkersSetting.Icon.IconListClass {
                                    Permissions = "", PNG = "https://i.imgur.com/XCSkVNk.png"
                                }
                                , new MarkersSetting.Icon.IconListClass {
                                    Permissions = "", PNG = "https://i.imgur.com/RACMuqg.png"
                                }
                                , new MarkersSetting.Icon.IconListClass {
                                    Permissions = "", PNG = "https://i.imgur.com/tqtF73m.png"
                                }
                                , new MarkersSetting.Icon.IconListClass {
                                    Permissions = "", PNG = "https://i.imgur.com/uIHaR7Q.png"
                                }
                                , new MarkersSetting.Icon.IconListClass {
                                    Permissions = "", PNG = "https://i.imgur.com/Dbxnsm1.png"
                                }
                                , new MarkersSetting.Icon.IconListClass {
                                    Permissions = "", PNG = "https://i.imgur.com/bzsU7kE.png"
                                }
                                , new MarkersSetting.Icon.IconListClass {
                                    Permissions = "", PNG = "https://i.imgur.com/2Wke9lp.png"
                                }
                                ,
                            }
                            , GeneralSetting = new MarkersSetting.GeneralSettings {
                                DisplayName = "<size=16><b>ИНДИКАТОР ИКОНКА</b></size>", Description = "<size=11>ПРИ ПОПАДАНИИ БУДЕТ ОТОБРАЖАТЬСЯ ИКОНКА С ПОПАДАНИЕМ</size>"
                            }
                        }
                    }
                    ,
#endregion
#region Interface
                    SettingsInterfaces = new SettingsInterface {
                        HexLabels = "#FFFFFFFF", InterfaceMainPanel = new SettingsInterface.MainPanel {
                            HexBackground = "#444440A6", MaterialBackground = "assets/content/ui/uibackgroundblur-ingamemenu.mat", SpriteLogoBackground = "assets/icons/workshop.png",
                        }
                        , InterfaceSettingsMarker = new SettingsInterface.SettingsMarker {
                            HexButtonInputPanel = "#93C34680", HexButtonMain = "#93C34680", HexActiveShowMarker = "#93C34680", HexInActiveShowMarker = "#C3454580", SpriteInActiveShowMarker = "assets/icons/vote_down.png", SpriteActiveShowMarker = "assets/icons/vote_up.png", HexTypeMarkerPanel = "#FFFFFF29", HexTypeMarkerAcces = "#93C344FF", HexTypeMarkerTaking = "#93C34480", HexTypeMarkerDeading = "#C3454580",
                        }
                        ,
                    }
                    ,
#endregion
#region DefaultUser
                    UserSetting = new UserSettings {
                        DefaultTurnOnMarker = true, DefaultHexMarker = "#05bec5", DefaultMarkerType = MarkerType.Icon, DefaultMarkerSize = TypeSize.Middle, DefaultDamageText = new UserSettings.DamageText {
                            TurnWounded = false,
                        }
                        , DefaultHealthBar = new UserSettings.HealthBar {
                            TurnDamageText = false, TurnWounded = false,
                        }
                        , DefaultIcon = new UserSettings.Icon {
                            TurnWounded = true, TurnDamageText = true
                        }
                        ,
                    }
#endregion
                }
                ;
            }
        }
        protected override void LoadConfig() {
            base.LoadConfig();
            try {
                config = Config.ReadObject<Configuration>();
                if (config == null) LoadDefaultConfig();
            }
            catch {
                PrintWarning($"Ошибка чтения #57 конфигурации 'oxide/config/{Name}', создаём новую конфигурацию!!");
                LoadDefaultConfig();
            }
            NextTick(SaveConfig);
        }
        protected override void LoadDefaultConfig() => config = Configuration.GetNewConfiguration();
        protected override void SaveConfig() => Config.WriteObject(config);
#endregion
#region Data
        public enum TypeSize {
            Little, Middle, Big
        }
        public enum MarkerType {
            DamageText, HealthBar, Icon,
        }
        [JsonProperty("Информация о настройках хитов игрока")]
        public Dictionary<ulong, SettingsUser> DataInformation = new Dictionary<ulong, SettingsUser>();
        public class SettingsUser {
            public bool TurnMarker;
            public bool HitAnimal;
            public bool HitPlayer;
            public bool HitBuilding;
            public bool HitEntity;
            public bool HitTransport;
            public bool HitNPC;
            public string HexMarker;
            public TypeSize typeSize;
            public MarkerType markerType;
            public HealthBar HealthBarMore = new HealthBar();
            public DamageText DamageTextMore = new DamageText();
            public Icon IconMore = new Icon();
            internal class HealthBar {
                public bool TurnDamageText;
                public bool TurnWounded;
            }
            internal class DamageText {
                public bool TurnWounded;
            }
            internal class Icon {
                public bool TurnDamageText;
                public bool TurnWounded;
                public int IndexMarker;
            }
        }
        void ReadData() {
            DataInformation = Oxide.Core.Interface.Oxide.DataFileSystem.ReadObject<Dictionary<ulong, SettingsUser>>("IQMarker/SettingsUser");
        }
        void WriteData() => Oxide.Core.Interface.Oxide.DataFileSystem.WriteObject("IQMarker/SettingsUser", DataInformation);
        void RegisteredDataUser(BasePlayer player) {
            var Default = config.UserSetting;
            if (!DataInformation.ContainsKey(player.userID)) DataInformation.Add(player.userID, new SettingsUser {
                TurnMarker = Default.DefaultTurnOnMarker, HitAnimal = true, HitPlayer = true, HitBuilding = true, HitEntity = true, HitNPC = true, HitTransport = true, HexMarker = Default.DefaultHexMarker, typeSize = Default.DefaultMarkerSize, markerType = Default.DefaultMarkerType, HealthBarMore = new SettingsUser.HealthBar {
                    TurnDamageText = Default.DefaultHealthBar.TurnDamageText, TurnWounded = Default.DefaultHealthBar.TurnWounded,
                }
                , DamageTextMore = new SettingsUser.DamageText {
                    TurnWounded = Default.DefaultDamageText.TurnWounded,
                }
                , IconMore = new SettingsUser.Icon {
                    IndexMarker = 0, TurnDamageText = Default.DefaultIcon.TurnDamageText, TurnWounded = Default.DefaultIcon.TurnWounded,
                }
            }
            );
        }
#endregion
#region Hooks
        private void Init() => ReadData();
        private void OnServerInitialized() {
            PrintWarning("Загружаем изображения..");
            LoadedImage();
            foreach (var player in BasePlayer.activePlayerList) OnPlayerConnected(player);
            PrintWarning("Регистрируем права..");
            RegisteredPermissions();
            PrintWarning("Проверяем права игроков..");
            PrintWarning("Плагин загружен успешно!");
        }
        private void Unload() => WriteData();
        void OnPlayerConnected(BasePlayer player) {
            RegisteredDataUser(player);
            CachedImage(player);
            ReturnSettingsMore(player);
        }
        void OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info) {
            if (info == null || entity == null) return;
            var Attacker = info?.InitiatorPlayer;
            if (info.damageTypes.Total() < 1) return;
            if (Attacker == null || !(bool)(Attacker is BasePlayer) || Attacker.IsNpc || Attacker.IsDead()) return;
            if (entity is BaseCorpse) return;
            if (!DataInformation.ContainsKey(Attacker.userID)) return;
            var Data = DataInformation[Attacker.userID];
            if (Data.HitAnimal) if (entity is BaseAnimalNPC || entity is RidableHorse || entity is Horse) if (!entity.IsDead()) Interface_Attack_Hit(Attacker, info);
            if (Data.HitBuilding) if (entity is BuildingBlock) if (!entity.IsDestroyed) Interface_Attack_Hit(Attacker, info);
            if (Data.HitNPC) if (entity is HumanNPC || entity is NPCPlayer || entity is ScientistNPC) if (!entity.IsDead()) Interface_Attack_Hit(Attacker, info);
            if (Data.HitPlayer) if (entity is BasePlayer) if (entity.ToPlayer().userID != Attacker.userID) if (!entity.IsDead()) Interface_Attack_Hit(Attacker, info);
            if (Data.HitTransport) if (entity is ModularCar || entity is BaseVehicleSeat || entity is BaseModularVehicle || entity is BaseVehicleModule) Interface_Attack_Hit(Attacker, info);
            if (Data.HitEntity) if (entity.PrefabName.Contains("barrel") || entity.PrefabName.Contains("external") || entity is BaseOven || entity is StorageContainer || entity is SleepingBag || entity is VendingMachine || entity is Composter || entity is Barricade || entity is MiningQuarry || entity is AutoTurret || entity is ElectricWindmill) if(!entity.IsDestroyed) Interface_Attack_Hit(Attacker, info);
        }
#endregion
#region Commands
        [ChatCommand("hit")]
        void ChatCommandHit(BasePlayer player) {
            Interface_Main_Menu(player);
        }
        [ConsoleCommand("hit")]
        void ConsoleCommandsHit(ConsoleSystem.Arg arg) {
            BasePlayer player = arg.Player();
            string KeyArg = arg.Args[0].ToLower();
            switch (KeyArg) {
                case "debug" : {
                    if (player == null || !player.IsConnected) return;
                    if (!player.IsAdmin) return;
                    PrintWarning($"{player.displayName} - использовал DEBUG режим");
                    DebugPlayerHit(player);
                    PrintToConsole("Успешно использован DEBUG");
                    break;
                }
                case "turn" : {
                    string TurnStatus = arg.Args[1].ToLower();
                    switch (TurnStatus) {
                        case "on" : {
                            if(DataInformation.ContainsKey(player.userID)) DataInformation[player.userID].TurnMarker = true;
                            ButtonUpdateTurn(player);
                            break;
                        }
                        case "off" : {
                            if (DataInformation.ContainsKey(player.userID)) DataInformation[player.userID].TurnMarker = false;
                            ButtonUpdateTurn(player);
                            break;
                        }
                    }
                    break;
                }
                case "func" : {
                    string Func = arg.Args[1].ToLower();
                    switch (Func) {
                        case "selecttype" : {
                            string Type = arg.Args[2].ToLower();
                            SelectType(player, Type);
                            break;
                        }
                        case "sethex" : {
                            if (arg.Args.Length != 3) return;
                            if (String.IsNullOrWhiteSpace(arg.Args[2])) return;
                            string Hex = arg.Args[2].ToLower();
                            DataInformation[player.userID].HexMarker = Hex;
                            Interface_Update_Marker_Show(player);
                            break;
                        }
                        case "setsize" : {
                            if (String.IsNullOrWhiteSpace(arg.Args[2])) return;
                            TypeSize SizeType = (TypeSize)Enum.Parse(typeof(TypeSize), arg.Args[2]);
                            DataInformation[player.userID].typeSize = SizeType;
                            Interface_MP_Loaded_Size(player);
                            Interface_Update_Marker_Show(player);
                            break;
                        }
                        case "settype" : {
                            if (String.IsNullOrWhiteSpace(arg.Args[2])) return;
                            MarkerType MarkerType = (MarkerType)Enum.Parse(typeof(MarkerType), arg.Args[2]);
                            DataInformation[player.userID].markerType = MarkerType;
                            Interface_MP_Loaded_Markers(player);
                            Interface_Update_Marker_Show(player);
                            break;
                        }
                    }
                    break;
                }
                case "ui" : {
                    string UIElement = arg.Args[1].ToLower();
                    switch (UIElement) {
                        case "settings" : {
                            Interface_Settings_Menu(player);
                            Interface_Hex_Settings_Menu(player);
                            break;
                        }
                        case "setting_marker" : {
                            string Action = arg.Args[2].ToLower();
                            switch (Action) {
                                case "healthbar" : {
                                    string HealthBarMore = arg.Args[3].ToLower();
                                    switch (HealthBarMore) {
                                        case "damagetext_turn" : {
                                            if (DataInformation[player.userID].HealthBarMore.TurnDamageText) DataInformation[player.userID].HealthBarMore.TurnDamageText = false;
                                            else DataInformation[player.userID].HealthBarMore.TurnDamageText = true;
                                            Interface_Update_Marker_Show(player);
                                            Show_More_Settings_Marker(player, MarkerType.HealthBar);
                                            break;
                                        }
                                        case "wounded_turn" : {
                                            if (DataInformation[player.userID].HealthBarMore.TurnWounded) DataInformation[player.userID].HealthBarMore.TurnWounded = false;
                                            else DataInformation[player.userID].HealthBarMore.TurnWounded = true;
                                            Interface_Update_Marker_Show(player);
                                            Show_More_Settings_Marker(player, MarkerType.HealthBar);
                                            break;
                                        }
                                    }
                                    break;
                                }
                                case "damage_text" : {
                                    string DamageTextMore = arg.Args[3].ToLower();
                                    switch(DamageTextMore) {
                                        case "wounded_turn" : {
                                            if (DataInformation[player.userID].DamageTextMore.TurnWounded) DataInformation[player.userID].DamageTextMore.TurnWounded = false;
                                            else DataInformation[player.userID].DamageTextMore.TurnWounded = true;
                                            Interface_Update_Marker_Show(player);
                                            Show_More_Settings_Marker(player, MarkerType.DamageText);
                                            break;
                                        }
                                    }
                                    break;
                                }
                                case "icon" : {
                                    string IconMore = arg.Args[3].ToLower();
                                    switch(IconMore) {
                                        case "damagetext_turn" : {
                                            if (DataInformation[player.userID].IconMore.TurnDamageText) DataInformation[player.userID].IconMore.TurnDamageText = false;
                                            else DataInformation[player.userID].IconMore.TurnDamageText = true;
                                            Interface_Update_Marker_Show(player);
                                            Show_More_Settings_Marker(player, MarkerType.Icon);
                                            break;
                                        }
                                        case "wounded_turn" : {
                                            if (DataInformation[player.userID].IconMore.TurnWounded) DataInformation[player.userID].IconMore.TurnWounded = false;
                                            else DataInformation[player.userID].IconMore.TurnWounded = true;
                                            Interface_Update_Marker_Show(player);
                                            Show_More_Settings_Marker(player, MarkerType.Icon);
                                            break;
                                        }
                                        case "marker_icon_set" : {
                                            int IndexMarker = Convert.ToInt32(arg.Args[4]);
                                            DataInformation[player.userID].IconMore.IndexMarker = IndexMarker;
                                            Interface_Update_Marker_Show(player);
                                            break;
                                        }
                                    }
                                    break;
                                }
                            }
                            break;
                        }
                    }
                    break;
                }
            }
        }
#endregion
#region Metods
        public void SelectType(BasePlayer player, string Type) {
            if (String.IsNullOrWhiteSpace(Type)) return;
            if (!DataInformation.ContainsKey(player.userID)) return;
            var Data = DataInformation[player.userID];
            switch (Type.ToLower()) {
                case "animal" : {
                    if (!Data.HitAnimal) Data.HitAnimal = true;
                    else Data.HitAnimal = false;
                    break;
                }
                case "player" : {
                    if (!Data.HitPlayer) Data.HitPlayer = true;
                    else Data.HitPlayer = false;
                    break;
                }
                case "building" : {
                    if (!Data.HitBuilding) Data.HitBuilding = true;
                    else Data.HitBuilding = false;
                    break;
                }
                case "entity" : {
                    if (!Data.HitEntity) Data.HitEntity = true;
                    else Data.HitEntity = false;
                    break;
                }
                case "transport" : {
                    if (!Data.HitTransport) Data.HitTransport = true;
                    else Data.HitTransport = false;
                    break;
                }
                case "npc" : {
                    if (!Data.HitNPC) Data.HitNPC = true;
                    else Data.HitNPC = false;
                    break;
                }
            }
            Interface_Settings_Menu(player);
        }
        void DebugPlayerHit(BasePlayer player) {
            var ColorList = config.AccessSettings.ColorListMarker;
            var Markers = config.MarkesSettings;
            var HealtBar = Markers.HealthBarSetting;
            var DamageText = Markers.DamageTextSetting;
            var Icon = Markers.IconSetting;
            string ID = player.UserIDString;
            GrantedPermission(ID, PermissionUseMarker);
            GrantedPermission(ID, PermissionUseColorList);
            GrantedPermission(ID, PermissionUseCustomColor);
            GrantedPermission(ID, PermissionUseSizer);
            GrantedPermission(ID, HealtBar.PermissionsHealthBar);
            GrantedPermission(ID, HealtBar.PermissionsHealtBarDamageText);
            GrantedPermission(ID, HealtBar.PermissionsHealtBarWounded);
            GrantedPermission(ID, DamageText.PermissionsDamageText);
            GrantedPermission(ID, DamageText.PermissionsDamageTextWounded);
            GrantedPermission(ID, Icon.PermissionsIcon);
            GrantedPermission(ID, Icon.PermissionsIconWounded);
            GrantedPermission(ID, Icon.PermissionsIconDamageText);
            for (int i = 0; i < Icon.IconList.Count; i++) GrantedPermission(ID, Icon.IconList[i].Permissions);
            for (int i = 0; i < ColorList.Count; i++) GrantedPermission(ID, ColorList[i].Permissions);
        }
        private void GrantedPermission(string id, string perm) {
            if (!permission.UserHasPermission(id, perm)) permission.GrantUserPermission(id, perm, this);
        }
#endregion
#region Interface
        public static string PARENT_IQ_MARKER_MAIN = "PARENT_IQ_MARKER_MAIN";
        public static string PARENT_IQ_MARKER_MARKERS_PANEL = "PARENT_IQ_MARKER_MARKERS_PANEL";
        public static string PARENT_IQ_MARKER_MARKERS_PANEL_MORE_SETTINGS = "PARENT_IQ_MARKER_MARKERS_PANEL_MORE_SETTINGS";
        public static string PARENT_IQ_MARKER_ATTACK_HIT = "PARENT_IQ_MARKER_ATTACK_HIT";
#region Interface Main
        public void Interface_Main_Menu(BasePlayer player) {
            CuiElementContainer container = new CuiElementContainer();
            CuiHelper.DestroyUi(player, PARENT_IQ_MARKER_MAIN);
            var Interface = config.SettingsInterfaces;
            container.Add(new CuiPanel {
                CursorEnabled = true, RectTransform = {
                    AnchorMin = "0 0", AnchorMax = "1 1"
                }
                , Image = {
                    Color = HexToRustFormat(Interface.InterfaceMainPanel.HexBackground), Material = Interface.InterfaceMainPanel.MaterialBackground
                }
            }
            , "Overlay", PARENT_IQ_MARKER_MAIN);
            container.Add(new CuiButton {
                RectTransform = {
                    AnchorMin = "0.8677083 0.9370371", AnchorMax = "0.9921876 0.9888889"
                }
                , Button = {
                    Close = PARENT_IQ_MARKER_MAIN, Color = "0 0 0 0"
                }
                , Text = {
                    Text = lang.GetMessage("UI_CLOSE_BTN", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Align = TextAnchor.MiddleCenter
                }
            }
            , PARENT_IQ_MARKER_MAIN);
            container.Add(new CuiElement {
                Parent = PARENT_IQ_MARKER_MAIN, Components = {
                    new CuiImageComponent {
                        Sprite = Interface.InterfaceMainPanel.SpriteLogoBackground
                    }
                    , new CuiRectTransformComponent {
                        AnchorMin = $"0.015625 0.8453708", AnchorMax = $"0.08229167 0.9638893"
                    }
                    ,
                }
            }
            );
            container.Add(new CuiLabel {
                RectTransform = {
                    AnchorMin = "0.08645834 0.8611111", AnchorMax = "0.2541667 0.9796296"
                }
                , Text = {
                    Text = lang.GetMessage("UI_TITLE_MAIN", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.LowerLeft
                }
            }
            , PARENT_IQ_MARKER_MAIN);
            container.Add(new CuiLabel {
                RectTransform = {
                    AnchorMin = "0.088021541 0.9287037", AnchorMax = "0.2541667 0.9796296"
                }
                , Text = {
                    Text = lang.GetMessage("UI_TITLE_DESCRIPTION", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.LowerLeft
                }
            }
            , PARENT_IQ_MARKER_MAIN);
            if(config.AccessSettings.UseSettingsMarker) {
                container.Add(new CuiLabel {
                    RectTransform = {
                        AnchorMin = "0.6880208 0.90831541", AnchorMax = "0.9869792 0.9398148"
                    }
                    , Text = {
                        Text = lang.GetMessage("UI_DETAL_INFO_TITLE", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.UpperLeft
                    }
                }
                , PARENT_IQ_MARKER_MAIN);
                container.Add(new CuiButton {
                    RectTransform = {
                        AnchorMin = "0.6880208 0.9462963", AnchorMax = "0.8609375 0.9824074"
                    }
                    , Button = {
                        Command = "hit ui settings", Color = HexToRustFormat(Interface.InterfaceSettingsMarker.HexButtonMain)
                    }
                    , Text = {
                        Text = lang.GetMessage("UI_SETTING_BUTTON", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Align = TextAnchor.MiddleCenter
                    }
                }
                , PARENT_IQ_MARKER_MAIN);
            }
            CuiHelper.AddUi(player, container);
            Interface_Marker_Panels(player);
            ButtonUpdateTurn(player);
        }
        public void ButtonUpdateTurn(BasePlayer player) {
            CuiElementContainer container = new CuiElementContainer();
            CuiHelper.DestroyUi(player, "TURN_BTN");
            string LangTurn = DataInformation[player.userID].TurnMarker ? "UI_TURN_SKILL_OFF" : "UI_TURN_SKILL_ON";
            string CommandTurn = DataInformation[player.userID].TurnMarker ? "hit turn off" : "hit turn on";
            container.Add(new CuiButton {
                RectTransform = {
                    AnchorMin = "0.08645833 0.8361111", AnchorMax = "0.2494792 0.8685217"
                }
                , Button = {
                    Command = CommandTurn, Color = "0 0 0 0"
                }
                , Text = {
                    Text = lang.GetMessage(LangTurn, this, player.UserIDString), Align = TextAnchor.UpperLeft
                }
            }
            , PARENT_IQ_MARKER_MAIN, "TURN_BTN");
            CuiHelper.AddUi(player, container);
            Interface_Update_Marker_Show(player);
        }
#endregion
#region Interface Settings Menu
        public void Interface_Settings_Menu(BasePlayer player) {
            CuiElementContainer container = new CuiElementContainer();
            CuiHelper.DestroyUi(player, "TYPE_SHOW_SETTINGS");
            var Interface = config.SettingsInterfaces;
            var Data = DataInformation[player.userID];
            string CommandSelect = "hit func selecttype {0}";
            container.Add(new CuiPanel {
                RectTransform = {
                    AnchorMin = "0.5010417 0.8314815", AnchorMax = "0.9843747 0.912037"
                }
                , Image = {
                    Color = "0 0 0 0"
                }
            }
            , PARENT_IQ_MARKER_MAIN, "TYPE_SHOW_SETTINGS");
            container.Add(new CuiLabel {
                RectTransform = {
                    AnchorMin = "0 0", AnchorMax = "1 0.5977009"
                }
                , Text = {
                    Text = lang.GetMessage("UI_SETTING_TYPE_SHOW", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.UpperRight
                }
            }
            , "TYPE_SHOW_SETTINGS");
#region Animal
            string SpriteAnimal = Data.HitAnimal ? Interface.InterfaceSettingsMarker.SpriteActiveShowMarker : Interface.InterfaceSettingsMarker.SpriteInActiveShowMarker;
            string ColorAnimal = Data.HitAnimal ? Interface.InterfaceSettingsMarker.HexActiveShowMarker : Interface.InterfaceSettingsMarker.HexInActiveShowMarker;
            container.Add(new CuiButton {
                RectTransform = {
                    AnchorMin = "0.002151709 0.6206903", AnchorMax = "0.1648663 1"
                }
                , Button = {
                    Command = String.Format(CommandSelect, "animal"), Color = HexToRustFormat(ColorAnimal)
                }
                , Text = {
                    Text = ""
                }
            }
            , "TYPE_SHOW_SETTINGS", "ANIMAL_BTN");
            container.Add(new CuiLabel {
                RectTransform = {
                    AnchorMin = "0.221476 0", AnchorMax = "1 1"
                }
                , Text = {
                    Text = lang.GetMessage("UI_SETTINGS_TYPE_ANIMAL", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Align = TextAnchor.MiddleLeft
                }
            }
            , "ANIMAL_BTN");
            container.Add(new CuiElement {
                Parent = "ANIMAL_BTN", Components = {
                    new CuiImageComponent {
                        Sprite = SpriteAnimal
                    }
                    , new CuiRectTransformComponent {
                        AnchorMin = $"0.03355689 0.1515158", AnchorMax = $"0.19463 0.8787915"
                    }
                    ,
                }
            }
            );
#endregion
#region Player
            string SpritePlayer = Data.HitPlayer ? Interface.InterfaceSettingsMarker.SpriteActiveShowMarker : Interface.InterfaceSettingsMarker.SpriteInActiveShowMarker;
            string ColorPlayer = Data.HitPlayer ? Interface.InterfaceSettingsMarker.HexActiveShowMarker : Interface.InterfaceSettingsMarker.HexInActiveShowMarker;
            container.Add(new CuiButton {
                RectTransform = {
                    AnchorMin = "0.1691778 0.6206903", AnchorMax = "0.3318927 1"
                }
                , Button = {
                    Command = String.Format(CommandSelect, "player"), Color = HexToRustFormat(ColorPlayer)
                }
                , Text = {
                    Text = ""
 
// ... [Code preview truncated due to length. Full source in attached file] ...

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