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

FREE MenuSystem : 1.0.1 1.0.1

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

namespace Oxide.Plugins
{
    [Info("MenuSystem", "Chibubrik", "1.0.1")]
    class MenuSystem : RustPlugin
    {
        #region Вар
        private string Layer = "Menu_UI";

        [PluginReference] Plugin ImageLibrary, GameStoresRUST, CaseSystem, WipeCalendar, WipeBlock, SoReport, SkillSystem, InfoMenu, TopChat, PassSystem;

        Dictionary<ulong, string> ActiveButton = new Dictionary<ulong, string>();
        Dictionary<ulong, string> ActiveButton2 = new Dictionary<ulong, string>();
        Dictionary<ulong, string> ActiveButton3 = new Dictionary<ulong, string>();

		//Управляет высотой пункта меню
		readonly float HEIGHT_MENU_ELEMENT = 0.118f;

        Dictionary<string, string> Command = new Dictionary<string, string>()
        {
            ["ГЛАВНАЯ"] = "info",
            ["-"] = "-",
            ["ВИКИПЕДИЯ"] = "wiki",
            ["КОРЗИНА"] = "store",
            ["КЕЙСЫ"] = "case",
            ["КАЛЕНДАРЬ"] = "cal",
            ["ВАЙПБЛОК"] = "block",
            ["РЕПОРТ"] = "report",
            ["СКИЛЫ"] = "skill",
            ["НАСТРОЙКИ"] = "settings",
            ["БАТЛПАСС"] = "pass"
        };

        Dictionary<string, string> Set = new Dictionary<string, string>()
        {
            ["ЧАТ"] = "chat",
            ["Настройка1"] = "set1",
            ["Настройка 2"] = "set2",
            ["Настройка 3"] = "set3",
            ["Настройка 4"] = "set4",
            ["Телепортация"] = "tpset"
        };
		
		void SettingsActions(BasePlayer player, string name){
			switch(name){
				case "chat":TopChat.Call("InitializeInterface", player);break;
				case "tpset":if (plugins.Find("Detonator")) plugins.Find("Detonator").Call("InitializeInterface", player);break;
				case "set1":InfoMenu?.Call("CreateTab", player, "settings", 0);break;
				case "set2":InfoMenu?.Call("CreateTab", player, "settings", 1);break;
				case "set3":InfoMenu?.Call("CreateTab", player, "settings", 2);break;
				case "set4":InfoMenu?.Call("CreateTab", player, "settings", 3);break;
			}
		}
        #endregion

        #region Хуки
        void OnServerInitialized()
        {
            ImageLibrary.Call("AddImage", "https://imgur.com/C2g6QoA.png", "Background");
        }
        #endregion

        #region Команды
        [ChatCommand("menu")]
        void ChatMenu(BasePlayer player) => MenuUI(player, "info");

        [ChatCommand("store")]
        void ChatStore(BasePlayer player) => MenuUI(player, "store");
		
        [ChatCommand("info")]
        void ChatInfo(BasePlayer player) => MenuUI(player, "info");

        [ChatCommand("case")]
        void ChatCase(BasePlayer player) => MenuUI(player, "case");

        [ChatCommand("wipe")]
        void ChatCal(BasePlayer player) => MenuUI(player, "cal");

        [ChatCommand("block")]
        void ChatBlock(BasePlayer player) => MenuUI(player, "block");

        [ChatCommand("report")]
        void ChatReport(BasePlayer player) => MenuUI(player, "report");

        [ChatCommand("skill")]
        void ChatSkill(BasePlayer player) => MenuUI(player, "skill");

        [ChatCommand("settings")]
        void ChatSet(BasePlayer player) => MenuUI(player, "settings");

        [ChatCommand("pass")]
        void ChaPass(BasePlayer player) => MenuUI(player, "pass");

        [ConsoleCommand("closemenusystem")]
        void ConsoleCloseMenu(ConsoleSystem.Arg args)
        {
            var player = args.Player();            
            DestroyUI(player);
            CuiHelper.DestroyUi(player, Layer);
        }
        [ConsoleCommand("menu")]
        void ConsoleMenu(ConsoleSystem.Arg args)
        {
            var player = args.Player();
            ActiveButton[player.userID] = args.Args[0];
            UI(player, args.Args[0]);
            ButtonUI(player);
        }

