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

FREE StructureRefund : 1.2.0 1.2.0

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

namespace Oxide.Plugins
{
    [Info("StructureRefund", "Wulf/lukespragg", "1.2.0", ResourceId = 1692)]
    [Description("Refunds previous build materials when demolishing and/or upgrading")]

    class StructureRefund : CovalencePlugin
    {
        #region Initialization

        const string permDemolish = "structurerefund.demolish";
        const string permUpgrade = "structurerefund.upgrade";
        bool demolishRefunds;
        bool upgradeRefunds;

        protected override void LoadDefaultConfig()
        {
            // Loop through building grade names
            foreach (var grade in Enum.GetNames(typeof(BuildingGrade.Enum)))
            {
                // Skip the invalid grade names
                if (grade.Equals("None") || grade.Equals("Count")) continue;

                // Add configuration setting for grade
                Config["Refund" + grade] = GetConfig("Refund" + grade, true);
            }

            Config["DemolishRefunds"] = demolishRefunds = GetConfig("DemolishRefunds", true);
            Config["UpgradeRefunds"] = upgradeRefunds = GetConfig("UpgradeRefunds", true);
            SaveConfig();
        }

        void Init()
        {
            LoadDefaultConfig();

            // Register user/group permissions
            permission.RegisterPermission(permDemolish, this);
            permission.RegisterPermission(permUpgrade, this);

            // Only allow hooks to be called if features are enabled
            if (!demolishRefunds) Unsubscribe("OnStructureDemolish");
            if (!upgradeRefunds) Unsubscribe("OnStructureUpgrade");
        }

        #endregion

        #region Refunding

        void RefundMaterials(BuildingBlock block, BasePlayer player)
        {
            // Check if player's inventory is full, don't refund if full
            if (player.inventory.containerMain.IsFull()) return;

            // Loop through resources used to build structure
            foreach (var item in block.blockDefinition.grades[(int)block.grade].costToBuild)
                // Give player resources used
                player.GiveItem(ItemManager.CreateByItemID(item.itemid, (int)item.amount));
        }

        void OnStructureDemolish(BuildingBlock block, BasePlayer player)
        {
            // Check if player has 'structurerefund.demolish' permission
            if (permission.UserHasPermission(player.UserIDString, permDemolish)) RefundMaterials(block, player);
        }

        void OnStructureUpgrade(BuildingBlock block, BasePlayer player)
        {
            // Check if player has 'structurerefund.upgrade' permission
            if (permission.UserHasPermission(player.UserIDString, permUpgrade)) RefundMaterials(block, player);
        }

        #endregion

        T GetConfig<T>(string name, T value) => Config[name] == null ? value : (T)Convert.ChangeType(Config[name], typeof(T));
    }
}

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