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

FREE PlayerNames : 1.1.2 1.1.2

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

namespace Oxide.Plugins
{
    [Info("Player Names", "Arainrr", "1.1.2")]
    [Description("Logs and stores all names used by players.")]
    public class PlayerNames : CovalencePlugin
    {
        private const string PERMISSION_USE = "playernames.use";
        private bool changed = false;

        private void Init()
        {
            LoadData();
            permission.RegisterPermission(PERMISSION_USE, this);
        }

        private void Unload() => SaveData();

        private void OnServerSave()
        {
            if (changed)
            {
                SaveData();
                changed = false;
            }
        }

        private void OnUserConnected(IPlayer iPlayer)
        {
            if (playerData.ContainsKey(iPlayer.Id))
            {
                if (!playerData[iPlayer.Id].Contains(iPlayer.Name))
                {
                    playerData[iPlayer.Id].Add(iPlayer.Name);
                    changed = true;
                }
            }
            else
            {
                playerData.Add(iPlayer.Id, new HashSet<string>() { iPlayer.Name });
                changed = true;
            }
        }

        private string GetPlayerNames(string playerID)
        {
            if (playerData.ContainsKey(playerID))
            {
                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.AppendLine(Lang("Prefix", playerID, playerID));
                foreach (var name in playerData[playerID])
                    stringBuilder.AppendLine(Lang("Name", playerID, name));
                return stringBuilder.ToString();
            }
            return string.Empty;
        }

        #region Command

        [Command("name")]
        private void CmdName(IPlayer iPlayer, string command, string[] args)
        {
            if (!iPlayer.IsAdmin && !iPlayer.HasPermission(PERMISSION_USE))
            {
                iPlayer.Message(Lang("NotAllowed", iPlayer.Id));
                return;
            }
            var target = args.Length == 0 ? iPlayer : players.FindPlayer(args[0]);
            if (target == null)
            {
                iPlayer.Message(Lang("PlayerNotFound", iPlayer.Id, args[0]));
                return;
            }
            var names = GetPlayerNames(target.Id);
            if (string.IsNullOrEmpty(names)) iPlayer.Message(Lang("DataNotFound", target.Id, target.Name));
            else iPlayer.Message(names);
        }

        #endregion Command

        #region DataFile

        private Dictionary<string, HashSet<string>> playerData = new Dictionary<string, HashSet<string>>();

        private void LoadData()
        {
            try
            {
                playerData = Interface.Oxide.DataFileSystem.ReadObject<Dictionary<string, HashSet<string>>>(Name);
            }
            catch
            {
                playerData = new Dictionary<string, HashSet<string>>();
            }
        }

        private void SaveData() => Interface.Oxide.DataFileSystem.WriteObject(Name, playerData);

        #endregion DataFile

        #region LanguageFile

        protected override void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["NotAllowed"] = "You do not have permission to use this command.",
                ["Name"] = "{0}",
                ["Prefix"] = "'{0}' used names: ",
                ["DataNotFound"] = "Name data of player '{0}' was not found.",
                ["PlayerNotFound"] = "Player '{0}' not found."
            }, this);
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["NotAllowed"] = "您没有权限使用该命令",
                ["Name"] = "{0}",
                ["Prefix"] = "'{0}' 使用过的名字:",
                ["DataNotFound"] = "没有找到玩家 '{0}' 的名字数据",
                ["PlayerNotFound"] = "玩家 '{0}' 没有找到"
            }, this, "zh-CN");
        }

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

        #endregion LanguageFile
    }
}

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