        [ConsoleCommand("settings")]
        void ConsoleSettings(ConsoleSystem.Arg args)
        {
            var player = args.Player();
            SettingsUI(player);
        }

        [ConsoleCommand("set")]
        void ConsoleSet(ConsoleSystem.Arg args)
        {
            var player = args.Player();
			if (args.Args==null || args.Args.Length<1) return;
            ActiveButton3[player.userID] = args.Args[0];
            SettingsUI(player, args.Args[0]);
        }
        #endregion
        
        #region Интерфейс
        void MenuUI(BasePlayer player, string name = "info")
        {
            ActiveButton[player.userID] = name;
            ActiveButton3[player.userID] = "chat";
            CuiHelper.DestroyUi(player, Layer);
            var 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.9" },
            }, "Overlay", Layer);

            container.Add(new CuiElement
            {
                Parent = Layer,
                Components =
                {
                    new CuiRawImageComponent { Png = (string) ImageLibrary.Call("GetImage", "Background") },
                    new CuiRectTransformComponent { AnchorMin = "0 0", AnchorMax = "1 1", OffsetMax = "0 0" }
                }
            });

            container.Add(new CuiPanel
            {
                RectTransform = { AnchorMin = "0.05 0.8", AnchorMax = "0.24 0.88", OffsetMax = "0 0" },
                Image = { Color = "0 0 0 0" }
            }, Layer, "Logo");

            container.Add(new CuiElement
            {
                Parent = "Logo",
                Components =
                {
                    new CuiImageComponent { Sprite = "assets/content/ui/menuui/rustlogo-normal-transparent.png" },
                    new CuiRectTransformComponent { AnchorMin = "0 0", AnchorMax = "1 1", OffsetMax = "0 0" }
                }
            });

            container.Add(new CuiPanel
            {
                RectTransform = { AnchorMin = "0.068 0.17", AnchorMax = "0.2 0.73", OffsetMax = "0 0" },
                Image = { Color = "0 0 0 0" }
            }, Layer, "Button");

            container.Add(new CuiButton
            {
                RectTransform = { AnchorMin = "0.945 0.91", AnchorMax = $"1 1", OffsetMax = "0 0" },
                Button = { Color = "0 0 0 0", Close = Layer },
                Text = { Text = $"✖", Color = "1 1 1 0.5", Align = TextAnchor.MiddleCenter, FontSize = 50, Font = "robotocondensed-bold.ttf" }
            }, Layer);

