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

FREE InfoMenu : 2.3 2.3

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

namespace Oxide.Plugins
{
    [Info("InfoMenu","Baks","2.3")]
    public class InfoMenu : RustPlugin
    {
        #region var

        [PluginReference] private Plugin ImageLibrary,BMenu;

        private double height = 377;
        private double weight = 205;
        private double upPadding = 65;
        private double gPadding = 125;
        private string _buttons = "Buttons_UI";
        private string _layer = "Info_Layer";
        private string _parent = "SubContent_UI";
        
        Dictionary<string,string>buttons = new Dictionary<string, string>
        {
            ["social"] = "<b>ТЕХНОЛОГИИ</b>",			
            ["rules"] = "<b>ПРАВИЛА</b>",			
            ["wiki"] = "<b>ВИКИПЕДИЯ</b>",		
            ["server"] = "<b>СЕРВЕР</b>",		
		
        };
        
        #endregion
        
        #region config

        static Configuration config = new Configuration();

        class Configuration
        {
            [JsonProperty("Навигационное меню")] public List<MenuItem> Menus;
            
            public static Configuration GetNewConfiguration()
            {
                return new Configuration
                {
                    Menus = new List<MenuItem>
                    {
                       new MenuItem
                       {
                           Key = "social",
                           Pages = new Dictionary<int, Page>
                           {
                               [1] = new Page
                               {
                                   Blocks = new List<Block>
                                   {
                                       new Block
                                       {
                                           Text = "fd;lakhjfihwbqakjnasfdlkjaslfnjlsdkjfbjhbdkqhnjenfkjabkjdbflkjqnAWKJEBGKAKDNSKJFGNKANDHJSBDFKJAKJNgnskjdfnjkfnaksnajksn",
                                           Img = false,
                                           Alignment = TextAnchor.MiddleCenter,
                                           MinX = 5,
                                           MinY = 300,
                                           MaxX = 100,
                                           MaxY = 100,
                                           priority = 0
                                       },
                                       new Block
                                       {
                                           Text = "https://i.ibb.co/StT43Cf/zzz.png",
                                           Img = true,
                                           MinX = 120,
                                           MinY = 300,
                                           MaxX = 300,
                                           MaxY = 100,
                                           priority = 1
                                       }
                                   }
                               }
                           }
                       },
                       new MenuItem
                       {
                           Key = "blueprint",
                           Pages = new Dictionary<int, Page>
                           {
                               [1] = new Page
                               {
                                   Blocks = new List<Block>
                                   {
                                       new Block
                                       {
                                           Text = "fd;lakhjfihwbqakjnasfdlkjaslfnjlsdkjfbjhbdkqhnjenfkjabkjdbflkjqnAWKJEBGKAKDNSKJFGNKANDHJSBDFKJAKJNgnskjdfnjkfnaksnajksn",
                                           Img = false,
                                           Alignment = TextAnchor.MiddleCenter,
                                           MinX = 5,
                                           MinY = 300,
                                           MaxX = 100,
                                           MaxY = 100,
                                           priority = 0
                                       },
                                       new Block
                                       {
                                           Text = "https://i.ibb.co/StT43Cf/zzz.png",
                                           Img = true,
                                           MinX = 120,
                                           MinY = 300,
                                           MaxX = 300,
                                           MaxY = 100,
                                           priority = 1
                                       }
                                   }
                               }
                           }
                       },
                       new MenuItem
                       {
                           Key = "wiki",
                           Pages = new Dictionary<int, Page>
                           {
                               [1] = new Page
                               {
                                   Blocks = new List<Block>
                                   {
                                       new Block
                                       {
                                           Text = "fd;lakhjfihwbqakjnasfdlkjaslfnjlsdkjfbjhbdkqhnjenfkjabkjdbflkjqnAWKJEBGKAKDNSKJFGNKANDHJSBDFKJAKJNgnskjdfnjkfnaksnajksn",
                                           Img = false,
                                           Alignment = TextAnchor.MiddleCenter,
                                           MinX = 5,
                                           MinY = 300,
                                           MaxX = 100,
                                           MaxY = 100,
                                           priority = 0
                                       },
                                       new Block
                                       {
                                           Text = "https://i.ibb.co/StT43Cf/zzz.png",
                                           Img = true,
                                           MinX = 120,
                                           MinY = 300,
                                           MaxX = 300,
                                           MaxY = 100,
                                           priority = 1
                                       }
                                   }
                               }
                           }
                       },
                       new MenuItem
                       {
                           Key = "server",
                           Pages = new Dictionary<int, Page>
                           {
                               [1] = new Page
                               {
                                   Blocks = new List<Block>
                                   {
                                       new Block
                                       {
                                           Text = "fd;lakhjfihwbqakjnasfdlkjaslfnjlsdkjfbjhbdkqhnjenfkjabkjdbflkjqnAWKJEBGKAKDNSKJFGNKANDHJSBDFKJAKJNgnskjdfnjkfnaksnajksn",
                                           Img = false,
                                           Alignment = TextAnchor.MiddleCenter,
                                           MinX = 5,
                                           MinY = 300,
                                           MaxX = 100,
                                           MaxY = 100,
                                           priority = 0
                                       },
                                       new Block
                                       {
                                           Text = "https://i.ibb.co/StT43Cf/zzz.png",
                                           Img = true,
                                           MinX = 120,
                                           MinY = 300,
                                           MaxX = 300,
                                           MaxY = 100,
                                           priority = 1
                                       }
                                   }
                               }
                           }
                       },
                       new MenuItem
                       {
                           Pages = new Dictionary<int, Page>
                           {
                               [1] = new Page
                               {
                                   Blocks = new List<Block>
                                   {
                                       new Block
                                       {
                                           Text = "fd;lakhjfihwbqakjnasfdlkjaslfnjlsdkjfbjhbdkqhnjenfkjabkjdbflkjqnAWKJEBGKAKDNSKJFGNKANDHJSBDFKJAKJNgnskjdfnjkfnaksnajksn",
                                           Img = false,
                                           Alignment = TextAnchor.MiddleCenter,
                                           MinX = 5,
                                           MinY = 300,
                                           MaxX = 100,
                                           MaxY = 100,
                                           priority = 0
                                       },
                                       new Block
                                       {
                                           Text = "https://i.ibb.co/StT43Cf/zzz.png",
                                           Img = true,
                                           MinX = 120,
                                           MinY = 300,
                                           MaxX = 300,
                                           MaxY = 100,
                                           priority = 1
                                       }
                                   }
                               }
                           }
                       },
                    }
                };
            }
        }
        
