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

FREE OnScreenLogo : 1.1.5 1.1.5

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

namespace Oxide.Plugins
{
    [Info("OnScreenLogo", "Vlad-00003", "1.1.5", ResourceId = 2601)]
    [Description("Displays the button on the player screen.")]
    //Author info:
    //E-mail: Vlad-00003@mail.ru
    //Vk: vk.com/vlad_00003
    class OnScreenLogo : RustPlugin
    {
        private string PanelName = "GsAdX1wazasdsHs";
        private string Image = null;
        static OnScreenLogo instance;

        #region Config Setup
        private string Amax = "0.34 0.105";
        private string Amin = "0.26 0.025";
        private string ImageAddress = "https://fedoraproject.org/w/uploads/e/ee/Edition-server-full_one-color_black.png";
        #endregion

        #region Initialization
        protected override void LoadDefaultConfig()
        {
            PrintWarning("Generating default configuration file...");
        }
        protected override void LoadConfig()
        {
            base.LoadConfig();
            GetConfig("Image.Link or name of the file in the data folder", ref ImageAddress);
            GetConfig("Minimum anchor", ref Amin);
            GetConfig("Maximum anchor", ref Amax);
            if (!ImageAddress.ToLower().Contains("http"))
            {
                ImageAddress = "file://" + Interface.Oxide.DataDirectory + Path.DirectorySeparatorChar + ImageAddress;
            }
            permission.RegisterPermission("OnScreenLogo.refresh", this);
            LoadData();
            SaveConfig();
        }
        private void LoadData()
        {
            try
            {
                Image = Interface.Oxide.DataFileSystem.ReadObject<string>(Title);
            }
            catch (Exception ex)
            {
                if(ex is MissingMethodException)
                {
                    Image = null;
                    return;
                }
                RaiseError($"Failed to load data file.({ex.Message})\nThe image would now be re-downloaded.");
                Image = null;
            }
        }
        private void SaveData()
        {
            Interface.Oxide.DataFileSystem.WriteObject(Title, Image);
        }
        void OnServerInitialized()
        {
            instance = this;
            if (Image == null)
                DownloadImage();
            else
                foreach (BasePlayer player in BasePlayer.activePlayerList)
                {
                    CreateButton(player);
                }
        }
        void Unload()
        {
            foreach (var player in BasePlayer.activePlayerList)
            {
                CuiHelper.DestroyUi(player, PanelName);
            }
        }
        #endregion

        #region Image Downloading
        [ConsoleCommand("osl.refresh")]
        private void cmdRedownload(ConsoleSystem.Arg arg)
        {
            if (arg.Connection != null && arg.Connection.player != null)
            {
                BasePlayer player = arg.Connection.player as BasePlayer;

                if (!permission.UserHasPermission(player.UserIDString, "OnScreenLogo.refresh"))
                    return;
            }
            DownloadImage();
        }
        private void DownloadImage()
        {
            PrintWarning("Downloading image...");
            ServerMgr.Instance.StartCoroutine(DownloadImage(ImageAddress));
        }
        IEnumerator DownloadImage(string url)
        {
            using (var www = new WWW(url))
            {
                yield return www;
                if (instance == null) yield break;
                if (www.error != null)
                {
                    PrintError($"Failed to add image.File address possibly invalide\n {url}");
                }
                else
                {
                    var tex = www.texture;
                    byte[] bytes = tex.EncodeToPNG();
                    Image = FileStorage.server.Store(bytes, FileStorage.Type.png, CommunityEntity.ServerInstance.net.ID).ToString();
                    SaveData();
                    PrintWarning("Image download is complete.");
                    foreach (BasePlayer player in BasePlayer.activePlayerList)
                    {
                        CreateButton(player);
                    }
                    UnityEngine.Object.DestroyImmediate(tex);
                    yield break;
                }
            }
        }
        #endregion

        #region UI
        void OnPlayerSleepEnded(BasePlayer player) => CreateButton(player);
        private void CreateButton(BasePlayer player)
        {
            CuiHelper.DestroyUi(player, PanelName);
            CuiElementContainer elements = new CuiElementContainer();
            var panel = elements.Add(new CuiPanel
            {
                Image = {
                    Color = "0.00 0.00 0.00 0.00"
                },
                RectTransform = {
                    AnchorMin = Amin,
                    AnchorMax = Amax
                },
                CursorEnabled = false
            }, "Overlay", PanelName);
            var comp = new CuiRawImageComponent { Sprite = "assets/content/textures/generic/fulltransparent.tga" };
            if (Image != null)
            {
                comp.Png = Image;
            }
            elements.Add(new CuiElement
            {
                Parent = PanelName,
                Components =
                {
                    comp,
                    new CuiRectTransformComponent {AnchorMin = "0 0", AnchorMax = "1 1" }
                }
            });
            CuiHelper.AddUi(player, elements);
        }
        #endregion

        #region Helpers
        private void GetConfig<T>(string Key, ref T var)
        {
            if (Config[Key] != null)
            {
                var = (T)Convert.ChangeType(Config[Key], typeof(T));
            }
            Config[Key] = var;
        }
        #endregion
    }
}

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