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

FREE MMenu : 0.0.1 0.0.1

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

namespace Oxide.Plugins
{
    [Info("MMenu", "Mystery", "0.0.1")]
    [Description("Multi Menu")]
    class MMenu : RustPlugin
    {
        // 10 11big
        [PluginReference] private Plugin ImageLibrary, MMercenaries;
        protected override void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["1"] = "Wipe calendar",
                ["2"] = "Basket",
                ["3"] = "Mercenaries",
                ["4"] = "Wipe calendar",
                ["5"] = "Wipe calendar",
                ["6"] = "Wipe calendar",
                ["7"] = "Wipe calendar",
                ["8"] = "Wipe calendar",
                ["9"] = "Wipe calendar",
                ["10"] = "Settings",

            }, this);
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["1"] = "Календарь вайпов",
                ["2"] = "Корзина",
                ["3"] = "Наёмники",
                ["4"] = "Календарь вайпов",
                ["5"] = "Календарь вайпов",
                ["6"] = "Календарь вайпов",
                ["7"] = "Календарь вайпов",
                ["8"] = "Календарь вайпов",
                ["9"] = "Календарь вайпов",
                ["10"] = "Настройки",

            }, this, "ru");

        }
        private string Msg(string key, string userid = null, params object[] obj)
        {
            return string.Format(lang.GetMessage(key, this, userid), obj);
        }
        // Msg("Modal tryopen", player.UserIDString, Case.DisplayName),
        public static string External = "UI_15FPS_External";
		public static string MenuPoints = "UI_Points";
        public static string Internal = "Mystery";
        private class MenuPoint
        {
            [JsonProperty("for lang   num")]
            public string Num;
            public string Image;
            public string Command;
        }
        private class Configuration
        {
            [JsonProperty("Список доступных разделов меню  MAX 10")]
            public List<MenuPoint> Points = new List<MenuPoint>();

            public static Configuration Generate()
            {
                return new Configuration
                {
                    Points = new List<MenuPoint>
                    {
                        new MenuPoint
                        {
                            Num = "1",
                            Image = "https://i.imgur.com/j2jnznj.png",
                            Command = "chat.say /calendar"
                        },
                        new MenuPoint      
                        {
                            Num = "2",
                            Image = "https://i.imgur.com/j5EgVl0.png", 
                            Command = "chat.say /store"
                        },
                        new MenuPoint
                        {
                            Num = "3",
                            Image = "https://i.imgur.com/ajmCW2k.png",
                            Command = "chat.say /mercenaries"
                        },
                        new MenuPoint
                        {
                            Num = "4",
                            Image = "https://15fpsrust.top/api/FMenu/calendar.png",
                            Command = "chat.say /calendar"
                        },
                        new MenuPoint
                        {
                            Num = "5",
                            Image = "https://15fpsrust.top/api/FMenu/calendar.png",
                            Command = "chat.say /calendar"
                        },
                        new MenuPoint
                        {
                            Num = "6",
                            Image = "https://15fpsrust.top/api/FMenu/calendar.png",
                            Command = "chat.say /calendar"
                        },
                        new MenuPoint
                        {
                            Num = "7",
                            Image = "https://15fpsrust.top/api/FMenu/calendar.png",
                            Command = "chat.say /calendar"
                        },
                        new MenuPoint
                        {
                            Num = "8",
                            Image = "https://15fpsrust.top/api/FMenu/calendar.png",
                            Command = "chat.say /calendar"
                        },
                        new MenuPoint
                        {
                            Num = "9",
                            Image = "https://15fpsrust.top/api/FMenu/calendar.png",
                            Command = "chat.say /calendar"
                        },
                        new MenuPoint
                        {
                            Num = "10",
                            Image = "https://i.imgur.com/ZMprlfn.png",
                            Command = "chat.say /settings"
                        },

                    }
                };
            }
        }
        private static Configuration Settings = null;
        protected override void LoadConfig()
        {
            base.LoadConfig();
            try
            {
                Settings = Config.ReadObject<Configuration>();
            }
            catch
            {
                PrintWarning($"Error reading config, creating one new config!");
                LoadDefaultConfig();
            }

            SaveConfig();
        }

        protected override void LoadDefaultConfig() => Settings = Configuration.Generate();
        protected override void SaveConfig() => Config.WriteObject(Settings);


        private void OnServerInitialized()
        {
            PrintWarning("  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            PrintWarning($"     {Name} v{Version} loading");
            if (!ImageLibrary)
            {
                PrintError("   Install plugin: 'ImageLibrary'");
                Core.Interface.Oxide.UnloadPlugin(Name);
                return;
            }
            PrintWarning("        Plugin loaded - OK");
            PrintWarning("  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            foreach (var check in Settings.Points)
            {
                ImageLibrary.Call("AddImage", check.Image,check.Image);
            }
            BasePlayer.activePlayerList.ToList().ForEach(p =>
            {
                Open(p);
            });
        }
        private void Unload()
        {
            BasePlayer.activePlayerList.ToList().ForEach(p =>
            {
                CuiHelper.DestroyUi(p, External);
                CuiHelper.DestroyUi(p, Internal);
            });
        }
        void Open(BasePlayer player)
        {
            CuiHelper.DestroyUi(player, External);
            CuiElementContainer container = new CuiElementContainer();
            container.Add(new CuiPanel
            {
                CursorEnabled = true,
                RectTransform = { AnchorMin = "0 0", AnchorMax = "1 1", OffsetMax = "0 0" },
                Image = { Color = "0.235 0.227 0.180 1", Sprite = "assets/content/ui/ui.background.transparent.radial.psd" }
            }, "Overlay", External);
			 container.Add(new CuiButton
             {
                        RectTransform = {AnchorMin = "0 0", AnchorMax = "1 1" }, 
                        Button = { Command = $"menu close", Color = "0 0 0 0" },
                        Text = { Text = "", Align = TextAnchor.MiddleLeft, Font = "robotocondensed-bold.ttf", FontSize = 13 }
             },External);
			container.Add(new CuiPanel
            {
                RectTransform = {AnchorMin = "0.2 0.2", AnchorMax = "0.8 0.8", OffsetMax = "0 0"},
                Image = { Color = "1 0 0 0" } 
            }, External, "j");
			container.Add(new CuiPanel
            {
                CursorEnabled = true,
                RectTransform = {AnchorMin = "0 0", AnchorMax = "0.27 0.85", OffsetMax = "0 0"},
                Image = {Color = "0.141 0.137 1 0"}
            }, "j", MenuPoints);
			container.Add(new CuiPanel
            {
                RectTransform = {AnchorMin = "0 0.875", AnchorMax = "0.2625 1", OffsetMax = "0 0"},
                Image = { Color = "0.89 0.81 0.70 0.3" } 
            },  "j", "k");
			string ImageAvatar = GetImage(player.UserIDString, 0);
			container.Add(new CuiElement
            {
                Parent = "k",
                Name = $"AVATAR",
                Components =
                 {
                    new CuiRawImageComponent { Png = ImageAvatar },
                    new CuiRectTransformComponent{ AnchorMin = "0.02 0.1", AnchorMax = $"0.25 0.9"},
                 }
            });
            
            container.Add(new CuiElement 
                {
                
                Parent = "k",
                Components =
                {
                    new CuiTextComponent {Color = "1 1 1 0.5",Text = player.displayName +$"\n<size=12>{exp(player)} EXP</size>", Align = TextAnchor.LowerLeft, FontSize = 15},
                    new CuiRectTransformComponent { AnchorMin = "0.27 0.12", AnchorMax = "1 1" },
                    
                } 
                });
			

            CuiHelper.AddUi(player, container);
            DrawMenuPoints(player);
        }
        float exp(BasePlayer player)
        {
            var ret = (float)plugins.Find("MMercenaries").Call("EXPFind", player);
           
            if (ret == null) return 0.0f;
            return ret;
        }
		public string GetImage(string shortname, ulong skin = 0) => (string)ImageLibrary?.Call("GetImage", shortname, skin);
		void DrawMenuPoints(BasePlayer player, MenuPoint choosed = null)
		{
			CuiElementContainer container = new CuiElementContainer();
			float marginTop = 0;
            float originalHeight = 32;  
            float freeHeight = 20;  
            float padding = 5;
			foreach (var point in Settings.Points)
			{
				CuiHelper.DestroyUi(player, MenuPoints + Settings.Points.IndexOf(point));
                string color = point == choosed ? "0 0 0 1" : "1 1 1 0.5";
                string color1 = point == choosed ? "0.89 0.81 0.70 0.5" : "0.89 0.81 0.70 0.3"; 
                float elementHeight = point.Num.Length > 0 ? originalHeight : freeHeight;
				container.Add(new CuiPanel 
                {
                    CursorEnabled = true,
                    RectTransform = { AnchorMin = "0 1", AnchorMax = "0 1", OffsetMin = $"0 {marginTop - elementHeight}", OffsetMax = $"200 {marginTop}" },
                    Image = { Color = color1 }
                }, MenuPoints, MenuPoints + Settings.Points.IndexOf(point));
                container.Add(new CuiElement
                { 

                    Parent = MenuPoints + Settings.Points.IndexOf(point),
                    Name = "j",
                    Components =
                    {
                        new CuiRawImageComponent { Png = (string) ImageLibrary.Call("GetImage", point.Image)},
                        new CuiRectTransformComponent{ AnchorMin = "0.01 0.05", AnchorMax = "0.15 0.95" },
                    }
                });
				
                container.Add(new CuiButton
                    {
                        RectTransform = {AnchorMin = "0.17 0", AnchorMax = "1 1" }, 
                        Button = { Command = $"menu choose {Settings.Points.IndexOf(point)}", Color = "0 0 0 0" },
                        Text = { Text =  Msg(point.Num, player.UserIDString), Align = TextAnchor.MiddleLeft, Font = "robotocondensed-bold.ttf", FontSize = 15, Color = color }
                    },MenuPoints + Settings.Points.IndexOf(point));

                marginTop -= elementHeight + padding;
			}
				
			 
			CuiHelper.AddUi(player, container);
		}
		
		 [ConsoleCommand("menu")]
        private void CmdConsoleRustMenu(ConsoleSystem.Arg args)
        {
            var player = args.Player();
            if (player == null || !args.HasArgs(1)) return;

            switch (args.Args[0].ToLower())
            {
                case "close":
                { 
                    CuiHelper.DestroyUi(player, External);
                    CuiHelper.DestroyUi(player, Internal);
                    CuiHelper.DestroyUi(player, MenuPoints);

                    break;
                }
                case "choose":
                {
                    int chooseIndex = -1;
                    if (!int.TryParse(args.Args[1], out chooseIndex)) return;

                    var chooseElement = Settings.Points.ElementAtOrDefault(chooseIndex);
                    if (chooseElement == null) return;

                    CuiHelper.DestroyUi(player, Internal); 
                    CuiElementContainer container = new CuiElementContainer();
                   container.Add(new CuiPanel
                    { 
                        CursorEnabled = true,
                        RectTransform = {AnchorMin = "0.36 0.203", AnchorMax = "0.8 0.8", OffsetMax = "0 0"},
                        Image = { Color = "0.50 0.50 0.50 0" } 
                    }, "Overlay", Internal);

                   
                    
                    CuiHelper.AddUi(player, container);
                    
                    player.SendConsoleCommand(chooseElement.Command);
                    
                    
                    DrawMenuPoints(player, chooseElement);
                    
                    //Effect effect = new Effect("", player, 0, new Vector3(), new Vector3());
                    //EffectNetwork.Send(effect, player.Connection);

                   
                    break;
                }
            }
        }
		 [ChatCommand("menu")]
        private void CmdChatWipe(BasePlayer player)
        {
           Open(player);
           
        }
    }
}

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