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

FREE DVInfo : 0.0.1 0.0.1

Нет прав для скачивания
C#:
using System;
using UnityEngine;
using System.Globalization;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using System.Collections.Generic;
using System.Linq;
using Oxide.Core;
using Newtonsoft.Json;
namespace Oxide.Plugins {
    [Info("DVInfo", "ClayMond", "0.0.1")]
    [Description("Бесплатный плагин на красивую информацию в CUI для oxide-russia.ru")]
    class DVInfo : RustPlugin {
#region MSG
        // ЭТОТ ТЕКСТ НАСТРАИВАЕТСЯ - OXIDE/DATA
        List<string> MSGList = new List<string> {
            "Группа сервера - vk.com/суда вашу группу сервера", "Сайт сервера - suda-ssila.na.store", "MAX 3 / RATE X5 ", "СУДА ВАШЕ СООБЩЕНИЕ ЛЮБОЕ", "СУДА ТОЖЕ МОЖНО", "И СУДА"
        }
        ;
#endregion
#region Config
        public class DataConfig {
            [JsonProperty("Интервал обновление общего онлайна")]
            public int interval;
            [JsonProperty("Интервал обновление сообщение")]
            public int intervalmsg;
        }
        public DataConfig cfg;
        protected override void LoadConfig() {
            base.LoadConfig();
            PrintWarning("Конфиг загружен");
            cfg = Config.ReadObject<DataConfig>();
        }
        protected override void SaveConfig() {
            Config.WriteObject(cfg);
        }
        protected override void LoadDefaultConfig() {
            cfg = new DataConfig() {
                intervalmsg = 10, interval = 2,
            }
            ;
        }
#endregion
#region Hook
        private void OnServerInitialized() {
            if (!Interface.Oxide.DataFileSystem.ExistsDatafile("DVInfo/MSGS")) {
                Interface.Oxide.DataFileSystem.WriteObject("DVInfo/MSGS", MSGList);
                PrintWarning("Создан файл настроек по пути [oxide/data/DVInfo/MSGS.json]");
                PrintWarning("The settings file has been created along the path [oxide / data / DVInfo / MSGS.json]");
            }
            else {
                MSGList = Interface.Oxide.DataFileSystem.ReadObject<List<string>>("DVInfo/MSGS");
                PrintWarning("Загружены настройки из файла по пути [oxide/data/DVInfo/MSGS.json]");
                PrintWarning("Loaded settings from a file along the path [oxide / data / DVInfo / MSGS.json]");
            }
            timer.Every(cfg.interval, () => {
                foreach(var player in BasePlayer.activePlayerList) DrawUpper(player);
            }
            );
            timer.Every(cfg.intervalmsg, () => {
                foreach(var player in BasePlayer.activePlayerList) DrawLower(player);
            }
            );
            PrintWarning("Плагин полностью инициализирован");
            PrintWarning("Plugin full initialized");
        }
        void Unload() {
            foreach (BasePlayer player in BasePlayer.activePlayerList) {
                CuiHelper.DestroyUi(player, "DVUpper");
                CuiHelper.DestroyUi(player, "DVLower");
            }
        }
        private void OnPlayerInit(BasePlayer player) {
            if (player.IsReceivingSnapshot) {
                NextTick(() => OnPlayerInit(player));
                return;
            }
            foreach (var players in BasePlayer.activePlayerList) {
                DrawUpper(players);
            }
            DrawLower(player);
        }
        private void OnPlayerDisconnected(BasePlayer player, string reason) {
            foreach (var players in BasePlayer.activePlayerList) {
                DrawUpper(players);
            }
        }
#endregion
#region CONSOLE USER INTERFACE
        private void DrawUpper(BasePlayer player) {
            var SleepersLevel = BasePlayer.sleepingPlayerList.Count.ToString();
            string DVUpper = "DVUpper";
            CuiHelper.DestroyUi(player, DVUpper);
            var container = new CuiElementContainer();
            container.Add(new CuiPanel {
                Image = {
                    Color = HexToRustFormat("#00000000")
                }
                , RectTransform = {
                    AnchorMin = "1 1", AnchorMax = "1 1", OffsetMin = "-400 -70", OffsetMax = "-3 -3"
                }
                , CursorEnabled = false,
            }
            , "Hud", DVUpper);
            container.Add(new CuiElement {
                Parent = DVUpper, Components = {
                    new CuiTextComponent {
                        Text = $"Онлайн игроков: <color=#9ad173>{BasePlayer.activePlayerList.Count}</color> чел. | Спящих игроков: <color=#9ad173>{SleepersLevel}</color> чел.", Align = TextAnchor.UpperCenter, FontSize = 15, 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);
        }
        private void DrawLower(BasePlayer player) {
            string MSGS = MSGList.GetRandom();
            string DVLower = "DVLower";
            CuiHelper.DestroyUi(player, DVLower);
            var container = new CuiElementContainer();
            container.Add(new CuiPanel {
                Image = {
                    Color = HexToRustFormat("#00000000")
                }
                , RectTransform = {
                    AnchorMin = "1 1", AnchorMax = "1 1", OffsetMin = "-400 -70", OffsetMax = "-3 -3"
                }
                , CursorEnabled = false,
            }
            , "Hud", DVLower);
            container.Add(new CuiElement {
                Parent = DVLower, Components = {
                    new CuiTextComponent {
                        Text = MSGS, Align = TextAnchor.MiddleCenter, FontSize = 11, 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 COLOR HEX
        private static string HexToRustFormat(string hex) {
            UnityEngine.Color color;
            ColorUtility.TryParseHtmlString(hex, out color);
            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 оценок
Сверху