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

FREE ZealRestart : 1.0.0 1.0.0

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

namespace Oxide.Plugins
{
    [Info("ZealRestart", "Kira", "1.0.0")]
    public class ZealRestart : RustPlugin
    {
        private const string Sharp = "assets/content/ui/ui.background.tile.psd";
        private const string Blur = "assets/content/ui/uibackgroundblur.mat";
        private const string BlurInMenu = "assets/content/ui/uibackgroundblur-ingamemenu.mat";
        private const string Radial = "assets/content/ui/ui.background.transparent.radial.psd";
        private const string UILayer = "UI_Layer_Restart";

        public class RestartController : MonoBehaviour
        {
            private BasePlayer _player;
            public int time;

            private void Awake()
            {
                _player = GetComponent<BasePlayer>();
                time = 300;
                DrawUI_Layer(_player);
                DrawUI_RestartRemaning(_player, time);
                InvokeRepeating(nameof(Timer), 1f, 1f);
            }

            public void Timer()
            {
                if (time <= 0) Destroy(this);
                if (_player == null) Destroy(this);
                time--;
                DrawUI_RestartRemaning(_player, time);
            }

            private static void DrawUI_Layer(BasePlayer player)
            {
                var ui = new CuiElementContainer();

                ui.Add(new CuiPanel
                {
                    CursorEnabled = false,
                    Image =
                    {
                        Color = HexToRustFormat("#D22424CD"),
                        Material = BlurInMenu
                    },
                    RectTransform =
                    {
                        AnchorMin = "0 0.8203704",
                        AnchorMax = "1 0.9045653"
                    }
                }, "Overlay", UILayer);
                ui.Add(new CuiElement
                {
                    Name = "IC1",
                    Parent = UILayer,
                    Components =
                    {
                        new CuiImageComponent
                        {
                            Sprite = "assets/icons/warning_2.png"
                        },
                        new CuiRectTransformComponent
                        {
                            AnchorMin = "0.00625 0",
                            AnchorMax = "0.05360967 1"
                        },
                        new CuiOutlineComponent
                        {
                            Color = HexToRustFormat("#00000042"),
                            Distance = "0.5 0.5"
                        }
                    }
                });

                ui.Add(new CuiElement
                {
                    Name = "IC2",
                    Parent = UILayer,
                    Components =
                    {
                        new CuiImageComponent
                        {
                            Sprite = "assets/icons/warning_2.png"
                        },
                        new CuiRectTransformComponent
                        {
                            AnchorMin = "0.9453034 0",
                            AnchorMax = "0.9926611 1"
                        },
                        new CuiOutlineComponent
                        {
                            Color = HexToRustFormat("#00000042"),
                            Distance = "0.5 0.5"
                        }
                    }
                });

                CuiHelper.DestroyUi(player, UILayer);
                CuiHelper.AddUi(player, ui);
            }

            private static void DrawUI_RestartRemaning(BasePlayer player, int time)
            {
                var ui = new CuiElementContainer();

                ui.Add(new CuiElement
                {
                    Name = UILayer + "TimerRemaning",
                    Parent = UILayer,
                    Components =
                    {
                        new CuiTextComponent
                        {
                            Align = TextAnchor.MiddleCenter,
                            FontSize = 30,
                            Text = $"Внимание, рестарт произойдёт через {time} сек"
                        },
                        new CuiRectTransformComponent
                        {
                            AnchorMin = "0 0",
                            AnchorMax = "1 1"
                        },
                        new CuiOutlineComponent
                        {
                            Color = HexToRustFormat("#00000042"),
                            Distance = "0.5 0.5"
                        }
                    }
                });

                var sound = new Effect("assets/bundled/prefabs/fx/notice/loot.drag.grab.fx.prefab", player, 0,
                    new Vector3(),
                    new Vector3());
                EffectNetwork.Send(sound, player.Connection);
                CuiHelper.DestroyUi(player, UILayer + "TimerRemaning");
                CuiHelper.AddUi(player, ui);
            }

            private void OnDestroy()
            {
                CuiHelper.DestroyUi(_player, UILayer);
            }
        }

        private void Unload()
        {
            foreach (var player in BasePlayer.activePlayerList.Where(player => player.GetComponent<RestartController>() != null))
                UnityEngine.Object.Destroy(player.GetComponent<RestartController>());
        }

        [ConsoleCommand("restartt")]
        private void StartRestart(ConsoleSystem.Arg args)
        {
            if (args.Player().GetComponent<RestartController>() != null)
            {
                UnityEngine.Object.Destroy(args.Player().GetComponent<RestartController>());
                return;
            }

            args.Player().gameObject.AddComponent<RestartController>();
        }

        [ConsoleCommand("restartt.close")]
        private void StopRestart(ConsoleSystem.Arg args)
        {
            UnityEngine.Object.Destroy(args.Player().GetComponent<RestartController>());
        }

        private static string HexToRustFormat(string hex)
        {
            if (string.IsNullOrEmpty(hex))
            {
                hex = "#FFFFFFFF";
            }

            var str = hex.Trim('#');
            if (str.Length == 6)
                str += "FF";
            if (str.Length != 8)
            {
                throw new Exception(hex);
            }

            var r = byte.Parse(str.Substring(0, 2), NumberStyles.HexNumber);
            var g = byte.Parse(str.Substring(2, 2), NumberStyles.HexNumber);
            var b = byte.Parse(str.Substring(4, 2), NumberStyles.HexNumber);
            var a = byte.Parse(str.Substring(6, 2), NumberStyles.HexNumber);

            Color color = new Color32(r, g, b, a);
            return $"{color.r:F2} {color.g:F2} {color.b:F2} {color.a:F2}";
        }
    }
}

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