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

FREE MBButtons : 1.1.0 1.1.0

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

namespace Oxide.Plugins
{
    [Info("MBButtons", "Barry_Allenn", "1.1.0")]
    public class MBButtons : RustPlugin
    {
        private const string Root = "MBButtons.Root";
        private const string ButtonColor = "1 0.96 0.88 0.16";
        private const string TextColor = "1 1 1 0.65";
        private const float Spacing = 4f;
        private const int FontSize = 10;

        #region CONFIG

        private ConfigData config;

        private class ConfigData
        {
            public List<ButtonData> Buttons = new List<ButtonData>();
        }

        private class ButtonData
        {
            public string Text = "Report";
            public string Command = "chat.say /report";
            public string Permission = "";
        }

        protected override void LoadDefaultConfig()
        {
            config = new ConfigData
            {
                Buttons = new List<ButtonData>
                {
                    new ButtonData
                    {
                        Text = "Menu",
                        Command = "chat.say /menu",
                        Permission = "mbbuttons.menu"
                    },
                    new ButtonData
                    {
                        Text = "Report",
                        Command = "chat.say /report",
                        Permission = "mbbuttons.report"
                    }
                }
            };
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();
            config = Config.ReadObject<ConfigData>();
            SaveConfig();
        }

        protected override void SaveConfig()
        {
            Config.WriteObject(config, true);
        }

        #endregion

        #region Hooks

        private void OnServerInitialized()
        {
            foreach (var btn in config.Buttons)
            {
                if (!string.IsNullOrEmpty(btn.Permission))
                    permission.RegisterPermission(btn.Permission, this);
            }

            foreach (var player in BasePlayer.activePlayerList)
                DrawButtonsArea(player);
        }

        private void Unload()
        {
            foreach (var player in BasePlayer.activePlayerList)
                CuiHelper.DestroyUi(player, Root);
        }

        private void OnPlayerConnected(BasePlayer player)
        {
            if (player.IsReceivingSnapshot)
            {
                NextTick(() => OnPlayerConnected(player));
                return;
            }

            DrawButtonsArea(player);
        }

        private void OnPlayerDeath(BasePlayer player, HitInfo info)
        {
            if (player == null) return;
            CuiHelper.DestroyUi(player, Root);
        }

        private void OnPlayerRespawned(BasePlayer player)
        {
            if (player == null) return;
            DrawButtonsArea(player);
        }

        #endregion

        #region BUTTONS

        private void DrawButtonsArea(BasePlayer player)
        {
            CuiHelper.DestroyUi(player, Root);

            var container = new CuiElementContainer();

            container.Add(new CuiPanel
            {
                CursorEnabled = false,
                RectTransform =
                {
                    AnchorMin = "0.5 0.0",
                    AnchorMax = "0.5 0.0",
                    OffsetMin = "-199.5 1",
                    OffsetMax = "180.5 16.5"
                },
                Image =
                {
                    Color = "0 0 0 0"
                }
            }, "Overlay", Root);

            DrawButtons(container, player);

            CuiHelper.AddUi(player, container);
        }

        private void DrawButtons(CuiElementContainer container, BasePlayer player)
        {
            var availableButtons = new List<ButtonData>();

            foreach (var btn in config.Buttons)
            {
                if (string.IsNullOrEmpty(btn.Permission) ||
                    permission.UserHasPermission(player.UserIDString, btn.Permission))
                {
                    availableButtons.Add(btn);
                }
            }

            int count = availableButtons.Count;
            if (count == 0) return;

            float areaWidth = 380f;
            float areaHeight = 15.5f;

            float totalSpacing = Spacing * (count - 1);
            float buttonWidth = (areaWidth - totalSpacing) / count;

            float currentX = 0f;

            foreach (var btn in availableButtons)
            {
                container.Add(new CuiButton
                {
                    Button =
                    {
                        Command = btn.Command,
                        Color = ButtonColor
                    },
                    RectTransform =
                    {
                        AnchorMin = "0 0",
                        AnchorMax = "0 0",
                        OffsetMin = $"{currentX} 0",
                        OffsetMax = $"{currentX + buttonWidth} {areaHeight}"
                    },
                    Text =
                    {
                        Text = btn.Text,
                        FontSize = FontSize,
                        Align = TextAnchor.MiddleCenter,
                        Color = TextColor
                    }
                }, Root);

                currentX += buttonWidth + Spacing;
            }
        }

        #endregion
    }
}

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