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

FREE Possession : 0.1 0.1

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

namespace Oxide.Plugins
{
    [Info("Possession", "Wulf/lukespragg", 0.1, ResourceId = 0)]
    [Description("")]

    class Possession : RustPlugin
    {
        void Loaded()
        {
            permission.RegisterPermission("possession.allowed", this);
        }

        #region Chat Commands

        [ChatCommand("spectate")]
        void HideChat(BasePlayer player, string command, string[] args)
        {
            // Check if player is already hidden
            if (player.HasPlayerFlag(BasePlayer.PlayerFlags.Spectating))
            {
                SendReply(player, "You're already spectating!");
                return;
            }

            var ray = new Ray(player.eyes.position, player.eyes.HeadForward());
            var target = FindObject(ray, 3) as BasePlayer; // TODO: Make distance (3) configurable
            if (!target) return;

            // Change to normal view
            player.SetPlayerFlag(BasePlayer.PlayerFlags.ThirdPersonViewmode, false);
        }

        #endregion

        #region Death Handling

        void OnEntityDeath(BaseEntity entity)
        {
            // TODO: Check if player was being spectated, and stop spectating
        }

        #endregion

        #region Spectate Blocking

        object OnServerCommand(ConsoleSystem.Arg arg)
        {
            if (arg?.connection != null && arg.cmd.namefull == "global.spectate") return true;
            return null;
        }

        object OnPlayerInput(BasePlayer player, InputState input)
        {
            if (player.IsSpectating() && input.WasJustPressed(BUTTON.JUMP) || input.WasJustPressed(BUTTON.DUCK)) return true;
            //if (player.IsSpectating() player.Push(new Vector3());)
            return null;
        }

        #endregion

        #region Helper Methods

        static BaseEntity FindObject(Ray ray, float distance)
        {
            RaycastHit hit;
            return !Physics.Raycast(ray, out hit, distance) ? null : hit.GetEntity();
        }

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

        #endregion
    }
}

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