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

FREE Crosshair : 3.1.0 3.1.0

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System.Collections.Generic;
using System.Globalization;
using Oxide.Game.Rust.Cui;
using UnityEngine;

namespace Oxide.Plugins
{
    [Info("Crosshair", "MisterPixie", "3.1.0")]
    [Description("Allows the user to toggle a crosshair")]

    class Crosshair : RustPlugin
    {
        private string mainUI = "UI_MAIN";
        private CuiElementContainer _ui;
        private HashSet<string> _crosshairSettings = new HashSet<string>();
        private const string _usePerm = "crosshair.use";

        #region Classes
        private class UI
        {
            public static CuiElementContainer CreateElementContainer(string panelName, string color, string aMin, string aMax, bool cursor = false)
            {
                var newElement = new CuiElementContainer
                {
                    {
                        new CuiPanel
                        {
                            Image = {Color = color},
                            RectTransform = {AnchorMin = aMin, AnchorMax = aMax},
                            CursorEnabled = cursor
                        },
                        new CuiElement().Parent = "Hud",
                        panelName
                    }
                };

                return newElement;
            }

            public static void CreateLabel(ref CuiElementContainer container, string panel, string color, string text, int size, string aMin, string aMax, TextAnchor align = TextAnchor.MiddleCenter, float fadein = 1f)
            {
                container.Add(new CuiLabel
                {
                    Text = { Color = color, FontSize = size, Align = align, FadeIn = fadein, Text = text },
                    RectTransform = { AnchorMin = aMin, AnchorMax = aMax }
                }, panel, CuiHelper.GetGuid());
            }
        }
        #endregion

        #region Methods
        private void ToggleCrosshair(BasePlayer player, string command, string[] args)
        {
            if (!permission.UserHasPermission(player.UserIDString, _usePerm))
            {
                PrintToChat(player, Lang("No Permission", player.UserIDString));
                return;
            }

            if (_crosshairSettings.Contains(player.UserIDString))
            {
                DestroyCrosshair(player);
                _crosshairSettings.Remove(player.UserIDString);
                player.ChatMessage(Lang("CrosshairOff", player.UserIDString));
                return;
            }

            CuiHelper.AddUi(player, _ui);
            _crosshairSettings.Add(player.UserIDString);
            player.ChatMessage(Lang("CrosshairOn", player.UserIDString));

        }

        private void DestroyCrosshair(BasePlayer player)
        {
            CuiHelper.DestroyUi(player, mainUI);
        }

        private void DestroyAllCommand(ConsoleSystem.Arg arg)
        {
            var player = arg.Connection.player as BasePlayer;
            if (player == null) return;

            DestroyCrosshair(player);
        }

        private void CreateUI()
        {
            var container = UI.CreateElementContainer(mainUI, $"{HexToColor("000000")} 0", "0.469 0.467", "0.53 0.53");
            UI.CreateLabel(ref container, mainUI, $"{HexToColor(configData.CrosshairColor)} 0.9", configData.CrosshairText, 16, "0 0", "1 1");
            _ui = container;
        }
        private static string HexToColor(string hexColor)
        {
            if (hexColor.IndexOf('#') != -1) hexColor = hexColor.Replace("#", "");

            var red = 0;
            var green = 0;
            var blue = 0;

            if (hexColor.Length == 6)
            {
                red = int.Parse(hexColor.Substring(0, 2), NumberStyles.AllowHexSpecifier);
                green = int.Parse(hexColor.Substring(2, 2), NumberStyles.AllowHexSpecifier);
                blue = int.Parse(hexColor.Substring(4, 2), NumberStyles.AllowHexSpecifier);
            }
            else if (hexColor.Length == 3)
            {
                red = int.Parse(hexColor[0] + hexColor[0].ToString(), NumberStyles.AllowHexSpecifier);
                green = int.Parse(hexColor[1] + hexColor[1].ToString(), NumberStyles.AllowHexSpecifier);
                blue = int.Parse(hexColor[2] + hexColor[2].ToString(), NumberStyles.AllowHexSpecifier);
            }

            return $"{(double)red / 255} {(double)green / 255} {(double)blue / 255}";
        }
        #endregion

        #region Hooks
        private void Init()
        {
            LoadVariables();
            permission.RegisterPermission("crosshair.use", this);
            cmd.AddChatCommand("crosshair", this, "ToggleCrosshair");
            cmd.AddConsoleCommand("ui_destroy", this, "DestroyAllCommand");
            CreateUI();
        }

        private void Unload()
        {
            foreach (var player in BasePlayer.activePlayerList)
            {
                DestroyCrosshair(player);
            }
        }

        private void OnPlayerDisconnected(BasePlayer player)
        {
            DestroyCrosshair(player);
            _crosshairSettings.Remove(player.UserIDString);
        }
        #endregion

        #region lang
        private string Lang(string key, string id = null, params object[] args) => string.Format(lang.GetMessage(key, this, id), args);

        protected override void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {
                {"CrosshairOn", "Crosshair turned on."},
                {"CrosshairOff", "Crosshair turned off."},
                {"No Permission", "Error, you lack permission."}
            }, this);
        }
        #endregion

        #region Config
        private ConfigData configData;
        private class ConfigData
        {
            public string CrosshairColor;
            public string CrosshairText;
        }

        private void LoadVariables()
        {
            LoadConfigVariables();
            SaveConfig();
        }

        protected override void LoadDefaultConfig()
        {
            var config = new ConfigData
            {
                CrosshairColor = "#FF0000",
                CrosshairText = "·"
            };
            SaveConfig(config);
        }
        private void LoadConfigVariables() => configData = Config.ReadObject<ConfigData>();
        void SaveConfig(ConfigData config) => Config.WriteObject(config, true);
        #endregion
    }
}

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