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

FREE ServerInfoUI : 1.0.1 1.0.1

Нет прав для скачивания
C#:
using Oxide.Game.Rust.Cui;
using UnityEngine;

namespace Oxide.Plugins
{
    [Info("Server Info UI", "Tryhard", "1.0.1")]
    [Description("In-game server stats GUI")]
    public class ServerInfoUI : RustPlugin
    {
        ListHashSet<BasePlayer> _inUi = new ListHashSet<BasePlayer>();
        private const string elemMain = "ServerInfoUI.main";

        private void Init()
        {
            permission.RegisterPermission("ServerInfoUI.allow", this);
        }
            
        [ChatCommand("serverinfo")]
        private void Serverinfo(BasePlayer player)
        {
            if (permission.UserHasPermission(player.UserIDString, "ServerInfoUI.allow"))
                CreateUI(player);
        }

        [ConsoleCommand("closeUi")]
        private void CloseUI(ConsoleSystem.Arg arg)
        {
           BasePlayer player = (BasePlayer)arg.Connection.player;
           if(player == null) return;
           
            CuiHelper.DestroyUi(player, elemMain);
            _inUi.Remove(player);
        }

        [ConsoleCommand("updateUi")]
        private void Refresh(ConsoleSystem.Arg arg)
        {
           BasePlayer player = (BasePlayer)arg.Connection.player;
           if(player == null) return;
           
            if (_inUi.Contains(player))
                     UpdateUI(player);
        }

        private void Unload()
        {
            foreach (BasePlayer player in _inUi)
            {
                if (player == null) return;
                CuiHelper.DestroyUi(player, elemMain);
            }
            _inUi.Clear();
        }

        #region UI

        private void UpdateUI(BasePlayer player)
        {
            CuiHelper.DestroyUi(player, elemMain);
            CreateUI(player);
        }

        private void CreateUI(BasePlayer player)
        {
            var Convar = ConVar.Admin.ServerInfo();
            int PlayerCount = Convar.Players;
            string hostname = Convar.Hostname;
            var fps = Convar.Framerate;
            int JoiningCount = Convar.Joining;
            int Queuecount = Convar.Queued;
            int MaxPlayers = Convar.MaxPlayers;
            int Uptime = Convar.Uptime / 3600;
            int EntCount = Convar.EntityCount;
            var container = new CuiElementContainer();

            // Main panel
            container.Add(new CuiElement
            {
                Name = elemMain,
                Components =
                    {
                        new CuiImageComponent
                        {
                            Color = "0.1 0.1 0.1 0.8",
                            Material = "assets/content/ui/namefontmaterial.mat",
                        },
                        new CuiRectTransformComponent
                        {
                            AnchorMin = "0.32 0.32",
                            AnchorMax = "0.68 0.68"
                        },
                        new CuiNeedsCursorComponent()
                    }
            });

            // Main text
            container.Add(new CuiElement
            {
                Parent = elemMain,
                Components =
                                    {
                        new CuiTextComponent
                        {
                            Text = $"Server Info for {hostname}",
                            Color = "1 1 1 1",
                            FontSize = 20,
                            Align = TextAnchor.UpperCenter,
                        },
                        new CuiRectTransformComponent
                        {
                            AnchorMin = "0.05 0.05",
                            AnchorMax = "0.95 0.95",
                        }
                    }
            });
            // Playercount
            container.Add(new CuiElement
            {
                Parent = elemMain,
                Components =
                    {
                        new CuiTextComponent
                        {
                            Text = $"Players: {PlayerCount}/{MaxPlayers}",
                            Color = "1 1 1 1",
                            FontSize = 18,
                            Align = TextAnchor.UpperCenter,
                        },
                        new CuiRectTransformComponent
                        {
                            AnchorMin = "0.5 0.005",
                            AnchorMax = "0.95 0.5",
                        }
                    }
            });
            // Server Fps
            container.Add(new CuiElement
            {
                Parent = elemMain,
                Components =
                    {
                        new CuiTextComponent
                        {
                            Text = $"Server Fps: {fps}",
                            Color = "1 1 1 1",
                            FontSize = 18,
                            Align = TextAnchor.UpperCenter,
                        },
                        new CuiRectTransformComponent
                        {
                            AnchorMin = "0.5 0.0098",
                            AnchorMax = "0.95 0.7",
                        }
                    }
            });
            // Entity Count
            container.Add(new CuiElement
            {
                Parent = elemMain,
                Components =
                    {
                        new CuiTextComponent
                        {
                            Text = $"Entity Count: {EntCount}",
                            Color = "1 1 1 1",
                            FontSize = 18,
                            Align = TextAnchor.UpperCenter,
                        },
                        new CuiRectTransformComponent
                        {
                            AnchorMin = "0.5 0.00357",
                            AnchorMax = "0.95 0.3",
                        }
                    }
            });
            // Queue
            container.Add(new CuiElement
            {
                Parent = elemMain,
                Components =
                    {
                        new CuiTextComponent
                        {
                            Text = $"Queued Players: {Queuecount}",
                            Color = "1 1 1 1",
                            FontSize = 18,
                            Align = TextAnchor.UpperCenter,
                        },
                        new CuiRectTransformComponent
                        {
                            AnchorMin = "0.1 0.005",
                            AnchorMax = "0.45 0.5",
                        }
                    }
            });
            // Joining
            container.Add(new CuiElement
            {
                Parent = elemMain,
                Components =
                    {
                        new CuiTextComponent
                        {
                            Text = $"Joining Players: {JoiningCount}",
                            Color = "1 1 1 1",
                            FontSize = 18,
                            Align = TextAnchor.UpperCenter,
                        },
                        new CuiRectTransformComponent
                        {
                            AnchorMin = "0.1 0.0098",
                            AnchorMax = "0.45 0.7",
                        }
                    }
            });
            // Uptime
            container.Add(new CuiElement
            {
                Parent = elemMain,
                Components =
                    {
                        new CuiTextComponent
                        {
                            Text = $"Uptime: {Uptime} hours",
                            Color = "1 1 1 1",
                            FontSize = 18,
                            Align = TextAnchor.UpperCenter,
                        },
                        new CuiRectTransformComponent
                        {
                            AnchorMin = "0.1 0.00357",
                            AnchorMax = "0.45 0.3",
                        }
                    }
            });
            // Close Button
            container.Add(new CuiButton
            {
                Text =
                {
                    Text = "X",
                    Color = "1 0.1 0.1 1",
                    Align = TextAnchor.MiddleCenter,
                    FontSize = 30,
                },
                Button =
                {
                    Command = $"closeUi",
                    Color = "0.1 0.1 0.1 0.6"
                },
                RectTransform =
                {
                    AnchorMin = "1 1",
                    AnchorMax = "1 1",
                    OffsetMin = "-40 -40",
                    OffsetMax = "0 0",
                }
            }, elemMain);
            // Refresh Button
            container.Add(new CuiButton
            {
                Text =
                {
                    Text = "R",
                    Color = "0.1 0.5 1 1",
                    Align = TextAnchor.MiddleCenter,
                    FontSize = 30,
                },
                Button =
                {
                    Command = $"updateUi",
                    Color = "0.1 0.1 0.1 0.6"
                },
                RectTransform =
                {
                    AnchorMin = "1 1",
                    AnchorMax = "1 1",
                    OffsetMin = "-81 -40",
                    OffsetMax = "-41 0",
                }
            }, elemMain);

            CuiHelper.DestroyUi(player, elemMain);
            CuiHelper.AddUi(player, container);
            if (!_inUi.Contains(player))
            {
               _inUi.Add(player);
            }
        }
        #endregion
    }
}

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