        protected override void LoadConfig()
        {
            base.LoadConfig();
            try
            {
                config = Config.ReadObject<Configuration>();
                if (config == null) PrintWarning("NULL");
                if (config == null) LoadDefaultConfig();
            }
            catch
            {
                PrintError($"Не удалось найти конфигурацию 'oxide/config/{Name}', Создание конфига!!");
                LoadDefaultConfig();
            }

            NextTick(SaveConfig);
        }
        protected override void LoadDefaultConfig() => config = Configuration.GetNewConfiguration();
        protected override void SaveConfig() => Config.WriteObject(config);

        class MenuItem
        {
            public string Key;
            public Dictionary<int, Page> Pages;
        }

        class Block
        {
            [JsonProperty("Приоритет")]
            public int priority = 0;
            [JsonProperty("Текст")]
            public string Text;
            [JsonProperty("Картинка?(true/false)")]
            public bool Img;
            [JsonProperty("MinX")]
            public double MinX;
            [JsonProperty("MinY")]
            public double MinY = 920;
            [JsonProperty("MaxX")]
            public double MaxX;
            [JsonProperty("MaxY")]
            public double MaxY = 920;
            [JsonProperty("Цвет")] 
            public string color = "#FFFFFF";
            [JsonProperty("Размер шрифта")]
            public int FonSize = 18;
            [JsonProperty("Выравнивание текста")] 
            public TextAnchor Alignment = TextAnchor.MiddleCenter;

        }

        class Page
        {
            public List<Block> Blocks;
        }

        #endregion

        #region commands

