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

FREE Obmen : 1.1.1 1.1.1

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

namespace Oxide.Plugins
{
    [Info("Obmen", "Woks & Drop Dead", "1.1.1")]
    class Obmen : RustPlugin
    {
        private bool loaded = false;
        
        [JsonProperty("https://gspics.org/images/2022/02/02/04Kz73.jpg")]
        private string Layer = "https://gspics.org/images/2022/02/02/04Kz73.jpg";
        
        string[] FirstWord = { "ОБМЕНЯТЬ\n100К КАМНЯ НА 200К ДЕРЕВА", "ОБМЕНЯТЬ\n25К СКРАПА НА 50К ТНК", "ОБМЕНЯТЬ\n100К ЖЕЛЕЗА НА 50К СЕРЫ", "ОБМЕНЯТЬ\n20К ЖЕЛЕЗА НА ГРОБ", "ОБМЕНЯТЬ\n125 СКРАПА НА БУР", "ОБМЕНЯТЬ\n100К ЖЕЛЕЗА НА 5К СКРАПА" };
        string[] Command = { "obmen 0", "obmen 1", "obmen 2", "obmen 3", "obmen 4", "obmen 5" };

        void OnServerInitialized()
        {
            InitFileManager();
            ServerMgr.Instance.StartCoroutine(LoadImages());
        }
        
        private Dictionary<string, string> images = new Dictionary<string, string>()
        {
            ["Img0"] = "https://imgur.com/8eTRs6p.png",
            ["Img1"] = "https://www.rust-items.com/icons/c0fa952d07bbf02f55ed344b3260763b.png",
            ["Img2"] = "https://imgur.com/b993ZWx.png",
            ["Img3"] = "https://imgur.com/b993ZWx.png",
            ["Img4"] = "https://www.rust-items.com/icons/c0fa952d07bbf02f55ed344b3260763b.png",
            ["Img5"] = "https://imgur.com/b993ZWx.png",
            
            ["Image0"] = "https://rustlabs.com/img/items180/wood.png",
            ["Image1"] = "https://rustlabs.com/img/items180/lowgradefuel.png",
            ["Image2"] = "https://rustlabs.com/img/items180/sulfur.png",
            ["Image3"] = "https://rustlabs.com/img/items180/coffin.storage.png",
            ["Image4"] = "https://rustlabs.com/img/items180/jackhammer.png",
            ["Image5"] = "https://rustlabs.com/img/items180/scrap.png",
        };

        IEnumerator LoadImages()
        {
            foreach (var name in images.Keys.ToList())
            {
                yield return m_FileManager.StartCoroutine(m_FileManager.LoadFile(name, images[name]));
                images[name] = m_FileManager.GetPng(name);
            }
            loaded = true;
        }
        
        private void Unload()
        {
            foreach (var player in BasePlayer.activePlayerList)
            {
                CuiHelper.DestroyUi(player, Layer);
            }
        }
        
        private void DrawInterface(BasePlayer player)
        {
            CuiElementContainer container = new CuiElementContainer();
            
            container.Add(new CuiPanel
            {
                CursorEnabled = true,
                RectTransform = { AnchorMin = "0 0", AnchorMax = "1 1", OffsetMax = "0 0" },
                Image = { Color = "0 0 0 0.4", Sprite = "Assets/Content/UI/UI.Background.Tile.psd", Material = "assets/content/ui/uibackgroundblur.mat", FadeIn = 0.3f },
                FadeOut = 0.3f
            }, "Overlay", Layer);
            
            container.Add(new CuiButton
            {
                RectTransform = { AnchorMin = "0.9781 0.9611", AnchorMax = "1 1", OffsetMin = "0 0", OffsetMax = "0 0" },
                Button = { Color = "0 0 0 0", Close = Layer },
                Text = { Text = "✖", Align = TextAnchor.MiddleCenter, FontSize = 20,Color = "1 0 0 1" }
            }, Layer);
            
            container.Add(new CuiButton
            {
                RectTransform = { AnchorMin = "0.3 0.9111", AnchorMax = "0.7 0.9944", OffsetMin = "0 0", OffsetMax = "0 0" },
                Button = { Color = "0 0 0 0",},
                Text = { Text = "SUNSHINE RUST", Align = TextAnchor.MiddleCenter, FontSize = 40 }
            }, Layer);
            
            double anchor1 = 0.75;
            double anchor2 = 0.85;
            double anchor3 = 0.76;
            double anchor4 = 0.84;
            double anchor1_1 = 0.755;
            double anchor1_2 = 0.845;


            for (int i = 0; i < 6; i++)
            {
                container.Add(new CuiElement
                {
                    Parent = Layer,
                    Components =
                    {
                        new CuiImageComponent {Color =  "0 0 0 0.5"},
                        new CuiRectTransformComponent {AnchorMin = $"0.3 {anchor1}", AnchorMax = $"0.7 {anchor2}"}
                    }
                });
                
                container.Add(new CuiButton
                {
                    RectTransform = { AnchorMin = $"0.526 {anchor3}", AnchorMax = $"0.697 {anchor4}", OffsetMin = "0 0", OffsetMax = "0 0" },
                    Button = { Color = "0 0 0 0.6", Command = $"{Command[i]}",Close = Layer},
                    Text = { Text = $"{FirstWord[i]}", Align = TextAnchor.MiddleCenter, FontSize = 14 }
                }, Layer);
                
                container.Add(new CuiButton
                {
                    RectTransform = { AnchorMin = $"0.3583 {anchor1_1}", AnchorMax = $"0.4661 {anchor1_2}", OffsetMin = "0 0", OffsetMax = "0 0" },
                    Button = { Color = "0 0 0 0", Command = $"{Command[i]}" },
                    Text = { Text = "ВЗАМЕН НА", Align = TextAnchor.MiddleCenter, FontSize = 25 }
                }, Layer);
                
                container.Add(new CuiElement
                {
                    Parent = Layer,
                    Name = Layer + $"Img{i}",
                    Components =
                    {
                        new CuiRawImageComponent() { Png = images[$"Img{i}"], Color = "1 1 1 1", },
                        new CuiRectTransformComponent(){  AnchorMin = $"0.303 {anchor1_1}", AnchorMax = $"0.3536 {anchor1_2}", OffsetMin = "0 0", OffsetMax = "0 0" }
                    }
                });
                
                container.Add(new CuiElement
                {
                    Parent = Layer,
                    Name = Layer + $"Image{i}",
                    Components =
                    {
                        new CuiRawImageComponent() { Png = images[$"Image{i}"], Color = "1 1 1 1", },
                        new CuiRectTransformComponent(){  AnchorMin = $"0.4708 {anchor1_1}", AnchorMax = $"0.5217 {anchor1_2}", OffsetMin = "0 0", OffsetMax = "0 0" }
                    }
                });
                
                anchor1 -= 0.11;
                anchor2 -= 0.11;
                anchor1_1 -= 0.11;
                anchor1_2 -= 0.11;
                anchor3 -= 0.11;
                anchor4 -= 0.11;
                
                CuiHelper.DestroyUi(player, Layer + $"Img{i}");
                CuiHelper.DestroyUi(player, Layer + $"Image{i}");
            } 
            
            CuiHelper.DestroyUi(player, Layer);
            CuiHelper.AddUi(player, container);
        }

        
        [ChatCommand("obmen")]
        void Gui(BasePlayer player)
        {
            DrawInterface(player);
        }

