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

FREE SoundFX : 1.0.3 1.0.3

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

namespace Oxide.Plugins
{
    [Info("Sound FX", "Lincoln", "1.0.3")]
    [Description("Simulate various Rust sound effects")]

    class SoundFX : RustPlugin
    {
        private const string permUse = "soundfx.use";
        private const string permBypassCooldown = "soundfx.bypasscooldown.use";
        private readonly Hash<string, float> cooldowns = new Hash<string, float>();

        #region Variables
        private List<string> ricochetEffects = new List<string>()
        {
            "assets/bundled/prefabs/fx/ricochet/ricochet1.prefab",
            "assets/bundled/prefabs/fx/ricochet/ricochet2.prefab",
            "assets/bundled/prefabs/fx/ricochet/ricochet3.prefab",
            "assets/bundled/prefabs/fx/ricochet/ricochet4.prefab",
        };

        string explosion = "assets/bundled/prefabs/fx/explosions/explosion_03.prefab";
        string vomit = "assets/bundled/prefabs/fx/gestures/drink_vomit.prefab";
        string landmine = "assets/bundled/prefabs/fx/weapons/landmine/landmine_explosion.prefab";
        string scream = "assets/bundled/prefabs/fx/player/beartrap_scream.prefab";
        string fallDamage = "assets/bundled/prefabs/fx/player/fall-damage.prefab";
        string howl = "assets/bundled/prefabs/fx/player/howl.prefab";
        string lick = "assets/bundled/prefabs/fx/gestures/lick.prefab";
        string headshot = "assets/bundled/prefabs/fx/headshot_2d.prefab";
        string chatter = "assets/prefabs/npc/scientist/sound/chatter.prefab";
        string manDown = "assets/prefabs/npc/scientist/sound/responddeath.prefab";
        string roger = "assets/prefabs/npc/scientist/sound/respondok.prefab";
        string takeCover = "assets/prefabs/npc/scientist/sound/takecover.prefab";
        string slurp = "assets/bundled/prefabs/fx/gestures/drink_tea.prefab";

        string fish = "assets/prefabs/misc/decor_dlc/huntingtrophy_fish/effects/hunting-trophy-fish-song.prefab";
        string test = "assets/prefabs/npc/murderer/sound/breathing.prefab"; //for testing purposes only
        #endregion

        #region PluginConfig
        //Creating a config file
        private static PluginConfig config;
        private class PluginConfig
        {
            [JsonProperty(PropertyName = "Max Cooldown: ")] public float maxCooldown { get; set; }
            [JsonProperty(PropertyName = "Max Radius: ")] public float maxRadius { get; set; }


            public static PluginConfig DefaultConfig() => new PluginConfig()
            {
                maxCooldown = 5,
                maxRadius = 5
            };

        }
        protected override void LoadDefaultConfig()
        {
            PrintWarning("New configuration file created.");
            config = PluginConfig.DefaultConfig();
        }
        protected override void LoadConfig()
        {
            base.LoadConfig();
            config = Config.ReadObject<PluginConfig>();
            SaveConfig();
        }
        protected override void SaveConfig()
        {
            Config.WriteObject(config);
        }
        #endregion

        #region Permissions
        private void Init()
        {
            permission.RegisterPermission(permUse, this);
            permission.RegisterPermission(permBypassCooldown, this);
        }
        #endregion

        private bool hasPermission(BasePlayer player)
        {
            if (!permission.UserHasPermission(player.UserIDString, permUse))
            {
                ChatMessage(player, "NoPerm");
                return false;
            }
            return true;
        }

        bool OnCoolDown(BasePlayer player)
        {
            if (permission.UserHasPermission(player.UserIDString, permBypassCooldown)) return false;

            if (!cooldowns.ContainsKey(player.UserIDString))
            {
                cooldowns.Add(player.UserIDString, 0f);
            }

            if (config.maxCooldown > 0 && cooldowns[player.UserIDString] + config.maxCooldown > Interface.Oxide.Now)
            {
                ChatMessage(player, "Cooldown", config.maxCooldown);
                foreach (KeyValuePair<string, float> kvp in cooldowns) Puts("Key: {0}, Value: {1}", kvp.Key, kvp.Value);
                return true;
            }
            cooldowns[player.UserIDString] = Interface.Oxide.Now;
            return false;
        }