        [ChatCommand("info")]
        void OpenInfo(BasePlayer player)
        {
            List<string>pLayers = new List<string>{"MainSkin","MainChat","UI_ReportLayer","UI.Clans","MainVK"};
            foreach (var var in pLayers)
            {
                CuiHelper.DestroyUi(player, var);
            }

            BMenu.Call("MainGUI", player);
            BMenu.Call("SetActiveButton", player, "About");
            ContentUI(player);
            ButtonUI(player);
            CuiHelper.DestroyUi(player, "MainSkin");
            //PrintWarning("Command Accept!");
        }

        [ConsoleCommand("wiki")]
        void OpenEVentsInfo(ConsoleSystem.Arg arg)
        {
            BasePlayer player = arg.Player();
            if (player == null) return;
            List<string>pLayers = new List<string>{"MainSkin","MainChat","UI_ReportLayer","UI.Clans","MainVK","MainReport"};
            foreach (var var in pLayers)
            {
                CuiHelper.DestroyUi(player, var);
            }
            if (arg.HasArgs(1))
            {
                PageUI(player,"wiki",arg.Args[0].ToInt());
                
            }
            else
            {
                PageUI(player,"wiki");
                
            }
            //PrintWarning($"Open event: {player.UserIDString} rules");
        }
        
        [ConsoleCommand("donateinfo")]
        void OpenDonate(ConsoleSystem.Arg arg)
        {
            BasePlayer player = arg.Player();
            if (player == null) return;
            List<string>pLayers = new List<string>{"MainSkin","MainChat","UI_ReportLayer","UI.Clans","MainVK"};
            foreach (var var in pLayers)
            {
                CuiHelper.DestroyUi(player, var);
            }
            if (arg.HasArgs(1))
            {
                PageUI(player,"donateinfo",arg.Args[0].ToInt());
                
            }
            else
            {
                PageUI(player,"donateinfo");
                
            }
            //($"Open donate: {player.UserIDString} rules");
        }
        
        [ConsoleCommand("rules")]
        void OpenRules(ConsoleSystem.Arg arg)
        {
            BasePlayer player = arg.Player();
            if (player == null) return;
            List<string>pLayers = new List<string>{"MainSkin","MainChat","UI_ReportLayer","UI.Clans","MainVK","MainReport"};
            foreach (var var in pLayers)
            {
                CuiHelper.DestroyUi(player, var);
            }
                if (arg.HasArgs(1))
            {
                PageUI(player,"rules",arg.Args[0].ToInt());
                
            }
            else
            {
                PageUI(player,"rules");
               //PrintWarning($"Open rules: {player.UserIDString} rules");
            }
            
        }
        
        [ConsoleCommand("reportopen")]
        void OpenRepots(ConsoleSystem.Arg arg)
        {
            if (arg.Player() == null)
            {
                return;
            }

            BasePlayer player = arg.Player();
            BMenu.Call("MainGUI",player);
            BMenu.Call("SetActiveButton", player, "Profile");
            player.SendConsoleCommand("report");
        }
        [ConsoleCommand("clanopen")]
        void OpenClan(ConsoleSystem.Arg arg)
        {
            if (arg.Player() == null)
            {
                return;
            }

            BasePlayer player = arg.Player();
            BMenu.Call("MainGUI",player);
            BMenu.Call("SetActiveButton", player, "Profile");
            player.SendConsoleCommand("openclans");
        }
        [ConsoleCommand("skinopen")]
        void OpenSkin(ConsoleSystem.Arg arg)
        {
            if (arg.Player() == null)
            {
                return;
            }

            BasePlayer player = arg.Player();
            BMenu.Call("MainGUI",player);
            BMenu.Call("SetActiveButton", player, "Profile");
            player.SendConsoleCommand("openskin");
        }
        [ConsoleCommand("blueprint")]
        void OpenBonus(ConsoleSystem.Arg arg)
        {
            BasePlayer player = arg.Player();
            if (player == null) return;
            if (arg.HasArgs(1))
            {
                PageUI(player,"blueprint",arg.Args[0].ToInt());
                
            }
            else
            {
                PageUI(player,"blueprint");
                
            }
            //PrintWarning($"Open bonus: {player.UserIDString} rules");

        }
        [ConsoleCommand("server")]
        void OpenClansInfo(ConsoleSystem.Arg arg)
        {
            BasePlayer player = arg.Player();
            if (player == null) return;
            if (arg.HasArgs(1))
            {
                PageUI(player,"server",arg.Args[0].ToInt());
                
            }
            else
            {
                PageUI(player,"server");
                
            }
            //PrintWarning($"Open clan: {player.UserIDString} rules");
        }
        [ConsoleCommand("social")]
        void OpenSocial(ConsoleSystem.Arg arg)
        {
            BasePlayer player = arg.Player();
            if (player == null) return;
            if (arg.HasArgs(1))
            {
                PageUI(player,"social",arg.Args[0].ToInt());
                
            }
            else
            {
                PageUI(player,"social");
                
            }
            
        }
        
        

