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

FREE PlayerList : 0.2.0 0.2.0

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

namespace Oxide.Plugins
{
    [Info("PlayerList", "Wulf/lukespragg", "0.2.0", ResourceId = 2126)]
    [Description("Shows a count and list of all online players unless hidden")]

    class PlayerList : CovalencePlugin
    {
        #region Initialization

        const string permAllow = "playerlist.allow";
        const string permHide = "playerlist.hide";
        bool separateAdmin;
        string adminColor;

        protected override void LoadDefaultConfig()
        {
            Config["AdminColor"] = adminColor = GetConfig("AdminColor", "e68c17");
            Config["SeparateAdmin"] = separateAdmin = GetConfig("SeparateAdmin", false);
            SaveConfig();
        }

        void Init()
        {
            LoadDefaultConfig();
            LoadDefaultMessages();
            permission.RegisterPermission(permAllow, this);
            permission.RegisterPermission(permHide, this);
        }

        #endregion

        #region Localization

        void LoadDefaultMessages()
        {
            // English
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["AdminCount"] = "{0} admin online",
                ["AdminList"] = "Admin online ({0}): {1}",
                ["NobodyOnline"] = "No players are currently online",
                ["NotAllowed"] = "You are not allowed to use the '{0}' command",
                ["OnlyYou"] = "You are the only one online!",
                ["PlayerCount"] = "{0} player(s) online",
                ["PlayerList"] = "Players online ({0}): {1}"
            }, this);

            // French
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["AdminCount"] = "{0} administrateurs en ligne",
                ["AdminList"] = "Administrateurs en ligne ({0})Â : {1}",
                ["NobodyOnline"] = "Aucuns joueurs ne sont actuellement en ligne",
                ["NotAllowed"] = "Vous nâêtes pas autorisé à  utiliser la commande « {0} »",
                ["OnlyYou"] = "Vous êtes la seule personne en ligne !",
                ["PlayerCount"] = "{0} joueur(s) en ligne",
                ["PlayerList"] = "Joueurs en ligne ({0}) : {1}"
            }, this, "fr");

            // German
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["AdminCount"] = "{0} Administratoren online",
                ["AdminList"] = "Administratoren online ({0}): {1}",
                ["NobodyOnline"] = "Keine Spieler sind gerade online",
                ["NotAllowed"] = "Sie sind nicht berechtigt, verwenden Sie den Befehl '{0}'",
                ["OnlyYou"] = "Du bist der einzige Online!",
                ["PlayerCount"] = "{0} Spieler online",
                ["PlayerList"] = "Spieler online ({0}): {1}"
            }, this, "de");

            // Russian
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["AdminCount"] = "{0} админиÑÑÑаÑоÑÑ Ð¾Ð½Ð»Ð°Ð¹Ð½",
                ["AdminList"] = "ÐдминиÑÑÑаÑоÑÑ Ð¾Ð½Ð»Ð°Ð¹Ð½ ({0}): {1}",
                ["NobodyOnline"] = "Ðи один из игÑоков онлайн",
                ["NotAllowed"] = "ÐелÑÐ·Ñ Ð¸ÑполÑзоваÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Â«{0}»",
                ["OnlyYou"] = "ÐÑ ÑвлÑеÑеÑÑ ÐµÐ´Ð¸Ð½ÑÑвеннÑм онлайн!",
                ["PlayerCount"] = "{0} игÑока (ов) онлайн",
                ["PlayerList"] = "ÐгÑоков онлайн ({0}): {1}"
            }, this, "ru");

            // Spanish
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["AdminCount"] = "{0} administradores en lÃnea",
                ["AdminList"] = "Los administradores en lÃnea ({0}): {1}",
                ["NobodyOnline"] = "No hay jugadores están actualmente en lÃnea",
                ["NotAllowed"] = "No se permite utilizar el comando '{0}'",
                ["OnlyYou"] = "Usted es el único en lÃnea!",
                ["PlayerCount"] = "{0} jugadores en lÃnea",
                ["PlayerList"] = "Jugadores en lÃnea ({0}): {1}"
            }, this, "es");
        }

        #endregion

        #region Commands

        [Command("online")]
        void OnlineCommand(IPlayer player, string command, string[] args)
        {
            if (!permission.UserHasPermission(player.Id, permAllow) && player.Id != "server_console")
            {
                player.Reply(Lang("NotAllowed", player.Id, command));
                return;
            }

            var adminCount = players.Connected.Count(p => p.IsAdmin && !permission.UserHasPermission(p.Id, permHide));
            var playerCount = players.Connected.Count(p => !p.IsAdmin && !permission.UserHasPermission(p.Id, permHide));

            player.Reply($"{Lang("AdminCount", player.Id, adminCount)}, {Lang("PlayerCount", player.Id, playerCount)}");
        }

        [Command("players", "who")]
        void PlayersCommand(IPlayer player, string command, string[] args)
        {
            if (!permission.UserHasPermission(player.Id, permAllow) && player.Id != "server_console")
            {
                player.Reply(Lang("NotAllowed", player.Id, command));
                return;
            }

            var adminCount = players.Connected.Count(p => p.IsAdmin && !permission.UserHasPermission(p.Id, permHide));
            var playerCount = players.Connected.Count(p => !p.IsAdmin && !permission.UserHasPermission(p.Id, permHide));
            var totalCount = adminCount + playerCount;

            switch (totalCount)
            {
                case 0:
                    player.Reply(Lang("NobodyOnline", player.Id));
                    break;
                case 1:
                    player.Reply(Lang("OnlyYou", player.Id));
                    break;
                default:
                    var adminList = string.Join(", ", players.Connected.Where(p => p.IsAdmin).Select(p => covalence.FormatText($"[#{adminColor}]{p.Name}[/#]")).ToArray());
                    var playerList = string.Join(", ", players.Connected.Where(p => !p.IsAdmin).Select(p => p.Name).ToArray());
                    if (separateAdmin && !string.IsNullOrEmpty(adminList)) player.Reply(Lang("AdminList", player.Id, adminCount, adminList));
                    if (!string.IsNullOrEmpty(playerList)) player.Reply(Lang("PlayerList", player.Id, playerCount, playerList));
                    break;
            }
        }

        #endregion

        T GetConfig<T>(string name, T value) => Config[name] == null ? value : (T)Convert.ChangeType(Config[name], typeof(T));

        string Lang(string key, string id = null, params object[] args) => string.Format(lang.GetMessage(key, this, id), args);
    }
}

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