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

FREE Slap : 0.2.0 0.2.0

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System;
using UnityEngine;
using Random = System.Random;

namespace Oxide.Plugins
{
    [Info("Slap", "Wulf/lukespragg", "0.2.0", ResourceId = 1458)]
    [Description("Allows players with permission to slap other players around.")]

    class Slap : RustPlugin
    {
        // Do NOT edit this file, instead edit Slap.json in server/<identity>/oxide/config

        #region Configuration

        // Messages
        string CommandUsage => GetConfig("CommandUsage", "Usage:\n /slap name (replace 'name' with a player name)");
        string PlayerNotFound => GetConfig("PlayerNotFound", "Player '{player}' not found!");
        string PlayerSlapped => GetConfig("PlayerSlapped", "{player} got Bitchslapped!");
        string NoPermission => GetConfig("NoPermission", "Sorry, you can't use 'slap' right now");

        // Settings
        string ChatCommand => GetConfig("ChatCommand", "slap");
        int DamageAmount => GetConfig("DamageAmount", 5);
        int SlapsPerUse => GetConfig("SlapsPerUse", 3);

        protected override void LoadDefaultConfig()
        {
            // Messages
            Config["CommandUsage"] = CommandUsage;
            Config["PlayerNotFound"] = PlayerNotFound;
            Config["PlayerSlapped"] = PlayerSlapped;
            Config["NoPermission"] = NoPermission;

            // Settings
            Config["ChatCommand"] = ChatCommand;
            Config["DamageAmount"] = DamageAmount;
            Config["SlapsPerUse"] = SlapsPerUse;

            SaveConfig();
        }

        #endregion
        void Loaded()
        {
            LoadDefaultConfig();
            permission.RegisterPermission("slap.allowed", this);
            cmd.AddChatCommand(ChatCommand, this, "SlapChatCmd");
        }

        #region Chat Command

        void SlapChatCmd(BasePlayer player, string command, string[] args)
        {
            if (!HasPermission(player, "slap.allowed"))
            {
                PrintToChat(player, NoPermission);
                return;
            }

            if (args.Length != 1)
            {
                PrintToChat(player, CommandUsage);
                return;
            }

            var target = BasePlayer.Find(args[0]);
            if (target == null)
            {
                PrintToChat(player, PlayerNotFound.Replace("{player}", args[0]));
                return;
            }

            timer.Repeat(0.3f, SlapsPerUse, () =>
            {
                if (DamageAmount > 0f) target.Hurt(DamageAmount);
                SlapPlayer(target);
            });

            PrintToChat(PlayerSlapped.Replace("{player}", target.displayName));
        }

        #endregion

        #region Player Slapping

        void SlapPlayer(BasePlayer player)
        {
            var position = player.transform.position;
            var destination = new Vector3();
            var random = new Random();

            destination.x = position.x + random.Next(-3, 3);
            destination.y = position.y + random.Next(1, 3);
            destination.z = position.z + random.Next(-3, 3);

            var flinches = new[]
            {
                    BaseEntity.Signal.Flinch_Chest,
                    BaseEntity.Signal.Flinch_Head,
                    BaseEntity.Signal.Flinch_Stomach
                };
            var flinch = flinches[random.Next(flinches.Length)];
            player.SignalBroadcast(flinch, string.Empty, null);

            var effects = new[]
            {
                    "headshot",
                    "headshot_2d",
                    "impacts/slash/clothflesh/clothflesh1",
                    "impacts/stab/clothflesh/clothflesh1"
                };
            var effect = effects[random.Next(effects.Length)];
            Effect.server.Run($"assets/bundled/prefabs/fx/{effect}.prefab", player.transform.position, Vector3.zero);

            player.MovePosition(destination);
            player.ClientRPCPlayer(null, player, "ForcePositionTo", destination);
            //player.TransformChanged;
        }

        #endregion

        #region Helper Methods

        T GetConfig<T>(string name, T defaultValue)
        {
            if (Config[name] == null) return defaultValue;
            return (T)Convert.ChangeType(Config[name], typeof(T));
        }

        bool HasPermission(BasePlayer player, string perm) => permission.UserHasPermission(player.UserIDString, perm);

        #endregion
    }
}

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