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

FREE BlockItemBackpack : 1.0.3 1.0.3

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

namespace Oxide.Plugins
{
    [Info("Block Item Backpack", "YaMang -w-", "1.0.3")]
    [Description("YaMang-w-")]
    internal class BlockItemBackpack : RustPlugin
    {
        #region Hook
        
        private void OnItemAddedToContainer(ItemContainer container, Item item)
        {
            if(container == null || container.parent == null || !container.parent.info.shortname.Contains("backpack") || item == null) return;

            var player = container.parent.parent.playerOwner;
            if (player == null) return;

            if (_config.blockSettings.blockcategory.Contains(item.info.category.ToString()))
            {
                PrintToChat(player, $"{Lang("BlockItem", item.info.category.ToString())}");
                player.GiveItem(item, BaseEntity.GiveItemReason.PickedUp);
                return;
            }

            if (!_config.blockSettings.blockItems.ContainsKey(item.info.shortname)) return;

            var find = false;

            if (_config.blockSettings.blockItems.Count == 0)
                find = true;
            else if (_config.blockSettings.blockItems.Count == 1 && _config.blockSettings.blockItems[item.info.shortname][0] == 0)
                find = true;
            else
                find = _config.blockSettings.blockItems[item.info.shortname].Contains(item.skin);

            if (find)
            {
                player.GiveItem(item, BaseEntity.GiveItemReason.PickedUp);
                string itemname = "";

                if (string.IsNullOrEmpty(item.name))
                    itemname = item.info.displayName.english;
                else
                    itemname = item.name;
                
                PrintToChat(player, $"{Lang("BlockItem", itemname)}");
            }
        }

        #endregion

        #region Config        
        private ConfigData _config;
        private class ConfigData
        {
            [JsonProperty(PropertyName = "Block Items Settings")] public BlockSettings blockSettings { get; set; }
            public Core.VersionNumber Version { get; set; }
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();
            _config = Config.ReadObject<ConfigData>();

            if (_config.Version < Version)
                UpdateConfigValues();

            Config.WriteObject(_config, true);
        }

        protected override void LoadDefaultConfig() => _config = GetBaseConfig();

        private ConfigData GetBaseConfig()
        {
            return new ConfigData
            {
                blockSettings = new BlockSettings()
                {
                    blockItems = new Dictionary<string, List<ulong>>()
                    {
                        {
                            "wood", new List<ulong>()
                            {
                                0
                            }
                        }
                    },
                    blockcategory = new List<string>
                    {
                        "Weapon"
                    }
                },
                Version = Version
            };
        }

        public class BlockSettings
        {
            [JsonProperty(PropertyName = "Disallowed item shortname,skin (0 - block all shortname)")] public Dictionary<string, List<ulong>> blockItems { get; set; }
            [JsonProperty(PropertyName = "Disallowed item categories")] public List<string> blockcategory { get; set; }
        }

        protected override void SaveConfig() => Config.WriteObject(_config, true);

        private void UpdateConfigValues()
        {
            PrintWarning("Config update detected! Updating config values...");
            _config.Version = Version;
            PrintWarning("Config update completed!");
        }

        #endregion
        
        #region Lang

        protected override void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {

                { "BlockItem", "<color=yellow>{0}</color> <color=red>items cannot be placed in the bag.</color>" }

            }, this);
        }

        private string Lang(string key, params object[] args)
        {
            return string.Format(lang.GetMessage(key, this), args);
        }

        #endregion
    }
}

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