        #endregion

        #region UI
        class ButtonData
        {
            public string button;
            public string text;
            public double widht;
            public double index;
            public double padding;
        }
        Dictionary<string,ButtonData>_button = new Dictionary<string, ButtonData>();
        void SetActiveSubButton(BasePlayer player, string button)
        {
            ButtonUI(player);
            ButtonData buttonData = new ButtonData();
            CuiHelper.DestroyUi(player, _parent+$"Btn{button}");
            if (_button.ContainsKey(button))
            {
                buttonData = _button[button];
            }

            string text = buttonData.text;
            double widht = buttonData.widht;
            double index = buttonData.index;
            double padding = buttonData.padding;
            //CuiHelper.DestroyUi(player, _SubLayer+$"Btn{button}" + ".Image");
            var container = new CuiElementContainer();
            /*container.Add(new CuiElement
            {
                Parent = _SubLayer+$"Btn{button}",
                Name = _SubLayer+$"Btn{button}" + ".Image",
                Components =
                {
                    new CuiRawImageComponent
                    {
                        Png = (string) ImageLibrary.Call("GetImage", "act")
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0 0",AnchorMax = "1 1"
                    }
                }
            });*/
            container.Add(new CuiButton
            {
                Button = {Close = _parent,Color = "0 0 0 0",Command = $"{button}"},
                Text = {Text = text,Color = "0.929 0.882 0.847 1",Align = TextAnchor.MiddleCenter},
                RectTransform = {AnchorMin = "0 0",AnchorMax = "0 0",OffsetMin = $"40 {120+widht*index+padding*index}",OffsetMax = $"225 {120+widht*index+padding*index+widht}"}
            },_buttons,_buttons+$"Btn{button}");
            container.Add(new CuiElement
            {
                Parent = _buttons+$"Btn{button}",
                Name = _buttons+$"Btn{button}" + ".Image",
                Components =
                {
                    new CuiRawImageComponent
                    {
                        Png = (string) ImageLibrary.Call("GetImage", "white"),
                        
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0 0", AnchorMax = "1 1"
                    },
                }
            });
            
            CuiHelper.AddUi(player, container);
            /*CuiHelper.DestroyUi(player, _buttons+$"{button}"+ ".Image");
            var container = new CuiElementContainer();
            container.Add(new CuiElement
            {
                Parent = _buttons+$"{button}",
                Name = _buttons+$"{button}" + ".Image",
                Components =
                {
                    new CuiRawImageComponent
                    {
                        
                        Png = (string) ImageLibrary.Call("GetImage", "act")
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0 0",AnchorMax = "1 1"
                    }
                }
            });
            CuiHelper.AddUi(player, container);*/
            
        }

