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

FREE PeacePanel : 0.1.0 0.1.0

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System;
using System.Globalization;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using System.Collections.Generic;
using Newtonsoft.Json;
using UnityEngine;
using System.Linq;
namespace Oxide.Plugins {
    [Info("PeacePanel", "RustMan", "0.1.0")]
    class PeacePanel : RustPlugin {
#region Hooks [Хуки]
        private string TimeFormat = "HH:mm";
        // формат времени
        private void OnServerInitialized() {
            timer.Once(1, () => {
                BasePlayer.activePlayerList.ForEach(OnPlayerInit);
            }
            );
        }
        void Unload() {
            foreach (BasePlayer player in BasePlayer.activePlayerList) {
                CuiHelper.DestroyUi(player, "Layer");
            }
        }
        private void OnPlayerInit(BasePlayer player) {
            if (player.IsReceivingSnapshot) {
                NextTick(() => OnPlayerInit(player));
                return;
            }
            foreach (var players in BasePlayer.activePlayerList) {
                timer.Once(1, () => {
                    DrawInterface(players);
                }
                );
            }
        }
        private void OnPlayerDisconnected(BasePlayer player, string reason) {
            foreach (var players in BasePlayer.activePlayerList) {
                timer.Once(1, () => {
                    DrawInterface(players);
                }
                );
            }
        }
#endregion
#region UI [Визуальная часть]
        private void DrawInterface(BasePlayer player) {
            Timer tim = timer.Repeat(1, 0, () => {
                var QueueCount = ServerMgr.Instance.connectionQueue.Queued.ToString();
                // {QueueCount} очередь
                var JoiningCount = ServerMgr.Instance.connectionQueue.Joining.ToString();
                // {JoiningCount} подключается
                var Players = BasePlayer.activePlayerList.Count;
                // {Players} игрки онлайн
                var SleepersCount = BasePlayer.sleepingPlayerList.Count.ToString();
                // {SleepersCount} спят
                var time = TOD_Sky.Instance.Cycle.DateTime.ToString(TimeFormat);
                // {time} время
                string Layer = "Layer";
                CuiHelper.DestroyUi(player, Layer);
                var container = new CuiElementContainer();
                container.Add(new CuiPanel {
                    Image = {
                        Color = HexToRustFormat("#FFFFFF00")
                    }
                    , RectTransform = {
                        AnchorMin = "0.345 1.024455E-08", AnchorMax = "0.641875 0.02499998"
                    }
                    , CursorEnabled = false,
                }
                , "Hud", Layer);
                container.Add(new CuiElement {
                    Parent = Layer, Components = {
                        new CuiTextComponent {
                            Text = $"Время: {time} | Онлайн: {Players} | Спят: {SleepersCount} | Заходят: {JoiningCount} | Очередь: {QueueCount}", Align = TextAnchor.MiddleCenter, FontSize = 12, Font = "RobotoCondensed-regular.ttf"
                        }
                        , new CuiOutlineComponent {
                            Color = "0 0 0 1", Distance = "0.5 0.5"
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = "0 0", AnchorMax = "1 1"
                        }
                    }
                }
                );
                CuiHelper.AddUi(player, container);
            }
            );
        }
#endregion
#region Helpers [Доп.методы]
        private static string HexToRustFormat(string hex) {
            if (string.IsNullOrEmpty(hex)) {
                hex = "#FFFFFFFF";
            }
            var str = hex.Trim('#');
            if (str.Length == 6) str += "FF";
            if (str.Length != 8) {
                throw new Exception(hex);
                throw new InvalidOperationException("Cannot convert a wrong format.");
            }
            var r = byte.Parse(str.Substring(0, 2), NumberStyles.HexNumber);
            var g = byte.Parse(str.Substring(2, 2), NumberStyles.HexNumber);
            var b = byte.Parse(str.Substring(4, 2), NumberStyles.HexNumber);
            var a = byte.Parse(str.Substring(6, 2), NumberStyles.HexNumber);
            Color color = new Color32(r, g, b, a);
            return string.Format("{0:F2} {1:F2} {2:F2} {3:F2}", color.r, color.g, color.b, color.a);
        }
#endregion
    }
}

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