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

FREE SupplySignalRewards : 1.0.0 1.0.0

Нет прав для скачивания
C#:
using System.Collections.Generic;
using Oxide.Core;
using Oxide.Core.Plugins;
using UnityEngine;

namespace Oxide.Plugins
{
    [Info("Supply Signal Rewards", "Banan", "1.0.0")]
    [Description("Gives players a random reward when they throw a supply signal.")]
    public class SupplySignalRewards : CovalencePlugin
    {
        private const string PermissionUse = "supplysignalrewards.use";
        private PluginConfig config;
        private Dictionary<string, float> playerCooldowns = new Dictionary<string, float>();

        private class PluginConfig
        {
            public bool EnableMessages { get; set; } = true;
            public float RewardCooldown { get; set; } = 300f;
            public List<RewardItem> Rewards { get; set; } = new List<RewardItem>
            {
                new RewardItem("scrap", 100, 500),
                new RewardItem("rifle.ak", 1, 1),
                new RewardItem("explosive.timed", 2, 5)
            };
        }

        private class RewardItem
        {
            public string Shortname { get; set; }
            public int MinAmount { get; set; }
            public int MaxAmount { get; set; }

            public RewardItem(string shortname, int min, int max)
            {
                Shortname = shortname;
                MinAmount = min;
                MaxAmount = max;
            }
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();
            try
            {
                config = Config.ReadObject<PluginConfig>();
                SaveConfig();
            }
            catch
            {
                PrintWarning("Invalid config file, loading default settings.");
                LoadDefaultConfig();
            }
        }

        protected override void LoadDefaultConfig()
        {
            config = new PluginConfig();
            SaveConfig();
        }

        protected override void SaveConfig() => Config.WriteObject(config);

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

        private void OnEntitySpawned(BaseEntity entity)
        {
            if (entity == null || entity.ShortPrefabName != "grenade.supplysignal.deployed") return;

            BasePlayer player = entity.creatorEntity as BasePlayer;
            if (player == null) return;

            if (!permission.UserHasPermission(player.UserIDString, PermissionUse))
            {
                return;
            }

            if (playerCooldowns.ContainsKey(player.UserIDString) && Time.realtimeSinceStartup - playerCooldowns[player.UserIDString] < config.RewardCooldown)
            {
                player.ChatMessage("[Rewards] You must wait before using another supply signal.");
                return;
            }

            playerCooldowns[player.UserIDString] = Time.realtimeSinceStartup;
            GiveRandomReward(player);
        }

        private void GiveRandomReward(BasePlayer player)
        {
            RewardItem reward = config.Rewards[UnityEngine.Random.Range(0, config.Rewards.Count)];
            int amount = UnityEngine.Random.Range(reward.MinAmount, reward.MaxAmount + 1);

            var item = ItemManager.CreateByName(reward.Shortname, amount);
            if (item != null)
            {
                player.inventory.GiveItem(item);
            }

            string itemName = ItemManager.FindItemDefinition(reward.Shortname)?.displayName.translated ?? reward.Shortname;

            if (config.EnableMessages)
            {
                player.ChatMessage($"Congratulations!\nYou received: {amount}x {itemName}");
            }
        }
    }
}

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