        void PageUI(BasePlayer player,string key,int page = 1)
        {
            CuiHelper.DestroyUi(player, _parent);
            CuiHelper.DestroyUi(player, _layer);
            SetActiveSubButton(player,key);
            var container = new CuiElementContainer();
            container.Add(new CuiPanel
            {
                Image = {Color = "0 0 0 0"},
                RectTransform = {AnchorMin = "0 0",AnchorMax = "0 0",OffsetMin = "345 30",OffsetMax = "1265 660"},
            
            }, "Main_UI", _parent);
            container.Add(new CuiPanel
            {
                Image = {Color = "0 0 0 0"},
                RectTransform = {AnchorMin = "0 0",AnchorMax = "0 0",OffsetMin = "0 0",OffsetMax = "920 630"}
            }, _parent,_layer);
            MenuItem menu = config.Menus.Find(p => p.Key == key);
            /*if (menu == null)
            {
                PrintWarning($"null item {key} {page}");
            }*/
            if (menu == null) return;
            int minIndex = menu.Pages.Keys.Min();
            int maxIndex = menu.Pages.Keys.Max();
            //PrintWarning($"{minIndex} : {maxIndex} - {page}");

            Block[] blockArray = menu.Pages[page].Blocks.ToArray();
            //SortToArray(ref blockArray,menu.Pages[page].Blocks);
            
            foreach (var block in blockArray)
            {
                if (block.Img)
                {
                    container.Add(new CuiElement
                    {
                        Parent = _layer,
                        Name = _layer+".Block",
                        Components =
                        {
                            new CuiRawImageComponent
                            {
                                Png = (string) ImageLibrary.Call("GetImage",block.Text)
                            },
                            new CuiRectTransformComponent
                            {
                                AnchorMin = "0 0", AnchorMax = "0 0",OffsetMin = $"{block.MinX} {block.MinY}",OffsetMax = $"{block.MaxX} {block.MaxY}"
                            }
                        }
                    });
                    
                }
                else
                {
                    container.Add(new CuiLabel
                    {
                        Text = {Text = block.Text,Align = block.Alignment,Color = HexToCuiColor(block.color),FontSize = block.FonSize},
                        RectTransform = {AnchorMin = "0 0", AnchorMax = "0 0",OffsetMin = $"{block.MinX} {block.MinY}",OffsetMax = $"{block.MaxX} {block.MaxY}"}
                    }, _layer, _layer + ".Block");
                }
                
            }
            

            /*if (page>minIndex)
            {
                container.Add(new CuiButton
                {
                    Button = {Close = _layer,Color = HexToCuiColor("#630606f4"),Command = $"{key} {page-1}"},
                    Text = {Text = "<",Align = TextAnchor.MiddleCenter},
                    RectTransform = {AnchorMin = "0 0",AnchorMax = "0.15 0.06"}
                }, _layer, _layer + ".Back");
            }
            if (page<maxIndex)
            {
                container.Add(new CuiButton
                {
                    Button = {Close = _layer,Color = HexToCuiColor("#630606f4"),Command = $"{key} {page+1}"},
                    Text = {Text = ">",Align = TextAnchor.MiddleCenter},
                    RectTransform = {AnchorMin = "0.85 0",AnchorMax = "1 0.06"}
                }, _layer, _layer + ".Forward");
            }*/
            if (page<maxIndex)
            {
                container.Add(new CuiButton
                {
                    RectTransform = {AnchorMin = "0 0",AnchorMax = "0 0",OffsetMin = "717 20",OffsetMax = "890 60"},
                    Button = { Color = HexToCuiColor("#34405e"), Command = $"{key} {page+1}",Material = "assets/icons/greyout.mat" },
                    Text = { Text = "<b>ВПЕРЁД</b>", Align = TextAnchor.MiddleCenter, FontSize = 21, Font = "robotocondensed-regular.ttf",Color = HexToCuiColor("#ffffff") }
                },  _layer, _layer + ".Forward");
            }

            if (page>minIndex)
            {
                container.Add(new CuiButton
                {
                    RectTransform = {AnchorMin = "0 0",AnchorMax = "0 0",OffsetMin = "28 20",OffsetMax = "205 60"},
                    Button = { Color = HexToCuiColor("#34405e"), Command = $"{key} {page-1}",Material = "assets/icons/greyout.mat" },
                    Text = { Text = "<b>НАЗАД</b>", Align = TextAnchor.MiddleCenter, FontSize = 21, Font = "robotocondensed-regular.ttf",Color = HexToCuiColor("#ffffff") }
                },  _layer, _layer + ".Back");
            }
            //PrintWarning($"item {key} {page}");
            //PrintWarning($"Key:{key} Page:{page} Blocks:{menu.Pages[page].Blocks.Count}");
            CuiHelper.AddUi(player, container);

        }

