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

FREE KingPanel : 0.0.1 0.0.1

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
//Requires: ImageLibrary

using Oxide.Game.Rust.Cui;
using System;
using System.Collections.Generic;
using System.Text;
using UnityEngine;

namespace Oxide.Plugins {
    [Info("KingPanel", "Pho3niX90", "0.0.1")]
    [Description("InfoPanel replacement")]
    public class KingPanel : RustPlugin {
        [PluginReference]
        ImageLibrary ImageLibrary;
        Dictionary<ulong, string> openPanels;
        ulong devSteamID = 76561198007433923L;
        string imageURL = "https://i.imgur.com/n9EYIWi.png";

        void Init() {
            AddImage(imageURL);
            openPanels = new Dictionary<ulong, string>();
        }

        void Loaded() {
            DestroyUIAll(true);
            CreateUIAll();
        }

        void Unload() {
            DestroyUIAll();
        }

        void OnPlayerConnected(BasePlayer player) {
            timer.Once(0.2f, () => UpdateUIAll());
        }

        void OnPlayerDisconnected(BasePlayer player, string reason) {
            DestroyUI(player);
            timer.Once(0.2f, () => UpdateUIAll());
        }

        #region UI
        private string GetImage(string url) {
            return ImageLibrary.GetImage(url, 1L);
        }

        private bool AddImage(string url) {//(string url, string imageName, ulong imageId, Action callback = null)
            if (ImageLibrary == null || !ImageLibrary.IsLoaded) {
                NextTick(() => AddImage(url));
                Puts("Image queued");
                return false;
            } else {
                Puts("Image added");
                return ImageLibrary.AddImage(url, url, 1L);
            }
        }

        string infoPanelElement;
        string infoPanel = "mainInfoPanel";
        void UpdateUIAll() {
            ListHashSet<BasePlayer> players = BasePlayer.activePlayerList;
            for (int i = 0; i < players.Count; i++) {
                UpdateUI(players[i]);
            }
        }

        void CreateUIAll() {
            ListHashSet<BasePlayer> players = BasePlayer.activePlayerList;
            for (int i = 0; i < players.Count; i++) {
                CreateUI(players[i]);
            }
        }

        void DestroyUIAll(bool force = false) {
            ListHashSet<BasePlayer> players = BasePlayer.activePlayerList;
            for (int i = 0; i < players.Count; i++) {
                DestroyUI(players[i], force);
            }
        }

        void UpdateUI(BasePlayer player) {
            if (!player.IsConnected) return;
            DestroyUI(player);
            CreateUI(player);
        }

        void CreateUI(BasePlayer player) {
            CuiElementContainer containerMain = new CuiElementContainer();
            infoPanelElement = containerMain.Add(new CuiPanel {
                Image =
                {
                    Color = "0 0 0 0.5"
                },
                RectTransform =
                {
                    AnchorMin = "0.005 0.965",
                    AnchorMax = "0.175 0.995" //left digit is viewheight from left, right digit is Y axis, viewheight from bottom
                },
                CursorEnabled = false,
            }, "Hud", infoPanel);

            containerMain.Add(new CuiElement {
                Name = "Players",
                Parent = infoPanel,
                Components = {
             new CuiRawImageComponent {
                Png = GetImage(imageURL)
            }
           ,
         new CuiRectTransformComponent
         {
            AnchorMin = "0.025 0.005",
            AnchorMax = "0.120 0.995"}
         }
            });

            containerMain.Add(new CuiLabel {
                Text =
                    {
                        Text = $"{BasePlayer.activePlayerList.Count}/{ConVar.Server.maxplayers}",
                        FontSize = 12,
                        Align = TextAnchor.MiddleLeft
                    },
                RectTransform =
                    {
                        AnchorMin = $"0.150 0.005",
                        AnchorMax = $"0.370 0.995"
                    }
            }, infoPanelElement);

            containerMain.Add(new CuiLabel {
                Text =
                    {
                        Text = $"KingdomRust.com",
                        FontSize = 12,
                        Align = TextAnchor.MiddleCenter
                    },
                RectTransform =
                    {
                        AnchorMin = $"0.400 0.005",
                        AnchorMax = $"0.985 0.995"
                    }
            }, infoPanelElement);

            CuiHelper.AddUi(player, containerMain);
            openPanels.Add(player.userID, infoPanel);
        }

        void DestroyUI(BasePlayer player, bool force = false) {
            if (openPanels.ContainsKey(player.userID) || force) {
                try {
                    CuiHelper.DestroyUi(player, infoPanel);
                } catch (Exception e) {
                }
                openPanels.Remove(player.userID);
            }
        }
        #endregion

        #region Commands
        [ChatCommand("players")]
        void PlayersCommand(BasePlayer player, string command, string[] arguments) {
            StringBuilder builder = new StringBuilder();
            int playerCount = BasePlayer.activePlayerList.Count;

            builder.Append(string.Format("Online players ({0}): ", playerCount));
            List<string> players = new List<string>();

            foreach (BasePlayer pl in BasePlayer.activePlayerList) {
                players.Add("<color=#ff0000ff>" + pl.displayName + "</color>");
            }
            builder.Append(String.Join(", ", players));

            SendReply(player, builder.ToString());
        }
        #endregion
    }
}

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