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

FREE IQBreakingTools : 1.1.0 1.1.0

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

namespace Oxide.Plugins
{
    [Info("IQBreakingTools", "Mercury", "1.1.0")]
    [Description("Неломайка, стабильно и со вкусом")]
    class IQBreakingTools : RustPlugin
    {
        private const String IQAttire = "iqbreakingtools.attire";
        
                
        
        private const String IQBreakingToolsPermission = "iqbreakingtools.use";

        protected override void LoadDefaultConfig() => config = Configuration.GetNewConfiguration();
        protected override void SaveConfig() => Config.WriteObject(config);
        private const String IQTools = "iqbreakingtools.tools";
        private class Configuration
        {
            [JsonProperty("Список предметов исключений,которые БУДУТ ломаться [исключения в случае если вы выдавали права на категорию, но нужно исключить определенный предмет] (shortname)")]
            public List<String> BlackListShortname = new List<String>();
            internal class BreakingProcess
            {
                [JsonProperty("На сколько срезать поломку (Пример : в 3 раза)")]
                public Single ProcessBreakingAmount;
                [JsonProperty("Включить замедленную поломку(неломайка заменится на замедленную поломку)")]
                public Boolean useProcessBreaking;
            }
            [JsonProperty("Отключать неломайку если игрок атакует постройки в чужой билде(не авторизованный в шкафу)")]
            public Boolean StartLoseNoOwner;
            [JsonProperty("Список предметов,которые не будут ломаться или на них будет замедленная поломка (shortname)")]
            public List<String> ToolsList = new List<String>();
            [JsonProperty("Отключать неломайку если у игрока рейдблок")]
            public Boolean RaidBlockBreaking;
            [JsonProperty("Список исключенных SkinID(Вещи с этим SkinID будут ломаться и на них не будет действовать замедленная поломка! Для кастомных предметов)")]
            public List<UInt64> BlackList = new List<UInt64>();

            public static Configuration GetNewConfiguration()
            {
                return new Configuration
                {
                    StartLoseNoOwner = false,
                    RaidBlockBreaking = false,
                    BlackListShortname = new List<String>()
                    {
                        "jackhammer",
                        "chainsaw"
                    },
                    ToolsList = new List<String>
                    {
                        "rifle.ak",
                        "jackhammer",
                        "hatchet"
                    },
                    BlackList = new List<UInt64>
                    {
                        1337228,
                        2281337
                    },
                    BreakingProcesses = new BreakingProcess
                    {
                        useProcessBreaking = false,
                        ProcessBreakingAmount = 3,
                    }
                };
            }
            [JsonProperty("Настройка замедленной поломки")]
            public BreakingProcess BreakingProcesses = new BreakingProcess();
        }

        
                private void OnServerInitialized()
        {
            RegisteredPermissions();
        }

        
                private Boolean IsRaidBlocked(BasePlayer player)
        {
            if (RaidBlock)
                return RaidBlock.Call<Boolean>("IsRaidBlocked", player);
            return NoEscape && NoEscape.Call<Boolean>("IsRaidBlocked", player);
        }
        /// <summary>
        /// Обновление 0.0.x
        /// - Изменен метод определения рейдблока у игрока (RaidBlock, NoEscape)
        /// </summary>

        [PluginReference] Plugin RaidBlock, NoEscape;
        void OnLoseCondition(Item item, ref float amount)
        {
            if (item == null) return;
            if (config.BlackListShortname.Contains(item.info.shortname)) return;
            if (config.BlackList.Contains(item.skin)) return;

            BasePlayer player = item.GetOwnerPlayer();
            if (player == null) return;
            if (!player.UserIDString.IsSteamId()) return;
            if (config.RaidBlockBreaking && IsRaidBlocked(player)) return;
            if (config.StartLoseNoOwner && player.IsBuildingBlocked()) return;
		   		 		  						   					  						  		  		  			 		  	  	
            ItemCategory ItemCategory = item.info.category; //ItemManager.FindItemDefinition(item.info.itemid).category;

            if (ItemCategory == ItemCategory.Weapon && permission.UserHasPermission(player.UserIDString, IQWeapon)
                || ItemCategory == ItemCategory.Attire && permission.UserHasPermission(player.UserIDString, IQAttire)
                || ItemCategory == ItemCategory.Tool && permission.UserHasPermission(player.UserIDString, IQTools))
            {
                if (!config.BreakingProcesses.useProcessBreaking)
                    amount = 0;
                else amount -= amount / config.BreakingProcesses.ProcessBreakingAmount;
            }
            else if (permission.UserHasPermission(player.UserIDString, IQBreakingToolsPermission))
                if (config.ToolsList.Contains(item.info.shortname))
                {
                    if (!config.BreakingProcesses.useProcessBreaking)
                        amount = 0;
                    else amount -= amount / config.BreakingProcesses.ProcessBreakingAmount;
                }
        }

        void RegisteredPermissions()
        {         
            permission.RegisterPermission(IQBreakingToolsPermission, this);
            permission.RegisterPermission(IQTools, this);
            permission.RegisterPermission(IQWeapon, this);
            permission.RegisterPermission(IQAttire, this);
            PrintWarning("Permissions - completed");
        }
		   		 		  						   					  						  		  		  			 		  	  	
        protected override void LoadConfig()
        {
            base.LoadConfig();
            try
            {
                config = Config.ReadObject<Configuration>();
                if (config == null) LoadDefaultConfig();
            }
            catch
            {
                PrintWarning("Ошибка #2185593" + $"чтения конфигурации 'oxide/config/{Name}', создаём новую конфигурацию!!");
                LoadDefaultConfig();
            }
            NextTick(SaveConfig);
        }

            
        
        private static Configuration config = new Configuration();
        private const String IQWeapon = "iqbreakingtools.weapon";
            }
}

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