        void ContentUI(BasePlayer player)
        {
            CuiHelper.DestroyUi(player, _parent);
            CuiHelper.DestroyUi(player, _layer);
            var container = new CuiElementContainer();
            container.Add(new CuiPanel
            {
                Image = {Color = "0 0 0 0"},
                RectTransform = {AnchorMin = "0 0", AnchorMax = "0 0", OffsetMin = "345 15", OffsetMax = "1265 660"},

            }, "Main_UI", _parent);
            container.Add(new CuiPanel
            {
                Image = {Color = "0 0 0 0"},
                RectTransform = {AnchorMin = "0 0", AnchorMax = "0 0", OffsetMin = "0 0", OffsetMax = "325 620"}
            }, _parent, _layer);
            
            container.Add(new CuiElement
            {
                Parent = _parent,
                Name = _parent + ".Image",
                Components =
                {
                    new CuiRawImageComponent
                    {
                        Png = (string) ImageLibrary.Call("GetImage", "clan"),

                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0 0", AnchorMax = "1 1"
                    },
                }
            });
            
            /*container.Add(new CuiButton
            {
                Button = {Close = _layer, Color = "0 0 0 0",Command = "clanopen"},
                Text = {Text = ""},
                RectTransform =
                {
                    AnchorMin = "0 0", AnchorMax = "0 0", OffsetMin = $"{gPadding} {620 - upPadding - height}",
                    OffsetMax = $"{gPadding + weight} {620 - upPadding}"
                }
            }, _layer, _layer + ".Button_One");
            container.Add(new CuiElement
            {
                Parent = _layer + ".Button_One",
                Name = _layer + ".Button_One" + ".Image",
                Components =
                {
                    new CuiRawImageComponent
                    {
                        Png = (string) ImageLibrary.Call("GetImage", "clan"),

                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0 0", AnchorMax = "1 1"
                    },
                }
            });
            container.Add(new CuiButton
            {
                Button = {Close = _layer, Color = "0 0 0 0",Command = "skinopen"},
                Text = {Text = ""},
                RectTransform =
                {
                    AnchorMin = "0 0", AnchorMax = "0 0",
                    OffsetMin = $"{gPadding + weight + upPadding} {620 - upPadding - height}",
                    OffsetMax = $"{gPadding + weight + upPadding + weight} {620 - upPadding}"
                }
            }, _layer, _layer + ".Button_Two");
            container.Add(new CuiElement
            {
                Parent = _layer + ".Button_Two",
                Name = _layer + ".Button_Two" + ".Image",
                Components =
                {
                    new CuiRawImageComponent
                    {
                        Png = (string) ImageLibrary.Call("GetImage", "flag"),

                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0 0", AnchorMax = "1 1"
                    },
                }
            });
            container.Add(new CuiButton
            {
                Button = {Close = _layer, Color = "0 0 0 0",Command = "reportopen"},
                Text = {Text = ""},
                RectTransform =
                {
                    AnchorMin = "0 0", AnchorMax = "0 0",
                    OffsetMin = $"{gPadding + 2 * weight + 2 * upPadding} {620 - upPadding - height}",
                    OffsetMax = $"{gPadding + 2 * weight + 2 * upPadding + weight} {620 - upPadding}"
                }
            }, _layer, _layer + ".Button_Three");

            container.Add(new CuiElement
            {
                Parent = _layer + ".Button_Three",
                Name = _layer + ".Button_Three" + ".Image",
                Components =
                {
                    new CuiRawImageComponent
                    {
                        Png = (string) ImageLibrary.Call("GetImage", "donate"),

                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0 0", AnchorMax = "1 1"
                    },
                }
            });
            container.Add(new CuiLabel
            {
                Text = {Text = "БЫСТРЫЙ  ДОСТУП",Align = TextAnchor.MiddleCenter,FontSize = 20},
                RectTransform = {AnchorMin = "0 0", AnchorMax = "0 0",OffsetMin = $"{gPadding} 595",OffsetMax = $"{gPadding+2*weight+2*upPadding+weight} 620"}
            }, _layer, _layer + ".Title");*/
            CuiHelper.AddUi(player, container);

        }