        [ConsoleCommand("obmen")]
        void Obmen2(ConsoleSystem.Arg args)
        {
            var player = args.Player();
            var cislo = args.Args[0];
            string newitem = "";
            string check = "";
            int z1 = 0;
            int z2 = 0;
            
            if (cislo == "0")
            {
                check = "stones";
                newitem = "wood";
                z1 = 100000;
                z2 = 200000;
            }
            if (cislo == "1")
            {
                check = "scrap";
                newitem = "lowgradefuel";
                z1 = 25000;
                z2 = 50000;
            }
            if (cislo == "2")
            {
                check = "metal.fragments";
                newitem = "sulfur";
                z1 = 100000;
                z2 = 50000;
            }
            if (cislo == "3")
            {
                check = "metal.fragments";
                newitem = "coffin.storage";
                z1 = 20000;
                z2 = 1;
            }
            if (cislo == "4")
            {
                check = "scrap";
                newitem = "jackhammer";
                z1 = 125;
                z2 = 1;
            }
            if (cislo == "5")
            {
                check = "metal.fragments";
                newitem = "scrap";
                z1 = 100000;
                z2 = 5000;
            }
            
            var count = player.inventory.GetAmount(ItemManager.FindItemDefinition(check).itemid);
            if(count>=z1)
            {
                player.inventory.Take(null, ItemManager.FindItemDefinition(check).itemid, z1);
                Item item;
                item = ItemManager.CreateByName(newitem, z2);
                player.GiveItem(item);
            }
            else
            {
                SendReply(player, "Не достаточно ресурсов");
            }
        }
        
        		private GameObject FileManagerObject;
        private FileManager m_FileManager;

        void InitFileManager()
        {
            FileManagerObject = new GameObject("MAP_FileManagerObject");
            m_FileManager = FileManagerObject.AddComponent<FileManager>();
        }

        class FileManager : MonoBehaviour
        {
            int loaded = 0;
            int needed = 0;

            public bool IsFinished => needed == loaded;
            const ulong MaxActiveLoads = 10;
            Dictionary<string, FileInfo> files = new Dictionary<string, FileInfo>();

            DynamicConfigFile dataFile = Interface.Oxide.DataFileSystem.GetFile("Images");

            private class FileInfo
            {
                public string Url;
                public string Png;
            }

            public void SaveData()
            {
                dataFile.WriteObject(files);
            }

            public string GetPng(string name) => files[name].Png;

            private void Awake()
            {
                files = dataFile.ReadObject<Dictionary<string, FileInfo>>() ?? new Dictionary<string, FileInfo>();
            }

            public IEnumerator LoadFile(string name, string url)
            {
                if (files.ContainsKey(name) && files[name].Url == url && !string.IsNullOrEmpty(files[name].Png)) yield break;
                files[name] = new FileInfo() { Url = url };
                needed++;
                yield return StartCoroutine(LoadImageCoroutine(name, url));
            }

            IEnumerator LoadImageCoroutine( string name, string url)
            {
                using (WWW www = new WWW( url ))
                {
                    yield return www;
                    using (MemoryStream stream = new MemoryStream())
                    {
                        if (string.IsNullOrEmpty( www.error ))
                        {
                            stream.Position = 0;
                            stream.SetLength( 0 );

                            var bytes = www.bytes;

                            stream.Write( bytes, 0, bytes.Length );

                            var entityId = CommunityEntity.ServerInstance.net.ID;
                            var crc32 = FileStorage.server.Store(stream.ToArray(), FileStorage.Type.png, entityId).ToString();
                            files[ name ].Png = crc32;
                        }
                    }
                }
                loaded++;
            }
        }
    }
}

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

Другие ресурсы пользователя 15FPS

Сверху