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

FREE RustWin : 0.0.1 0.0.1

Нет прав для скачивания
C#:
using Oxide.Game.Rust.Cui;
using System.Collections.Generic;
using UnityEngine;

namespace Oxide.Plugins
{
    [Info("RustWin", "sdapro", "0.0.1")]
	//YouTube https://www.youtube.com/channel/UCaatLYzqycP6He7TEbK-IDA
	//https://t.me/+jb13FvJyK4o5MTli
    public class RustWin : RustPlugin
    {
        private float displayTime = 5f; // Время отображения каждого сообщения в секундах
        private float messageInterval = 20f; // Промежуток между появлением сообщений в секундах
        private List<string> messages = new List<string>
        {
            "rustds oxide plugins RustWin",
            "rustds oxide plugins RustWin",
            "rustds oxide plugins RustWin",
            "rustds oxide plugins RustWin",//можно и больше добавить
        };

        private CuiElementContainer container;
        private int currentMessageIndex = 0;

        void OnPlayerConnected(BasePlayer player)
        {
            CuiHelper.DestroyUi(player, "RustWin");
            ShowNextMessage(player);
        }

        void Unload()
        {
            foreach (BasePlayer player in BasePlayer.activePlayerList)
            {
                CuiHelper.DestroyUi(player, "RustWin");
            }
        }

        private void OnServerInitialized()
        {
            container = new CuiElementContainer();
            foreach (BasePlayer player in BasePlayer.activePlayerList)
            {
                OnPlayerConnected(player);
            }
        }

        private void ShowNextMessage(BasePlayer player)
        {
            CuiHelper.DestroyUi(player, "RustWin");

            var text = messages[currentMessageIndex];
            var fontSize = CalculateFontSizeToFitText(text, "Roboto-BoldItalic", 16, 1920, 50); // Размеры контейнера

            container.Clear();

            container.Add(new CuiElement
            {
                Name = "RustWin",
                Parent = "Overlay",
                Components = {
                    new CuiRectTransformComponent { AnchorMin = "0.5 0.95", AnchorMax = "0.5 0.95", OffsetMin = "-960 -50", OffsetMax = "960 50" },
                    new CuiTextComponent { Text = text, FontSize = fontSize, Align = TextAnchor.MiddleCenter },
                    new CuiOutlineComponent { Color = "0 0 4 0.5", Distance = "1 -1" }
                }
            });

            CuiHelper.AddUi(player, container);
            timer.Once(displayTime, () => HideMessage(player));
        }

        private void HideMessage(BasePlayer player)
        {
            CuiHelper.DestroyUi(player, "RustWin");

            currentMessageIndex++;
            if (currentMessageIndex >= messages.Count)
            {
                currentMessageIndex = 0;
            }

            timer.Once(messageInterval, () => ShowNextMessage(player));
}
    private int CalculateFontSizeToFitText(string text, string font, int maxFontSize, float maxWidth, float maxHeight)
    {
        var tempTextGO = new GameObject("tempTextGO", typeof(RectTransform), typeof(UnityEngine.UI.Text));
        var textComponent = tempTextGO.GetComponent<UnityEngine.UI.Text>();
        textComponent.text = text;
        textComponent.font = GetCustomFont(font);
        textComponent.fontSize = maxFontSize;

        var textTransform = tempTextGO.GetComponent<RectTransform>();
        textTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, maxWidth);
        textTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, maxHeight);

        while (textComponent.preferredWidth > maxWidth || textComponent.preferredHeight > maxHeight)
        {
            textComponent.fontSize -= 1;

            if (textComponent.fontSize <= 0)
                break;
        }

        var fontSize = textComponent.fontSize;

        UnityEngine.Object.Destroy(tempTextGO);

        return fontSize;
    }

    private Font GetCustomFont(string fontName)
    {
        var fonts = Resources.FindObjectsOfTypeAll<Font>();
        foreach (var font in fonts)
        {
            if (font.name.Equals(fontName, System.StringComparison.OrdinalIgnoreCase))
            {
                return font;
            }
        }

        return null;
    }
}
}

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