        void ButtonUI(BasePlayer player)
        {
            CuiHelper.DestroyUi(player, _buttons);
            CuiHelper.DestroyUi(player, "SubMenu_UI");
            //CuiHelper.DestroyUi(player, _parent);
            var container = new CuiElementContainer();
            container.Add(new CuiPanel
            {
                Image = {Color = "0 0 0 0"},
                RectTransform = {AnchorMin = "0 0",AnchorMax = "0 0",OffsetMin = "10 15",OffsetMax = "335 635"},
            }, "Main_UI", "SubMenu_UI");
            
            double index = 1;
            double widht = 40;
            double padding = 5;
            double def = 335;
            container.Add(new CuiPanel
            {
                Image = {Color = "0 0 0 0"},
                RectTransform = {AnchorMin = "0 0",AnchorMax = "0 0",OffsetMin = "0 0",OffsetMax = "325 620"}
            }, "SubMenu_UI", _buttons);
            foreach (var var in buttons)
            {
                container.Add(new CuiButton
                {
                    Button = {Close = _parent,Color = "0 0 0 0",Command = var.Key},
                    Text = {Text = var.Value,Color = "0.929 0.882 0.847 0.2",Align = TextAnchor.MiddleCenter},
                    RectTransform = {AnchorMin = "0 0",AnchorMax = "0 0",OffsetMin = $"40 {120+widht*index+padding*index}",OffsetMax = $"225 {120+widht*index+padding*index+widht}"}
                },_buttons,_buttons+$"{var.Key}");
                container.Add(new CuiElement
                {
                    Parent = _buttons+$"{var.Key}",
                    Name = _buttons+$"{var.Key}" + ".Image",
                    Components =
                    {
                        new CuiRawImageComponent
                        {
                            Png = (string) ImageLibrary.Call("GetImage", "white"),
                        
                        },
                        new CuiRectTransformComponent
                        {
                            AnchorMin = "0 0", AnchorMax = "1 1"
                        },
                    }
                });
                if (!_button.ContainsKey(var.Key))
                {
                    _button.Add(var.Key,new ButtonData
                    {
                        button = var.Key,
                        text = var.Value,
                        index = index,
                        padding = padding,
                        widht = widht
                    });
                }
                index++;
            }

            CuiHelper.AddUi(player, container);
            
        }

        #endregion

        #region hooks
        
        void OnServerInitialized()
        {
            ImageLibrary.Call("AddImage", "https://gspics.org/images/2022/06/04/0nWE0i.png", "flag");
            ImageLibrary.Call("AddImage", "https://gspics.org/images/2022/06/04/0nWE0i.png", "donate");
            ImageLibrary.Call("AddImage", "https://gspics.org/images/2022/06/04/0nWE0i.png", "clan");
            PrintWarning("Image loaded");
            foreach (var menuItem in config.Menus)
            {
                //PrintWarning($"Key:{menuItem.Key} Pages:{menuItem.Pages.Count} Blocks:{menuItem.Pages[1].Blocks.Count}");
                foreach (var pages in menuItem.Pages.Values)
                {
                    foreach (var block in pages.Blocks)
                    {
                        if (block.Img)
                        {
                            ImageLibrary.Call("AddImage", block.Text, block.Text);
                        }
                        
                    }
                }
            }
            
        }

        #endregion

        #region helper

        void SortToArray(ref Block[] array,List<Block> list)
        {
            int length = array.Length;
            Block[] buffer = new Block[length];
           
            
            int index = 0;
            while (list.Count>0)
            {
                int min = GetMinIndex(list);
                foreach (var block in list)
                {
                    if (block.priority==min)
                    {
                        buffer[index] = block;
                        index++;
                        list.Remove(block);
                    }
                }
            }

            array = buffer;
        }

        

        int GetMinIndex(List<Block> array)
        {
            int min = array.GetRandom().priority;
            foreach (var block in array)
            {
                if (min>block.priority)
                {
                    min = block.priority;
                }
            }

            return min;
        }
        
        
        private static string HexToCuiColor(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);
                throw new InvalidOperationException("Cannot convert a wrong format.");
            }
            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}";
        }

        #endregion
    }
}

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

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

Сверху