        #region Commands
        [ChatCommand("fx")]
        private void fxCommand(BasePlayer player, string command, string[] args)
        {
            if (player == null || !hasPermission(player)) return;

            if (args.IsNullOrEmpty())
            {
                ChatMessage(player, "Help");
                return;
            }

            if (OnCoolDown(player))
            {
                return;
            }

            Vector3 pos = player.transform.position + UnityEngine.Random.insideUnitSphere * config.maxRadius;

            switch (args[0].ToLower())
            {
                case "ricochet":
                    SendEffect(ricochetEffects.GetRandom(), pos);
                    break;

                case "scream":
                    SendEffect(scream, pos);
                    break;

                case "explosion":
                    SendEffect(explosion, pos);
                    break;

                case "vomit":
                    SendEffect(vomit, pos);
                    break;

                case "slurp":
                    SendEffect(slurp, pos);
                    break;

                case "landmine":
                    SendEffect(landmine, pos);
                    break;

                case "fall":
                    SendEffect(fallDamage, pos);
                    break;

                case "howl":
                    SendEffect(howl, pos);
                    break;

                case "lick":
                    SendEffect(lick, pos);
                    break;

                case "headshot":
                    SendEffect(headshot, pos);
                    break;

                case "chatter":
                    SendEffect(chatter, pos);
                    break;

                case "mandown":
                    SendEffect(manDown, pos);
                    break;

                case "roger":
                    SendEffect(roger, pos);
                    break;

                case "takecover":
                    SendEffect(takeCover, pos);
                    break;

                case "help":
                    ChatMessage(player, "Help");
                    break;

                case "test":
                    SendEffect(test, pos);
                    break;

                case "fish":
                    SendEffect(fish, pos);
                    break;

                default:
                    ChatMessage(player, "Invalid");
                    break;
            }
        }

        #endregion

        #region Helpers
        private void SendEffect(string prefabName, Vector3 pos) => Effect.server.Run(prefabName, pos);
        #endregion

        #region Localization

        private void ChatMessage(BasePlayer player, string messageName, params object[] args) =>
            player.ChatMessage(string.Format(GetMessage(player.IPlayer, messageName), args));

        private string GetMessage(IPlayer player, string messageName, params object[] args) =>
            GetMessage(player.Id, messageName, args);

        private string GetMessage(string playerId, string messageName, params object[] args)
        {
            var message = lang.GetMessage(messageName, this, playerId);
            return args.Length > 0 ? string.Format(message, args) : message;
        }

        protected override void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["Help"] = "<size=18 ><color=#ffc34d>SoundFX</color></size>" +
                "\n<color=#9999ff>/fx ricochet</color> Bullet ricochet." +
                "\n<color=#9999ff>/fx scream</color> Wounded scream." +
                "\n<color=#9999ff>/fx explosion</color> Grenade explosion." +
                "\n<color=#9999ff>/fx slurp</color> Slurping sound effect." +
                "\n<color=#9999ff>/fx vomit</color> Vomit sound effect." +
                "\n<color=#9999ff>/fx landmine</color> Land mine explosion." +
                "\n<color=#9999ff>/fx fall</color> Breaking your knees." +
                "\n<color=#9999ff>/fx howl</color> Wolf howling." +
                "\n<color=#9999ff>/fx lick</color> Gross licking/slurping sound." +
                "\n<color=#9999ff>/fx headshot</color> Headshot sound effect " +
                "\n<color=#9999ff>/fx roger</color> Scientist radio 'roger that' " +
                "\n<color=#9999ff>/fx takecover</color> Scientist radio 'take cover' " +
                "\n<color=#9999ff>/fx mandown</color> Scientist radio 'man down'" +
                "\n<color=#9999ff>/fx chatter</color> Scientist radio chatter." +
                "\n <color=#9999ff>/fx fish</color> Fish song.",
                ["NoPerm"] = "<color=#ffc34d>SoundFX</color>: You don't have permission to use that.",
                ["Cooldown"] = "<color=#ffc34d>SoundFX</color>: You are still on a {0} second cooldown.",
                ["Invalid"] = "<color=#ffc34d>SoundFX</color> Not a valid FX command."

            }, this, "en");
        }
        #endregion

        private void Unload()
        {
            config = null;
        }
    }
}

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