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

FREE PlayFX : 1.0.3 1.0.3

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

namespace Oxide.Plugins
{
    [Info("PlayFX", "Vliek", "1.0.3", ResourceId = 2810)]
    [Description("Play any Rust fx/effect on any specified player.")]

    class PlayFX : RustPlugin
    {
        string usagePerm = "playfx.use";
        bool Changed;
        bool localEffect;

        string GetLang(string msg, string userID) => lang.GetMessage(msg, this, userID);

        protected override void LoadDefaultConfig()
        {
            Puts("Creating a new config file.");
            Config.Clear();
            LoadVariables();
        }
        private void LoadVariables()
        {
            localEffect = Convert.ToBoolean(GetConfig("Settings", "Play effect locally", true));

            if (!Changed) return;
            SaveConfig();
            Changed = false;
        }

        object GetConfig(string menu, string datavalue, object defaultValue)
        {
            var data = Config[menu] as Dictionary<string, object>;
            if (data == null)
            {
                data = new Dictionary<string, object>();
                Config[menu] = data;
                Changed = true;
            }
            object value;
            if (!data.TryGetValue(datavalue, out value))
            {
                value = defaultValue;
                data[datavalue] = value;
                Changed = true;
            }
            return value;
        }

        protected override void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["usageExample"] = "Usage example: /playfx 76561198238497190 assets/bundled/prefabs/fx/gestures/drink_vomit.prefab",
                ["noPlayerFound"] = "No player matching this SteamID",
                ["noPermission"] = "You don't have the required permission to play effects on players."
            }, this);
        }

        void Init()
        {
            permission.RegisterPermission(usagePerm, this);
        }


        [ChatCommand("playfx")]
        void CmdPlayFX(BasePlayer player, string command, string[] args)
        {
            if (haspermission(player))
            {
                playeffect(player, args);
                return;
            }
            Player.Reply(player, GetLang("noPermission", player.UserIDString));
        }

        [ConsoleCommand("playfx")]
        void CCmdPlayFX(ConsoleSystem.Arg args)
        {
            if(args.Player() == null)
            {
                if (args.Args == null)
                {
                    Puts(GetLang("usageExample", null));
                    return;
                }
                playeffect(null, args.Args);
            }
            else
            {
                if (args.Args == null)
                {
                    Player.Reply(args.Player(), GetLang("usageExample", args.Player().UserIDString));
                    return;
                }
                playeffect(args.Player(), args.Args);
            }
        }

        private void playeffect(BasePlayer player, string[] args)
        {

            if(player == null)
            {
                if (args.Length != 2)
                {
                    Puts(GetLang("usageExample", null));
                    return;
                }
                string argTarget = args[0];
                string effect = args[1];
                if (converttoulong(argTarget))
                {
                    ulong effectTarget = Convert.ToUInt64(argTarget);
                    BasePlayer finaltarget = BasePlayer.FindByID(effectTarget);
                    if (finaltarget == null)
                    {
                        Puts(GetLang("noPlayerFound", null));
                        return;
                    }
                    var finaleffect = new Effect(effect, finaltarget, 0, Vector3.zero, Vector3.forward);
                    if(localEffect)
                    {
                        EffectNetwork.Send(finaleffect, finaltarget.net.connection);
                    }
                    else
                    {
                        EffectNetwork.Send(finaleffect);
                    }                  
                    Puts("Effect ran on " + finaltarget.displayName);
                    return;
                }
            }
            else
            {
                if (args.Length != 2)
                {
                    Player.Reply(player, GetLang("usageExample", player.UserIDString));
                    return;
                }
                string argTarget = args[0];
                string effect = args[1];
                if(converttoulong(argTarget))
                {
                    ulong effectTarget = Convert.ToUInt64(argTarget);
                    BasePlayer finaltarget = BasePlayer.FindByID(effectTarget);
                    if (finaltarget == null)
                    {
                        Player.Reply(player, GetLang("noPlayerFound", player.UserIDString));
                        return;
                    }
                    var finaleffect = new Effect(effect, finaltarget, 0, Vector3.zero, Vector3.forward);
                    if (localEffect)
                    {
                        EffectNetwork.Send(finaleffect, finaltarget.net.connection);
                    }
                    else
                    {
                        EffectNetwork.Send(finaleffect);
                    }
                    Player.Reply(player, "Effect ran on " + finaltarget.displayName);
                    return;
                }
            }

        }

        private bool haspermission(BasePlayer player)
        {
            if (player == null)
                return true;
            if (permission.UserHasPermission(player.UserIDString, usagePerm))
                return true;
            return false;
        }

        private bool converttoulong(string argTarget)
        {
            try
            {
                ulong converttest = Convert.ToUInt64(argTarget);
            }
            catch (FormatException e)
            {
                Puts(e.Message);
                return false;
            }
            return true;
        }
    }
}

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