            CuiHelper.AddUi(player, container);
            ButtonUI(player);
            UI(player, name);
        }

        void UI(BasePlayer player, string name)
        {
            DestroyUI(player);
			if (name == "info")
                InfoMenu?.Call("CreateMenu", player, "main");
			if (name == "wiki")
                InfoMenu?.Call("CreateMenu", player, "wiki");
            if (name == "store")
                GameStoresRUST?.Call("InitializeStore", player);
            if (name == "case")
                CaseSystem?.Call("CaseUI", player);
            if (name == "cal")
                WipeCalendar.Call("CreateGui", player);
            if (name == "block")
                WipeBlock.Call("DrawBlockGUI", player);
            if (name == "report")
                SoReport.Call("StartUi", player);
            if (name == "skill")
                SkillSystem.Call("SkillUI", player);
            if (name == "settings")
                SettingsUI(player);
            if (name == "pass")
                PassSystem.Call("PassUI", player);
        }

        void ButtonUI(BasePlayer player)
        {
            CuiHelper.DestroyUi(player, "Command");
            var container = new CuiElementContainer();

            container.Add(new CuiPanel
            {
                RectTransform = { AnchorMin = "0 0.13", AnchorMax = "1 1", OffsetMax = "0 0" },
                Image = { Color = "0 0 0 0"  }
            }, "Button", "Command");

            float width = 1f, height = HEIGHT_MENU_ELEMENT, startxBox = 0f, startyBox = 0.995f - height, xmin = startxBox, ymin = startyBox;
            foreach (var check in Command)
            {
				if (check.Key!="-"){
					var color = ActiveButton[player.userID] == check.Value ? "1 1 1 1" : "1 1 1 0.3";
					container.Add(new CuiButton
					{
						RectTransform = { AnchorMin = $"{xmin} {ymin}", AnchorMax = $"{xmin + width} {ymin + height * 1}", OffsetMin = "0 1", OffsetMax = "0 -1" },
						Button = { Color = "0 0 0 0", Command = $"menu {check.Value}" },
						Text = { Text = check.Key, Color = color, Align = TextAnchor.MiddleLeft, FontSize = 25, Font = "robotocondensed-bold.ttf" }
					}, "Command");

					xmin += width;
					if (xmin + width >= 1)
					{
						xmin = startxBox;
						ymin -= height;
					}
				}else{
					ymin -= (float)(height/3);
				}
            }

            CuiHelper.AddUi(player, container);
        }

        void SettingsUI(BasePlayer player, string name = "chat")
        {
			if (player==null) return;
			if (!ActiveButton3.ContainsKey(player.userID)) return;
            CuiHelper.DestroyUi(player, "Settingsmain");
            CuiHelper.DestroyUi(player, "UI_SettingsLayer.WINDOW_FRAME");
            CuiHelper.DestroyUi(player, "InfoMenu_base");
            CuiHelper.DestroyUi(player, "InfoMenu_main");
            CuiHelper.DestroyUi(player, "InfoMenu_content");
            var container = new CuiElementContainer();
            container.Add(new CuiPanel
            {
                RectTransform = { AnchorMin = "0.276 0", AnchorMax = "0.945 1", OffsetMax = "0 0" },
                Image = { Color = "0.117 0.121 0.109 0" }
            }, Layer, "Settingsmain");

            container.Add(new CuiPanel
            {
                RectTransform = { AnchorMin = "0 0", AnchorMax = "0.289 1", OffsetMax = "0 0" },
                Image = { Color = "0.549 0.270 0.215 0.7", Material = "" }
            }, "Settingsmain", "Left");

            container.Add(new CuiLabel
            {
                RectTransform = { AnchorMin = "0.09 0.91", AnchorMax = $"1 1", OffsetMax = "0 0" },
                Text = { Text = $"НАСТРОЙКИ", Color = "0.929 0.882 0.847 0.8", Align = TextAnchor.MiddleLeft, FontSize = 33, Font = "robotocondensed-bold.ttf" }
            }, "Left");

            float width = 1f, height = 0.06f, startxBox = 0f, startyBox = 0.6f - height, xmin = startxBox, ymin = startyBox;
            foreach (var check in Set)
            {
                var color = ActiveButton3[player.userID] == check.Value ? "0.149 0.145 0.137 0.8" : "0 0 0 0";
                container.Add(new CuiButton
                {
                    RectTransform = { AnchorMin = $"{xmin} {ymin}", AnchorMax = $"{xmin + width} {ymin + height * 1}", OffsetMin = "0 1", OffsetMax = "0 -1" },
                    Button = { Color = color, Command = $"set {check.Value}" },
                    Text = { Text = $"{check.Key}      ", Color = "1 1 1 0.8", Align = TextAnchor.MiddleRight, FontSize = 18, Font = "robotocondensed-bold.ttf" }
                }, "Left");

                xmin += width;
                if (xmin + width >= 1)
                {
                    xmin = startxBox;
                    ymin -= height;
                }
            }

            CuiHelper.AddUi(player, container);
			SettingsActions(player,name);
        }
        
        void MapUI(BasePlayer player) {
            player.Command("map.open");
            player.Command("map_settings");
        }
        #endregion

        #region Хелпер
        void DestroyUI(BasePlayer player)
        {
            CuiHelper.DestroyUi(player, "Info");
            CuiHelper.DestroyUi(player, "Calendar");
            CuiHelper.DestroyUi(player, "Block");
            CuiHelper.DestroyUi(player, "Skill_UI");
            CuiHelper.DestroyUi(player, "ReportMain");
            CuiHelper.DestroyUi(player, "settings");
            CuiHelper.DestroyUi(player, "Settingsmain");
            CuiHelper.DestroyUi(player, "UI_SettingsLayer.WINDOW_FRAME");
            CuiHelper.DestroyUi(player, "Pass");
            CuiHelper.DestroyUi(player, "UI_GameStoresRUST_Store");
            CuiHelper.DestroyUi(player, "Case_UI");
            CuiHelper.DestroyUi(player, "ReportBMod");
            CuiHelper.DestroyUi(player, "InfoMenu_base");
            CuiHelper.DestroyUi(player, "InfoMenu_main");
            CuiHelper.DestroyUi(player, "InfoMenu_content");
        }
        #endregion
    }
}

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

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

Сверху