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

FREE ForceEmote : 0.2.2 0.2.2

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

namespace Oxide.Plugins
{
    [Info("ForceEmote", "Wulf/lukespragg", "0.2.2", ResourceId = 1684)]
    [Description("Force another player to do an emote on command")]
    public class ForceEmote : CovalencePlugin
    {
        #region Localization
         
        private new void LoadDefaultMessages()
        {
            // English
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["CommandAlias"] = "emote",
                ["CommandUsage"] = "Usage: {0} <name or id> <emote>",
                ["Emotes"] = "Available emotes: airhump, bird, facepalm, handsup, point, salute, surrender",
                ["ForcedPlayer"] = "You forced {0} to use the {1} emote!",
                ["NoEmote"] = "You must provide an available emote",
                ["NotAllowed"] = "You are not allowed to use the '{0}' command",
                ["PlayerForced"] = "{0} forced you use the {1} emote!",
                ["PlayerNotFound"] = "Player '{0}' was not found",
                ["PlayersFound"] = "Multiple players were found, please specify: {0}"
            }, this);
        }

        #endregion

        #region Initailization

        private const string permUse = "forceemote.use";

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

            AddCommandAliases("CommandAlias", "EmoteCommand");
            AddCovalenceCommand("forceemote", "EmoteCommand");
        }

        #endregion

        #region Command

        private void EmoteCommand(IPlayer player, string command, string[] args)
        {
            if (!player.HasPermission(permUse))
            {
                Message(player, "NotAllowed", command);
                return;
            }

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

            if (args[0] == "emotes")
            {
                Message(player, "Emotes");
                return;
            }

            var foundPlayers = players.FindPlayers(args[1]).ToArray();
            if (foundPlayers.Length > 1)
            {
                Message(player, "PlayersFound", string.Join(", ", foundPlayers.Select(p => p.Name).ToArray()));
                return;
            }

            var target = foundPlayers.Length == 1 ? foundPlayers[0] : null;
            if (target == null)
            {
                Message(player, "PlayerNotFound", args[1]);
                return;
            }

            if (args.Length != 0)
            {
                var emote = args[1];

                if (emote.Length == 0)
                {
                    Message(player, "NoEmote");
                    return;
                }

                ForceEmotes(target, player, emote);
            }
        }

        #endregion

        #region Emotes

        private void ForceEmotes(IPlayer target, IPlayer player, string emote)
        {
            var targetSession = target.Object as PlayerSession;
            var emoteManager = targetSession?.WorldPlayerEntity.GetComponent<EmoteManagerServer>();
            if (emoteManager == null) return;

            switch (emote.ToLower())
            {
                case "airhump":
                    emoteManager.BeginEmoteServer(EEmoteType.Airhump);
                    break;
                case "bird":
                    emoteManager.BeginEmoteServer(EEmoteType.Bird);
                    break;
                case "facepalm":
                    emoteManager.BeginEmoteServer(EEmoteType.Facepalm);
                    break;
                case "handsup":
                    emoteManager.BeginEmoteServer(EEmoteType.HandsUp);
                    break;
                case "point":
                    emoteManager.BeginEmoteServer(EEmoteType.Point);
                    break;
                case "salute":
                    emoteManager.BeginEmoteServer(EEmoteType.Salute);
                    break;
                case "surrender":
                    emoteManager.BeginEmoteServer(EEmoteType.Surrender);
                    break;
            }

            target.Message(Lang("PlayerForced", target.Id, player.Name.Sanitize(), emote));
            player.Message(Lang("ForcedPlayer", player.Id, target.Name.Sanitize(), emote));
        }

        #endregion

        #region Helpers

        private void AddCommandAliases(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.StartsWith(key))) 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.Message(Lang(key, player.Id, args));

        #endregion
    }
}

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