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

FREE DiscordPlayers : 0.13.0 0.13.0

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

namespace Oxide.Plugins
{
    [Info("Discord Players", "MJSU", "0.13.0")]
    [Description("Displays online players in discord")]
    internal class DiscordPlayers : CovalencePlugin
    {
        #region Class Fields
        [PluginReference] private Plugin DiscordCore, Clans;

        private PluginConfig _pluginConfig; //Plugin Config
        #endregion

        #region Setup & Loading
        protected override void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {
                [LangKeys.OnlineFormat] = "{0} Online: \n{1}"
            }, this);
        }

        protected override void LoadDefaultConfig()
        {
            PrintWarning("Loading Default Config");
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();
            Config.Settings.DefaultValueHandling = DefaultValueHandling.Populate;
            _pluginConfig = AdditionalConfig(Config.ReadObject<PluginConfig>());
            Config.WriteObject(_pluginConfig);
        }

        private PluginConfig AdditionalConfig(PluginConfig config)
        {
            return config;
        }

        private void OnServerInitialized()
        {
            if (DiscordCore == null)
            {
                PrintError("Missing plugin dependency DiscordCore: https://umod.org/plugins/discord-core");
                return;
            }

            OnDiscordCoreReady();
        }

        private void OnDiscordCoreReady()
        {
            if (!(DiscordCore?.Call<bool>("IsReady") ?? false))
            {
                return;
            }

            DiscordCore.Call("RegisterCommand", _pluginConfig.PlayersCommand, this, new Func<IPlayer, string, string, string[], object>(HandlePlayers), "To view the online players", null, true);
        }

        private void Unload()
        {
            DiscordCore?.Call("UnregisterCommand", _pluginConfig.PlayersCommand, this);
        }
        #endregion

        #region Discord Chat Command
        private object HandlePlayers(IPlayer player, string channelId, string cmd, string[] args)
        {
            List<string> onlineList = GetPlayers();
            SendMessage(channelId,   $"{Title}: {Lang(LangKeys.OnlineFormat, player, players.Connected.Count(), onlineList[0])}");

            for (int i = 1; i < onlineList.Count; i++)
            {
                SendMessage(channelId, onlineList[i]);
            }
            
            return null;
        }

        private void SendMessage(string channelId, string message)
        {
            DiscordCore.Call("SendMessageToChannel", channelId, message);
        }
        #endregion

        #region Helper Methods
        private List<string> GetPlayers()
        {
            StringBuilder sb = new StringBuilder();
            List<string> playerLists = new List<string>();
            foreach (IPlayer connectPlayer in players.Connected)
            {
                string name = GetDisplayName(connectPlayer);
                if (sb.Length + name.Length > 1850)
                {
                    playerLists.Add(sb.ToString());
                    sb.Length = 0;
                }

                sb.Append(name);
                sb.Append(_pluginConfig.Separator);
            }
            
            playerLists.Add(sb.ToString());

            return playerLists;
        }

        private string GetDisplayName(IPlayer player)
        {
            string clanTag = Clans?.Call<string>("GetClanOf", player);
            if (!string.IsNullOrEmpty(clanTag))
            {
                clanTag = $"[{clanTag}] ";
            }

            return _pluginConfig.PlayerNameFormat.Replace("{clan}", clanTag).Replace("{name}", player.Name).Replace("{steamid}", player.Id);
        }

        private string Lang(string key, IPlayer player = null, params object[] args) => string.Format(lang.GetMessage(key, this, player?.Id), args);
        #endregion

        #region Classes
        private class PluginConfig
        {
            [DefaultValue("players")]
            [JsonProperty(PropertyName = "Players Discord Bot Command")]
            public string PlayersCommand { get; set; }
            
            [DefaultValue("{clan}{name} ({steamid})")]
            [JsonProperty(PropertyName = "Player name format")]
            public string PlayerNameFormat { get; set; }
            
            [DefaultValue("\n")]
            [JsonProperty(PropertyName = "Player name separator")]
            public string Separator { get; set; }
        }


        private static class LangKeys
        {
            public const string OnlineFormat = "OnlineFormat1";
        }

        #endregion
    }
}

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