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

FREE NoConveyor : 1.1.0 1.1.0

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

namespace Oxide.Plugins
{
    [Info("NoConveyor", "REIN", "1.1.0")]
    public class NoConveyor : RustPlugin
    {
        private readonly HashSet<string> restrictedPrefabs = new HashSet<string>
        {
            "assets/prefabs/deployable/conveyor/industrial.conveyor.deployed.prefab",
            "assets/prefabs/deployable/conveyor/industrial.splitter.deployed.prefab",
            "assets/prefabs/deployable/conveyor/industrial.combiner.deployed.prefab"
        };

        private readonly HashSet<string> blockedItems = new HashSet<string>
        {
            "industrial.conveyor",
            "industrial.splitter",
            "industrial.combiner"
        };

        private object OnItemDeployed(Deployer deployer, BaseEntity entity, BasePlayer player)
        {
            if (entity == null || player == null) return null;

            if (restrictedPrefabs.Contains(entity.PrefabName))
            {
                SendMessage(player);
                return true;
            }
            return null;
        }

        private object CanPickupEntity(BasePlayer player, BaseCombatEntity entity)
        {
            if (entity == null || player == null) return null;

            var item = entity.GetItem();
            if (item != null && blockedItems.Contains(item.info.shortname))
            {
                SendMessage(player);
                return false;
            }
            return null;
        }

        private object CanMoveItem(Item item, PlayerInventory playerLoot, ItemContainerId targetContainer, int targetSlot, int amount, ItemMoveModifier modifiers)
        {
            if (item?.info == null || playerLoot == null) return null;
            
            if (blockedItems.Contains(item.info.shortname))
            {
                if (targetSlot >= 0 && targetSlot <= 5)
                {
                    var player = playerLoot.GetComponent<BasePlayer>();
                    if (player != null)
                    {
                        SendMessage(player);
                    }
                    return false;
                }
            }
            return null;
        }

        private object CanLootEntity(BasePlayer player, StorageContainer entity)
        {
            if (entity == null || player == null) return null;

            var item = entity.GetItem();
            if (item != null && blockedItems.Contains(item.info.shortname))
            {
                SendMessage(player);
                return false;
            }
            return null;
        }

        private object OnItemAction(Item item, string action, BasePlayer player)
        {
            if (item?.info == null || player == null) return null;
            
            if (blockedItems.Contains(item.info.shortname))
            {
                // Блокируем взятие в руки
                if (action == "equip")
                {
                    SendMessage(player);
                    return false;
                }
            }
            return null;
        }

        private void OnItemAddedToContainer(ItemContainer container, Item item)
        {
            if (item?.info == null || container == null || !blockedItems.Contains(item.info.shortname)) return;

            // Проверяем, является ли контейнер поясом (слотами 0-5)
            if (container.playerOwner?.inventory?.containerBelt == container)
            {
                // Перемещаем предмет в основной инвентарь
                var mainContainer = container.playerOwner?.inventory?.containerMain;
                if (mainContainer != null)
                {
                    item.MoveToContainer(mainContainer);
                    SendMessage(container.playerOwner);
                }
            }
        }

        private void SendMessage(BasePlayer player)
        {
            Player.Message(player, "<color=#FF0000>ВРЕМЕННО НЕДОСТУПНО</color>");
        }
    }
}

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