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

FREE Infamy : 0.1.3 0.1.3

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

namespace Oxide.Plugins
{
    [Info("Infamy", "Wulf/lukespragg", "0.1.3", ResourceId = 2488)]
    [Description("Allows players with permission to add, remove, reset, or set infamy")]
    public class Infamy : CovalencePlugin
    {
        #region Localization

        private new void LoadDefaultMessages()
        {
            // English
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["CommandInfamy"] = "infamy",
                ["CommandUsage"] = "Usage: {0} <add|remove|reset|set> <name|id|all> [amount]",
                ["InfamyAdded"] = "{0} infamy has been added to {1}",
                ["InfamyAddedAll"] = "{0} infamy has been added to all players",
                ["InfamyRemoved"] = "{0} infamy has been removed from {1}",
                ["InfamyRemovedAll"] = "{0} infamy has been removed from all players",
                ["InfamyReset"] = "Infamy has been reset for {0}",
                ["InfamyResetAll"] = "Infamy has been reset for all players",
                ["InfamySet"] = "Infamy has been set to {0} for {1}",
                ["InfamySetAll"] = "Infamy has been set to {0} for all players",
                ["NoPlayersFound"] = "No players found with name or ID '{0}'",
                ["NotAllowed"] = "You are not allowed to use the '{0}' command",
                ["PlayersFound"] = "Multiple players were found, please specify: {0}"
            }, this);
        }

        #endregion Localization

        #region Initialization

        private const string permAdmin = "infamy.admin";

        private void Init()
        {
            permission.RegisterPermission(permAdmin, this);

            AddLocalizedCommand("CommandInfamy", "InfamyCommand");
        }

        #endregion Initialization

        #region Commands

        private void InfamyCommand(IPlayer player, string command, string[] args)
        {
            if (!player.HasPermission(permAdmin) && player.Id != "server_console")
            {
                Message(player, "NotAllowed", command);
                return;
            }

            if (args.Length < 2)
            {
                Message(player, "CommandUsage", command);
                return;
            }

            var targets = new List<IPlayer>();
            if (args[1].ToLower() == "all")
                targets = players.Connected.ToList();
            else
            {
                var foundPlayers = players.FindPlayers(args[1]).Where(p => p.IsConnected).ToArray();
                if (foundPlayers.Length > 1)
                {
                    Message(player, "PlayersFound", string.Join(", ", foundPlayers.Select(p => p.Name).ToArray()));
                    return;
                }

                if (foundPlayers.Length == 1)
                    targets.Add(foundPlayers[0]);
                else
                {
                    Message(player, "NoPlayersFound", args[1]);
                    return;
                }
            }

            var message = "";
            foreach (var target in targets.Where(t => t.IsConnected))
            {
                LogWarning(target.Name);
                var session = target.Object as PlayerSession;
#if HURTWORLDITEMV2
                var stats = session?.WorldPlayerEntity.Stats;
#else
                var stats = session?.WorldPlayerEntity.GetComponent<EntityStats>();
#endif
                if (stats == null) return;

                var infamy = stats.GetFluidEffect(EEntityFluidEffectType.Infamy).GetValue();
                var maxInfamy = stats.GetFluidEffect(EEntityFluidEffectType.Infamy).GetMaxValue();
                var amount = args.Length >= 3 ? Convert.ToSingle(args[2]) : 0f;
                var subCommand = args[0].ToLower();

                switch (subCommand)
                {
                    case "+":
                    case "add":
                        {
                            stats.GetFluidEffect(EEntityFluidEffectType.Infamy).SetValue(amount);
                            message = args[1].ToLower() == "all"
                                             ? Lang("InfamyAddedAll", player.Id, amount)
                                             : Lang("InfamyAdded", player.Id, amount, target.Name);
                            break;
                        }

                    case "-":
                    case "remove":
                        {
                            stats.GetFluidEffect(EEntityFluidEffectType.Infamy).SetValue(amount);
                            message = args[1].ToLower() == "all"
                                             ? Lang("InfamyRemovedAll", player.Id, amount)
                                             : Lang("InfamyRemoved", player.Id, amount, target.Name);
                            break;
                        }

                    case "r":
                    case "reset":
                        {
                            stats.GetFluidEffect(EEntityFluidEffectType.Infamy).Reset(true);
                            message = args[1].ToLower() == "all"
                                             ? Lang("InfamyResetAll", player.Id)
                                             : Lang("InfamyReset", player.Id, target.Name);
                            break;
                        }

                    case "s":
                    case "set":
                        {
                            stats.GetFluidEffect(EEntityFluidEffectType.Infamy).SetValue(amount);
                            message = args[1].ToLower() == "all"
                                             ? Lang("InfamySetAll", player.Id, amount)
                                             : Lang("InfamySet", player.Id, amount, target.Name);
                            break;
                        }

                    default:
                        Message(player, "CommandUsage");
                        return;
                }
            }

            player.Reply(message);
        }

        #endregion Commands

        #region Helpers

        private void AddLocalizedCommand(string key, string command)
        {
            foreach (var language in lang.GetLanguages(this))
            {
                var messages = lang.GetMessages(language, this);
                foreach (var message in messages.Where(m => m.Key.Equals(key)))
                    if (!string.IsNullOrEmpty(message.Value)) AddCovalenceCommand(message.Value, command);
            }
        }

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

        private void Message(IPlayer player, string key, params object[] args) => player.Reply(Lang(key, player.Id, args));

        #endregion Helpers
    }
}

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