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

FREE InfoPlus : 1.5.1 1.5.1

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using Oxide.Core;
using System.Collections.Generic;
using Oxide.Core.Libraries.Covalence;
using System.Linq;
using System;

namespace Oxide.Plugins
{
    [Info("InfoPlus", "Kaidoz | vk.com/kaidoz", "1.5.1")]
      //  Слив плагинов server-rust by Apolo YouGame
    [Description("Плагин с полезными функциями")]

    class InfoPlus : CovalencePlugin
      //  Слив плагинов server-rust by Apolo YouGame
    {
        void Loaded()
        {
            LoadConfig();
            pingchecker();

            if (!permission.PermissionExists("infoplus.one")) permission.RegisterPermission("infoplus.one", this);
            if (!permission.PermissionExists("infoplus.nokick")) permission.RegisterPermission("infoplus.nokick", this);
            Advert();
        }

        protected override void LoadDefaultConfig() => PrintWarning("Creating new config file for InfoPlus...");
      //  Слив плагинов server-rust by Apolo YouGame

#if HURTWORLD
        void OnServerInitialized()
        {
            if (Configuration.ConB)
                GameManager.Instance.ServerConfig.ChatConnectionMessagesEnabled = false;
        }
#endif

        private struct Configuration
        {
            public static List<object> Messages = new List<object>
            {
                "Пример1",
                "Пример2",
                "Пример3",
                "Пример4"
            };

            public static List<object> msgwlc = new List<object>
            {
                "Добро пожаловать на сервер {player}",
                "Магазин сервера магазин.ком"
            };

            public static int AdvertInterval = 10;
            public static bool AdvertB = true;
            public static bool ConB = true;
            public static bool fb = true;
            public static string Disconnect = "Отключился от сервера {player}";
            public static string Connect = "Присоединился к серверу {player} ";
            public static bool PCH = true;
            public static int PCHT = 120;
            public static int PCHM = 200;
            public static string OnlineTekst = "Онлайн: {online}; <color=red>Админов:</color> {admin}; <color=blue>Модеров:</color> {moder}";
            public static int niklegth = 30;
            public static List<object> groupcolors = new List<object>()
            {
                "admin;red",
                "moder;blue",
                "default;white"
            };
            public static bool adm_players = true;
            public static bool admin_con = true;
        }

        private new void LoadConfig()
        {
            GetConfig(ref Configuration.Messages, "Реклама", "Сообщения");
            GetConfig(ref Configuration.AdvertB, "Реклама", "Включен(false-будет отключен)");
            GetConfig(ref Configuration.AdvertInterval, "Реклама", "Интервал рекламы (в минутах)");
            GetConfig(ref Configuration.ConB, "Выход/Вход", "Включен(false-будет отключен)");
            GetConfig(ref Configuration.Disconnect, "Выход/Вход", "Вышел");
            GetConfig(ref Configuration.admin_con, "Выход/Вход", "Показывать админа");
            GetConfig(ref Configuration.Connect, "Выход/Вход", "Зашел");
            GetConfig(ref Configuration.fb, "Впервые на сервере", "Включить(false-будет отключен)");
            GetConfig(ref Configuration.msgwlc, "Впервые на сервере", "Сообщения");
            GetConfig(ref Configuration.PCH, "Пинг", "Проверка пинга");
            GetConfig(ref Configuration.PCHM, "Пинг", "Максимальный пинг");
            GetConfig(ref Configuration.PCHT, "Пинг", "Частота проверки(в секунда)");
            GetConfig(ref Configuration.OnlineTekst, "Список игроков", "Текст(для количества указывать группу)");
            GetConfig(ref Configuration.groupcolors, "Список игроков", "Список(группа;его цвет)");
            GetConfig(ref Configuration.niklegth, "Список игроков", "Количество отображаемых имен");
            GetConfig(ref Configuration.adm_players, "Список игроков", "Показывать админов в списке");
            SaveConfig();
        }

        private int advert;

        private void Advert()
        {
            if (Configuration.AdvertB)
            {
                timer.Repeat(Configuration.AdvertInterval * 60, 0, () =>
                {
                    if (Configuration.Messages.Count == 0)
                        return;

                    advert += 1;
                    if (advert > Configuration.Messages.Count - 1)
                        advert = 0;
                    server.Broadcast((string)Configuration.Messages[advert]);
                    Puts((string)Configuration.Messages[advert]);
                });
            }
        }

        private void OnUserDisconnected(IPlayer player)
        {
            if (player.IsAdmin && !Configuration.admin_con)
                return;

            if (Configuration.ConB)
                server.Broadcast((Configuration.Disconnect).Replace("{player}", player.Name));
        }

        private void OnUserConnected(IPlayer player)
        {
            if (Configuration.fb)
            {
                if (!permission.UserHasPermission(player.Id.ToString(), "infoplus.one"))
                {
                    foreach (string msg in Configuration.msgwlc)
                    {
                        player.Reply((msg).Replace("{player}", player.Name));
                    }

                    permission.GrantUserPermission(player.Id.ToString(), "infoplus.one", null);
                }
            }

            if (player.IsAdmin && !Configuration.admin_con)
                return;

            if (Configuration.ConB)
                server.Broadcast((Configuration.Connect).Replace("{player}", player.Name));
        }

        [Command("players")]
        void cmdPlayers(IPlayer player)
        {
            string playerscount = players.Connected.Count().ToString();
            int[] gplist = new int[Configuration.groupcolors.Count()];
            List<string> playerslist = new List<string>();
            for (int g = 0; g < players.Connected.Count(); g++)
            {
                var pl_ = players.Connected.ToList();

                if (!Configuration.adm_players && !pl_[g].IsAdmin)
                    continue;

                for (int _g = 0; g < Configuration.groupcolors.Count(); g++)
                {
                    string[] sp_ = Configuration.groupcolors[_g].ToString().Split(';');
                    if (permission.UserHasGroup(pl_[g].Id, sp_[0]))
                    {
                        playerslist.Add($"<color={sp_[1]}>{pl_[g].Name}</color>");
                        break;
                    }                   
                }
            }
            string msg_1 = Configuration.OnlineTekst.Replace("{online}", playerscount);

            foreach (string _mg in Configuration.groupcolors)
            {
                string[] sp_ = _mg.ToString().Split(';');
                var countm = (from x in players.Connected.ToList() where permission.UserHasGroup(x.Id.ToString(), sp_[0]) select x).Count();
                msg_1 = msg_1.Replace("{" + sp_[0] + "}", countm.ToString());
            }
            string msgful = "";

            for (int _g = 0; _g < playerslist.Count(); _g++)
            {
                try
                {
                    if (Configuration.niklegth <= _g)
                    {
                        msgful = msgful + "...";
                        break;
                    }
                    msgful += playerslist[_g] + ", ";
                    if (_g == playerslist.Count() - 1)
                        msgful = msgful.Remove(msgful.Length - 2);
                }
                catch { }
            }
            player.Reply(msg_1 + "\n" + msgful);
        }

        [Command("online")]
        void cmdsetonline(IPlayer player) => player.Reply($"На сервере: {players.Connected.Count()}");

        [Command("pos")]
        void cmdPlayerd(IPlayer player) => player.Reply($"Ваша позиция: {player.Position()}");

        [Command("ping")]
        void cmdsetping(IPlayer player) => player.Reply($"Ваш пинг: {player.Ping}");

        void pingchecker()
        {
            if (Configuration.PCH)
            {
                timer.Repeat(Configuration.PCHT, 0, () =>
                {
                    foreach (var d in players.Connected)
                    {
                        if (d.Ping >= Configuration.PCHM && (!d.IsAdmin || !permission.UserHasPermission(d.Id.ToString(), "infoplus.nokick")))
                        {
                            d.Reply($"<color=red>!</color> Ваш пинг высокий: {d.Ping}! Возможно исключение с сервера.");
                            timer.Once(60, () =>
                            {
                                try
                                {
                                    if (d != null && d.Ping >= Configuration.PCHM)
                                    {
                                        d.Kick("Вы были исключены из-за высокого пинга.Проверьте соединение!");
                                    }
                                }
                                catch { }
                            });
                        }
                    }
                });
            }
        }

        private void GetConfig<T>(ref T variable, params string[] path)
        {
            if (path.Length == 0)
                return;

            if (Config.Get(path) == null)
            {
                Config.Set(path.Concat(new object[] { variable }).ToArray());
                PrintWarning($"Added field to config: {string.Join("/", path)}");
            }

            variable = (T)Convert.ChangeType(Config.Get(path), typeof(T));
        }

        // Как жизнь?
    }
}

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