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

FREE IQMarker : 1.1.10 1.1.10

Нет прав для скачивания
C#:
using Oxide.Core.Plugins;
using System;
using System.Collections.Generic;
using Oxide.Game.Rust.Cui;
using UnityEngine;
using Newtonsoft.Json;
namespace Oxide.Plugins {
    [Info("IQMarker", "Mercury", "1.1.10")]
    [Description("Маркеры для ваших любимчиков")]
    class IQMarker : RustPlugin {
        public static string PARENT_IQ_MARKER_MAIN = "PARENT_IQ_MARKER_MAIN";
        public string GetImage(string shortname, ulong skin = 0) => (string)ImageLibrary?.Call("GetImage", shortname, skin);
        public void Interface_Update_Marker_Show(BasePlayer player) {
            CuiElementContainer container = new CuiElementContainer();
            CuiHelper.DestroyUi(player, "MARKER_UPDATE_ME");
            CuiHelper.DestroyUi(player, "DAMAGE_TEXT_TURN");
            CuiHelper.DestroyUi(player, "WOUNDED_TURN_ICO_TEXT");
            CuiHelper.DestroyUi(player, "WOUNDED_TURN_ICO");
            var Data = DataInformation[player.userID];
            var Interface = config.SettingsInterfaces;
            string HexMarker = Data.HexMarker;
            if (!DataInformation[player.userID].TurnMarker) {
                container.Add(new CuiLabel {
                    RectTransform = {
                        AnchorMin = "0.1598962 0.8769602", AnchorMax = "0.4145834 0.9903497"
                    }
                    , Text = {
                        Text = lang.GetMessage("UI_MARKER_PANEL_SHOW_MARKER_OFF_TURN", this, player.UserIDString), Font = "robotocondensed-bold.ttf", Align = TextAnchor.MiddleLeft
                    }
                }
                , PARENT_IQ_MARKER_MARKERS_PANEL, "MARKER_UPDATE_ME");
                CuiHelper.AddUi(player, container);
                return;
            }
            switch (Data.markerType) {
                case MarkerType.DamageText : {
                    container.Add(new CuiLabel {
                        RectTransform = {
                            AnchorMin = Resizer[Data.typeSize].AnchorMin, AnchorMax = Resizer[Data.typeSize].AnchorMax
                        }
                        , Text = {
                            Text = Math.Round(player.health).ToString(), FontSize = Resizer[Data.typeSize].FontSize, Color = HexToRustFormat(HexMarker), Font = "robotocondensed-bold.ttf", Align = TextAnchor.LowerCenter
                        }
                    }
                    , PARENT_IQ_MARKER_MARKERS_PANEL, "MARKER_UPDATE_ME");
                    if (Data.DamageTextMore.TurnWounded) {
                        container.Add(new CuiElement {
                            Parent = PARENT_IQ_MARKER_MARKERS_PANEL, Name = "WOUNDED_TURN_ICO", Components = {
                                new CuiImageComponent {
                                    Sprite = "assets/icons/fall.png"
                                }
                                , new CuiRectTransformComponent {
                                    AnchorMin = "0.1911466 0.9372742", AnchorMax = "0.2036465 0.9662247"
                                }
                                ,
                            }
                        }
                        );
                        container.Add(new CuiLabel {
                            RectTransform = {
                                AnchorMin = "0.20625 0.9312425", AnchorMax = "0.4229166 0.9698432"
                            }
                            , Text = {
                                Text = lang.GetMessage("UI_ELEMENT_MORE_MARKER_WOUNDED", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.MiddleLeft
                            }
                        }
                        , PARENT_IQ_MARKER_MARKERS_PANEL, "WOUNDED_TURN_ICO_TEXT");
                    }
                    break;
                }
                case MarkerType.HealthBar : {
                    container.Add(new CuiPanel {
                        RectTransform = {
                            AnchorMin = Resizer[Data.typeSize].healthBarCoordinate.AnchorMin, AnchorMax = Resizer[Data.typeSize].healthBarCoordinate.AnchorMax
                        }
                        , Image = {
                            Color = HexToRustFormat(HexMarker + "5D")
                        }
                    }
                    , PARENT_IQ_MARKER_MARKERS_PANEL, "MARKER_UPDATE_ME");
                    container.Add(new CuiPanel {
                        RectTransform = {
                            AnchorMin = "0 0", AnchorMax = $"1 0.{Math.Round(player.health)}", OffsetMin = "0.8 0.8", OffsetMax = "-1 0.8"
                        }
                        , Image = {
                            Color = HexToRustFormat(HexMarker)
                        }
                    }
                    , "MARKER_UPDATE_ME");
                    if (Data.HealthBarMore.TurnDamageText) {
                        container.Add(new CuiLabel {
                            RectTransform = {
                                AnchorMin = "0.1921883 0.9022918", AnchorMax = "0.4255208 0.9408925"
                            }
                            , Text = {
                                Text = String.Format(lang.GetMessage("UI_ELEMENT_MORE_MARKER_DAMAGE_TEXT", this, player.UserIDString), Math.Round(player.health)), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.MiddleLeft
                            }
                        }
                        , PARENT_IQ_MARKER_MARKERS_PANEL, "DAMAGE_TEXT_TURN");
                    }
                    if (Data.HealthBarMore.TurnWounded) {
                        container.Add(new CuiElement {
                            Parent = PARENT_IQ_MARKER_MARKERS_PANEL, Name = "WOUNDED_TURN_ICO", Components = {
                                new CuiImageComponent {
                                    Sprite = "assets/icons/fall.png"
                                }
                                , new CuiRectTransformComponent {
                                    AnchorMin = "0.1911466 0.9372742", AnchorMax = "0.2036465 0.9662247"
                                }
                                ,
                            }
                        }
                        );
                        container.Add(new CuiLabel {
                            RectTransform = {
                                AnchorMin = "0.20625 0.9312425", AnchorMax = "0.4229166 0.9698432"
                            }
                            , Text = {
                                Text = lang.GetMessage("UI_ELEMENT_MORE_MARKER_WOUNDED", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.MiddleLeft
                            }
                        }
                        , PARENT_IQ_MARKER_MARKERS_PANEL, "WOUNDED_TURN_ICO_TEXT");
                    }
                    break;
                }
                case MarkerType.Icon : {
                    string MarkerKey = "ICON_{0}_{1}";
                    string Marker = String.Format(MarkerKey, config.MarkesSettings.IconSetting.IconList[Data.IconMore.IndexMarker].PNG, Data.IconMore.IndexMarker);
                    container.Add(new CuiElement {
                        Parent = PARENT_IQ_MARKER_MARKERS_PANEL, Name = $"MARKER_UPDATE_ME", Components = {
                            new CuiRawImageComponent {
                                Png = GetImage(Marker), Color = HexToRustFormat(HexMarker)
                            }
                            , new CuiRectTransformComponent {
                                AnchorMin = Resizer[Data.typeSize].AnchorMin, AnchorMax = Resizer[Data.typeSize].AnchorMax
                            }
                            ,
                        }
                    }
                    );
                    if(Data.IconMore.TurnDamageText) {
                        container.Add(new CuiLabel {
                            RectTransform = {
                                AnchorMin = "0.1921883 0.9022918", AnchorMax = "0.4255208 0.9408925"
                            }
                            , Text = {
                                Text = String.Format(lang.GetMessage("UI_ELEMENT_MORE_MARKER_DAMAGE_TEXT", this, player.UserIDString), Math.Round(player.health)), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.MiddleLeft
                            }
                        }
                        , PARENT_IQ_MARKER_MARKERS_PANEL, "DAMAGE_TEXT_TURN");
                    }
                    if (Data.IconMore.TurnWounded) {
                        container.Add(new CuiElement {
                            Parent = PARENT_IQ_MARKER_MARKERS_PANEL, Name = "WOUNDED_TURN_ICO", Components = {
                                new CuiImageComponent {
                                    Sprite = "assets/icons/fall.png"
                                }
                                , new CuiRectTransformComponent {
                                    AnchorMin = "0.1911466 0.9372742", AnchorMax = "0.2036465 0.9662247"
                                }
                                ,
                            }
                        }
                        );
                        container.Add(new CuiLabel {
                            RectTransform = {
                                AnchorMin = "0.20625 0.9312425", AnchorMax = "0.4229166 0.9698432"
                            }
                            , Text = {
                                Text = lang.GetMessage("UI_ELEMENT_MORE_MARKER_WOUNDED", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.MiddleLeft
                            }
                        }
                        , PARENT_IQ_MARKER_MARKERS_PANEL, "WOUNDED_TURN_ICO_TEXT");
                    }
                    break;
                }
            }
            CuiHelper.AddUi(player, container);
        }
        public static string PermissionUseSizer = "iqmarker.usesize";
        private void OnServerInitialized() {
            PrintWarning(LanguageEn ? "Loaded images.." : "Загружаем изображения..");
            LoadedImage();
            foreach (var player in BasePlayer.activePlayerList) OnPlayerConnected(player);
            PrintWarning(LanguageEn ? "Registering rights.." : "Регистрируем права..");
            RegisteredPermissions();
            PrintWarning(LanguageEn ? "We check the rights of the players.." : "Проверяем права игроков..");
            PrintWarning(LanguageEn ? "Plugin loaded successfully!" : "Плагин загружен успешно!");
        }
        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);
        }
        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 static string PermissionUseCustomColor = "iqmarker.usecustomcolor";
        [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(LanguageEn ? $"{player.displayName} - used DEBUG mode" : $"{player.displayName} - использовал DEBUG режим");
                    DebugPlayerHit(player);
                    PrintToConsole(LanguageEn ? "DEBUG successfully used" : "Успешно использован 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;
                }
            }
        }
        void WriteData() => Oxide.Core.Interface.Oxide.DataFileSystem.WriteObject("IQMarker/SettingsUser", DataInformation);
        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);
        }
        public class ResizerAttackHit {
            public readonly Dictionary<TypeSize, TypeResize> ResizerAttack = new Dictionary<TypeSize, TypeResize> {
                [TypeSize.Big]
                = new TypeResize {
                    IconParams = new TypeResize.Params {
                        AnchorMin = "0.4833336 0.4666665", AnchorMax = "0.5166664 0.5259269",
                    }
                    , HealthBar = new TypeResize.Params {
                        AnchorMin = "0.4359384 0.4731481", AnchorMax = "0.4406259 0.5277778",
                    }
                    , FontSizeText = 20,
                }
                , [TypeSize.Middle] = new TypeResize {
                    IconParams = new TypeResize.Params {
                        AnchorMin = "0.4875002 0.473148", AnchorMax = "0.5125002 0.5175922"
                    }
                    , HealthBar = new TypeResize.Params {
                        AnchorMin = "0.43698 0.4805555", AnchorMax = "0.4395834 0.5166664",
                    }
                    , FontSizeText = 15,
                }
                , [TypeSize.Little] = new TypeResize {
                    IconParams = new TypeResize.Params {
                        AnchorMin = "0.4916668 0.4796295", AnchorMax = "0.5083334 0.509259"
                    }
                    , HealthBar = new TypeResize.Params {
                        AnchorMin = "0.4375008 0.487037", AnchorMax = "0.4390625 0.5101849",
                    }
                    , FontSizeText = 10,
                }
            }
            ;
            internal class TypeResize {
                public Params IconParams = new Params();
                public Params HealthBar = new Params();
                public int FontSizeText;
                internal class Params {
                    public string AnchorMin;
                    public string AnchorMax;
                }
            }
        }
        public enum MarkerType {
            DamageText, HealthBar, Icon,
        }
        /// <summary>
        /// Обновление х.х.х
        /// - Исправление после обновления игры
        /// </summary>
        ///
        private const Boolean LanguageEn = false;
        public void Register(string Permissions) {
            if (!String.IsNullOrWhiteSpace(Permissions)) if (!permission.PermissionExists(Permissions, this)) permission.RegisterPermission(Permissions, this);
        }
        public static string PARENT_IQ_MARKER_MARKERS_PANEL = "PARENT_IQ_MARKER_MARKERS_PANEL";
        public void Interface_Hex_Settings_Menu(BasePlayer player) {
            if (!permission.UserHasPermission(player.UserIDString, PermissionUseCustomColor)) return;
            CuiElementContainer container = new CuiElementContainer();
            CuiHelper.DestroyUi(player, "HEX_SHOW_SETTINGS");
            var Interface = config.SettingsInterfaces;
            var Data = DataInformation[player.userID];
            string CommandSetHex = "hit func sethex {0}";
            container.Add(new CuiPanel {
                RectTransform = {
                    AnchorMin = "0.5010417 0.7740743", AnchorMax = "0.9843747 0.8435205"
                }
                , Image = {
                    Color = "0 0 0 0"
                }
            }
            , PARENT_IQ_MARKER_MAIN, "HEX_SHOW_SETTINGS");
            container.Add(new CuiLabel {
                RectTransform = {
                    AnchorMin = "0 0", AnchorMax = "1 0.5977009"
                }
                , Text = {
                    Text = lang.GetMessage("UI_SETTING_HEX_SHOW", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.UpperRight
                }
            }
            , "HEX_SHOW_SETTINGS");
            container.Add(new CuiLabel {
                RectTransform = {
                    AnchorMin = "0.378233 0.4266549", AnchorMax = "0.5959055 1"
                }
                , Text = {
                    Text = lang.GetMessage("UI_SETTING_HEX_SHOW_YOUR", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.UpperRight
                }
            }
            , "HEX_SHOW_SETTINGS");
            string SetHex = "";
            container.Add(new CuiPanel {
                RectTransform = {
                    AnchorMin = "0.6056038 0.6399806", AnchorMax = "1 0.95"
                }
                , Image = {
                    Color = HexToRustFormat(Interface.InterfaceSettingsMarker.HexButtonInputPanel), Material = "assets/content/ui/uibackgroundblur-ingamemenu.mat"
                }
            }
            , "HEX_SHOW_SETTINGS", "HEX_SHOW_SETTINGS" + ".Input");
            container.Add(new CuiElement {
                Parent = "HEX_SHOW_SETTINGS" + ".Input", Name = "HEX_SHOW_SETTINGS" + ".Input.Current", Components = {
                    new CuiInputFieldComponent {
                        Text = SetHex, FontSize = 12, Command = String.Format(CommandSetHex, SetHex), Align = TextAnchor.MiddleCenter, CharsLimit = 10
                    }
                    , new CuiRectTransformComponent {
                        AnchorMin = "0 0", AnchorMax = "1 1"
                    }
                }
            }
            );
            CuiHelper.AddUi(player, container);
        }
        public static string PARENT_IQ_MARKER_ATTACK_HIT = "PARENT_IQ_MARKER_ATTACK_HIT";
        private Boolean IsArenaTournament(BasePlayer player) {
            Item itemPlayer = player.GetActiveItem();
            if (itemPlayer == null) return true;
            return ArenaTournament && ArenaTournament.Call<Boolean>("IsOnTournament", player.userID.Get());
        }
        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}");
        }
        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);
        }
        void OnPlayerConnected(BasePlayer player) {
            RegisteredDataUser(player);
            CachedImage(player);
            ReturnSettingsMore(player);
        }
        public Dictionary<ulong, SettingsUser> DataInformation = new Dictionary<ulong, SettingsUser>();
        protected override void SaveConfig() => Config.WriteObject(config);
        protected override void LoadConfig() {
            base.LoadConfig();
            try {
                config = Config.ReadObject<Configuration>();
                if (config == null) LoadDefaultConfig();
            }
            catch {
                PrintWarning(LanguageEn ? $"Error reading # 57 configuration 'oxide/config/{Name}', creating a new configuration!!" : $"Ошибка чтения #57 конфигурации 'oxide/config/{Name}', создаём новую конфигурацию!!");
                LoadDefaultConfig();
            }
            NextTick(SaveConfig);
        }
        private new void LoadDefaultMessages() {
            lang.RegisterMessages(new Dictionary<string, string> {
                ["UI_TITLE_DESCRIPTION"]
                = "<size=15>CHOOSE YOURSELF</size>", ["UI_TITLE_MAIN"] = "<size=50><b>MARKER</b></size>", ["UI_CLOSE_BTN"] = "<size=30><b>CLOSE</b></size>", ["UI_TURN_SKILL_ON"] = "<size=20><b><color=#93C346FF>ON MARKER</color></b></size>", ["UI_TURN_SKILL_OFF"] = "<size=20><b><color=#FF5331FF>OFF MARKER</color></b></size>", ["UI_DETAL_INFO_TITLE"] = "<b><size=14>YOU CAN CUSTOMIZE THE MARKER MORE DETAILS</size></b>", ["UI_SETTING_BUTTON"] = "<b><size=15>SETTING MARKER</size></b>", ["UI_SETTING_TYPE_SHOW"] = "<b><size=17>CHOOSE WHERE YOU WILL HAVE A MARKER TO BE DISPLAYED</size></b>", ["UI_SETTING_HEX_SHOW"] = "<b><size=17>ENTER YOUR OWN COLOR IN HEX FOR MARKER</size></b>", ["UI_SETTING_HEX_SHOW_YOUR"] = "<b><size=20>YOUR HEX :</size></b>", ["UI_SETTINGS_TYPE_ANIMAL"] = "<size=12><b>ANIMAL</b></size>", ["UI_SETTINGS_TYPE_PLAYER"] = "<size=12><b>PLAYER</b></size>", ["UI_SETTINGS_TYPE_BUILDING"] = "<size=12><b>BUILDING</b></size>", ["UI_SETTINGS_TYPE_ENTITY"] = "<size=12><b>ENTITY</b></size>", ["UI_SETTINGS_TYPE_TRANSPORT"] = "<size=12><b>TRANSPORT</b></size>", ["UI_SETTINGS_TYPE_NPC"] = "<size=12><b>SCIENTIEST</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER"] = "<size=50><b>MARKERK:</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_OFF_TURN"] = "<size=35><b><color=#FF5331FF>MARKER TURN OFF</color></b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_SIZE"] = "<size=17><b>CHOOSE ONE OF THE AVAILABLE SIZES FOR THE MARKER</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_COLOR"] = "<size=17><b>CHOOSE ONE OF THE AVAILABLE COLORS FOR THE MARKER</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_SIZE_LITTLE"] = "<size=18>LITTLE</size>", ["UI_MARKER_PANEL_SHOW_MARKER_SIZE_MIDDLE"] = "<size=18>MIDDLE</size>", ["UI_MARKER_PANEL_SHOW_MARKER_SIZE_BIG"] = "<size=18>BIG</size>", ["UI_ATTAKER_KILLEN"] = "KILLED", ["UI_MARKER_PANEL_SHOW_MARKER_LIST_TITLE"] = "<size=20><b>CHOOSE A CONVENIENT MARKER TYPE </b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_BTN_DEADING"] = "<size=15><b>NOT AVAILABLE FOR SELECTION</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_BTN_TAKING"] = "<size=15><b>SELECTED TYPE</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_BTN_ACCES"] = "<size=15><b>SELECT THIS TYPE</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_TITLE"] = "<size=20><b>YOU CAN CHOOSE AN ADDITIONAL SETTING</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_DESCRIPTION"] = "<size=12><b>SET YOUR OWN MARKER AS YOU WILL BE COMFORTABLE</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_TITLE_DAMAGE_TEXT"] = "<size=16><b>DISPLAY DAMAGE NEAR THE {0}</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_TITLE_WOUNDED_ICO"] = "<size=16><b>DISPLAYING THE FALL ICON WHEN THE PLAYER IS FALLING</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_TITLE_ICOLIST_ICO"] = "<size=16><b>DISPLAYING THE MARKER ICON</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_BTN_YES"] = "<size=18><b>TURN ON</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_BTN_NO"] = "<size=18><b>TURN OFF</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_BTN_DEADING"] = "<size=18><b>NO ACCESS</b></size>", ["UI_ELEMENT_MORE_MARKER_DAMAGE_TEXT"] = "<size=13>{0} - damage done near markerr</size>", ["UI_ELEMENT_MORE_MARKER_WOUNDED"] = "<size=13>- player fall display </size>", ["UI_ELEMENT_MORE_MARKER_WOUNDED_HIT_ATTACK_HEADSHOT"] = "<color=#CC8227><b>HEADSHOT</b></color>", ["UI_ELEMENT_MORE_MARKER_WOUNDED_HIT_ATTACK_FRIENDS"] = "<color=#4EB145FF><b>FRIENDS</b></color>",
            }
            , this);
            lang.RegisterMessages(new Dictionary<string, string> {
                ["UI_TITLE_DESCRIPTION"]
                = "<size=15>ВЫБЕРИТЕ СЕБЕ УДОБНЫЙ</size>", ["UI_TITLE_MAIN"] = "<size=50><b>МАРКЕР</b></size>", ["UI_CLOSE_BTN"] = "<size=30><b>ЗАКРЫТЬ</b></size>", ["UI_TURN_SKILL_ON"] = "<size=20><b><color=#93C346FF>ВКЛЮЧИТЬ МАРКЕР</color></b></size>", ["UI_TURN_SKILL_OFF"] = "<size=20><b><color=#FF5331FF>ВЫКЛЮЧИТЬ МАРКЕР</color></b></size>", ["UI_DETAL_INFO_TITLE"] = "<b><size=14>ВЫ МОЖЕТЕ НАСТРОИТЬ МАРКЕР БОЛЕЕ ДЕТАЛЬНО</size></b>", ["UI_SETTING_BUTTON"] = "<b><size=15>НАСТРОИТЬ МАРКЕР</size></b>", ["UI_SETTING_TYPE_SHOW"] = "<b><size=17>ВЫБЕРИТЕ ПРИ ПОПАДАНИИ В КОГО БУДЕТ ОТОБРАЖАТЬСЯ МАРКЕР</size></b>", ["UI_SETTING_HEX_SHOW"] = "<b><size=17>ВВЕДИТЕ СОБСТВЕННЫЙ ЦВЕТ В ФОРМАТЕ HEX ДЛЯ МАРКЕРА</size></b>", ["UI_SETTING_HEX_SHOW_YOUR"] = "<b><size=20>ВАШ HEX :</size></b>", ["UI_SETTINGS_TYPE_ANIMAL"] = "<size=12><b>ЖИВОТНЫЕ</b></size>", ["UI_SETTINGS_TYPE_PLAYER"] = "<size=12><b>ИГРОКИ</b></size>", ["UI_SETTINGS_TYPE_BUILDING"] = "<size=12><b>ПОСТРОЙКИ</b></size>", ["UI_SETTINGS_TYPE_ENTITY"] = "<size=12><b>ПРЕДМЕТЫ</b></size>", ["UI_SETTINGS_TYPE_TRANSPORT"] = "<size=12><b>ТРАНСПОРТ</b></size>", ["UI_SETTINGS_TYPE_NPC"] = "<size=12><b>УЧЕНЫЕ</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER"] = "<size=50><b>МАРКЕР:</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_OFF_TURN"] = "<size=35><b><color=#FF5331FF>МАРКЕР ВЫКЛЮЧЕН</color></b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_SIZE"] = "<size=17><b>ВЫБЕРИТЕ ОДИН ИЗ ДОСТУПНЫХ РАЗМЕРОВ ДЛЯ МАРКЕРА</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_COLOR"] = "<size=17><b>ВЫБЕРИТЕ ОДИН ИЗ ДОСТУПНЫХ ЦВЕТОВ ДЛЯ МАРКЕРА</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_SIZE_LITTLE"] = "<size=18>МАЛЕНЬКИЙ</size>", ["UI_MARKER_PANEL_SHOW_MARKER_SIZE_MIDDLE"] = "<size=18>СРЕДНИЙ</size>", ["UI_MARKER_PANEL_SHOW_MARKER_SIZE_BIG"] = "<size=18>БОЛЬШОЙ</size>", ["UI_ATTAKER_KILLEN"] = "УБИТ", ["UI_MARKER_PANEL_SHOW_MARKER_LIST_TITLE"] = "<size=20><b>ВЫБЕРИТЕ УДОБНЫЙ ТИП МАРКЕРА</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_BTN_DEADING"] = "<size=15><b>НЕДОСТУПЕН ДЛЯ ВЫБОРА</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_BTN_TAKING"] = "<size=15><b>ВЫБРАННЫЙ ТИП</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_BTN_ACCES"] = "<size=15><b>ВЫБРАТЬ ДАННЫЙ ТИП</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_TITLE"] = "<size=20><b>ВЫ МОЖЕТЕ ВЫБРАТЬ ДОПОЛНИТЕЛЬНУЮ НАСТРОЙКУ</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_DESCRIPTION"] = "<size=12><b>НАСТРОЙТЕ СВОЙ МАРКЕР ТАК,КАК ВАМ БУДЕТ УДОБНО</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_TITLE_DAMAGE_TEXT"] = "<size=16><b>ОТОБРАЖЕНИЕ УРОНА РЯДОМ С {0}</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_TITLE_WOUNDED_ICO"] = "<size=16><b>ОТОБРАЖЕНИЕ ИКОНКИ ПАДЕНИЯ ПРИ ПАДЕНИИ ИГРОКА</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_TITLE_ICOLIST_ICO"] = "<size=16><b>ОТОБРАЖЕНИЕ ИКОНКИ МАРКЕРА</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_BTN_YES"] = "<size=18><b>ВКЛЮЧИТЬ</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_BTN_NO"] = "<size=18><b>ВЫКЛЮЧИТЬ</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_BTN_DEADING"] = "<size=18><b>НЕДОСТУПНО</b></size>", ["UI_ELEMENT_MORE_MARKER_DAMAGE_TEXT"] = "<size=13>{0} - нанесенный урон возле маркера</size>", ["UI_ELEMENT_MORE_MARKER_WOUNDED"] = "<size=13>- отображение падения игрока</size>", ["UI_ELEMENT_MORE_MARKER_WOUNDED_HIT_ATTACK_HEADSHOT"] = "<color=#CC8227><b>ГОЛОВА</b></color>", ["UI_ELEMENT_MORE_MARKER_WOUNDED_HIT_ATTACK_FRIENDS"] = "<color=#4EB145FF><b>ДРУГ</b></color>",
            }
            , this, "ru");
            PrintWarning(LanguageEn ? "Language file uploaded successfully" : "Языковой файл загружен успешно");
        }
        void ReadData() {
            DataInformation = Oxide.Core.Interface.Oxide.DataFileSystem.ReadObject<Dictionary<ulong, SettingsUser>>("IQMarker/SettingsUser");
        }
        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,
                }
            }
            );
        }
        void OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info) {
            if (info == null || entity == null) return;
            var Attacker = info?.InitiatorPlayer;
            if (Attacker == null || !(bool)(Attacker is BasePlayer) || Attacker.IsNpc || Attacker.IsDead()) return;
            if (info.damageTypes == null || info.damageTypes.Total() < 1) return;
            if (entity is BaseCorpse) return;
            if (!DataInformation.ContainsKey(Attacker.userID)) return;
            if (IsArenaTournament(Attacker)) return;
            var Data = DataInformation[Attacker.userID];
            if (Data.HitAnimal) if (entity is BaseAnimalNPC || entity is RidableHorse) if (!entity.IsDead()) {
                Interface_Attack_Hit(Attacker, info);
                return;
            }
            if (Data.HitBuilding) if (entity is BuildingBlock) if (!entity.IsDestroyed) {
                Interface_Attack_Hit(Attacker, info);
                return;
            }
            if (Data.HitNPC) if (entity is HumanNPC || entity.IsNpc || (bool)(entity as BaseNpc) || entity is NPCPlayer || entity is ScientistNPC) if (!entity.IsDead()) {
                Interface_Attack_Hit(Attacker, info);
                return;
            }
            if (Data.HitPlayer) if (entity is BasePlayer) if (entity.ToPlayer().userID != Attacker.userID) if (!entity.IsDead()) {
                Interface_Attack_Hit(Attacker, info);
                return;
            }
            if (Data.HitTransport) if (entity is ModularCar || entity is BaseVehicleSeat || entity is BaseModularVehicle || entity is BaseVehicleModule) {
                Interface_Attack_Hit(Attacker, info);
                return;
            }
            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);
                return;
            }
        }
        [ChatCommand("hit")]
        void ChatCommandHit(BasePlayer player) {
            Interface_Main_Menu(player);
        }
        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 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");
            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"
                    }
                    ,
                }
            }
            );
            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 = ""
                }
            }
            , "TYPE_SHOW_SETTINGS", "PLAYER_BTN");
            container.Add(new CuiLabel {
                RectTransform = {
                    AnchorMin = "0.221476 0", AnchorMax = "1 1"
                }
                , Text = {
                    Text = lang.GetMessage("UI_SETTINGS_TYPE_PLAYER", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Align = TextAnchor.MiddleLeft
                }
            }
            , "PLAYER_BTN");
            container.Add(new CuiElement {
                Parent = "PLAYER_BTN", Components = {
                    new CuiImageComponent {
                        Sprite = SpritePlayer
                    }
                    , new CuiRectTransformComponent {
                        AnchorMin = $"0.03355689 0.1515158", AnchorMax = $"0.19463 0.8787915"
                    }
                    ,
                }
            }
            );
            string SpriteBuilding = Data.HitBuilding ? Interface.InterfaceSettingsMarker.SpriteActiveShowMarker : Interface.InterfaceSettingsMarker.SpriteInActiveShowMarker;
            string ColorBuilding = Data.HitBuilding ? Interface.InterfaceSettingsMarker.HexActiveShowMarker : Interface.InterfaceSettingsMarker.HexInActiveShowMarker;
            container.Add(new CuiButton {
                RectTransform = {
                    AnchorMin = "0.3362046 0.6206903", AnchorMax = "0.4989195 1"
                }
                , Button = {
                    Command = String.Format(CommandSelect, "building"), Color = HexToRustFormat(ColorBuilding)
                }
                , Text = {
                    Text = ""
                }
            }
            , "TYPE_SHOW_SETTINGS
// ... [Code preview truncated due to length. Full source in attached file] ...

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