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

FREE CupboardGUI : 1.0.5 1.0.5

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using Oxide.Core;
using Oxide.Game.Rust.Cui;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
namespace Oxide.Plugins
{
    [Info("CupboardGUI", "RustPlugin.ru", "1.0.5")]
      //  Слив плагинов server-rust by Apolo YouGame

    public class CupboardGUI : RustPlugin
    {

        ImageCache ImageAssets;
        GameObject CupObject;

        #region ImageDownloader

        private void cacheImage()
        {
            CupObject = new GameObject();
            ImageAssets = CupObject.AddComponent<ImageCache>();
            ImageAssets.imageFiles.Clear();
            string dataDirectory = "file://" + Interface.Oxide.DataDirectory + Path.DirectorySeparatorChar;
            ImageAssets.getImage("cup", dataDirectory + "cup.png");
            download();
        }

        class ImageCache : MonoBehaviour
        {
            public Dictionary<string, string> imageFiles = new Dictionary<string, string>();

            List<Queue> queued = new List<Queue>();

            class Queue
            {
                public string url { get; set; }
                public string name { get; set; }
            }

            public void OnDestroy()
            {
                foreach (var value in imageFiles.Values)
                {
                    FileStorage.server.RemoveEntityNum(uint.MaxValue, Convert.ToUInt32(value));
                }
            }

            public void getImage(string name, string url)
            {
                queued.Add(new Queue
                {
                    url = url,
                    name = name
                });
            }

            IEnumerator WaitForRequest(Queue queue)
            {
                using (var www = new WWW(queue.url))
                {
                    yield return www;

                    if (string.IsNullOrEmpty(www.error))
                    {
                        var stream = new MemoryStream();
                        stream.Write(www.bytes, 0, www.bytes.Length);
                        imageFiles.Add(queue.name, FileStorage.server.Store(www.bytes, FileStorage.Type.png, CommunityEntity.ServerInstance.net.ID).ToString());
                    }
                    else
                    {
                        Debug.LogWarning("\n\n!!!!!!!!!!!!!!!!!!!!!\n\nError downloading image files (cup.png)\nThey must be in your oxide/data/ !\n\n!!!!!!!!!!!!!!!!!!!!!\n\n");
                        ConsoleSystem.Run(ConsoleSystem.Option.Unrestricted, "oxide.unload CupboardGUI");
                    }
                }
            }

            public void process()
            {
                for (int i = 0; i < 1; i++)
                    StartCoroutine(WaitForRequest(queued[i]));
            }
        }

        public string fetchImage(string name)
        {
            string result;
            if (ImageAssets.imageFiles.TryGetValue(name, out result))
                return result;
            return string.Empty;
        }

        void download()
        {
            ImageAssets.process();
        }

        #endregion

        void OnServerInitialized()
        {
            cacheImage();
        }
        void OnPlayerDesconected(BasePlayer player)
        { }
        void Unloaded()
        {
            foreach (var player in BasePlayer.activePlayerList)
            {
                CuiHelper.DestroyUi(player, "gui");
            }
            foreach (var player in BasePlayer.activePlayerList)
            {
                Destroy(player);
            }
            UnityEngine.Object.Destroy(CupObject);
        }

        List<ulong> activeGUI = new List<ulong>();

        void Gui(BasePlayer player)
        {
            CuiElementContainer container = new CuiElementContainer();
            if (activeGUI.Contains(player.userID)) return;
            CuiHelper.DestroyUi(player, "CupboardGui");
            CuiElement element = new CuiElement
            {
                Name = "CupboardGui",
                Components = {
                        new CuiRawImageComponent {
                            Png = fetchImage("cup"),
                            Color = "1 1 1 0.92",
                            Sprite = "assets/content/textures/generic/fulltransparent.tga",
                            FadeIn = 0.53f
                        },
                        new CuiRectTransformComponent {
                            AnchorMin = "0.344 0.11",
                            AnchorMax = "0.641 0.143"
                        },
                    },
                FadeOut = 0.53f
            };
            container.Add(element);
            CuiHelper.AddUi(player, container);
            activeGUI.Add(player.userID);
        }

        float lastTick = UnityEngine.Time.realtimeSinceStartup;

        void OnTick(BaseEntity entity)
        {
            if (UnityEngine.Time.realtimeSinceStartup - lastTick < 0.4f) return;
            lastTick = UnityEngine.Time.realtimeSinceStartup;
            foreach (var player in BasePlayer.activePlayerList)
            {
                var privilege = player.GetBuildingPrivilege(player.WorldSpaceBounds());
                if (privilege != null && !player.IsBuildingAuthed())
                {
                    Gui(player);
                    continue;
                }
                else
                { 
                    Destroy(player);
                    continue;
                }

            }
        }
        void OnPlayerDisconnected()
        {
            foreach (var player in BasePlayer.activePlayerList)
            {
                CuiHelper.DestroyUi(player, "CupboardGui");
                activeGUI.Remove(player.userID);
            }
        }
        void Destroy(BasePlayer player)
        {
            CuiHelper.DestroyUi(player, "CupboardGui");
            activeGUI.Remove(player.userID);
        }

        #region Footer
    }
}
#endregion

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