• Хостинг игровых серверов

    Максимальная производительность для ваших игровых серверов!

    Заказать сейчас

Помогите StorageContainer

olol321

Нестандартное звание
6 (78%)
22 Июн 2023
649
3
178
238
24
спавню baseentity, пытался добавить и storagecontainer и itemcontainer/получить их компонент, но он все не открывается, подскажите где я ошибся, ближе к задумке, у меня есть baseentity этого обьекта, и я пытался к нему закинуть через скрипт в ивент айтем(шоколадку), айтем он конечно сьел, но по нажатия кнопки Е не стал делится
в общем с инвентарем игрока и прочими уже существующими контейнерами я работал, но вот с этим нет, прошу подсказку
1695676838643.png
 
Похоже, что возникают проблемы с открытием контейнера после добавления storagecontainer и itemcontainer. Возможно, вы забыли добавить код, который открывает контейнер при нажатии клавиши "Е".

Вот пример кода, который может помочь вам открыть контейнер после добавления в него предметов:

C#:
using UnityEngine;

public class YourScriptName : MonoBehaviour
{
    public KeyCode openKey = KeyCode.E;
    public GameObject container;

    private bool isOpen = false;

    private void Update()
    {
        if (Input.GetKeyDown(openKey))
        {
            if (isOpen)
            {
                // Закрыть контейнер
                container.SetActive(false);
                isOpen = false;
            }
            else
            {
                // Открыть контейнер
                container.SetActive(true);
                isOpen = true;
            }
        }
    }
}

В этом примере openKey - это клавиша, которую нужно нажать для открытия и закрытия контейнера, а container - это объект контейнера, который нужно открыть и закрыть.

Убедитесь, что вы назначили этот скрипт на нужный объект в сцене, и проверьте, что клавиша "Е" назначена на openKey в настройках проекта.
 
спавню baseentity, пытался добавить и storagecontainer и itemcontainer/получить их компонент, но он все не открывается, подскажите где я ошибся, ближе к задумке, у меня есть baseentity этого обьекта, и я пытался к нему закинуть через скрипт в ивент айтем(шоколадку), айтем он конечно сьел, но по нажатия кнопки Е не стал делится
в общем с инвентарем игрока и прочими уже существующими контейнерами я работал, но вот с этим нет, прошу подсказку
Зачем что-то добавлять? Когда объект сам в себе все инициализировал?
DnSpy качал? DLL изучал? Видно что нет. Качай DnSpy, и изучай DLL. Практически все вопросы такого уровня должны пропасть.
 
Зачем что-то добавлять? Когда объект сам в себе все инициализировал?
DnSpy качал? DLL изучал? Видно что нет. Качай DnSpy, и изучай DLL. Практически все вопросы такого уровня должны пропасть.
Я задал вопрос конкретно по задаче, а не о декомпиляции dll, объект ничего не инициализировал, инвентаря никакого он не содержит, так же мне не понятно какой компонент работает с подсказкой о взаимодействии с объектом, Я прочесал весь объект на компоненты, и там были только transform, rb, collider
 
Я задал вопрос конкретно по задаче
Я прекрасно понимаю твою позицию, мол расскажут, разжуют, в рот положат. Но как бы в какой то момент это всем надоест. Поэтому, изучай сам.


какой компонент работает с подсказкой о взаимодействии с объектом
Никакой. Это в клиенте. Не всем можно управлять с сервера.
 
Я прекрасно понимаю твою позицию, мол расскажут, разжуют, в рот положат. Но как бы в какой то момент это всем надоест. Поэтому, изучай сам.



Никакой. Это в клиенте. Не всем можно управлять с сервера.
значит вариантов нет почему так происходит?
у этого baseentity нет StorageContainer/itemContainer при аттаче все равно ничего не происходит, и я не выкупаю почему так
 
аттаче все равно ничего не происходит, и я не выкупаю почему так
"Аттачить" к существующим entity бесмысленно. Коду игры на него будет похер.


у этого baseentity нет StorageContainer/itemContainer
У этого объекта, есть. Я сказал пути как узнать. Не хочешь сам, жди, может кто-то ответит. Может например Drop Dead, но и ему тоже может надоесть)
 
Я в общем то посмотрел через dnspy что как, и пришел к выводу что у этого префаба есть DroppedItemContainer, в котором inventory(ItemContainer) == null, ну я ему этот контейнер создал - в игре все хорошо, он открывается, после закрытия пропадает.
Но когда пытаюсь выдать предмет, он не пропадает с земли, и при заходе в этот контейнер ничего нет, так же как и ошибок.
C#:
                    BaseEntity be = GameManager.server.CreateEntity("assets/prefabs/misc/item drop/item_drop.prefab", player.GetNetworkPosition(), player.GetNetworkRotation());
                    be.Spawn();
                    if (be != null)
                    {
                        DroppedItemContainer dic = be as DroppedItemContainer;

                        dic.inventory = new ItemContainer();
                        dic.inventory.entityOwner = be;

                        dic.inventory.GiveItem(item);
                        dic.inventory.Save();
                    }
 
при этом, если я захочу изменить количество слотов, все корректно меняется
dic.inventory.capacity = 32;

посмотрел я в общем, это скорее всего потому что в этот контейнер нельзя перекладывать айтемы, так что только inventory.Insert(item)
 
Активность
Пока никто не печатает сообщение