using Sandbox.Gravity; using Sandbox.UI; using Sasalka; using System; using System.Linq; namespace Sasalka; [Icon( "skip_next" )] public sealed class PickupItem : InteractionButton { [Property] public override string Label { get; set; } = "E"; protected override void OnStart() { base.OnStart(); // Устанавливаем правильную метку для предмета if ( GameObject.Components.TryGet( out var inventoryItem ) ) { Label = inventoryItem.Definition?.Name != "" ? $"{inventoryItem.Definition.Name} x{inventoryItem.Count}" : "Подобрать"; } } public override bool Press( IPressable.Event e ) { base.Press( e ); if ( e.Source.Components.TryGet( out var dedugan ) ) { var inventoryItem = Components.Get(); if ( inventoryItem != null && dedugan.Inventory != null ) { // Пытаемся добавить предмет в инвентарь, остаток остаётся на земле int left = dedugan.Inventory.AddItem( inventoryItem ); if ( left <= 0 ) { RpcDestroy(); return true; } else { inventoryItem.Count = left; // Оставляем предмет с новым количеством на земле return true; } } } return false; } [Rpc.Broadcast] void RpcDestroy() { GameObject.Destroy(); } }